summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoão Abecasis <joao.abecasis@nokia.com>2010-11-23 12:26:54 +0100
committerJoão Abecasis <joao.abecasis@nokia.com>2010-11-23 12:26:54 +0100
commit802498fcd43558a10bb7477d3957cdd27fd8ec09 (patch)
treec40ddd859b032ffa7ed9c6df1173312c0bb1947d
parent901fee7e610ec53f744416aeeca89c4605923120 (diff)
parent538e7b8ddf45936bb274ed3230b591b3459edfa7 (diff)
Merge remote branch 'qt/master' into file-engine-refactor
Conflicts: demos/declarative/minehunt/minehunt.pro src/corelib/io/io.pri src/corelib/io/qfsfileengine.cpp src/corelib/io/qfsfileengine_unix.cpp src/corelib/io/qfsfileengine_win.cpp src/s60installs/bwins/QtCoreu.def src/s60installs/bwins/QtDeclarativeu.def src/s60installs/bwins/QtGuiu.def src/s60installs/eabi/QtCoreu.def src/s60installs/eabi/QtDeclarativeu.def src/s60installs/eabi/QtGuiu.def tests/auto/qapplication/test/test.pro tests/auto/qaudioinput/qaudioinput.pro tests/auto/qaudiooutput/qaudiooutput.pro tests/auto/qchar/qchar.pro tests/auto/qdiriterator/qdiriterator.pro tests/auto/qsound/qsound.pro
-rw-r--r--.commit-template2
-rw-r--r--.gitignore1
-rwxr-xr-xbin/createpackage.pl13
-rwxr-xr-xbin/elf2e32_qtwrapper148
-rw-r--r--bin/elf2e32_qtwrapper.bat3
-rwxr-xr-xbin/elf2e32_qtwrapper.pl225
-rwxr-xr-xbin/patch_capabilities.pl3
-rwxr-xr-xbin/syncqt14
-rw-r--r--config.tests/mac/coreservices/coreservices.mm48
-rw-r--r--config.tests/mac/coreservices/coreservices.pro3
-rw-r--r--config.tests/mac/corewlan/corewlan.pro2
-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
-rw-r--r--config.tests/unix/opengldesktop/opengldesktop.cpp52
-rw-r--r--config.tests/unix/opengldesktop/opengldesktop.pro9
-rwxr-xr-xconfigure536
-rw-r--r--demos/books/books.pro4
-rw-r--r--demos/chip/view.cpp54
-rw-r--r--demos/chip/view.h32
-rw-r--r--demos/declarative/minehunt/minehunt.cpp4
-rw-r--r--demos/declarative/minehunt/minehunt.pro5
-rw-r--r--demos/declarative/samegame/SamegameCore/Button.qml4
-rwxr-xr-xdemos/declarative/samegame/SamegameCore/samegame.js198
-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.qml13
-rw-r--r--demos/declarative/twitter/twitter.qml2
-rw-r--r--demos/demos.pro2
-rw-r--r--demos/embedded/desktopservices/desktopservices.pro4
-rw-r--r--demos/embedded/fluidlauncher/fluidlauncher.pro80
-rw-r--r--demos/embedded/qmlcalculator/deployment.pri2
-rw-r--r--demos/embedded/qmlclocks/deployment.pri2
-rw-r--r--demos/embedded/qmldialcontrol/deployment.pri2
-rw-r--r--demos/embedded/qmleasing/deployment.pri2
-rw-r--r--demos/embedded/qmlflickr/deployment.pri2
-rw-r--r--demos/embedded/qmlphotoviewer/deployment.pri2
-rw-r--r--demos/embedded/qmltwitter/deployment.pri2
-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/qmediaplayer/qmediaplayer.pro2
-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/3rdparty/fftreal/fftreal.pro2
-rw-r--r--demos/spectrum/app/app.pro13
-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/spectrum/spectrum.pri12
-rw-r--r--demos/spreadsheet/spreadsheet.cpp2
-rw-r--r--demos/symbianpkgrules.pri4
-rw-r--r--demos/textedit/textedit.qdoc10
-rw-r--r--dist/changes-4.6.44
-rw-r--r--dist/changes-4.7.1328
-rw-r--r--dist/changes-4.7.2158
-rw-r--r--dist/changes-4.8.02
-rw-r--r--doc/src/bughowto.qdoc14
-rw-r--r--doc/src/classes.qdoc10
-rw-r--r--doc/src/classes/exportedfunctions.qdoc10
-rw-r--r--doc/src/classes/phonon-api.qdoc123
-rw-r--r--doc/src/classes/phonon-namespace.qdoc10
-rw-r--r--doc/src/credits.qdoc10
-rw-r--r--doc/src/declarative/advtutorial.qdoc10
-rw-r--r--doc/src/declarative/anchor-layout.qdoc10
-rw-r--r--doc/src/declarative/animation.qdoc10
-rw-r--r--doc/src/declarative/basictypes.qdoc97
-rw-r--r--doc/src/declarative/codingconventions.qdoc10
-rw-r--r--doc/src/declarative/declarativeui.qdoc10
-rw-r--r--doc/src/declarative/dynamicobjects.qdoc16
-rw-r--r--doc/src/declarative/elements.qdoc116
-rw-r--r--doc/src/declarative/example-slideswitch.qdoc10
-rw-r--r--doc/src/declarative/examples.qdoc10
-rw-r--r--doc/src/declarative/extending-tutorial.qdoc44
-rw-r--r--doc/src/declarative/extending.qdoc38
-rw-r--r--doc/src/declarative/focus.qdoc10
-rw-r--r--doc/src/declarative/globalobject.qdoc10
-rw-r--r--doc/src/declarative/integrating.qdoc12
-rw-r--r--doc/src/declarative/javascriptblocks.qdoc10
-rw-r--r--doc/src/declarative/modules.qdoc10
-rw-r--r--doc/src/declarative/network.qdoc10
-rw-r--r--doc/src/declarative/positioners.qdoc10
-rw-r--r--doc/src/declarative/propertybinding.qdoc10
-rw-r--r--doc/src/declarative/qdeclarativedebugging.qdoc10
-rw-r--r--doc/src/declarative/qdeclarativedocument.qdoc10
-rw-r--r--doc/src/declarative/qdeclarativei18n.qdoc10
-rw-r--r--doc/src/declarative/qdeclarativeintro.qdoc16
-rw-r--r--doc/src/declarative/qdeclarativemodels.qdoc10
-rw-r--r--doc/src/declarative/qdeclarativeperformance.qdoc10
-rw-r--r--doc/src/declarative/qdeclarativereference.qdoc10
-rw-r--r--doc/src/declarative/qdeclarativesecurity.qdoc10
-rw-r--r--doc/src/declarative/qdeclarativestates.qdoc10
-rw-r--r--doc/src/declarative/qml-intro.qdoc10
-rw-r--r--doc/src/declarative/qmlruntime.qdoc10
-rw-r--r--doc/src/declarative/qmlviewer.qdoc10
-rw-r--r--doc/src/declarative/qtbinding.qdoc641
-rw-r--r--doc/src/declarative/qtdeclarative.qdoc10
-rw-r--r--doc/src/declarative/qtprogrammers.qdoc10
-rw-r--r--doc/src/declarative/scope.qdoc10
-rw-r--r--doc/src/declarative/tutorial.qdoc10
-rw-r--r--doc/src/declarative/whatsnew.qdoc10
-rw-r--r--doc/src/demos/affine.qdoc10
-rw-r--r--doc/src/demos/anomaly.qdoc10
-rw-r--r--doc/src/demos/arthurplugin.qdoc10
-rw-r--r--doc/src/demos/books.qdoc10
-rw-r--r--doc/src/demos/boxes.qdoc10
-rw-r--r--doc/src/demos/browser.qdoc10
-rw-r--r--doc/src/demos/chip.qdoc10
-rw-r--r--doc/src/demos/composition.qdoc10
-rw-r--r--doc/src/demos/deform.qdoc10
-rw-r--r--doc/src/demos/desktopservices.qdoc10
-rw-r--r--doc/src/demos/digiflip.qdoc10
-rw-r--r--doc/src/demos/embeddeddialogs.qdoc10
-rw-r--r--doc/src/demos/embeddedsvgviewer.qdoc10
-rw-r--r--doc/src/demos/flickable.qdoc10
-rw-r--r--doc/src/demos/flightinfo.qdoc10
-rw-r--r--doc/src/demos/fluidlauncher.qdoc10
-rw-r--r--doc/src/demos/gradients.qdoc10
-rw-r--r--doc/src/demos/interview.qdoc10
-rw-r--r--doc/src/demos/lightmaps.qdoc10
-rw-r--r--doc/src/demos/macmainwindow.qdoc10
-rw-r--r--doc/src/demos/mainwindow.qdoc10
-rw-r--r--doc/src/demos/mediaplayer.qdoc10
-rw-r--r--doc/src/demos/pathstroke.qdoc10
-rw-r--r--doc/src/demos/qtdemo.qdoc10
-rw-r--r--doc/src/demos/raycasting.qdoc10
-rw-r--r--doc/src/demos/spectrum.qdoc10
-rw-r--r--doc/src/demos/spreadsheet.qdoc10
-rw-r--r--doc/src/demos/sqlbrowser.qdoc10
-rw-r--r--doc/src/demos/styledemo.qdoc10
-rw-r--r--doc/src/demos/sub-attaq.qdoc10
-rw-r--r--doc/src/demos/textedit.qdoc10
-rw-r--r--doc/src/demos/undo.qdoc10
-rw-r--r--doc/src/demos/weatherinfo.qdoc10
-rw-r--r--doc/src/deployment/deployment-plugins.qdoc10
-rw-r--r--doc/src/deployment/deployment.qdoc11
-rw-r--r--doc/src/deployment/qt-conf.qdoc10
-rw-r--r--doc/src/deployment/qtconfig.qdoc10
-rw-r--r--doc/src/development/activeqt-dumpcpp.qdoc10
-rw-r--r--doc/src/development/activeqt-dumpdoc.qdoc10
-rw-r--r--doc/src/development/activeqt-idc.qdoc10
-rw-r--r--doc/src/development/activeqt-testcon.qdoc10
-rw-r--r--doc/src/development/assistant-manual.qdoc10
-rw-r--r--doc/src/development/debug.qdoc10
-rw-r--r--doc/src/development/designer-manual.qdoc166
-rw-r--r--doc/src/development/developing-on-mac.qdoc10
-rw-r--r--doc/src/development/developing-with-qt.qdoc16
-rw-r--r--doc/src/development/moc.qdoc10
-rw-r--r--doc/src/development/qmake-manual.qdoc37
-rw-r--r--doc/src/development/qmsdev.qdoc10
-rw-r--r--doc/src/development/qtestlib.qdoc44
-rw-r--r--doc/src/development/rcc.qdoc10
-rw-r--r--doc/src/development/tools-list.qdoc10
-rw-r--r--doc/src/development/uic.qdoc10
-rw-r--r--doc/src/examples/2dpainting.qdoc10
-rw-r--r--doc/src/examples/activeqt/comapp.qdoc10
-rw-r--r--doc/src/examples/activeqt/dotnet.qdoc10
-rw-r--r--doc/src/examples/activeqt/hierarchy.qdoc10
-rw-r--r--doc/src/examples/activeqt/menus.qdoc10
-rw-r--r--doc/src/examples/activeqt/multiple.qdoc10
-rw-r--r--doc/src/examples/activeqt/opengl.qdoc10
-rw-r--r--doc/src/examples/activeqt/qutlook.qdoc10
-rw-r--r--doc/src/examples/activeqt/simple.qdoc10
-rw-r--r--doc/src/examples/activeqt/webbrowser.qdoc10
-rw-r--r--doc/src/examples/activeqt/wrapper.qdoc10
-rw-r--r--doc/src/examples/addressbook.qdoc10
-rw-r--r--doc/src/examples/analogclock.qdoc10
-rw-r--r--doc/src/examples/animatedtiles.qdoc10
-rw-r--r--doc/src/examples/appchooser.qdoc10
-rw-r--r--doc/src/examples/application.qdoc10
-rw-r--r--doc/src/examples/arrowpad.qdoc10
-rw-r--r--doc/src/examples/audiodevices.qdoc10
-rw-r--r--doc/src/examples/audioinput.qdoc10
-rw-r--r--doc/src/examples/audiooutput.qdoc10
-rw-r--r--doc/src/examples/basicdrawing.qdoc10
-rw-r--r--doc/src/examples/basicgraphicslayouts.qdoc10
-rw-r--r--doc/src/examples/basiclayouts.qdoc12
-rw-r--r--doc/src/examples/basicsortfiltermodel.qdoc10
-rw-r--r--doc/src/examples/bearercloud.qdoc10
-rw-r--r--doc/src/examples/bearermonitor.qdoc10
-rw-r--r--doc/src/examples/blockingfortuneclient.qdoc10
-rw-r--r--doc/src/examples/blurpicker.qdoc10
-rw-r--r--doc/src/examples/borderlayout.qdoc10
-rw-r--r--doc/src/examples/broadcastreceiver.qdoc10
-rw-r--r--doc/src/examples/broadcastsender.qdoc10
-rw-r--r--doc/src/examples/cachedtable.qdoc10
-rw-r--r--doc/src/examples/calculator.qdoc10
-rw-r--r--doc/src/examples/calculatorbuilder.qdoc10
-rw-r--r--doc/src/examples/calculatorform.qdoc10
-rw-r--r--doc/src/examples/calendar.qdoc10
-rw-r--r--doc/src/examples/calendarwidget.qdoc10
-rw-r--r--doc/src/examples/capabilitiesexample.qdoc10
-rw-r--r--doc/src/examples/charactermap.qdoc10
-rw-r--r--doc/src/examples/chart.qdoc10
-rw-r--r--doc/src/examples/classwizard.qdoc10
-rw-r--r--doc/src/examples/codecs.qdoc10
-rw-r--r--doc/src/examples/codeeditor.qdoc10
-rw-r--r--doc/src/examples/collidingmice-example.qdoc10
-rw-r--r--doc/src/examples/coloreditorfactory.qdoc10
-rw-r--r--doc/src/examples/combowidgetmapper.qdoc10
-rw-r--r--doc/src/examples/completer.qdoc10
-rw-r--r--doc/src/examples/complexpingpong.qdoc10
-rw-r--r--doc/src/examples/concentriccircles.qdoc10
-rw-r--r--doc/src/examples/configdialog.qdoc10
-rw-r--r--doc/src/examples/containerextension.qdoc10
-rw-r--r--doc/src/examples/context2d.qdoc10
-rw-r--r--doc/src/examples/contextsensitivehelp.qdoc10
-rw-r--r--doc/src/examples/contiguouscache.qdoc10
-rw-r--r--doc/src/examples/customcompleter.qdoc10
-rw-r--r--doc/src/examples/customsortfiltermodel.qdoc10
-rw-r--r--doc/src/examples/customtype.qdoc10
-rw-r--r--doc/src/examples/customtypesending.qdoc27
-rw-r--r--doc/src/examples/customwidgetplugin.qdoc10
-rw-r--r--doc/src/examples/dbscreen.qdoc10
-rw-r--r--doc/src/examples/dbus-chat.qdoc10
-rw-r--r--doc/src/examples/dbus-listnames.qdoc10
-rw-r--r--doc/src/examples/dbus-pingpong.qdoc10
-rw-r--r--doc/src/examples/dbus-remotecontrolledcar.qdoc10
-rw-r--r--doc/src/examples/defaultprototypes.qdoc10
-rw-r--r--doc/src/examples/delayedencoding.qdoc10
-rw-r--r--doc/src/examples/diagramscene.qdoc10
-rw-r--r--doc/src/examples/digitalclock.qdoc10
-rw-r--r--doc/src/examples/dirview.qdoc10
-rw-r--r--doc/src/examples/dockwidgets.qdoc10
-rw-r--r--doc/src/examples/dombookmarks.qdoc10
-rw-r--r--doc/src/examples/domtraversal.qdoc10
-rw-r--r--doc/src/examples/draganddroppuzzle.qdoc10
-rw-r--r--doc/src/examples/dragdroprobot.qdoc10
-rw-r--r--doc/src/examples/draggableicons.qdoc10
-rw-r--r--doc/src/examples/draggabletext.qdoc10
-rw-r--r--doc/src/examples/drilldown.qdoc10
-rw-r--r--doc/src/examples/dropsite.qdoc10
-rw-r--r--doc/src/examples/dynamiclayouts.qdoc10
-rw-r--r--doc/src/examples/easing.qdoc10
-rw-r--r--doc/src/examples/echoplugin.qdoc10
-rw-r--r--doc/src/examples/editabletreemodel.qdoc10
-rw-r--r--doc/src/examples/elasticnodes.qdoc10
-rw-r--r--doc/src/examples/eventtransitions.qdoc10
-rw-r--r--doc/src/examples/extension.qdoc10
-rw-r--r--doc/src/examples/factorial.qdoc10
-rw-r--r--doc/src/examples/fademessage.qdoc10
-rw-r--r--doc/src/examples/fancybrowser.qdoc10
-rw-r--r--doc/src/examples/fetchmore.qdoc10
-rw-r--r--doc/src/examples/filetree.qdoc10
-rw-r--r--doc/src/examples/findfiles.qdoc10
-rw-r--r--doc/src/examples/fingerpaint.qdoc10
-rw-r--r--doc/src/examples/flowlayout.qdoc10
-rw-r--r--doc/src/examples/fontsampler.qdoc10
-rw-r--r--doc/src/examples/formextractor.qdoc10
-rw-r--r--doc/src/examples/fortuneclient.qdoc10
-rw-r--r--doc/src/examples/fortuneserver.qdoc10
-rw-r--r--doc/src/examples/framebufferobject.qdoc10
-rw-r--r--doc/src/examples/framebufferobject2.qdoc10
-rw-r--r--doc/src/examples/fridgemagnets.qdoc10
-rw-r--r--doc/src/examples/frozencolumn.qdoc10
-rw-r--r--doc/src/examples/ftp.qdoc10
-rw-r--r--doc/src/examples/globalVariables.qdoc10
-rw-r--r--doc/src/examples/googlechat.qdoc10
-rw-r--r--doc/src/examples/googlesuggest.qdoc10
-rw-r--r--doc/src/examples/grabber.qdoc10
-rw-r--r--doc/src/examples/graphicsview-anchorlayout.qdoc10
-rw-r--r--doc/src/examples/graphicsview-flowlayout.qdoc10
-rw-r--r--doc/src/examples/graphicsview-simpleanchorlayout.qdoc10
-rw-r--r--doc/src/examples/graphicsview-weatheranchorlayout.qdoc10
-rw-r--r--doc/src/examples/groupbox.qdoc10
-rw-r--r--doc/src/examples/hellogl.qdoc10
-rw-r--r--doc/src/examples/hellogl_es.qdoc10
-rw-r--r--doc/src/examples/helloscript.qdoc10
-rw-r--r--doc/src/examples/hellotr.qdoc10
-rw-r--r--doc/src/examples/htmlinfo.qdoc10
-rw-r--r--doc/src/examples/http.qdoc10
-rw-r--r--doc/src/examples/i18n.qdoc10
-rw-r--r--doc/src/examples/icons.qdoc10
-rw-r--r--doc/src/examples/imagecomposition.qdoc10
-rw-r--r--doc/src/examples/imagegestures.qdoc10
-rw-r--r--doc/src/examples/imageviewer.qdoc10
-rw-r--r--doc/src/examples/inputpanel.qdoc10
-rw-r--r--doc/src/examples/itemviewspuzzle.qdoc10
-rw-r--r--doc/src/examples/licensewizard.qdoc10
-rw-r--r--doc/src/examples/lighting.qdoc10
-rw-r--r--doc/src/examples/lineedits.qdoc10
-rw-r--r--doc/src/examples/localfortuneclient.qdoc10
-rw-r--r--doc/src/examples/localfortuneserver.qdoc10
-rw-r--r--doc/src/examples/loopback.qdoc10
-rw-r--r--doc/src/examples/mandelbrot.qdoc10
-rw-r--r--doc/src/examples/masterdetail.qdoc10
-rw-r--r--doc/src/examples/mdi.qdoc10
-rw-r--r--doc/src/examples/menus.qdoc10
-rw-r--r--doc/src/examples/mousecalibration.qdoc10
-rw-r--r--doc/src/examples/moveblocks.qdoc10
-rw-r--r--doc/src/examples/movie.qdoc10
-rw-r--r--doc/src/examples/multipleinheritance.qdoc10
-rw-r--r--doc/src/examples/musicplayerexample.qdoc10
-rw-r--r--doc/src/examples/network-chat.qdoc10
-rw-r--r--doc/src/examples/network-download.qdoc10
-rw-r--r--doc/src/examples/network-downloadmanager.qdoc10
-rw-r--r--doc/src/examples/openvg-star.qdoc10
-rw-r--r--doc/src/examples/orderform.qdoc10
-rw-r--r--doc/src/examples/overpainting.qdoc10
-rw-r--r--doc/src/examples/padnavigator.qdoc10
-rw-r--r--doc/src/examples/painterpaths.qdoc10
-rw-r--r--doc/src/examples/pbuffers.qdoc10
-rw-r--r--doc/src/examples/pbuffers2.qdoc10
-rw-r--r--doc/src/examples/pinchzoom.qdoc10
-rw-r--r--doc/src/examples/pingpong.qdoc10
-rw-r--r--doc/src/examples/pixelator.qdoc10
-rw-r--r--doc/src/examples/plugandpaint.qdoc10
-rw-r--r--doc/src/examples/portedasteroids.qdoc10
-rw-r--r--doc/src/examples/portedcanvas.qdoc10
-rw-r--r--doc/src/examples/previewer.qdoc10
-rw-r--r--doc/src/examples/qml-calculator.qdoc10
-rw-r--r--doc/src/examples/qml-examples.qdoc41
-rw-r--r--doc/src/examples/qml-extending.qdoc10
-rw-r--r--doc/src/examples/qml-flickr.qdoc10
-rw-r--r--doc/src/examples/qml-folderlistmodel.qdoc10
-rw-r--r--doc/src/examples/qml-minehunt.qdoc10
-rw-r--r--doc/src/examples/qml-photoviewer.qdoc10
-rw-r--r--doc/src/examples/qml-rssnews.qdoc10
-rw-r--r--doc/src/examples/qml-samegame.qdoc10
-rw-r--r--doc/src/examples/qml-snake.qdoc10
-rw-r--r--doc/src/examples/qml-twitter.qdoc10
-rw-r--r--doc/src/examples/qml-webbrowser.qdoc10
-rw-r--r--doc/src/examples/qobjectxmlmodel.qdoc10
-rw-r--r--doc/src/examples/qtconcurrent-imagescaling.qdoc10
-rw-r--r--doc/src/examples/qtconcurrent-map.qdoc10
-rw-r--r--doc/src/examples/qtconcurrent-progressdialog.qdoc10
-rw-r--r--doc/src/examples/qtconcurrent-runfunction.qdoc10
-rw-r--r--doc/src/examples/qtconcurrent-wordcount.qdoc10
-rw-r--r--doc/src/examples/qtscriptcalculator.qdoc10
-rw-r--r--doc/src/examples/qtscriptcustomclass.qdoc10
-rw-r--r--doc/src/examples/qtscripttetrix.qdoc10
-rw-r--r--doc/src/examples/querymodel.qdoc10
-rw-r--r--doc/src/examples/queuedcustomtype.qdoc10
-rw-r--r--doc/src/examples/qxmlstreambookmarks.qdoc10
-rw-r--r--doc/src/examples/recentfiles.qdoc10
-rw-r--r--doc/src/examples/recipes.qdoc10
-rw-r--r--doc/src/examples/regexp.qdoc10
-rw-r--r--doc/src/examples/relationaltablemodel.qdoc10
-rw-r--r--doc/src/examples/remotecontrol.qdoc10
-rw-r--r--doc/src/examples/rogue.qdoc10
-rw-r--r--doc/src/examples/rsslisting.qdoc10
-rw-r--r--doc/src/examples/samplebuffers.qdoc10
-rw-r--r--doc/src/examples/saxbookmarks.qdoc10
-rw-r--r--doc/src/examples/schema.qdoc10
-rw-r--r--doc/src/examples/screenshot.qdoc10
-rw-r--r--doc/src/examples/scribble.qdoc10
-rw-r--r--doc/src/examples/script-marshal.qdoc10
-rw-r--r--doc/src/examples/script-qscript.qdoc10
-rw-r--r--doc/src/examples/script-qsdbg.qdoc10
-rw-r--r--doc/src/examples/sdi.qdoc10
-rw-r--r--doc/src/examples/securesocketclient.qdoc10
-rw-r--r--doc/src/examples/semaphores.qdoc10
-rw-r--r--doc/src/examples/settingseditor.qdoc10
-rw-r--r--doc/src/examples/shapedclock.qdoc10
-rw-r--r--doc/src/examples/sharedmemory.qdoc10
-rw-r--r--doc/src/examples/simpledecoration.qdoc10
-rw-r--r--doc/src/examples/simpledommodel.qdoc10
-rw-r--r--doc/src/examples/simpleselector.qdoc10
-rw-r--r--doc/src/examples/simpletextviewer.qdoc10
-rw-r--r--doc/src/examples/simpletreemodel.qdoc10
-rw-r--r--doc/src/examples/simplewidgetmapper.qdoc10
-rw-r--r--doc/src/examples/sipdialog.qdoc10
-rw-r--r--doc/src/examples/sliders.qdoc10
-rw-r--r--doc/src/examples/spinboxdelegate.qdoc10
-rw-r--r--doc/src/examples/spinboxes.qdoc10
-rw-r--r--doc/src/examples/sqlwidgetmapper.qdoc10
-rw-r--r--doc/src/examples/standarddialogs.qdoc10
-rw-r--r--doc/src/examples/stardelegate.qdoc10
-rw-r--r--doc/src/examples/states.qdoc10
-rw-r--r--doc/src/examples/stickman.qdoc10
-rw-r--r--doc/src/examples/styleplugin.qdoc10
-rw-r--r--doc/src/examples/styles.qdoc10
-rw-r--r--doc/src/examples/stylesheet.qdoc10
-rw-r--r--doc/src/examples/svgalib.qdoc10
-rw-r--r--doc/src/examples/svggenerator.qdoc10
-rw-r--r--doc/src/examples/svgviewer.qdoc10
-rw-r--r--doc/src/examples/syntaxhighlighter.qdoc10
-rw-r--r--doc/src/examples/systray.qdoc10
-rw-r--r--doc/src/examples/tabdialog.qdoc10
-rw-r--r--doc/src/examples/tablemodel.qdoc10
-rw-r--r--doc/src/examples/tablet.qdoc10
-rw-r--r--doc/src/examples/taskmenuextension.qdoc10
-rw-r--r--doc/src/examples/tetrix.qdoc10
-rw-r--r--doc/src/examples/textfinder.qdoc10
-rw-r--r--doc/src/examples/textobject.qdoc10
-rw-r--r--doc/src/examples/textures.qdoc10
-rw-r--r--doc/src/examples/threadedfortuneserver.qdoc10
-rw-r--r--doc/src/examples/tooltips.qdoc10
-rw-r--r--doc/src/examples/torrent.qdoc10
-rw-r--r--doc/src/examples/touch-dials.qdoc10
-rw-r--r--doc/src/examples/touch-knobs.qdoc10
-rw-r--r--doc/src/examples/trafficinfo.qdoc10
-rw-r--r--doc/src/examples/trafficlight.qdoc10
-rw-r--r--doc/src/examples/transformations.qdoc10
-rw-r--r--doc/src/examples/treemodelcompleter.qdoc10
-rw-r--r--doc/src/examples/trivialwizard.qdoc10
-rw-r--r--doc/src/examples/trollprint.qdoc10
-rw-r--r--doc/src/examples/twowaybutton.qdoc10
-rw-r--r--doc/src/examples/undoframework.qdoc10
-rw-r--r--doc/src/examples/videographicsitem.qdoc10
-rw-r--r--doc/src/examples/videowidget.qdoc10
-rw-r--r--doc/src/examples/waitconditions.qdoc10
-rw-r--r--doc/src/examples/webkit-bridge-imageanalyzer.qdoc160
-rw-r--r--doc/src/examples/webkit-framecapture.qdoc10
-rw-r--r--doc/src/examples/widgets-softkeys.qdoc10
-rw-r--r--doc/src/examples/widgets-validators.qdoc10
-rw-r--r--doc/src/examples/wiggly.qdoc10
-rw-r--r--doc/src/examples/windowflags.qdoc10
-rw-r--r--doc/src/examples/worldtimeclockbuilder.qdoc10
-rw-r--r--doc/src/examples/worldtimeclockplugin.qdoc10
-rw-r--r--doc/src/examples/xmlstreamlint.qdoc10
-rw-r--r--doc/src/external-resources.qdoc17
-rw-r--r--doc/src/files-and-resources/datastreamformat.qdoc10
-rw-r--r--doc/src/files-and-resources/resources.qdoc10
-rw-r--r--doc/src/frameworks-technologies/accessible.qdoc10
-rw-r--r--doc/src/frameworks-technologies/activeqt-container.qdoc10
-rw-r--r--doc/src/frameworks-technologies/activeqt-server.qdoc10
-rw-r--r--doc/src/frameworks-technologies/activeqt.qdoc10
-rw-r--r--doc/src/frameworks-technologies/animation.qdoc10
-rw-r--r--doc/src/frameworks-technologies/containers.qdoc10
-rw-r--r--doc/src/frameworks-technologies/dbus-adaptors.qdoc10
-rw-r--r--doc/src/frameworks-technologies/dbus-intro.qdoc10
-rw-r--r--doc/src/frameworks-technologies/desktop-integration.qdoc10
-rw-r--r--doc/src/frameworks-technologies/dnd.qdoc12
-rw-r--r--doc/src/frameworks-technologies/eventsandfilters.qdoc10
-rw-r--r--doc/src/frameworks-technologies/gestures.qdoc10
-rw-r--r--doc/src/frameworks-technologies/graphicsview.qdoc10
-rw-r--r--doc/src/frameworks-technologies/implicit-sharing.qdoc10
-rw-r--r--doc/src/frameworks-technologies/ipc.qdoc10
-rw-r--r--doc/src/frameworks-technologies/model-view-programming.qdoc22
-rw-r--r--doc/src/frameworks-technologies/phonon.qdoc29
-rw-r--r--doc/src/frameworks-technologies/plugins-howto.qdoc10
-rw-r--r--doc/src/frameworks-technologies/qthelp.qdoc10
-rw-r--r--doc/src/frameworks-technologies/qundo.qdoc10
-rw-r--r--doc/src/frameworks-technologies/richtext.qdoc10
-rw-r--r--doc/src/frameworks-technologies/statemachine.qdoc10
-rw-r--r--doc/src/frameworks-technologies/templates.qdoc10
-rw-r--r--doc/src/frameworks-technologies/threads.qdoc14
-rw-r--r--doc/src/frameworks-technologies/unicode.qdoc10
-rw-r--r--doc/src/getting-started/demos.qdoc10
-rw-r--r--doc/src/getting-started/examples.qdoc22
-rw-r--r--doc/src/getting-started/gettingstarted.qdoc10
-rw-r--r--doc/src/getting-started/gettingstartedqml.qdoc115
-rw-r--r--doc/src/getting-started/gettingstartedqt.qdoc10
-rw-r--r--doc/src/getting-started/how-to-learn-qt.qdoc10
-rw-r--r--doc/src/getting-started/installation.qdoc297
-rw-r--r--doc/src/getting-started/known-issues.qdoc10
-rw-r--r--doc/src/getting-started/tutorials.qdoc10
-rw-r--r--doc/src/howtos/HWacceleration.qdoc10
-rw-r--r--doc/src/howtos/accelerators.qdoc10
-rw-r--r--doc/src/howtos/appicon.qdoc10
-rw-r--r--doc/src/howtos/custom-types.qdoc10
-rw-r--r--doc/src/howtos/exceptionsafety.qdoc10
-rw-r--r--doc/src/howtos/guibooks.qdoc10
-rw-r--r--doc/src/howtos/openvg.qdoc10
-rw-r--r--doc/src/howtos/qtdesigner.qdoc10
-rw-r--r--doc/src/howtos/restoring-geometry.qdoc10
-rw-r--r--doc/src/howtos/session.qdoc10
-rw-r--r--doc/src/howtos/sharedlibrary.qdoc10
-rw-r--r--doc/src/howtos/timers.qdoc10
-rw-r--r--doc/src/howtos/unix-signal-handlers.qdoc12
-rw-r--r--doc/src/images/webkit-imageanalyzer-complete.pngbin0 -> 10257 bytes
-rw-r--r--doc/src/images/webkit-imageanalyzer-progress.pngbin0 -> 18240 bytes
-rw-r--r--doc/src/images/webkit-imageanalyzer-screenshot.pngbin0 -> 56053 bytes
-rw-r--r--doc/src/index.qdoc12
-rw-r--r--doc/src/internationalization/i18n.qdoc10
-rw-r--r--doc/src/internationalization/linguist-manual.qdoc10
-rw-r--r--doc/src/ja_JP/development/designer-manual.qdoc10
-rw-r--r--doc/src/ja_JP/development/qmake-manual.qdoc10
-rw-r--r--doc/src/ja_JP/development/qtestlib.qdoc10
-rw-r--r--doc/src/ja_JP/examples/arrowpad.qdoc10
-rw-r--r--doc/src/ja_JP/examples/hellotr.qdoc10
-rw-r--r--doc/src/ja_JP/examples/trollprint.qdoc10
-rw-r--r--doc/src/ja_JP/getting-started/tutorials.qdoc10
-rw-r--r--doc/src/ja_JP/tutorials/addressbook.qdoc10
-rw-r--r--doc/src/ja_JP/tutorials/widgets-tutorial.qdoc10
-rw-r--r--doc/src/legal/3rdparty.qdoc10
-rw-r--r--doc/src/legal/commercialeditions.qdoc10
-rw-r--r--doc/src/legal/editions.qdoc10
-rw-r--r--doc/src/legal/gpl.qdoc10
-rw-r--r--doc/src/legal/licenses.qdoc10
-rw-r--r--doc/src/legal/opensourceedition.qdoc12
-rw-r--r--doc/src/legal/trademarks.qdoc22
-rw-r--r--doc/src/modules.qdoc14
-rw-r--r--doc/src/network-programming/bearermanagement.qdoc10
-rw-r--r--doc/src/network-programming/qtnetwork.qdoc10
-rw-r--r--doc/src/network-programming/ssl.qdoc10
-rw-r--r--doc/src/objectmodel/metaobjects.qdoc10
-rw-r--r--doc/src/objectmodel/object.qdoc10
-rw-r--r--doc/src/objectmodel/objecttrees.qdoc10
-rw-r--r--doc/src/objectmodel/properties.qdoc10
-rw-r--r--doc/src/objectmodel/signalsandslots.qdoc10
-rw-r--r--doc/src/overviews.qdoc12
-rw-r--r--doc/src/painting-and-printing/coordsys.qdoc10
-rw-r--r--doc/src/painting-and-printing/paintsystem.qdoc10
-rw-r--r--doc/src/painting-and-printing/printing.qdoc10
-rw-r--r--doc/src/platforms/atomic-operations.qdoc10
-rw-r--r--doc/src/platforms/compiler-notes.qdoc279
-rw-r--r--doc/src/platforms/emb-HwAcc-LinuxEmbedded.qdoc10
-rw-r--r--doc/src/platforms/emb-HwAcc-WinCE.qdoc10
-rw-r--r--doc/src/platforms/emb-accel.qdoc10
-rw-r--r--doc/src/platforms/emb-architecture.qdoc10
-rw-r--r--doc/src/platforms/emb-charinput.qdoc10
-rw-r--r--doc/src/platforms/emb-crosscompiling.qdoc10
-rw-r--r--doc/src/platforms/emb-deployment.qdoc12
-rw-r--r--doc/src/platforms/emb-differences.qdoc10
-rw-r--r--doc/src/platforms/emb-directfb-EmbLinux.qdoc10
-rw-r--r--doc/src/platforms/emb-displaymanagement.qdoc10
-rw-r--r--doc/src/platforms/emb-envvars.qdoc10
-rw-r--r--doc/src/platforms/emb-features.qdoc10
-rw-r--r--doc/src/platforms/emb-fonts.qdoc10
-rw-r--r--doc/src/platforms/emb-framebuffer-howto.qdoc10
-rw-r--r--doc/src/platforms/emb-hardwareacceleration.qdocinc280
-rw-r--r--doc/src/platforms/emb-install.qdoc16
-rw-r--r--doc/src/platforms/emb-kmap2qmap.qdoc10
-rw-r--r--doc/src/platforms/emb-makeqpf.qdoc10
-rw-r--r--doc/src/platforms/emb-opengl-EmbLinux.qdoc10
-rw-r--r--doc/src/platforms/emb-openvg-EmbLinux.qdoc10
-rw-r--r--doc/src/platforms/emb-performance.qdoc10
-rw-r--r--doc/src/platforms/emb-pointer.qdoc17
-rw-r--r--doc/src/platforms/emb-porting.qdoc10
-rw-r--r--doc/src/platforms/emb-qvfb.qdoc14
-rw-r--r--doc/src/platforms/emb-running.qdoc12
-rw-r--r--doc/src/platforms/emb-vnc.qdoc10
-rw-r--r--doc/src/platforms/mac-differences.qdoc12
-rw-r--r--doc/src/platforms/platform-notes-rtos.qdoc18
-rw-r--r--doc/src/platforms/platform-notes.qdoc359
-rw-r--r--doc/src/platforms/qt-embedded-linux.qdoc12
-rw-r--r--doc/src/platforms/qt-embedded.qdoc10
-rw-r--r--doc/src/platforms/qtmac-as-native.qdoc10
-rw-r--r--doc/src/platforms/supported-platforms.qdoc21
-rw-r--r--doc/src/platforms/symbian-exceptionsafety.qdoc10
-rw-r--r--doc/src/platforms/symbian-introduction.qdoc22
-rw-r--r--doc/src/platforms/wince-customization.qdoc12
-rw-r--r--doc/src/platforms/wince-introduction.qdoc16
-rw-r--r--doc/src/platforms/wince-opengl.qdoc10
-rw-r--r--doc/src/platforms/wince-openvg.qdoc10
-rw-r--r--doc/src/platforms/wince-signing.qdoc10
-rw-r--r--doc/src/platforms/winsystem.qdoc14
-rw-r--r--doc/src/platforms/x11overlays.qdoc10
-rw-r--r--doc/src/porting/porting-qsa.qdoc10
-rw-r--r--doc/src/porting/porting4-canvas.qdoc10
-rw-r--r--doc/src/porting/porting4-designer.qdoc10
-rw-r--r--doc/src/porting/porting4-dnd.qdoc10
-rw-r--r--doc/src/porting/porting4-overview.qdoc10
-rw-r--r--doc/src/porting/porting4.qdoc10
-rw-r--r--doc/src/porting/qt3to4.qdoc10
-rw-r--r--doc/src/porting/qt4-accessibility.qdoc10
-rw-r--r--doc/src/porting/qt4-arthur.qdoc10
-rw-r--r--doc/src/porting/qt4-designer.qdoc28
-rw-r--r--doc/src/porting/qt4-interview.qdoc10
-rw-r--r--doc/src/porting/qt4-mainwindow.qdoc10
-rw-r--r--doc/src/porting/qt4-network.qdoc10
-rw-r--r--doc/src/porting/qt4-scribe.qdoc10
-rw-r--r--doc/src/porting/qt4-sql.qdoc10
-rw-r--r--doc/src/porting/qt4-styles.qdoc10
-rw-r--r--doc/src/porting/qt4-threads.qdoc10
-rw-r--r--doc/src/porting/qt4-tulip.qdoc10
-rw-r--r--doc/src/qt-resources.qdoc10
-rw-r--r--doc/src/qt-webpages.qdoc14
-rw-r--r--doc/src/qt4-intro.qdoc12
-rw-r--r--doc/src/scripting/ecmascript.qdoc10
-rw-r--r--doc/src/scripting/qtscriptdebugger-manual.qdoc10
-rw-r--r--doc/src/scripting/qtscriptextensions.qdoc10
-rw-r--r--doc/src/scripting/scripting.qdoc10
-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.qdoc17
-rw-r--r--doc/src/snippets/code/doc_src_linguist-manual.qdoc10
-rw-r--r--doc/src/snippets/code/doc_src_qmake-manual.qdoc18
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp35
-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/flipable/flipable.qml17
-rw-r--r--doc/src/snippets/declarative/keys/keys-handler.qml60
-rw-r--r--doc/src/snippets/declarative/keys/keys-pressed.qml65
-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.qml52
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/context-advanced.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp60
-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/contextproperties/main.cpp78
-rw-r--r--doc/src/snippets/declarative/qtbinding/contextproperties/main.qml55
-rw-r--r--doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h79
-rw-r--r--doc/src/snippets/declarative/qtbinding/custompalette/custompalette.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/custompalette/main.cpp61
-rw-r--r--doc/src/snippets/declarative/qtbinding/custompalette/main.qml62
-rw-r--r--doc/src/snippets/declarative/qtbinding/enums/enums.pro3
-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.qml55
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-cpp/functions-qml.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-cpp/main.cpp59
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h57
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-qml/MyItem.qml50
-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.cpp81
-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.h51
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-qml/signals-qml.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp62
-rw-r--r--doc/src/snippets/declarative/qtbinding/stopwatch/main.qml58
-rw-r--r--doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.cpp62
-rw-r--r--doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h61
-rw-r--r--doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.pro3
-rw-r--r--doc/src/snippets/sqldatabase/sqldatabase.cpp2
-rw-r--r--doc/src/sql-programming/qsqldatatype-table.qdoc10
-rw-r--r--doc/src/sql-programming/sql-driver.qdoc18
-rw-r--r--doc/src/sql-programming/sql-programming.qdoc10
-rwxr-xr-xdoc/src/template/scripts/functions.js6
-rw-r--r--doc/src/template/style/narrow.css1
-rwxr-xr-xdoc/src/template/style/style.css96
-rw-r--r--doc/src/tutorials/addressbook-fr.qdoc10
-rw-r--r--doc/src/tutorials/addressbook.qdoc10
-rw-r--r--doc/src/tutorials/modelview.qdoc10
-rw-r--r--doc/src/tutorials/widgets-tutorial.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/focus.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/gallery-cde.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/gallery-cleanlooks.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/gallery-gtk.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/gallery-macintosh.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/gallery-motif.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/gallery-plastique.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/gallery-windows.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/gallery-windowsvista.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/gallery-windowsxp.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/gallery.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/layout.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/styles.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/stylesheet.qdoc10
-rw-r--r--doc/src/widgets-and-layouts/widgets.qdoc10
-rw-r--r--doc/src/windows-and-dialogs/dialogs.qdoc10
-rw-r--r--doc/src/windows-and-dialogs/mainwindow.qdoc10
-rw-r--r--doc/src/xml-processing/xml-patterns.qdoc10
-rw-r--r--doc/src/xml-processing/xml-processing.qdoc10
-rw-r--r--doc/src/xml-processing/xquery-introduction.qdoc10
-rw-r--r--doc/src/zh_CN/bughowto.qdoc10
-rw-r--r--doc/src/zh_CN/getting-started/how-to-learn-qt.qdoc10
-rw-r--r--doc/src/zh_CN/getting-started/tutorials.qdoc10
-rw-r--r--doc/src/zh_CN/tutorials/addressbook.qdoc10
-rw-r--r--doc/src/zh_CN/tutorials/widgets-tutorial.qdoc10
-rw-r--r--examples/declarative/animation/behaviors/wigglytext.qml108
-rw-r--r--examples/declarative/cppextensions/imageprovider/imageprovider.pro2
-rw-r--r--examples/declarative/cppextensions/plugins/README2
-rw-r--r--examples/declarative/cppextensions/qwidgets/qwidgets.pro2
-rw-r--r--examples/declarative/i18n/i18n.qml3
-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
-rwxr-xr-xexamples/declarative/tutorials/samegame/samegame4/content/samegame.js2
-rw-r--r--examples/desktop/systray/systray.pro4
-rw-r--r--examples/draganddrop/puzzle/puzzle.pro4
-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/painting/svgviewer/svgviewer.pro4
-rw-r--r--examples/richtext/syntaxhighlighter/syntaxhighlighter.pro2
-rw-r--r--examples/richtext/textobject/textobject.pro2
-rw-r--r--examples/script/context2d/context2d.pro2
-rw-r--r--examples/symbianpkgrules.pri5
-rw-r--r--examples/tools/undoframework/mainwindow.cpp2
-rw-r--r--examples/tutorials/gettingStarted/gsQml/filedialog/filedialog.pro (renamed from examples/tutorials/gettingStarted/gsQml/filedialog/cppPlugins.pro)0
-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.qml80
-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.qml59
-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/tutorials/gettingStarted/gsQml/texteditor.pro4
-rw-r--r--examples/webkit/imageanalyzer/README20
-rw-r--r--examples/webkit/imageanalyzer/imageanalyzer.cpp222
-rw-r--r--examples/webkit/imageanalyzer/imageanalyzer.h103
-rw-r--r--examples/webkit/imageanalyzer/imageanalyzer.pro14
-rw-r--r--examples/webkit/imageanalyzer/main.cpp53
-rw-r--r--examples/webkit/imageanalyzer/mainwindow.cpp80
-rw-r--r--examples/webkit/imageanalyzer/mainwindow.h68
-rw-r--r--examples/webkit/imageanalyzer/resources/imageanalyzer.qrc10
-rw-r--r--examples/webkit/imageanalyzer/resources/images/README2
-rw-r--r--examples/webkit/imageanalyzer/resources/images/bellaCoola.jpgbin0 -> 129886 bytes
-rw-r--r--examples/webkit/imageanalyzer/resources/images/flower.jpgbin0 -> 67126 bytes
-rw-r--r--examples/webkit/imageanalyzer/resources/images/mtRainier.jpgbin0 -> 104090 bytes
-rw-r--r--examples/webkit/imageanalyzer/resources/images/seaShell.jpgbin0 -> 82690 bytes
-rw-r--r--examples/webkit/imageanalyzer/resources/images/trees.jpgbin0 -> 98630 bytes
-rw-r--r--examples/webkit/imageanalyzer/resources/index.html133
-rw-r--r--examples/webkit/webkit.pro1
-rw-r--r--examples/widgets/icons/icons.pro2
-rw-r--r--examples/widgets/movie/movie.pro2
-rw-r--r--examples/xml/dombookmarks/dombookmarks.pro2
-rw-r--r--examples/xml/htmlinfo/htmlinfo.pro2
-rw-r--r--examples/xml/saxbookmarks/saxbookmarks.pro4
-rw-r--r--header.FDL10
-rw-r--r--lib/fonts/dejavu_sans_11_50.qpf2bin0 -> 405944 bytes
-rw-r--r--mkspecs/common/clang.conf17
-rw-r--r--mkspecs/common/g++-base.conf30
-rw-r--r--mkspecs/common/g++-macx.conf32
-rw-r--r--mkspecs/common/g++-unix.conf14
-rw-r--r--mkspecs/common/g++.conf58
-rw-r--r--mkspecs/common/gcc-base-macx.conf43
-rw-r--r--mkspecs/common/gcc-base-unix.conf21
-rw-r--r--mkspecs/common/gcc-base.conf60
-rw-r--r--mkspecs/common/llvm.conf53
-rw-r--r--mkspecs/common/mac-g++.conf81
-rw-r--r--mkspecs/common/mac-llvm.conf76
-rw-r--r--mkspecs/common/mac/qplatformdefs.h97
-rw-r--r--mkspecs/common/qws.conf2
-rw-r--r--mkspecs/common/symbian/symbian-makefile.conf4
-rw-r--r--mkspecs/common/symbian/symbian-mmp.conf10
-rw-r--r--mkspecs/common/symbian/symbian.conf19
-rw-r--r--mkspecs/features/link_pkgconfig.prf7
-rw-r--r--mkspecs/features/mac/objective_c.prf25
-rw-r--r--mkspecs/features/qt.prf4
-rw-r--r--mkspecs/features/qt_functions.prf8
-rw-r--r--mkspecs/features/qttest_p4.prf3
-rw-r--r--mkspecs/features/symbian/application_icon.prf18
-rw-r--r--mkspecs/features/symbian/data_caging_paths.prf4
-rw-r--r--mkspecs/features/symbian/def_files.prf18
-rw-r--r--mkspecs/features/symbian/default_post.prf19
-rw-r--r--mkspecs/features/symbian/do_not_build_as_thumb.prf2
-rw-r--r--mkspecs/features/symbian/qt_config.prf2
-rw-r--r--mkspecs/features/symbian/run_on_phone.prf3
-rw-r--r--mkspecs/features/symbian/sis_targets.prf3
-rw-r--r--mkspecs/features/symbian/symbian_building.prf90
-rw-r--r--mkspecs/freebsd-g++/qmake.conf3
-rw-r--r--mkspecs/linux-g++-32/qmake.conf3
-rw-r--r--mkspecs/linux-g++-64/qmake.conf4
-rw-r--r--mkspecs/linux-g++-maemo/qmake.conf10
-rw-r--r--mkspecs/linux-g++/qmake.conf3
-rw-r--r--mkspecs/linux-llvm/qmake.conf3
-rw-r--r--mkspecs/macx-g++/qmake.conf8
-rw-r--r--mkspecs/macx-g++/qplatformdefs.h56
-rw-r--r--mkspecs/macx-g++40/qmake.conf9
-rw-r--r--mkspecs/macx-g++40/qplatformdefs.h56
-rw-r--r--mkspecs/macx-g++42/qmake.conf9
-rw-r--r--mkspecs/macx-g++42/qplatformdefs.h56
-rw-r--r--mkspecs/macx-icc/qplatformdefs.h2
-rw-r--r--mkspecs/macx-llvm/qmake.conf9
-rw-r--r--mkspecs/macx-llvm/qplatformdefs.h56
-rwxr-xr-xmkspecs/macx-xcode/qmake.conf12
-rw-r--r--mkspecs/macx-xcode/qplatformdefs.h56
-rw-r--r--mkspecs/qws/linux-arm-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-armv6-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-avr32-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-cellon-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-dm7000-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-dm800-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-generic-g++-32/qmake.conf3
-rw-r--r--mkspecs/qws/linux-generic-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-ipaq-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-lsb-g++/qmake.conf4
-rw-r--r--mkspecs/qws/linux-mips-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-nacl-g++/qmake.conf74
-rw-r--r--mkspecs/qws/linux-nacl-g++/qplatformdefs.h175
-rw-r--r--mkspecs/qws/linux-powerpc-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-sh-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-sh4al-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-sharp-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-x86-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-x86_64-g++/qmake.conf3
-rw-r--r--mkspecs/qws/linux-zylonite-g++/qmake.conf3
-rw-r--r--mkspecs/qws/macx-generic-g++/qmake.conf8
-rw-r--r--mkspecs/qws/macx-nacl-g++/qmake.conf95
-rw-r--r--mkspecs/qws/macx-nacl-g++/qplatformdefs.h175
-rw-r--r--mkspecs/symbian-armcc/features/default_post.prf (renamed from mkspecs/symbian/linux-armcc/features/default_post.prf)0
-rw-r--r--mkspecs/symbian-armcc/qmake.conf62
-rw-r--r--mkspecs/symbian-armcc/qplatformdefs.h42
-rw-r--r--mkspecs/symbian-gcce/features/default_post.prf (renamed from mkspecs/symbian/linux-gcce/features/default_post.prf)0
-rw-r--r--mkspecs/symbian-gcce/qmake.conf93
-rw-r--r--mkspecs/symbian-gcce/qplatformdefs.h43
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm2
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm4
-rw-r--r--mkspecs/symbian/linux-armcc/qmake.conf62
-rw-r--r--mkspecs/symbian/linux-armcc/qplatformdefs.h42
-rw-r--r--mkspecs/symbian/linux-gcce/qmake.conf95
-rw-r--r--mkspecs/symbian/linux-gcce/qplatformdefs.h43
-rw-r--r--mkspecs/unsupported/linux-clang/qmake.conf19
-rw-r--r--mkspecs/unsupported/linux-clang/qplatformdefs.h102
-rw-r--r--mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf3
-rw-r--r--mkspecs/unsupported/macx-clang/Info.plist.app20
-rw-r--r--mkspecs/unsupported/macx-clang/Info.plist.lib18
-rw-r--r--mkspecs/unsupported/macx-clang/qmake.conf21
-rw-r--r--mkspecs/unsupported/macx-clang/qplatformdefs.h97
-rw-r--r--mkspecs/unsupported/qnx-g++/qmake.conf3
-rw-r--r--mkspecs/unsupported/qws/linux-x86-openkode-g++/qmake.conf23
-rw-r--r--mkspecs/unsupported/qws/linux-x86-openkode-g++/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf1
-rw-r--r--mkspecs/unsupported/vxworks-ppc-g++/qmake.conf3
-rw-r--r--mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf3
-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/generators/mac/pbuilder_pbx.cpp1
-rw-r--r--qmake/generators/metamakefile.cpp1
-rw-r--r--qmake/generators/symbian/initprojectdeploy_symbian.cpp10
-rw-r--r--qmake/generators/symbian/symbian_makefile.h4
-rw-r--r--qmake/generators/symbian/symbiancommon.cpp4
-rw-r--r--qmake/generators/symbian/symmake.cpp4
-rw-r--r--qmake/generators/symbian/symmake_abld.cpp20
-rw-r--r--qmake/generators/symbian/symmake_sbsv2.cpp2
-rw-r--r--qmake/generators/unix/unixmake.cpp45
-rw-r--r--qmake/generators/unix/unixmake2.cpp28
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp2
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp2
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp12
-rw-r--r--qmake/generators/win32/winmakefile.cpp2
-rw-r--r--qmake/project.cpp22
-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.cpp25
-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/harfbuzz/tests/shaping/main.cpp29
-rw-r--r--src/3rdparty/md5/md5.cpp1
-rw-r--r--src/3rdparty/phonon/gstreamer/devicemanager.cpp4
-rw-r--r--src/3rdparty/phonon/gstreamer/videowidget.cpp4
-rw-r--r--src/3rdparty/phonon/gstreamer/x11renderer.h4
-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/objectdescriptionmodel.h3
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.pro7
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h2
-rw-r--r--src/activeqt/container/qaxwidget.cpp2
-rw-r--r--src/activeqt/shared/qaxtypes.cpp2
-rw-r--r--src/corelib/animation/qabstractanimation.cpp146
-rw-r--r--src/corelib/animation/qabstractanimation.h31
-rw-r--r--src/corelib/animation/qabstractanimation_p.h52
-rw-r--r--src/corelib/arch/qatomic_arch.h2
-rw-r--r--src/corelib/arch/qatomic_arm.h2
-rw-r--r--src/corelib/arch/symbian/heap_hybrid.cpp8
-rw-r--r--src/corelib/arch/symbian/qatomic_generic_armv6.cpp2
-rw-r--r--src/corelib/codecs/codecs.qdoc10
-rw-r--r--src/corelib/codecs/qutfcodec.cpp2
-rw-r--r--src/corelib/concurrent/qtconcurrentrunbase.h25
-rw-r--r--src/corelib/corelib.pro16
-rw-r--r--src/corelib/global/global.pri6
-rw-r--r--src/corelib/global/qconfig-minimal-system-dependencies.h371
-rw-r--r--src/corelib/global/qendian.qdoc10
-rw-r--r--src/corelib/global/qfeatures.h10
-rw-r--r--src/corelib/global/qfeatures.txt2
-rw-r--r--src/corelib/global/qglobal.cpp26
-rw-r--r--src/corelib/global/qglobal.h45
-rw-r--r--src/corelib/global/qmalloc.cpp16
-rw-r--r--src/corelib/global/qnaclunimplemented.cpp156
-rw-r--r--src/corelib/global/qnaclunimplemented.h95
-rw-r--r--src/corelib/global/qnamespace.h2
-rw-r--r--src/corelib/global/qnamespace.qdoc34
-rw-r--r--src/corelib/io/io.pri10
-rw-r--r--src/corelib/io/qfilesystemwatcher_fsevents.cpp3
-rw-r--r--src/corelib/io/qfilesystemwatcher_fsevents_p.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify.cpp16
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue.cpp4
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue_p.h2
-rw-r--r--src/corelib/io/qiodevice_p.h2
-rw-r--r--src/corelib/io/qresource.cpp4
-rw-r--r--src/corelib/io/qsettings.cpp41
-rw-r--r--src/corelib/io/qsettings_p.h2
-rw-r--r--src/corelib/io/qurl.cpp8
-rw-r--r--src/corelib/io/qurl.h2
-rw-r--r--src/corelib/kernel/kernel.pri4
-rw-r--r--src/corelib/kernel/qabstractitemmodel.cpp23
-rw-r--r--src/corelib/kernel/qcore_mac_p.h8
-rw-r--r--src/corelib/kernel/qcore_unix.cpp3
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp9
-rw-r--r--src/corelib/kernel/qcoreevent.h1
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib.cpp9
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian.cpp9
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian_p.h4
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix.cpp14
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix_p.h2
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp20
-rw-r--r--src/corelib/kernel/qmath.qdoc10
-rw-r--r--src/corelib/kernel/qmimedata.cpp2
-rw-r--r--src/corelib/kernel/qobject.cpp10
-rw-r--r--src/corelib/kernel/qobject_p.h1
-rw-r--r--src/corelib/kernel/qsharedmemory.cpp5
-rw-r--r--src/corelib/kernel/qvariant.cpp8
-rw-r--r--src/corelib/kernel/qvariant.h2
-rw-r--r--src/corelib/plugin/qelfparser_p.cpp10
-rw-r--r--src/corelib/plugin/qelfparser_p.h5
-rw-r--r--src/corelib/plugin/qlibrary.cpp3
-rw-r--r--src/corelib/plugin/qplugin.qdoc10
-rw-r--r--src/corelib/plugin/qsystemlibrary.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.cpp53
-rw-r--r--src/corelib/thread/qthread_win.cpp1
-rw-r--r--src/corelib/thread/qwaitcondition.qdoc10
-rw-r--r--src/corelib/tools/qalgorithms.qdoc10
-rw-r--r--src/corelib/tools/qbitarray.cpp7
-rw-r--r--src/corelib/tools/qbitarray.h2
-rw-r--r--src/corelib/tools/qbytearray.cpp21
-rw-r--r--src/corelib/tools/qbytearray.h2
-rw-r--r--src/corelib/tools/qcache.qdoc10
-rw-r--r--src/corelib/tools/qcontiguouscache.cpp7
-rw-r--r--src/corelib/tools/qcontiguouscache.h1
-rw-r--r--src/corelib/tools/qdatetime.cpp1
-rw-r--r--src/corelib/tools/qelapsedtimer.cpp2
-rw-r--r--src/corelib/tools/qhash.cpp14
-rw-r--r--src/corelib/tools/qhash.h2
-rw-r--r--src/corelib/tools/qiterator.qdoc10
-rw-r--r--src/corelib/tools/qlinkedlist.cpp11
-rw-r--r--src/corelib/tools/qlinkedlist.h1
-rw-r--r--src/corelib/tools/qlist.cpp9
-rw-r--r--src/corelib/tools/qlist.h1
-rw-r--r--src/corelib/tools/qlocale.cpp7
-rw-r--r--src/corelib/tools/qlocale.h2
-rw-r--r--src/corelib/tools/qmap.cpp14
-rw-r--r--src/corelib/tools/qmap.h2
-rw-r--r--src/corelib/tools/qpair.qdoc10
-rw-r--r--src/corelib/tools/qpoint.cpp6
-rw-r--r--src/corelib/tools/qqueue.cpp8
-rw-r--r--src/corelib/tools/qqueue.h1
-rw-r--r--src/corelib/tools/qregexp.cpp8
-rw-r--r--src/corelib/tools/qregexp.h1
-rw-r--r--src/corelib/tools/qscopedpointer.h12
-rw-r--r--src/corelib/tools/qset.h1
-rw-r--r--src/corelib/tools/qset.qdoc17
-rw-r--r--src/corelib/tools/qshareddata.h14
-rw-r--r--src/corelib/tools/qsharedpointer.cpp6
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h24
-rw-r--r--src/corelib/tools/qsimd.cpp9
-rw-r--r--src/corelib/tools/qsimd_p.h3
-rw-r--r--src/corelib/tools/qsize.cpp6
-rw-r--r--src/corelib/tools/qstack.cpp8
-rw-r--r--src/corelib/tools/qstack.h1
-rw-r--r--src/corelib/tools/qstring.cpp45
-rw-r--r--src/corelib/tools/qstring.h1
-rw-r--r--src/corelib/tools/qvarlengtharray.h124
-rw-r--r--src/corelib/tools/qvarlengtharray.qdoc218
-rw-r--r--src/corelib/tools/qvector.cpp7
-rw-r--r--src/corelib/tools/qvector.h7
-rw-r--r--src/corelib/tools/tools.pri2
-rw-r--r--src/corelib/xml/qxmlstream.h1
-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/qdbusintegrator.cpp2
-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.cpp21
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable.cpp109
-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.cpp91
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage.cpp43
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage_p.h1
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimagebase.cpp15
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.cpp56
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp258
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeloader.cpp60
-rw-r--r--src/declarative/graphicsitems/qdeclarativemousearea.cpp15
-rw-r--r--src/declarative/graphicsitems/qdeclarativemousearea_p_p.h3
-rw-r--r--src/declarative/graphicsitems/qdeclarativepainteditem.cpp1
-rw-r--r--src/declarative/graphicsitems/qdeclarativepath.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativepathview.cpp58
-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.cpp7
-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.cpp968
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext_p_p.h48
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit.cpp1
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp30
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextlayout.cpp19
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextlayout_p.h1
-rw-r--r--src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp57
-rw-r--r--src/declarative/graphicsitems/qdeclarativevisualitemmodel_p.h4
-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.cpp2
-rw-r--r--src/declarative/qml/qdeclarativecompiler.cpp38
-rw-r--r--src/declarative/qml/qdeclarativecompiler_p.h5
-rw-r--r--src/declarative/qml/qdeclarativecomponent.cpp95
-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.h20
-rw-r--r--src/declarative/qml/qdeclarativedom_p.h26
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp91
-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/qdeclarativefastproperties.cpp9
-rw-r--r--src/declarative/qml/qdeclarativeglobal_p.h19
-rw-r--r--src/declarative/qml/qdeclarativeimport.cpp11
-rw-r--r--src/declarative/qml/qdeclarativeinfo.cpp3
-rw-r--r--src/declarative/qml/qdeclarativemetatype_p.h5
-rw-r--r--src/declarative/qml/qdeclarativeobjectscriptclass.cpp309
-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.cpp139
-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.cpp27
-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/qdeclarativevmemetaobject.cpp25
-rw-r--r--src/declarative/qml/qdeclarativevmemetaobject_p.h19
-rw-r--r--src/declarative/qml/qdeclarativeworkerscript.cpp30
-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.cpp25
-rw-r--r--src/declarative/util/qdeclarativelistmodel_p.h2
-rw-r--r--src/declarative/util/qdeclarativelistmodelworkeragent.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.cpp8
-rw-r--r--src/declarative/util/qlistmodelinterface.cpp8
-rw-r--r--src/declarative/util/qlistmodelinterface_p.h4
-rw-r--r--src/gui/accessible/accessible.pri2
-rw-r--r--src/gui/accessible/qaccessible_mac_p.h4
-rw-r--r--src/gui/dialogs/dialogs.pri4
-rw-r--r--src/gui/dialogs/qdialog.cpp2
-rw-r--r--src/gui/dialogs/qfiledialog.cpp5
-rw-r--r--src/gui/dialogs/qfiledialog_mac.mm9
-rw-r--r--src/gui/dialogs/qfiledialog_win.cpp3
-rw-r--r--src/gui/dialogs/qfileinfogatherer_p.h3
-rw-r--r--src/gui/dialogs/qfilesystemmodel.cpp45
-rw-r--r--src/gui/dialogs/qfontdialog_mac.mm4
-rw-r--r--src/gui/dialogs/qinputdialog.cpp44
-rw-r--r--src/gui/dialogs/qinputdialog.h25
-rw-r--r--src/gui/dialogs/qprintdialog.qdoc10
-rw-r--r--src/gui/egl/egl.pri28
-rw-r--r--src/gui/egl/qegl.cpp6
-rw-r--r--src/gui/egl/qegl_qpa.cpp111
-rw-r--r--src/gui/embedded/qcopchannel_qws.cpp2
-rw-r--r--src/gui/embedded/qkbd_defaultmap_qws_p.h7
-rw-r--r--src/gui/embedded/qkbd_qws.cpp24
-rw-r--r--src/gui/embedded/qtransportauth_qws.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp39
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h6
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.cpp6
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp14
-rw-r--r--src/gui/graphicsview/qgraphicsscene_p.h2
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp10
-rw-r--r--src/gui/graphicsview/qgraphicsview_p.h2
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp18
-rw-r--r--src/gui/graphicsview/qgridlayoutengine.cpp317
-rw-r--r--src/gui/graphicsview/qgridlayoutengine_p.h13
-rw-r--r--src/gui/gui.pro5
-rw-r--r--src/gui/image/image.pri5
-rw-r--r--src/gui/image/qbitmap.cpp8
-rw-r--r--src/gui/image/qbitmap.h1
-rw-r--r--src/gui/image/qicon.cpp8
-rw-r--r--src/gui/image/qicon.h2
-rw-r--r--src/gui/image/qimage.cpp12
-rw-r--r--src/gui/image/qimage.h2
-rw-r--r--src/gui/image/qimage_ssse3.cpp2
-rw-r--r--src/gui/image/qnativeimage.cpp20
-rw-r--r--src/gui/image/qpicture.cpp8
-rw-r--r--src/gui/image/qpicture.h1
-rw-r--r--src/gui/image/qpixmap.cpp13
-rw-r--r--src/gui/image/qpixmap.h2
-rw-r--r--src/gui/image/qpixmap_blitter.cpp311
-rw-r--r--src/gui/image/qpixmap_blitter_p.h166
-rw-r--r--src/gui/image/qpixmap_qpa.cpp49
-rw-r--r--src/gui/image/qpixmap_s60.cpp3
-rw-r--r--src/gui/image/qpixmap_x11_p.h2
-rw-r--r--src/gui/image/qpixmapdata_p.h3
-rw-r--r--src/gui/image/qpixmapdatafactory.cpp7
-rw-r--r--src/gui/image/qpnghandler.cpp82
-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/inputmethod.pri2
-rw-r--r--src/gui/inputmethod/qinputcontextfactory.cpp4
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp14
-rw-r--r--src/gui/itemviews/qabstractproxymodel.cpp26
-rw-r--r--src/gui/itemviews/qabstractproxymodel.h3
-rw-r--r--src/gui/itemviews/qdirmodel.cpp19
-rw-r--r--src/gui/itemviews/qitemselectionmodel.cpp15
-rw-r--r--src/gui/itemviews/qlistview.cpp7
-rw-r--r--src/gui/itemviews/qstringlistmodel.cpp3
-rw-r--r--src/gui/itemviews/qtableview.cpp4
-rw-r--r--src/gui/kernel/kernel.pri66
-rw-r--r--src/gui/kernel/mac.pri2
-rw-r--r--src/gui/kernel/qapplication.cpp56
-rw-r--r--src/gui/kernel/qapplication_mac.mm4
-rw-r--r--src/gui/kernel/qapplication_p.h57
-rw-r--r--src/gui/kernel/qapplication_qpa.cpp928
-rw-r--r--src/gui/kernel/qapplication_s60.cpp20
-rw-r--r--src/gui/kernel/qapplication_win.cpp15
-rw-r--r--src/gui/kernel/qapplication_x11.cpp26
-rw-r--r--src/gui/kernel/qclipboard_qpa.cpp163
-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.mm10
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm17
-rw-r--r--src/gui/kernel/qcursor.h2
-rw-r--r--src/gui/kernel/qcursor_p.h2
-rw-r--r--src/gui/kernel/qcursor_qpa.cpp127
-rw-r--r--src/gui/kernel/qdesktopwidget.qdoc10
-rw-r--r--src/gui/kernel/qdesktopwidget_qpa.cpp180
-rw-r--r--src/gui/kernel/qdesktopwidget_qpa_p.h76
-rw-r--r--src/gui/kernel/qdnd_p.h4
-rw-r--r--src/gui/kernel/qeventdispatcher_glib_qpa.cpp147
-rw-r--r--src/gui/kernel/qeventdispatcher_glib_qpa_p.h88
-rw-r--r--src/gui/kernel/qeventdispatcher_qpa.cpp302
-rw-r--r--src/gui/kernel/qeventdispatcher_qpa_p.h86
-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/qgenericplugin_qpa.cpp112
-rw-r--r--src/gui/kernel/qgenericplugin_qpa.h84
-rw-r--r--src/gui/kernel/qgenericpluginfactory_qpa.cpp115
-rw-r--r--src/gui/kernel/qgenericpluginfactory_qpa.h67
-rw-r--r--src/gui/kernel/qgesture.cpp27
-rw-r--r--src/gui/kernel/qgesturemanager.cpp14
-rw-r--r--src/gui/kernel/qgesturemanager_p.h1
-rw-r--r--src/gui/kernel/qguifunctions_wince.cpp3
-rw-r--r--src/gui/kernel/qguiplatformplugin.cpp2
-rw-r--r--src/gui/kernel/qkeymapper_mac.cpp2
-rw-r--r--src/gui/kernel/qkeysequence.cpp8
-rw-r--r--src/gui/kernel/qkeysequence.h1
-rw-r--r--src/gui/kernel/qmotifdnd_x11.cpp5
-rw-r--r--src/gui/kernel/qplatformcursor_qpa.cpp660
-rw-r--r--src/gui/kernel/qplatformcursor_qpa.h103
-rw-r--r--src/gui/kernel/qplatformeventloopintegration_qpa.cpp41
-rw-r--r--src/gui/kernel/qplatformeventloopintegration_qpa.h64
-rw-r--r--src/gui/kernel/qplatformglcontext_qpa.cpp57
-rw-r--r--src/gui/kernel/qplatformglcontext_qpa.h79
-rw-r--r--src/gui/kernel/qplatformintegration_qpa.cpp77
-rw-r--r--src/gui/kernel/qplatformintegration_qpa.h97
-rw-r--r--src/gui/kernel/qplatformintegrationfactory_qpa.cpp88
-rw-r--r--src/gui/kernel/qplatformintegrationfactory_qpa_p.h78
-rw-r--r--src/gui/kernel/qplatformintegrationplugin_qpa.cpp55
-rw-r--r--src/gui/kernel/qplatformintegrationplugin_qpa.h92
-rw-r--r--src/gui/kernel/qplatformscreen_qpa.cpp66
-rw-r--r--src/gui/kernel/qplatformscreen_qpa.h81
-rw-r--r--src/gui/kernel/qplatformwindow_qpa.cpp129
-rw-r--r--src/gui/kernel/qplatformwindow_qpa.h94
-rw-r--r--src/gui/kernel/qplatformwindowformat_qpa.cpp1012
-rw-r--r--src/gui/kernel/qplatformwindowformat_qpa.h241
-rw-r--r--src/gui/kernel/qsizepolicy.qdoc10
-rw-r--r--src/gui/kernel/qsoftkeymanager_s60.cpp2
-rw-r--r--src/gui/kernel/qstandardgestures.cpp25
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac.mm37
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac_p.h2
-rw-r--r--src/gui/kernel/qt_x11_p.h1
-rw-r--r--src/gui/kernel/qwidget.cpp153
-rw-r--r--src/gui/kernel/qwidget.h19
-rw-r--r--src/gui/kernel/qwidget_mac.mm52
-rw-r--r--src/gui/kernel/qwidget_p.h25
-rw-r--r--src/gui/kernel/qwidget_qpa.cpp895
-rw-r--r--src/gui/kernel/qwidget_qws.cpp24
-rw-r--r--src/gui/kernel/qwidget_s60.cpp7
-rw-r--r--src/gui/kernel/qwidget_win.cpp23
-rw-r--r--src/gui/kernel/qwindowdefs.h6
-rw-r--r--src/gui/kernel/qwindowsysteminterface_qpa.cpp255
-rw-r--r--src/gui/kernel/qwindowsysteminterface_qpa.h95
-rw-r--r--src/gui/kernel/qwindowsysteminterface_qpa_p.h189
-rw-r--r--src/gui/painting/painting.pri43
-rw-r--r--src/gui/painting/qbackingstore.cpp49
-rw-r--r--src/gui/painting/qblendfunctions_armv6_rvct.s222
-rw-r--r--src/gui/painting/qblittable.cpp105
-rw-r--r--src/gui/painting/qblittable_p.h91
-rw-r--r--src/gui/painting/qbrush.cpp9
-rw-r--r--src/gui/painting/qbrush.h2
-rw-r--r--src/gui/painting/qcolormap.qdoc10
-rw-r--r--src/gui/painting/qcolormap_qpa.cpp231
-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.h76
-rw-r--r--src/gui/painting/qdrawhelper_armv6_p.h81
-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.cpp7
-rw-r--r--src/gui/painting/qgraphicssystem_p.h6
-rw-r--r--src/gui/painting/qgraphicssystem_qws.cpp2
-rw-r--r--src/gui/painting/qgrayraster.c35
-rw-r--r--src/gui/painting/qgrayraster_p.h2
-rw-r--r--src/gui/painting/qimagescale.cpp2
-rw-r--r--src/gui/painting/qpaintdevice.cpp2
-rw-r--r--src/gui/painting/qpaintdevice.qdoc10
-rw-r--r--src/gui/painting/qpaintdevice_qpa.cpp68
-rw-r--r--src/gui/painting/qpaintengine.h4
-rw-r--r--src/gui/painting/qpaintengine_blitter.cpp663
-rw-r--r--src/gui/painting/qpaintengine_blitter_p.h113
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp107
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h3
-rw-r--r--src/gui/painting/qpainter.cpp4
-rw-r--r--src/gui/painting/qpainterpath.cpp8
-rw-r--r--src/gui/painting/qpainterpath.h1
-rw-r--r--src/gui/painting/qpdf.cpp1
-rw-r--r--src/gui/painting/qpen.cpp8
-rw-r--r--src/gui/painting/qpen.h1
-rw-r--r--src/gui/painting/qpolygon.cpp16
-rw-r--r--src/gui/painting/qpolygon.h3
-rw-r--r--src/gui/painting/qprinterinfo.qdoc10
-rw-r--r--src/gui/painting/qregion.cpp12
-rw-r--r--src/gui/painting/qregion.h9
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp11
-rw-r--r--src/gui/painting/qunifiedtoolbarsurface_mac.cpp257
-rw-r--r--src/gui/painting/qunifiedtoolbarsurface_mac_p.h100
-rw-r--r--src/gui/painting/qwindowsurface.cpp28
-rw-r--r--src/gui/painting/qwindowsurface_p.h9
-rw-r--r--src/gui/painting/qwindowsurface_raster.cpp50
-rw-r--r--src/gui/painting/qwindowsurface_raster_p.h2
-rw-r--r--src/gui/painting/qwindowsurface_s60.cpp8
-rw-r--r--src/gui/painting/qwindowsurface_x11.cpp2
-rw-r--r--src/gui/s60framework/qs60mainapplication.cpp7
-rw-r--r--src/gui/styles/qmacstyle.qdoc10
-rw-r--r--src/gui/styles/qmacstyle_mac.mm5
-rw-r--r--src/gui/styles/qs60style.cpp123
-rw-r--r--src/gui/styles/qs60style_feedbackinterface_p.h50
-rw-r--r--src/gui/styles/qs60style_p.h11
-rw-r--r--src/gui/styles/qs60style_s60.cpp99
-rw-r--r--src/gui/styles/qstyle.cpp8
-rw-r--r--src/gui/styles/qstylesheetstyle.cpp143
-rw-r--r--src/gui/styles/qstylesheetstyle_p.h20
-rw-r--r--src/gui/styles/qwindowsxpstyle.cpp2
-rw-r--r--src/gui/styles/styles.pri2
-rw-r--r--src/gui/text/qfont.cpp26
-rw-r--r--src/gui/text/qfont_qpa.cpp114
-rw-r--r--src/gui/text/qfontdatabase.cpp69
-rw-r--r--src/gui/text/qfontdatabase.h3
-rw-r--r--src/gui/text/qfontdatabase_qpa.cpp393
-rw-r--r--src/gui/text/qfontdatabase_qws.cpp10
-rw-r--r--src/gui/text/qfontdatabase_x11.cpp30
-rw-r--r--src/gui/text/qfontengine.cpp25
-rw-r--r--src/gui/text/qfontengine_ft.cpp32
-rw-r--r--src/gui/text/qfontengine_ft_p.h25
-rw-r--r--src/gui/text/qfontengine_mac.mm24
-rw-r--r--src/gui/text/qfontengine_p.h23
-rw-r--r--src/gui/text/qfontengine_qpa.cpp691
-rw-r--r--src/gui/text/qfontengine_qpa_p.h262
-rw-r--r--src/gui/text/qfontengine_s60.cpp68
-rw-r--r--src/gui/text/qfontengine_s60_p.h3
-rw-r--r--src/gui/text/qfontengine_win.cpp2
-rw-r--r--src/gui/text/qfontsubset.cpp4
-rw-r--r--src/gui/text/qplatformfontdatabase_qpa.cpp241
-rw-r--r--src/gui/text/qplatformfontdatabase_qpa.h108
-rw-r--r--src/gui/text/qstatictext.cpp22
-rw-r--r--src/gui/text/qstatictext_p.h54
-rw-r--r--src/gui/text/qtextcontrol.cpp3
-rw-r--r--src/gui/text/qtextcursor.h1
-rw-r--r--src/gui/text/qtextdocument.cpp8
-rw-r--r--src/gui/text/qtextdocument_p.cpp4
-rw-r--r--src/gui/text/qtextengine.cpp18
-rw-r--r--src/gui/text/qtextlayout.cpp2
-rw-r--r--src/gui/text/text.pri19
-rw-r--r--src/gui/util/qcompleter.cpp20
-rw-r--r--src/gui/util/qcompleter_p.h1
-rw-r--r--src/gui/util/qdesktopservices.cpp2
-rw-r--r--src/gui/util/util.pri4
-rw-r--r--src/gui/widgets/qabstractslider.cpp2
-rw-r--r--src/gui/widgets/qcocoamenu_mac.mm22
-rw-r--r--src/gui/widgets/qcombobox.cpp2
-rw-r--r--src/gui/widgets/qdatetimeedit.cpp4
-rw-r--r--src/gui/widgets/qlinecontrol.cpp4
-rw-r--r--src/gui/widgets/qlineedit.cpp5
-rw-r--r--src/gui/widgets/qmainwindow.cpp19
-rw-r--r--src/gui/widgets/qmainwindowlayout_mac.mm31
-rw-r--r--src/gui/widgets/qmainwindowlayout_p.h15
-rw-r--r--src/gui/widgets/qmenu.h4
-rw-r--r--src/gui/widgets/qmenubar.cpp30
-rw-r--r--src/gui/widgets/qtextedit.cpp2
-rw-r--r--src/gui/widgets/qvalidator.cpp45
-rw-r--r--src/gui/widgets/widgets.pri2
-rw-r--r--src/imports/folderlistmodel/folderlistmodel.pro5
-rw-r--r--src/imports/gestures/gestures.pro5
-rw-r--r--src/imports/particles/particles.pro5
-rw-r--r--src/multimedia/audio/audio.pri4
-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.cpp166
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h36
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp54
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel_p.h7
-rw-r--r--src/network/access/qhttpnetworkheader.cpp12
-rw-r--r--src/network/access/qhttpnetworkreply.cpp5
-rw-r--r--src/network/access/qhttpnetworkreply_p.h8
-rw-r--r--src/network/access/qnetworkaccessbackend.cpp14
-rw-r--r--src/network/access/qnetworkaccessbackend_p.h1
-rw-r--r--src/network/access/qnetworkaccesscachebackend.cpp12
-rw-r--r--src/network/access/qnetworkaccesscachebackend_p.h2
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend.cpp6
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend_p.h1
-rw-r--r--src/network/access/qnetworkaccessfilebackend.cpp6
-rw-r--r--src/network/access/qnetworkaccessfilebackend_p.h1
-rw-r--r--src/network/access/qnetworkaccessftpbackend.cpp17
-rw-r--r--src/network/access/qnetworkaccessftpbackend_p.h1
-rw-r--r--src/network/access/qnetworkaccesshttpbackend.cpp84
-rw-r--r--src/network/access/qnetworkaccesshttpbackend_p.h2
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp49
-rw-r--r--src/network/access/qnetworkaccessmanager_p.h6
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp2
-rw-r--r--src/network/access/qnetworkrequest.cpp20
-rw-r--r--src/network/bearer/qnetworkconfigmanager.cpp38
-rw-r--r--src/network/bearer/qnetworksession.cpp8
-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.h1
-rw-r--r--src/network/socket/qabstractsocket_p.h7
-rw-r--r--src/network/socket/qlocalserver_unix.cpp2
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp4
-rw-r--r--src/network/ssl/qsslconfiguration.cpp7
-rw-r--r--src/network/ssl/qsslsocket.cpp14
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp121
-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.cpp68
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp20
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qtriangulator.cpp21
-rw-r--r--src/opengl/opengl.pro7
-rw-r--r--src/opengl/qgl.cpp49
-rw-r--r--src/opengl/qgl.h1
-rw-r--r--src/opengl/qgl_egl.cpp6
-rw-r--r--src/opengl/qgl_p.h102
-rw-r--r--src/opengl/qgl_qpa.cpp345
-rw-r--r--src/opengl/qgl_x11egl.cpp2
-rw-r--r--src/opengl/qglextensions_p.h23
-rw-r--r--src/opengl/qglframebufferobject.cpp27
-rw-r--r--src/opengl/qglpixelbuffer.cpp4
-rw-r--r--src/opengl/qglpixelbuffer_p.h4
-rw-r--r--src/opengl/qglpixelbuffer_stub.cpp84
-rw-r--r--src/opengl/qglpixmapfilter.cpp6
-rw-r--r--src/opengl/qglshaderprogram.cpp10
-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.cpp194
-rw-r--r--src/opengl/qwindowsurface_gl_p.h7
-rw-r--r--src/openvg/qpaintengine_vg.cpp98
-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_p.h5
-rw-r--r--src/openvg/qvg_symbian.cpp14
-rw-r--r--src/openvg/qvgfontglyphcache_p.h6
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp6
-rw-r--r--src/plugins/bearer/connman/qconnmanengine.cpp83
-rw-r--r--src/plugins/bearer/connman/qconnmanengine.h27
-rw-r--r--src/plugins/bearer/connman/qconnmanservice_linux.cpp15
-rw-r--r--src/plugins/bearer/connman/qofonoservice_linux.cpp12
-rw-r--r--src/plugins/bearer/corewlan/corewlan.pro5
-rw-r--r--src/plugins/bearer/corewlan/qcorewlanengine.mm89
-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/platformdefs_win.h3
-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.cpp37
-rw-r--r--src/plugins/bearer/symbian/symbianengine.h6
-rw-r--r--src/plugins/generic/linuxinput/linuxinput.pro18
-rw-r--r--src/plugins/generic/linuxinput/main.cpp80
-rw-r--r--src/plugins/generic/linuxinput/qlinuxinput.cpp557
-rw-r--r--src/plugins/generic/linuxinput/qlinuxinput.h111
-rw-r--r--src/plugins/generic/tslib/main.cpp78
-rw-r--r--src/plugins/generic/tslib/qtslib.cpp144
-rw-r--r--src/plugins/generic/tslib/qtslib.h77
-rw-r--r--src/plugins/generic/tslib/tslib.pro13
-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.cpp9
-rw-r--r--src/plugins/graphicssystems/graphicssystems.pro4
-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.h71
-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.cpp60
-rw-r--r--src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.h55
-rw-r--r--src/plugins/graphicssystems/openvg/qgraphicssystem_vg.cpp8
-rw-r--r--src/plugins/graphicssystems/trace/qgraphicssystem_trace.cpp4
-rw-r--r--src/plugins/phonon/gstreamer/gstreamer.pro2
-rw-r--r--src/plugins/phonon/mmf/mmf.pro8
-rw-r--r--src/plugins/platforms/cocoa/cocoa.pro29
-rw-r--r--src/plugins/platforms/cocoa/main.mm74
-rw-r--r--src/plugins/platforms/cocoa/qcocoaautoreleasepool.h57
-rw-r--r--src/plugins/platforms/cocoa/qcocoaautoreleasepool.mm52
-rw-r--r--src/plugins/platforms/cocoa/qcocoaeventloopintegration.h74
-rw-r--r--src/plugins/platforms/cocoa/qcocoaeventloopintegration.mm128
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.h98
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.mm122
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.h75
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm116
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindowsurface.h73
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindowsurface.mm103
-rw-r--r--src/plugins/platforms/cocoa/qnsview.h79
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm211
-rw-r--r--src/plugins/platforms/cocoa/qnswindowdelegate.h61
-rw-r--r--src/plugins/platforms/cocoa/qnswindowdelegate.mm73
-rw-r--r--src/plugins/platforms/directfb/directfb.pro35
-rw-r--r--src/plugins/platforms/directfb/main.cpp72
-rw-r--r--src/plugins/platforms/directfb/qdirectfbblitter.cpp155
-rw-r--r--src/plugins/platforms/directfb/qdirectfbblitter.h76
-rw-r--r--src/plugins/platforms/directfb/qdirectfbconvenience.cpp376
-rw-r--r--src/plugins/platforms/directfb/qdirectfbconvenience.h84
-rw-r--r--src/plugins/platforms/directfb/qdirectfbcursor.cpp80
-rw-r--r--src/plugins/platforms/directfb/qdirectfbcursor.h63
-rw-r--r--src/plugins/platforms/directfb/qdirectfbglcontext.cpp99
-rw-r--r--src/plugins/platforms/directfb/qdirectfbglcontext.h69
-rw-r--r--src/plugins/platforms/directfb/qdirectfbinput.cpp208
-rw-r--r--src/plugins/platforms/directfb/qdirectfbinput.h86
-rw-r--r--src/plugins/platforms/directfb/qdirectfbintegration.cpp144
-rw-r--r--src/plugins/platforms/directfb/qdirectfbintegration.h104
-rw-r--r--src/plugins/platforms/directfb/qdirectfbwindow.cpp191
-rw-r--r--src/plugins/platforms/directfb/qdirectfbwindow.h79
-rw-r--r--src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp141
-rw-r--r--src/plugins/platforms/directfb/qdirectfbwindowsurface.h77
-rw-r--r--src/plugins/platforms/eglconvenience/qeglconvenience.cpp316
-rw-r--r--src/plugins/platforms/eglconvenience/qeglconvenience.h59
-rw-r--r--src/plugins/platforms/eglconvenience/qeglplatformcontext.cpp155
-rw-r--r--src/plugins/platforms/eglconvenience/qeglplatformcontext.h71
-rw-r--r--src/plugins/platforms/eglfs/eglfs.pro31
-rw-r--r--src/plugins/platforms/eglfs/main.cpp72
-rw-r--r--src/plugins/platforms/eglfs/qeglfsintegration.cpp101
-rw-r--r--src/plugins/platforms/eglfs/qeglfsintegration.h76
-rw-r--r--src/plugins/platforms/eglfs/qeglfsscreen.cpp203
-rw-r--r--src/plugins/platforms/eglfs/qeglfsscreen.h76
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindow.cpp84
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindow.h71
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindowsurface.cpp104
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindowsurface.h67
-rw-r--r--src/plugins/platforms/fb_base/fb_base.cpp507
-rw-r--r--src/plugins/platforms/fb_base/fb_base.h210
-rw-r--r--src/plugins/platforms/fb_base/fb_base.pri2
-rw-r--r--src/plugins/platforms/fb_base/fb_base.pro23
-rw-r--r--src/plugins/platforms/fontdatabases/basicunix/basicunix.pri82
-rw-r--r--src/plugins/platforms/fontdatabases/basicunix/qbasicunixfontdatabase.cpp326
-rw-r--r--src/plugins/platforms/fontdatabases/basicunix/qbasicunixfontdatabase.h67
-rw-r--r--src/plugins/platforms/fontdatabases/fontconfig/fontconfig.pri12
-rw-r--r--src/plugins/platforms/fontdatabases/fontconfig/qfontconfigdatabase.cpp572
-rw-r--r--src/plugins/platforms/fontdatabases/fontconfig/qfontconfigdatabase.h56
-rw-r--r--src/plugins/platforms/fontdatabases/genericunix/genericunix.pri10
-rw-r--r--src/plugins/platforms/fontdatabases/genericunix/qgenericunixfontdatabase.h53
-rw-r--r--src/plugins/platforms/linuxfb/linuxfb.pro13
-rw-r--r--src/plugins/platforms/linuxfb/main.cpp72
-rw-r--r--src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp866
-rw-r--r--src/plugins/platforms/linuxfb/qlinuxfbintegration.h133
-rw-r--r--src/plugins/platforms/minimal/main.cpp73
-rw-r--r--src/plugins/platforms/minimal/minimal.pro13
-rw-r--r--src/plugins/platforms/minimal/qminimalintegration.cpp74
-rw-r--r--src/plugins/platforms/minimal/qminimalintegration.h84
-rw-r--r--src/plugins/platforms/minimal/qminimalwindowsurface.cpp86
-rw-r--r--src/plugins/platforms/minimal/qminimalwindowsurface.h67
-rw-r--r--src/plugins/platforms/openkode/main.cpp72
-rw-r--r--src/plugins/platforms/openkode/openkode.pro42
-rw-r--r--src/plugins/platforms/openkode/openkodekeytranslator.h244
-rw-r--r--src/plugins/platforms/openkode/qopenkodeeventloopintegration.cpp119
-rw-r--r--src/plugins/platforms/openkode/qopenkodeeventloopintegration.h69
-rw-r--r--src/plugins/platforms/openkode/qopenkodeintegration.cpp240
-rw-r--r--src/plugins/platforms/openkode/qopenkodeintegration.h116
-rw-r--r--src/plugins/platforms/openkode/qopenkodewindow.cpp316
-rw-r--r--src/plugins/platforms/openkode/qopenkodewindow.h89
-rw-r--r--src/plugins/platforms/openkode/resources.qrc6
-rw-r--r--src/plugins/platforms/openkode/shaders/frag.glslf49
-rw-r--r--src/plugins/platforms/openkode/shaders/vert.glslv55
-rw-r--r--src/plugins/platforms/openvglite/main.cpp71
-rw-r--r--src/plugins/platforms/openvglite/openvglite.pro12
-rw-r--r--src/plugins/platforms/openvglite/qgraphicssystem_vglite.cpp193
-rw-r--r--src/plugins/platforms/openvglite/qgraphicssystem_vglite.h93
-rw-r--r--src/plugins/platforms/openvglite/qwindowsurface_vglite.cpp131
-rw-r--r--src/plugins/platforms/openvglite/qwindowsurface_vglite.h91
-rw-r--r--src/plugins/platforms/platforms.pro4
-rw-r--r--src/plugins/platforms/qvfb/main.cpp73
-rw-r--r--src/plugins/platforms/qvfb/qvfb.pro13
-rw-r--r--src/plugins/platforms/qvfb/qvfbintegration.cpp448
-rw-r--r--src/plugins/platforms/qvfb/qvfbintegration.h100
-rw-r--r--src/plugins/platforms/qvfb/qvfbwindowsurface.cpp108
-rw-r--r--src/plugins/platforms/qvfb/qvfbwindowsurface.h80
-rw-r--r--src/plugins/platforms/testlite/main.cpp79
-rw-r--r--src/plugins/platforms/testlite/qglxintegration.cpp370
-rw-r--r--src/plugins/platforms/testlite/qglxintegration.h93
-rw-r--r--src/plugins/platforms/testlite/qtestliteintegration.cpp153
-rw-r--r--src/plugins/platforms/testlite/qtestliteintegration.h102
-rw-r--r--src/plugins/platforms/testlite/qtestlitewindow.cpp1587
-rw-r--r--src/plugins/platforms/testlite/qtestlitewindow.h157
-rw-r--r--src/plugins/platforms/testlite/qtestlitewindowsurface.cpp226
-rw-r--r--src/plugins/platforms/testlite/qtestlitewindowsurface.h88
-rw-r--r--src/plugins/platforms/testlite/testlite.pro29
-rw-r--r--src/plugins/platforms/vnc/main.cpp73
-rw-r--r--src/plugins/platforms/vnc/qvnccursor.cpp156
-rw-r--r--src/plugins/platforms/vnc/qvnccursor.h76
-rw-r--r--src/plugins/platforms/vnc/qvncintegration.cpp242
-rw-r--r--src/plugins/platforms/vnc/qvncintegration.h109
-rw-r--r--src/plugins/platforms/vnc/qvncserver.cpp1935
-rw-r--r--src/plugins/platforms/vnc/qvncserver.h533
-rw-r--r--src/plugins/platforms/vnc/vnc.pro22
-rw-r--r--src/plugins/plugins.pro6
-rw-r--r--src/plugins/s60/feedback/feedback.pro18
-rw-r--r--src/plugins/s60/feedback/qtactileFeedback.h54
-rw-r--r--src/plugins/s60/feedback/qtactileFeedback_s60.cpp83
-rw-r--r--src/plugins/s60/s60.pro4
-rw-r--r--src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pri10
-rw-r--r--src/qbase.pri12
-rw-r--r--src/qt3support/canvas/q3canvas.cpp2
-rw-r--r--src/qt3support/sql/q3sqlfieldinfo.qdoc10
-rw-r--r--src/qt3support/sql/q3sqlrecordinfo.qdoc10
-rw-r--r--src/qt3support/text/q3richtext.cpp2
-rw-r--r--src/qt3support/tools/q3asciicache.qdoc10
-rw-r--r--src/qt3support/tools/q3asciidict.qdoc10
-rw-r--r--src/qt3support/tools/q3cache.qdoc10
-rw-r--r--src/qt3support/tools/q3dict.qdoc10
-rw-r--r--src/qt3support/tools/q3intcache.qdoc10
-rw-r--r--src/qt3support/tools/q3intdict.qdoc10
-rw-r--r--src/qt3support/tools/q3memarray.qdoc10
-rw-r--r--src/qt3support/tools/q3ptrdict.qdoc10
-rw-r--r--src/qt3support/tools/q3ptrlist.qdoc10
-rw-r--r--src/qt3support/tools/q3ptrqueue.qdoc10
-rw-r--r--src/qt3support/tools/q3ptrstack.qdoc10
-rw-r--r--src/qt3support/tools/q3ptrvector.qdoc10
-rw-r--r--src/qt3support/tools/q3valuelist.qdoc10
-rw-r--r--src/qt3support/tools/q3valuestack.qdoc10
-rw-r--r--src/qt3support/tools/q3valuevector.h4
-rw-r--r--src/qt3support/tools/q3valuevector.qdoc10
-rw-r--r--src/qt_install.pri2
-rw-r--r--src/s60installs/bwins/QtCoreu.def63
-rw-r--r--src/s60installs/bwins/QtDeclarativeu.def2215
-rw-r--r--src/s60installs/bwins/QtGuiu.def72
-rw-r--r--src/s60installs/bwins/QtOpenVGu.def1
-rw-r--r--src/s60installs/eabi/QtCoreu.def49
-rw-r--r--src/s60installs/eabi/QtDeclarativeu.def2389
-rw-r--r--src/s60installs/eabi/QtGuiu.def67
-rw-r--r--src/s60installs/eabi/QtOpenVGu.def1
-rw-r--r--src/s60installs/qt.iby11
-rw-r--r--src/s60installs/qtdemoapps.iby15
-rw-r--r--src/s60installs/s60installs.pro65
-rw-r--r--src/s60main/s60main.pro2
-rw-r--r--src/script/api/qscriptengine.cpp18
-rw-r--r--src/script/api/qscriptengine.h5
-rw-r--r--src/script/api/qscriptvalue.cpp14
-rw-r--r--src/script/bridge/qscriptclassobject.cpp12
-rw-r--r--src/script/script.pro10
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent.cpp6
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolewidget.cpp8
-rw-r--r--src/scripttools/debugging/qscriptdebugoutputwidget.cpp8
-rw-r--r--src/scripttools/debugging/qscripterrorlogwidget.cpp8
-rw-r--r--src/sql/drivers/oci/qsql_oci.cpp239
-rw-r--r--src/sql/kernel/qsql.qdoc10
-rw-r--r--src/sql/kernel/qsqldriver.cpp8
-rw-r--r--src/src.pro1
-rw-r--r--src/testlib/qsignalspy.qdoc10
-rw-r--r--src/testlib/qtestcase.cpp3
-rw-r--r--src/testlib/qtestevent.qdoc10
-rw-r--r--src/testlib/testlib.pro10
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.cpp4
-rw-r--r--src/tools/uic/ui4.cpp11
-rw-r--r--src/tools/uic/ui4.h8
-rw-r--r--src/xmlpatterns/data/qabstractfloat.cpp2
-rw-r--r--src/xmlpatterns/data/qatomicvalue.cpp2
-rw-r--r--src/xmlpatterns/data/qschematime_p.h2
-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/arthur/.gitignore2
-rw-r--r--tests/arthur/baselineserver/.gitignore2
-rwxr-xr-xtests/arthur/baselineserver/bin/runserver13
-rw-r--r--tests/arthur/baselineserver/src/baselineserver.cpp519
-rw-r--r--tests/arthur/baselineserver/src/baselineserver.h128
-rw-r--r--tests/arthur/baselineserver/src/baselineserver.pro27
-rw-r--r--tests/arthur/baselineserver/src/htmlpage.cpp228
-rw-r--r--tests/arthur/baselineserver/src/htmlpage.h77
-rw-r--r--tests/arthur/baselineserver/src/main.cpp70
-rw-r--r--tests/arthur/common/baselineprotocol.cpp405
-rw-r--r--tests/arthur/common/baselineprotocol.h168
-rw-r--r--tests/arthur/common/baselineprotocol.pri10
-rw-r--r--tests/arthur/common/lookup3.cpp786
-rw-r--r--tests/arthur/common/paintcommands.cpp29
-rw-r--r--tests/arthur/common/paintcommands.h5
-rw-r--r--tests/arthur/lance/lance.pro2
-rw-r--r--tests/auto/checkxmlfiles/checkxmlfiles.pro2
-rw-r--r--tests/auto/collections/collections.pro1
-rw-r--r--tests/auto/collections/tst_collections.cpp212
-rw-r--r--tests/auto/declarative/examples/examples.pro2
-rw-r--r--tests/auto/declarative/examples/tst_examples.cpp1
-rw-r--r--tests/auto/declarative/moduleqt47/moduleqt47.pro2
-rw-r--r--tests/auto/declarative/parserstress/parserstress.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro2
-rw-r--r--tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml7
-rw-r--r--tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro2
-rw-r--r--tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro2
-rw-r--r--tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp78
-rw-r--r--tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativedebughelper/private_headers/qdeclarativedebughelper_p.h4
-rw-r--r--tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp7
-rw-r--r--tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp4
-rw-r--r--tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro2
-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/objectName.qml8
-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/qdeclarativeecmascript.pro2
-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.cpp93
-rw-r--r--tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro2
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/data/qtBug13380.qml24
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro2
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp32
-rw-r--r--tests/auto/declarative/qdeclarativefolderlistmodel/qdeclarativefolderlistmodel.pro2
-rw-r--r--tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro2
-rw-r--r--tests/auto/declarative/qdeclarativegridview/data/gridview-noCurrent.qml52
-rw-r--r--tests/auto/declarative/qdeclarativegridview/data/header.qml32
-rw-r--r--tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro2
-rw-r--r--tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp78
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/rect.pngbin0 -> 171 bytes
-rw-r--r--tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp108
-rw-r--r--tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeitem/data/keystest.qml1
-rw-r--r--tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp22
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/AliasPropertyChangeSignalsType.qml20
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/alias.10.qml8
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/alias.11.qml8
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/aliasPropertyChangeSignals.2.qml10
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/importIncorrectCase.qml5
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.errors.insensitive.txt2
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.errors.sensitive.txt1
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.qml4
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/incorrectCaseType.qml4
-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/data/invalidAlias.10.errors.txt1
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.10.qml6
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.3.errors.txt2
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.3.qml2
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.4.errors.txt2
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.8.errors.txt1
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.8.qml7
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.9.errors.txt1
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.9.qml6
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/singularProperty.2.errors.txt1
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/singularProperty.2.qml7
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/singularProperty.errors.txt1
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/singularProperty.qml6
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro2
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/noqmldir/Test.qml2
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/testtypes.h2
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp126
-rw-r--r--tests/auto/declarative/qdeclarativelayoutitem/qdeclarativelayoutitem.pro2
-rw-r--r--tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro2
-rw-r--r--tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp10
-rw-r--r--tests/auto/declarative/qdeclarativelistview/data/listview-noCurrent.qml50
-rw-r--r--tests/auto/declarative/qdeclarativelistview/data/sizelessthan1.qml26
-rw-r--r--tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro2
-rw-r--r--tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp103
-rw-r--r--tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro2
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/data/incorrectCase.qml4
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/imports/com/nokia/WrongCase/qmldir1
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/plugin.cpp83
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/pluginWrongCase.pro10
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro2
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp25
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro2
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml16
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/doubleclick.qml2
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro2
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp47
-rw-r--r--tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro2
-rw-r--r--tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro2
-rw-r--r--tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro2
-rw-r--r--tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp27
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro2
-rw-r--r--tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro2
-rw-r--r--tests/auto/declarative/qdeclarativescriptdebugging/qdeclarativescriptdebugging.pro2
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro2
-rw-r--r--tests/auto/declarative/qdeclarativespringanimation/qdeclarativespringanimation.pro2
-rw-r--r--tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro2
-rw-r--r--tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml29
-rw-r--r--tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro2
-rw-r--r--tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp13
-rw-r--r--tests/auto/declarative/qdeclarativetext/data/alignments_cb.pngbin496 -> 496 bytes
-rw-r--r--tests/auto/declarative/qdeclarativetext/data/alignments_cc.pngbin556 -> 556 bytes
-rw-r--r--tests/auto/declarative/qdeclarativetext/data/alignments_ct.pngbin533 -> 533 bytes
-rw-r--r--tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro2
-rw-r--r--tests/auto/declarative/qdeclarativetextedit/qdeclarativetextedit.pro2
-rw-r--r--tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp25
-rw-r--r--tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro2
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeview/qdeclarativeview.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeviewer/qdeclarativeviewer.pro2
-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/qdeclarativevisualdatamodel.pro2
-rw-r--r--tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp132
-rw-r--r--tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro2
-rw-r--r--tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro2
-rw-r--r--tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro2
-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.4.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.pngbin0 -> 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-X11/colorAnimation-visual.0.pngbin0 -> 622 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.pngbin0 -> 627 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.pngbin0 -> 626 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.pngbin0 -> 625 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml951
-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.0.pngbin1418 -> 0 bytes
-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 -> 1549 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.pngbin12667 -> 1140 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.pngbin12373 -> 1338 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.pngbin12150 -> 1221 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.qml2554
-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/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.pngbin0 -> 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/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.qml64
-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/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/clock.qml67
-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 -> 2388 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.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-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 -> 1640 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.pngbin0 -> 625 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml447
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.pngbin0 -> 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 -> 1706 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml130
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.pngbin4818 -> 3564 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.pngbin4089 -> 3271 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.pngbin3128 -> 2549 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.pngbin1963 -> 1574 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml480
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.pngbin736 -> 2883 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml146
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.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 -> 96247 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 -> 3481 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.pngbin0 -> 53503 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.pngbin136492 -> 118835 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml348
-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 -> 3636 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.pngbin795 -> 3611 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.pngbin803 -> 3612 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.pngbin805 -> 3612 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.pngbin805 -> 3609 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.pngbin805 -> 3147 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.qml3050
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.pngbin365 -> 3273 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.pngbin365 -> 3265 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.pngbin366 -> 3266 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.pngbin362 -> 3245 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml530
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.pngbin0 -> 5123 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.pngbin0 -> 5500 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.pngbin0 -> 8641 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.pngbin0 -> 8641 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.pngbin0 -> 6163 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.pngbin0 -> 6785 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.pngbin0 -> 6943 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.pngbin0 -> 7043 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.pngbin0 -> 7428 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.pngbin0 -> 6860 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.pngbin0 -> 8659 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.pngbin0 -> 8641 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 -> 11626 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.pngbin0 -> 11869 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.pngbin0 -> 12264 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.pngbin0 -> 12607 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.pngbin0 -> 13243 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.pngbin0 -> 13260 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.pngbin0 -> 13260 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 -> 3613 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.pngbin796 -> 4140 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.pngbin804 -> 3593 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.pngbin805 -> 3605 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.pngbin805 -> 3605 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml2966
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.pngbin0 -> 703 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.pngbin0 -> 1360 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.pngbin0 -> 2031 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml1043
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml107
-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/data/hAlign.0.pngbin1245 -> 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/qmlvisual.pro2
-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.cpp56
-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/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/exceptionsafety/exceptionsafety.pro1
-rw-r--r--tests/auto/gestures/tst_gestures.cpp4
-rw-r--r--tests/auto/guiapplauncher/guiapplauncher.pro1
-rw-r--r--tests/auto/lancelot/.gitignore1
-rw-r--r--tests/auto/lancelot/lancelot.pro15
-rw-r--r--tests/auto/lancelot/scripts/aliasing.qps156
-rw-r--r--tests/auto/lancelot/scripts/arcs.qps68
-rw-r--r--tests/auto/lancelot/scripts/arcs2.qps47
-rw-r--r--tests/auto/lancelot/scripts/background.qps136
-rw-r--r--tests/auto/lancelot/scripts/background_brush.qps5
-rw-r--r--tests/auto/lancelot/scripts/beziers.qps147
-rw-r--r--tests/auto/lancelot/scripts/bitmaps.qps166
-rw-r--r--tests/auto/lancelot/scripts/borderimage.qps120
-rw-r--r--tests/auto/lancelot/scripts/brush_pens.qps104
-rw-r--r--tests/auto/lancelot/scripts/brushes.qps79
-rw-r--r--tests/auto/lancelot/scripts/clippaths.qps60
-rw-r--r--tests/auto/lancelot/scripts/clipping.qps182
-rw-r--r--tests/auto/lancelot/scripts/clipping_state.qps47
-rw-r--r--tests/auto/lancelot/scripts/cliprects.qps59
-rw-r--r--tests/auto/lancelot/scripts/conical_gradients.qps85
-rw-r--r--tests/auto/lancelot/scripts/conical_gradients_perspectives.qps64
-rw-r--r--tests/auto/lancelot/scripts/dashes.qps268
-rw-r--r--tests/auto/lancelot/scripts/degeneratebeziers.qps10
-rw-r--r--tests/auto/lancelot/scripts/deviceclipping.qps48
-rw-r--r--tests/auto/lancelot/scripts/drawpoints.qps101
-rw-r--r--tests/auto/lancelot/scripts/ellipses.qps86
-rw-r--r--tests/auto/lancelot/scripts/filltest.qps413
-rw-r--r--tests/auto/lancelot/scripts/gradients.qps44
-rw-r--r--tests/auto/lancelot/scripts/image_formats.qps81
-rw-r--r--tests/auto/lancelot/scripts/images.qps106
-rw-r--r--tests/auto/lancelot/scripts/images2.qps145
-rw-r--r--tests/auto/lancelot/scripts/join_cap_styles.qps63
-rw-r--r--tests/auto/lancelot/scripts/join_cap_styles_duplicate_control_points.qps68
-rw-r--r--tests/auto/lancelot/scripts/linear_gradients.qps144
-rw-r--r--tests/auto/lancelot/scripts/linear_gradients_perspectives.qps62
-rw-r--r--tests/auto/lancelot/scripts/linear_resolving_gradients.qps66
-rw-r--r--tests/auto/lancelot/scripts/lineconsistency.qps72
-rw-r--r--tests/auto/lancelot/scripts/linedashes.qps94
-rw-r--r--tests/auto/lancelot/scripts/linedashes2.qps154
-rw-r--r--tests/auto/lancelot/scripts/linedashes2_aa.qps5
-rw-r--r--tests/auto/lancelot/scripts/lines.qps558
-rw-r--r--tests/auto/lancelot/scripts/lines2.qps179
-rw-r--r--tests/auto/lancelot/scripts/pathfill.qps38
-rw-r--r--tests/auto/lancelot/scripts/paths.qps34
-rw-r--r--tests/auto/lancelot/scripts/paths_aa.qps4
-rw-r--r--tests/auto/lancelot/scripts/pens.qps133
-rw-r--r--tests/auto/lancelot/scripts/pens_aa.qps6
-rw-r--r--tests/auto/lancelot/scripts/pens_cosmetic.qps110
-rw-r--r--tests/auto/lancelot/scripts/perspectives.qps72
-rw-r--r--tests/auto/lancelot/scripts/perspectives2.qps309
-rw-r--r--tests/auto/lancelot/scripts/pixmap_rotation.qps30
-rw-r--r--tests/auto/lancelot/scripts/pixmap_scaling.qps224
-rw-r--r--tests/auto/lancelot/scripts/pixmap_subpixel.qps117
-rw-r--r--tests/auto/lancelot/scripts/pixmaps.qps106
-rw-r--r--tests/auto/lancelot/scripts/porter_duff.qps251
-rw-r--r--tests/auto/lancelot/scripts/porter_duff2.qps261
-rw-r--r--tests/auto/lancelot/scripts/primitives.qps184
-rw-r--r--tests/auto/lancelot/scripts/radial_gradients.qps99
-rw-r--r--tests/auto/lancelot/scripts/radial_gradients_perspectives.qps62
-rw-r--r--tests/auto/lancelot/scripts/rasterops.qps87
-rw-r--r--tests/auto/lancelot/scripts/sizes.qps150
-rw-r--r--tests/auto/lancelot/scripts/text.qps124
-rw-r--r--tests/auto/lancelot/scripts/text_perspectives.qps102
-rw-r--r--tests/auto/lancelot/scripts/tiled_pixmap.qps84
-rw-r--r--tests/auto/lancelot/tst_lancelot.cpp301
-rwxr-xr-xtests/auto/mediaobject/mediaobject.pro2
-rw-r--r--tests/auto/mediaobject/tst_mediaobject.cpp2
-rw-r--r--tests/auto/moc/moc.pro2
-rw-r--r--tests/auto/modeltest/dynamictreemodel.cpp7
-rw-r--r--tests/auto/networkselftest/networkselftest.pro4
-rw-r--r--tests/auto/other.pro1
-rw-r--r--tests/auto/patternistexamples/patternistexamples.pro12
-rw-r--r--tests/auto/platformquirks.h122
-rw-r--r--tests/auto/q_func_info/q_func_info.pro1
-rw-r--r--tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp6
-rw-r--r--tests/auto/qabstractnetworkcache/qabstractnetworkcache.pro2
-rw-r--r--tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp5
-rw-r--r--tests/auto/qabstractslider/tst_qabstractslider.cpp17
-rw-r--r--tests/auto/qabstractxmlnodemodel/qabstractxmlnodemodel.pro2
-rw-r--r--tests/auto/qaccessibility/qaccessibility.pro2
-rw-r--r--tests/auto/qaccessibility/tst_qaccessibility.cpp8
-rw-r--r--tests/auto/qaction/tst_qaction.cpp2
-rw-r--r--tests/auto/qalgorithms/tst_qalgorithms.cpp23
-rw-r--r--tests/auto/qanimationgroup/qanimationgroup.pro1
-rw-r--r--tests/auto/qapplication/test/test.pro10
-rw-r--r--tests/auto/qatomicint/qatomicint.pro1
-rw-r--r--tests/auto/qatomicpointer/qatomicpointer.pro1
-rw-r--r--tests/auto/qaudioinput/qaudioinput.pro2
-rw-r--r--tests/auto/qaudiooutput/qaudiooutput.pro2
-rw-r--r--tests/auto/qbitarray/qbitarray.pro1
-rw-r--r--tests/auto/qbitarray/tst_qbitarray.cpp9
-rw-r--r--tests/auto/qboxlayout/tst_qboxlayout.cpp5
-rw-r--r--tests/auto/qbrush/tst_qbrush.cpp9
-rw-r--r--tests/auto/qbuffer/qbuffer.pro1
-rw-r--r--tests/auto/qbuttongroup/tst_qbuttongroup.cpp9
-rw-r--r--tests/auto/qbytearray/qbytearray.pro3
-rw-r--r--tests/auto/qbytearray/tst_qbytearray.cpp9
-rw-r--r--tests/auto/qbytearraymatcher/qbytearraymatcher.pro1
-rw-r--r--tests/auto/qcache/qcache.pro1
-rw-r--r--tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp5
-rw-r--r--tests/auto/qchar/qchar.pro3
-rw-r--r--tests/auto/qclipboard/test/test.pro14
-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/qcomplextext/tst_qcomplextext.cpp39
-rw-r--r--tests/auto/qcontiguouscache/qcontiguouscache.pro1
-rw-r--r--tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp13
-rw-r--r--tests/auto/qcoreapplication/qcoreapplication.pro1
-rw-r--r--tests/auto/qcryptographichash/qcryptographichash.pro1
-rw-r--r--tests/auto/qcssparser/qcssparser.pro4
-rw-r--r--tests/auto/qdatastream/qdatastream.pro4
-rw-r--r--tests/auto/qdate/qdate.pro1
-rw-r--r--tests/auto/qdatetime/qdatetime.pro1
-rw-r--r--tests/auto/qdebug/qdebug.pro1
-rw-r--r--tests/auto/qdesktopservices/qdesktopservices.pro12
-rw-r--r--tests/auto/qdir/qdir.pro2
-rw-r--r--tests/auto/qdiriterator/qdiriterator.pro1
-rw-r--r--tests/auto/qdirmodel/qdirmodel.pro6
-rw-r--r--tests/auto/qdom/qdom.pro2
-rw-r--r--tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp12
-rw-r--r--tests/auto/qeasingcurve/qeasingcurve.pro1
-rw-r--r--tests/auto/qelapsedtimer/qelapsedtimer.pro1
-rw-r--r--tests/auto/qevent/qevent.pro1
-rw-r--r--tests/auto/qeventloop/tst_qeventloop.cpp2
-rw-r--r--tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro1
-rw-r--r--tests/auto/qfile/test/test.pro4
-rw-r--r--tests/auto/qfiledialog/qfiledialog.pro4
-rw-r--r--tests/auto/qfiledialog2/qfiledialog2.pro4
-rw-r--r--tests/auto/qfileinfo/qfileinfo.pro4
-rw-r--r--tests/auto/qfileinfo/tst_qfileinfo.cpp8
-rw-r--r--tests/auto/qfilesystemmodel/qfilesystemmodel.pro2
-rw-r--r--tests/auto/qflags/qflags.pro1
-rw-r--r--tests/auto/qfontdatabase/qfontdatabase.pro2
-rw-r--r--tests/auto/qftp/qftp.pro4
-rw-r--r--tests/auto/qfuture/qfuture.pro1
-rw-r--r--tests/auto/qfuturewatcher/qfuturewatcher.pro1
-rw-r--r--tests/auto/qgetputenv/qgetputenv.pro1
-rw-r--r--tests/auto/qgl/tst_qgl.cpp122
-rw-r--r--tests/auto/qglobal/qglobal.pro1
-rw-r--r--tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp6
-rw-r--r--tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp250
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp100
-rw-r--r--tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp65
-rw-r--r--tests/auto/qgraphicsscene/qgraphicsscene.pro4
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp12
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp203
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp15
-rw-r--r--tests/auto/qgridlayout/tst_qgridlayout.cpp17
-rw-r--r--tests/auto/qhash/qhash.pro1
-rw-r--r--tests/auto/qhash/tst_qhash.cpp11
-rw-r--r--tests/auto/qheaderview/tst_qheaderview.cpp29
-rw-r--r--tests/auto/qhelpcontentmodel/qhelpcontentmodel.pro4
-rw-r--r--tests/auto/qhelpenginecore/qhelpenginecore.pro4
-rw-r--r--tests/auto/qhttp/qhttp.pro12
-rw-r--r--tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp54
-rw-r--r--tests/auto/qicoimageformat/qicoimageformat.pro10
-rw-r--r--tests/auto/qicon/qicon.pro12
-rw-r--r--tests/auto/qicon/tst_qicon.cpp16
-rw-r--r--tests/auto/qimage/qimage.pro6
-rw-r--r--tests/auto/qimage/tst_qimage.cpp15
-rw-r--r--tests/auto/qimagereader/qimagereader.pro8
-rw-r--r--tests/auto/qimagereader/tst_qimagereader.cpp98
-rw-r--r--tests/auto/qimagewriter/qimagewriter.pro6
-rw-r--r--tests/auto/qinputcontext/tst_qinputcontext.cpp4
-rw-r--r--tests/auto/qinputdialog/tst_qinputdialog.cpp28
-rw-r--r--tests/auto/qiodevice/qiodevice.pro4
-rw-r--r--tests/auto/qitemmodel/qitemmodel.pro4
-rw-r--r--tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp66
-rw-r--r--tests/auto/qkeysequence/tst_qkeysequence.cpp10
-rw-r--r--tests/auto/qlabel/qlabel.pro2
-rw-r--r--tests/auto/qlayout/qlayout.pro2
-rw-r--r--tests/auto/qlayout/tst_qlayout.cpp5
-rw-r--r--tests/auto/qlibrary/qlibrary.pro1
-rw-r--r--tests/auto/qlibrary/tst/tst.pro6
-rw-r--r--tests/auto/qline/qline.pro1
-rw-r--r--tests/auto/qlist/tst_qlist.cpp7
-rw-r--r--tests/auto/qlistview/tst_qlistview.cpp35
-rw-r--r--tests/auto/qlistwidget/tst_qlistwidget.cpp53
-rw-r--r--tests/auto/qlocale/test/test.pro2
-rw-r--r--tests/auto/qlocalsocket/test/test.pro6
-rw-r--r--tests/auto/qmainwindow/tst_qmainwindow.cpp10
-rw-r--r--tests/auto/qmap/qmap.pro1
-rw-r--r--tests/auto/qmap/tst_qmap.cpp12
-rw-r--r--tests/auto/qmargins/qmargins.pro1
-rw-r--r--tests/auto/qmath/qmath.pro1
-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/qmetatype/qmetatype.pro1
-rw-r--r--tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp4
-rw-r--r--tests/auto/qmovie/qmovie.pro6
-rw-r--r--tests/auto/qmutex/qmutex.pro1
-rw-r--r--tests/auto/qmutexlocker/qmutexlocker.pro1
-rw-r--r--tests/auto/qnetworkreply/test/test.pro6
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp623
-rw-r--r--tests/auto/qnumeric/qnumeric.pro1
-rw-r--r--tests/auto/qobject/qobject.pro1
-rw-r--r--tests/auto/qobject/tst_qobject.cpp78
-rw-r--r--tests/auto/qobject/tst_qobject.pro4
-rw-r--r--tests/auto/qobjectrace/qobjectrace.pro1
-rw-r--r--tests/auto/qpainter/qpainter.pro2
-rw-r--r--tests/auto/qpainter/tst_qpainter.cpp84
-rw-r--r--tests/auto/qpainterpath/tst_qpainterpath.cpp13
-rw-r--r--tests/auto/qpathclipper/tst_qpathclipper.cpp3
-rw-r--r--tests/auto/qpauseanimation/tst_qpauseanimation.cpp5
-rw-r--r--tests/auto/qpen/tst_qpen.cpp9
-rw-r--r--tests/auto/qpicture/tst_qpicture.cpp13
-rw-r--r--tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha_animated.gifbin0 -> 4075 bytes
-rw-r--r--tests/auto/qpixmap/qpixmap.pro8
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp94
-rw-r--r--tests/auto/qpixmapfilter/qpixmapfilter.pro2
-rw-r--r--tests/auto/qplaintextedit/tst_qplaintextedit.cpp1
-rw-r--r--tests/auto/qplugin/qplugin.pro1
-rw-r--r--tests/auto/qplugin/tst_qplugin.pro4
-rw-r--r--tests/auto/qpluginloader/qpluginloader.pro1
-rw-r--r--tests/auto/qpluginloader/tst/tst.pro6
-rw-r--r--tests/auto/qpoint/qpoint.pro1
-rw-r--r--tests/auto/qpolygon/tst_qpolygon.cpp10
-rw-r--r--tests/auto/qprinter/tst_qprinter.cpp12
-rw-r--r--tests/auto/qprocess/test/test.pro40
-rw-r--r--tests/auto/qprocessenvironment/qprocessenvironment.pro1
-rw-r--r--tests/auto/qqueue/qqueue.pro1
-rw-r--r--tests/auto/qrand/qrand.pro1
-rw-r--r--tests/auto/qreadlocker/qreadlocker.pro1
-rw-r--r--tests/auto/qreadwritelock/qreadwritelock.pro1
-rw-r--r--tests/auto/qrect/qrect.pro1
-rw-r--r--tests/auto/qregexp/qregexp.pro1
-rw-r--r--tests/auto/qregexp/tst_qregexp.cpp9
-rw-r--r--tests/auto/qregion/tst_qregion.cpp10
-rw-r--r--tests/auto/qresourceengine/qresourceengine.pro19
-rw-r--r--tests/auto/qringbuffer/qringbuffer.pro1
-rw-r--r--tests/auto/qscopedpointer/qscopedpointer.pro1
-rw-r--r--tests/auto/qscriptable/tst_qscriptable.cpp4
-rw-r--r--tests/auto/qscriptclass/tst_qscriptclass.cpp61
-rw-r--r--tests/auto/qscriptcontext/tst_qscriptcontext.cpp207
-rw-r--r--tests/auto/qscriptengine/idtranslatable-unicode.js5
-rw-r--r--tests/auto/qscriptengine/qscriptengine.pro2
-rw-r--r--tests/auto/qscriptengine/qscriptengine.qrc2
-rw-r--r--tests/auto/qscriptengine/translatable-unicode.js9
-rw-r--r--tests/auto/qscriptengine/translations/idtranslatable-unicode.qmbin0 -> 209 bytes
-rw-r--r--tests/auto/qscriptengine/translations/idtranslatable-unicode.ts26
-rw-r--r--tests/auto/qscriptengine/translations/translatable-unicode.qmbin0 -> 322 bytes
-rw-r--r--tests/auto/qscriptengine/translations/translatable-unicode.ts37
-rw-r--r--tests/auto/qscriptengine/tst_qscriptengine.cpp384
-rw-r--r--tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp94
-rw-r--r--tests/auto/qscriptextensionplugin/qscriptextensionplugin.pro3
-rw-r--r--tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.cpp79
-rw-r--r--tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.pro10
-rw-r--r--tests/auto/qscriptextensionplugin/staticplugin/__init__.js6
-rw-r--r--tests/auto/qscriptextensionplugin/staticplugin/staticplugin.cpp75
-rw-r--r--tests/auto/qscriptextensionplugin/staticplugin/staticplugin.pro7
-rw-r--r--tests/auto/qscriptextensionplugin/staticplugin/staticplugin.qrc6
-rw-r--r--tests/auto/qscriptextensionplugin/test/test.pro18
-rw-r--r--tests/auto/qscriptextensionplugin/tst_qscriptextensionplugin.cpp167
-rw-r--r--tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp157
-rw-r--r--tests/auto/qscriptjstestsuite/qscriptjstestsuite.pro2
-rw-r--r--tests/auto/qscriptv8testsuite/qscriptv8testsuite.pro2
-rw-r--r--tests/auto/qscriptvalue/qscriptvalue.pro8
-rw-r--r--tests/auto/qscriptvalue/testgen/data.txt161
-rw-r--r--tests/auto/qscriptvalue/testgen/testgenerator.cpp794
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.cpp1593
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.h404
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue_generated_cast.cpp1453
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp7026
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue_generated_init.cpp198
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue_generated_isXXX.cpp830
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue_generated_toXXX.cpp1897
-rw-r--r--tests/auto/qscriptvaluegenerated/.gitignore1
-rw-r--r--tests/auto/qscriptvaluegenerated/qscriptvaluegenerated.pro18
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/data.txt167
-rwxr-xr-xtests/auto/qscriptvaluegenerated/testgen/gen.py (renamed from tests/auto/qscriptvalue/testgen/gen.py)0
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/main.cpp (renamed from tests/auto/qscriptvalue/testgen/main.cpp)0
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/testgen.pro (renamed from tests/auto/qscriptvalue/testgen/testgen.pro)0
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp795
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/testgenerator.h (renamed from tests/auto/qscriptvalue/testgen/testgenerator.h)0
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue.cpp116
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue.h370
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp1504
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp7542
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp204
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp862
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp1963
-rw-r--r--tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp21
-rw-r--r--tests/auto/qsemaphore/qsemaphore.pro1
-rw-r--r--tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro1
-rw-r--r--tests/auto/qset/qset.pro1
-rw-r--r--tests/auto/qset/tst_qset.cpp11
-rw-r--r--tests/auto/qsharedpointer/qsharedpointer.pro1
-rw-r--r--tests/auto/qsignalspy/qsignalspy.pro1
-rw-r--r--tests/auto/qsize/qsize.pro1
-rw-r--r--tests/auto/qsizef/qsizef.pro1
-rw-r--r--tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp138
-rw-r--r--tests/auto/qsound/qsound.pro2
-rw-r--r--tests/auto/qsound/tst_qsound.cpp7
-rw-r--r--tests/auto/qsplitter/qsplitter.pro2
-rw-r--r--tests/auto/qsplitter/tst_qsplitter.cpp12
-rw-r--r--tests/auto/qsql/qsql.pro2
-rw-r--r--tests/auto/qsqldatabase/qsqldatabase.pro4
-rw-r--r--tests/auto/qsqldatabase/tst_databases.h2
-rw-r--r--tests/auto/qsqldriver/qsqldriver.pro4
-rw-r--r--tests/auto/qsqlerror/qsqlerror.pro2
-rw-r--r--tests/auto/qsqlfield/qsqlfield.pro2
-rw-r--r--tests/auto/qsqlquery/qsqlquery.pro4
-rw-r--r--tests/auto/qsqlquery/tst_qsqlquery.cpp131
-rw-r--r--tests/auto/qsqlquerymodel/qsqlquerymodel.pro2
-rw-r--r--tests/auto/qsqlrecord/qsqlrecord.pro2
-rw-r--r--tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro4
-rw-r--r--tests/auto/qsqltablemodel/qsqltablemodel.pro4
-rw-r--r--tests/auto/qsqlthread/qsqlthread.pro4
-rw-r--r--tests/auto/qsslcertificate/qsslcertificate.pro5
-rw-r--r--tests/auto/qsslkey/qsslkey.pro4
-rw-r--r--tests/auto/qsslsocket/qsslsocket.pro4
-rw-r--r--tests/auto/qstate/qstate.pro1
-rw-r--r--tests/auto/qstl/qstl.pro1
-rw-r--r--tests/auto/qstring/qstring.pro1
-rw-r--r--tests/auto/qstring/tst_qstring.cpp51
-rw-r--r--tests/auto/qstringbuilder1/qstringbuilder1.pro1
-rw-r--r--tests/auto/qstringbuilder2/qstringbuilder2.pro1
-rw-r--r--tests/auto/qstringbuilder3/qstringbuilder3.pro1
-rw-r--r--tests/auto/qstringbuilder4/qstringbuilder4.pro1
-rw-r--r--tests/auto/qstringlist/qstringlist.pro1
-rw-r--r--tests/auto/qstringmatcher/qstringmatcher.pro1
-rw-r--r--tests/auto/qstringref/qstringref.pro1
-rw-r--r--tests/auto/qstyle/qstyle.pro2
-rw-r--r--tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp40
-rw-r--r--tests/auto/qsvggenerator/qsvggenerator.pro2
-rw-r--r--tests/auto/qsvgrenderer/qsvgrenderer.pro2
-rw-r--r--tests/auto/qtableview/tst_qtableview.cpp24
-rw-r--r--tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro2
-rw-r--r--tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro2
-rw-r--r--tests/auto/qtconcurrentmap/qtconcurrentmap.pro2
-rw-r--r--tests/auto/qtconcurrentrun/qtconcurrentrun.pro2
-rw-r--r--tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp38
-rw-r--r--tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro2
-rw-r--r--tests/auto/qtcpserver/test/test.pro4
-rw-r--r--tests/auto/qtemporaryfile/qtemporaryfile.pro2
-rw-r--r--tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro3
-rw-r--r--tests/auto/qtextbrowser/qtextbrowser.pro4
-rw-r--r--tests/auto/qtextcodec/test/test.pro2
-rw-r--r--tests/auto/qtextdocument/tst_qtextdocument.cpp1
-rw-r--r--tests/auto/qtextedit/qtextedit.pro2
-rw-r--r--tests/auto/qtextedit/tst_qtextedit.cpp11
-rw-r--r--tests/auto/qtextstream/test/test.pro6
-rw-r--r--tests/auto/qthread/qthread.pro1
-rw-r--r--tests/auto/qthread/tst_qthread.cpp14
-rw-r--r--tests/auto/qthreadonce/qthreadonce.pro1
-rw-r--r--tests/auto/qthreadpool/qthreadpool.pro1
-rw-r--r--tests/auto/qthreadstorage/qthreadstorage.pro1
-rw-r--r--tests/auto/qtime/qtime.pro1
-rw-r--r--tests/auto/qtimeline/qtimeline.pro1
-rw-r--r--tests/auto/qtimer/qtimer.pro1
-rw-r--r--tests/auto/qtipc/qsharedmemory/test/test.pro6
-rw-r--r--tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp33
-rw-r--r--tests/auto/qtipc/qsystemsemaphore/qsystemsemaphore.pro4
-rw-r--r--tests/auto/qtmd5/qtmd5.pro1
-rw-r--r--tests/auto/qtokenautomaton/qtokenautomaton.pro1
-rw-r--r--tests/auto/qtranslator/qtranslator.pro2
-rw-r--r--tests/auto/qtreeview/tst_qtreeview.cpp23
-rw-r--r--tests/auto/qtreewidget/tst_qtreewidget.cpp6
-rw-r--r--tests/auto/qudpsocket/test/test.pro2
-rw-r--r--tests/auto/qurl/qurl.pro1
-rw-r--r--tests/auto/qurl/tst_qurl.cpp9
-rw-r--r--tests/auto/quuid/quuid.pro1
-rw-r--r--tests/auto/quuid/test/test.pro4
-rw-r--r--tests/auto/qvariant/tst_qvariant.cpp11
-rw-r--r--tests/auto/qvarlengtharray/qvarlengtharray.pro1
-rw-r--r--tests/auto/qvector/qvector.pro1
-rw-r--r--tests/auto/qvector/tst_qvector.cpp12
-rw-r--r--tests/auto/qwaitcondition/qwaitcondition.pro1
-rw-r--r--tests/auto/qwaitcondition/tst_qwaitcondition.cpp2
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp62
-rw-r--r--tests/auto/qwineventnotifier/qwineventnotifier.pro1
-rw-r--r--tests/auto/qwritelocker/qwritelocker.pro1
-rw-r--r--tests/auto/qxml/qxml.pro2
-rw-r--r--tests/auto/qxmlformatter/qxmlformatter.pro2
-rw-r--r--tests/auto/qxmlquery/qxmlquery.pro4
-rw-r--r--tests/auto/qxmlquery/tst_qxmlquery.cpp29
-rw-r--r--tests/auto/qxmlsimplereader/qxmlsimplereader.pro2
-rw-r--r--tests/auto/qxmlstream/qxmlstream.pro2
-rw-r--r--tests/auto/qzip/qzip.pro2
-rw-r--r--tests/auto/script.pro2
-rw-r--r--tests/auto/selftests/selftests.pro1
-rw-r--r--tests/auto/symbols/tst_symbols.cpp2
-rw-r--r--tests/auto/uic/baseline/gridalignment.ui49
-rw-r--r--tests/auto/uic/baseline/gridalignment.ui.h83
-rw-r--r--tests/auto/uiloader/uiloader/uiloader.pro4
-rw-r--r--tests/auto/utf8/utf8.pro1
-rw-r--r--tests/auto/windowsmobile/test/test.pro2
-rw-r--r--tests/auto/xmlpatterns.pri4
-rw-r--r--tests/auto/xmlpatternsdiagnosticsts/xmlpatternsdiagnosticsts.pro2
-rw-r--r--tests/auto/xmlpatternsview/xmlpatternsview.pro2
-rw-r--r--tests/auto/xmlpatternsxslts/xmlpatternsxslts.pro2
-rw-r--r--tests/benchmarks/benchmarks.pro3
-rw-r--r--tests/benchmarks/corelib/codecs/qtextcodec/qtextcodec.pro2
-rw-r--r--tests/benchmarks/corelib/corelib.pro10
-rwxr-xr-xtests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro2
-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/corelib/tools/qstring/main.cpp2
-rw-r--r--tests/benchmarks/corelib/tools/qstring/qstring.pro2
-rw-r--r--tests/benchmarks/declarative/binding/binding.pro2
-rw-r--r--tests/benchmarks/declarative/compilation/compilation.pro2
-rw-r--r--tests/benchmarks/declarative/creation/creation.pro2
-rw-r--r--tests/benchmarks/declarative/creation/tst_creation.cpp4
-rw-r--r--tests/benchmarks/declarative/declarative.pro2
-rw-r--r--tests/benchmarks/declarative/qdeclarativecomponent/qdeclarativecomponent.pro2
-rw-r--r--tests/benchmarks/declarative/qdeclarativeimage/qdeclarativeimage.pro2
-rw-r--r--tests/benchmarks/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro2
-rw-r--r--tests/benchmarks/declarative/qmltime/qmltime.cpp65
-rw-r--r--tests/benchmarks/declarative/qmltime/qmltime.pro2
-rw-r--r--tests/benchmarks/declarative/script/script.pro2
-rw-r--r--tests/benchmarks/declarative/typeimports/typeimports.pro2
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro2
-rw-r--r--tests/benchmarks/gui/gui.pro7
-rw-r--r--tests/benchmarks/gui/image/qimagereader/qimagereader.pro6
-rw-r--r--tests/benchmarks/gui/text/qtext/qtext.pro2
-rw-r--r--tests/benchmarks/network/network.pro7
-rw-r--r--tests/benchmarks/opengl/opengl.pro2
-rw-r--r--tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp314
-rw-r--r--tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp28
-rw-r--r--tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp862
-rw-r--r--tests/benchmarks/script/script.pro11
-rw-r--r--tests/benchmarks/script/sunspider/sunspider.pro20
-rw-r--r--tests/benchmarks/script/sunspider/tests/3d-cube.js337
-rw-r--r--tests/benchmarks/script/sunspider/tests/3d-morph.js54
-rw-r--r--tests/benchmarks/script/sunspider/tests/3d-raytrace.js441
-rw-r--r--tests/benchmarks/script/sunspider/tests/VERSION1
-rw-r--r--tests/benchmarks/script/sunspider/tests/access-binary-trees.js50
-rw-r--r--tests/benchmarks/script/sunspider/tests/access-fannkuch.js66
-rw-r--r--tests/benchmarks/script/sunspider/tests/access-nbody.js169
-rw-r--r--tests/benchmarks/script/sunspider/tests/access-nsieve.js38
-rw-r--r--tests/benchmarks/script/sunspider/tests/bitops-3bit-bits-in-byte.js32
-rw-r--r--tests/benchmarks/script/sunspider/tests/bitops-bits-in-byte.js21
-rw-r--r--tests/benchmarks/script/sunspider/tests/bitops-bitwise-and.js28
-rw-r--r--tests/benchmarks/script/sunspider/tests/bitops-nsieve-bits.js32
-rw-r--r--tests/benchmarks/script/sunspider/tests/controlflow-recursive.js25
-rw-r--r--tests/benchmarks/script/sunspider/tests/crypto-aes.js422
-rw-r--r--tests/benchmarks/script/sunspider/tests/crypto-md5.js286
-rw-r--r--tests/benchmarks/script/sunspider/tests/crypto-sha1.js224
-rw-r--r--tests/benchmarks/script/sunspider/tests/date-format-tofte.js299
-rw-r--r--tests/benchmarks/script/sunspider/tests/date-format-xparb.js417
-rw-r--r--tests/benchmarks/script/sunspider/tests/math-cordic.js95
-rw-r--r--tests/benchmarks/script/sunspider/tests/math-partial-sums.js33
-rw-r--r--tests/benchmarks/script/sunspider/tests/math-spectral-norm.js51
-rw-r--r--tests/benchmarks/script/sunspider/tests/regexp-dna.js1712
-rw-r--r--tests/benchmarks/script/sunspider/tests/string-base64.js135
-rw-r--r--tests/benchmarks/script/sunspider/tests/string-fasta.js85
-rw-r--r--tests/benchmarks/script/sunspider/tests/string-tagcloud.js265
-rw-r--r--tests/benchmarks/script/sunspider/tests/string-unpack-code.js68
-rw-r--r--tests/benchmarks/script/sunspider/tests/string-validate-input.js89
-rw-r--r--tests/benchmarks/script/sunspider/tst_sunspider.cpp129
-rw-r--r--tests/benchmarks/script/v8/tests/README.txt79
-rw-r--r--tests/benchmarks/script/v8/tests/base.js284
-rw-r--r--tests/benchmarks/script/v8/tests/crypto.js1698
-rw-r--r--tests/benchmarks/script/v8/tests/deltablue.js880
-rw-r--r--tests/benchmarks/script/v8/tests/earley-boyer.js4684
-rw-r--r--tests/benchmarks/script/v8/tests/raytrace.js904
-rw-r--r--tests/benchmarks/script/v8/tests/regexp.js1764
-rw-r--r--tests/benchmarks/script/v8/tests/richards.js539
-rw-r--r--tests/benchmarks/script/v8/tests/splay.js394
-rw-r--r--tests/benchmarks/script/v8/tst_v8.cpp142
-rw-r--r--tests/benchmarks/script/v8/v8.pro20
-rw-r--r--tests/benchmarks/svg/svg.pro2
-rw-r--r--tests/benchmarks/trusted-benchmarks.pri8
-rw-r--r--tests/manual/bearerex/datatransferer.cpp2
-rw-r--r--tests/manual/mkspecs/.gitignore2
-rwxr-xr-xtests/manual/mkspecs/test.sh64
-rw-r--r--tests/manual/qtouchevent/qtouchevent.pro (renamed from tests/manual/qtouchevent/multitouch.pro)0
-rw-r--r--tests/manual/textrendering/glyphshaping/glyphshaping.pro2
-rw-r--r--tools/assistant/lib/qhelpgenerator.cpp13
-rw-r--r--tools/assistant/tools/assistant/doc/assistant.qdoc10
-rw-r--r--tools/assistant/tools/assistant/openpagesmanager.cpp3
-rw-r--r--tools/configure/configureapp.cpp5
-rw-r--r--tools/designer/data/ui4.xsd1
-rw-r--r--tools/designer/src/components/formeditor/formwindow.cpp17
-rw-r--r--tools/designer/src/lib/sdk/abstractdnditem.qdoc10
-rw-r--r--tools/designer/src/lib/sdk/abstracticoncache.qdoc10
-rw-r--r--tools/designer/src/lib/sdk/dynamicpropertysheet.qdoc10
-rw-r--r--tools/designer/src/lib/sdk/layoutdecoration.qdoc10
-rw-r--r--tools/designer/src/lib/sdk/membersheet.qdoc10
-rw-r--r--tools/designer/src/lib/sdk/propertysheet.qdoc10
-rw-r--r--tools/designer/src/lib/sdk/taskmenu.qdoc10
-rw-r--r--tools/designer/src/lib/shared/morphmenu.cpp2
-rw-r--r--tools/designer/src/lib/shared/qdesigner_command2.cpp62
-rw-r--r--tools/designer/src/lib/shared/qdesigner_command2_p.h22
-rw-r--r--tools/designer/src/lib/shared/qdesigner_taskmenu.cpp139
-rw-r--r--tools/designer/src/lib/shared/qdesigner_taskmenu_p.h1
-rw-r--r--tools/designer/src/lib/shared/qlayout_widget.cpp14
-rw-r--r--tools/designer/src/lib/shared/qtresourcemodel.cpp6
-rw-r--r--tools/designer/src/lib/uilib/abstractformbuilder.cpp82
-rw-r--r--tools/designer/src/lib/uilib/container.qdoc10
-rw-r--r--tools/designer/src/lib/uilib/customwidget.qdoc10
-rw-r--r--tools/designer/src/lib/uilib/ui4.cpp11
-rw-r--r--tools/designer/src/lib/uilib/ui4_p.h8
-rw-r--r--tools/linguist/linguist/mainwindow.cpp4
-rw-r--r--tools/linguist/linguist/printout.cpp2
-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/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp4
-rw-r--r--tools/qdoc3/ditaxmlgenerator.cpp4
-rw-r--r--tools/qdoc3/doc/qdoc-manual.qdoc10
-rw-r--r--tools/qdoc3/doc/qdoc-manual.qdocconf253
-rw-r--r--tools/qdoc3/helpprojectwriter.cpp16
-rw-r--r--tools/qdoc3/htmlgenerator.cpp151
-rw-r--r--tools/qdoc3/htmlgenerator.h2
-rw-r--r--tools/qdoc3/pagegenerator.cpp4
-rw-r--r--tools/qdoc3/qdoc3.pro4
-rw-r--r--tools/qdoc3/test/qt-build-docs.qdocconf8
-rw-r--r--tools/qdoc3/test/qt-cpp-ignore.qdocconf5
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf34
-rw-r--r--tools/qdoc3/test/qt.qdocconf5
-rw-r--r--tools/qdoc3/tokenizer.h2
-rw-r--r--tools/qdoc3/tree.cpp71
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync.cpp79
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync.h101
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync_p.h60
-rw-r--r--tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h2
-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/qml/main.cpp3
-rw-r--r--tools/qml/qdeclarativetester.cpp46
-rw-r--r--tools/qml/qdeclarativetester.h1
-rw-r--r--tools/qml/qmlruntime.cpp3
-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/deployment.cpp10
-rw-r--r--tools/qtestlib/wince/cetest/main.cpp2
-rw-r--r--tools/qvfb/qvfb.cpp2
-rw-r--r--tools/runonphone/serenum_unix.cpp35
-rw-r--r--tools/runonphone/symbianutils/tcftrkdevice.h2
-rw-r--r--tools/runonphone/symbianutils/tcftrkmessage.h2
-rw-r--r--tools/tools.pro2
-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/qlalr/doc/src/qlalr.qdoc10
-rw-r--r--util/s60pixelmetrics/pm_mapperapp.cpp20
3245 files changed, 159533 insertions, 94301 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..af521975b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,6 +51,7 @@ Makefile*
*.prl
*.app
*.pro.user
+*.qmlproject.user
*.gcov
bin/Qt*.dll
bin/assistant*
diff --git a/bin/createpackage.pl b/bin/createpackage.pl
index 41ba2e37f0..522d1fbc82 100755
--- a/bin/createpackage.pl
+++ b/bin/createpackage.pl
@@ -140,7 +140,12 @@ unless (GetOptions('i|install' => \$install,
}
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,11 +333,11 @@ 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
@@ -346,7 +351,7 @@ if($stub) {
# 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/elf2e32_qtwrapper b/bin/elf2e32_qtwrapper
index 694d54a34c..a3a4065f30 100755
--- a/bin/elf2e32_qtwrapper
+++ b/bin/elf2e32_qtwrapper
@@ -1,145 +1,3 @@
-#!/usr/bin/perl -w
-
-# A script to get around some shortcomings in elf2e32, namely:
-# - Returning 0 even when there are errors.
-# - Excluding symbols from the dso file even when they are present in the ELF file.
-# - Including symbols in the the dso file even when they are not present in the ELF file.
-# - Overwriting the old dso file even when there are no changes (increases build time).
-
-use File::Copy;
-
-my @args = ();
-my @definput;
-my @defoutput;
-my @dso;
-my @tmpdso;
-foreach (@ARGV) {
- if (/^--definput/o) {
- @definput = split('=', $_);
- } elsif (/^--defoutput/o) {
- @defoutput = split('=', $_);
- } elsif (/^--dso/o) {
- @dso = split('=', $_);
- } elsif (/^--tmpdso/o) {
- @tmpdso = split('=', $_);
- $tmpdso[0] = "--dso";
- } else {
- push(@args, $_);
- }
-}
-
-@definput = () if (!@definput || ! -e $definput[1]);
-
-if (@dso && !@tmpdso || !@dso && @tmpdso) {
- print("--dso and --tmpdso must be used together.\n");
- exit 1;
-}
-
-my $buildingLibrary = (@defoutput && @dso) ? 1 : 0;
-
-my $fixupFile = "";
-my $runCount = 0;
-my $returnCode = 0;
-
-while (1) {
- if (++$runCount > 2) {
- print("Internal error in $0, link succeeded, but exports may be wrong.\n");
- last;
- }
-
- my $elf2e32Pipe;
- my $elf2e32Cmd = "elf2e32 @args"
- . " " . join("=", @definput)
- . " " . join("=", @defoutput)
- . " " . join("=", @tmpdso);
- open($elf2e32Pipe, "$elf2e32Cmd 2>&1 |") or die ("Could not run elf2e32");
-
- my %fixupSymbols;
- my $foundBrokenSymbols = 0;
- my $errors = 0;
- while (<$elf2e32Pipe>) {
- print;
- if (/Error:/io) {
- $errors = 1;
- } elsif (/symbol ([a-z0-9_]+) absent in the DEF file, but present in the ELF file/io) {
- $fixupSymbols{$1} = 1;
- $foundBrokenSymbols = 1;
- } elsif (/[0-9]+ Frozen Export\(s\) missing from the ELF file/io) {
- $foundBrokenSymbols = 1;
- }
- }
- close($elf2e32Pipe);
-
- if ($errors) {
- $returnCode = 1;
- last;
- }
-
- if ($buildingLibrary) {
- my $tmpDefFile;
- my $defFile;
- open($defFile, "< $defoutput[1]") or die("Could not open $defoutput[1]");
- open($tmpDefFile, "> $defoutput[1].tmp") or die("Could not open $defoutput[1].tmp");
- $fixupFile = "$defoutput[1].tmp";
- while (<$defFile>) {
- s/\r//;
- s/\n//;
- next if (/; NEW:/);
- if (/([a-z0-9_]+) @/i) {
- if (exists($fixupSymbols{$1})) {
- s/ ABSENT//;
- } elsif (s/; MISSING://) {
- s/$/ ABSENT/;
- }
- }
- print($tmpDefFile "$_\n");
- }
- close($defFile);
- close($tmpDefFile);
-
- $definput[1] = "$defoutput[1].tmp";
-
- if (!$foundBrokenSymbols || $errors) {
- last;
- }
-
- print("Rerunning elf2e32 due to DEF file / ELF file mismatch\n");
- } else {
- last;
- }
-};
-
-if ($fixupFile) {
- unlink($defoutput[1]);
- move($fixupFile, $defoutput[1]);
-}
-
-exit $returnCode if ($returnCode != 0);
-
-if ($buildingLibrary) {
- my $differenceFound = 0;
-
- if (-e $dso[1]) {
- my $dsoFile;
- my $tmpdsoFile;
- my $dsoBuf;
- my $tmpdsoBuf;
- open($dsoFile, "< $dso[1]") or die("Could not open $dso[1]");
- open($tmpdsoFile, "< $tmpdso[1]") or die("Could not open $tmpdso[1]");
- binmode($dsoFile);
- binmode($tmpdsoFile);
- while(read($dsoFile, $dsoBuf, 4096) && read($tmpdsoFile, $tmpdsoBuf, 4096)) {
- if ($dsoBuf ne $tmpdsoBuf) {
- $differenceFound = 1;
- }
- }
- close($tmpdsoFile);
- close($dsoFile);
- } else {
- $differenceFound = 1;
- }
-
- if ($differenceFound) {
- copy($tmpdso[1], $dso[1]);
- }
-}
+#!/bin/sh
+scriptpath=`dirname $0`
+perl $scriptpath/elf2e32_qtwrapper.pl "$@"
diff --git a/bin/elf2e32_qtwrapper.bat b/bin/elf2e32_qtwrapper.bat
new file mode 100644
index 0000000000..52910df007
--- /dev/null
+++ b/bin/elf2e32_qtwrapper.bat
@@ -0,0 +1,3 @@
+@echo off
+set scriptpath=%~dp0
+perl %scriptpath%elf2e32_qtwrapper.pl %*
diff --git a/bin/elf2e32_qtwrapper.pl b/bin/elf2e32_qtwrapper.pl
new file mode 100755
index 0000000000..4eeb09809b
--- /dev/null
+++ b/bin/elf2e32_qtwrapper.pl
@@ -0,0 +1,225 @@
+#!/usr/bin/perl -w
+
+# A script to get around some shortcomings in elf2e32, namely:
+# - Returning 0 even when there are errors.
+# - Excluding symbols from the dso file even when they are present in the ELF file.
+# - Including symbols in the the dso file even when they are not present in the ELF file.
+# - Overwriting the old dso file even when there are no changes (increases build time).
+
+use File::Copy;
+
+my @args = ();
+my @definput;
+my @defoutput;
+my @dso;
+my @tmpdso;
+foreach (@ARGV) {
+ if (/^--definput/o) {
+ @definput = split('=', $_);
+ } elsif (/^--defoutput/o) {
+ @defoutput = split('=', $_);
+ } elsif (/^--dso/o) {
+ @dso = split('=', $_);
+ } elsif (/^--tmpdso/o) {
+ @tmpdso = split('=', $_);
+ $tmpdso[0] = "--dso";
+ } else {
+ push(@args, $_);
+ }
+}
+
+@definput = () if (!@definput || ! -e $definput[1]);
+
+if (@dso && !@tmpdso || !@dso && @tmpdso) {
+ print("--dso and --tmpdso must be used together.\n");
+ exit 1;
+}
+
+my $buildingLibrary = (@defoutput && @dso) ? 1 : 0;
+
+my $fixupFile = "";
+my $runCount = 0;
+my $returnCode = 0;
+
+while (1) {
+ if (++$runCount > 2) {
+ print("Internal error in $0, link succeeded, but exports may be wrong.\n");
+ last;
+ }
+
+ my $elf2e32Pipe;
+ my $elf2e32Cmd = "elf2e32 @args"
+ . " " . join("=", @definput)
+ . " " . join("=", @defoutput)
+ . " " . join("=", @tmpdso);
+ open($elf2e32Pipe, "$elf2e32Cmd 2>&1 |") or die ("Could not run elf2e32");
+
+ my %fixupSymbols;
+ my $foundBrokenSymbols = 0;
+ my $errors = 0;
+ while (<$elf2e32Pipe>) {
+ print;
+ if (/Error:/io) {
+ $errors = 1;
+ } elsif (/symbol ([a-z0-9_]+) absent in the DEF file, but present in the ELF file/io) {
+ $fixupSymbols{$1} = 1;
+ $foundBrokenSymbols = 1;
+ } elsif (/[0-9]+ Frozen Export\(s\) missing from the ELF file/io) {
+ $foundBrokenSymbols = 1;
+ }
+ }
+ close($elf2e32Pipe);
+
+ if ($errors) {
+ $returnCode = 1;
+ last;
+ }
+
+ if ($buildingLibrary && $runCount == 1) {
+ my $tmpDefFile;
+ my $newDefFile;
+ my $origDefFile;
+ my $savedNewDefFileLine = "";
+ if ($definput[1]) {
+ open($origDefFile, "< $definput[1]") or die("Could not open $definput[1]");
+ }
+ open($newDefFile, "< $defoutput[1]") or die("Could not open $defoutput[1]");
+ open($tmpDefFile, "> $defoutput[1].tmp") or die("Could not open $defoutput[1].tmp");
+ print($tmpDefFile "EXPORTS\n");
+ $fixupFile = "$defoutput[1].tmp";
+ while (1) {
+ my $origDefLine;
+ my $origSym;
+ my $origOrdinal;
+ my $origExtraData;
+ my $newDefLine;
+ my $newSym;
+ my $newOrdinal;
+ my $newExtraData;
+ my $defLine;
+ my $sym;
+ my $ordinal;
+ my $extraData;
+ if ($definput[1]) {
+ # Read from original def file, and skip non-symbol lines
+ while (1) {
+ $origDefLine = <$origDefFile>;
+ if (defined($origDefLine)) {
+ $origDefLine =~ s/[\n\r]//;
+ if ($origDefLine =~ /([a-z0-9_]+) +\@ ([0-9]+) (.*)/i) {
+ $origSym = $1;
+ $origOrdinal = $2;
+ $origExtraData = $3;
+ last;
+ }
+ } else {
+ last;
+ }
+ }
+ }
+
+ if ($savedNewDefFileLine) {
+ # This happens if the new def file was missing an entry.
+ $newDefLine = $savedNewDefFileLine;
+ $newDefLine =~ /([a-z0-9_]+) +\@ ([0-9]+) (.*)/i or die("$0: Shouldn't happen");
+ $newSym = $1;
+ $newOrdinal = $2;
+ $newExtraData = $3;
+ } else {
+ # Read from new def file, and skip non-symbol lines
+ while (1) {
+ $newDefLine = <$newDefFile>;
+ if (defined($newDefLine)) {
+ $newDefLine =~ s/[\n\r]//;
+ if ($newDefLine =~ /([a-z0-9_]+) +\@ ([0-9]+) (.*)/i) {
+ $newSym = $1;
+ $newOrdinal = $2;
+ $newExtraData = $3;
+ last;
+ }
+ } else {
+ last;
+ }
+ }
+ }
+ $savedNewDefFileLine = "";
+ last if (!defined($origDefLine) && !defined($newDefLine));
+
+ if (defined($origOrdinal) && (!defined($newOrdinal) || $origOrdinal != $newOrdinal)) {
+ # If the symbol is missing from the new def file, use the original symbol.
+ $savedNewDefFileLine = $newDefLine;
+ $defLine = $origDefLine;
+ $sym = $origSym;
+ $ordinal = $origOrdinal;
+ $extraData = $origExtraData;
+ } else {
+ $defLine = $newDefLine;
+ $sym = $newSym;
+ $ordinal = $newOrdinal;
+ if ($newExtraData =~ /ABSENT/) {
+ # Special case to keep "DATA [0-9]+" data in absent entries.
+ $extraData = $origExtraData;
+ } else {
+ $extraData = $newExtraData;
+ }
+ }
+ if (exists($fixupSymbols{$sym})) {
+ # Fix symbols that have returned after first being marked ABSENT.
+ $extraData =~ s/ ABSENT//;
+ } elsif ($defLine =~ s/; MISSING://) {
+ # Auto-absent symbols.
+ $extraData .= " ABSENT";
+ }
+ print($tmpDefFile "\t$sym \@ $ordinal $extraData\n");
+ }
+ print($tmpDefFile "\n");
+ close($origDefFile) if ($definput[1]);
+ close($newDefFile);
+ close($tmpDefFile);
+
+ $definput[1] = "$defoutput[1].tmp";
+
+ if (!$foundBrokenSymbols || $errors) {
+ last;
+ }
+
+ print("Rerunning elf2e32 due to DEF file / ELF file mismatch\n");
+ } else {
+ last;
+ }
+};
+
+if ($fixupFile) {
+ unlink($defoutput[1]);
+ move($fixupFile, $defoutput[1]);
+}
+
+exit $returnCode if ($returnCode != 0);
+
+if ($buildingLibrary) {
+ my $differenceFound = 0;
+
+ if (-e $dso[1]) {
+ my $dsoFile;
+ my $tmpdsoFile;
+ my $dsoBuf;
+ my $tmpdsoBuf;
+ open($dsoFile, "< $dso[1]") or die("Could not open $dso[1]");
+ open($tmpdsoFile, "< $tmpdso[1]") or die("Could not open $tmpdso[1]");
+ binmode($dsoFile);
+ binmode($tmpdsoFile);
+ while(read($dsoFile, $dsoBuf, 4096) && read($tmpdsoFile, $tmpdsoBuf, 4096)) {
+ if ($dsoBuf ne $tmpdsoBuf) {
+ $differenceFound = 1;
+ }
+ }
+ close($tmpdsoFile);
+ close($dsoFile);
+ } else {
+ $differenceFound = 1;
+ }
+
+ if ($differenceFound) {
+ copy($tmpdso[1], $dso[1]);
+ }
+}
diff --git a/bin/patch_capabilities.pl b/bin/patch_capabilities.pl
index 06ab116623..5230480418 100755
--- a/bin/patch_capabilities.pl
+++ b/bin/patch_capabilities.pl
@@ -269,6 +269,9 @@ if (@ARGV)
if (@capabilitiesSpecified)
{
$commandToExecute = sprintf($baseCommandToExecute, join(" ", @capabilitiesSpecified));
+ $executeNeeded = 1;
+ my $capString = join(" ", @capabilitiesSpecified);
+ print ("Patching: 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.
diff --git a/bin/syncqt b/bin/syncqt
index faa357538e..99562fb54e 100755
--- a/bin/syncqt
+++ b/bin/syncqt
@@ -694,10 +694,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", "qatomic_arm.h", "qatomic_armv7.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
@@ -799,7 +796,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/);
@@ -877,7 +879,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/mac/coreservices/coreservices.mm b/config.tests/mac/coreservices/coreservices.mm
new file mode 100644
index 0000000000..0091e492cc
--- /dev/null
+++ b/config.tests/mac/coreservices/coreservices.mm
@@ -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 config.tests 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 <CoreServices/CoreServices.h>
+
+int main()
+{
+ FSRef ref;
+ return 0;
+}
diff --git a/config.tests/mac/coreservices/coreservices.pro b/config.tests/mac/coreservices/coreservices.pro
new file mode 100644
index 0000000000..c9bf8eccd7
--- /dev/null
+++ b/config.tests/mac/coreservices/coreservices.pro
@@ -0,0 +1,3 @@
+SOURCES = coreservices.mm
+LIBS += -framework CoreServices
+CONFIG -= app_bundle qt
diff --git a/config.tests/mac/corewlan/corewlan.pro b/config.tests/mac/corewlan/corewlan.pro
index 8451af3e5b..a9c256043c 100644
--- a/config.tests/mac/corewlan/corewlan.pro
+++ b/config.tests/mac/corewlan/corewlan.pro
@@ -1,3 +1,3 @@
-SOURCES = corewlantest.mm
+OBJECTIVE_SOURCES = corewlantest.mm
LIBS += -framework CoreWLAN -framework Foundation
CONFIG -= app_bundle qt
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/config.tests/unix/opengldesktop/opengldesktop.cpp b/config.tests/unix/opengldesktop/opengldesktop.cpp
new file mode 100644
index 0000000000..969767c802
--- /dev/null
+++ b/config.tests/unix/opengldesktop/opengldesktop.cpp
@@ -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 config.tests 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 <GL/gl.h>
+
+int main(int, char **)
+{
+ glBegin(GL_TRIANGLES);
+ glVertex2f(20.0f, 10.0f);
+ glVertex2f(10.0f, 30.0f);
+ glVertex2f(20.0f, 50.0f);
+ glEnd();
+ return 0;
+}
diff --git a/config.tests/unix/opengldesktop/opengldesktop.pro b/config.tests/unix/opengldesktop/opengldesktop.pro
new file mode 100644
index 0000000000..ac70ca34ef
--- /dev/null
+++ b/config.tests/unix/opengldesktop/opengldesktop.pro
@@ -0,0 +1,9 @@
+SOURCES = opengldesktop.cpp
+INCLUDEPATH += $$QMAKE_INCDIR_OPENGL
+
+for(p, QMAKE_LIBDIR_OPENGL) {
+ exists($$p):LIBS += -L$$p
+}
+
+CONFIG -= qt
+LIBS += $$QMAKE_LIBS_OPENGL
diff --git a/configure b/configure
index bf81e26507..875fef4c9e 100755
--- a/configure
+++ b/configure
@@ -186,9 +186,12 @@ fi
PLATFORM_X11=no
PLATFORM_MAC=no
-PLATFORM_QWS=no
+PLATFORM_QWS=maybe
+PLATFORM_QPA=maybe
+BUILD_ON_MAC=no;
+[ -d /System/Library/Frameworks/Carbon.framework ] && BUILD_ON_MAC=yes
-if [ -f "$relpath"/src/gui/kernel/qapplication_mac.mm ] && [ -d /System/Library/Frameworks/Carbon.framework ]; then
+if [ -f "$relpath"/src/gui/kernel/qapplication_mac.mm ] && [ $BUILD_ON_MAC = "yes" ]; then
# Qt/Mac
# ~ the Carbon SDK exists
# ~ src/gui/base/qapplication_mac.cpp is present
@@ -283,6 +286,22 @@ earlyArgParse()
VAL=$1
fi
;;
+ -embedded-lite|-qpa)
+ VAR=qpa
+ # this option may or may not be followed by an argument
+ if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
+ VAL=auto
+ else
+ shift;
+ VAL=$1
+ fi
+ ;;
+ -nacl)
+ shift;
+ VAR=nacl
+ VAL=$1
+ ;;
+
-h|help|--help|-help)
if [ "$VAL" = "yes" ]; then
OPT_HELP="$VAL"
@@ -319,12 +338,36 @@ earlyArgParse()
PLATFORM_X11=no
PLATFORM_MAC=no
PLATFORM_QWS=yes
+ PLATFORM_QPA=no
fi
else
echo "No license exists to enable Qt for Embedded Linux. Disabling."
CFG_EMBEDDED=no
fi
;;
+ qpa)
+ CFG_EMBEDDED="$VAL"
+ if [ "$PLATFORM_QPA" != "no" ]; then
+ if [ "$PLATFORM_QPA" = "maybe" ]; then
+ PLATFORM_X11=no
+ PLATFORM_MAC=no
+ PLATFORM_QWS=no
+ PLATFORM_QPA=yes
+ fi
+ else
+ echo "No license exists to enable Qt QPA. Disabling."
+ CFG_EMBEDDED=no
+ fi
+ ;;
+ nacl)
+ echo "Using NaCl at $VAL."
+ PLATFORM_X11=no
+ PLATFORM_MAC=no
+ PLATFORM_QWS=no
+ CFG_NACL_PATH=$VAL
+ CFG_EMBEDDED=nacl
+ ;;
+
developer-build)
CFG_DEV="yes"
;;
@@ -383,6 +426,7 @@ elif [ -f "$relpath"/LICENSE.PREVIEW.COMMERCIAL ] && [ $COMMERCIAL_USER = "yes"
elif [ $COMMERCIAL_USER = "yes" ]; then
# one of commercial editions
[ "$PLATFORM_MAC" = "maybe" ] && PLATFORM_MAC=yes
+ [ "$PLATFORM_QPA" = "maybe" ] && PLATFORM_QPA=no
[ "$PLATFORM_QWS" = "maybe" ] && PLATFORM_QWS=no
# read in the license file
@@ -475,6 +519,7 @@ elif [ $COMMERCIAL_USER = "yes" ]; then
PlatformCode=`echo "$PlatformCode" | sed 's/.$//'`
;;
esac
+ ### EMBEDDED_QPA logic missing ###
case "$PlatformCode,$PLATFORM_MAC,$PLATFORM_QWS" in
X9,* | XC,* | XU,* | XW,* | XM,*)
# Qt All-OS
@@ -784,8 +829,10 @@ L_FLAGS=
RPATH_FLAGS=
l_FLAGS=
QCONFIG_FLAGS=
-XPLATFORM= # This seems to be the QMAKESPEC, like "linux-g++" or "symbian/linux-gcce"
+XPLATFORM= # This seems to be the QMAKESPEC, like "linux-g++" or "symbian-gcce"
XPLATFORM_MINGW=no # Whether target platform is MinGW (win32-g++*)
+XPLATFORM_SYMBIAN=no # Whether target platform is SYMBIAN (*symbian*)
+XPLATFORM_SYMBIAN_SBSV2=no # Whether target platform is SYMBIAN_SBSV2 (symbian-sbsv2)
PLATFORM=$QMAKESPEC
QT_CROSS_COMPILE=no
OPT_CONFIRM_LICENSE=no
@@ -905,6 +952,44 @@ if [ -d "$relpath/src/plugins/gfxdrivers" ]; then
fi
#-------------------------------------------------------------------------------
+# Set Default NaCl options
+#-------------------------------------------------------------------------------
+if [ "$CFG_EMBEDDED" = "nacl" ]; then
+ echo "Setting NaCl options:"
+ echo "-static"
+ CFG_SHARED=no
+ echo "-qpa nacl"
+ PLATFORM_QPA=yes
+ echo "-fast"
+ OPT_FAST=yes
+ echo "-release"
+ CFG_DEBUG=no
+ echo "-qconfig minimal-system-dependencies"
+ CFG_QCONFIG=minimal-system-dependencies
+
+ if [ `uname` = "Linux" ]; then
+ I_FLAGS="$I_FLAGS -I${CFG_NACL_PATH}/toolchain/linux_x86/sdk/nacl-sdk/include"
+ L_FLAGS="$L_FLAGS -I${CFG_NACL_PATH}/toolchain/linux_x86/sdk/nacl-sdk/lib"
+ else
+ I_FLAGS="$I_FLAGS -I${CFG_NACL_PATH}/toolchain/mac_x86/sdk/nacl-sdk/include"
+ L_FLAGS="$L_FLAGS -I${CFG_NACL_PATH}/toolchain/mac_x86/sdk/nacl-sdk/lib"
+ fi
+
+ echo "-no-multimedia -no-webkit -no-phonon -no-nultimedia -no-mediaservices -no-xmlpatterns -no-script -no-sql-sqlite -nomake tests"
+ CFG_MULTIMEDIA=no
+ CFG_WEBKIT=no
+ CFG_PHONON=no
+ CFG_MULTIMEDIA=no
+ CFG_MEDIASERVICES=no
+ CFG_XMLPATTERNS=no
+ CFG_SCRIPT=no
+ CFG_SQLITE=no
+ CFG_SQL_sqlite=no
+ CFG_NOBUILD_PARTS="$CFG_NOBUILD_PARTS tests"
+ QT_CONFIG="$QT_CONFIG nacl"
+fi
+
+#-------------------------------------------------------------------------------
# parse command line arguments
#-------------------------------------------------------------------------------
@@ -964,7 +1049,7 @@ while [ "$#" -gt 0 ]; do
;;
#Qt style options that pass an argument
-qconfig)
- if [ "$PLATFORM_QWS" != "yes" ]; then
+ if [ "$PLATFORM_QWS" != "yes" -a "$PLATFORM_QPA" != "yes" ]; then
echo
echo "WARNING: -qconfig is only tested and supported on Qt for Embedded Linux."
echo
@@ -1004,6 +1089,20 @@ while [ "$#" -gt 0 ]; do
VAL=$1
fi
;;
+ -embedded-lite|-qpa)
+ VAR=qpa
+ # this option may or may not be followed by an argument
+ if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
+ VAL=auto
+ else
+ shift;
+ VAL=$1
+ fi
+ ;;
+ -nacl)
+ VAR=nacl
+ shift;
+ ;;
-opengl)
VAR=opengl
# this option may or may not be followed by an argument
@@ -1226,12 +1325,29 @@ while [ "$#" -gt 0 ]; do
PLATFORM_X11=no
PLATFORM_MAC=no
PLATFORM_QWS=yes
+ PLATFORM_QPA=no
fi
else
echo "No license exists to enable Qt for Embedded Linux. Disabling."
CFG_EMBEDDED=no
fi
;;
+ embedded-lite|qpa)
+ CFG_EMBEDDED="$VAL"
+ if [ "$PLATFORM_QPA" != "no" ]; then
+ if [ "$PLATFORM_QPA" = "maybe" ]; then
+ PLATFORM_X11=no
+ PLATFORM_MAC=no
+ PLATFORM_QWS=no
+ PLATFORM_QPA=yes
+ fi
+ else
+ echo "No license exists to enable Qt QPA. Disabling."
+ CFG_EMBEDDED=no
+ fi
+ ;;
+ nacl)
+ ;;
sse)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_SSE="$VAL"
@@ -1339,6 +1455,8 @@ while [ "$#" -gt 0 ]; do
PLATFORM_MAC=no
elif [ "$PLATFORM_QWS" = "yes" ]; then
PLATFORM_QWS=no
+ elif [ "$PLATFORM_QPA" = "yes" ]; then
+ PLATFORM_QPA=no
fi
if [ "$CFG_FRAMEWORK" = "auto" ]; then
CFG_FRAMEWORK=no
@@ -1478,6 +1596,8 @@ while [ "$#" -gt 0 ]; do
xplatform)
XPLATFORM="$VAL"
case `basename "$XPLATFORM"` in win32-g++*) XPLATFORM_MINGW=yes;; esac
+ case "$XPLATFORM" in *symbian*) XPLATFORM_SYMBIAN=yes;; esac
+ case "$XPLATFORM" in symbian-sbsv2) XPLATFORM_SYMBIAN_SBSV2=yes;; esac
;;
debug-and-release)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
@@ -1556,8 +1676,7 @@ while [ "$#" -gt 0 ]; do
fi
;;
gif)
- [ "$VAL" = "qt" ] && VAL=auto
- if [ "$VAL" = "auto" ] || [ "$VAL" = "no" ]; then
+ if [ "$VAL" = "no" ]; then
CFG_GIF="$VAL"
else
UNKNOWN_OPT=yes
@@ -2263,6 +2382,11 @@ if [ "$CFG_GUI" = "no" ]; then
CFG_QT3SUPPORT="no"
fi
+#disable Qt3Support for Lighthouse
+if [ "$PLATFORM_QPA" = "yes" ]; then
+ CFG_QT3SUPPORT="no"
+fi
+
# update QT_CONFIG to show our current predefined configuration
case "$CFG_QCONFIG" in
minimal|small|medium|large|full)
@@ -2333,7 +2457,7 @@ if [ "$OPT_SHADOW" = "yes" ]; then
[ "$OPT_VERBOSE" = "yes" ] && echo "Performing shadow build..."
fi
-if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" ] && [ "$CFG_DEBUG_RELEASE" = "yes" ]; then
+if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ] && [ "$CFG_DEBUG_RELEASE" = "yes" ]; then
echo
echo "WARNING: -debug-and-release is not supported anymore on Qt/X11 and Qt for Embedded Linux"
echo "Qt can be built in release mode with separate debug information, so"
@@ -2429,14 +2553,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.
@@ -2458,7 +2576,7 @@ if [ "$OPT_SHADOW" = "yes" ]; then
fi
# symlink fonts to be able to run application from build directory
-if [ "$PLATFORM_QWS" = "yes" ] && [ ! -d "${outpath}/lib/fonts" ]; then
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ] && [ ! -d "${outpath}/lib/fonts" ]; then
if [ "$PLATFORM" = "$XPLATFORM" ]; then
mkdir -p "${outpath}/lib"
ln -s "${relpath}/lib/fonts" "${outpath}/lib/fonts"
@@ -2498,6 +2616,7 @@ fi ### help
#-------------------------------------------------------------------------------
[ "$PLATFORM_QWS" = "yes" -a "$CFG_EMBEDDED" = "no" ] && CFG_EMBEDDED=auto
+[ "$PLATFORM_QPA" = "yes" -a "$CFG_EMBEDDED" = "no" ] && CFG_EMBEDDED=auto
if [ "$CFG_EMBEDDED" != "no" ]; then
case "$UNAME_SYSTEM:$UNAME_RELEASE" in
Darwin:*)
@@ -2572,6 +2691,7 @@ if [ "$CFG_EMBEDDED" != "no" ]; then
echo "Qt for Embedded Linux is not supported on this platform. Disabling."
CFG_EMBEDDED=no
PLATFORM_QWS=no
+ PLATFORM_QPA=no
;;
esac
fi
@@ -2740,7 +2860,7 @@ if [ -z "$PLATFORM" ]; then
esac
fi
-if [ "$PLATFORM_QWS" = "yes" ]; then
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
CFG_SM=no
PLATFORMS=`find "$relpath/mkspecs/qws" | sed "s,$relpath/mkspecs/qws/,,"`
else
@@ -2750,6 +2870,8 @@ fi
[ -z "$XPLATFORM" ] && XPLATFORM="$PLATFORM"
case `basename "$XPLATFORM"` in win32-g++*) XPLATFORM_MINGW=yes;; esac
+case "$XPLATFORM" in *symbian*) XPLATFORM_SYMBIAN=yes;; esac
+case "$XPLATFORM" in symbian-sbsv2) XPLATFORM_SYMBIAN_SBSV2=yes;; esac
if [ -d "$PLATFORM" ]; then
QMAKESPEC="$PLATFORM"
@@ -3028,7 +3150,7 @@ if [ "$PLATFORM" != "$XPLATFORM" -a "$CFG_EMBEDDED" != "no" ]; then
esac
elif [ "$XPLATFORM_MINGW" = "yes" ]; then
[ -z "$CFG_ARCH" ] && CFG_ARCH="windows"
-elif echo "$XPLATFORM" | grep symbian > /dev/null; then
+elif [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
CFG_ARCH=symbian
elif [ "$PLATFORM_MAC" = "yes" ] || [ -z "$CFG_ARCH" ]; then
CFG_ARCH=$CFG_HOST_ARCH
@@ -3068,9 +3190,9 @@ if [ "$CFG_HOST_ARCH" != "$CFG_ARCH" ]; then
fi
if [ "$OPT_VERBOSE" = "yes" ]; then
- echo "Target architecture: '$CFG_ARCH'"
- if [ "$PLATFORM_QWS" = "yes" ]; then
- echo "Host architecture: '$CFG_HOST_ARCH'"
+ echo "System architecture: '$CFG_ARCH'"
+ if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
+ echo "Host architecture: '$CFG_HOST_ARCH'"
fi
fi
@@ -3166,7 +3288,7 @@ QMAKE_CONF_COMPILER=`getQMakeConf "$XQMAKESPEC" | grep "^QMAKE_CXX[^_A-Z0-9]" |
TEST_COMPILER="$CXX"
[ -z "$TEST_COMPILER" ] && TEST_COMPILER=$QMAKE_CONF_COMPILER
-if [ "$XPLATFORM" != "symbian-sbsv2" ]; then
+if [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then
#for Symbian we don't need this checking
if [ -z "$TEST_COMPILER" ]; then
echo "ERROR: Cannot set the compiler for the configuration tests"
@@ -3174,6 +3296,9 @@ if [ "$XPLATFORM" != "symbian-sbsv2" ]; then
fi
fi
+if [ "$CFG_EMBEDDED" = "nacl" ]; then
+ TEST_COMPILER="nacl-gcc"
+fi
# auto-detect precompiled header support
if [ "$CFG_PRECOMPILE" = "auto" ]; then
@@ -3328,24 +3453,25 @@ fi
if [ -z "$QT_INSTALL_PREFIX" ]; then
if [ "$CFG_DEV" = "yes" ]; then
QT_INSTALL_PREFIX="$outpath" # In Development, we use sandboxed builds by default
- elif [ "$PLATFORM_QWS" = "yes" ]; then
- QT_INSTALL_PREFIX="/usr/local/Trolltech/QtEmbedded-${QT_VERSION}"
+ elif [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
+ if [ "$PLATFORM_QPA" = "yes" ]; then
+ QT_INSTALL_PREFIX="/usr/local/Trolltech/QtLighthouse-${QT_VERSION}"
+ else
+ QT_INSTALL_PREFIX="/usr/local/Trolltech/QtEmbedded-${QT_VERSION}"
+ fi
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" ] && [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
+ QT_INSTALL_PREFIX="$EPOCROOT/epoc32/"
+ QT_INSTALL_LIBS="$EPOCROOT/epoc32/release/armv5/lib/"
else
QT_INSTALL_PREFIX="/usr/local/Trolltech/Qt-${QT_VERSION}" # the default install prefix is /usr/local/Trolltech/Qt-$QT_VERSION
fi
fi
QT_INSTALL_PREFIX=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_PREFIX"`
-if echo $XPLATFORM | grep symbian > /dev/null; then
+if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
[ -z "$QT_HOST_PREFIX" ] && QT_HOST_PREFIX="$QT_INSTALL_PREFIX"
[ -z "$QT_INSTALL_DOCS" ] && QT_INSTALL_DOCS=
[ -z "$QT_INSTALL_HEADERS" ] && QT_INSTALL_HEADERS=
@@ -3541,14 +3667,14 @@ Usage: $relconf [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir
[-accessibility] [-no-stl] [-stl] [-no-sql-<driver>] [-sql-<driver>]
[-plugin-sql-<driver>] [-system-sqlite] [-no-qt3support] [-qt3support]
[-platform] [-D <string>] [-I <string>] [-L <string>] [-help]
- [-qt-zlib] [-system-zlib] [-no-gif] [-qt-gif] [-no-libtiff] [-qt-libtiff] [-system-libtiff]
+ [-qt-zlib] [-system-zlib] [-no-gif] [-no-libtiff] [-qt-libtiff] [-system-libtiff]
[-no-libpng] [-qt-libpng] [-system-libpng] [-no-libmng] [-qt-libmng]
[-system-libmng] [-no-libjpeg] [-qt-libjpeg] [-system-libjpeg] [-make <part>]
[-nomake <part>] [-R <string>] [-l <string>] [-no-rpath] [-rpath] [-continue]
[-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]
@@ -3568,7 +3694,7 @@ Installation options:
-prefix <dir> ...... This will install everything relative to <dir>
(default $QT_INSTALL_PREFIX)
EOF
-if [ "$PLATFORM_QWS" = "yes" ]; then
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
cat <<EOF
-hostprefix [dir] .. Tools and libraries needed when developing
@@ -3647,7 +3773,7 @@ Configure options:
+ -largefile ......... Enables Qt to access files larger than 4 GB.
EOF
-if [ "$PLATFORM_QWS" = "yes" ]; then
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
EXCN="*"
EXCY=" "
else
@@ -3752,6 +3878,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.
@@ -3769,8 +3896,6 @@ Third Party Libraries:
See http://www.gzip.org/zlib
-no-gif ............ Do not compile GIF reading support.
- * -qt-gif ............ Compile GIF reading support.
- See also src/gui/image/qgifhandler_p.h
-no-libtiff ........ Do not compile TIFF support.
-qt-libtiff ........ Use the libtiff bundled with Qt.
@@ -3866,7 +3991,7 @@ else
SBN="*"
fi
-if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" ]; then
+if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
cat << EOF
@@ -4096,7 +4221,7 @@ Qt/Mac only:
EOF
fi
-if [ "$PLATFORM_QWS" = "yes" ]; then
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
cat << EOF
Qt for Embedded Linux only:
@@ -4111,6 +4236,10 @@ Qt for Embedded Linux only:
proper license for this switch to work.
Example values for <arch>: arm mips x86 generic
+ -qpa <arch> ......... This will enable the QPA build.
+ Example values for <arch>: arm mips x86 generic
+ QPA is a window system agnostic implementation of Qt.
+
-armfpa ............. Target platform uses the ARM-FPA floating point format.
-no-armfpa .......... Target platform does not use the ARM-FPA floating point format.
@@ -4183,13 +4312,11 @@ 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
-if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_X11" = "yes" ]; then
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" -o "$PLATFORM_X11" = "yes" ]; then
if [ "$CFG_GLIB" = "no" ]; then
GBY=" "
GBN="+"
@@ -4204,7 +4331,7 @@ if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_X11" = "yes" ]; then
EOF
fi
-case "$XPLATFORM" in *symbian*)
+if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
cat << EOF
Qt for Symbian only:
@@ -4216,9 +4343,7 @@ Qt for Symbian only:
-no-usedeffiles .... Disable the usage of DEF files.
* -usedeffiles ....... Enable the usage of DEF files.
EOF
-;;
-esac
-
+fi
[ "x$ERROR" = "xyes" ] && exit 1
exit 0
fi # Help
@@ -4228,12 +4353,12 @@ fi # Help
# LICENSING, INTERACTIVE PART
# -----------------------------------------------------------------------------
-if [ "$PLATFORM_QWS" = "yes" ]; then
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
Platform="Qt for Embedded Linux"
+elif [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
+ Platform="Qt for Symbian"
elif [ "$PLATFORM_MAC" = "yes" ]; then
Platform="Qt for Mac OS X"
-elif echo "$XPLATFORM" | grep "symbian" > /dev/null ; then
- Platform="Qt for Symbian"
elif [ "$XPLATFORM_MINGW" = "yes" ]; then
Platform="Qt for Windows"
elif [ '!' -z "`getQMakeConf \"$XQMAKESPEC\" | grep QMAKE_LIBS_X11 | awk '{print $3;}'`" ]; then
@@ -4568,27 +4693,37 @@ fi
# $2: optional transformation
# relies on $QMAKESPEC, $COMPILER_CONF and $mkfile being set correctly, as the latter
# is where the resulting variable is written to
+# Assumes that the optional transformation produces the same variable name for each hit
setBootstrapVariable()
{
getQMakeConf | $AWK '/^('"$1"')[^_A-Z0-9]/ { print $0; }' | ( [ -n "$2" ] && sed "$2" ; [ -z "$2" ] && cat ) | $AWK '
+BEGIN {
+ variable = ""
+ combinedValue = ""
+}
{
- varLength = index($0, "=") - 1
- valStart = varLength + 2
- if (substr($0, varLength, 1) == "+") {
- varLength = varLength - 1
- valStart = valStart + 1
+ valStart = index($0, "=") + 1
+
+ append = 0
+ if (substr($0, valStart - 2, 1) == "+") {
+ append = 1
+ }
+
+ variable = substr($0, 0, valStart - 2 - append)
+ value = substr($0, valStart)
+ gsub("[ \t]+", "", variable)
+ gsub("^[ \t]+", "", value)
+ gsub("[ \t]+$", "", value)
+
+ if (append == 1 && length(combinedValue) > 0) {
+ combinedValue = combinedValue " " value
+ } else {
+ combinedValue = value
}
- var = substr($0, 0, varLength)
- gsub("[ \t]+", "", var)
- val = substr($0, valStart)
- printf "%s_%s = %s\n", var, NR, val
}
END {
- if (length(var) > 0) {
- printf "%s =", var
- for (i = 1; i <= NR; ++i)
- printf " $(%s_%s)", var, i
- printf "\n"
+ if (length(combinedValue) > 0) {
+ printf "%s = %s\n", variable, combinedValue
}
}' >> "$mkfile"
}
@@ -4618,7 +4753,7 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ];
#mkspecs/default is used as a (gasp!) default mkspec so QMAKESPEC needn't be set once configured
rm -rf mkspecs/default
- if echo "$XPLATFORM" | grep "symbian-sbsv2" > /dev/null ; then
+ if [ "$XPLATFORM_SYMBIAN_SBSV2" = "yes" ]; then
#Link is not supported for Symbian build system
cp -a mkspecs/`echo $XQMAKESPEC | sed "s,^${relpath}/mkspecs/,,"` mkspecs/default
else
@@ -4691,7 +4826,7 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ];
EXTRA_LFLAGS="\$(QMAKE_LFLAGS_RPATH)\"$rpath\" $EXTRA_LFLAGS"
done
fi
- if [ "$PLATFORM_MAC" = "yes" ]; then
+ if [ "$BUILD_ON_MAC" = "yes" ]; then
echo "export MACOSX_DEPLOYMENT_TARGET = 10.4" >> "$mkfile"
echo "CARBON_LFLAGS =-framework ApplicationServices" >>"$mkfile"
echo "CARBON_CFLAGS =-fconstant-cfstrings" >>"$mkfile"
@@ -4870,33 +5005,12 @@ if [ "$CFG_ARCH" = "arm" ] && [ "${CFG_NEON}" = "auto" ]; then
fi
fi
-# detect zlib
-if [ "$CFG_ZLIB" = "no" ]; then
- # Note: Qt no longer support builds without zlib
- # So we force a "no" to be "auto" here.
- # If you REALLY really need no zlib support, you can still disable
- # it by doing the following:
- # add "no-zlib" to mkspecs/qconfig.pri
- # #define QT_NO_COMPRESS (probably by adding to src/corelib/global/qconfig.h)
- #
- # There's no guarantee that Qt will build under those conditions
-
- CFG_ZLIB=auto
- ZLIB_FORCED=yes
-fi
-if [ "$CFG_ZLIB" = "auto" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/zlib "zlib" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
- CFG_ZLIB=system
- else
- CFG_ZLIB=yes
- fi
-fi
-
[ "$XPLATFORM_MINGW" = "yes" ] && QMakeVar add styles "windowsxp windowsvista"
-case "$XPLATFORM" in *symbian*)
+if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
QMakeVar set styles "windows s60" #overwrite previous default
CFG_LIBFREETYPE=no
+ CFG_ZLIB=yes
if [ "$CFG_LARGEFILE" = auto ]; then
CFG_LARGEFILE=no
@@ -4911,7 +5025,7 @@ case "$XPLATFORM" in *symbian*)
exit 1
fi
- if ! echo $XPLATFORM | grep symbian-sbsv2 > /dev/null; then
+ if [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then
# Raptor does not support configure tests.
# the main commands needed to compile;
@@ -4935,8 +5049,29 @@ case "$XPLATFORM" in *symbian*)
exit 1;
fi
fi
- ;;
-esac
+fi
+
+# detect zlib
+if [ "$CFG_ZLIB" = "no" ]; then
+ # Note: Qt no longer support builds without zlib
+ # So we force a "no" to be "auto" here.
+ # If you REALLY really need no zlib support, you can still disable
+ # it by doing the following:
+ # add "no-zlib" to mkspecs/qconfig.pri
+ # #define QT_NO_COMPRESS (probably by adding to src/corelib/global/qconfig.h)
+ #
+ # There's no guarantee that Qt will build under those conditions
+
+ CFG_ZLIB=auto
+ ZLIB_FORCED=yes
+fi
+if [ "$CFG_ZLIB" = "auto" ]; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/zlib "zlib" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
+ CFG_ZLIB=system
+ else
+ CFG_ZLIB=yes
+ fi
+fi
if [ "$CFG_LARGEFILE" = "auto" ]; then
#Large files should be enabled for all Linux systems
@@ -4945,7 +5080,7 @@ fi
if [ "$CFG_S60" = "auto" ]; then
- if echo "$XPLATFORM" | grep symbian > /dev/null; then
+ if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
CFG_S60=yes
else
CFG_S60=no
@@ -4953,7 +5088,7 @@ if [ "$CFG_S60" = "auto" ]; then
fi
if [ "$CFG_QS60STYLE" = "auto" ]; then
- if echo "$XPLATFORM" | grep symbian > /dev/null; then
+ if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
CFG_QS60STYLE=qt
else
CFG_QS60STYLE=no
@@ -4961,7 +5096,7 @@ if [ "$CFG_QS60STYLE" = "auto" ]; then
fi
if [ "$CFG_SYMBIAN_DEFFILES" = "auto" ]; then
- if echo "$XPLATFORM" | grep symbian > /dev/null && [ "$CFG_DEV" = "no" ]; then
+ if [ "$XPLATFORM_SYMBIAN" = "yes" ] && [ "$CFG_DEV" = "no" ]; then
CFG_SYMBIAN_DEFFILES=yes
else
CFG_SYMBIAN_DEFFILES=no
@@ -5040,14 +5175,12 @@ fi
# detect accessibility
if [ "$CFG_ACCESSIBILITY" = "auto" ]; then
- case "$XPLATFORM" in
- symbian*)
+ if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
# accessibility is currently unsupported
CFG_ACCESSIBILITY=no
- ;;
- *)
+ else
CFG_ACCESSIBILITY=yes
- esac
+ fi
fi
# auto-detect SQL-modules support
@@ -5259,15 +5392,13 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
;;
sqlite)
if [ "$CFG_SQL_sqlite" = "auto" ]; then # the default
- case "$XPLATFORM" in
- symbian*)
+ if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
# sqlite on symbian is typically not build in Qt but deployed as a pre-existing sis file and should be marked as driver.
# Configuration parameters should be set
CFG_SQL_sqlite=qt
QT_LFLAGS_SQLITE=-lsqlite3
QMAKE_CONFIG="$QMAKE_CONFIG system-sqlite"
- ;;
- esac
+ fi
fi
if [ "$CFG_SQL_sqlite" != "no" ]; then
SQLITE_AUTODETECT_FAILED="no"
@@ -5347,7 +5478,7 @@ fi
# auto-detect iconv(3) support
if [ "$CFG_ICONV" != "no" ]; then
- if [ "$PLATFORM_QWS" = "yes" ]; then
+ if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
CFG_ICONV=no
elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" "$OPT_VERBOSE" "$relpath" "$outpath" "config.tests/unix/iconv" "POSIX iconv" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
CFG_ICONV=yes
@@ -5409,8 +5540,8 @@ if [ "$PLATFORM_MAC" = "yes" -a ! -z "$QT_NAMESPACE" ]; then
QT_NAMESPACE_MAC_CRC=`"$mactests/crc.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/mac/crc $QT_NAMESPACE $L_FLAGS $I_FLAGS $l_FLAGS`
fi
-# X11/QWS
-if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" ]; then
+# X11/QWS/Lighthouse
+if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
# auto-detect Glib support
if [ "$CFG_GLIB" != "no" ]; then
@@ -5544,7 +5675,7 @@ if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" ]; then
fi
fi
fi
-fi # X11/QWS
+fi # X11/QWS/Lighthouse
# X11
if [ "$PLATFORM_X11" = "yes" ]; then
@@ -5958,6 +6089,84 @@ if [ "$PLATFORM_MAC" = "yes" ]; then
fi
fi
+
+if [ "$PLATFORM_QPA" = "yes" ]; then
+ # auto-detect OpenGL support (es1 = OpenGL ES 1.x Common, es2 = OpenGL ES 2.x)
+ if [ "$CFG_OPENGL" = "auto" ] || [ "$CFG_OPENGL" = "yes" ]; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengldesktop "OpenGL" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
+ CFG_OPENGL=desktop
+ elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles2 "OpenGL ES 2.x" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ CFG_OPENGL=es2
+ elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles1 "OpenGL ES 1.x" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ CFG_OPENGL=es1
+ else
+ if [ "$CFG_OPENGL" = "yes" ]; then
+ echo "All the OpenGL functionality tests failed!"
+ echo " You might need to modify the include and library search paths by editing"
+ echo " QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in"
+ echo " ${XQMAKESPEC}."
+ exit 1
+ fi
+ CFG_OPENGL=no
+ fi
+ elif [ "$CFG_OPENGL" = "es1" ]; then
+ # OpenGL ES 1.x
+ "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles1 "OpenGL ES 1.x" $L_FLAGS $I_FLAGS $l_FLAGS
+ if [ $? != "0" ]; then
+ echo "The OpenGL ES 1.x functionality test failed!"
+ echo " You might need to modify the include and library search paths by editing"
+ echo " QMAKE_INCDIR_OPENGL_ES1, QMAKE_LIBDIR_OPENGL_ES1 and QMAKE_LIBS_OPENGL_ES1 in"
+ echo " ${XQMAKESPEC}."
+ exit 1
+ fi
+ elif [ "$CFG_OPENGL" = "es2" ]; then
+ #OpenGL ES 2.x
+ "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles2 "OpenGL ES 2.x" $L_FLAGS $I_FLAGS $l_FLAGS
+ if [ $? != "0" ]; then
+ echo "The OpenGL ES 2.0 functionality test failed!"
+ echo " You might need to modify the include and library search paths by editing"
+ echo " QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 in"
+ echo " ${XQMAKESPEC}."
+ exit 1
+ fi
+ elif [ "$CFG_OPENGL" = "desktop" ]; then
+ # Desktop OpenGL support
+ "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengldesktop "OpenGL" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS
+ if [ $? != "0" ]; then
+ echo "The OpenGL functionality test failed!"
+ echo " You might need to modify the include and library search paths by editing"
+ echo " QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in"
+ echo " ${XQMAKESPEC}."
+ exit 1
+ fi
+ fi
+
+ # auto-detect FontConfig support
+ if [ "$CFG_FONTCONFIG" != "no" ]; then
+ if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists fontconfig --exists freetype2 2>/dev/null; then
+ QT_CFLAGS_FONTCONFIG=`$PKG_CONFIG --cflags fontconfig --cflags freetype2 2>/dev/null`
+ QT_LIBS_FONTCONFIG=`$PKG_CONFIG --libs fontconfig --libs freetype2 2>/dev/null`
+ else
+ QT_CFLAGS_FONTCONFIG=
+ QT_LIBS_FONTCONFIG="-lfreetype -lfontconfig"
+ fi
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/fontconfig "FontConfig" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS $QT_CFLAGS_FONTCONFIG $QT_LIBS_FONTCONFIG; then
+ QT_CONFIG="$QT_CONFIG fontconfig"
+ QMakeVar set QMAKE_CFLAGS_FONTCONFIG "$QT_CFLAGS_FONTCONFIG"
+ QMakeVar set QMAKE_LIBS_FONTCONFIG "$QT_LIBS_FONTCONFIG"
+ CFG_LIBFREETYPE=system
+ fi
+ fi
+
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/mac/coreservices "CoreServices" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
+ QT_CONFIG="$QT_CONFIG coreservices"
+ else
+ QMakeVar add DEFINES QT_NO_CORESERVICES
+ fi
+
+fi
+
+
# QWS
if [ "$PLATFORM_QWS" = "yes" ]; then
@@ -5976,7 +6185,7 @@ if [ "$PLATFORM_QWS" = "yes" ]; then
CFG_EGL=auto
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles2 "OpenGL ES 2.x" $L_FLAGS $I_FLAGS $l_FLAGS; then
CFG_OPENGL=es2
- elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles1 "OpenGL ES 1.x" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles1 "OpenGL ES 1.x" $L_FLAGS $I_FLAGS $l_FLAGS; then
CFG_OPENGL=es1
else
echo "All the OpenGL ES functionality tests failed!"
@@ -6012,6 +6221,9 @@ if [ "$PLATFORM_QWS" = "yes" ]; then
echo "Desktop OpenGL support is not avaliable on Qt for Embedded Linux"
exit 1
fi
+fi
+
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
# screen drivers
for screen in ${CFG_GFX_ON} ${CFG_GFX_PLUGIN}; do
@@ -6138,10 +6350,10 @@ fi
if [ "$CFG_ENDIAN" = "auto" ]; then
if [ "$XPLATFORM_MINGW" = "yes" ]; then
CFG_ENDIAN="Q_LITTLE_ENDIAN"
- elif [ "$PLATFORM_MAC" = "yes" ]; then
- true #leave as auto
- elif [ "$XPLATFORM" = "symbian-sbsv2" ]; then
+ elif [ "$XPLATFORM_SYMBIAN_SBSV2" = "yes" ]; then
CFG_ENDIAN="Q_LITTLE_ENDIAN"
+ elif [ "$PLATFORM_MAC" = "yes" ] && [ "$XPLATFORM_SYMBIAN" = "no" ]; then
+ true #leave as auto
else
"$unixtests/endian.test" "$XQMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath"
F="$?"
@@ -6195,7 +6407,7 @@ fi
if [ "$CFG_DOUBLEFORMAT" = "auto" ]; then
- if [ "$PLATFORM_QWS" != "yes" ]; then
+ if [ "$PLATFORM_QWS" != "yes" -o "$PLATFORM_QPA" = "yes" ]; then
CFG_DOUBLEFORMAT=normal
else
"$unixtests/doubleformat.test" "$XQMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath"
@@ -6227,7 +6439,7 @@ if [ "$CFG_DOUBLEFORMAT" = "auto" ]; then
fi
HAVE_STL=no
-if echo "$XPLATFORM" | grep symbian > /dev/null || "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/stl "STL" $L_FLAGS $I_FLAGS $l_FLAGS; then
+if [ "$XPLATFORM_SYMBIAN" = "yes" ] || "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/stl "STL" $L_FLAGS $I_FLAGS $l_FLAGS; then
HAVE_STL=yes
fi
@@ -6254,7 +6466,7 @@ if [ "$CFG_IPV6" != "no" ]; then
# Therefore for 4.7.1 and following we disable it until OpenC either supports it or we have the native Qt
# symbian socket engine.
#
- if echo "$XPLATFORM" | grep symbian > /dev/null; then
+ if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
CFG_IPV6=no
elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/ipv6 "IPv6" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
CFG_IPV6=yes
@@ -6369,7 +6581,7 @@ if [ "$CFG_GETIFADDRS" != "no" ]; then
fi
# detect OpenSSL
-if [ "$CFG_OPENSSL" != "no" ] && [ "$XPLATFORM" != "symbian-sbsv2" ]; then
+if [ "$CFG_OPENSSL" != "no" ] && [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/openssl "OpenSSL" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
if [ "$CFG_OPENSSL" = "auto" ]; then
CFG_OPENSSL=yes
@@ -6386,14 +6598,14 @@ if [ "$CFG_OPENSSL" != "no" ] && [ "$XPLATFORM" != "symbian-sbsv2" ]; then
fi
fi
else
- if [ "$CFG_OPENSSL" = "auto" ] && [ "$XPLATFORM" = "symbian-sbsv2" ]; then
+ if [ "$CFG_OPENSSL" = "auto" ] && [ "$XPLATFORM_SYMBIAN_SBSV2" = "yes" ]; then
#OpenSSl should be enabled for Symbian release
CFG_OPENSSL=yes
fi
fi
# detect OpenVG support
-if [ "$CFG_OPENVG" != "no" ] && [ "$XPLATFORM" != "symbian-sbsv2" ]; then
+if [ "$CFG_OPENVG" != "no" ] && [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/openvg" "OpenVG" $L_FLAGS $I_FLAGS $l_FLAGS $CONFIG_ARG; then
if [ "$CFG_OPENVG" = "auto" ]; then
CFG_OPENVG=yes
@@ -6450,13 +6662,13 @@ if [ "$CFG_PTMALLOC" != "no" ]; then
QMakeVar add QMAKE_LFLAGS "$outpath/lib/libptmalloc3.a"
fi
-if [ "$CFG_ALSA" = "auto" ] && [ "$XPLATFORM" != "symbian-sbsv2" ]; then
+if [ "$CFG_ALSA" = "auto" ] && [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/alsa "alsa" $L_FLAGS $I_FLAGS $l_FLAGS; then
CFG_ALSA=yes
else
CFG_ALSA=no
fi
-elif [ "$XPLATFORM" = "symbian-sbsv2" ]; then
+elif [ "$XPLATFORM_SYMBIAN_SBSV2" = "yes" ]; then
# Disabled for Symbian release
CFG_ALSA=no
fi
@@ -6477,7 +6689,7 @@ elif [ "$CFG_JAVASCRIPTCORE_JIT" = "no" ]; then
fi
if [ "$CFG_AUDIO_BACKEND" = "auto" ]; then
- if echo "$XPLATFORM" | grep symbian > /dev/null 2>&1; then
+ if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
if "$symbiantests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/symbian/audio "audio" $L_FLAGS $I_FLAGS $l_FLAGS ; then
CFG_AUDIO_BACKEND=yes
fi
@@ -6489,7 +6701,7 @@ fi
if [ "$CFG_LARGEFILE" != "yes" ] && [ "$XPLATFORM_MINGW" = "yes" ]; then
echo "Warning: largefile support cannot be disabled for win32."
CFG_LARGEFILE="yes"
-elif [ "$CFG_LARGEFILE" != "no" ] && echo "$XPLATFORM" | grep "symbian" > /dev/null; then
+elif [ "$CFG_LARGEFILE" != "no" ] && [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
echo "Warning: largefile support cannot be enabled for symbian."
CFG_LARGEFILE="no"
fi
@@ -6499,7 +6711,12 @@ fi
#-------------------------------------------------------------------------------
### fix this: user input should be validated in a loop
-if [ "$CFG_QWS_DEPTHS" = "prompted" -a "$PLATFORM_QWS" = "yes" ]; then
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
+ PROMPT_FOR_DEPTHS="yes"
+else
+ PROMPT_FOR_DEPTHS="no"
+fi
+if [ "$CFG_QWS_DEPTHS" = "prompted" -a "$PROMPT_FOR_DEPTHS" = "yes" ]; then
echo
echo "Choose pixel-depths to support:"
echo
@@ -6596,8 +6813,9 @@ if [ "$PLATFORM_MAC" = "yes" ]; then
fi
fi
-# but disable Cocoa if cross-building for mingw
+# but disable Cocoa if cross-building for mingw and symbian
[ "$XPLATFORM_MINGW" = "yes" ] && CFG_MAC_COCOA="no"
+[ "$XPLATFORM_SYMBIAN" = "yes" ] && CFG_MAC_COCOA="no"
# set the global Mac deployment target. This is overridden on an arch-by-arch basis
# in some cases, see code further down
@@ -6641,6 +6859,11 @@ else
QT_CONFIG="$QT_CONFIG accessibility"
fi
+# egl stuff does not belong in lighthouse, but rather in plugins
+if [ "$PLATFORM_QPA" = "yes" ]; then
+ CFG_EGL="no"
+fi
+
# enable egl
if [ "$CFG_EGL" = "no" ]; then
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGL"
@@ -6675,11 +6898,9 @@ else
fi
# Disable OpenGL on Symbian.
-case "$XPLATFORM" in
- symbian*)
+if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
CFG_OPENGL="no"
- ;;
-esac
+fi
# enable opengl
if [ "$CFG_OPENGL" = "no" ]; then
@@ -6689,8 +6910,12 @@ else
fi
if [ "$CFG_OPENGL" = "es1" ] || [ "$CFG_OPENGL" = "es2" ]; then
- if [ "$PLATFORM_QWS" = "yes" ]; then
- QCONFIG_FLAGS="$QCONFIG_FLAGS Q_BACKINGSTORE_SUBSURFACES"
+ if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
+ if [ "$PLATFORM_QWS" = "yes" ]; then
+ QCONFIG_FLAGS="$QCONFIG_FLAGS Q_BACKINGSTORE_SUBSURFACES"
+ else
+ echo "### Q_BACKINGSTORE_SUBSURFACES disabled, re-enable once it compiles again"
+ fi
QCONFIG_FLAGS="$QCONFIG_FLAGS Q_USE_EGLWINDOWSURFACE"
fi
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_OPENGL_ES"
@@ -6732,6 +6957,19 @@ if [ "$PLATFORM_QWS" = "yes" ]; then
QT_CONFIG="$QT_CONFIG embedded"
rm -f "src/.moc/$QMAKE_OUTDIR/allmoc.cpp" # needs remaking if config changes
fi
+if [ "$PLATFORM_QPA" = "yes" ]; then
+ QMAKE_OUTDIR="${QMAKE_OUTDIR}-emb-$CFG_EMBEDDED"
+ QMAKE_CONFIG="$QMAKE_CONFIG qpa"
+ QT_CONFIG="$QT_CONFIG qpa"
+ rm -f "src/.moc/$QMAKE_OUTDIR/allmoc.cpp" # needs remaking if config changes
+fi
+
+if [ "$CFG_EMBEDDED" = "nacl" ]; then
+ QMAKE_CONFIG="$QMAKE_CONFIG nacl pepper"
+ QT_CONFIG="$QT_CONFIG nacl pepper"
+ rm -f "src/.moc/$QMAKE_OUTDIR/allmoc.cpp" # needs remaking if config changes
+fi
+
if [ "$XPLATFORM_MINGW" != "yes" ]; then
# Do not set this here for Windows. Let qmake do it so
# debug and release precompiled headers are kept separate.
@@ -6863,7 +7101,7 @@ else
fi
-if [ "x$PLATFORM_MAC" = "xyes" ] && [ "$XPLATFORM_MINGW" != "yes" ]; then
+if [ "x$PLATFORM_MAC" = "xyes" ] && [ "$XPLATFORM_MINGW" != "yes" ] && [ "$XPLATFORM_SYMBIAN" != "yes" ]; then
#On Mac we implicitly link against libz, so we
#never use the 3rdparty stuff.
[ "$CFG_ZLIB" = "yes" ] && CFG_ZLIB="system"
@@ -6990,7 +7228,7 @@ if [ '!' -z "$I_FLAGS" ]; then
fi
# turn off exceptions for the compilers that support it
-if [ "$PLATFORM_QWS" = "yes" ]; then
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
COMPILER=`echo $XPLATFORM | cut -f 3- -d-`
elif [ "$XPLATFORM" != "$PLATFORM" ]; then
COMPILER=`echo $XPLATFORM | cut -f 2- -d-`
@@ -7429,7 +7667,7 @@ esac
# ipv6
#
# X11 : x11sm xinerama xcursor xfixes xrandr xrender mitshm fontconfig xkb
-# Embedded: embedded freetype
+# Embedded: embedded qpa freetype
#
ALL_OPTIONS=
BUILD_CONFIG=
@@ -7502,14 +7740,11 @@ rm -f .options
BUILD_OPTIONS="$BUILD_CONFIG $BUILD_OPTIONS"
# extract the operating system from the XPLATFORM
TARGET_OPERATING_SYSTEM=`echo $XPLATFORM | cut -f 2- -d/ | cut -f -1 -d-`
-case "$XPLATFORM" in
-symbian*)
+if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
QT_BUILD_KEY_SYSTEM_PART="Symbian"
- ;;
-*)
+else
QT_BUILD_KEY_SYSTEM_PART="$CFG_ARCH $TARGET_OPERATING_SYSTEM $COMPILER"
- ;;
-esac
+fi
# when cross-compiling, don't include build-host information (build key is target specific)
QT_BUILD_KEY="$CFG_USER_BUILD_KEY $QT_BUILD_KEY_SYSTEM_PART $BUILD_OPTIONS"
@@ -7768,6 +8003,11 @@ if [ "$PLATFORM_QWS" = "yes" ]; then
done
fi # QWS
+if [ "$PLATFORM_QPA" = "yes" ]; then
+ # Add QPA to config.h
+ QCONFIG_FLAGS="$QCONFIG_FLAGS Q_WS_QPA QT_NO_QWS_QPF QT_NO_QWS_QPF2"
+fi
+
if [ "${CFG_USE_FLOATMATH}" = "yes" ]; then
QCONFIG_FLAGS="${QCONFIG_FLAGS} QT_USE_MATH_H_FLOATS"
fi
@@ -7856,8 +8096,7 @@ fi
[ '!' -z "$AWK" ] && QCONFIG_FLAGS=`echo $QCONFIG_FLAGS | $AWK '{ gsub(" ", "\n"); print }' | sort | uniq`
QCONFIG_FLAGS=`echo $QCONFIG_FLAGS`
-if echo $XPLATFORM | grep symbian >/dev/null
-then
+if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
# Enable Symbian DLLs and export rules.
# We cannot use Linux's default export rules since they export everything.
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_DLL"
@@ -7937,7 +8176,7 @@ else
mv "$outpath/src/corelib/global/qconfig.h.new" "$outpath/src/corelib/global/qconfig.h"
chmod -w "$outpath/src/corelib/global/qconfig.h"
for conf in "$outpath/include/QtCore/qconfig.h" "$outpath/include/Qt/qconfig.h"; do
- if echo "$XPLATFORM" | grep "symbian-sbsv2" > /dev/null 2>&1 ; then
+ if [ "$XPLATFORM_SYMBIAN_SBSV2" = "yes" ]; then
[ -e "$conf" ] && rm -rf "$conf"
cp -a "$outpath/src/corelib/global/qconfig.h" "$conf"
elif [ '!' -f "$conf" ]; then
@@ -8014,7 +8253,7 @@ if [ -n "$QT_GCC_MAJOR_VERSION" ]; then
echo "QT_GCC_MINOR_VERSION = $QT_GCC_MINOR_VERSION" >> "$QTCONFIG.tmp"
echo "QT_GCC_PATCH_VERSION = $QT_GCC_PATCH_VERSION" >> "$QTCONFIG.tmp"
fi
-if echo "$XPLATFORM" | grep "symbian-sbsv2" > /dev/null 2>&1; then
+if [ "$XPLATFORM_SYMBIAN_SBSV2" = "yes" ]; then
echo "#Qt for symbian FPU settings" >> "$QTCONFIG.tmp"
echo "MMP_RULES += \"ARMFPU softvfp\"" >> "$QTCONFIG.tmp"
fi
@@ -8051,10 +8290,9 @@ QMAKE_LIBDIR_QT = \$\$QT_BUILD_TREE/lib
EOF
# Ensure we can link to uninistalled libraries
-if [ "$XPLATFORM_MINGW" != "yes" ] && linkerSupportsFlag -rpath-link "$outpath/lib"; then
+if [ "$XPLATFORM_MINGW" != "yes" ] && [ "$CFG_EMBEDDED" != "nacl" ] && linkerSupportsFlag -rpath-link "$outpath/lib"; then
echo "QMAKE_LFLAGS = -Wl,-rpath-link,\$\$QT_BUILD_TREE/lib \$\$QMAKE_LFLAGS" >> "$CACHEFILE.tmp"
fi
-
if [ -n "$QT_CFLAGS_PSQL" ]; then
echo "QT_CFLAGS_PSQL = $QT_CFLAGS_PSQL" >> "$CACHEFILE.tmp"
fi
@@ -8201,7 +8439,7 @@ else
echo "Architecture: $CFG_ARCH"
fi
-if [ "$PLATFORM_QWS" = "yes" ]; then
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
echo "Host architecture: $CFG_HOST_ARCH"
fi
@@ -8316,7 +8554,7 @@ else
fi
echo "zlib support ........... $CFG_ZLIB"
echo "Session management ..... $CFG_SM"
-if [ "$PLATFORM_QWS" = "yes" ]; then
+if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
echo "Embedded support ....... $CFG_EMBEDDED"
if [ "$CFG_QWS_FREETYPE" = "auto" ]; then
echo "Freetype2 support ...... $CFG_QWS_FREETYPE ($CFG_LIBFREETYPE)"
@@ -8602,9 +8840,9 @@ for file in .projects .projects.3; do
*winmain/winmain.pro)
[ "$XPLATFORM_MINGW" = "yes" ] || continue
SPEC=$XQMAKESPEC ;;
- *s60main/s60main.pro) if [ -z "`echo "$XPLATFORM" | grep "symbian" >/dev/null`" ]; then
- continue
- fi;;
+ *s60main/s60main.pro)
+ [ "$XPLATFORM_SYMBIAN" = "yes" ] || continue
+ ;;
*examples/activeqt/*) continue ;;
*/qmake/qmake.pro) continue ;;
*tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*|*linguist/lrelease*) SPEC=$QMAKESPEC ;;
diff --git a/demos/books/books.pro b/demos/books/books.pro
index a5e44e5877..06718d1332 100644
--- a/demos/books/books.pro
+++ b/demos/books/books.pro
@@ -16,8 +16,8 @@ INSTALLS += target sources
symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
wince*: {
- CONFIG(debug, debug|release):sqlPlugins.sources = $$QT_BUILD_TREE/plugins/sqldrivers/*d4.dll
- CONFIG(release, debug|release):sqlPlugins.sources = $$QT_BUILD_TREE/plugins/sqldrivers/*[^d]4.dll
+ CONFIG(debug, debug|release):sqlPlugins.files = $$QT_BUILD_TREE/plugins/sqldrivers/*d4.dll
+ CONFIG(release, debug|release):sqlPlugins.files = $$QT_BUILD_TREE/plugins/sqldrivers/*[^d]4.dll
sqlPlugins.path = sqldrivers
DEPLOYMENT += sqlPlugins
}
diff --git a/demos/chip/view.cpp b/demos/chip/view.cpp
index 7af30740a6..d6a641eeb5 100644
--- a/demos/chip/view.cpp
+++ b/demos/chip/view.cpp
@@ -48,15 +48,29 @@
#include <qmath.h>
+void GraphicsView::wheelEvent(QWheelEvent *e)
+{
+ if (e->modifiers() & Qt::ControlModifier) {
+ if (e->delta() > 0)
+ view->zoomIn(6);
+ else
+ view->zoomOut(6);
+ e->accept();
+ } else {
+ QGraphicsView::wheelEvent(e);
+ }
+}
+
View::View(const QString &name, QWidget *parent)
: QFrame(parent)
{
setFrameStyle(Sunken | StyledPanel);
- graphicsView = new QGraphicsView;
+ graphicsView = new GraphicsView(this);
graphicsView->setRenderHint(QPainter::Antialiasing, false);
graphicsView->setDragMode(QGraphicsView::RubberBandDrag);
graphicsView->setOptimizationFlags(QGraphicsView::DontSavePainterState);
graphicsView->setViewportUpdateMode(QGraphicsView::SmartViewportUpdate);
+ graphicsView->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
int size = style()->pixelMetric(QStyle::PM_ToolBarIconSize);
QSize iconSize(size, size);
@@ -111,6 +125,15 @@ View::View(const QString &name, QWidget *parent)
// Label layout
QHBoxLayout *labelLayout = new QHBoxLayout;
label = new QLabel(name);
+ label2 = new QLabel(tr("Pointer Mode"));
+ selectModeButton = new QToolButton;
+ selectModeButton->setText(tr("Select"));
+ selectModeButton->setCheckable(true);
+ selectModeButton->setChecked(true);
+ dragModeButton = new QToolButton;
+ dragModeButton->setText(tr("Drag"));
+ dragModeButton->setCheckable(true);
+ dragModeButton->setChecked(false);
antialiasButton = new QToolButton;
antialiasButton->setText(tr("Antialiasing"));
antialiasButton->setCheckable(true);
@@ -126,8 +149,17 @@ View::View(const QString &name, QWidget *parent)
printButton = new QToolButton;
printButton->setIcon(QIcon(QPixmap(":/fileprint.png")));
+ QButtonGroup *pointerModeGroup = new QButtonGroup;
+ pointerModeGroup->setExclusive(true);
+ pointerModeGroup->addButton(selectModeButton);
+ pointerModeGroup->addButton(dragModeButton);
+
labelLayout->addWidget(label);
labelLayout->addStretch();
+ labelLayout->addWidget(label2);
+ labelLayout->addWidget(selectModeButton);
+ labelLayout->addWidget(dragModeButton);
+ labelLayout->addStretch();
labelLayout->addWidget(antialiasButton);
labelLayout->addWidget(openGlButton);
labelLayout->addWidget(printButton);
@@ -145,6 +177,8 @@ View::View(const QString &name, QWidget *parent)
connect(rotateSlider, SIGNAL(valueChanged(int)), this, SLOT(setupMatrix()));
connect(graphicsView->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
connect(graphicsView->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
+ connect(selectModeButton, SIGNAL(toggled(bool)), this, SLOT(togglePointerMode()));
+ connect(dragModeButton, SIGNAL(toggled(bool)), this, SLOT(togglePointerMode()));
connect(antialiasButton, SIGNAL(toggled(bool)), this, SLOT(toggleAntialiasing()));
connect(openGlButton, SIGNAL(toggled(bool)), this, SLOT(toggleOpenGL()));
connect(rotateLeftIcon, SIGNAL(clicked()), this, SLOT(rotateLeft()));
@@ -158,7 +192,7 @@ View::View(const QString &name, QWidget *parent)
QGraphicsView *View::view() const
{
- return graphicsView;
+ return static_cast<QGraphicsView *>(graphicsView);
}
void View::resetView()
@@ -188,6 +222,14 @@ void View::setupMatrix()
setResetButtonEnabled();
}
+void View::togglePointerMode()
+{
+ graphicsView->setDragMode(selectModeButton->isChecked()
+ ? QGraphicsView::RubberBandDrag
+ : QGraphicsView::ScrollHandDrag);
+ graphicsView->setInteractive(selectModeButton->isChecked());
+}
+
void View::toggleOpenGL()
{
#ifndef QT_NO_OPENGL
@@ -212,14 +254,14 @@ void View::print()
#endif
}
-void View::zoomIn()
+void View::zoomIn(int level)
{
- zoomSlider->setValue(zoomSlider->value() + 1);
+ zoomSlider->setValue(zoomSlider->value() + level);
}
-void View::zoomOut()
+void View::zoomOut(int level)
{
- zoomSlider->setValue(zoomSlider->value() - 1);
+ zoomSlider->setValue(zoomSlider->value() - level);
}
void View::rotateLeft()
diff --git a/demos/chip/view.h b/demos/chip/view.h
index 8047b8b5a4..67c7675e0a 100644
--- a/demos/chip/view.h
+++ b/demos/chip/view.h
@@ -43,12 +43,27 @@
#define VIEW_H
#include <QFrame>
+#include <QGraphicsView>
-QT_FORWARD_DECLARE_CLASS(QGraphicsView)
QT_FORWARD_DECLARE_CLASS(QLabel)
QT_FORWARD_DECLARE_CLASS(QSlider)
QT_FORWARD_DECLARE_CLASS(QToolButton)
+class View;
+
+class GraphicsView : public QGraphicsView
+{
+ Q_OBJECT
+public:
+ GraphicsView(View *v) : QGraphicsView(), view(v) { }
+
+protected:
+ void wheelEvent(QWheelEvent *);
+
+private:
+ View *view;
+};
+
class View : public QFrame
{
Q_OBJECT
@@ -57,22 +72,27 @@ public:
QGraphicsView *view() const;
+public slots:
+ void zoomIn(int level = 1);
+ void zoomOut(int level = 1);
+
private slots:
void resetView();
void setResetButtonEnabled();
void setupMatrix();
+ void togglePointerMode();
void toggleOpenGL();
void toggleAntialiasing();
void print();
-
- void zoomIn();
- void zoomOut();
void rotateLeft();
void rotateRight();
-
+
private:
- QGraphicsView *graphicsView;
+ GraphicsView *graphicsView;
QLabel *label;
+ QLabel *label2;
+ QToolButton *selectModeButton;
+ QToolButton *dragModeButton;
QToolButton *openGlButton;
QToolButton *antialiasButton;
QToolButton *printButton;
diff --git a/demos/declarative/minehunt/minehunt.cpp b/demos/declarative/minehunt/minehunt.cpp
index 9c82f30fd0..aaaaaac175 100644
--- a/demos/declarative/minehunt/minehunt.cpp
+++ b/demos/declarative/minehunt/minehunt.cpp
@@ -195,6 +195,7 @@ bool MinehuntGame::flip(int row, int col)
won = false;
hasWonChanged();
setPlaying(false);
+ return true;
}
remaining--;
@@ -202,6 +203,7 @@ bool MinehuntGame::flip(int row, int col)
won = true;
hasWonChanged();
setPlaying(false);
+ return true;
}
return true;
}
@@ -209,7 +211,7 @@ bool MinehuntGame::flip(int row, int col)
bool MinehuntGame::flag(int row, int col)
{
TileData *t = tile(row, col);
- if(!t)
+ 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 4cf14411f7..d23bb05449 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
@@ -18,7 +17,7 @@ symbian:{
TARGET.EPOCALLOWDLLDATA = 1
TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
- qmlminehuntfiles.sources = MinehuntCore minehunt.qml
+ qmlminehuntfiles.files = 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/SamegameCore/samegame.js b/demos/declarative/samegame/SamegameCore/samegame.js
index 9266767738..e618a101e0 100755
--- a/demos/declarative/samegame/SamegameCore/samegame.js
+++ b/demos/declarative/samegame/SamegameCore/samegame.js
@@ -9,12 +9,14 @@ var scoresURL = "";
var gameDuration;
var component = Qt.createComponent(blockSrc);
-//Index function used instead of a 2D array
-function index(column,row) {
- return column + (row * maxColumn);
+// Index function used instead of a 2D array
+function index(column, row)
+{
+ return column + row * maxColumn;
}
-function timeStr(msecs) {
+function timeStr(msecs)
+{
var secs = Math.floor(msecs/1000);
var m = Math.floor(secs/60);
var ret = "" + m + "m " + (secs%60) + "s";
@@ -23,47 +25,48 @@ function timeStr(msecs) {
function startNewGame()
{
- //Delete blocks from previous game
- for(var i = 0; i<maxIndex; i++){
- if(board[i] != null)
+ // Delete blocks from previous game
+ for (var i = 0; i < maxIndex; i++) {
+ if (board[i] != null)
board[i].destroy();
}
- //Calculate board size
+ // Calculate board size
maxColumn = Math.floor(gameCanvas.width/gameCanvas.blockSize);
maxRow = Math.floor(gameCanvas.height/gameCanvas.blockSize);
- maxIndex = maxRow*maxColumn;
+ maxIndex = maxRow * maxColumn;
- //Close dialogs
+ // Close dialogs
nameInputDialog.forceClose();
dialog.forceClose();
- //Initialize Board
+ // Initialize Board
board = new Array(maxIndex);
gameCanvas.score = 0;
- for(var column=0; column<maxColumn; column++){
- for(var row=0; row<maxRow; row++){
- board[index(column,row)] = null;
- createBlock(column,row);
+ for (var column = 0; column < maxColumn; column++) {
+ for (var row = 0; row < maxRow; row++) {
+ board[index(column, row)] = null;
+ createBlock(column, row);
}
}
gameDuration = new Date();
}
-var fillFound;//Set after a floodFill call to the number of blocks found
-var floodBoard;//Set to 1 if the floodFill reaches off that node
-//NOTE: Be careful with vars named x,y, as the calling object's x,y are still in scope
+var fillFound; // Set after a floodFill call to the number of blocks found
+var floodBoard; // Set to 1 if the floodFill reaches off that node
+
+// NOTE: Be careful with vars named x,y, as the calling object's x,y are still in scope
function handleClick(x,y)
{
var column = Math.floor(x/gameCanvas.blockSize);
var row = Math.floor(y/gameCanvas.blockSize);
- if(column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+ if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
return;
- if(board[index(column, row)] == null)
+ if (board[index(column, row)] == null)
return;
- //If it's a valid block, remove it and all connected (does nothing if it's not connected)
+ // If it's a valid block, remove it and all connected (does nothing if it's not connected)
floodFill(column,row, -1);
- if(fillFound <= 0)
+ if (fillFound <= 0)
return;
gameCanvas.score += (fillFound - 1) * (fillFound - 1);
shuffleDown();
@@ -72,65 +75,65 @@ function handleClick(x,y)
function floodFill(column,row,type)
{
- if(board[index(column, row)] == null)
+ if (board[index(column, row)] == null)
return;
var first = false;
- if(type == -1){
+ if (type == -1) {
first = true;
type = board[index(column,row)].type;
-
- //Flood fill initialization
+
+ // Flood fill initialization
fillFound = 0;
floodBoard = new Array(maxIndex);
}
- if(column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+ if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
return;
- if(floodBoard[index(column, row)] == 1 || (!first && type != board[index(column,row)].type))
+ if (floodBoard[index(column, row)] == 1 || (!first && type != board[index(column, row)].type))
return;
floodBoard[index(column, row)] = 1;
- floodFill(column+1,row,type);
- floodFill(column-1,row,type);
- floodFill(column,row+1,type);
- floodFill(column,row-1,type);
- if(first==true && fillFound == 0)
- return;//Can't remove single blocks
- board[index(column,row)].dying = true;
- board[index(column,row)] = null;
+ floodFill(column + 1, row, type);
+ floodFill(column - 1, row, type);
+ floodFill(column, row + 1, type);
+ floodFill(column, row - 1, type);
+ if (first == true && fillFound == 0)
+ return; // Can't remove single blocks
+ board[index(column, row)].dying = true;
+ board[index(column, row)] = null;
fillFound += 1;
}
function shuffleDown()
{
- //Fall down
- for(var column=0; column<maxColumn; column++){
+ // Fall down
+ for (var column = 0; column < maxColumn; column++) {
var fallDist = 0;
- for(var row=maxRow-1; row>=0; row--){
- if(board[index(column,row)] == null){
+ for (var row = maxRow - 1; row >= 0; row--) {
+ if (board[index(column,row)] == null) {
fallDist += 1;
- }else{
- if(fallDist > 0){
- var obj = board[index(column,row)];
- obj.y = (row+fallDist) * gameCanvas.blockSize;
- board[index(column,row+fallDist)] = obj;
- board[index(column,row)] = null;
+ } else {
+ if (fallDist > 0) {
+ var obj = board[index(column, row)];
+ obj.y = (row + fallDist) * gameCanvas.blockSize;
+ board[index(column, row + fallDist)] = obj;
+ board[index(column, row)] = null;
}
}
}
}
- //Fall to the left
+ // Fall to the left
fallDist = 0;
- for(column=0; column<maxColumn; column++){
- if(board[index(column, maxRow - 1)] == null){
+ for (column = 0; column < maxColumn; column++) {
+ if (board[index(column, maxRow - 1)] == null) {
fallDist += 1;
- }else{
- if(fallDist > 0){
- for(row=0; row<maxRow; row++){
- obj = board[index(column,row)];
- if(obj == null)
+ } else {
+ if (fallDist > 0) {
+ for (row = 0; row < maxRow; row++) {
+ obj = board[index(column, row)];
+ if (obj == null)
continue;
- obj.x = (column-fallDist) * gameCanvas.blockSize;
- board[index(column-fallDist,row)] = obj;
- board[index(column,row)] = null;
+ obj.x = (column - fallDist) * gameCanvas.blockSize;
+ board[index(column - fallDist,row)] = obj;
+ board[index(column, row)] = null;
}
}
}
@@ -139,58 +142,59 @@ function shuffleDown()
function victoryCheck()
{
- //awards bonuses for no blocks left
+ // Awards bonuses for no blocks left
var deservesBonus = true;
- for(var column=maxColumn-1; column>=0; column--)
- if(board[index(column, maxRow - 1)] != null)
+ for (var column = maxColumn - 1; column >= 0; column--)
+ if (board[index(column, maxRow - 1)] != null)
deservesBonus = false;
- if(deservesBonus)
+ if (deservesBonus)
gameCanvas.score += 500;
- //Checks for game over
- if(deservesBonus || !(floodMoveCheck(0,maxRow-1, -1))){
+ // Checks for game over
+ if (deservesBonus || !(floodMoveCheck(0, maxRow - 1, -1))) {
gameDuration = new Date() - gameDuration;
nameInputDialog.show("You won! Please enter your name: ");
nameInputDialog.initialWidth = nameInputDialog.text.width + 20;
- if(nameInputDialog.name == "")
+ if (nameInputDialog.name == "")
nameInputDialog.width = nameInputDialog.initialWidth;
- nameInputDialog.text.opacity = 0;//Just a spacer
+ nameInputDialog.text.opacity = 0; // Just a spacer
}
}
-//only floods up and right, to see if it can find adjacent same-typed blocks
+// Only floods up and right, to see if it can find adjacent same-typed blocks
function floodMoveCheck(column, row, type)
{
- if(column >= maxColumn || column < 0 || row >= maxRow || row < 0)
+ if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)
return false;
- if(board[index(column, row)] == null)
+ if (board[index(column, row)] == null)
return false;
var myType = board[index(column, row)].type;
- if(type == myType)
+ if (type == myType)
return true;
return floodMoveCheck(column + 1, row, myType) ||
- floodMoveCheck(column, row - 1, board[index(column,row)].type);
+ floodMoveCheck(column, row - 1, board[index(column, row)].type);
}
-function createBlock(column,row){
+function createBlock(column,row)
+{
// Note that we don't wait for the component to become ready. This will
// only work if the block QML is a local file. Otherwise the component will
// not be ready immediately. There is a statusChanged signal on the
// component you could use if you want to wait to load remote files.
- if(component.status == Component.Ready){
+ if (component.status == Component.Ready) {
var dynamicObject = component.createObject(gameCanvas);
- if(dynamicObject == null){
+ if (dynamicObject == null) {
console.log("error creating block");
console.log(component.errorString());
return false;
}
dynamicObject.type = Math.floor(Math.random() * 3);
- dynamicObject.x = column*gameCanvas.blockSize;
- dynamicObject.y = row*gameCanvas.blockSize;
+ dynamicObject.x = column * gameCanvas.blockSize;
+ dynamicObject.y = row * gameCanvas.blockSize;
dynamicObject.width = gameCanvas.blockSize;
dynamicObject.height = gameCanvas.blockSize;
dynamicObject.spawned = true;
- board[index(column,row)] = dynamicObject;
- }else{
+ board[index(column, row)] = dynamicObject;
+ } else {
console.log("error loading block component");
console.log(component.errorString());
return false;
@@ -198,23 +202,35 @@ function createBlock(column,row){
return true;
}
-function saveHighScore(name) {
- if(scoresURL!="")
+function saveHighScore(name)
+{
+ if (scoresURL != "")
sendHighScore(name);
- //OfflineStorage
- var db = openDatabaseSync("SameGameScores", "1.0", "Local SameGame High Scores",100);
+ // Offline storage
+ var db = openDatabaseSync(
+ "SameGameScores",
+ "1.0",
+ "Local SameGame High Scores",
+ 100
+ );
var dataStr = "INSERT INTO Scores VALUES(?, ?, ?, ?)";
- var data = [name, gameCanvas.score, maxColumn+"x"+maxRow ,Math.floor(gameDuration/1000)];
+ var data = [
+ name,
+ gameCanvas.score,
+ maxColumn + "x" + maxRow,
+ Math.floor(gameDuration / 1000)
+ ];
db.transaction(
function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS Scores(name TEXT, score NUMBER, gridSize TEXT, time NUMBER)');
tx.executeSql(dataStr, data);
- //Only show results for the current grid size
- var rs = tx.executeSql('SELECT * FROM Scores WHERE gridSize = "'+maxColumn+"x"+maxRow+'" ORDER BY score desc LIMIT 10');
+ // Only show results for the current grid size
+ var rs = tx.executeSql('SELECT * FROM Scores WHERE gridSize = "'
+ + maxColumn + "x" + maxRow + '" ORDER BY score desc LIMIT 10');
var r = "\nHIGH SCORES for this grid size\n\n"
- for(var i = 0; i < rs.rows.length; i++){
- r += (i+1)+". " + rs.rows.item(i).name +' got '
+ for (var i = 0; i < rs.rows.length; i++) {
+ r += (i+1) + ". " + rs.rows.item(i).name + ' got '
+ rs.rows.item(i).score + ' points in '
+ rs.rows.item(i).time + ' seconds.\n';
}
@@ -223,13 +239,15 @@ function saveHighScore(name) {
);
}
-function sendHighScore(name) {
+function sendHighScore(name)
+{
var postman = new XMLHttpRequest()
- var postData = "name="+name+"&score="+gameCanvas.score
- +"&gridSize="+maxColumn+"x"+maxRow +"&time="+Math.floor(gameDuration/1000);
+ var postData = "name=" + name + "&score=" + gameCanvas.score
+ + "&gridSize=" + maxColumn + "x" + maxRow
+ + "&time=" + Math.floor(gameDuration / 1000);
postman.open("POST", scoresURL, true);
postman.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- postman.onreadystatechange = function() {
+ postman.onreadystatechange = function() {
if (postman.readyState == postman.DONE) {
dialog.show("Your score has been uploaded.");
}
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 2a99aa8823..837b82addd 100644
--- a/demos/declarative/snake/content/snake.js
+++ b/demos/declarative/snake/content/snake.js
@@ -39,7 +39,7 @@ function startNewGame()
return;
}
- if (heartbeat.running) {
+ if (activeGame) {
endGame();
startNewGameTimer.running = true;
return;
@@ -93,7 +93,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 5cbf1beb66..585c0b2f3a 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,7 +96,16 @@ 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 {
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/demos.pro b/demos/demos.pro
index fdc1e4cd34..362a3bc578 100644
--- a/demos/demos.pro
+++ b/demos/demos.pro
@@ -44,7 +44,7 @@ contains(QT_CONFIG, opengl):!contains(QT_CONFIG, opengles1):!contains(QT_CONFIG,
SUBDIRS += demos_boxes
}
-mac*: SUBDIRS += demos_macmainwindow
+mac* && !qpa: SUBDIRS += demos_macmainwindow
wince*|symbian|embedded|x11: SUBDIRS += demos_embedded
!contains(QT_EDITION, Console):!cross_compile:!embedded:!wince*:SUBDIRS += demos_arthurplugin
diff --git a/demos/embedded/desktopservices/desktopservices.pro b/demos/embedded/desktopservices/desktopservices.pro
index 94ddedd62d..e66db1cb64 100644
--- a/demos/embedded/desktopservices/desktopservices.pro
+++ b/demos/embedded/desktopservices/desktopservices.pro
@@ -7,8 +7,8 @@ SOURCES += desktopwidget.cpp contenttab.cpp linktab.cpp main.cpp
RESOURCES += desktopservices.qrc
-music.sources = data/*.mp3 data/*.wav
-image.sources = data/*.png
+music.files = data/*.mp3 data/*.wav
+image.files = data/*.png
target.path = $$[QT_INSTALL_DEMOS]/embedded/desktopservices
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
diff --git a/demos/embedded/fluidlauncher/fluidlauncher.pro b/demos/embedded/fluidlauncher/fluidlauncher.pro
index ca74c38c11..0799ed9197 100644
--- a/demos/embedded/fluidlauncher/fluidlauncher.pro
+++ b/demos/embedded/fluidlauncher/fluidlauncher.pro
@@ -33,7 +33,7 @@ wince*{
BUILD_DIR = debug
}
- executables.sources = \
+ executables.files = \
$$QT_BUILD_TREE/demos/embedded/embeddedsvgviewer/$${BUILD_DIR}/embeddedsvgviewer.exe \
$$QT_BUILD_TREE/demos/embedded/styledemo/$${BUILD_DIR}/styledemo.exe \
$$QT_BUILD_TREE/demos/deform/$${BUILD_DIR}/deform.exe \
@@ -45,10 +45,10 @@ wince*{
executables.path = .
- files.sources = $$PWD/screenshots $$PWD/slides $$PWD/../embeddedsvgviewer/shapes.svg
+ files.files = $$PWD/screenshots $$PWD/slides $$PWD/../embeddedsvgviewer/shapes.svg
files.path = .
- config.sources = $$PWD/config_wince/config.xml
+ config.files = $$PWD/config_wince/config.xml
config.path = .
DEPLOYMENT += config files executables
@@ -79,7 +79,7 @@ symbian {
}
}
- executables.sources = \
+ executables.files = \
$$QT_BUILD_TREE/demos/embedded/styledemo/styledemo.exe \
$$QT_BUILD_TREE/demos/deform/deform.exe \
$$QT_BUILD_TREE/demos/pathstroke/pathstroke.exe \
@@ -97,7 +97,7 @@ symbian {
executables.path = /sys/bin
- reg_resource.sources = \
+ reg_resource.files = \
$$regResourceDir(demos/embedded/styledemo/styledemo_reg.rsc) \
$$regResourceDir(demos/deform/deform_reg.rsc) \
$$regResourceDir(demos/pathstroke/pathstroke_reg.rsc) \
@@ -114,17 +114,17 @@ symbian {
$$regResourceDir(demos/embedded/flightinfo/flightinfo_reg.rsc)
contains(QT_CONFIG, phonon) {
- reg_resource.sources += $$regResourceDir(demos/qmediaplayer/qmediaplayer_reg.rsc)
+ reg_resource.files += $$regResourceDir(demos/qmediaplayer/qmediaplayer_reg.rsc)
}
contains(QT_CONFIG, multimedia) {
- reg_resource.sources += $$regResourceDir(demos/spectrum/app/spectrum_reg.rsc)
+ reg_resource.files += $$regResourceDir(demos/spectrum/app/spectrum_reg.rsc)
}
reg_resource.path = $$REG_RESOURCE_IMPORT_DIR
- resource.sources = \
+ resource.files = \
$$appResourceDir(demos/embedded/styledemo/styledemo.rsc) \
$$appResourceDir(demos/deform/deform.rsc) \
$$appResourceDir(demos/pathstroke/pathstroke.rsc) \
@@ -143,7 +143,7 @@ symbian {
resource.path = $$APP_RESOURCE_DIR
- mifs.sources = \
+ mifs.files = \
$$appResourceDir(demos/embedded/fluidlauncher/fluidlauncher.mif) \
$$appResourceDir(demos/embedded/styledemo/styledemo.mif) \
$$appResourceDir(demos/deform/deform.mif) \
@@ -162,28 +162,28 @@ symbian {
mifs.path = $$APP_RESOURCE_DIR
contains(QT_CONFIG, svg) {
- executables.sources += \
+ executables.files += \
$$QT_BUILD_TREE/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.exe \
$$QT_BUILD_TREE/demos/embedded/weatherinfo/weatherinfo.exe
- reg_resource.sources += \
+ reg_resource.files += \
$$regResourceDir(demos/embedded/embeddedsvgviewer/embeddedsvgviewer_reg.rsc) \
$$regResourceDir(demos/embedded/weatherinfo/weatherinfo_reg.rsc)
- resource.sources += \
+ resource.files += \
$$appResourceDir(demos/embedded/embeddedsvgviewer/embeddedsvgviewer.rsc) \
$$appResourceDir(demos/embedded/weatherinfo/weatherinfo.rsc)
- mifs.sources += \
+ mifs.files += \
$$appResourceDir(demos/embedded/embeddedsvgviewer/embeddedsvgviewer.mif) \
$$appResourceDir(demos/embedded/weatherinfo/weatherinfo.mif)
}
contains(QT_CONFIG, webkit) {
- executables.sources += $$QT_BUILD_TREE/demos/embedded/anomaly/anomaly.exe
- reg_resource.sources += $$regResourceDir(demos/embedded/anomaly/anomaly_reg.rsc)
- resource.sources += $$appResourceDir(demos/embedded/anomaly/anomaly.rsc)
- mifs.sources += \
+ executables.files += $$QT_BUILD_TREE/demos/embedded/anomaly/anomaly.exe
+ reg_resource.files += $$regResourceDir(demos/embedded/anomaly/anomaly_reg.rsc)
+ resource.files += $$appResourceDir(demos/embedded/anomaly/anomaly.rsc)
+ mifs.files += \
$$appResourceDir(demos/embedded/anomaly/anomaly.mif)
isEmpty(QT_LIBINFIX) {
@@ -195,61 +195,61 @@ symbian {
}
contains(QT_CONFIG, phonon) {
- executables.sources += $$QT_BUILD_TREE/demos/qmediaplayer/qmediaplayer.exe
- resource.sources += $$appResourceDir(demos/qmediaplayer/qmediaplayer.rsc)
- mifs.sources += \
+ executables.files += $$QT_BUILD_TREE/demos/qmediaplayer/qmediaplayer.exe
+ resource.files += $$appResourceDir(demos/qmediaplayer/qmediaplayer.rsc)
+ mifs.files += \
$$appResourceDir(demos/qmediaplayer/qmediaplayer.mif)
}
contains(QT_CONFIG, multimedia) {
- executables.sources += $$QT_BUILD_TREE/demos/spectrum/app/spectrum.exe
- executables.sources += $$QT_BUILD_TREE/demos/spectrum/3rdparty/fftreal/fftreal.dll
- resource.sources += $$appResourceDir(demos/spectrum/app/spectrum.rsc)
- mifs.sources += \
+ executables.files += $$QT_BUILD_TREE/demos/spectrum/app/spectrum.exe
+ executables.files += $$QT_BUILD_TREE/demos/spectrum/3rdparty/fftreal/fftreal.dll
+ resource.files += $$appResourceDir(demos/spectrum/app/spectrum.rsc)
+ mifs.files += \
$$appResourceDir(demos/spectrum/app/spectrum.mif)
}
contains(QT_CONFIG, script) {
- executables.sources += $$QT_BUILD_TREE/examples/script/context2d/context2d.exe
- reg_resource.sources += $$regResourceDir(examples/script/context2d/context2d_reg.rsc)
- resource.sources += $$appResourceDir(examples/script/context2d/context2d.rsc)
- mifs.sources += \
+ executables.files += $$QT_BUILD_TREE/examples/script/context2d/context2d.exe
+ reg_resource.files += $$regResourceDir(examples/script/context2d/context2d_reg.rsc)
+ resource.files += $$appResourceDir(examples/script/context2d/context2d.rsc)
+ mifs.files += \
$$appResourceDir(examples/script/context2d/context2d.mif)
}
qmldemos = qmlcalculator qmlclocks qmldialcontrol qmleasing qmlflickr qmlphotoviewer qmltwitter
contains(QT_CONFIG, declarative) {
for(qmldemo, qmldemos) {
- executables.sources += $$QT_BUILD_TREE/demos/embedded/$${qmldemo}/$${qmldemo}.exe
- reg_resource.sources += $$regResourceDir(demos/embedded/$${qmldemo}/$${qmldemo}_reg.rsc)
- resource.sources += $$appResourceDir(demos/embedded/$${qmldemo}/$${qmldemo}.rsc)
- mifs.sources += $$appResourceDir(demos/embedded/$${qmldemo}/$${qmldemo}.mif)
+ executables.files += $$QT_BUILD_TREE/demos/embedded/$${qmldemo}/$${qmldemo}.exe
+ reg_resource.files += $$regResourceDir(demos/embedded/$${qmldemo}/$${qmldemo}_reg.rsc)
+ resource.files += $$appResourceDir(demos/embedded/$${qmldemo}/$${qmldemo}.rsc)
+ mifs.files += $$appResourceDir(demos/embedded/$${qmldemo}/$${qmldemo}.mif)
}
}
- files.sources = $$PWD/screenshots $$PWD/slides
+ files.files = $$PWD/screenshots $$PWD/slides
files.path = .
- config.sources = $$PWD/config_s60/config.xml
+ config.files = $$PWD/config_s60/config.xml
config.path = .
- viewerimages.sources = $$PWD/../embeddedsvgviewer/shapes.svg
+ viewerimages.files = $$PWD/../embeddedsvgviewer/shapes.svg
viewerimages.path = /data/images/qt/demos/embeddedsvgviewer
# demos/mediaplayer make also use of these files.
- desktopservices_music.sources = \
+ desktopservices_music.files = \
$$PWD/../desktopservices/data/*.mp3 \
$$PWD/../desktopservices/data/*.wav
desktopservices_music.path = /data/sounds
- desktopservices_images.sources = $$PWD/../desktopservices/data/*.png
+ desktopservices_images.files = $$PWD/../desktopservices/data/*.png
desktopservices_images.path = /data/images
- saxbookmarks.sources = $$PWD/../../../examples/xml/saxbookmarks/frank.xbel
- saxbookmarks.sources += $$PWD/../../../examples/xml/saxbookmarks/jennifer.xbel
+ saxbookmarks.files = $$PWD/../../../examples/xml/saxbookmarks/frank.xbel
+ saxbookmarks.files += $$PWD/../../../examples/xml/saxbookmarks/jennifer.xbel
saxbookmarks.path = /data/qt/saxbookmarks
- fluidbackup.sources = backup_registration.xml
+ fluidbackup.files = backup_registration.xml
fluidbackup.path = /private/$$replace(TARGET.UID3, 0x,)
DEPLOYMENT += config files executables viewerimages saxbookmarks reg_resource resource \
diff --git a/demos/embedded/qmlcalculator/deployment.pri b/demos/embedded/qmlcalculator/deployment.pri
index a31303d7b0..a97498e91f 100644
--- a/demos/embedded/qmlcalculator/deployment.pri
+++ b/demos/embedded/qmlcalculator/deployment.pri
@@ -4,5 +4,5 @@ symbian {
qmlcalculator_uid3 = A000E3FB
qmlcalculator_files.path = $$APP_PRIVATE_DIR_BASE/$$qmlcalculator_uid3
}
-qmlcalculator_files.sources = $$qmlcalculator_src/calculator.qml $$qmlcalculator_src/Core
+qmlcalculator_files.files = $$qmlcalculator_src/calculator.qml $$qmlcalculator_src/Core
DEPLOYMENT += qmlcalculator_files
diff --git a/demos/embedded/qmlclocks/deployment.pri b/demos/embedded/qmlclocks/deployment.pri
index 09467330fb..6c6704ccc7 100644
--- a/demos/embedded/qmlclocks/deployment.pri
+++ b/demos/embedded/qmlclocks/deployment.pri
@@ -4,5 +4,5 @@ symbian {
qmlclocks_uid3 = A000E3FC
qmlclocks_files.path = $$APP_PRIVATE_DIR_BASE/$$qmlclocks_uid3
}
-qmlclocks_files.sources = $$qmlclocks_src/clocks.qml $$qmlclocks_src/content
+qmlclocks_files.files = $$qmlclocks_src/clocks.qml $$qmlclocks_src/content
DEPLOYMENT += qmlclocks_files
diff --git a/demos/embedded/qmldialcontrol/deployment.pri b/demos/embedded/qmldialcontrol/deployment.pri
index e0e72e6789..a9784439a4 100644
--- a/demos/embedded/qmldialcontrol/deployment.pri
+++ b/demos/embedded/qmldialcontrol/deployment.pri
@@ -4,5 +4,5 @@ symbian {
qmldialcontrol_uid3 = A000E3FD
qmldialcontrol_files.path = $$APP_PRIVATE_DIR_BASE/$$qmldialcontrol_uid3
}
-qmldialcontrol_files.sources = $$qmldialcontrol_src/dialcontrol.qml $$qmldialcontrol_src/content
+qmldialcontrol_files.files = $$qmldialcontrol_src/dialcontrol.qml $$qmldialcontrol_src/content
DEPLOYMENT += qmldialcontrol_files
diff --git a/demos/embedded/qmleasing/deployment.pri b/demos/embedded/qmleasing/deployment.pri
index d3621cb75d..946fcd9d89 100644
--- a/demos/embedded/qmleasing/deployment.pri
+++ b/demos/embedded/qmleasing/deployment.pri
@@ -4,5 +4,5 @@ symbian {
qmleasing_uid3 = A000E3FE
qmleasing_files.path = $$APP_PRIVATE_DIR_BASE/$$qmleasing_uid3
}
-qmleasing_files.sources = $$qmleasing_src/easing.qml $$qmleasing_src/content
+qmleasing_files.files = $$qmleasing_src/easing.qml $$qmleasing_src/content
DEPLOYMENT += qmleasing_files
diff --git a/demos/embedded/qmlflickr/deployment.pri b/demos/embedded/qmlflickr/deployment.pri
index b5082921d7..a38dc95f8c 100644
--- a/demos/embedded/qmlflickr/deployment.pri
+++ b/demos/embedded/qmlflickr/deployment.pri
@@ -4,5 +4,5 @@ symbian {
qmlflickr_uid3 = A000E3FF
qmlflickr_files.path = $$APP_PRIVATE_DIR_BASE/$$qmlflickr_uid3
}
-qmlflickr_files.sources = $$qmlflickr_src/flickr.qml $$qmlflickr_src/common $$qmlflickr_src/mobile
+qmlflickr_files.files = $$qmlflickr_src/flickr.qml $$qmlflickr_src/common $$qmlflickr_src/mobile
DEPLOYMENT += qmlflickr_files
diff --git a/demos/embedded/qmlphotoviewer/deployment.pri b/demos/embedded/qmlphotoviewer/deployment.pri
index 35937a8cbe..23882e3686 100644
--- a/demos/embedded/qmlphotoviewer/deployment.pri
+++ b/demos/embedded/qmlphotoviewer/deployment.pri
@@ -4,5 +4,5 @@ symbian {
qmlphotoviewer_uid3 = A000E400
qmlphotoviewer_files.path = $$APP_PRIVATE_DIR_BASE/$$qmlphotoviewer_uid3
}
-qmlphotoviewer_files.sources = $$qmlphotoviewer_src/photoviewer.qml $$qmlphotoviewer_src/PhotoViewerCore
+qmlphotoviewer_files.files = $$qmlphotoviewer_src/photoviewer.qml $$qmlphotoviewer_src/PhotoViewerCore
DEPLOYMENT += qmlphotoviewer_files
diff --git a/demos/embedded/qmltwitter/deployment.pri b/demos/embedded/qmltwitter/deployment.pri
index 4404e33531..3edc0e527c 100644
--- a/demos/embedded/qmltwitter/deployment.pri
+++ b/demos/embedded/qmltwitter/deployment.pri
@@ -4,5 +4,5 @@ symbian {
qmltwitter_uid3 = A000E401
qmltwitter_files.path = $$APP_PRIVATE_DIR_BASE/$$qmltwitter_uid3
}
-qmltwitter_files.sources = $$qmltwitter_src/twitter.qml $$qmltwitter_src/TwitterCore
+qmltwitter_files.files = $$qmltwitter_src/twitter.qml $$qmltwitter_src/TwitterCore
DEPLOYMENT += qmltwitter_files
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/qmediaplayer/qmediaplayer.pro b/demos/qmediaplayer/qmediaplayer.pro
index 9407a81ff1..8803d2ec79 100644
--- a/demos/qmediaplayer/qmediaplayer.pro
+++ b/demos/qmediaplayer/qmediaplayer.pro
@@ -27,7 +27,7 @@ DEPLOYMENT_PLUGIN += phonon_ds9 phonon_waveout
symbian {
TARGET.UID3 = 0xA000C613
- addFiles.sources = ../embedded/desktopservices/data/sax.mp3
+ addFiles.files = ../embedded/desktopservices/data/sax.mp3
addFiles.path = /data/sounds/
DEPLOYMENT += addFiles
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/3rdparty/fftreal/fftreal.pro b/demos/spectrum/3rdparty/fftreal/fftreal.pro
index 6305af4212..e5093ba88f 100644
--- a/demos/spectrum/3rdparty/fftreal/fftreal.pro
+++ b/demos/spectrum/3rdparty/fftreal/fftreal.pro
@@ -40,7 +40,7 @@ symbian {
macx {
CONFIG += lib_bundle
} else {
- !symbian: DESTDIR = ../..
+ !symbian: DESTDIR = ../..$${spectrum_build_dir}
}
# Install
diff --git a/demos/spectrum/app/app.pro b/demos/spectrum/app/app.pro
index 4fe8b6d6aa..a75b41af60 100644
--- a/demos/spectrum/app/app.pro
+++ b/demos/spectrum/app/app.pro
@@ -65,7 +65,7 @@ symbian {
LIBS += -F$${fftreal_dir}
LIBS += -framework fftreal
} else {
- LIBS += -L..
+ LIBS += -L..$${spectrum_build_dir}
LIBS += -lfftreal
}
}
@@ -86,15 +86,13 @@ symbian {
!contains(DEFINES, DISABLE_FFT) {
# Include FFTReal DLL in the SIS file
- fftreal.sources = ../fftreal.dll
+ fftreal.files = ../fftreal.dll
fftreal.path = !:/sys/bin
DEPLOYMENT += fftreal
}
} else {
+ DESTDIR = ..$${spectrum_build_dir}
macx {
- # Specify directory in which to create spectrum.app bundle
- DESTDIR = ..
-
!contains(DEFINES, DISABLE_FFT) {
# Relocate fftreal.framework into spectrum.app bundle
framework_dir = ../spectrum.app/Contents/Frameworks
@@ -110,10 +108,7 @@ symbian {
../spectrum.app/Contents/MacOS/spectrum
}
} else {
- # Specify directory in which to create spectrum application
- DESTDIR = ..
-
- unix: {
+ linux-g++*: {
# Provide relative path from application to fftreal library
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN
}
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/spectrum/spectrum.pri b/demos/spectrum/spectrum.pri
index c09aa0d5d7..57739007c0 100644
--- a/demos/spectrum/spectrum.pri
+++ b/demos/spectrum/spectrum.pri
@@ -35,3 +35,15 @@ DEFINES += SPECTRUM_ANALYSER_SEPARATE_THREAD
# Suppress warnings about strncpy potentially being unsafe, emitted by MSVC
win32: DEFINES += _CRT_SECURE_NO_WARNINGS
+win32 {
+ # spectrum_build_dir is defined with a leading slash so that it can
+ # be used in contexts such as
+ # ..$${spectrum_build_dir}
+ # without the result having a trailing slash where spectrum_build_dir
+ # is undefined.
+ spectrum_build_dir = /release
+ if (!debug_and_release|build_pass): CONFIG(debug, debug|release) {
+ spectrum_build_dir = /debug
+ }
+}
+
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..c9cc492bce 100644
--- a/demos/symbianpkgrules.pri
+++ b/demos/symbianpkgrules.pri
@@ -13,4 +13,6 @@ vendorinfo = \
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/demos/textedit/textedit.qdoc b/demos/textedit/textedit.qdoc
index f3ba4d7c7d..c27589e61f 100644
--- a/demos/textedit/textedit.qdoc
+++ b/demos/textedit/textedit.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/dist/changes-4.6.4 b/dist/changes-4.6.4
index 389aa3a8f3..3949b9a943 100644
--- a/dist/changes-4.6.4
+++ b/dist/changes-4.6.4
@@ -66,8 +66,6 @@ QtOpenGL
- QGLShaderProgram
* [QTBUG-12478] Don't resolve GLSL extensions if no shaders.
* [QTBUG-12591] setUniformValue(QSize) was setting (w,w) not (w,h).
- * [QTBUG-12862] Don't #define highp/mediump/lowp if the desktop OpenGL
- implementation has the GL_ARB_ES2_compatibility extension.
* [QTBUG-12554] Wrong OpenGLVersionFlags on OpenGL 4.0 systems.
QtScript
@@ -109,7 +107,7 @@ Third party components
Qt for Unix (X11 and Mac OS X)
------------------------------
- -
+ -
Qt for Linux/X11
----------------
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..49bdd8ed60
--- /dev/null
+++ b/dist/changes-4.7.2
@@ -0,0 +1,158 @@
+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
+-----
+
+ - foo
+ * bar
+
+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/dist/changes-4.8.0 b/dist/changes-4.8.0
index f8ca4bc4b7..c55faf6f20 100644
--- a/dist/changes-4.8.0
+++ b/dist/changes-4.8.0
@@ -37,6 +37,8 @@ Third party components
QtCore
------
- Removed support for QT_NO_THREAD define for QHostInfo.
+ - Optimized plugin loading on ELF platforms.
+ Print failure reason at runtime with QT_DEBUG_PLUGINS=1 in environment.
QtGui
-----
diff --git a/doc/src/bughowto.qdoc b/doc/src/bughowto.qdoc
index a833e00533..1793fcee24 100644
--- a/doc/src/bughowto.qdoc
+++ b/doc/src/bughowto.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
@@ -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
@@ -51,7 +51,7 @@
compiled with
\o Reliable and clear description on how to reproduce the problem
\endlist
-
+
If possible, please provide a test written using the QtTest module
as this will improve the procedure of reproducing your problem and
allow the developers to address the issue in a more efficient way.
diff --git a/doc/src/classes.qdoc b/doc/src/classes.qdoc
index b3f8869b80..66009f5765 100644
--- a/doc/src/classes.qdoc
+++ b/doc/src/classes.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/classes/exportedfunctions.qdoc b/doc/src/classes/exportedfunctions.qdoc
index b3fd5a004e..ac6a970eee 100644
--- a/doc/src/classes/exportedfunctions.qdoc
+++ b/doc/src/classes/exportedfunctions.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/classes/phonon-api.qdoc b/doc/src/classes/phonon-api.qdoc
index 6fe022359b..6c9c8dea0e 100644
--- a/doc/src/classes/phonon-api.qdoc
+++ b/doc/src/classes/phonon-api.qdoc
@@ -4114,6 +4114,13 @@
*/
/*!
+ \fn Phonon::VideoWidget::snapshot() const
+ \since 4.7
+
+ Returns a snapshot of the current frame shown in the widget.
+*/
+
+/*!
\enum Phonon::VideoWidget::ScaleMode
The ScaleMode enum describes how to treat aspect ratio during
@@ -4305,6 +4312,22 @@
*/
/*!
+ \class Phonon::VideoWidgetInterface44
+ \inmodule Phonon
+ \since 4.7
+*/
+
+/*!
+ \fn Phonon::VideoWidgetInterface44::snapshot() const
+*/
+
+/*!
+ \typedef Phonon::VideoWidgetInterfaceLatest
+ \inmodule Phonon
+ \since 4.7
+*/
+
+/*!
\class Phonon::PlatformPlugin
\inmodule Phonon
\since 4.4
@@ -5021,3 +5044,103 @@
\internal
*/
+/*!
+ \class Phonon::PulseSupport
+ \inmodule Phonon
+ \since 4.7
+ \internal
+*/
+
+/*!
+ \class Phonon::AudioDataOutput
+ \inmodule Phonon
+ \since 4.7
+
+ \brief The AudioDataOutput class provides access to audio data.
+
+ This class is used to obtain audio data, typically for the purpose of
+ visualizing it.
+
+ Although it is not designed for realtime performance, the latencies
+ associated with accessing the data should be low enough for applications
+ that provide visualizations of the data. This class can also be used to
+ save the audio data for further processing.
+*/
+
+/*!
+ \enum Phonon::AudioDataOutput::Channel
+
+ This enum describes the channel audio data belongs to.
+
+ \value LeftChannel
+ \value RightChannel
+ \value CenterChannel
+ \value LeftSurroundChannel
+ \value RightSurroundChannel
+ \value SubwooferChannel
+*/
+
+/*!
+ \property Phonon::AudioDataOutput::dataSize
+ \brief the number of samples passed via the dataReady() signal.
+*/
+
+/*!
+ \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
+ \a data sent by the signal is supplied in the form of a map that holds the
+ data for different output channels.
+*/
+
+/*!
+ \fn Phonon::AudioDataOutputPrivate::AudioDataOutputPrivate()
+ \internal
+*/
+
+/*!
+ \fn Phonon::AudioDataOutputInterface::~AudioDataOutputInterface()
+
+ Destroys the data interface.
+*/
+
+/*!
+ \fn Phonon::AudioDataOutputInterface::frontendObject() const
+ \internal
+*/
+
+/*!
+ \fn Phonon::AudioDataOutputInterface::setFrontendObject(AudioDataOutput *)
+ \internal
+*/
+
+/*!
+ \fn Phonon::GlobalConfigPrivate::GlobalConfigPrivate()
+ \internal
+*/
+
+/*!
+ \fn Phonon::GlobalConfigPrivate::~GlobalConfigPrivate()
+ \internal
+*/
+
+/*!
+ \fn Phonon::SwiftSlider::~SwiftSlider()
+ \internal
+*/
diff --git a/doc/src/classes/phonon-namespace.qdoc b/doc/src/classes/phonon-namespace.qdoc
index 282c96fa6d..c53f69be3e 100644
--- a/doc/src/classes/phonon-namespace.qdoc
+++ b/doc/src/classes/phonon-namespace.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/credits.qdoc b/doc/src/credits.qdoc
index 2f1d76e3f1..20aa366693 100644
--- a/doc/src/credits.qdoc
+++ b/doc/src/credits.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/declarative/advtutorial.qdoc b/doc/src/declarative/advtutorial.qdoc
index 2ca9418170..04d7f07942 100644
--- a/doc/src/declarative/advtutorial.qdoc
+++ b/doc/src/declarative/advtutorial.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/declarative/anchor-layout.qdoc b/doc/src/declarative/anchor-layout.qdoc
index 99f777764c..b77ce36645 100644
--- a/doc/src/declarative/anchor-layout.qdoc
+++ b/doc/src/declarative/anchor-layout.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/declarative/animation.qdoc b/doc/src/declarative/animation.qdoc
index 53a0c55ce9..208a1c4b23 100644
--- a/doc/src/declarative/animation.qdoc
+++ b/doc/src/declarative/animation.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/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc
index e327d4a34f..8ab06abaa9 100644
--- a/doc/src/declarative/basictypes.qdoc
+++ b/doc/src/declarative/basictypes.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
@@ -156,8 +156,10 @@
Example:
\qml
Rectangle { color: "steelblue" }
+ Rectangle { color: "transparent" }
Rectangle { color: "#FF0000" }
Rectangle { color: "#800000FF" }
+ Rectangle { color: "#00000000" } // ARGB fully transparent
\endqml
Or with the \l{QML:Qt::rgba()}{Qt.rgba()}, \l{QML:Qt::hsla()}{Qt.hsla()}, \l{QML:Qt::darker()}{Qt.darker()},
@@ -353,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:
@@ -364,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/codingconventions.qdoc b/doc/src/declarative/codingconventions.qdoc
index aa4feefd0b..ba789e0780 100644
--- a/doc/src/declarative/codingconventions.qdoc
+++ b/doc/src/declarative/codingconventions.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/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc
index a8df4b1201..28a8a7012e 100644
--- a/doc/src/declarative/declarativeui.qdoc
+++ b/doc/src/declarative/declarativeui.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/declarative/dynamicobjects.qdoc b/doc/src/declarative/dynamicobjects.qdoc
index e735bce0fc..daf2ae10c7 100644
--- a/doc/src/declarative/dynamicobjects.qdoc
+++ b/doc/src/declarative/dynamicobjects.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
@@ -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 252b96432c..54f07a219f 100644
--- a/doc/src/declarative/elements.qdoc
+++ b/doc/src/declarative/elements.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
@@ -37,8 +37,110 @@
To see the QML elements listed by functional area, see the
\l{Groups Of Related QML Elements} page.
- \generatelist qmlclasses
-
+ \table
+ \header \o {2,1} \bold {Basic Visual Items}
+ \row \o \l {Item} \o Basic item element inherited by all visual items in QML
+ \row \o \l {Rectangle} \o Basic visual rectangle element
+ \row \o \l {Gradient} \o Defines a gradient between two or more colors
+ \row \o \l {GradientStop} \o Defines a color used in a \l {Gradient}
+ \row \o \l {Image} \o Allows the use of bitmaps to a scene
+ \row \o \l {BorderImage} (Item-specific) \o Defines an image as a border
+ \row \o \l {AnimatedImage} \o For playing animations stored as a series of frames
+ \row \o \l {Text} \o Allows the use of formatted text in a scene
+ \row \o \l {TextInput} \o Displays an editable line of text
+ \row \o \l {IntValidator} \o Validator for integer values
+ \row \o \l {DoubleValidator} \o Validator for non-integer values
+ \row \o \l {RegExpValidator} \o Validator for string regular expressions
+ \row \o \l {TextEdit} \o Displays multiple lines of editable formatted text
+
+ \header \o {2,1} \bold {Basic Interaction Items}
+ \row \o \l {MouseArea} \o Handles mouse interactions
+ \row \o \l {FocusScope} \o For keyboard focus handling
+ \row \o \l {Flickable} \o Provides a surface that can be "flicked"
+ \row \o \l {Flipable} \o Provides a surface that produces flipping effects
+ \row \o \l {GestureArea} (experimental) \o Enables simple gesture handling
+
+ \header \o {2,1} \bold {States}
+ \row \o \l {State} \o Defines sets of configurations of objects and properties
+ \row \o \l {PropertyChanges} \o Describes property changes within a state
+ \row \o \l {StateGroup} \o Contains a set of states and state transitions
+ \row \o \l {StateChangeScript} \o Allows script binding in a state
+ \row \o \l {ParentChange} (Item-specific) \o Re-parent an Item in a state change
+ \row \o \l {AnchorChanges} \o Change the anchors of an item in a state
+
+ \header \o {2,1} \bold {Animation and Transitions}
+ \row \o \l {Behavior} \o Specifies a default animation for property changes
+ \row \o \l {SequentialAnimation} \o Runs animations sequentially
+ \row \o \l {ParallelAnimation} \o Runs animations in parallel
+ \row \o \l {PropertyAnimation} \o Animates property changes
+ \row \o \l {NumberAnimation} \o Animates properties of type qreal
+ \row \o \l {Vector3dAnimation} \o Animates properties of type QVector3d
+ \row \o \l {ColorAnimation} \o Animates color changes
+ \row \o \l {RotationAnimation} \o Animates rotations
+ \row \o \l {ParentAnimation} \o Animates parent changes
+ \row \o \l {AnchorAnimation} \o Animates anchor changes
+ \row \o \l {PauseAnimation} \o Pauses an animation
+ \row \o \l {SmoothedAnimation} \o Allows a property to smoothly track a value
+ \row \o \l {SpringAnimation} \o Allows a property to track a value in a spring-like motion
+ \row \o \l {PropertyAction} \o Sets immediate property changes during animation
+ \row \o \l {ScriptAction} \o Runs scripts during an animation
+ \row \o \l {Transition} \o Animates transitions during state changes
+
+ \header \o {2,1} \bold {Working with Data}
+ \row \o \l {Binding} \o Binds any value to any property
+ \row \o \l {ListModel} \o Defines a list of data
+ \row \o \l {ListElement} \o Defines a data item in a \l {ListModel}
+ \row \o \l {VisualItemModel} \o Contains items that already defines its own visual delegate
+ \row \o \l {VisualDataModel} \o Encapsulates a model and a delegate
+ \row \o \l {Package} \o Collection that enables sharing of items within different views
+ \row \o \l {XmlListModel} \o Specifies a model using XPath expressions
+ \row \o \l {XmlRole} \o Specifies a role for an \l {XmlListModel}
+
+ \header \o {2,1} \bold {Views}
+ \row \o \l {ListView} \o Provides a list visualization of a model
+ \row \o \l {GridView} \o Provides a grid visualization of a model
+ \row \o \l {PathView} \o Visualizes a model's contents along a path
+ \row \o \l {Path} \o Defines a path used by \l {PathView}
+ \row \o \l {PathLine} \o Defines a line in \l {Path}
+ \row \o \l {PathQuad} \o Defines a quadratic Bezier curve in a \l {Path}
+ \row \o \l {PathCubic} \o Defines a cubic Bezier curve in a \l {Path}
+ \row \o \l {PathAttribute} \o Allows the setting of attributes along a \l {Path}
+ \row \o \l {PathPercent} \o Modifies the item distribution along a \l {Path}
+ \row \o \l {WebView} \o Allows the addition of web content to a canvas
+
+ \header \o {2,1} \bold {Positioners}
+ \row \o \l {Column} \o Arranges its children vertically
+ \row \o \l {Row} \o Arranges its children horizontally
+ \row \o \l {Grid} \o Positions its children in a grid
+ \row \o \l {Flow} \o Positions its children with wrapping support
+
+ \header \o {2,1} \bold {Utility}
+ \row \o \l {Connections} \o Explicitly connects signals and signal handlers
+ \row \o \l {Component} \o Encapsulate QML items as a component
+ \row \o \l {Timer} \o Provides timed triggers
+ \row \o \l {QML:QtObject} {QtObject} \o Basic element containing only the objectName property
+ \row \o \l {QML:Qt} {Qt} \o The QML global Qt object provides useful enums and functions from Qt.
+ \row \o \l {WorkerScript} \o Enables the use of threads in QML
+ \row \o \l {Loader} \o Controls the loading of items or components
+ \row \o \l {Repeater} \o Uses a model to create multiples of components
+ \row \o \l {SystemPalette} \o Provides access to the Qt palettes
+ \row \o \l {FontLoader} \o Loads fonts by name or URL
+ \row \o \l {LayoutItem} \o Allows declarative UI elements inside Qt's Graphics View layouts
+
+ \header \o {2,1} \bold {Transforms}
+ \row \o \l {Scale} \o Assigns item scaling behaviors
+ \row \o \l {Rotation} \o Assigns item rotation behaviors
+ \row \o \l {Translate} \o Assigns item translation behaviors
+
+ \header \o {2,1} \bold {Effects}
+ \row \o \l {Particles} (experimental) \o Generates and animates particles
+ \row \o \l {ParticleMotionLinear} \o Adds linear motion behavior to \l {Particles}
+ \row \o \l {ParticleMotionGravity} \o Adds gravitational motion to \l {Particles}
+ \row \o \l {ParticleMotionWander} \o Adds varied motions to \l {Particles}
+ \endtable
+
+
+
*/
diff --git a/doc/src/declarative/example-slideswitch.qdoc b/doc/src/declarative/example-slideswitch.qdoc
index 09b6006d97..bad8bbffd2 100644
--- a/doc/src/declarative/example-slideswitch.qdoc
+++ b/doc/src/declarative/example-slideswitch.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/declarative/examples.qdoc b/doc/src/declarative/examples.qdoc
index 3f075bbb89..224d346021 100644
--- a/doc/src/declarative/examples.qdoc
+++ b/doc/src/declarative/examples.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/declarative/extending-tutorial.qdoc b/doc/src/declarative/extending-tutorial.qdoc
index 349ac3003b..2bfe62ec07 100644
--- a/doc/src/declarative/extending-tutorial.qdoc
+++ b/doc/src/declarative/extending-tutorial.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
@@ -260,49 +260,39 @@ 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
We can also use various other property types. QML has built-in support for the following
-types:
+types listed in the \l{Extending Types from QML} document, including the following:
\list
-\o bool
-\o unsigned int, int
-\o float, double, qreal
-\o QString
-\o QUrl
-\o QColor
+\o bool, unsigned int, int, float, double, qreal
+\o QString, QUrl, QColor
\o QDate, QTime, QDateTime
-\o QPoint, QPointF
-\o QSize, QSizeF
-\o QRect, QRectF
+\o QPoint, QPointF, QSize, QSizeF, QRect, QRectF
\o QVariant
\endlist
diff --git a/doc/src/declarative/extending.qdoc b/doc/src/declarative/extending.qdoc
index df8a1e7d27..19e9ffcf16 100644
--- a/doc/src/declarative/extending.qdoc
+++ b/doc/src/declarative/extending.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
@@ -80,19 +80,14 @@ Types can be registered by libraries, application code, or by plugins
Once registered, all \l {Qt's Property System}{properties} of the
supported types are available in QML. QML has intrinsic support for
-properties of these types:
+properties of the types listed in the \l{Extending Types from QML}
+document, including the following:
\list
-\o bool
-\o unsigned int, int
-\o float, double, qreal
-\o QString
-\o QUrl
-\o QColor
+\o bool, unsigned int, int, float, double, qreal
+\o QString, QUrl, QColor
\o QDate, QTime, QDateTime
-\o QPoint, QPointF
-\o QSize, QSizeF
-\o QRect, QRectF
+\o QPoint, QPointF, QSize, QSizeF, QRect, QRectF
\o QVariant
\endlist
@@ -432,7 +427,7 @@ on<Property-name>Changed, regardless of the name used for the NOTIFY
signal in C++. We recommend using <property-name>Changed() for the
NOTIFY signal in C++.
-See also \l {Extending types from QML}.
+See also \l {Extending Types from QML}.
\section1 Methods
@@ -640,7 +635,7 @@ public:
/*!
\page qml-extending-types.html
-\title Extending types from QML
+\title Extending Types from QML
Many of the elements available for use in QML are implemented in
\l {Extending QML in C++}{C++}. These types are know as "core types". QML
@@ -652,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.
@@ -684,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/focus.qdoc b/doc/src/declarative/focus.qdoc
index c3c94c5f0b..2e74fe0dc2 100644
--- a/doc/src/declarative/focus.qdoc
+++ b/doc/src/declarative/focus.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/declarative/globalobject.qdoc b/doc/src/declarative/globalobject.qdoc
index a9aee2f01d..ffc84f9d28 100644
--- a/doc/src/declarative/globalobject.qdoc
+++ b/doc/src/declarative/globalobject.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/declarative/integrating.qdoc b/doc/src/declarative/integrating.qdoc
index 258600949c..7028585597 100644
--- a/doc/src/declarative/integrating.qdoc
+++ b/doc/src/declarative/integrating.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
@@ -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/javascriptblocks.qdoc b/doc/src/declarative/javascriptblocks.qdoc
index d2906901ba..b6fad5b780 100644
--- a/doc/src/declarative/javascriptblocks.qdoc
+++ b/doc/src/declarative/javascriptblocks.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/declarative/modules.qdoc b/doc/src/declarative/modules.qdoc
index 25a61c9182..011eb63d5b 100644
--- a/doc/src/declarative/modules.qdoc
+++ b/doc/src/declarative/modules.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/declarative/network.qdoc b/doc/src/declarative/network.qdoc
index 60359de057..a19ca6b3a8 100644
--- a/doc/src/declarative/network.qdoc
+++ b/doc/src/declarative/network.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/declarative/positioners.qdoc b/doc/src/declarative/positioners.qdoc
index 8c9b8b7e6c..9265732447 100644
--- a/doc/src/declarative/positioners.qdoc
+++ b/doc/src/declarative/positioners.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/declarative/propertybinding.qdoc b/doc/src/declarative/propertybinding.qdoc
index f58d8fe1da..3bf85deef8 100644
--- a/doc/src/declarative/propertybinding.qdoc
+++ b/doc/src/declarative/propertybinding.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/declarative/qdeclarativedebugging.qdoc b/doc/src/declarative/qdeclarativedebugging.qdoc
index 26d3b386ce..9e0a969e9a 100644
--- a/doc/src/declarative/qdeclarativedebugging.qdoc
+++ b/doc/src/declarative/qdeclarativedebugging.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/declarative/qdeclarativedocument.qdoc b/doc/src/declarative/qdeclarativedocument.qdoc
index b6af90b392..8af24a632a 100644
--- a/doc/src/declarative/qdeclarativedocument.qdoc
+++ b/doc/src/declarative/qdeclarativedocument.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/declarative/qdeclarativei18n.qdoc b/doc/src/declarative/qdeclarativei18n.qdoc
index 620b902907..0d5fbccff2 100644
--- a/doc/src/declarative/qdeclarativei18n.qdoc
+++ b/doc/src/declarative/qdeclarativei18n.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/declarative/qdeclarativeintro.qdoc b/doc/src/declarative/qdeclarativeintro.qdoc
index c97240c2ff..1d807e3dd7 100644
--- a/doc/src/declarative/qdeclarativeintro.qdoc
+++ b/doc/src/declarative/qdeclarativeintro.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
@@ -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/qdeclarativemodels.qdoc b/doc/src/declarative/qdeclarativemodels.qdoc
index 7548c966ec..e11cd56dd4 100644
--- a/doc/src/declarative/qdeclarativemodels.qdoc
+++ b/doc/src/declarative/qdeclarativemodels.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/declarative/qdeclarativeperformance.qdoc b/doc/src/declarative/qdeclarativeperformance.qdoc
index 061a71cd42..ab8759e99a 100644
--- a/doc/src/declarative/qdeclarativeperformance.qdoc
+++ b/doc/src/declarative/qdeclarativeperformance.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/declarative/qdeclarativereference.qdoc b/doc/src/declarative/qdeclarativereference.qdoc
index 8c5811b885..c2c5e91c05 100644
--- a/doc/src/declarative/qdeclarativereference.qdoc
+++ b/doc/src/declarative/qdeclarativereference.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/declarative/qdeclarativesecurity.qdoc b/doc/src/declarative/qdeclarativesecurity.qdoc
index 7395af3cfb..01d6c5613f 100644
--- a/doc/src/declarative/qdeclarativesecurity.qdoc
+++ b/doc/src/declarative/qdeclarativesecurity.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/declarative/qdeclarativestates.qdoc b/doc/src/declarative/qdeclarativestates.qdoc
index 148726f62f..b663d43a41 100644
--- a/doc/src/declarative/qdeclarativestates.qdoc
+++ b/doc/src/declarative/qdeclarativestates.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/declarative/qml-intro.qdoc b/doc/src/declarative/qml-intro.qdoc
index 18fa439bb6..f891e01650 100644
--- a/doc/src/declarative/qml-intro.qdoc
+++ b/doc/src/declarative/qml-intro.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/declarative/qmlruntime.qdoc b/doc/src/declarative/qmlruntime.qdoc
index 51f9e4d51f..dfc0ad9a46 100644
--- a/doc/src/declarative/qmlruntime.qdoc
+++ b/doc/src/declarative/qmlruntime.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/declarative/qmlviewer.qdoc b/doc/src/declarative/qmlviewer.qdoc
index 81ad218e5b..82f1fec450 100644
--- a/doc/src/declarative/qmlviewer.qdoc
+++ b/doc/src/declarative/qmlviewer.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/declarative/qtbinding.qdoc b/doc/src/declarative/qtbinding.qdoc
index 53db5c7718..8a969eb8e5 100644
--- a/doc/src/declarative/qtbinding.qdoc
+++ b/doc/src/declarative/qtbinding.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
@@ -30,126 +30,389 @@
\target qtbinding
\title Using QML in C++ Applications
-\tableofcontents
+QML is designed to be easily extensible from C++. The classes in the
+QtDeclarative module allow QML components to be loaded and manipulated from C++, and through
+Qt's \l{The Meta-Object System}{meta-object system}, QML and C++ objects can easily
+communicate through Qt signals and slots. In addition, QML plugins can be written to create
+reusable QML components for distribution.
-The QML API is split into three main classes - QDeclarativeEngine, QDeclarativeComponent and QDeclarativeContext.
-QDeclarativeEngine provides the environment in which QML is run, QDeclarativeComponent encapsulates
-\l {QML Documents}, and QDeclarativeContext allows applications to expose data to QML component instances.
+You may want to mix QML and C++ for a number of reasons. For example:
-QML also includes a convenience API, QDeclarativeView, for applications that simply want to embed QML
-components into a new QGraphicsView. QDeclarativeView covers up many of the details discussed below.
-While QDeclarativeView is mainly intended for rapid prototyping it can have uses in production applications.
+\list
+\o To use functionality defined in a C++ source (for example, when using a C++ Qt-based data model, or
+calling functions in a third-party C++ library)
+\o To access functionality in the QtDeclarative module (for example, to dynamically generate
+images using QDeclarativeImageProvider)
+\o To write your own QML elements (whether for your applications, or for distribution to others)
+\endlist
+
+To use the QtDeclarative module, you must include and link to the module appropriately, as shown on
+the \l {QtDeclarative}{module index page}. The \l {Qt Declarative UI Runtime} documentation
+shows how to build a basic C++ application that uses this module.
+
+
+\section1 Core module classes
-If you are looking at retrofitting an existing Qt application with QML,
-read \l{Integrating QML with existing Qt UI code}.
-\section1 Basic Usage
+The QtDeclarative module provides a set of C++ APIs for extending your QML applications from C++ and
+embedding QML into C++ applications. There are several core classes in the QtDeclarative module
+that provide the essential capabilities for doing this. These are:
-Every application requires at least one QDeclarativeEngine. A QDeclarativeEngine allows the configuration of
-global settings that apply to all the QML component instances - such as the QNetworkAccessManager
-that is used for network communications, and the path used for persistent storage.
-Multiple QDeclarativeEngine's are only needed if the application requires these settings to differ
-between QML component instances.
+\list
+\o QDeclarativeEngine: A QML engine provides the environment for executing QML code. Every
+application requires at least one engine instance.
+\o QDeclarativeComponent: A component encapsulates a \l{QML Documents}{QML document}.
+\o QDeclarativeContext: A context allows an application to expose data to the QML components
+created by an engine.
+\endlist
-\l {QML Documents} are loaded using the QDeclarativeComponent class. Each QDeclarativeComponent instance
-represents a single QML document. A QDeclarativeComponent can be passed a document URL, or raw text
-representing the content of the document. The document URL can be a local filesystem URL, or
-any network URL supported by QNetworkAccessManager.
+A QDeclarativeEngine allows the configuration of global settings that apply to all of its QML
+component instances: for example, the QNetworkAccessManager to be used for network communications,
+and the file path to be used for persistent storage.
-QML component instances can then be created by calling the QDeclarativeComponent::create() method. Here's
-an example of loading a QML document, and creating an object from it.
+QDeclarativeComponent is used to load QML documents. Each QDeclarativeComponent instance represents
+a single document. A component can be created from the URL or file path of a QML document, or the raw
+QML code of the document. Component instances are instatiated through the
+QDeclarativeComponent::create() method, like this:
\code
- QDeclarativeEngine *engine = new QDeclarativeEngine(parent);
- QDeclarativeComponent component(engine, QUrl::fromLocalFile("main.qml"));
- QObject *myObject = component.create();
+QDeclarativeEngine engine;
+QDeclarativeComponent component(&engine, QUrl::fromLocalFile("MyRectangle.qml"));
+QObject *rectangleInstance = component.create();
+
+// ...
+delete rectangleInstance;
\endcode
-\section1 Exposing Data
+QML documents can also be loaded using QDeclarativeView. This class provides a convenient
+QWidget-based view for embedding QML components into QGraphicsView-based applications. (For other
+methods of integrating QML into QWidget-based applications, see \l {Integrating QML with existing Qt
+UI code}.)
+
+
+\section1 Approaches to using QML with C++
+
+There are a number of ways to extend your QML application through C++. For example, you could:
+
+\list
+\o Load a QML component and manipulate it (or its children) from C++
+\o Embed a C++ object and its properties directly into a QML component (for example, to make a
+particular C++ object callable from QML, or to replace a dummy list model data with a real data set)
+\o Define new QML elements (through QObject-based C++ classes) and create them directly from your
+QML code
+\endlist
+
+These methods are shown below. Naturally these approaches are not exclusive; you can mix any of
+these methods throughout your application as appropriate.
+
+
+\section2 Loading QML components from C++
+
+A QML document can be loaded with QDeclarativeComponent or QDeclarativeView. QDeclarativeComponent
+loads a QML component as a C++ object; QDeclarativeView also does this,
+but additionally loads the QML component directly into a QGraphicsView. It is convenient for loading
+a displayable QML component into a QWidget-based application.
+
+For example, suppose there is a \c MyItem.qml file that looks like this:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml start
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml end
+
+This QML document can be loaded with QDeclarativeComponent or QDeclarativeView with the following
+C++ code. Using a QDeclarativeComponent requires calling QDeclarativeComponent::create() to create
+a new instance of the component, while a QDeclarativeView automatically creates an instance of the
+component, which is accessible via QDeclarativeView::rootObject():
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp QDeclarativeComponent-a
+\dots 0
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp QDeclarativeComponent-b
+\o
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp QDeclarativeView
+\endtable
+
+This \c object is the instance of the \c MyItem.qml component that has been created. You can now
+modify the item's properties using QObject::setProperty() or QDeclarativeProperty:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp properties
+
+Alternatively, you can cast the object to its actual type and call functions with compile-time
+safety. In this case the base object of \c MyItem.qml is an \l Item, which is defined by the
+QDeclarativeItem class:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp cast
+
+You can also connect to any signals or call functions defined in the component using
+QMetaObject::invokeMethod() and QObject::connect(). See \l {Exchanging data between QML and C++}
+below for further details.
+
+\section3 Locating child objects
+
+QML components are essentially object trees with children that have siblings and their own children.
+Child objects of QML components can be located using the QObject::objectName property with
+QObject::findChild(). For example, if the root item in \c MyItem.qml had a child \l Rectangle item:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml start
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml child
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml end
+
+The child could be located like this:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp findChild
+
+If \c objectName is used inside a delegate of a ListView, \l Repeater or some other
+element that creates multiple instances of its delegates, there will be multiple children with
+the same \c objectName. In this case, QObject::findChildren() can be used to find all children
+with a matching \c objectName.
+
+\warning While it is possible to use C++ to access and manipulate QML objects deep into the
+object tree, we recommend that you do not take this approach outside of application
+testing and prototyping. One strength of QML and C++ integration is the ability to implement the
+QML user interface separately from the C++ logic and dataset backend, and this strategy breaks if the
+C++ side reaches deep into the QML components to manipulate them directly. This would make it difficult
+to, for example, swap a QML view component for another view, if the new component was missing a
+required \c objectName. It is better for the C++ implementation to know as little as possible about
+the QML user interface implementation and the composition of the QML object tree.
+
+
+\section2 Embedding C++ objects into QML components
+
+When loading a QML scene into a C++ application, it can be useful to directly embed C++ data into
+the QML object. QDeclarativeContext enables this by exposing data to the context of a QML
+component, allowing data to be injected from C++ into QML.
+
+For example, here is a QML item that refers to a \c currentDateTime value that does not exist in
+the current scope:
+
+\snippet doc/src/snippets/declarative/qtbinding/context/MyItem.qml 0
+
+This \c currentDateTime value can be set directly by the C++ application that loads the QML
+component, using QDeclarativeContext::setContextProperty():
+
+\snippet doc/src/snippets/declarative/qtbinding/context/main.cpp 0
+
+Context properties can hold either QVariant or QObject* values. This means custom C++ objects can
+also be injected using this approach, and these objects can be modified and read directly in QML.
+Here, we modify the above example to embed a QObject instance instead of a QDateTime value, and the QML code
+invokes a method on the object instance:
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/applicationdata.h 0
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp 0
+\o
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/MyItem.qml 0
+\endtable
+
+(Note that date/time values returned from C++ to QML can be formatted through
+\l{QML:Qt::formatDateTime}{Qt.formatDateTime()} and associated functions.)
+
+If the QML item needs to receive signals from the context property, it can connect to them using the
+\l Connections element. For example, if \c ApplicationData has a signal named \c
+dataChanged(), this signal can be connected to using an \c onDataChanged handler within
+a \l Connections object:
+
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/connections.qml 0
+
+Context properties can be useful for using C++ based data models in a QML view. See the
+\l {declarative/modelviews/stringlistmodel}{String ListModel},
+\l {declarative/modelviews/objectlistmodel}{Object ListModel} and
+\l {declarative/modelviews/abstractitemmodel}{AbstractItemModel} models for
+respective examples on using QStringListModel, QObjectList-based models and QAbstractItemModel
+in QML views.
+
+Also see the QDeclarativeContext documentation for more information.
+
+
+\section2 Defining new QML elements
+
+While new QML elements can be \l {Defining new Components}{defined in QML}, they can also be
+defined by C++ classes; in fact, many of the core \l {QML Elements} are implemented through
+C++ classes. When you create a QML object using one of these elements, you are simply creating an
+instance of a QObject-based C++ class and setting its properties.
+
+For example, here is an \c ImageViewer class with an \c image URL property:
+
+\snippet doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h 0
+
+Aside from the fact that it inherits QDeclarativeItem, this is an ordinary class that could
+exist outside of QML. However, once it is registered with the QML engine using qmlRegisterType():
+
+\snippet doc/src/snippets/declarative/qtbinding/newelements/main.cpp register
+
+Then, any QML code loaded by your C++ application or \l{QDeclarativeExtensionPlugin}{plugin} can create and manipulate
+\c ImageViewer objects:
+
+\snippet doc/src/snippets/declarative/qtbinding/newelements/standalone.qml 0
+
+Note that custom C++ types do not have to inherit from QDeclarativeItem; this is only necessary if it is
+a displayable item. If the item is not displayable, it can simply inherit from QObject.
+
+For more information on defining new QML elements, see the \l {Tutorial: Writing QML extensions with C++}
+{Writing QML extensions with C++} tutorial and the \l {Extending QML in C++} reference
+documentation.
+
+
+
+\section1 Exchanging data between QML and C++
+
+QML and C++ objects can communicate with one another through signals, slots and property
+modifications. For a C++ object, any data that is exposed to Qt's \l{The Meta-Object System}{Meta-Object System}
+- that is, properties, signals, slots and Q_INVOKABLE methods - become available to QML. On
+the QML side, all QML object data is automatically made available to the meta-object system and can
+be accessed from C++.
+
+
+\section2 Calling functions
-QML components are instantiated in a QDeclarativeContext. A context allows the application to expose data
-to the QML component instance. A single QDeclarativeContext can be used to instantiate all the objects
-used by an application, or several QDeclarativeContext can be created for more fine grained control over
-the data exposed to each instance. If a context is not passed to the QDeclarativeComponent::create()
-method, the QDeclarativeEngine's \l {QDeclarativeEngine::rootContext()}{root context} is used. Data exposed through
-the root context is available to all object instances.
+QML functions can be called from C++ and vice-versa.
-\section1 Simple Data
+All QML functions are exposed to the meta-object system and can be called using
+QMetaObject::invokeMethod(). Here is a C++ application that uses this to call a QML function:
-To expose data to a QML component instance, applications set \l {QDeclarativeContext::setContextProperty()}
-{context properties} which are then accessible by name from QML \l {Property Binding}s and JavaScript.
-The following example shows how to expose a background color to a QML file through QDeclarativeView:
+\table
+\row
+\o \snippet doc/src/snippets/declarative/qtbinding/functions-qml/MyItem.qml 0
+\o \snippet doc/src/snippets/declarative/qtbinding/functions-qml/main.cpp 0
+\endtable
+
+Notice the Q_RETURN_ARG() and Q_ARG() arguments for QMetaObject::invokeMethod() must be specified as
+QVariant types, as this is the generic data type used for QML functions and return values.
+
+To call a C++ function from QML, the function must be either a Qt slot, or a function marked with
+the Q_INVOKABLE macro, to be available to QML. In the following example, the QML code invokes
+methods on the \c myObject object, which has been set using QDeclarativeContext::setContextProperty():
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/functions-cpp/MyItem.qml 0
+\o
+\snippet doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h 0
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/functions-cpp/main.cpp 0
+\endtable
+
+Note that QML does not support overloaded functions. If a C++ has more than one function with the
+same name, there is no guarantee which overloaded function will be called from QML.
+
+
+\section2 Receiving signals
+
+All QML signals are automatically available to C++, and can be connected to using QObject::connect()
+like any ordinary Qt C++ signal.
+
+Here is a QML component with a signal named \c qmlSignal. This signal is connected to a C++ object's
+slot using QObject::connect():
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/signals-qml/MyItem.qml 0
+\o
+\snippet doc/src/snippets/declarative/qtbinding/signals-qml/myclass.h 0
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/signals-qml/main.cpp 0
+\endtable
+
+To connect to Qt C++ signals from within QML, use a signal handler with the \c on<SignalName> syntax.
+If the C++ object is directly creatable from within QML (see \l {Defining new QML elements} above)
+then the signal handler can be defined within the object declaration. In the following example, the
+QML code creates a \c ImageViewer object, and the \c imageChanged and \c loadingError signals of the
+C++ object are connected to through \c onImagedChanged and \c onLoadingError signal handlers in QML:
\table
\row
\o
-\c {// main.cpp}
-\snippet doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp 0
+
+\snippet doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h start
+\dots 4
+\snippet doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h end
\o
-\c {// main.qml}
-\snippet doc/src/snippets/declarative/qtbinding/contextproperties/main.qml 0
+\snippet doc/src/snippets/declarative/qtbinding/signals-cpp/standalone.qml 0
+\endtable
+
+(Note that if a signal has been declared as the NOTIFY signal for a property, QML allows it to be
+received with an \c on<Property>Changed handler even if the signal's name does not follow the \c
+<Property>Changed naming convention. In the above example, if the "imageChanged" signal was named
+"imageModified" instead, the \c onImageChanged signal handler would still be called.)
+
+If, however, the object with the signal is not created from within the QML code, and the QML item only has a
+reference to the created object - for example, if the object was set using
+QDeclarativeContext::setContextProperty() - then the \l Connections element can be used
+instead to create the signal handler:
+\table
+\row
+\o \snippet doc/src/snippets/declarative/qtbinding/signals-cpp/main.cpp connections
+\o \snippet doc/src/snippets/declarative/qtbinding/signals-cpp/MyItem.qml 0
\endtable
-Or, if you want \c main.cpp to create the component without showing it in a QDeclarativeView, you could create an instance of QDeclarativeContext using QDeclarativeEngine::rootContext() instead:
-\snippet doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp 1
+\section2 Modifying properties
-Context properties work just like normal properties in QML bindings - if the \c backgroundColor
-context property in this example was changed to red, the component object instances would
-all be automatically updated. Note that it is the responsibility of the creator to delete any
-QDeclarativeContext it constructs. If the \c windowContext is no longer needed when
-the \c window component instantiation is destroyed, the \c windowContext must be destroyed
-explicitly. The simplest way to ensure this is to set \c window as \c windowContext's parent.
+Any properties declared in a QML object are automatically accessible from C++. Given a QML item
+like this:
-QDeclarativeContexts form a tree - each QDeclarativeContext except for the root context has a parent. Child
-QDeclarativeContexts effectively inherit the context properties present in their parents. This gives
-applications more freedom in partitioning the data exposed to different QML object instances.
-If a QDeclarativeContext sets a context property that is also set in one of its parents, the new context
-property shadows that in the parent. In The following example, the \c background context property
-in \c {Context 1} shadows the \c background context property in the root context.
+\snippet doc/src/snippets/declarative/qtbinding/properties-qml/MyItem.qml 0
-\image qml-context-tree.png
+The value of the \c someNumber property can be set and read using QDeclarativeProperty, or
+QObject::setProperty() and QObject::property():
-\section2 Structured Data
+\snippet doc/src/snippets/declarative/qtbinding/properties-qml/main.cpp 0
-Context properties can also be used to expose structured and writable data to QML objects. In
-addition to all the types already supported by QVariant, QObject derived types can be assigned to
-context properties. QObject context properties allow the data exposed to be more structured, and
-allow QML to set values.
+You should always use QObject::setProperty(), QDeclarativeProperty or QMetaProperty::write() to
+change a QML property value, to ensure the QML engine is made aware of the property change. For example,
+say you have a custom element \c PushButton with a \c buttonText property that internally reflects
+the value of a \c m_buttonText member variable. Modifying the member variable directly like this is
+not a good idea:
-The following example creates a \c CustomPalette object, and sets it as the \c palette context
-property.
+\badcode
+// BAD!
+QDeclarativeComponent component(engine, "MyButton.qml");
+PushButton *button = qobject_cast<PushButton*>(component.create());
+button->m_buttonText = "Click me";
+\endcode
-\snippet doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h 0
+Since the value is changed directly, this bypasses Qt's \l{The Meta-Object System}{meta-object system}
+and the QML engine is not made aware of the property change. This means property bindings to
+\c buttonText would not be updated, and any \c onButtonTextChanged handlers would not be called.
-\snippet doc/src/snippets/declarative/qtbinding/custompalette/main.cpp 0
-The QML that follows references the palette object, and its properties, to set the appropriate
-background and text colors. When the window is clicked, the palette's text color is changed, and
-the window text will update accordingly.
+\target properties-cpp
-\snippet doc/src/snippets/declarative/qtbinding/custompalette/main.qml 0
+Any \l {The Property System}{Qt properties} - that is, those declared with the Q_PROPERTY()
+macro - are accessible from QML. Here is a modified version of the \l {Embedding C++ objects into
+QML components}{earlier example} on this page; here, the \c ApplicationData class has a \c backgroundColor
+property. This property can be written to and read from QML:
-To detect when a C++ property value - in this case the \c CustomPalette's \c text property -
-changes, the property must have a corresponding NOTIFY signal. The NOTIFY signal specifies a signal
-that is emitted whenever the property changes value. Implementers should take care to only emit the
-signal if the value \e changes to prevent loops from occurring. Accessing a property from a
-binding that does not have a NOTIFY signal will cause QML to issue a warning at runtime.
+\table
+\row
+\o \snippet doc/src/snippets/declarative/qtbinding/properties-cpp/applicationdata.h 0
+\o \snippet doc/src/snippets/declarative/qtbinding/properties-cpp/MyItem.qml 0
+\endtable
-\section2 Dynamic Structured Data
+Notice the \c backgroundColorChanged signal is declared as the NOTIFY signal for the
+\c backgroundColor property. If a Qt property does not have an associated NOTIFY signal,
+the property cannot be used for \l {Property Binding} in QML, as the QML engine would not be
+notified when the value changes. If you are using custom types in QML, make sure their
+properties have NOTIFY signals so that they can be used in property bindings.
-If an application is too dynamic to structure data as compile-time QObject types, dynamically
-structured data can be constructed at runtime using the QDeclarativePropertyMap class.
+See \l {Tutorial: Writing QML extensions with C++} for further details and examples
+on using Qt properties with QML.
-\section1 Calling C++ methods from QML
+\section1 Supported data types
-It is possible to call methods of QObject derived types by either exposing the
-methods as public slots, or by marking the methods Q_INVOKABLE.
+Any C++ data that is used from QML - whether as custom properties, or parameters for signals or
+functions - must be of a type that is recognizable by QML.
-The C++ methods can also have parameters and return values. QML has support for
-the following types:
+By default, QML recognizes the following data types:
\list
\o bool
@@ -163,102 +426,168 @@ the following types:
\o QSize, QSizeF
\o QRect, QRectF
\o QVariant
+\o QObject*
+\o Enumerations declared with Q_ENUMS()
\endlist
-This example toggles the "Stopwatch" object on/off when the MouseArea is clicked:
+To allow a custom C++ type to be created or used in QML, the C++ class must be registered as a QML
+type using qmlRegisterType(), as shown in the \l {Defining new QML elements} section above.
-\table
-\row
-\o
-\c {// main.cpp}
-\snippet doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h 0
-\snippet doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp 0
-\o
-\c {// main.qml}
-\snippet doc/src/snippets/declarative/qtbinding/stopwatch/main.qml 0
+\section2 Using enumerations of a custom type
-\endtable
+To use an enumeration from a custom C++ component, the enumeration must be declared with Q_ENUMS() to
+register it with Qt's meta object system. For example, the following C++ type has a \c Status enum:
-Note that in this particular example a better way to achieve the same result
-is to have a "running" property in \c main.qml. This leads to much nicer QML code:
+\snippet doc/src/snippets/declarative/qtbinding/enums/imageviewer.h start
+\snippet doc/src/snippets/declarative/qtbinding/enums/imageviewer.h end
+
+Providing the \c ImageViewer class has been registered using qmlRegisterType(), its \c Status enum can
+now be used from QML:
+
+\snippet doc/src/snippets/declarative/qtbinding/enums/standalone.qml 0
+
+The C++ type must be registered with QML to use its enums. If your C++ type is not instantiable, it
+can be registered using qmlRegisterUncreatableType().
+
+See the \l {Tutorial: Writing QML extensions with C++}{Writing QML extensions with C++} tutorial and
+the \l {Extending QML in C++} reference documentation for more information.
+
+
+\section2 Automatic type conversion
+
+As a convenience, some basic types can be specified in QML using format strings to make it easier to
+pass simple values from QML to C++.
\table
+\header
+\o Type
+\o String format
+\o Example
\row
-\o
-\code
-// main.qml
-import QtQuick 1.0
-
-Rectangle {
- MouseArea {
- anchors.fill: parent
- onClicked: stopwatch.running = !stopwatch.running
- }
-}
-\endcode
+\o QColor
+\o Color name, "#RRGGBB", "#RRGGBBAA"
+\o "red", "#ff0000", "#ff000000"
+\row
+\o QDate
+\o "YYYY-MM-DD"
+\o "2010-05-31"
+\row
+\o QPoint
+\o "x,y"
+\o "10,20"
+\row
+\o QRect
+\o "x,y,WidthxHeight"
+\o "50,50,100x100"
+\row
+\o QSize
+\o "WidthxHeight"
+\o "100x200"
+\row
+\o QTime
+\o "hh:mm:ss"
+\o "14:22:55"
+\row
+\o QUrl
+\o URL string
+\o "http://www.example.com"
+\row
+\o QVector3D
+\o "x,y,z"
+\o "0,1,0"
+\row
+\o Enumeration value
+\o Enum value name
+\o "AlignRight"
\endtable
-Of course, it is also possible to call \l {Adding new methods}{functions declared in QML from C++}.
+(More details on these string formats and types can be found in the
+\l {QML Basic Types}{basic type documentation}.)
+
+These string formats can be used to set QML \c property values and pass arguments to C++
+functions. This is demonstrated by various examples on this page; in the above
+\l{#properties-cpp}{Qt properties example}, the \c ApplicationData class has a \c backgroundColor
+property of a QColor type, which is set from the QML code with the string "red" rather rather
+than an actual QColor object.
+
+If it is preferred to pass an explicitly-typed value rather than a string, the global
+\l{QmlGlobalQtObject}{Qt object} provides convenience functions for creating some of the object
+types listed above. For example, \l{QML:Qt::rgba()}{Qt.rgba()} creates a QColor value from four
+RGBA values. The QColor returned from this function could be used instead of a string to set
+a QColor-type property or to call a C++ function that requires a QColor parameter.
+
+
+\section1 Writing QML plugins
+
+The QtDeclarative module includes the QDeclarativeExtensionPlugin class, which is an abstract
+class for writing QML plugins. This allows QML extension types to be dynamically loaded into
+QML applications.
+
+See the QDeclarativeExtensionPlugin documentation and \l {How to Create Qt Plugins} for more
+details.
+
+
+\section1 Managing resource files with the Qt resource system
+The \l {The Qt Resource System}{Qt resource system} allows resource files to be stored as
+binary files in an application executable. This can be useful when building a mixed
+QML/C++ application as it enables QML files (as well as other resources such as images
+and sound files) to be referred to through the resource system URI scheme rather than
+relative or absolute paths to filesystem resources. Note, however, that if you use the resource
+system, the application executable must be re-compiled whenever a QML source file is changed
+in order to update the resources in the package.
-\section1 Network Components
+To use the resource system in a mixed QML/C++ application:
-If the URL passed to QDeclarativeComponent is a network resource, or if the QML document references a
-network resource, the QDeclarativeComponent has to fetch the network data before it is able to create
-objects. In this case, the QDeclarativeComponent will have a \l {QDeclarativeComponent::Loading}{Loading}
-\l {QDeclarativeComponent::status()}{status}. An application will have to wait until the component
-is \l {QDeclarativeComponent::Ready}{Ready} before calling \l {QDeclarativeComponent::create()}.
+\list
+\o Create a \c .qrc \l {The Qt Resource System}{resource collection file} that lists resource
+ files in XML format
+\o From C++, load the main QML file as a resource using the \c :/ prefix or as a URL with the
+ \c qrc scheme
+\endlist
+
+Once this is done, all files specified by relative paths in QML will be loaded from
+the resource system instead. Use of the resource system is completely transparent to
+the QML layer; this means all QML code should refer to resource files using relative
+paths and should \e not use the \c qrc scheme. This scheme should only be used from
+C++ code for referring to resource files.
-The following example shows how to load a QML file from a network resource. After creating
-the QDeclarativeComponent, it tests whether the component is loading. If it is, it connects to the
-QDeclarativeComponent::statusChanged() signal and otherwise calls the \c {continueLoading()} method
-directly. This test is necessary, even for URLs that are known to be remote, just in case
-the component has been cached and is ready immediately.
+Here is a application packaged using the \l {The Qt Resource System}{Qt resource system}.
+The directory structure looks like this:
\code
-MyApplication::MyApplication()
-{
- // ...
- component = new QDeclarativeComponent(engine, QUrl("http://www.example.com/main.qml"));
- if (component->isLoading())
- QObject::connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)),
- this, SLOT(continueLoading()));
- else
- continueLoading();
-}
-
-void MyApplication::continueLoading()
-{
- if (component->isError()) {
- qWarning() << component->errors();
- } else {
- QObject *myObject = component->create();
- }
-}
+project
+ |- example.qrc
+ |- main.qml
+ |- images
+ |- background.png
+ |- main.cpp
+ |- project.pro
\endcode
-\section1 Qt Resources
+The \c main.qml and \c background.png files will be packaged as resource files. This is
+done in the \c example.qrc resource collection file:
-QML content can be loaded from \l {The Qt Resource System} using the \e qrc: URL scheme.
-For example:
+\quotefile doc/src/snippets/declarative/qtbinding/resources/example.qrc
-\c [project/example.qrc]
-\quotefile doc/src/snippets/declarative/qtbinding/resources/example.qrc
+Since \c background.png is a resource file, \c main.qml can refer to it using the relative
+path specified in \c example.qrc:
+
+\snippet doc/src/snippets/declarative/qtbinding/resources/main.qml 0
-\c [project/project.pro]
-\quotefile doc/src/snippets/declarative/qtbinding/resources/resources.pro
+To allow QML to locate resource files correctly, the \c main.cpp loads the main QML
+file, \c main.qml, as a resource file using the \c qrc scheme:
-\c [project/main.cpp]
\snippet doc/src/snippets/declarative/qtbinding/resources/main.cpp 0
-\c [project/main.qml]
-\snippet doc/src/snippets/declarative/qtbinding/resources/main.qml 0
+Finally \c project.pro uses the RESOURCES variable to indicate that \c example.qrc should
+be used to build the application resources:
+
+\quotefile doc/src/snippets/declarative/qtbinding/resources/resources.pro
+
+See \l {The Qt Resource System} for more information.
-Note that the resource system cannot be accessed from QML directly. If the main QML file is
-loaded as a resource, all files specified as relative paths in QML will also be loaded from
-the resource system. Using the resource system is completely transparent to the QML layer.
-This also means that if the main QML file is not loaded as a resource then files in the resource
-system cannot be accessed from QML.
*/
+
diff --git a/doc/src/declarative/qtdeclarative.qdoc b/doc/src/declarative/qtdeclarative.qdoc
index 5232841d2b..7ecdc53dc2 100644
--- a/doc/src/declarative/qtdeclarative.qdoc
+++ b/doc/src/declarative/qtdeclarative.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/declarative/qtprogrammers.qdoc b/doc/src/declarative/qtprogrammers.qdoc
index 69e6358d29..0c140935f6 100644
--- a/doc/src/declarative/qtprogrammers.qdoc
+++ b/doc/src/declarative/qtprogrammers.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/declarative/scope.qdoc b/doc/src/declarative/scope.qdoc
index 17f8632715..7e75380a76 100644
--- a/doc/src/declarative/scope.qdoc
+++ b/doc/src/declarative/scope.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/declarative/tutorial.qdoc b/doc/src/declarative/tutorial.qdoc
index f913d44e5a..8467478a5e 100644
--- a/doc/src/declarative/tutorial.qdoc
+++ b/doc/src/declarative/tutorial.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/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/demos/affine.qdoc b/doc/src/demos/affine.qdoc
index b4bd5d62aa..f8b3fd2f86 100644
--- a/doc/src/demos/affine.qdoc
+++ b/doc/src/demos/affine.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/demos/anomaly.qdoc b/doc/src/demos/anomaly.qdoc
index ab00757dc4..403a51663d 100644
--- a/doc/src/demos/anomaly.qdoc
+++ b/doc/src/demos/anomaly.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/demos/arthurplugin.qdoc b/doc/src/demos/arthurplugin.qdoc
index 2345fddf29..1c28bfe263 100644
--- a/doc/src/demos/arthurplugin.qdoc
+++ b/doc/src/demos/arthurplugin.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/demos/books.qdoc b/doc/src/demos/books.qdoc
index 8fbeb0a136..f712fb2fd7 100644
--- a/doc/src/demos/books.qdoc
+++ b/doc/src/demos/books.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/demos/boxes.qdoc b/doc/src/demos/boxes.qdoc
index bae6a70220..67657cefd6 100644
--- a/doc/src/demos/boxes.qdoc
+++ b/doc/src/demos/boxes.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/demos/browser.qdoc b/doc/src/demos/browser.qdoc
index 722e28b56a..6286f76829 100644
--- a/doc/src/demos/browser.qdoc
+++ b/doc/src/demos/browser.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/demos/chip.qdoc b/doc/src/demos/chip.qdoc
index bfe9cec59a..7573b2e75f 100644
--- a/doc/src/demos/chip.qdoc
+++ b/doc/src/demos/chip.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/demos/composition.qdoc b/doc/src/demos/composition.qdoc
index 7bf0caa0b7..b642abca3a 100644
--- a/doc/src/demos/composition.qdoc
+++ b/doc/src/demos/composition.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/demos/deform.qdoc b/doc/src/demos/deform.qdoc
index e516c2b294..6e7938f5af 100644
--- a/doc/src/demos/deform.qdoc
+++ b/doc/src/demos/deform.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/demos/desktopservices.qdoc b/doc/src/demos/desktopservices.qdoc
index b281bdf21f..1da3244fd4 100644
--- a/doc/src/demos/desktopservices.qdoc
+++ b/doc/src/demos/desktopservices.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/demos/digiflip.qdoc b/doc/src/demos/digiflip.qdoc
index f275797264..174c337263 100644
--- a/doc/src/demos/digiflip.qdoc
+++ b/doc/src/demos/digiflip.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/demos/embeddeddialogs.qdoc b/doc/src/demos/embeddeddialogs.qdoc
index db331dd7df..3be0e652e0 100644
--- a/doc/src/demos/embeddeddialogs.qdoc
+++ b/doc/src/demos/embeddeddialogs.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/demos/embeddedsvgviewer.qdoc b/doc/src/demos/embeddedsvgviewer.qdoc
index 9df35a8877..a866ef50dd 100644
--- a/doc/src/demos/embeddedsvgviewer.qdoc
+++ b/doc/src/demos/embeddedsvgviewer.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/demos/flickable.qdoc b/doc/src/demos/flickable.qdoc
index 9b2db8c135..1e1cb336bc 100644
--- a/doc/src/demos/flickable.qdoc
+++ b/doc/src/demos/flickable.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/demos/flightinfo.qdoc b/doc/src/demos/flightinfo.qdoc
index af4448b2d9..f31d298a19 100644
--- a/doc/src/demos/flightinfo.qdoc
+++ b/doc/src/demos/flightinfo.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/demos/fluidlauncher.qdoc b/doc/src/demos/fluidlauncher.qdoc
index eabeaaaf94..9619077306 100644
--- a/doc/src/demos/fluidlauncher.qdoc
+++ b/doc/src/demos/fluidlauncher.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/demos/gradients.qdoc b/doc/src/demos/gradients.qdoc
index 7552c541ec..de79b8c9a9 100644
--- a/doc/src/demos/gradients.qdoc
+++ b/doc/src/demos/gradients.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/demos/interview.qdoc b/doc/src/demos/interview.qdoc
index 40e63694e9..ea4ff9f1a1 100644
--- a/doc/src/demos/interview.qdoc
+++ b/doc/src/demos/interview.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/demos/lightmaps.qdoc b/doc/src/demos/lightmaps.qdoc
index 2234893e5d..02a3362d1a 100644
--- a/doc/src/demos/lightmaps.qdoc
+++ b/doc/src/demos/lightmaps.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/demos/macmainwindow.qdoc b/doc/src/demos/macmainwindow.qdoc
index 28ccf7c5cf..dd9553076e 100644
--- a/doc/src/demos/macmainwindow.qdoc
+++ b/doc/src/demos/macmainwindow.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/demos/mainwindow.qdoc b/doc/src/demos/mainwindow.qdoc
index 9bd301c7c3..97ebf84afd 100644
--- a/doc/src/demos/mainwindow.qdoc
+++ b/doc/src/demos/mainwindow.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/demos/mediaplayer.qdoc b/doc/src/demos/mediaplayer.qdoc
index 8d2fc9a226..b20cb5dae2 100644
--- a/doc/src/demos/mediaplayer.qdoc
+++ b/doc/src/demos/mediaplayer.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/demos/pathstroke.qdoc b/doc/src/demos/pathstroke.qdoc
index deaa660a61..ecb442db63 100644
--- a/doc/src/demos/pathstroke.qdoc
+++ b/doc/src/demos/pathstroke.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/demos/qtdemo.qdoc b/doc/src/demos/qtdemo.qdoc
index 04fd5486e5..65afa51027 100644
--- a/doc/src/demos/qtdemo.qdoc
+++ b/doc/src/demos/qtdemo.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/demos/raycasting.qdoc b/doc/src/demos/raycasting.qdoc
index 9ad4ca5764..5cbf55df6c 100644
--- a/doc/src/demos/raycasting.qdoc
+++ b/doc/src/demos/raycasting.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/demos/spectrum.qdoc b/doc/src/demos/spectrum.qdoc
index d5a3f853a4..0d3823bf69 100644
--- a/doc/src/demos/spectrum.qdoc
+++ b/doc/src/demos/spectrum.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/demos/spreadsheet.qdoc b/doc/src/demos/spreadsheet.qdoc
index 496425de9e..a77ba9ec76 100644
--- a/doc/src/demos/spreadsheet.qdoc
+++ b/doc/src/demos/spreadsheet.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/demos/sqlbrowser.qdoc b/doc/src/demos/sqlbrowser.qdoc
index 88eead642c..57e7bc2359 100644
--- a/doc/src/demos/sqlbrowser.qdoc
+++ b/doc/src/demos/sqlbrowser.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/demos/styledemo.qdoc b/doc/src/demos/styledemo.qdoc
index 1a6ba9c08b..21e23817f1 100644
--- a/doc/src/demos/styledemo.qdoc
+++ b/doc/src/demos/styledemo.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/demos/sub-attaq.qdoc b/doc/src/demos/sub-attaq.qdoc
index 42b6b450db..1d53a188bb 100644
--- a/doc/src/demos/sub-attaq.qdoc
+++ b/doc/src/demos/sub-attaq.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/demos/textedit.qdoc b/doc/src/demos/textedit.qdoc
index e7b628f132..40410c7c16 100644
--- a/doc/src/demos/textedit.qdoc
+++ b/doc/src/demos/textedit.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/demos/undo.qdoc b/doc/src/demos/undo.qdoc
index fd31ba1f47..c66def95c9 100644
--- a/doc/src/demos/undo.qdoc
+++ b/doc/src/demos/undo.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/demos/weatherinfo.qdoc b/doc/src/demos/weatherinfo.qdoc
index bc43a9729d..8e7bd674f1 100644
--- a/doc/src/demos/weatherinfo.qdoc
+++ b/doc/src/demos/weatherinfo.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/deployment/deployment-plugins.qdoc b/doc/src/deployment/deployment-plugins.qdoc
index 7bb14ff4f8..0885163368 100644
--- a/doc/src/deployment/deployment-plugins.qdoc
+++ b/doc/src/deployment/deployment-plugins.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/deployment/deployment.qdoc b/doc/src/deployment/deployment.qdoc
index f2908bd300..c078316543 100644
--- a/doc/src/deployment/deployment.qdoc
+++ b/doc/src/deployment/deployment.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
@@ -756,6 +756,7 @@
\snippet doc/src/snippets/code/doc_src_deployment.qdoc 21
to your .pro file. The \c embed_manifest_dll option is enabled by default.
+ The \c embed_manifest_exe option is NOT enabled by default.
You can find more information about manifest files and side-by-side
assemblies at the
diff --git a/doc/src/deployment/qt-conf.qdoc b/doc/src/deployment/qt-conf.qdoc
index 48d688ba25..920eba65d1 100644
--- a/doc/src/deployment/qt-conf.qdoc
+++ b/doc/src/deployment/qt-conf.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/deployment/qtconfig.qdoc b/doc/src/deployment/qtconfig.qdoc
index 8c3658ca54..e429599c02 100644
--- a/doc/src/deployment/qtconfig.qdoc
+++ b/doc/src/deployment/qtconfig.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/activeqt-dumpcpp.qdoc b/doc/src/development/activeqt-dumpcpp.qdoc
index 5d689ebd70..843d40d184 100644
--- a/doc/src/development/activeqt-dumpcpp.qdoc
+++ b/doc/src/development/activeqt-dumpcpp.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/activeqt-dumpdoc.qdoc b/doc/src/development/activeqt-dumpdoc.qdoc
index 3ecc2c93b3..26450e30fc 100644
--- a/doc/src/development/activeqt-dumpdoc.qdoc
+++ b/doc/src/development/activeqt-dumpdoc.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/activeqt-idc.qdoc b/doc/src/development/activeqt-idc.qdoc
index 60ac0793fd..7a0ff66a7d 100644
--- a/doc/src/development/activeqt-idc.qdoc
+++ b/doc/src/development/activeqt-idc.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/activeqt-testcon.qdoc b/doc/src/development/activeqt-testcon.qdoc
index 35fe5df683..86d409705e 100644
--- a/doc/src/development/activeqt-testcon.qdoc
+++ b/doc/src/development/activeqt-testcon.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/assistant-manual.qdoc b/doc/src/development/assistant-manual.qdoc
index 677e8d0470..9dc973db79 100644
--- a/doc/src/development/assistant-manual.qdoc
+++ b/doc/src/development/assistant-manual.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/debug.qdoc b/doc/src/development/debug.qdoc
index 9e881d1fa8..91a83cf61f 100644
--- a/doc/src/development/debug.qdoc
+++ b/doc/src/development/debug.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 01229ad559..df82fba489 100644
--- a/doc/src/development/designer-manual.qdoc
+++ b/doc/src/development/designer-manual.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
@@ -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-on-mac.qdoc b/doc/src/development/developing-on-mac.qdoc
index ab2ed7082d..5ea4d222da 100644
--- a/doc/src/development/developing-on-mac.qdoc
+++ b/doc/src/development/developing-on-mac.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/developing-with-qt.qdoc b/doc/src/development/developing-with-qt.qdoc
index b88fe3f199..6793abd25a 100644
--- a/doc/src/development/developing-with-qt.qdoc
+++ b/doc/src/development/developing-with-qt.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
@@ -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/moc.qdoc b/doc/src/development/moc.qdoc
index bbcaf3fd10..6ecaf09cf9 100644
--- a/doc/src/development/moc.qdoc
+++ b/doc/src/development/moc.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/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index 588a9cc85d..1230af3f70 100644
--- a/doc/src/development/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.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
@@ -939,7 +939,9 @@
\snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 130
- The default values depend on the version of the Symbian SDK you're using.
+ The default values depend on the version of the Symbian SDK you're using,
+ however, the Qt toolchain sets this to the maximum possible value and this
+ should not be changed.
\section2 Compiler specific options
@@ -958,23 +960,30 @@
Symbian applications may have unique identifiers attached to them.
Here is how to define them in a project file:
- There are four types of IDs supported: \c UID2, \c UID3, \c SID, and \c VID. They
+ There are four available types of IDs supported: \c UID2, \c UID3, \c SID, and \c VID. They
are specified like this:
\snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 132
- If \c UID2 is not specified, it defaults to the same value as \c UID3.
+ If \c SID is not specified, it defaults to the same value as \c UID3.
If \c UID3 is not specified, qmake will automatically generate a \c UID3
suitable for development and debugging. This value should be manually
specified for applications that are to be released. In order to obtain
- an official UID, please contact Nokia. Both \c SID and \c VID default to empty values.
-
- For more information about unique identifiers and their meaning for
- Symbian applications, please refer to the Symbian SDK documentation.
-
+ an official UID, please contact \l{Symbian}{http:\\www.symbiansigned.com}.
+ Both \c SID and \c VID default to empty values.
+
+ There exists one UID1 too, but this should not be touched by any application.
+
+ The UID2 has a specific value for different types of files - e.g. apps/exes
+ are always 0x100039CE. The toolchain will set this for value for the most common file types like,
+ EXE/APP and shared library DLL.
+
+ For more information about unique identifiers and their meaning for Symbian applications,
+ please refer to the \l{Symbian SDK documentation}{http://developer.symbian.org/main/documentation/reference/s3/pdk/GUID-380A8C4F-3EB6-5E1C-BCFB-ED5B866136D9.html}
+
\section2 Capabilities
- Capabilities define extra priviledges for the application, such as the
+ Capabilities define extra privileges for the application, such as the
ability to list all files on the file system. Capabilities are defined
in the project file like this:
diff --git a/doc/src/development/qmsdev.qdoc b/doc/src/development/qmsdev.qdoc
index ab99719180..07b77cfc73 100644
--- a/doc/src/development/qmsdev.qdoc
+++ b/doc/src/development/qmsdev.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/qtestlib.qdoc b/doc/src/development/qtestlib.qdoc
index a83c27e77e..e53957f9c0 100644
--- a/doc/src/development/qtestlib.qdoc
+++ b/doc/src/development/qtestlib.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
@@ -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
@@ -749,9 +750,10 @@
\section1 External Tools
Tools for handling and visualizing test data are available as part of
- the \l{qtestlib-tools} project on the Qt Labs Web site. These include
- a tool for comparing performance data obtained from test runs and a
- utility to generate Web-based graphs of performance data.
+ the qtestlib-tools project on the
+ \l{http://labs.qt.nokia.com/}{http://labs.qt.nokia.com/}Qt Labs Web site.
+ These include a tool for comparing performance data obtained from test
+ runs and a utility to generate Web-based graphs of performance data.
See the \l{qtestlib-tools Announcement} for more information on these
tools and a simple graphing example.
diff --git a/doc/src/development/rcc.qdoc b/doc/src/development/rcc.qdoc
index 5b3c6c754d..2bbac6a5ac 100644
--- a/doc/src/development/rcc.qdoc
+++ b/doc/src/development/rcc.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/tools-list.qdoc b/doc/src/development/tools-list.qdoc
index 4f6945d956..c362bdf98b 100644
--- a/doc/src/development/tools-list.qdoc
+++ b/doc/src/development/tools-list.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/uic.qdoc b/doc/src/development/uic.qdoc
index edeb64a727..ec8b3d6b32 100644
--- a/doc/src/development/uic.qdoc
+++ b/doc/src/development/uic.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/examples/2dpainting.qdoc b/doc/src/examples/2dpainting.qdoc
index b349c831ff..079fa13885 100644
--- a/doc/src/examples/2dpainting.qdoc
+++ b/doc/src/examples/2dpainting.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/examples/activeqt/comapp.qdoc b/doc/src/examples/activeqt/comapp.qdoc
index 1355cb5404..f1884eff33 100644
--- a/doc/src/examples/activeqt/comapp.qdoc
+++ b/doc/src/examples/activeqt/comapp.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/examples/activeqt/dotnet.qdoc b/doc/src/examples/activeqt/dotnet.qdoc
index f5238307da..55853d96f3 100644
--- a/doc/src/examples/activeqt/dotnet.qdoc
+++ b/doc/src/examples/activeqt/dotnet.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/examples/activeqt/hierarchy.qdoc b/doc/src/examples/activeqt/hierarchy.qdoc
index 71e21cf77f..7905e8a402 100644
--- a/doc/src/examples/activeqt/hierarchy.qdoc
+++ b/doc/src/examples/activeqt/hierarchy.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/examples/activeqt/menus.qdoc b/doc/src/examples/activeqt/menus.qdoc
index 7310e97d78..ed91a3e5ef 100644
--- a/doc/src/examples/activeqt/menus.qdoc
+++ b/doc/src/examples/activeqt/menus.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/examples/activeqt/multiple.qdoc b/doc/src/examples/activeqt/multiple.qdoc
index aae93b052e..036f80e066 100644
--- a/doc/src/examples/activeqt/multiple.qdoc
+++ b/doc/src/examples/activeqt/multiple.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/examples/activeqt/opengl.qdoc b/doc/src/examples/activeqt/opengl.qdoc
index caf9361b52..2c55e1eb3c 100644
--- a/doc/src/examples/activeqt/opengl.qdoc
+++ b/doc/src/examples/activeqt/opengl.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/examples/activeqt/qutlook.qdoc b/doc/src/examples/activeqt/qutlook.qdoc
index 9ceb6b6ddd..845305f07a 100644
--- a/doc/src/examples/activeqt/qutlook.qdoc
+++ b/doc/src/examples/activeqt/qutlook.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/examples/activeqt/simple.qdoc b/doc/src/examples/activeqt/simple.qdoc
index 72f99e8b91..9860326be6 100644
--- a/doc/src/examples/activeqt/simple.qdoc
+++ b/doc/src/examples/activeqt/simple.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/examples/activeqt/webbrowser.qdoc b/doc/src/examples/activeqt/webbrowser.qdoc
index 051a26f23d..3b66c5710a 100644
--- a/doc/src/examples/activeqt/webbrowser.qdoc
+++ b/doc/src/examples/activeqt/webbrowser.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/examples/activeqt/wrapper.qdoc b/doc/src/examples/activeqt/wrapper.qdoc
index 2cb0981603..4bf7901793 100644
--- a/doc/src/examples/activeqt/wrapper.qdoc
+++ b/doc/src/examples/activeqt/wrapper.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/examples/addressbook.qdoc b/doc/src/examples/addressbook.qdoc
index 18211e9f7e..8de177801a 100644
--- a/doc/src/examples/addressbook.qdoc
+++ b/doc/src/examples/addressbook.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/examples/analogclock.qdoc b/doc/src/examples/analogclock.qdoc
index fe39cda9af..45e78c36f9 100644
--- a/doc/src/examples/analogclock.qdoc
+++ b/doc/src/examples/analogclock.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/examples/animatedtiles.qdoc b/doc/src/examples/animatedtiles.qdoc
index 329f3fb869..5a99d2157a 100644
--- a/doc/src/examples/animatedtiles.qdoc
+++ b/doc/src/examples/animatedtiles.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/examples/appchooser.qdoc b/doc/src/examples/appchooser.qdoc
index 940b207467..f9c4a8d7a4 100644
--- a/doc/src/examples/appchooser.qdoc
+++ b/doc/src/examples/appchooser.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/examples/application.qdoc b/doc/src/examples/application.qdoc
index 699d40ccc7..b69009fe79 100644
--- a/doc/src/examples/application.qdoc
+++ b/doc/src/examples/application.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/examples/arrowpad.qdoc b/doc/src/examples/arrowpad.qdoc
index 0fa7c408c7..647f20ef38 100644
--- a/doc/src/examples/arrowpad.qdoc
+++ b/doc/src/examples/arrowpad.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/examples/audiodevices.qdoc b/doc/src/examples/audiodevices.qdoc
index 4bf65ee462..aa04f604b1 100644
--- a/doc/src/examples/audiodevices.qdoc
+++ b/doc/src/examples/audiodevices.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/examples/audioinput.qdoc b/doc/src/examples/audioinput.qdoc
index d224423a2d..b7f390b632 100644
--- a/doc/src/examples/audioinput.qdoc
+++ b/doc/src/examples/audioinput.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/examples/audiooutput.qdoc b/doc/src/examples/audiooutput.qdoc
index 429cff2061..618db27c36 100644
--- a/doc/src/examples/audiooutput.qdoc
+++ b/doc/src/examples/audiooutput.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/examples/basicdrawing.qdoc b/doc/src/examples/basicdrawing.qdoc
index 0e8cc69892..d0b5294d58 100644
--- a/doc/src/examples/basicdrawing.qdoc
+++ b/doc/src/examples/basicdrawing.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/examples/basicgraphicslayouts.qdoc b/doc/src/examples/basicgraphicslayouts.qdoc
index 335506a612..5951873894 100644
--- a/doc/src/examples/basicgraphicslayouts.qdoc
+++ b/doc/src/examples/basicgraphicslayouts.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/examples/basiclayouts.qdoc b/doc/src/examples/basiclayouts.qdoc
index 03cd5904c5..cbc9297dc7 100644
--- a/doc/src/examples/basiclayouts.qdoc
+++ b/doc/src/examples/basiclayouts.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
@@ -66,7 +66,7 @@
horizontal layout. Next we use the \c createGridGroupBox() function
to create a group box containing several line edits and a small text
editor which are displayed in a grid layout. Finally, we use the
- \c createFormGroupBox() function to createa a group box with
+ \c createFormGroupBox() function to create a group box with
three labels and three input fields: a line edit, a combo box and
a spin box.
diff --git a/doc/src/examples/basicsortfiltermodel.qdoc b/doc/src/examples/basicsortfiltermodel.qdoc
index 176a77d23e..8d00e03f84 100644
--- a/doc/src/examples/basicsortfiltermodel.qdoc
+++ b/doc/src/examples/basicsortfiltermodel.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/examples/bearercloud.qdoc b/doc/src/examples/bearercloud.qdoc
index 7a61bac1b5..bf5da4123f 100644
--- a/doc/src/examples/bearercloud.qdoc
+++ b/doc/src/examples/bearercloud.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/examples/bearermonitor.qdoc b/doc/src/examples/bearermonitor.qdoc
index 529548891e..1a15bc3c31 100644
--- a/doc/src/examples/bearermonitor.qdoc
+++ b/doc/src/examples/bearermonitor.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/examples/blockingfortuneclient.qdoc b/doc/src/examples/blockingfortuneclient.qdoc
index 9545823799..be8a9ba5b9 100644
--- a/doc/src/examples/blockingfortuneclient.qdoc
+++ b/doc/src/examples/blockingfortuneclient.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/examples/blurpicker.qdoc b/doc/src/examples/blurpicker.qdoc
index 0edcfdd22a..7be5863485 100644
--- a/doc/src/examples/blurpicker.qdoc
+++ b/doc/src/examples/blurpicker.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/examples/borderlayout.qdoc b/doc/src/examples/borderlayout.qdoc
index 47414f7eb6..5ccc95f710 100644
--- a/doc/src/examples/borderlayout.qdoc
+++ b/doc/src/examples/borderlayout.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/examples/broadcastreceiver.qdoc b/doc/src/examples/broadcastreceiver.qdoc
index b40f7c0456..13555e7ea1 100644
--- a/doc/src/examples/broadcastreceiver.qdoc
+++ b/doc/src/examples/broadcastreceiver.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/examples/broadcastsender.qdoc b/doc/src/examples/broadcastsender.qdoc
index 0e88a8832d..b7140b9360 100644
--- a/doc/src/examples/broadcastsender.qdoc
+++ b/doc/src/examples/broadcastsender.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/examples/cachedtable.qdoc b/doc/src/examples/cachedtable.qdoc
index efbcee1a51..31cc40f6fc 100644
--- a/doc/src/examples/cachedtable.qdoc
+++ b/doc/src/examples/cachedtable.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/examples/calculator.qdoc b/doc/src/examples/calculator.qdoc
index bda369bfdc..a85e0b0b57 100644
--- a/doc/src/examples/calculator.qdoc
+++ b/doc/src/examples/calculator.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/examples/calculatorbuilder.qdoc b/doc/src/examples/calculatorbuilder.qdoc
index dae70be6c4..03acb93a5c 100644
--- a/doc/src/examples/calculatorbuilder.qdoc
+++ b/doc/src/examples/calculatorbuilder.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/examples/calculatorform.qdoc b/doc/src/examples/calculatorform.qdoc
index 5c36589f0e..9ee6e3c608 100644
--- a/doc/src/examples/calculatorform.qdoc
+++ b/doc/src/examples/calculatorform.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/examples/calendar.qdoc b/doc/src/examples/calendar.qdoc
index 27ef53842c..1395a3f004 100644
--- a/doc/src/examples/calendar.qdoc
+++ b/doc/src/examples/calendar.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/examples/calendarwidget.qdoc b/doc/src/examples/calendarwidget.qdoc
index 3338f222d5..a65145fadd 100644
--- a/doc/src/examples/calendarwidget.qdoc
+++ b/doc/src/examples/calendarwidget.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/examples/capabilitiesexample.qdoc b/doc/src/examples/capabilitiesexample.qdoc
index 59a30e5939..2eab2c017f 100644
--- a/doc/src/examples/capabilitiesexample.qdoc
+++ b/doc/src/examples/capabilitiesexample.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/examples/charactermap.qdoc b/doc/src/examples/charactermap.qdoc
index 9dd69cadef..b9dd0c0f87 100644
--- a/doc/src/examples/charactermap.qdoc
+++ b/doc/src/examples/charactermap.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/examples/chart.qdoc b/doc/src/examples/chart.qdoc
index 78b3295e19..4021d46832 100644
--- a/doc/src/examples/chart.qdoc
+++ b/doc/src/examples/chart.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/examples/classwizard.qdoc b/doc/src/examples/classwizard.qdoc
index d81084f69a..18da08e814 100644
--- a/doc/src/examples/classwizard.qdoc
+++ b/doc/src/examples/classwizard.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/examples/codecs.qdoc b/doc/src/examples/codecs.qdoc
index a0699bf34f..fc948e88e9 100644
--- a/doc/src/examples/codecs.qdoc
+++ b/doc/src/examples/codecs.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/examples/codeeditor.qdoc b/doc/src/examples/codeeditor.qdoc
index 9dc176c6e7..6c7b9146e5 100644
--- a/doc/src/examples/codeeditor.qdoc
+++ b/doc/src/examples/codeeditor.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/examples/collidingmice-example.qdoc b/doc/src/examples/collidingmice-example.qdoc
index 7a195759cd..af364ff8a4 100644
--- a/doc/src/examples/collidingmice-example.qdoc
+++ b/doc/src/examples/collidingmice-example.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/examples/coloreditorfactory.qdoc b/doc/src/examples/coloreditorfactory.qdoc
index 2229869dba..5a419e4a61 100644
--- a/doc/src/examples/coloreditorfactory.qdoc
+++ b/doc/src/examples/coloreditorfactory.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/examples/combowidgetmapper.qdoc b/doc/src/examples/combowidgetmapper.qdoc
index 3621419354..3a396c9e57 100644
--- a/doc/src/examples/combowidgetmapper.qdoc
+++ b/doc/src/examples/combowidgetmapper.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/examples/completer.qdoc b/doc/src/examples/completer.qdoc
index 0237475f0d..d56f4e6cb8 100644
--- a/doc/src/examples/completer.qdoc
+++ b/doc/src/examples/completer.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/examples/complexpingpong.qdoc b/doc/src/examples/complexpingpong.qdoc
index c99095fb1b..a49568d75e 100644
--- a/doc/src/examples/complexpingpong.qdoc
+++ b/doc/src/examples/complexpingpong.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/examples/concentriccircles.qdoc b/doc/src/examples/concentriccircles.qdoc
index 3594736f1b..03fb5ecdf0 100644
--- a/doc/src/examples/concentriccircles.qdoc
+++ b/doc/src/examples/concentriccircles.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/examples/configdialog.qdoc b/doc/src/examples/configdialog.qdoc
index d05fd81715..1c936b94ca 100644
--- a/doc/src/examples/configdialog.qdoc
+++ b/doc/src/examples/configdialog.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/examples/containerextension.qdoc b/doc/src/examples/containerextension.qdoc
index c4c108fde3..64c607e940 100644
--- a/doc/src/examples/containerextension.qdoc
+++ b/doc/src/examples/containerextension.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/examples/context2d.qdoc b/doc/src/examples/context2d.qdoc
index d9b30ea3cb..9501cc029f 100644
--- a/doc/src/examples/context2d.qdoc
+++ b/doc/src/examples/context2d.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/examples/contextsensitivehelp.qdoc b/doc/src/examples/contextsensitivehelp.qdoc
index d88356c680..79baf3c6ef 100644
--- a/doc/src/examples/contextsensitivehelp.qdoc
+++ b/doc/src/examples/contextsensitivehelp.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/examples/contiguouscache.qdoc b/doc/src/examples/contiguouscache.qdoc
index 2236fc4b4c..cb8bd087ec 100644
--- a/doc/src/examples/contiguouscache.qdoc
+++ b/doc/src/examples/contiguouscache.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/examples/customcompleter.qdoc b/doc/src/examples/customcompleter.qdoc
index 415abaaf94..9f4978058d 100644
--- a/doc/src/examples/customcompleter.qdoc
+++ b/doc/src/examples/customcompleter.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/examples/customsortfiltermodel.qdoc b/doc/src/examples/customsortfiltermodel.qdoc
index 16b3bb64c8..98fcd05111 100644
--- a/doc/src/examples/customsortfiltermodel.qdoc
+++ b/doc/src/examples/customsortfiltermodel.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/examples/customtype.qdoc b/doc/src/examples/customtype.qdoc
index 0765c5f384..dbd4f37e6b 100644
--- a/doc/src/examples/customtype.qdoc
+++ b/doc/src/examples/customtype.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/examples/customtypesending.qdoc b/doc/src/examples/customtypesending.qdoc
index 2c32154ef5..83f0e85a4d 100644
--- a/doc/src/examples/customtypesending.qdoc
+++ b/doc/src/examples/customtypesending.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
@@ -34,10 +34,6 @@
\image customtypesending-example.png
- Contents:
-
- \tableofcontents
-
\section1 Overview
In the \l{Custom Type Example}, we showed how to integrate custom types
@@ -51,7 +47,7 @@
a \c Window class containing signals and slots whose signatures include
\c Message arguments.
- \section1 The Window Class Definition
+ \section1 The Window and Message Class Definitions
We define a simple \c Window class with a signal and public slot that
allow a \c Message object to be sent via a signal-slot connection:
@@ -64,6 +60,17 @@
instance in the \c thisMessage private variable which holds the actual
message to be sent.
+ The \c Message class is defined in the following way:
+
+ \snippet examples/tools/customtypesending/message.h custom type definition
+
+ The type is declared to the meta-type system with the Q_DECLARE_METATYPE()
+ macro:
+
+ \snippet examples/tools/customtypesending/message.h custom type meta-type declaration
+
+ This will make the type available for use in direct signal-slot connections.
+
\section1 The Window Class Implementation
The \c Window constructor sets up a user interface containing a text
diff --git a/doc/src/examples/customwidgetplugin.qdoc b/doc/src/examples/customwidgetplugin.qdoc
index 05a2255478..c0c6180974 100644
--- a/doc/src/examples/customwidgetplugin.qdoc
+++ b/doc/src/examples/customwidgetplugin.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/examples/dbscreen.qdoc b/doc/src/examples/dbscreen.qdoc
index c3c4def8a2..36c7bde0e1 100644
--- a/doc/src/examples/dbscreen.qdoc
+++ b/doc/src/examples/dbscreen.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/examples/dbus-chat.qdoc b/doc/src/examples/dbus-chat.qdoc
index 593a3402d4..1627593ba6 100644
--- a/doc/src/examples/dbus-chat.qdoc
+++ b/doc/src/examples/dbus-chat.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/examples/dbus-listnames.qdoc b/doc/src/examples/dbus-listnames.qdoc
index b16391047f..0f634d3ad9 100644
--- a/doc/src/examples/dbus-listnames.qdoc
+++ b/doc/src/examples/dbus-listnames.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/examples/dbus-pingpong.qdoc b/doc/src/examples/dbus-pingpong.qdoc
index e1aea2a8f6..47f624d47d 100644
--- a/doc/src/examples/dbus-pingpong.qdoc
+++ b/doc/src/examples/dbus-pingpong.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/examples/dbus-remotecontrolledcar.qdoc b/doc/src/examples/dbus-remotecontrolledcar.qdoc
index b7ffd08b56..93179e617d 100644
--- a/doc/src/examples/dbus-remotecontrolledcar.qdoc
+++ b/doc/src/examples/dbus-remotecontrolledcar.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/examples/defaultprototypes.qdoc b/doc/src/examples/defaultprototypes.qdoc
index c3c056a169..d4075dbfec 100644
--- a/doc/src/examples/defaultprototypes.qdoc
+++ b/doc/src/examples/defaultprototypes.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/examples/delayedencoding.qdoc b/doc/src/examples/delayedencoding.qdoc
index e3f00dc594..f674dcb9d7 100644
--- a/doc/src/examples/delayedencoding.qdoc
+++ b/doc/src/examples/delayedencoding.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/examples/diagramscene.qdoc b/doc/src/examples/diagramscene.qdoc
index 7c643c2d38..98bc9833c2 100644
--- a/doc/src/examples/diagramscene.qdoc
+++ b/doc/src/examples/diagramscene.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/examples/digitalclock.qdoc b/doc/src/examples/digitalclock.qdoc
index 7495b7dd33..e550a5256c 100644
--- a/doc/src/examples/digitalclock.qdoc
+++ b/doc/src/examples/digitalclock.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/examples/dirview.qdoc b/doc/src/examples/dirview.qdoc
index 0fdebf5448..b36d81f656 100644
--- a/doc/src/examples/dirview.qdoc
+++ b/doc/src/examples/dirview.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/examples/dockwidgets.qdoc b/doc/src/examples/dockwidgets.qdoc
index 8ded28cdd4..1f31a12912 100644
--- a/doc/src/examples/dockwidgets.qdoc
+++ b/doc/src/examples/dockwidgets.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/examples/dombookmarks.qdoc b/doc/src/examples/dombookmarks.qdoc
index 1ff0e037d6..5cb6777d3f 100644
--- a/doc/src/examples/dombookmarks.qdoc
+++ b/doc/src/examples/dombookmarks.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/examples/domtraversal.qdoc b/doc/src/examples/domtraversal.qdoc
index 83c79e70f6..66546df77d 100644
--- a/doc/src/examples/domtraversal.qdoc
+++ b/doc/src/examples/domtraversal.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/examples/draganddroppuzzle.qdoc b/doc/src/examples/draganddroppuzzle.qdoc
index 0038b5df6d..8f99c93cd6 100644
--- a/doc/src/examples/draganddroppuzzle.qdoc
+++ b/doc/src/examples/draganddroppuzzle.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/examples/dragdroprobot.qdoc b/doc/src/examples/dragdroprobot.qdoc
index 59d9f10257..7e4c06f966 100644
--- a/doc/src/examples/dragdroprobot.qdoc
+++ b/doc/src/examples/dragdroprobot.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/examples/draggableicons.qdoc b/doc/src/examples/draggableicons.qdoc
index 7d5a9363c4..589ba27ef7 100644
--- a/doc/src/examples/draggableicons.qdoc
+++ b/doc/src/examples/draggableicons.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/examples/draggabletext.qdoc b/doc/src/examples/draggabletext.qdoc
index f1cf63b524..2195a8fe38 100644
--- a/doc/src/examples/draggabletext.qdoc
+++ b/doc/src/examples/draggabletext.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/examples/drilldown.qdoc b/doc/src/examples/drilldown.qdoc
index 56ac538b8b..8160bed1ea 100644
--- a/doc/src/examples/drilldown.qdoc
+++ b/doc/src/examples/drilldown.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/examples/dropsite.qdoc b/doc/src/examples/dropsite.qdoc
index 2767a35ecd..7145c0e312 100644
--- a/doc/src/examples/dropsite.qdoc
+++ b/doc/src/examples/dropsite.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/examples/dynamiclayouts.qdoc b/doc/src/examples/dynamiclayouts.qdoc
index 46a996c324..f691321873 100644
--- a/doc/src/examples/dynamiclayouts.qdoc
+++ b/doc/src/examples/dynamiclayouts.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/examples/easing.qdoc b/doc/src/examples/easing.qdoc
index 70237fe3a0..8116791041 100644
--- a/doc/src/examples/easing.qdoc
+++ b/doc/src/examples/easing.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/examples/echoplugin.qdoc b/doc/src/examples/echoplugin.qdoc
index a3c3772900..dec85bee32 100644
--- a/doc/src/examples/echoplugin.qdoc
+++ b/doc/src/examples/echoplugin.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/examples/editabletreemodel.qdoc b/doc/src/examples/editabletreemodel.qdoc
index c6cd824666..fc0743a056 100644
--- a/doc/src/examples/editabletreemodel.qdoc
+++ b/doc/src/examples/editabletreemodel.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/examples/elasticnodes.qdoc b/doc/src/examples/elasticnodes.qdoc
index bdc807f559..c33a4a1f6c 100644
--- a/doc/src/examples/elasticnodes.qdoc
+++ b/doc/src/examples/elasticnodes.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/examples/eventtransitions.qdoc b/doc/src/examples/eventtransitions.qdoc
index b07b22788b..cf59e1b7ce 100644
--- a/doc/src/examples/eventtransitions.qdoc
+++ b/doc/src/examples/eventtransitions.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/examples/extension.qdoc b/doc/src/examples/extension.qdoc
index daa44339ae..23c1eb43e7 100644
--- a/doc/src/examples/extension.qdoc
+++ b/doc/src/examples/extension.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/examples/factorial.qdoc b/doc/src/examples/factorial.qdoc
index f4ea0224ec..085d4690c8 100644
--- a/doc/src/examples/factorial.qdoc
+++ b/doc/src/examples/factorial.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/examples/fademessage.qdoc b/doc/src/examples/fademessage.qdoc
index 5735a549fd..15f7ce4d9d 100644
--- a/doc/src/examples/fademessage.qdoc
+++ b/doc/src/examples/fademessage.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/examples/fancybrowser.qdoc b/doc/src/examples/fancybrowser.qdoc
index ae8e7fa7a5..44683a3158 100644
--- a/doc/src/examples/fancybrowser.qdoc
+++ b/doc/src/examples/fancybrowser.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/examples/fetchmore.qdoc b/doc/src/examples/fetchmore.qdoc
index 85040f39cf..8781d6187c 100644
--- a/doc/src/examples/fetchmore.qdoc
+++ b/doc/src/examples/fetchmore.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/examples/filetree.qdoc b/doc/src/examples/filetree.qdoc
index b0e947af9b..11492e6761 100644
--- a/doc/src/examples/filetree.qdoc
+++ b/doc/src/examples/filetree.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/examples/findfiles.qdoc b/doc/src/examples/findfiles.qdoc
index e10329e4b0..a46dda00e6 100644
--- a/doc/src/examples/findfiles.qdoc
+++ b/doc/src/examples/findfiles.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/examples/fingerpaint.qdoc b/doc/src/examples/fingerpaint.qdoc
index 4b6257063f..264a22611c 100644
--- a/doc/src/examples/fingerpaint.qdoc
+++ b/doc/src/examples/fingerpaint.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/examples/flowlayout.qdoc b/doc/src/examples/flowlayout.qdoc
index c9ab554aac..c786b13afd 100644
--- a/doc/src/examples/flowlayout.qdoc
+++ b/doc/src/examples/flowlayout.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/examples/fontsampler.qdoc b/doc/src/examples/fontsampler.qdoc
index 1b05f7713a..7b38f587c7 100644
--- a/doc/src/examples/fontsampler.qdoc
+++ b/doc/src/examples/fontsampler.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/examples/formextractor.qdoc b/doc/src/examples/formextractor.qdoc
index af5977a6a3..b199b70498 100644
--- a/doc/src/examples/formextractor.qdoc
+++ b/doc/src/examples/formextractor.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/examples/fortuneclient.qdoc b/doc/src/examples/fortuneclient.qdoc
index ecfb4beaa7..fa75e3ee61 100644
--- a/doc/src/examples/fortuneclient.qdoc
+++ b/doc/src/examples/fortuneclient.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/examples/fortuneserver.qdoc b/doc/src/examples/fortuneserver.qdoc
index 92c67ca2bc..3708146477 100644
--- a/doc/src/examples/fortuneserver.qdoc
+++ b/doc/src/examples/fortuneserver.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/examples/framebufferobject.qdoc b/doc/src/examples/framebufferobject.qdoc
index 9f2d984806..9f5d2dc314 100644
--- a/doc/src/examples/framebufferobject.qdoc
+++ b/doc/src/examples/framebufferobject.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/examples/framebufferobject2.qdoc b/doc/src/examples/framebufferobject2.qdoc
index f8936ba313..0b2dbe99ed 100644
--- a/doc/src/examples/framebufferobject2.qdoc
+++ b/doc/src/examples/framebufferobject2.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/examples/fridgemagnets.qdoc b/doc/src/examples/fridgemagnets.qdoc
index 2ba5cc7efc..ac67b55c9b 100644
--- a/doc/src/examples/fridgemagnets.qdoc
+++ b/doc/src/examples/fridgemagnets.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/examples/frozencolumn.qdoc b/doc/src/examples/frozencolumn.qdoc
index 4ee0ef67f9..e8deddddfd 100644
--- a/doc/src/examples/frozencolumn.qdoc
+++ b/doc/src/examples/frozencolumn.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/examples/ftp.qdoc b/doc/src/examples/ftp.qdoc
index 30746a45d2..087ac5aac7 100644
--- a/doc/src/examples/ftp.qdoc
+++ b/doc/src/examples/ftp.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/examples/globalVariables.qdoc b/doc/src/examples/globalVariables.qdoc
index 18363fbf26..8468abb2f8 100644
--- a/doc/src/examples/globalVariables.qdoc
+++ b/doc/src/examples/globalVariables.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/examples/googlechat.qdoc b/doc/src/examples/googlechat.qdoc
index 9a6999ccab..a751ae5c56 100644
--- a/doc/src/examples/googlechat.qdoc
+++ b/doc/src/examples/googlechat.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/examples/googlesuggest.qdoc b/doc/src/examples/googlesuggest.qdoc
index 579124ba04..63fabf8d9c 100644
--- a/doc/src/examples/googlesuggest.qdoc
+++ b/doc/src/examples/googlesuggest.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/examples/grabber.qdoc b/doc/src/examples/grabber.qdoc
index 7555f0849a..19501a5578 100644
--- a/doc/src/examples/grabber.qdoc
+++ b/doc/src/examples/grabber.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/examples/graphicsview-anchorlayout.qdoc b/doc/src/examples/graphicsview-anchorlayout.qdoc
index dbf512c86a..61e7f55fd4 100644
--- a/doc/src/examples/graphicsview-anchorlayout.qdoc
+++ b/doc/src/examples/graphicsview-anchorlayout.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/examples/graphicsview-flowlayout.qdoc b/doc/src/examples/graphicsview-flowlayout.qdoc
index 5b9d763979..6320780de3 100644
--- a/doc/src/examples/graphicsview-flowlayout.qdoc
+++ b/doc/src/examples/graphicsview-flowlayout.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/examples/graphicsview-simpleanchorlayout.qdoc b/doc/src/examples/graphicsview-simpleanchorlayout.qdoc
index 22192a0155..c8d332b763 100644
--- a/doc/src/examples/graphicsview-simpleanchorlayout.qdoc
+++ b/doc/src/examples/graphicsview-simpleanchorlayout.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/examples/graphicsview-weatheranchorlayout.qdoc b/doc/src/examples/graphicsview-weatheranchorlayout.qdoc
index de0ebac395..f77e3f5c82 100644
--- a/doc/src/examples/graphicsview-weatheranchorlayout.qdoc
+++ b/doc/src/examples/graphicsview-weatheranchorlayout.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/examples/groupbox.qdoc b/doc/src/examples/groupbox.qdoc
index 28af11cd66..f8a1ffd88c 100644
--- a/doc/src/examples/groupbox.qdoc
+++ b/doc/src/examples/groupbox.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/examples/hellogl.qdoc b/doc/src/examples/hellogl.qdoc
index 97410c7203..c8b82b3c3f 100644
--- a/doc/src/examples/hellogl.qdoc
+++ b/doc/src/examples/hellogl.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/examples/hellogl_es.qdoc b/doc/src/examples/hellogl_es.qdoc
index 4a38b2a52b..d96d3de7ad 100644
--- a/doc/src/examples/hellogl_es.qdoc
+++ b/doc/src/examples/hellogl_es.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/examples/helloscript.qdoc b/doc/src/examples/helloscript.qdoc
index 2e7b60fbea..842e3936d2 100644
--- a/doc/src/examples/helloscript.qdoc
+++ b/doc/src/examples/helloscript.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/examples/hellotr.qdoc b/doc/src/examples/hellotr.qdoc
index 5cd9743b9b..5d794c6d81 100644
--- a/doc/src/examples/hellotr.qdoc
+++ b/doc/src/examples/hellotr.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/examples/htmlinfo.qdoc b/doc/src/examples/htmlinfo.qdoc
index d25219bf98..a4e11bd421 100644
--- a/doc/src/examples/htmlinfo.qdoc
+++ b/doc/src/examples/htmlinfo.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/examples/http.qdoc b/doc/src/examples/http.qdoc
index 087a7e5d24..2c86edd412 100644
--- a/doc/src/examples/http.qdoc
+++ b/doc/src/examples/http.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/examples/i18n.qdoc b/doc/src/examples/i18n.qdoc
index 361123dddd..0698dbe609 100644
--- a/doc/src/examples/i18n.qdoc
+++ b/doc/src/examples/i18n.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/examples/icons.qdoc b/doc/src/examples/icons.qdoc
index e445374959..21a308d9fa 100644
--- a/doc/src/examples/icons.qdoc
+++ b/doc/src/examples/icons.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/examples/imagecomposition.qdoc b/doc/src/examples/imagecomposition.qdoc
index 3bf6e7f5af..f2b6083b0c 100644
--- a/doc/src/examples/imagecomposition.qdoc
+++ b/doc/src/examples/imagecomposition.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/examples/imagegestures.qdoc b/doc/src/examples/imagegestures.qdoc
index 3d4e4678ad..8bdfaf4a79 100644
--- a/doc/src/examples/imagegestures.qdoc
+++ b/doc/src/examples/imagegestures.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/examples/imageviewer.qdoc b/doc/src/examples/imageviewer.qdoc
index 3d1dc6f071..8cf16d7b66 100644
--- a/doc/src/examples/imageviewer.qdoc
+++ b/doc/src/examples/imageviewer.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/examples/inputpanel.qdoc b/doc/src/examples/inputpanel.qdoc
index fe6c66509e..ea831712f9 100644
--- a/doc/src/examples/inputpanel.qdoc
+++ b/doc/src/examples/inputpanel.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/examples/itemviewspuzzle.qdoc b/doc/src/examples/itemviewspuzzle.qdoc
index 0a3f3cd4ef..ed5e736399 100644
--- a/doc/src/examples/itemviewspuzzle.qdoc
+++ b/doc/src/examples/itemviewspuzzle.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/examples/licensewizard.qdoc b/doc/src/examples/licensewizard.qdoc
index 3719a4c78b..b29abb748d 100644
--- a/doc/src/examples/licensewizard.qdoc
+++ b/doc/src/examples/licensewizard.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/examples/lighting.qdoc b/doc/src/examples/lighting.qdoc
index 6277c1fd66..3e222e17d7 100644
--- a/doc/src/examples/lighting.qdoc
+++ b/doc/src/examples/lighting.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/examples/lineedits.qdoc b/doc/src/examples/lineedits.qdoc
index 8d94ee3024..fc38bf95cd 100644
--- a/doc/src/examples/lineedits.qdoc
+++ b/doc/src/examples/lineedits.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/examples/localfortuneclient.qdoc b/doc/src/examples/localfortuneclient.qdoc
index 33f40d7d22..295b8c8728 100644
--- a/doc/src/examples/localfortuneclient.qdoc
+++ b/doc/src/examples/localfortuneclient.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/examples/localfortuneserver.qdoc b/doc/src/examples/localfortuneserver.qdoc
index 7ee36cf4bd..4bfc20cd37 100644
--- a/doc/src/examples/localfortuneserver.qdoc
+++ b/doc/src/examples/localfortuneserver.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/examples/loopback.qdoc b/doc/src/examples/loopback.qdoc
index b58b786c2e..0e2e8085e3 100644
--- a/doc/src/examples/loopback.qdoc
+++ b/doc/src/examples/loopback.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/examples/mandelbrot.qdoc b/doc/src/examples/mandelbrot.qdoc
index d4c17aa72c..44e8e66a4c 100644
--- a/doc/src/examples/mandelbrot.qdoc
+++ b/doc/src/examples/mandelbrot.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/examples/masterdetail.qdoc b/doc/src/examples/masterdetail.qdoc
index b3a673fe36..5bfdb4dfd8 100644
--- a/doc/src/examples/masterdetail.qdoc
+++ b/doc/src/examples/masterdetail.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/examples/mdi.qdoc b/doc/src/examples/mdi.qdoc
index 9e42ba221c..ea388db86e 100644
--- a/doc/src/examples/mdi.qdoc
+++ b/doc/src/examples/mdi.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/examples/menus.qdoc b/doc/src/examples/menus.qdoc
index d925745fdd..9e82da3844 100644
--- a/doc/src/examples/menus.qdoc
+++ b/doc/src/examples/menus.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/examples/mousecalibration.qdoc b/doc/src/examples/mousecalibration.qdoc
index 71eecf31ff..bb9301c37b 100644
--- a/doc/src/examples/mousecalibration.qdoc
+++ b/doc/src/examples/mousecalibration.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/examples/moveblocks.qdoc b/doc/src/examples/moveblocks.qdoc
index 48d6d60ee7..eee5ac3d24 100644
--- a/doc/src/examples/moveblocks.qdoc
+++ b/doc/src/examples/moveblocks.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/examples/movie.qdoc b/doc/src/examples/movie.qdoc
index 4d7b3e0cbc..478104efa0 100644
--- a/doc/src/examples/movie.qdoc
+++ b/doc/src/examples/movie.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/examples/multipleinheritance.qdoc b/doc/src/examples/multipleinheritance.qdoc
index 83a4d29093..54c2ba4a50 100644
--- a/doc/src/examples/multipleinheritance.qdoc
+++ b/doc/src/examples/multipleinheritance.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/examples/musicplayerexample.qdoc b/doc/src/examples/musicplayerexample.qdoc
index eaee747097..9805bbb2b0 100644
--- a/doc/src/examples/musicplayerexample.qdoc
+++ b/doc/src/examples/musicplayerexample.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/examples/network-chat.qdoc b/doc/src/examples/network-chat.qdoc
index ba78f798b7..c5dba3f77a 100644
--- a/doc/src/examples/network-chat.qdoc
+++ b/doc/src/examples/network-chat.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/examples/network-download.qdoc b/doc/src/examples/network-download.qdoc
index c1ab652ee4..ecd45e66ee 100644
--- a/doc/src/examples/network-download.qdoc
+++ b/doc/src/examples/network-download.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/examples/network-downloadmanager.qdoc b/doc/src/examples/network-downloadmanager.qdoc
index 6013e56588..fbd3bca7ce 100644
--- a/doc/src/examples/network-downloadmanager.qdoc
+++ b/doc/src/examples/network-downloadmanager.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/examples/openvg-star.qdoc b/doc/src/examples/openvg-star.qdoc
index f3eee57e37..7b6193ede2 100644
--- a/doc/src/examples/openvg-star.qdoc
+++ b/doc/src/examples/openvg-star.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/examples/orderform.qdoc b/doc/src/examples/orderform.qdoc
index b287f96710..e78790ad00 100644
--- a/doc/src/examples/orderform.qdoc
+++ b/doc/src/examples/orderform.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/examples/overpainting.qdoc b/doc/src/examples/overpainting.qdoc
index 36002eda45..f930d6b276 100644
--- a/doc/src/examples/overpainting.qdoc
+++ b/doc/src/examples/overpainting.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/examples/padnavigator.qdoc b/doc/src/examples/padnavigator.qdoc
index 9f471a85c4..2bdad8d5e4 100644
--- a/doc/src/examples/padnavigator.qdoc
+++ b/doc/src/examples/padnavigator.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/examples/painterpaths.qdoc b/doc/src/examples/painterpaths.qdoc
index 981a30e895..dbc35637ad 100644
--- a/doc/src/examples/painterpaths.qdoc
+++ b/doc/src/examples/painterpaths.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/examples/pbuffers.qdoc b/doc/src/examples/pbuffers.qdoc
index 331a194ddb..a8257e178d 100644
--- a/doc/src/examples/pbuffers.qdoc
+++ b/doc/src/examples/pbuffers.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/examples/pbuffers2.qdoc b/doc/src/examples/pbuffers2.qdoc
index 230bf27111..5a0bba35ca 100644
--- a/doc/src/examples/pbuffers2.qdoc
+++ b/doc/src/examples/pbuffers2.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/examples/pinchzoom.qdoc b/doc/src/examples/pinchzoom.qdoc
index 198cbb38d9..60fac298d8 100644
--- a/doc/src/examples/pinchzoom.qdoc
+++ b/doc/src/examples/pinchzoom.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/examples/pingpong.qdoc b/doc/src/examples/pingpong.qdoc
index fc0580f3c6..2b27db7b60 100644
--- a/doc/src/examples/pingpong.qdoc
+++ b/doc/src/examples/pingpong.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/examples/pixelator.qdoc b/doc/src/examples/pixelator.qdoc
index f631b0b1da..d40316e5ce 100644
--- a/doc/src/examples/pixelator.qdoc
+++ b/doc/src/examples/pixelator.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/examples/plugandpaint.qdoc b/doc/src/examples/plugandpaint.qdoc
index 0bd3edbba8..19053da11d 100644
--- a/doc/src/examples/plugandpaint.qdoc
+++ b/doc/src/examples/plugandpaint.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/examples/portedasteroids.qdoc b/doc/src/examples/portedasteroids.qdoc
index 17f9ccf350..6307931035 100644
--- a/doc/src/examples/portedasteroids.qdoc
+++ b/doc/src/examples/portedasteroids.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/examples/portedcanvas.qdoc b/doc/src/examples/portedcanvas.qdoc
index acfca125db..9e4b0048d5 100644
--- a/doc/src/examples/portedcanvas.qdoc
+++ b/doc/src/examples/portedcanvas.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/examples/previewer.qdoc b/doc/src/examples/previewer.qdoc
index 61660da58e..c7140f703c 100644
--- a/doc/src/examples/previewer.qdoc
+++ b/doc/src/examples/previewer.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/examples/qml-calculator.qdoc b/doc/src/examples/qml-calculator.qdoc
index 5c525757eb..1bc5f7922a 100644
--- a/doc/src/examples/qml-calculator.qdoc
+++ b/doc/src/examples/qml-calculator.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/examples/qml-examples.qdoc b/doc/src/examples/qml-examples.qdoc
index 745baa33a6..ca24c6659d 100644
--- a/doc/src/examples/qml-examples.qdoc
+++ b/doc/src/examples/qml-examples.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
@@ -236,6 +236,37 @@
This example shows how to enable text translation in QML.
\image qml-i18n-example.png
+
+ \section1 Introduction
+
+ The QML runtime automatically loads a translation from the i18n subdirectory
+ of the root QML file, based on the system language. The translations are
+ held in QM files that must be generated from TS files.
+
+ \section1 Updating Translations
+
+ The \c{.ts} files are created and updated by running:
+
+ \code
+ lupdate i18n.qml -ts i18n/base.ts
+ \endcode
+
+ If no translation file exists, one will be created. If a file already exists,
+ it will be updated to contain the latest strings from the QML file.
+
+ Translations for new languages are created by copying \c{i18n/base.ts} to
+ \c{i18n/qml_<lang>.ts} The TS files can then be edited with
+ \l{Qt Linguist Manual}{Qt Linguist}:
+
+ \code
+ linguist i18n/qml_fr.ts
+ \endcode
+
+ The run-time translation files are then generated by running:
+
+ \code
+ lrelease i18n/*.ts
+ \endcode
*/
/*!
diff --git a/doc/src/examples/qml-extending.qdoc b/doc/src/examples/qml-extending.qdoc
index 21ec3bb034..789b8f67b6 100644
--- a/doc/src/examples/qml-extending.qdoc
+++ b/doc/src/examples/qml-extending.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/examples/qml-flickr.qdoc b/doc/src/examples/qml-flickr.qdoc
index 5ebd1eaef0..6d476757ed 100644
--- a/doc/src/examples/qml-flickr.qdoc
+++ b/doc/src/examples/qml-flickr.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/examples/qml-folderlistmodel.qdoc b/doc/src/examples/qml-folderlistmodel.qdoc
index 666d2ddb85..1592d7bacf 100644
--- a/doc/src/examples/qml-folderlistmodel.qdoc
+++ b/doc/src/examples/qml-folderlistmodel.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/examples/qml-minehunt.qdoc b/doc/src/examples/qml-minehunt.qdoc
index e1ff22f49b..6e7ce4f837 100644
--- a/doc/src/examples/qml-minehunt.qdoc
+++ b/doc/src/examples/qml-minehunt.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/examples/qml-photoviewer.qdoc b/doc/src/examples/qml-photoviewer.qdoc
index e54d4afcd6..032284edb7 100644
--- a/doc/src/examples/qml-photoviewer.qdoc
+++ b/doc/src/examples/qml-photoviewer.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/examples/qml-rssnews.qdoc b/doc/src/examples/qml-rssnews.qdoc
index 5a6696c323..e7da263c72 100644
--- a/doc/src/examples/qml-rssnews.qdoc
+++ b/doc/src/examples/qml-rssnews.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/examples/qml-samegame.qdoc b/doc/src/examples/qml-samegame.qdoc
index 1248fc1871..588a51c668 100644
--- a/doc/src/examples/qml-samegame.qdoc
+++ b/doc/src/examples/qml-samegame.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/examples/qml-snake.qdoc b/doc/src/examples/qml-snake.qdoc
index eaea1281f5..c4c1125f3b 100644
--- a/doc/src/examples/qml-snake.qdoc
+++ b/doc/src/examples/qml-snake.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/examples/qml-twitter.qdoc b/doc/src/examples/qml-twitter.qdoc
index c3182a0d5b..73e3f49afb 100644
--- a/doc/src/examples/qml-twitter.qdoc
+++ b/doc/src/examples/qml-twitter.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/examples/qml-webbrowser.qdoc b/doc/src/examples/qml-webbrowser.qdoc
index a3cef667cc..a7d543f4b6 100644
--- a/doc/src/examples/qml-webbrowser.qdoc
+++ b/doc/src/examples/qml-webbrowser.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/examples/qobjectxmlmodel.qdoc b/doc/src/examples/qobjectxmlmodel.qdoc
index 8054ae2886..cddc1d1e35 100644
--- a/doc/src/examples/qobjectxmlmodel.qdoc
+++ b/doc/src/examples/qobjectxmlmodel.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/examples/qtconcurrent-imagescaling.qdoc b/doc/src/examples/qtconcurrent-imagescaling.qdoc
index df6d84b796..4ee7e754f4 100644
--- a/doc/src/examples/qtconcurrent-imagescaling.qdoc
+++ b/doc/src/examples/qtconcurrent-imagescaling.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/examples/qtconcurrent-map.qdoc b/doc/src/examples/qtconcurrent-map.qdoc
index b605137803..ee4608a941 100644
--- a/doc/src/examples/qtconcurrent-map.qdoc
+++ b/doc/src/examples/qtconcurrent-map.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/examples/qtconcurrent-progressdialog.qdoc b/doc/src/examples/qtconcurrent-progressdialog.qdoc
index b5e9dded17..b5e01ed527 100644
--- a/doc/src/examples/qtconcurrent-progressdialog.qdoc
+++ b/doc/src/examples/qtconcurrent-progressdialog.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/examples/qtconcurrent-runfunction.qdoc b/doc/src/examples/qtconcurrent-runfunction.qdoc
index 33fbb38ce5..5b431cf0cd 100644
--- a/doc/src/examples/qtconcurrent-runfunction.qdoc
+++ b/doc/src/examples/qtconcurrent-runfunction.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/examples/qtconcurrent-wordcount.qdoc b/doc/src/examples/qtconcurrent-wordcount.qdoc
index a5df4a9d34..b02017eb03 100644
--- a/doc/src/examples/qtconcurrent-wordcount.qdoc
+++ b/doc/src/examples/qtconcurrent-wordcount.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/examples/qtscriptcalculator.qdoc b/doc/src/examples/qtscriptcalculator.qdoc
index a35ea4bc15..590f56c57c 100644
--- a/doc/src/examples/qtscriptcalculator.qdoc
+++ b/doc/src/examples/qtscriptcalculator.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/examples/qtscriptcustomclass.qdoc b/doc/src/examples/qtscriptcustomclass.qdoc
index 3918ba9290..71d0ace05b 100644
--- a/doc/src/examples/qtscriptcustomclass.qdoc
+++ b/doc/src/examples/qtscriptcustomclass.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/examples/qtscripttetrix.qdoc b/doc/src/examples/qtscripttetrix.qdoc
index 3bab93b865..c308b1bd73 100644
--- a/doc/src/examples/qtscripttetrix.qdoc
+++ b/doc/src/examples/qtscripttetrix.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/examples/querymodel.qdoc b/doc/src/examples/querymodel.qdoc
index 2aa1c2e993..ff538dc265 100644
--- a/doc/src/examples/querymodel.qdoc
+++ b/doc/src/examples/querymodel.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/examples/queuedcustomtype.qdoc b/doc/src/examples/queuedcustomtype.qdoc
index ed65bdaed6..fec1600665 100644
--- a/doc/src/examples/queuedcustomtype.qdoc
+++ b/doc/src/examples/queuedcustomtype.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/examples/qxmlstreambookmarks.qdoc b/doc/src/examples/qxmlstreambookmarks.qdoc
index 87258d1d5e..e3c5ccb18b 100644
--- a/doc/src/examples/qxmlstreambookmarks.qdoc
+++ b/doc/src/examples/qxmlstreambookmarks.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/examples/recentfiles.qdoc b/doc/src/examples/recentfiles.qdoc
index 5bd8fd3bd0..501d12e652 100644
--- a/doc/src/examples/recentfiles.qdoc
+++ b/doc/src/examples/recentfiles.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/examples/recipes.qdoc b/doc/src/examples/recipes.qdoc
index e47e2f0945..f01eaf4e74 100644
--- a/doc/src/examples/recipes.qdoc
+++ b/doc/src/examples/recipes.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/examples/regexp.qdoc b/doc/src/examples/regexp.qdoc
index d1601720ba..17593940ea 100644
--- a/doc/src/examples/regexp.qdoc
+++ b/doc/src/examples/regexp.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/examples/relationaltablemodel.qdoc b/doc/src/examples/relationaltablemodel.qdoc
index f4883f2cf7..68c2d376b7 100644
--- a/doc/src/examples/relationaltablemodel.qdoc
+++ b/doc/src/examples/relationaltablemodel.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/examples/remotecontrol.qdoc b/doc/src/examples/remotecontrol.qdoc
index a2241d4705..f148cb2c69 100644
--- a/doc/src/examples/remotecontrol.qdoc
+++ b/doc/src/examples/remotecontrol.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/examples/rogue.qdoc b/doc/src/examples/rogue.qdoc
index a1c41e977a..5b49a5031d 100644
--- a/doc/src/examples/rogue.qdoc
+++ b/doc/src/examples/rogue.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/examples/rsslisting.qdoc b/doc/src/examples/rsslisting.qdoc
index 95e579ab09..878ad49045 100644
--- a/doc/src/examples/rsslisting.qdoc
+++ b/doc/src/examples/rsslisting.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/examples/samplebuffers.qdoc b/doc/src/examples/samplebuffers.qdoc
index cab66a2113..a000f06f7b 100644
--- a/doc/src/examples/samplebuffers.qdoc
+++ b/doc/src/examples/samplebuffers.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/examples/saxbookmarks.qdoc b/doc/src/examples/saxbookmarks.qdoc
index 7656846d5b..6b8aa02af7 100644
--- a/doc/src/examples/saxbookmarks.qdoc
+++ b/doc/src/examples/saxbookmarks.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/examples/schema.qdoc b/doc/src/examples/schema.qdoc
index 47171ac6bf..abe0f63092 100644
--- a/doc/src/examples/schema.qdoc
+++ b/doc/src/examples/schema.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/examples/screenshot.qdoc b/doc/src/examples/screenshot.qdoc
index 878f9599c0..1bc5092890 100644
--- a/doc/src/examples/screenshot.qdoc
+++ b/doc/src/examples/screenshot.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/examples/scribble.qdoc b/doc/src/examples/scribble.qdoc
index d827e0e02a..cfb36e66c4 100644
--- a/doc/src/examples/scribble.qdoc
+++ b/doc/src/examples/scribble.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/examples/script-marshal.qdoc b/doc/src/examples/script-marshal.qdoc
index 1dba23c45b..279036d427 100644
--- a/doc/src/examples/script-marshal.qdoc
+++ b/doc/src/examples/script-marshal.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/examples/script-qscript.qdoc b/doc/src/examples/script-qscript.qdoc
index caf2bcea9a..0ec0d01c7d 100644
--- a/doc/src/examples/script-qscript.qdoc
+++ b/doc/src/examples/script-qscript.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/examples/script-qsdbg.qdoc b/doc/src/examples/script-qsdbg.qdoc
index bc95fdb83d..50b52f752a 100644
--- a/doc/src/examples/script-qsdbg.qdoc
+++ b/doc/src/examples/script-qsdbg.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/examples/sdi.qdoc b/doc/src/examples/sdi.qdoc
index 30bd89adcd..75c063f773 100644
--- a/doc/src/examples/sdi.qdoc
+++ b/doc/src/examples/sdi.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/examples/securesocketclient.qdoc b/doc/src/examples/securesocketclient.qdoc
index 69f444baa4..2356e86c9f 100644
--- a/doc/src/examples/securesocketclient.qdoc
+++ b/doc/src/examples/securesocketclient.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/examples/semaphores.qdoc b/doc/src/examples/semaphores.qdoc
index 6f749d24fb..d315c1991c 100644
--- a/doc/src/examples/semaphores.qdoc
+++ b/doc/src/examples/semaphores.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/examples/settingseditor.qdoc b/doc/src/examples/settingseditor.qdoc
index 9f99f283a8..8429bcde6b 100644
--- a/doc/src/examples/settingseditor.qdoc
+++ b/doc/src/examples/settingseditor.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/examples/shapedclock.qdoc b/doc/src/examples/shapedclock.qdoc
index 769c9eb8ae..adb4441e06 100644
--- a/doc/src/examples/shapedclock.qdoc
+++ b/doc/src/examples/shapedclock.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/examples/sharedmemory.qdoc b/doc/src/examples/sharedmemory.qdoc
index 6e13b9651c..6fd0947c1e 100644
--- a/doc/src/examples/sharedmemory.qdoc
+++ b/doc/src/examples/sharedmemory.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/examples/simpledecoration.qdoc b/doc/src/examples/simpledecoration.qdoc
index 021a4d3f6a..74d6c0ef4b 100644
--- a/doc/src/examples/simpledecoration.qdoc
+++ b/doc/src/examples/simpledecoration.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/examples/simpledommodel.qdoc b/doc/src/examples/simpledommodel.qdoc
index d10f6a7c9b..82ecac50ae 100644
--- a/doc/src/examples/simpledommodel.qdoc
+++ b/doc/src/examples/simpledommodel.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/examples/simpleselector.qdoc b/doc/src/examples/simpleselector.qdoc
index 1e6869900a..f66ced58fa 100644
--- a/doc/src/examples/simpleselector.qdoc
+++ b/doc/src/examples/simpleselector.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/examples/simpletextviewer.qdoc b/doc/src/examples/simpletextviewer.qdoc
index e5c887a23a..50ced5453a 100644
--- a/doc/src/examples/simpletextviewer.qdoc
+++ b/doc/src/examples/simpletextviewer.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/examples/simpletreemodel.qdoc b/doc/src/examples/simpletreemodel.qdoc
index 7d1f8fe5fa..c09c21674e 100644
--- a/doc/src/examples/simpletreemodel.qdoc
+++ b/doc/src/examples/simpletreemodel.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/examples/simplewidgetmapper.qdoc b/doc/src/examples/simplewidgetmapper.qdoc
index 413ad2b6bb..686263ab70 100644
--- a/doc/src/examples/simplewidgetmapper.qdoc
+++ b/doc/src/examples/simplewidgetmapper.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/examples/sipdialog.qdoc b/doc/src/examples/sipdialog.qdoc
index 25ae7eb281..16081f0dea 100644
--- a/doc/src/examples/sipdialog.qdoc
+++ b/doc/src/examples/sipdialog.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/examples/sliders.qdoc b/doc/src/examples/sliders.qdoc
index f44fabbaca..5d878fe794 100644
--- a/doc/src/examples/sliders.qdoc
+++ b/doc/src/examples/sliders.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/examples/spinboxdelegate.qdoc b/doc/src/examples/spinboxdelegate.qdoc
index 44308ca5bc..61eff513b5 100644
--- a/doc/src/examples/spinboxdelegate.qdoc
+++ b/doc/src/examples/spinboxdelegate.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/examples/spinboxes.qdoc b/doc/src/examples/spinboxes.qdoc
index 34a95c7f5c..865335eac7 100644
--- a/doc/src/examples/spinboxes.qdoc
+++ b/doc/src/examples/spinboxes.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/examples/sqlwidgetmapper.qdoc b/doc/src/examples/sqlwidgetmapper.qdoc
index db48f9c375..d6429090bb 100644
--- a/doc/src/examples/sqlwidgetmapper.qdoc
+++ b/doc/src/examples/sqlwidgetmapper.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/examples/standarddialogs.qdoc b/doc/src/examples/standarddialogs.qdoc
index 368b713a94..dbe21b99cc 100644
--- a/doc/src/examples/standarddialogs.qdoc
+++ b/doc/src/examples/standarddialogs.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/examples/stardelegate.qdoc b/doc/src/examples/stardelegate.qdoc
index 6e5e371439..c89566795f 100644
--- a/doc/src/examples/stardelegate.qdoc
+++ b/doc/src/examples/stardelegate.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/examples/states.qdoc b/doc/src/examples/states.qdoc
index 24362a2682..573cda0353 100644
--- a/doc/src/examples/states.qdoc
+++ b/doc/src/examples/states.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/examples/stickman.qdoc b/doc/src/examples/stickman.qdoc
index 08450aa24b..46301a89d9 100644
--- a/doc/src/examples/stickman.qdoc
+++ b/doc/src/examples/stickman.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/examples/styleplugin.qdoc b/doc/src/examples/styleplugin.qdoc
index 85cad0fd4a..9d84a14b62 100644
--- a/doc/src/examples/styleplugin.qdoc
+++ b/doc/src/examples/styleplugin.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/examples/styles.qdoc b/doc/src/examples/styles.qdoc
index fc243e7e87..b9f48da087 100644
--- a/doc/src/examples/styles.qdoc
+++ b/doc/src/examples/styles.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/examples/stylesheet.qdoc b/doc/src/examples/stylesheet.qdoc
index 348e3f3ffb..d08c2a443d 100644
--- a/doc/src/examples/stylesheet.qdoc
+++ b/doc/src/examples/stylesheet.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/examples/svgalib.qdoc b/doc/src/examples/svgalib.qdoc
index 86681e646b..3e3e4d51be 100644
--- a/doc/src/examples/svgalib.qdoc
+++ b/doc/src/examples/svgalib.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/examples/svggenerator.qdoc b/doc/src/examples/svggenerator.qdoc
index 622cbbe0d1..ae968b94c8 100644
--- a/doc/src/examples/svggenerator.qdoc
+++ b/doc/src/examples/svggenerator.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/examples/svgviewer.qdoc b/doc/src/examples/svgviewer.qdoc
index 674b796672..e528054201 100644
--- a/doc/src/examples/svgviewer.qdoc
+++ b/doc/src/examples/svgviewer.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/examples/syntaxhighlighter.qdoc b/doc/src/examples/syntaxhighlighter.qdoc
index 2162702ce0..722dccaf40 100644
--- a/doc/src/examples/syntaxhighlighter.qdoc
+++ b/doc/src/examples/syntaxhighlighter.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/examples/systray.qdoc b/doc/src/examples/systray.qdoc
index 469642a33d..8b9de81fd0 100644
--- a/doc/src/examples/systray.qdoc
+++ b/doc/src/examples/systray.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/examples/tabdialog.qdoc b/doc/src/examples/tabdialog.qdoc
index 3db9caa022..da447c4a65 100644
--- a/doc/src/examples/tabdialog.qdoc
+++ b/doc/src/examples/tabdialog.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/examples/tablemodel.qdoc b/doc/src/examples/tablemodel.qdoc
index 99340235ac..04a13ccfd1 100644
--- a/doc/src/examples/tablemodel.qdoc
+++ b/doc/src/examples/tablemodel.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/examples/tablet.qdoc b/doc/src/examples/tablet.qdoc
index adc49bf20a..58af376086 100644
--- a/doc/src/examples/tablet.qdoc
+++ b/doc/src/examples/tablet.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/examples/taskmenuextension.qdoc b/doc/src/examples/taskmenuextension.qdoc
index 8d9d843e55..d89b68c555 100644
--- a/doc/src/examples/taskmenuextension.qdoc
+++ b/doc/src/examples/taskmenuextension.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/examples/tetrix.qdoc b/doc/src/examples/tetrix.qdoc
index 177f592d0e..ec465076a5 100644
--- a/doc/src/examples/tetrix.qdoc
+++ b/doc/src/examples/tetrix.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/examples/textfinder.qdoc b/doc/src/examples/textfinder.qdoc
index ead950d030..a04df00140 100644
--- a/doc/src/examples/textfinder.qdoc
+++ b/doc/src/examples/textfinder.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/examples/textobject.qdoc b/doc/src/examples/textobject.qdoc
index ce7431f0fe..e655206088 100644
--- a/doc/src/examples/textobject.qdoc
+++ b/doc/src/examples/textobject.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/examples/textures.qdoc b/doc/src/examples/textures.qdoc
index 03e481e39b..d18268b4d4 100644
--- a/doc/src/examples/textures.qdoc
+++ b/doc/src/examples/textures.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/examples/threadedfortuneserver.qdoc b/doc/src/examples/threadedfortuneserver.qdoc
index cb1887282f..c0c4815132 100644
--- a/doc/src/examples/threadedfortuneserver.qdoc
+++ b/doc/src/examples/threadedfortuneserver.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/examples/tooltips.qdoc b/doc/src/examples/tooltips.qdoc
index 351eaf9ddf..f7737b9e80 100644
--- a/doc/src/examples/tooltips.qdoc
+++ b/doc/src/examples/tooltips.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/examples/torrent.qdoc b/doc/src/examples/torrent.qdoc
index 84887870bc..3c0d108d9d 100644
--- a/doc/src/examples/torrent.qdoc
+++ b/doc/src/examples/torrent.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/examples/touch-dials.qdoc b/doc/src/examples/touch-dials.qdoc
index 552d752623..c6fc3261fe 100644
--- a/doc/src/examples/touch-dials.qdoc
+++ b/doc/src/examples/touch-dials.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/examples/touch-knobs.qdoc b/doc/src/examples/touch-knobs.qdoc
index deb4c288a2..08c2d0c72b 100644
--- a/doc/src/examples/touch-knobs.qdoc
+++ b/doc/src/examples/touch-knobs.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/examples/trafficinfo.qdoc b/doc/src/examples/trafficinfo.qdoc
index bc061782b2..e60c1cd331 100644
--- a/doc/src/examples/trafficinfo.qdoc
+++ b/doc/src/examples/trafficinfo.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/examples/trafficlight.qdoc b/doc/src/examples/trafficlight.qdoc
index f1498a951f..3d381d9dc5 100644
--- a/doc/src/examples/trafficlight.qdoc
+++ b/doc/src/examples/trafficlight.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/examples/transformations.qdoc b/doc/src/examples/transformations.qdoc
index 3c949b7148..e60ab398de 100644
--- a/doc/src/examples/transformations.qdoc
+++ b/doc/src/examples/transformations.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/examples/treemodelcompleter.qdoc b/doc/src/examples/treemodelcompleter.qdoc
index 17bbd2c193..b473831146 100644
--- a/doc/src/examples/treemodelcompleter.qdoc
+++ b/doc/src/examples/treemodelcompleter.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/examples/trivialwizard.qdoc b/doc/src/examples/trivialwizard.qdoc
index 2632560c8d..381d9691c4 100644
--- a/doc/src/examples/trivialwizard.qdoc
+++ b/doc/src/examples/trivialwizard.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/examples/trollprint.qdoc b/doc/src/examples/trollprint.qdoc
index b9c9c56f99..d08b047f2e 100644
--- a/doc/src/examples/trollprint.qdoc
+++ b/doc/src/examples/trollprint.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/examples/twowaybutton.qdoc b/doc/src/examples/twowaybutton.qdoc
index bcecbd55c8..5fffe6db2c 100644
--- a/doc/src/examples/twowaybutton.qdoc
+++ b/doc/src/examples/twowaybutton.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/examples/undoframework.qdoc b/doc/src/examples/undoframework.qdoc
index ef6a6a0ca5..c497acc9ba 100644
--- a/doc/src/examples/undoframework.qdoc
+++ b/doc/src/examples/undoframework.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/examples/videographicsitem.qdoc b/doc/src/examples/videographicsitem.qdoc
index 587298c8b5..3bb1f9a41b 100644
--- a/doc/src/examples/videographicsitem.qdoc
+++ b/doc/src/examples/videographicsitem.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/examples/videowidget.qdoc b/doc/src/examples/videowidget.qdoc
index 66c2555505..ab1a1c111d 100644
--- a/doc/src/examples/videowidget.qdoc
+++ b/doc/src/examples/videowidget.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/examples/waitconditions.qdoc b/doc/src/examples/waitconditions.qdoc
index 15565e9580..75f60bd09d 100644
--- a/doc/src/examples/waitconditions.qdoc
+++ b/doc/src/examples/waitconditions.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/examples/webkit-bridge-imageanalyzer.qdoc b/doc/src/examples/webkit-bridge-imageanalyzer.qdoc
new file mode 100644
index 0000000000..cee2659312
--- /dev/null
+++ b/doc/src/examples/webkit-bridge-imageanalyzer.qdoc
@@ -0,0 +1,160 @@
+/****************************************************************************
+**
+** 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$
+** 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
+** 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$
+**
+****************************************************************************/
+
+/*!
+ \example webkit/imageanalyzer
+ \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
+\l{The QtWebKit Bridge}{QtWebKit Bridge}, which distinguishes itself from a
+thin client in that it performs heavy calculations on the client side in C++,
+like a native application, but presents nothing more than a \c QWebView for its
+user interface, displaying web content written in HTML/JavaScript. The
+application uses QtConcurrent to distribute its work across as many CPU cores as
+are available from the system, so it can process each image in parallel.
+
+For the full reference documentation of QtWebKit hybrid development, see
+\l{qtwebkit-bridge.html}{The QtWebKit Bridge}.
+
+Initially, you will see a user interface with an empty list of images. Clicking
+on some of the images in the lower pane below adds them to the list view above,
+as shown in the screenshot below.
+
+ \image webkit-imageanalyzer-screenshot.png
+
+Now, we can click on \bold Analyze, and each image is analyzed using some
+computationally intensive C++ function, in parallel and on different cores.
+Progress is shown while the analysis is proceeding.
+
+ \image webkit-imageanalyzer-progress.png
+
+and in the end, we will see something like this, where the average RGB values of
+each image are shown.
+
+ \image webkit-imageanalyzer-complete.png
+
+The MainWindow is defined in C++, and creates a \l QNetworkDiskCache and a
+\l QWebView, and tells the \l QWebView to load the starting page, providing us
+with a user interface for the client.
+
+ \snippet examples/webkit/imageanalyzer/mainwindow.cpp MainWindow - constructor
+
+In this example, the sample content is addressed with the \tt qrc:/index.html
+URL. \tt qrc:/ indicates that the file is stored as a Qt resource (attached to
+the executable). In a real-world application, the content and images would
+likely be retrieved from the network rather than from resources.
+
+We wish to initialize an object reference in the JavaScript web page to point
+to our \tt ImageAnalyzer before any other scripts are run. To do this, we
+connect the \l{QWebFrame::}{javaScriptWindowObjectCleared()} signal to a slot
+which does the object creation and handoff to JavaScript.
+
+ \snippet examples/webkit/imageanalyzer/mainwindow.cpp MainWindow - addJSObject
+
+The ImageAnalyzer object is created and added to a JavaScript object on the web
+page's mainFrame with \c addToJavaScriptWindowObject().
+
+ The start page is resources/index.html.
+ In one of its <div> regions, we have images, each
+ with an \c onClick() handler that calls \c addImage().
+
+ \snippet examples/webkit/imageanalyzer/resources/index.html sample images
+
+Clicking an image adds it to an images list.
+
+ \snippet examples/webkit/imageanalyzer/resources/index.html addImage
+
+The \bold {Analyze} button at the bottom of the image list is clicked when we
+want to start the analysis:
+
+ \snippet examples/webkit/imageanalyzer/resources/index.html images list
+
+When the user clicks the \bold {Analyze} button, \c analyzeImages() is called,
+another regular JavaScript method, shown below.
+Notice it assumes the \c imageAnalyzer object is already defined and initialized
+in JavaScript space, but we guaranteed that by connecting our setup slot to the
+appropriate signal, \l{QWebFrame::}{javaScriptWindowObjectCleared()}.
+
+ \snippet examples/webkit/imageanalyzer/resources/index.html analyzeImages
+
+The only methods on \c ImageAnalyzer that we can or do call from JavaScript are
+those which are exposed through \{The Meta-Object System}{Qt's MetaObject}
+system: \l{The Property System}{property} getter/setter methods,
+\c public \l {Signals & Slots}{signals and slots}, and other
+\l{Q_INVOKABLE}{Q_INVOKABLE} functions.
+
+\snippet examples/webkit/imageanalyzer/imageanalyzer.h ImageAnalyzer - public interface
+\dots
+\snippet examples/webkit/imageanalyzer/imageanalyzer.h ImageAnalyzer - private members
+
+Most of the members are set up in the constructor:
+
+\snippet examples/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - Constructor
+
+Back on the JavaScript side, we want to connect signals from this object to
+JavaScript functions on our web page, after the web page is loaded, but before
+the images are analyzed.
+
+From \c connectSlots(), we can see how to connect signals from the imageAnalyzer
+object to regular JavaScript functions, which can also behave like slots. We use
+this to monitor and display progress from the C++ side.
+
+ \snippet examples/webkit/imageanalyzer/resources/index.html connect slots
+
+The only public slot is \c startAnalysis(), called to place
+a list of URLs into the image analyzer's QtConcurrent processing queue
+from JavaScript space.
+
+\snippet examples/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - startAnalysis
+
+The images need to be loaded again now, which is why fetchURLs first checks the
+cache to see if we can save an extra network get.
+
+\snippet examples/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - fetchURLs
+
+For the images that were not in the cache, \c handleReply()
+will load them into a QImage when the data is ready.
+
+\snippet examples/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - handleReply
+
+After the images are loaded, they are queued up in preparation to be
+sent in a batch for analysis to a \l QFutureWatcher, which will distribute the
+processing across multiple threads and cores, depending on how many are available.
+
+\snippet examples/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - queueImage
+
+The function that gets performed on each image is \c averageRGB(),
+as specified in argument 2 to the \l{QtConcurrent::mapped()} function.
+Notice it repeats the same calculations 100 times on each pixel to keep the CPU
+very busy. This is done only for the purposes of the demo so that the analysis
+takes a noticeable time to complete.
+
+\snippet examples/webkit/imageanalyzer/imageanalyzer.cpp ImageAnalyzer - averageRGB
+
+*/
+
diff --git a/doc/src/examples/webkit-framecapture.qdoc b/doc/src/examples/webkit-framecapture.qdoc
index a3d9f1bdce..96e70d57e2 100644
--- a/doc/src/examples/webkit-framecapture.qdoc
+++ b/doc/src/examples/webkit-framecapture.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/examples/widgets-softkeys.qdoc b/doc/src/examples/widgets-softkeys.qdoc
index dde1778d56..1958872e68 100644
--- a/doc/src/examples/widgets-softkeys.qdoc
+++ b/doc/src/examples/widgets-softkeys.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/examples/widgets-validators.qdoc b/doc/src/examples/widgets-validators.qdoc
index 78054bbe4c..c6b3711b26 100644
--- a/doc/src/examples/widgets-validators.qdoc
+++ b/doc/src/examples/widgets-validators.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/examples/wiggly.qdoc b/doc/src/examples/wiggly.qdoc
index bd02900be6..1b3f1ffb85 100644
--- a/doc/src/examples/wiggly.qdoc
+++ b/doc/src/examples/wiggly.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/examples/windowflags.qdoc b/doc/src/examples/windowflags.qdoc
index bc4f9792d0..cfee598ac8 100644
--- a/doc/src/examples/windowflags.qdoc
+++ b/doc/src/examples/windowflags.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/examples/worldtimeclockbuilder.qdoc b/doc/src/examples/worldtimeclockbuilder.qdoc
index a70cbe7025..27d846f04b 100644
--- a/doc/src/examples/worldtimeclockbuilder.qdoc
+++ b/doc/src/examples/worldtimeclockbuilder.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/examples/worldtimeclockplugin.qdoc b/doc/src/examples/worldtimeclockplugin.qdoc
index 0157b687a5..d485ec3582 100644
--- a/doc/src/examples/worldtimeclockplugin.qdoc
+++ b/doc/src/examples/worldtimeclockplugin.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/examples/xmlstreamlint.qdoc b/doc/src/examples/xmlstreamlint.qdoc
index 3e25dbe408..fa05874606 100644
--- a/doc/src/examples/xmlstreamlint.qdoc
+++ b/doc/src/examples/xmlstreamlint.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/external-resources.qdoc b/doc/src/external-resources.qdoc
index 61620f58c6..8eeaeb1c09 100644
--- a/doc/src/external-resources.qdoc
+++ b/doc/src/external-resources.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
@@ -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/files-and-resources/datastreamformat.qdoc b/doc/src/files-and-resources/datastreamformat.qdoc
index 060aee6eec..d014f20c8d 100644
--- a/doc/src/files-and-resources/datastreamformat.qdoc
+++ b/doc/src/files-and-resources/datastreamformat.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/files-and-resources/resources.qdoc b/doc/src/files-and-resources/resources.qdoc
index f0cb130dc8..0376d0c7f6 100644
--- a/doc/src/files-and-resources/resources.qdoc
+++ b/doc/src/files-and-resources/resources.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/frameworks-technologies/accessible.qdoc b/doc/src/frameworks-technologies/accessible.qdoc
index cbc15589b3..eb1431017f 100644
--- a/doc/src/frameworks-technologies/accessible.qdoc
+++ b/doc/src/frameworks-technologies/accessible.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/frameworks-technologies/activeqt-container.qdoc b/doc/src/frameworks-technologies/activeqt-container.qdoc
index 736bca3b54..4e11abd472 100644
--- a/doc/src/frameworks-technologies/activeqt-container.qdoc
+++ b/doc/src/frameworks-technologies/activeqt-container.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/frameworks-technologies/activeqt-server.qdoc b/doc/src/frameworks-technologies/activeqt-server.qdoc
index 924856f55e..0f683f710e 100644
--- a/doc/src/frameworks-technologies/activeqt-server.qdoc
+++ b/doc/src/frameworks-technologies/activeqt-server.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/frameworks-technologies/activeqt.qdoc b/doc/src/frameworks-technologies/activeqt.qdoc
index e3fb3a70cd..c49dcadff3 100644
--- a/doc/src/frameworks-technologies/activeqt.qdoc
+++ b/doc/src/frameworks-technologies/activeqt.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/frameworks-technologies/animation.qdoc b/doc/src/frameworks-technologies/animation.qdoc
index 3763cb3460..f78162dafa 100644
--- a/doc/src/frameworks-technologies/animation.qdoc
+++ b/doc/src/frameworks-technologies/animation.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/frameworks-technologies/containers.qdoc b/doc/src/frameworks-technologies/containers.qdoc
index cf5fe73cd6..aa618d6615 100644
--- a/doc/src/frameworks-technologies/containers.qdoc
+++ b/doc/src/frameworks-technologies/containers.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/frameworks-technologies/dbus-adaptors.qdoc b/doc/src/frameworks-technologies/dbus-adaptors.qdoc
index f193a672e3..3132d2d43b 100644
--- a/doc/src/frameworks-technologies/dbus-adaptors.qdoc
+++ b/doc/src/frameworks-technologies/dbus-adaptors.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/frameworks-technologies/dbus-intro.qdoc b/doc/src/frameworks-technologies/dbus-intro.qdoc
index 9d4cd95281..2f7fa12c40 100644
--- a/doc/src/frameworks-technologies/dbus-intro.qdoc
+++ b/doc/src/frameworks-technologies/dbus-intro.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/frameworks-technologies/desktop-integration.qdoc b/doc/src/frameworks-technologies/desktop-integration.qdoc
index 6c117e8639..d48f8c721d 100644
--- a/doc/src/frameworks-technologies/desktop-integration.qdoc
+++ b/doc/src/frameworks-technologies/desktop-integration.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/frameworks-technologies/dnd.qdoc b/doc/src/frameworks-technologies/dnd.qdoc
index ebfa39e56f..356bf9b739 100644
--- a/doc/src/frameworks-technologies/dnd.qdoc
+++ b/doc/src/frameworks-technologies/dnd.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
@@ -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/eventsandfilters.qdoc b/doc/src/frameworks-technologies/eventsandfilters.qdoc
index fb14a3b001..fb51976b0e 100644
--- a/doc/src/frameworks-technologies/eventsandfilters.qdoc
+++ b/doc/src/frameworks-technologies/eventsandfilters.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/frameworks-technologies/gestures.qdoc b/doc/src/frameworks-technologies/gestures.qdoc
index f7c8312170..06d34314c3 100644
--- a/doc/src/frameworks-technologies/gestures.qdoc
+++ b/doc/src/frameworks-technologies/gestures.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/frameworks-technologies/graphicsview.qdoc b/doc/src/frameworks-technologies/graphicsview.qdoc
index 20bb750edd..21d3f42b7a 100644
--- a/doc/src/frameworks-technologies/graphicsview.qdoc
+++ b/doc/src/frameworks-technologies/graphicsview.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/frameworks-technologies/implicit-sharing.qdoc b/doc/src/frameworks-technologies/implicit-sharing.qdoc
index d62824ec86..fcfcf7f272 100644
--- a/doc/src/frameworks-technologies/implicit-sharing.qdoc
+++ b/doc/src/frameworks-technologies/implicit-sharing.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/frameworks-technologies/ipc.qdoc b/doc/src/frameworks-technologies/ipc.qdoc
index 775243a672..e73f649e95 100644
--- a/doc/src/frameworks-technologies/ipc.qdoc
+++ b/doc/src/frameworks-technologies/ipc.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/frameworks-technologies/model-view-programming.qdoc b/doc/src/frameworks-technologies/model-view-programming.qdoc
index 7a1fb403e1..cc98432ded 100644
--- a/doc/src/frameworks-technologies/model-view-programming.qdoc
+++ b/doc/src/frameworks-technologies/model-view-programming.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
@@ -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/phonon.qdoc b/doc/src/frameworks-technologies/phonon.qdoc
index 5119638141..9620136b69 100644
--- a/doc/src/frameworks-technologies/phonon.qdoc
+++ b/doc/src/frameworks-technologies/phonon.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
@@ -524,24 +524,5 @@
the QtOpenGL shared library. If this is not what you want, it is
possible to configure Qt without OpenGL support. In that case, you
need to run \c configure with the \c -no-opengl option.
-
- \section1 Work in Progress
-
- Phonon and its Qt backends, though fully functional for
- multimedia playback, are still under development. Functionality to
- come is the possibility to capture media and more processors for
- both music and video files.
-
- Another important consideration is to implement support for
- storing media to files; i.e., not playing back media directly.
-
- We also hope in the future to be able to support direct
- manipulation of media streams. This will give the programmer more
- freedom to manipulate streams than just through processors.
-
- Currently, the multimedia framework supports one input source. It will be
- possible to include several sources. This is useful in, for example, audio
- mixer applications where several audio sources can be sent, processed and
- output as a single audio stream.
*/
diff --git a/doc/src/frameworks-technologies/plugins-howto.qdoc b/doc/src/frameworks-technologies/plugins-howto.qdoc
index 5103bdc4a3..8e4cbe4be3 100644
--- a/doc/src/frameworks-technologies/plugins-howto.qdoc
+++ b/doc/src/frameworks-technologies/plugins-howto.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/frameworks-technologies/qthelp.qdoc b/doc/src/frameworks-technologies/qthelp.qdoc
index 2342e4046a..14874efdc2 100644
--- a/doc/src/frameworks-technologies/qthelp.qdoc
+++ b/doc/src/frameworks-technologies/qthelp.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/frameworks-technologies/qundo.qdoc b/doc/src/frameworks-technologies/qundo.qdoc
index bc050d87f0..08ed0e4421 100644
--- a/doc/src/frameworks-technologies/qundo.qdoc
+++ b/doc/src/frameworks-technologies/qundo.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/frameworks-technologies/richtext.qdoc b/doc/src/frameworks-technologies/richtext.qdoc
index a9ee0b2c5c..f065531d5b 100644
--- a/doc/src/frameworks-technologies/richtext.qdoc
+++ b/doc/src/frameworks-technologies/richtext.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/frameworks-technologies/statemachine.qdoc b/doc/src/frameworks-technologies/statemachine.qdoc
index 714483ae2c..a0cd005b5f 100644
--- a/doc/src/frameworks-technologies/statemachine.qdoc
+++ b/doc/src/frameworks-technologies/statemachine.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/frameworks-technologies/templates.qdoc b/doc/src/frameworks-technologies/templates.qdoc
index 97b5a8787e..346f0437ad 100644
--- a/doc/src/frameworks-technologies/templates.qdoc
+++ b/doc/src/frameworks-technologies/templates.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/frameworks-technologies/threads.qdoc b/doc/src/frameworks-technologies/threads.qdoc
index 405997a5e8..3ef617ccd1 100644
--- a/doc/src/frameworks-technologies/threads.qdoc
+++ b/doc/src/frameworks-technologies/threads.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
@@ -324,10 +324,6 @@
post events to objects that "live" in other threads. This is
possible because each thread is allowed to have its own event
loop.
-
- Topics:
-
- \tableofcontents
\section1 QObject Reentrancy
diff --git a/doc/src/frameworks-technologies/unicode.qdoc b/doc/src/frameworks-technologies/unicode.qdoc
index 2ad894733a..061b61e8c3 100644
--- a/doc/src/frameworks-technologies/unicode.qdoc
+++ b/doc/src/frameworks-technologies/unicode.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/getting-started/demos.qdoc b/doc/src/getting-started/demos.qdoc
index f52fc92d9c..2fe39a2df1 100644
--- a/doc/src/getting-started/demos.qdoc
+++ b/doc/src/getting-started/demos.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/getting-started/examples.qdoc b/doc/src/getting-started/examples.qdoc
index 596cc01605..5230b7edd5 100644
--- a/doc/src/getting-started/examples.qdoc
+++ b/doc/src/getting-started/examples.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
@@ -32,11 +32,11 @@
Qt includes a set of examples that cover nearly every aspect of Qt
development. They aren't meant to be impressive when you run them,
but in each case the source code has been carefully written to
- illustrate one or more best Qt programming practices.
+ illustrate one or more best Qt programming practices.
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
@@ -766,6 +767,9 @@
\row \o \l{webkit/googlechat}{Google Chat}
\o A real-world example that shows how an existing Web-based service can be accessed
using QtWebKit.
+ \row \o \l{webkit/imageanalyzer}{Image Analyzer}\raisedaster
+ \o A \l{The QtWebKit Bridge}{QtWebKit bridge} application which contains a
+ web interface and client-side processing.
\row \o \l{webkit/previewer}{Previewer}\raisedaster
\o Shows how to make a simple Web page previewer by using Qt's text input widgets
together with a QWebView widget.
@@ -778,7 +782,7 @@
*/
/*!
- \page examples-helpsystem.html
+ \page examples-helpsystem.html
\ingroup all-examples
\title Help System Examples
\brief Adding interactive help to your Qt application.
diff --git a/doc/src/getting-started/gettingstarted.qdoc b/doc/src/getting-started/gettingstarted.qdoc
index e58305a23f..162dba1df5 100644
--- a/doc/src/getting-started/gettingstarted.qdoc
+++ b/doc/src/getting-started/gettingstarted.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/getting-started/gettingstartedqml.qdoc b/doc/src/getting-started/gettingstartedqml.qdoc
index a6159c3728..54fa098c63 100644
--- a/doc/src/getting-started/gettingstartedqml.qdoc
+++ b/doc/src/getting-started/gettingstartedqml.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
@@ -35,6 +35,16 @@
After reading this guide, you should be ready to develop your own applications
using QML and Qt C++.
+ \section1 Installation
+
+ First, we would need to install the latest version of Qt that includes \l{Qt
+ Quick}, which is Qt 4.7. The \l{Installation} {installation} guide contains
+ 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{QML Viewer}.
+
\section1 QML to Build User Interfaces
The application we are building is a simple text editor that will load, save,
@@ -48,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.
@@ -68,10 +83,10 @@
We start our text editor by building a button. Functionally, a button has a mouse
sensitive area and a label. Buttons perform actions when a user presses the button.
- 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.
+ 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/part0/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
@@ -88,7 +103,7 @@
\c text property. The label is contained within the Rectangle and in order to center
it in the middle, we assign the \c anchors of the Text element to its parent, which
is called \c simplebutton. Anchors may bind to other items' anchors, allowing layout
- assignments simpler.
+ assignments simpler.
We shall save this code as \c SimpleButton.qml. Running qmlviewer with the file as the
argument will display the grey rectangle with a text label.
@@ -104,7 +119,7 @@
id:simplebutton
...
- MouseArea{
+ MouseArea{
id: buttonMouseArea
anchors.fill: parent //anchor all sides of the mouse area to the rectangle's anchors
@@ -126,7 +141,7 @@
whenever the acceptable mouse button is clicked, the left click being the default. We
can bind actions to the onClicked handler. In our example, \c console.log() outputs text
whenever the mouse area is clicked. The function \c console.log() is a useful tool for
- debugging purposes and for outputting text.
+ debugging purposes and for outputting text.
The code in \c SimpleButton.qml is sufficient to display a button on the screen and
output text whenever it is clicked with a mouse.
@@ -136,7 +151,7 @@
id:Button
...
- property color buttonColor: "lightblue"
+ property color buttonColor: "lightblue"
property color onHoverColor: "gold"
property color borderColor: "white"
@@ -145,8 +160,8 @@
console.log(buttonLabel.text + " clicked" )
}
- MouseArea{
- onClicked: buttonClick()
+ MouseArea{
+ onClicked: buttonClick()
hoverEnabled: true
onEntered: parent.border.color = onHoverColor
onExited: parent.border.color = borderColor
@@ -210,12 +225,12 @@
\code
import QtQuick 1.0 \\import the main Qt QML module
- import "folderName" \\import the contents of the folder
+ import "folderName" \\import the contents of the folder
import "script.js" as Script \\import a Javascript file and name it as Script
\endcode
The syntax shown above shows how to use the \c import keyword. This is required to
- use JavaScript files, or QML files that are not within the same directory. Since
+ use JavaScript files, or QML files that are not within the same directory. Since
\c Button.qml is in the same directory as \c FileMenu.qml, we do not need to import
the \c Button.qml file to use it. We can directly create a \c Button element by declaring
\c Button{}, similar to a \c Rectangle{} declaration.
@@ -242,7 +257,7 @@
label: "Exit"
buttonColor: "darkgrey"
- onButtonClick: Qt.quit()
+ onButtonClick: Qt.quit()
}
}
\endcode
@@ -266,7 +281,7 @@
The declaration of the edit menu is very similar at this stage. The menu has
buttons that have the labels: \c Copy, \c Paste, and \c {Select All}.
- \image qml-texteditor1_editmenu.png
+ \image qml-texteditor1_editmenu.png
Armed with our knowledge of importing and customizing previously made
components, we may now combine these menu pages to create a menu bar,
@@ -333,7 +348,7 @@
//control the movement of the menu switching
snapMode: ListView.SnapOneItem
orientation: ListView.Horizontal
- boundsBehavior: Flickable.StopAtBounds
+ boundsBehavior: Flickable.StopAtBounds
flickDeceleration: 5000
highlightFollowsCurrentItem: true
highlightMoveDuration:240
@@ -346,7 +361,7 @@
code above sets \c Flickable properties to create the desired flicking movement
to our view. In particular,the property \c highlightMoveDuration changes the
duration of the flick transition. A higher \c highlightMoveDuration value
- results in slower menu switching.
+ results in slower menu switching.
The \c ListView maintains the model items through an \c index and each visual
item in the model is accessible through the \c index, in the order of the
@@ -380,7 +395,7 @@
id: editButton
label: "Edit"
...
- onButtonClick: menuListView.currentIndex = 1
+ onButtonClick: menuListView.currentIndex = 1
}
}
}
@@ -389,7 +404,7 @@
The menu bar we just created can be flicked to access the menus or by clicking
on the menu names at the top. Switching menu screens feel intuitive and responsive.
- \image qml-texteditor2_menubar.png
+ \image qml-texteditor2_menubar.png
\section1 Building a Text Editor
@@ -402,7 +417,7 @@
\code
TextEdit{
- id: textEditor
+ id: textEditor
anchors.fill:parent
width:parent.width; height:parent.height
color:"midnightblue"
@@ -475,14 +490,14 @@
that already have defined behaviors. Using this approach, application layouts
and UI components can be created easily.
- \image qml-texteditor3_texteditor.png
+ \image qml-texteditor3_texteditor.png
\section1 Decorating the Text Editor
\section2 Implementing a Drawer Interface
Our text editor looks simple and we need to decorate it. Using QML, we can declare
transitions and animate our text editor. Our menu bar is occupying one-third of the
- screen and it would be nice to have it only appear when we want it.
+ screen and it would be nice to have it only appear when we want it.
We can add a drawer interface, that will contract or expand the menu bar when clicked.
In our implementation, we have a thin rectangle that responds to mouse clicks. The
@@ -537,7 +552,7 @@
the item's \c transitions property. Our text editor has a state transition whenever
the state changes to either \c DRAWER_OPEN or \c DRAWER_CLOSED. Importantly, the
transition needs a \c from and a \c to state but for our transitions, we can use
- the wild card \c * symbol to denote that the transition applies to all state changes.
+ the wild card \c * symbol to denote that the transition applies to all state changes.
During transitions, we can assign animations to the property changes. Our
\c menuBar switches position from \c {y:0} to \c {y:-partition} and we can animate
@@ -561,7 +576,7 @@
Behavior{
NumberAnimation{property: "rotation";easing.type: Easing.OutExpo }
- }
+ }
\endcode
Going back to our components with knowledge of states and animations, we can improve
@@ -607,9 +622,9 @@
We are finished building the user interface of a very simple text editor.
Going forward, the user interface is complete, and we can implement the
application logic using regular Qt and C++. QML works nicely as a prototyping
- tool, separating the application logic away from the UI design.
+ tool, separating the application logic away from the UI design.
- \image qml-texteditor4_texteditor.png
+ \image qml-texteditor4_texteditor.png
\section2 Extending QML using Qt C++
@@ -622,7 +637,7 @@
we shall implement the load and save functions in C++ and export it as a plugin.
This way, we only need to load the QML file directly instead of running an executable.
- \section3 Exposing C++ Classes to QML
+ \section3 Exposing C++ Classes to QML
We will be implementing file loading and saving using Qt and C++. C++ classes
and functions can be used in QML by registering them. The class also needs to be
@@ -645,7 +660,7 @@
directory.
\code
- In cppPlugins.pro:
+ In filedialog.pro:
TEMPLATE = lib
CONFIG += qt plugin
@@ -762,7 +777,7 @@
Similarly, we have the other properties declared according to their uses. The
\c filesCount property indicates the number of files in a directory. The filename
property is set to the currently selected file's name and the loaded/saved file
- content is stored in \c fileContent property.
+ content is stored in \c fileContent property.
\code
Q_PROPERTY(QDeclarativeListProperty<File> files READ files CONSTANT )
@@ -811,10 +826,10 @@
Regular C++ functions are also accessible from QML. The file loading and saving
functions are implemented in C++ and declared using the
\l {Q_INVOKABLE}{Q_INVOKABLE} macro. Alternatively, we can declare the functions
- as a \c slot and the functions will be accessible from QML.
+ as a \c slot and the functions will be accessible from QML.
\code
- In Directory.h:
+ In Directory.h:
Q_INVOKABLE void saveFile();
Q_INVOKABLE void loadFile();
@@ -848,9 +863,9 @@
The constructor passes pointers to functions that will append the list, count
the list, retrieve the item using an index, and empty the list. Only the append
function is mandatory. Note that the function pointers must match the definition
- of \l {QDeclarativeListProperty::AppendFunction}{AppendFunction},
- \l {QDeclarativeListProperty::CountFunction}{CountFunction},
- \l {QDeclarativeListProperty::AtFunction}{AtFunction}, or
+ of \l {QDeclarativeListProperty::AppendFunction}{AppendFunction},
+ \l {QDeclarativeListProperty::CountFunction}{CountFunction},
+ \l {QDeclarativeListProperty::AtFunction}{AtFunction}, or
\l {QDeclarativeListProperty::ClearFunction}{ClearFunction}.
\code
@@ -871,7 +886,7 @@
text files is in the application directory, get the file's name and content as a
string, and be notified whenever there are changes in the directory contents.
- To build the plugin, run \c qmake on the \c cppPlugins.pro project file, then run
+ To build the plugin, run \c qmake on the \c filedialog.pro project file, then run
\c make to build and transfer the plugin to the \c plugins directory.
@@ -883,7 +898,7 @@
plugins and other resources.
\code
- In qmldir:
+ In qmldir:
Button ./Button.qml
FileDialog ./FileDialog.qml
@@ -895,7 +910,7 @@
\endcode
The plugin we just created is called \c FileDialog, as indicated by the
- \c TARGET field in the project file. The compiled plugin is in the \c plugins directory.
+ \c TARGET field in the project file. The compiled plugin is in the \c plugins directory.
\section3 Integrating a File Dialog into the File Menu
@@ -910,7 +925,7 @@
\c FileDialog element that the directory refreshed its contents. This notification
is performed in the signal handler, \c onDirectoryChanged.
- \code
+ \code
In FileMenu.qml:
Directory{
@@ -922,7 +937,7 @@
Keeping with the simplicity of our application, the file dialog will always be
visible and will not display invalid text files, which do not have a \c .txt
- extension to their filenames.
+ extension to their filenames.
\code
In FileDialog.qml:
@@ -981,10 +996,10 @@
will transfer the text from the \c TextEdit onto the directory's \c fileContent
property, then copy its file name from the editable text input. Finally, the button
calls the \c saveFile() function, saving the file. The \c loadButton has a similar
- execution. Also, the \c New action will empty the contents of the \c TextEdit.
+ execution. Also, the \c New action will empty the contents of the \c TextEdit.
Further, the \c EditMenu buttons are connected to the \c TextEdit functions to copy,
- paste, and select all the text in the text editor.
+ paste, and select all the text in the text editor.
\image qml-texteditor5_filemenu.png
@@ -995,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/gettingstartedqt.qdoc b/doc/src/getting-started/gettingstartedqt.qdoc
index 25d0ccd22f..945d7c33cb 100644
--- a/doc/src/getting-started/gettingstartedqt.qdoc
+++ b/doc/src/getting-started/gettingstartedqt.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/getting-started/how-to-learn-qt.qdoc b/doc/src/getting-started/how-to-learn-qt.qdoc
index 8ca1735468..e9f462ce93 100644
--- a/doc/src/getting-started/how-to-learn-qt.qdoc
+++ b/doc/src/getting-started/how-to-learn-qt.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/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc
index bc0128cc09..a68310c908 100644
--- a/doc/src/getting-started/installation.qdoc
+++ b/doc/src/getting-started/installation.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
@@ -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
@@ -392,10 +392,10 @@ must be run as root.
*/
/*! \page install-wince.html
-\title Installing Qt on Windows CE
+\title Installing Qt for Windows CE
\ingroup installation
\ingroup qtce
-\brief How to install Qt on Windows CE.
+\brief How to install Qt for Windows CE.
\previouspage Installation
\tableofcontents
@@ -492,9 +492,9 @@ in the \l{Qt for Windows CE Requirements} document.
*/
/*! \page install-Symbian-installer.html
-\title Installing Qt on the Symbian platform from a Binary Package
+\title Installing Qt for the Symbian platform from a Binary Package
\ingroup qtsymbian
-\brief How to install Qt on the Symbian platform from a binary package.
+\brief How to install Qt for the Symbian platform from a binary package.
\previouspage Installation
\tableofcontents
@@ -551,10 +551,10 @@ Symbian platform,
*/
/*! \page install-Symbian.html
-\title Installing Qt on the Symbian platform
+\title Installing Qt for the Symbian platform
\ingroup installation
\ingroup qtsymbian
-\brief How to install Qt on the Symbian platform.
+\brief How to install Qt for the Symbian platform.
\previouspage Installation
\tableofcontents
@@ -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
@@ -685,10 +685,10 @@ Binary Package} document.
*/
/*! \page install-Symbian-linux.html
-\title Installing Qt on the Symbian platform using Linux (experimental)
+\title Installing Qt for the Symbian platform using Linux (experimental)
\ingroup installation
\ingroup qtsymbian
-\brief How to install Qt on the Symbian platform using Linux.
+\brief How to install Qt for the Symbian platform using Linux.
\previouspage Installation
\tableofcontents
@@ -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/getting-started/known-issues.qdoc b/doc/src/getting-started/known-issues.qdoc
index 942c41d5d4..d0044f3cce 100644
--- a/doc/src/getting-started/known-issues.qdoc
+++ b/doc/src/getting-started/known-issues.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/getting-started/tutorials.qdoc b/doc/src/getting-started/tutorials.qdoc
index 46a58084f4..2c5ebaf605 100644
--- a/doc/src/getting-started/tutorials.qdoc
+++ b/doc/src/getting-started/tutorials.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/howtos/HWacceleration.qdoc b/doc/src/howtos/HWacceleration.qdoc
index 1932b6d768..3eb1e74fc8 100644
--- a/doc/src/howtos/HWacceleration.qdoc
+++ b/doc/src/howtos/HWacceleration.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/howtos/accelerators.qdoc b/doc/src/howtos/accelerators.qdoc
index 2aae38a736..68d2a85805 100644
--- a/doc/src/howtos/accelerators.qdoc
+++ b/doc/src/howtos/accelerators.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/howtos/appicon.qdoc b/doc/src/howtos/appicon.qdoc
index 55524d87f6..9b9fedcdb2 100644
--- a/doc/src/howtos/appicon.qdoc
+++ b/doc/src/howtos/appicon.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/howtos/custom-types.qdoc b/doc/src/howtos/custom-types.qdoc
index 9910f2ec00..086a1d7edd 100644
--- a/doc/src/howtos/custom-types.qdoc
+++ b/doc/src/howtos/custom-types.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/howtos/exceptionsafety.qdoc b/doc/src/howtos/exceptionsafety.qdoc
index bf85c2a4e7..49d99de576 100644
--- a/doc/src/howtos/exceptionsafety.qdoc
+++ b/doc/src/howtos/exceptionsafety.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/howtos/guibooks.qdoc b/doc/src/howtos/guibooks.qdoc
index 515f81f498..d74f08f425 100644
--- a/doc/src/howtos/guibooks.qdoc
+++ b/doc/src/howtos/guibooks.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/howtos/openvg.qdoc b/doc/src/howtos/openvg.qdoc
index dc7a34a5e7..de3c1e117d 100644
--- a/doc/src/howtos/openvg.qdoc
+++ b/doc/src/howtos/openvg.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/howtos/qtdesigner.qdoc b/doc/src/howtos/qtdesigner.qdoc
index 7fd008f823..ab7e26b125 100644
--- a/doc/src/howtos/qtdesigner.qdoc
+++ b/doc/src/howtos/qtdesigner.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/howtos/restoring-geometry.qdoc b/doc/src/howtos/restoring-geometry.qdoc
index 0f82182feb..c6b7e37a6d 100644
--- a/doc/src/howtos/restoring-geometry.qdoc
+++ b/doc/src/howtos/restoring-geometry.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/howtos/session.qdoc b/doc/src/howtos/session.qdoc
index b48a591153..7980cde224 100644
--- a/doc/src/howtos/session.qdoc
+++ b/doc/src/howtos/session.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/howtos/sharedlibrary.qdoc b/doc/src/howtos/sharedlibrary.qdoc
index 6980a41575..04364ebc2c 100644
--- a/doc/src/howtos/sharedlibrary.qdoc
+++ b/doc/src/howtos/sharedlibrary.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/howtos/timers.qdoc b/doc/src/howtos/timers.qdoc
index 585e53b380..22270c1dd2 100644
--- a/doc/src/howtos/timers.qdoc
+++ b/doc/src/howtos/timers.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/howtos/unix-signal-handlers.qdoc b/doc/src/howtos/unix-signal-handlers.qdoc
index 2893439d92..ca34bfb46a 100644
--- a/doc/src/howtos/unix-signal-handlers.qdoc
+++ b/doc/src/howtos/unix-signal-handlers.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
@@ -78,7 +78,7 @@
In your Unix signal handlers, you write a byte to the \e write end
of a socket pair and return. This will cause the corresponding
QSocketNotifier to emit its activated() signal, which will in turn
- cause the appropriate Qt slott function to run.
+ cause the appropriate Qt slot function to run.
\snippet doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc 3
diff --git a/doc/src/images/webkit-imageanalyzer-complete.png b/doc/src/images/webkit-imageanalyzer-complete.png
new file mode 100644
index 0000000000..47c0ee1461
--- /dev/null
+++ b/doc/src/images/webkit-imageanalyzer-complete.png
Binary files differ
diff --git a/doc/src/images/webkit-imageanalyzer-progress.png b/doc/src/images/webkit-imageanalyzer-progress.png
new file mode 100644
index 0000000000..5bab8905c8
--- /dev/null
+++ b/doc/src/images/webkit-imageanalyzer-progress.png
Binary files differ
diff --git a/doc/src/images/webkit-imageanalyzer-screenshot.png b/doc/src/images/webkit-imageanalyzer-screenshot.png
new file mode 100644
index 0000000000..c96371a840
--- /dev/null
+++ b/doc/src/images/webkit-imageanalyzer-screenshot.png
Binary files differ
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
index 77856ec720..57fc18aa50 100644
--- a/doc/src/index.qdoc
+++ b/doc/src/index.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
@@ -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/internationalization/i18n.qdoc b/doc/src/internationalization/i18n.qdoc
index 8b6e337148..c58cc91d6b 100644
--- a/doc/src/internationalization/i18n.qdoc
+++ b/doc/src/internationalization/i18n.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/internationalization/linguist-manual.qdoc b/doc/src/internationalization/linguist-manual.qdoc
index fa992af07f..57b98b8c1a 100644
--- a/doc/src/internationalization/linguist-manual.qdoc
+++ b/doc/src/internationalization/linguist-manual.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/ja_JP/development/designer-manual.qdoc b/doc/src/ja_JP/development/designer-manual.qdoc
index e90e056646..f71da3c98b 100644
--- a/doc/src/ja_JP/development/designer-manual.qdoc
+++ b/doc/src/ja_JP/development/designer-manual.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/ja_JP/development/qmake-manual.qdoc b/doc/src/ja_JP/development/qmake-manual.qdoc
index 217814b774..699fa93527 100644
--- a/doc/src/ja_JP/development/qmake-manual.qdoc
+++ b/doc/src/ja_JP/development/qmake-manual.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/ja_JP/development/qtestlib.qdoc b/doc/src/ja_JP/development/qtestlib.qdoc
index b7bb066743..f0ff60d444 100644
--- a/doc/src/ja_JP/development/qtestlib.qdoc
+++ b/doc/src/ja_JP/development/qtestlib.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/ja_JP/examples/arrowpad.qdoc b/doc/src/ja_JP/examples/arrowpad.qdoc
index bbeb7febc8..3cb798bf27 100644
--- a/doc/src/ja_JP/examples/arrowpad.qdoc
+++ b/doc/src/ja_JP/examples/arrowpad.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/ja_JP/examples/hellotr.qdoc b/doc/src/ja_JP/examples/hellotr.qdoc
index 8c3358457c..b0ed8e8742 100644
--- a/doc/src/ja_JP/examples/hellotr.qdoc
+++ b/doc/src/ja_JP/examples/hellotr.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/ja_JP/examples/trollprint.qdoc b/doc/src/ja_JP/examples/trollprint.qdoc
index 66d9fa3d68..b0397a3a72 100644
--- a/doc/src/ja_JP/examples/trollprint.qdoc
+++ b/doc/src/ja_JP/examples/trollprint.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/ja_JP/getting-started/tutorials.qdoc b/doc/src/ja_JP/getting-started/tutorials.qdoc
index cc4fb13824..fc461bada7 100644
--- a/doc/src/ja_JP/getting-started/tutorials.qdoc
+++ b/doc/src/ja_JP/getting-started/tutorials.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/ja_JP/tutorials/addressbook.qdoc b/doc/src/ja_JP/tutorials/addressbook.qdoc
index 238ecb196a..522aeb2c84 100644
--- a/doc/src/ja_JP/tutorials/addressbook.qdoc
+++ b/doc/src/ja_JP/tutorials/addressbook.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/ja_JP/tutorials/widgets-tutorial.qdoc b/doc/src/ja_JP/tutorials/widgets-tutorial.qdoc
index 42f66875c8..a5c3e18f61 100644
--- a/doc/src/ja_JP/tutorials/widgets-tutorial.qdoc
+++ b/doc/src/ja_JP/tutorials/widgets-tutorial.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/legal/3rdparty.qdoc b/doc/src/legal/3rdparty.qdoc
index db6ff7c530..8b3d5f2d4b 100644
--- a/doc/src/legal/3rdparty.qdoc
+++ b/doc/src/legal/3rdparty.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/legal/commercialeditions.qdoc b/doc/src/legal/commercialeditions.qdoc
index 8a2583db43..c3a5d60b96 100644
--- a/doc/src/legal/commercialeditions.qdoc
+++ b/doc/src/legal/commercialeditions.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/legal/editions.qdoc b/doc/src/legal/editions.qdoc
index 60a8736195..7be33b3362 100644
--- a/doc/src/legal/editions.qdoc
+++ b/doc/src/legal/editions.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/legal/gpl.qdoc b/doc/src/legal/gpl.qdoc
index 504b451bd3..31a8855901 100644
--- a/doc/src/legal/gpl.qdoc
+++ b/doc/src/legal/gpl.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/legal/licenses.qdoc b/doc/src/legal/licenses.qdoc
index 12aca6b5b6..631ff40734 100644
--- a/doc/src/legal/licenses.qdoc
+++ b/doc/src/legal/licenses.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/legal/opensourceedition.qdoc b/doc/src/legal/opensourceedition.qdoc
index c02fde7428..602e6d3748 100644
--- a/doc/src/legal/opensourceedition.qdoc
+++ b/doc/src/legal/opensourceedition.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
@@ -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 f6ffae1284..3bf783fe1f 100644
--- a/doc/src/legal/trademarks.qdoc
+++ b/doc/src/legal/trademarks.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
@@ -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/modules.qdoc b/doc/src/modules.qdoc
index d3c33d995d..f781f81616 100644
--- a/doc/src/modules.qdoc
+++ b/doc/src/modules.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
@@ -665,6 +665,10 @@
\brief The QtHelp module provides classes for integrating
online documentation in applications.
+ The classes and tools supplied with Qt to enable developers to include
+ online help and documentation in their applications are described in
+ more detail in \l{The Qt Help Framework} overview document.
+
To include the definitions of the module's classes, use the
following directive:
diff --git a/doc/src/network-programming/bearermanagement.qdoc b/doc/src/network-programming/bearermanagement.qdoc
index bc016dff94..98de5bf588 100644
--- a/doc/src/network-programming/bearermanagement.qdoc
+++ b/doc/src/network-programming/bearermanagement.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/network-programming/qtnetwork.qdoc b/doc/src/network-programming/qtnetwork.qdoc
index fce12a7d9f..6fd58fefd9 100644
--- a/doc/src/network-programming/qtnetwork.qdoc
+++ b/doc/src/network-programming/qtnetwork.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/network-programming/ssl.qdoc b/doc/src/network-programming/ssl.qdoc
index 358697138e..85ea7ef6d0 100644
--- a/doc/src/network-programming/ssl.qdoc
+++ b/doc/src/network-programming/ssl.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/objectmodel/metaobjects.qdoc b/doc/src/objectmodel/metaobjects.qdoc
index 0597cd6420..1fd3f524a9 100644
--- a/doc/src/objectmodel/metaobjects.qdoc
+++ b/doc/src/objectmodel/metaobjects.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/objectmodel/object.qdoc b/doc/src/objectmodel/object.qdoc
index 5bb39d6ab7..95492e60e5 100644
--- a/doc/src/objectmodel/object.qdoc
+++ b/doc/src/objectmodel/object.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/objectmodel/objecttrees.qdoc b/doc/src/objectmodel/objecttrees.qdoc
index 3a4aef79e5..ef20694035 100644
--- a/doc/src/objectmodel/objecttrees.qdoc
+++ b/doc/src/objectmodel/objecttrees.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/objectmodel/properties.qdoc b/doc/src/objectmodel/properties.qdoc
index 2cb7c04e7f..c960366f10 100644
--- a/doc/src/objectmodel/properties.qdoc
+++ b/doc/src/objectmodel/properties.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/objectmodel/signalsandslots.qdoc b/doc/src/objectmodel/signalsandslots.qdoc
index c12ca78c03..01f42f6c1d 100644
--- a/doc/src/objectmodel/signalsandslots.qdoc
+++ b/doc/src/objectmodel/signalsandslots.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/overviews.qdoc b/doc/src/overviews.qdoc
index 2dd44f69bb..b9bd3b45a1 100644
--- a/doc/src/overviews.qdoc
+++ b/doc/src/overviews.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
@@ -54,7 +54,7 @@
\brief The Qt components for constructing native look & feel desktop UI's.
These pages are about Qt's traditional set of GUI components for
- building both native look ^ feel and custom UI's for the desktop
+ building both native look & feel and custom UI's for the desktop
environment. Use \l{Qt Quick} for building UI's for mobile devices.
\generatelist {related}
diff --git a/doc/src/painting-and-printing/coordsys.qdoc b/doc/src/painting-and-printing/coordsys.qdoc
index 07ced35b67..0bae71b422 100644
--- a/doc/src/painting-and-printing/coordsys.qdoc
+++ b/doc/src/painting-and-printing/coordsys.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/painting-and-printing/paintsystem.qdoc b/doc/src/painting-and-printing/paintsystem.qdoc
index deb9c8b38b..0aaca46b6a 100644
--- a/doc/src/painting-and-printing/paintsystem.qdoc
+++ b/doc/src/painting-and-printing/paintsystem.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/painting-and-printing/printing.qdoc b/doc/src/painting-and-printing/printing.qdoc
index 97cd92f41a..67508642c7 100644
--- a/doc/src/painting-and-printing/printing.qdoc
+++ b/doc/src/painting-and-printing/printing.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/platforms/atomic-operations.qdoc b/doc/src/platforms/atomic-operations.qdoc
index 4d3499ef9c..6a6dde2dd7 100644
--- a/doc/src/platforms/atomic-operations.qdoc
+++ b/doc/src/platforms/atomic-operations.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/platforms/compiler-notes.qdoc b/doc/src/platforms/compiler-notes.qdoc
index bcf7cb4c6e..fb534dfbb8 100644
--- a/doc/src/platforms/compiler-notes.qdoc
+++ b/doc/src/platforms/compiler-notes.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
@@ -31,273 +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
- \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.
-
- \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-HwAcc-LinuxEmbedded.qdoc b/doc/src/platforms/emb-HwAcc-LinuxEmbedded.qdoc
index b9dc151aa3..2cde4baeb9 100644
--- a/doc/src/platforms/emb-HwAcc-LinuxEmbedded.qdoc
+++ b/doc/src/platforms/emb-HwAcc-LinuxEmbedded.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/platforms/emb-HwAcc-WinCE.qdoc b/doc/src/platforms/emb-HwAcc-WinCE.qdoc
index 00f85a131d..5dda1c3e1b 100644
--- a/doc/src/platforms/emb-HwAcc-WinCE.qdoc
+++ b/doc/src/platforms/emb-HwAcc-WinCE.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/platforms/emb-accel.qdoc b/doc/src/platforms/emb-accel.qdoc
index 8d7f02986c..c8854f7aaf 100644
--- a/doc/src/platforms/emb-accel.qdoc
+++ b/doc/src/platforms/emb-accel.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/platforms/emb-architecture.qdoc b/doc/src/platforms/emb-architecture.qdoc
index f75beeee94..dcaa319c01 100644
--- a/doc/src/platforms/emb-architecture.qdoc
+++ b/doc/src/platforms/emb-architecture.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/platforms/emb-charinput.qdoc b/doc/src/platforms/emb-charinput.qdoc
index 5a94267458..03cc340296 100644
--- a/doc/src/platforms/emb-charinput.qdoc
+++ b/doc/src/platforms/emb-charinput.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/platforms/emb-crosscompiling.qdoc b/doc/src/platforms/emb-crosscompiling.qdoc
index 13ccb651cc..f28ea7ab19 100644
--- a/doc/src/platforms/emb-crosscompiling.qdoc
+++ b/doc/src/platforms/emb-crosscompiling.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/platforms/emb-deployment.qdoc b/doc/src/platforms/emb-deployment.qdoc
index 473cafc642..9a3609753b 100644
--- a/doc/src/platforms/emb-deployment.qdoc
+++ b/doc/src/platforms/emb-deployment.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
@@ -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-differences.qdoc b/doc/src/platforms/emb-differences.qdoc
index 642738ebfd..e9aa0ebd13 100644
--- a/doc/src/platforms/emb-differences.qdoc
+++ b/doc/src/platforms/emb-differences.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/platforms/emb-directfb-EmbLinux.qdoc b/doc/src/platforms/emb-directfb-EmbLinux.qdoc
index f4168196ab..dbe6c14459 100644
--- a/doc/src/platforms/emb-directfb-EmbLinux.qdoc
+++ b/doc/src/platforms/emb-directfb-EmbLinux.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/platforms/emb-displaymanagement.qdoc b/doc/src/platforms/emb-displaymanagement.qdoc
index 6ed2c4925a..bba594f9ec 100644
--- a/doc/src/platforms/emb-displaymanagement.qdoc
+++ b/doc/src/platforms/emb-displaymanagement.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/platforms/emb-envvars.qdoc b/doc/src/platforms/emb-envvars.qdoc
index 2421da9835..1d109b4817 100644
--- a/doc/src/platforms/emb-envvars.qdoc
+++ b/doc/src/platforms/emb-envvars.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/platforms/emb-features.qdoc b/doc/src/platforms/emb-features.qdoc
index 1e7b585f4a..a3628677d1 100644
--- a/doc/src/platforms/emb-features.qdoc
+++ b/doc/src/platforms/emb-features.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/platforms/emb-fonts.qdoc b/doc/src/platforms/emb-fonts.qdoc
index f7fed13109..04aa4e4311 100644
--- a/doc/src/platforms/emb-fonts.qdoc
+++ b/doc/src/platforms/emb-fonts.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/platforms/emb-framebuffer-howto.qdoc b/doc/src/platforms/emb-framebuffer-howto.qdoc
index ab00b8884a..f8b7ff92c8 100644
--- a/doc/src/platforms/emb-framebuffer-howto.qdoc
+++ b/doc/src/platforms/emb-framebuffer-howto.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/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 26b64758ab..b5b408a7de 100644
--- a/doc/src/platforms/emb-install.qdoc
+++ b/doc/src/platforms/emb-install.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
@@ -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-kmap2qmap.qdoc b/doc/src/platforms/emb-kmap2qmap.qdoc
index 23c3c926ce..91983ef06f 100644
--- a/doc/src/platforms/emb-kmap2qmap.qdoc
+++ b/doc/src/platforms/emb-kmap2qmap.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/platforms/emb-makeqpf.qdoc b/doc/src/platforms/emb-makeqpf.qdoc
index 6cf9d261ce..af24d7ebb4 100644
--- a/doc/src/platforms/emb-makeqpf.qdoc
+++ b/doc/src/platforms/emb-makeqpf.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/platforms/emb-opengl-EmbLinux.qdoc b/doc/src/platforms/emb-opengl-EmbLinux.qdoc
index 649349db62..c53c3af173 100644
--- a/doc/src/platforms/emb-opengl-EmbLinux.qdoc
+++ b/doc/src/platforms/emb-opengl-EmbLinux.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/platforms/emb-openvg-EmbLinux.qdoc b/doc/src/platforms/emb-openvg-EmbLinux.qdoc
index 16dd51efac..267eadaf0b 100644
--- a/doc/src/platforms/emb-openvg-EmbLinux.qdoc
+++ b/doc/src/platforms/emb-openvg-EmbLinux.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/platforms/emb-performance.qdoc b/doc/src/platforms/emb-performance.qdoc
index e6edf59903..368b06e151 100644
--- a/doc/src/platforms/emb-performance.qdoc
+++ b/doc/src/platforms/emb-performance.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/platforms/emb-pointer.qdoc b/doc/src/platforms/emb-pointer.qdoc
index b8ec167455..81e532f5a0 100644
--- a/doc/src/platforms/emb-pointer.qdoc
+++ b/doc/src/platforms/emb-pointer.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
@@ -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-porting.qdoc b/doc/src/platforms/emb-porting.qdoc
index b7640ef4c7..8b1f5f0dc1 100644
--- a/doc/src/platforms/emb-porting.qdoc
+++ b/doc/src/platforms/emb-porting.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/platforms/emb-qvfb.qdoc b/doc/src/platforms/emb-qvfb.qdoc
index 5a35bc9f31..418d2d2bbb 100644
--- a/doc/src/platforms/emb-qvfb.qdoc
+++ b/doc/src/platforms/emb-qvfb.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
@@ -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 20893c9ab5..12222a6015 100644
--- a/doc/src/platforms/emb-running.qdoc
+++ b/doc/src/platforms/emb-running.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
@@ -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/emb-vnc.qdoc b/doc/src/platforms/emb-vnc.qdoc
index 47e8dcdb6e..45b47d9cbe 100644
--- a/doc/src/platforms/emb-vnc.qdoc
+++ b/doc/src/platforms/emb-vnc.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/platforms/mac-differences.qdoc b/doc/src/platforms/mac-differences.qdoc
index 25016568aa..8436043809 100644
--- a/doc/src/platforms/mac-differences.qdoc
+++ b/doc/src/platforms/mac-differences.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
@@ -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 41b6ae7d2d..8c30701965 100644
--- a/doc/src/platforms/platform-notes-rtos.qdoc
+++ b/doc/src/platforms/platform-notes-rtos.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
@@ -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 6f533ae74f..9c5f3c8418 100644
--- a/doc/src/platforms/platform-notes.qdoc
+++ b/doc/src/platforms/platform-notes.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
@@ -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
- Be sure to check our \l{Compiler Notes#Sun Studio}{Forte Developer / Sun Studio}
- notes.
+ See the notes for \l{Forte Developer / Sun Studio}.
- \section2 GCC on Solaris
+ \section2 GCC
+
+ 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
@@ -497,6 +739,9 @@
\o \c AllFiles when \l{http://developer.symbian.org/wiki/index.php/Capabilities_%28Symbian_Signed%29/AllFiles_Capability}{accessing specific areas.}
\row \o QtNetwork
\o \c NetworkServices is basically always required for this module.
+ \o \c ReadUserData is required to include all the phone's SSL certificates in the system's default CA certificate list
+ (for example those added by the user or stored in the SIM card),
+ without this capability only the CA certs built into the phone are used.
\row \o QtMultiMedia
\o \c UserEnvironment if QAudioInput is used.
\endtable
@@ -580,8 +825,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 988472def4..cd20917492 100644
--- a/doc/src/platforms/qt-embedded-linux.qdoc
+++ b/doc/src/platforms/qt-embedded-linux.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
@@ -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/qt-embedded.qdoc b/doc/src/platforms/qt-embedded.qdoc
index a3d11c6477..8beb59d0a7 100644
--- a/doc/src/platforms/qt-embedded.qdoc
+++ b/doc/src/platforms/qt-embedded.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/platforms/qtmac-as-native.qdoc b/doc/src/platforms/qtmac-as-native.qdoc
index 5bb0d10e18..61acebb58e 100644
--- a/doc/src/platforms/qtmac-as-native.qdoc
+++ b/doc/src/platforms/qtmac-as-native.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/platforms/supported-platforms.qdoc b/doc/src/platforms/supported-platforms.qdoc
index 83cd89b4ce..3a7d590164 100644
--- a/doc/src/platforms/supported-platforms.qdoc
+++ b/doc/src/platforms/supported-platforms.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
@@ -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
@@ -115,14 +114,16 @@
\o gcc (\l{http://www.scratchbox.org/}{Scratchbox)}
\row \o Windows CE 5.0 (ARMv4i, x86, MIPS)
\o MSVC 2005 WinCE 5.0 Standard (x86, pocket, smart, mipsii)
- \row \o Windows CE 6.0 (ARMv4i, x86, MIPS)
- \o MSVC 2008 WinCE 6.0 Professional
+ \row \o Windows Embedded CE 6.0 (ARMv4i, x86, MIPS)
+ \o MSVC 2008 WinCE Embedded 6.0 Professional
\row \o Maemo 5(Linux, ARM, X11)
\o gcc (\l{http://www.scratchbox.org/}{Scratchbox)}
\row \o Symbian (Symbian/S60 3.1, 3.2)
\o RVCT 2.2 [build 686 or later], WINSCW 3.2.5 [build 482 or later], GCCE (for applications)
\endtable
+ \note The PPC architecture on Mac has been downgraded from tier 1 to tier 2 for 4.7.
+
\section1 Tier 3 Platforms (Not supported by Nokia)
All platforms not specifically listed above are not supported by Nokia. Nokia does
diff --git a/doc/src/platforms/symbian-exceptionsafety.qdoc b/doc/src/platforms/symbian-exceptionsafety.qdoc
index 03d223b524..ffbf117fd6 100644
--- a/doc/src/platforms/symbian-exceptionsafety.qdoc
+++ b/doc/src/platforms/symbian-exceptionsafety.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/platforms/symbian-introduction.qdoc b/doc/src/platforms/symbian-introduction.qdoc
index 9bf5c72bdc..7bc530363a 100644
--- a/doc/src/platforms/symbian-introduction.qdoc
+++ b/doc/src/platforms/symbian-introduction.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
@@ -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
diff --git a/doc/src/platforms/wince-customization.qdoc b/doc/src/platforms/wince-customization.qdoc
index 5509d441c1..b3b9170802 100644
--- a/doc/src/platforms/wince-customization.qdoc
+++ b/doc/src/platforms/wince-customization.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
@@ -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 b3de5fed3d..2e9da59fc7 100644
--- a/doc/src/platforms/wince-introduction.qdoc
+++ b/doc/src/platforms/wince-introduction.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
@@ -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/wince-opengl.qdoc b/doc/src/platforms/wince-opengl.qdoc
index f9921f5bb7..a33e9f68a9 100644
--- a/doc/src/platforms/wince-opengl.qdoc
+++ b/doc/src/platforms/wince-opengl.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/platforms/wince-openvg.qdoc b/doc/src/platforms/wince-openvg.qdoc
index aebd5ef128..c15b1bd29e 100644
--- a/doc/src/platforms/wince-openvg.qdoc
+++ b/doc/src/platforms/wince-openvg.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/platforms/wince-signing.qdoc b/doc/src/platforms/wince-signing.qdoc
index d1fa6dab35..49e11a0608 100644
--- a/doc/src/platforms/wince-signing.qdoc
+++ b/doc/src/platforms/wince-signing.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/platforms/winsystem.qdoc b/doc/src/platforms/winsystem.qdoc
index 71c93a5572..64e35c547a 100644
--- a/doc/src/platforms/winsystem.qdoc
+++ b/doc/src/platforms/winsystem.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
@@ -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/platforms/x11overlays.qdoc b/doc/src/platforms/x11overlays.qdoc
index 949a500dad..7a35cd2ed4 100644
--- a/doc/src/platforms/x11overlays.qdoc
+++ b/doc/src/platforms/x11overlays.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/porting/porting-qsa.qdoc b/doc/src/porting/porting-qsa.qdoc
index 153f0159fb..93a83f4a05 100644
--- a/doc/src/porting/porting-qsa.qdoc
+++ b/doc/src/porting/porting-qsa.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/porting/porting4-canvas.qdoc b/doc/src/porting/porting4-canvas.qdoc
index 40319170d0..d9e58baa12 100644
--- a/doc/src/porting/porting4-canvas.qdoc
+++ b/doc/src/porting/porting4-canvas.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/porting/porting4-designer.qdoc b/doc/src/porting/porting4-designer.qdoc
index aa42b685e3..0de6cf0c80 100644
--- a/doc/src/porting/porting4-designer.qdoc
+++ b/doc/src/porting/porting4-designer.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/porting/porting4-dnd.qdoc b/doc/src/porting/porting4-dnd.qdoc
index 1828ebcee4..66403d0998 100644
--- a/doc/src/porting/porting4-dnd.qdoc
+++ b/doc/src/porting/porting4-dnd.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/porting/porting4-overview.qdoc b/doc/src/porting/porting4-overview.qdoc
index 39a7cb9f5b..f9494601c1 100644
--- a/doc/src/porting/porting4-overview.qdoc
+++ b/doc/src/porting/porting4-overview.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/porting/porting4.qdoc b/doc/src/porting/porting4.qdoc
index 69bf877409..ab0762a774 100644
--- a/doc/src/porting/porting4.qdoc
+++ b/doc/src/porting/porting4.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/porting/qt3to4.qdoc b/doc/src/porting/qt3to4.qdoc
index e833b57f50..26eeee4dad 100644
--- a/doc/src/porting/qt3to4.qdoc
+++ b/doc/src/porting/qt3to4.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/porting/qt4-accessibility.qdoc b/doc/src/porting/qt4-accessibility.qdoc
index 0abcfedcbf..634dda4002 100644
--- a/doc/src/porting/qt4-accessibility.qdoc
+++ b/doc/src/porting/qt4-accessibility.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/porting/qt4-arthur.qdoc b/doc/src/porting/qt4-arthur.qdoc
index f657c83481..1d6819dc0e 100644
--- a/doc/src/porting/qt4-arthur.qdoc
+++ b/doc/src/porting/qt4-arthur.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/porting/qt4-designer.qdoc b/doc/src/porting/qt4-designer.qdoc
index 36881df281..ea5147a210 100644
--- a/doc/src/porting/qt4-designer.qdoc
+++ b/doc/src/porting/qt4-designer.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
@@ -36,18 +36,14 @@
\QD has been completely re-written based on our experience with
the previous versions of the product for Qt 3. One of the main new
- ideas behind this new version is to release the application as a
+ ideas is to release the application as a
collection of interchangeable components that include the property
editor, the widget box, and other useful tools for creating
graphical user interfaces with Qt. These components can either be
used together in the \QD application, or independently integrated
into other systems. As a result, certain features such as the
project editor and code editor have been removed from the version
- included with this release.
-
- The current version of \QD is near feature complete and can be used for
- many tasks. However, it is still under continuous development. This
- document will explain what is already in place.
+ included with release 4.
See also the \l{Qt Designer Manual}.
@@ -128,7 +124,7 @@
\row
\i \bold{Widget Editing Mode}
- The new \QD allows widgets to be dropped into existing layouts on
+ \QD now allows widgets to be dropped into existing layouts on
the form. Previously, it was necessary to break layouts in order
to add new widgets to them.
@@ -189,7 +185,7 @@
\row
\i \bold{The Resource Editor}
- The new \QD fully supports The Qt Resource System, and provide the
+ \QD now fully supports The Qt Resource System, and provides the
Resource Editor to help designers and developers manage the
resources that are needed by their applications.
@@ -210,8 +206,8 @@
\i \inlineimage designer-action-editor.png
\i \bold{The Action Editor}
- With the release of Qt 4.1, \QD introduces the Action Editor
- simplifying the management of actions when creating main window
+ With the release of Qt 4.1, \QD the Action Editor was introduced
+ to simplify the management of actions when creating main window
applications.
When creating a main window, you can add a menu bar and toolbars
@@ -261,7 +257,7 @@
\section1 Run-Time Support for Forms
- With the Qt 4.1 release, the new QtUiTools module is introduced to
+ With the Qt 4.1 release, the new QtUiTools module was introduced to
provide classes handling forms created with \QD.
Currently the module only contains the QUiLoader class.
diff --git a/doc/src/porting/qt4-interview.qdoc b/doc/src/porting/qt4-interview.qdoc
index f2dab2fb7c..973740a469 100644
--- a/doc/src/porting/qt4-interview.qdoc
+++ b/doc/src/porting/qt4-interview.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/porting/qt4-mainwindow.qdoc b/doc/src/porting/qt4-mainwindow.qdoc
index b160d63916..73c9b2bd99 100644
--- a/doc/src/porting/qt4-mainwindow.qdoc
+++ b/doc/src/porting/qt4-mainwindow.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/porting/qt4-network.qdoc b/doc/src/porting/qt4-network.qdoc
index f622b5adfb..52afb6ac36 100644
--- a/doc/src/porting/qt4-network.qdoc
+++ b/doc/src/porting/qt4-network.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/porting/qt4-scribe.qdoc b/doc/src/porting/qt4-scribe.qdoc
index 0a9596e813..0ab1edfa4f 100644
--- a/doc/src/porting/qt4-scribe.qdoc
+++ b/doc/src/porting/qt4-scribe.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/porting/qt4-sql.qdoc b/doc/src/porting/qt4-sql.qdoc
index 36ca4ef645..b2de58f5f6 100644
--- a/doc/src/porting/qt4-sql.qdoc
+++ b/doc/src/porting/qt4-sql.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/porting/qt4-styles.qdoc b/doc/src/porting/qt4-styles.qdoc
index d52a9ce278..4eb06c9057 100644
--- a/doc/src/porting/qt4-styles.qdoc
+++ b/doc/src/porting/qt4-styles.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/porting/qt4-threads.qdoc b/doc/src/porting/qt4-threads.qdoc
index b389c6cc48..3dd3594d8c 100644
--- a/doc/src/porting/qt4-threads.qdoc
+++ b/doc/src/porting/qt4-threads.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/porting/qt4-tulip.qdoc b/doc/src/porting/qt4-tulip.qdoc
index 333af8417f..48d2a9ea73 100644
--- a/doc/src/porting/qt4-tulip.qdoc
+++ b/doc/src/porting/qt4-tulip.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/qt-resources.qdoc b/doc/src/qt-resources.qdoc
index 9a6637f6a0..70a8c79dee 100644
--- a/doc/src/qt-resources.qdoc
+++ b/doc/src/qt-resources.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/qt-webpages.qdoc b/doc/src/qt-webpages.qdoc
index 5d9b41b234..05817df651 100644
--- a/doc/src/qt-webpages.qdoc
+++ b/doc/src/qt-webpages.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
@@ -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 919bb880de..2384051b24 100644
--- a/doc/src/qt4-intro.qdoc
+++ b/doc/src/qt4-intro.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
@@ -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
diff --git a/doc/src/scripting/ecmascript.qdoc b/doc/src/scripting/ecmascript.qdoc
index 508bf3b0ea..b08c3ae343 100644
--- a/doc/src/scripting/ecmascript.qdoc
+++ b/doc/src/scripting/ecmascript.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/scripting/qtscriptdebugger-manual.qdoc b/doc/src/scripting/qtscriptdebugger-manual.qdoc
index 0b1f0f4593..a19d8d4c6c 100644
--- a/doc/src/scripting/qtscriptdebugger-manual.qdoc
+++ b/doc/src/scripting/qtscriptdebugger-manual.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/scripting/qtscriptextensions.qdoc b/doc/src/scripting/qtscriptextensions.qdoc
index 8aa8b4fc2f..5825c0ae32 100644
--- a/doc/src/scripting/qtscriptextensions.qdoc
+++ b/doc/src/scripting/qtscriptextensions.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/scripting/scripting.qdoc b/doc/src/scripting/scripting.qdoc
index 70a17cf060..a5f3d767e9 100644
--- a/doc/src/scripting/scripting.qdoc
+++ b/doc/src/scripting/scripting.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_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..bd23462cc9 100644
--- a/doc/src/snippets/code/doc_src_installation.qdoc
+++ b/doc/src/snippets/code/doc_src_installation.qdoc
@@ -250,12 +250,12 @@ export PATH
//! [38]
cd /home/user/qt/%VERSION%
-./configure -platform linux-g++ -xplatform symbian/linux-armcc
+./configure -platform linux-g++ -xplatform symbian-armcc
//! [38]
//! [39]
cd /home/user/qt/%VERSION%
-./configure -platform linux-g++ -xplatform symbian/linux-gcce -no-webkit
+./configure -platform linux-g++ -xplatform symbian-gcce -no-webkit
//! [39]
//! [40]
@@ -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_linguist-manual.qdoc b/doc/src/snippets/code/doc_src_linguist-manual.qdoc
index db99120b72..294afe0047 100644
--- a/doc/src/snippets/code/doc_src_linguist-manual.qdoc
+++ b/doc/src/snippets/code/doc_src_linguist-manual.qdoc
@@ -92,8 +92,15 @@ Options:
Usage:
lrelease [options] project-file
lrelease [options] ts-files [-qm qm-file]
+
+lrelease is part of Qt'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 'compiled' 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
@@ -101,6 +108,9 @@ Options:
-removeidentical
If the translated text is the same as
the source text, do not include the message
+ -markuntranslated <prefix>
+ 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
diff --git a/doc/src/snippets/code/doc_src_qmake-manual.qdoc b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
index 4f74e9cb98..ab67a3dfa5 100644
--- a/doc/src/snippets/code/doc_src_qmake-manual.qdoc
+++ b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
@@ -193,15 +193,15 @@ DEFINES += USE_MY_STUFF QT_DLL
//! [28]
-myFiles.sources = path\*.png
+myFiles.files = path\*.png
DEPLOYMENT += myFiles
//! [28]
//! [29]
-myFiles.sources = path\file1.ext1 path2\file2.ext1 path3\*
+myFiles.files = path\file1.ext1 path2\file2.ext1 path3\*
myFiles.path = \some\path\on\device
-someother.sources = C:\additional\files\*
+someother.files = C:\additional\files\*
someother.path = \myFiles\path2
DEPLOYMENT += myFiles someother
//! [29]
@@ -849,12 +849,12 @@ CONFIG(debug, debug|release) {
//! [127]
//! [128]
-customplugin.sources = customimageplugin.dll
-customplugin.sources += c:\myplugins\othercustomimageplugin.dll
+customplugin.files = customimageplugin.dll
+customplugin.files += c:\myplugins\othercustomimageplugin.dll
customplugin.path = imageformats
-dynamiclibrary.sources = mylib.dll helper.exe
+dynamiclibrary.files = mylib.dll helper.exe
dynamiclibrary.path = \sys\bin
-globalplugin.sources = someglobalimageplugin.dll
+globalplugin.files = someglobalimageplugin.dll
globalplugin.path = \resource\qt\plugins\imageformats
DEPLOYMENT += customplugin dynamiclibrary globalplugin
//! [128]
@@ -923,7 +923,7 @@ MMP_RULES += myIfdefBlock
//! [139]
//! [140]
-somelib.sources = somelib.dll
+somelib.files = somelib.dll
somelib.path = \sys\bin
somelib.pkg_prerules = "(0x12345678), 2, 2, 0, {\"Some Package\"}" \
"(0x87654321), 1, *, * ~ 2, 2, 0, {\"Some Other Package\"}"
@@ -1021,7 +1021,7 @@ DEPLOYMENT -= default_bin_deployment default_resource_deployment default_reg_dep
//! [155]
default_bin_deployment.flags += FILERUN RUNINSTALL
-dep_note.sources = install_note.txt
+dep_note.files = install_note.txt
dep_note.flags = FILETEXT TEXTEXIT
DEPLOYMENT += dep_note
//! [155]
diff --git a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp b/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
index 59e6ae00a3..07ff2a0101 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
@@ -86,3 +86,38 @@ beginMoveRows(parent, 2, 2, parent, 0);
//! [9]
beginMoveRows(parent, 2, 2, parent, 4);
//! [9]
+
+
+//! [10]
+class CustomDataProxy : public QSortFilterProxyModel
+{
+ Q_OBJECT
+public:
+ CustomDataProxy(QObject *parent)
+ : QSortFilterProxyModel(parent)
+ {
+ }
+
+ ...
+
+ QVariant data(const QModelIndex &index, int role)
+ {
+ if (role != Qt::BackgroundRole)
+ return QSortFilterProxyModel::data(index, role);
+
+ if (m_customData.contains(index.row()))
+ return m_customData.value(index.row());
+ return QSortFilterProxyModel::data(index, role);
+ }
+
+private slots:
+ void resetInternalData()
+ {
+ m_customData.clear();
+ }
+
+private:
+ QHash<int, QVariant> m_customData;
+};
+//! [10]
+
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/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
new file mode 100644
index 0000000000..be0eedba77
--- /dev/null
+++ b/doc/src/snippets/declarative/keys/keys-handler.qml
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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
+
+Item {
+ width: 400; height: 400
+
+//! [key item]
+Item {
+ anchors.fill: parent
+ focus: true
+ Keys.onLeftPressed: console.log("move left")
+}
+//! [key item]
+
+Text {
+ anchors.fill: parent
+ text: "Press a cursor key"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+}
+}
diff --git a/doc/src/snippets/declarative/keys/keys-pressed.qml b/doc/src/snippets/declarative/keys/keys-pressed.qml
new file mode 100644
index 0000000000..90a4e37906
--- /dev/null
+++ b/doc/src/snippets/declarative/keys/keys-pressed.qml
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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
+
+Item {
+ width: 400; height: 400
+
+//! [key item]
+Item {
+ anchors.fill: parent
+ focus: true
+ Keys.onPressed: {
+ if (event.key == Qt.Key_Left) {
+ console.log("move left");
+ event.accepted = true;
+ }
+ }
+}
+//! [key item]
+
+Text {
+ anchors.fill: parent
+ text: "Press a cursor key"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+}
+}
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/context-advanced/connections.qml b/doc/src/snippets/declarative/qtbinding/context-advanced/connections.qml
new file mode 100644
index 0000000000..749bea3d1e
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/connections.qml
@@ -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$
+**
+****************************************************************************/
+import QtQuick 1.0
+
+//![0]
+Text {
+ text: applicationData.getCurrentDateTime()
+
+ 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/context-advanced/main.cpp b/doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp
new file mode 100644
index 0000000000..b92215b34e
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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"
+
+//![0]
+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();
+}
+//![0]
+
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/contextproperties/main.cpp b/doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp
deleted file mode 100644
index 6887e8fe7a..0000000000
--- a/doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QDeclarativeComponent>
-#include <QDeclarativeEngine>
-
-//![0]
-#include <QApplication>
-#include <QDeclarativeView>
-#include <QDeclarativeContext>
-
-int main(int argc, char *argv[])
-{
- QApplication app(argc, argv);
-
- QDeclarativeView view;
- QDeclarativeContext *context = view.rootContext();
- context->setContextProperty("backgroundColor",
- QColor(Qt::yellow));
-
- view.setSource(QUrl::fromLocalFile("main.qml"));
- view.show();
-
- return app.exec();
-}
-//![0]
-
-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));
-
- QDeclarativeComponent component(&engine, "main.qml");
- QObject *window = component.create(windowContext);
-//![1]
-}
-
-
diff --git a/doc/src/snippets/declarative/qtbinding/contextproperties/main.qml b/doc/src/snippets/declarative/qtbinding/contextproperties/main.qml
deleted file mode 100644
index 425346d8c9..0000000000
--- a/doc/src/snippets/declarative/qtbinding/contextproperties/main.qml
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//![0]
-import QtQuick 1.0
-
-Rectangle {
- width: 300
- height: 300
-
- color: backgroundColor
-
- Text {
- anchors.centerIn: parent
- text: "Hello Yellow World!"
- }
-}
-//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h b/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h
deleted file mode 100644
index 7e84bd4d6b..0000000000
--- a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QObject>
-#include <QColor>
-
-//![0]
-class CustomPalette : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(QColor background READ background WRITE setBackground NOTIFY backgroundChanged)
- Q_PROPERTY(QColor text READ text WRITE setText NOTIFY textChanged)
-
-public:
- CustomPalette() : m_background(Qt::white), m_text(Qt::black) {}
-
- QColor background() const { return m_background; }
- void setBackground(const QColor &c) {
- if (c != m_background) {
- m_background = c;
- emit backgroundChanged();
- }
- }
-
- QColor text() const { return m_text; }
- void setText(const QColor &c) {
- if (c != m_text) {
- m_text = c;
- emit textChanged();
- }
- }
-
-signals:
- void textChanged();
- void backgroundChanged();
-
-private:
- QColor m_background;
- QColor m_text;
-};
-
-//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.pro b/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.pro
deleted file mode 100644
index e6af0d033e..0000000000
--- a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.pro
+++ /dev/null
@@ -1,3 +0,0 @@
-QT += declarative
-HEADERS += custompalette.h
-SOURCES += main.cpp
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/main.cpp b/doc/src/snippets/declarative/qtbinding/custompalette/main.cpp
deleted file mode 100644
index 7481b759c4..0000000000
--- a/doc/src/snippets/declarative/qtbinding/custompalette/main.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QApplication>
-#include <QDeclarativeView>
-#include <QDeclarativeContext>
-
-#include "custompalette.h"
-
-//![0]
-int main(int argc, char *argv[])
-{
- QApplication app(argc, argv);
-
- QDeclarativeView view;
- view.rootContext()->setContextProperty("palette", new CustomPalette);
-
- view.setSource(QUrl::fromLocalFile("main.qml"));
- view.show();
-
- return app.exec();
-}
-//![0]
-
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/main.qml b/doc/src/snippets/declarative/qtbinding/custompalette/main.qml
deleted file mode 100644
index a20d9e0e68..0000000000
--- a/doc/src/snippets/declarative/qtbinding/custompalette/main.qml
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//![0]
-import QtQuick 1.0
-
-Rectangle {
- width: 240
- height: 320
- color: palette.background
-
- Text {
- anchors.centerIn: parent
- color: palette.text
- text: "Click me to change color!"
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: {
- palette.text = "blue";
- }
- }
-}
-//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/enums/enums.pro b/doc/src/snippets/declarative/qtbinding/enums/enums.pro
new file mode 100644
index 0000000000..82bc123461
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/enums/enums.pro
@@ -0,0 +1,3 @@
+QT += declarative
+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/functions-cpp/MyItem.qml b/doc/src/snippets/declarative/qtbinding/functions-cpp/MyItem.qml
new file mode 100644
index 0000000000..8d8cd563a5
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/functions-cpp/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 {
+ width: 100; height: 100
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ myObject.cppMethod("Hello from QML")
+ myObject.cppSlot(12345)
+ }
+ }
+}
+//![0]
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/functions-cpp/main.cpp b/doc/src/snippets/declarative/qtbinding/functions-cpp/main.cpp
new file mode 100644
index 0000000000..91d6aec545
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/functions-cpp/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>
+
+#include "myclass.h"
+
+//![0]
+int main(int argc, char *argv[]) {
+ QApplication app(argc, argv);
+
+ QDeclarativeView view;
+ MyClass myClass;
+ view.rootContext()->setContextProperty("myObject", &myClass);
+
+ view.setSource(QUrl::fromLocalFile("MyItem.qml"));
+ view.show();
+
+ return app.exec();
+}
+//![0]
+
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/functions-qml/MyItem.qml b/doc/src/snippets/declarative/qtbinding/functions-qml/MyItem.qml
new file mode 100644
index 0000000000..6161d6e028
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/functions-qml/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 {
+ 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/signals-cpp/main.cpp b/doc/src/snippets/declarative/qtbinding/signals-cpp/main.cpp
new file mode 100644
index 0000000000..e5dd33c314
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-cpp/main.cpp
@@ -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 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 *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);
+
+ qmlRegisterType<ImageViewer>("MyLibrary", 1, 0, "ImageViewer");
+
+ QDeclarativeView standalone;
+ standalone.setSource(QUrl::fromLocalFile("standalone.qml"));
+ standalone.show();
+
+//![connections]
+ImageViewer viewer;
+
+QDeclarativeView view;
+view.rootContext()->setContextProperty("imageViewer", &viewer);
+
+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/signals-qml/myclass.h b/doc/src/snippets/declarative/qtbinding/signals-qml/myclass.h
new file mode 100644
index 0000000000..c326a54498
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-qml/myclass.h
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** 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 slots:
+ 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/main.cpp b/doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp
deleted file mode 100644
index 12481dacf0..0000000000
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stopwatch.h"
-
-#include <QDeclarativeView>
-#include <QDeclarativeContext>
-#include <QApplication>
-
-//![0]
-int main(int argc, char *argv[])
-{
- QApplication app(argc, argv);
-
- QDeclarativeView view;
- view.rootContext()->setContextProperty("stopwatch",
- new Stopwatch);
-
- view.setSource(QUrl::fromLocalFile("main.qml"));
- view.show();
-
- return app.exec();
-}
-//![0]
-
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/main.qml b/doc/src/snippets/declarative/qtbinding/stopwatch/main.qml
deleted file mode 100644
index f894f716f8..0000000000
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/main.qml
+++ /dev/null
@@ -1,58 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//![0]
-import QtQuick 1.0
-
-Rectangle {
- width: 300
- height: 300
-
- MouseArea {
- anchors.fill: parent
- onClicked: {
- if (stopwatch.isRunning())
- stopwatch.stop()
- else
- stopwatch.start();
- }
- }
-}
-//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.cpp b/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.cpp
deleted file mode 100644
index 124422ff9b..0000000000
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stopwatch.h"
-
-Stopwatch::Stopwatch()
- : m_running(false)
-{
-}
-
-bool Stopwatch::isRunning() const
-{
- return m_running;
-}
-
-void Stopwatch::start()
-{
- m_running = true;
-}
-
-void Stopwatch::stop()
-{
- m_running = false;
-}
-
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h b/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h
deleted file mode 100644
index fd65916fe1..0000000000
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QObject>
-
-//![0]
-class Stopwatch : public QObject
-{
- Q_OBJECT
-public:
- Stopwatch();
-
- Q_INVOKABLE bool isRunning() const;
-
-public slots:
- void start();
- void stop();
-
-private:
- bool m_running;
-};
-
-//![0]
-
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/sqldatabase/sqldatabase.cpp b/doc/src/snippets/sqldatabase/sqldatabase.cpp
index abe2a67984..a027a8469b 100644
--- a/doc/src/snippets/sqldatabase/sqldatabase.cpp
+++ b/doc/src/snippets/sqldatabase/sqldatabase.cpp
@@ -280,7 +280,7 @@ QVariant MyModel::data(const QModelIndex &item, int role) const
void QSqlTableModel_snippets()
{
//! [24]
- QSqlTableModel *model = new QSqlTableModel;
+ QSqlTableModel *model = new QSqlTableModel(parentObject, database);
model->setTable("employee");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
diff --git a/doc/src/sql-programming/qsqldatatype-table.qdoc b/doc/src/sql-programming/qsqldatatype-table.qdoc
index 45ee944442..3ec2fea993 100644
--- a/doc/src/sql-programming/qsqldatatype-table.qdoc
+++ b/doc/src/sql-programming/qsqldatatype-table.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/sql-programming/sql-driver.qdoc b/doc/src/sql-programming/sql-driver.qdoc
index 350777a317..9c99ad24f2 100644
--- a/doc/src/sql-programming/sql-driver.qdoc
+++ b/doc/src/sql-programming/sql-driver.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
@@ -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/sql-programming/sql-programming.qdoc b/doc/src/sql-programming/sql-programming.qdoc
index 35b286c890..3624d1eb7b 100644
--- a/doc/src/sql-programming/sql-programming.qdoc
+++ b/doc/src/sql-programming/sql-programming.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/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 c07385cd4c..16bc9ed062 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
@@ -650,7 +650,7 @@
margin-top: 5px;
_margin: 0 0 0 -20px;
padding: 10px;
- width: 220px;
+ width: 30%;
_width: 196px;
height: 250px;
overflow: auto;
@@ -660,12 +660,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;
}
+ .narrow #resultdialog {
+ width: 60%;
+ _width: 360px;
+ }
+
+ .narrow #resultdialog.active {
+ right: 10px;
+ *left: auto;
+ _left: auto;
+ _right: -20px;
+ }
+
+
#resultdialog #resultclose {
float: right;
}
@@ -778,6 +797,7 @@
margin-right: 15px;
font-weight: bold;
color: #B0ADAB;
+ font: bold 10px/1.2 Verdana;
}
.toolbuttons #print
@@ -891,7 +911,6 @@
}
.wrap .content h2
{
- border-bottom:1px solid #DDDDDD;
font:600 16px/1.2 Arial;
margin-top:15px;
width:100%;
@@ -925,6 +944,15 @@
color: #4c0033;
text-decoration: underline;
}
+ descr p a
+ {
+ text-decoration: underline;
+ }
+
+ .descr p a:visited
+ {
+ text-decoration: underline;
+ }
.feedback
{
float: none;
@@ -980,9 +1008,9 @@
/*display:inline-block;*/
margin-left:10px;
min-width:250px;
- line-height: 1.2;
+ line-height: 1.5;
min-width:100%;
-
+ min-height:15px;
}
.flowList dd a{
@@ -1269,6 +1297,10 @@
background-color: #E6E7E8;
margin: 0;
}
+ .small
+ {
+ font: normal 9px/1 Verdana;
+ }
/* end footer elements */
@@ -1443,7 +1475,7 @@
}
- .creator .header, .footer, .wrapper
+ .creator .header, .creator .footer, .creator .wrapper
{
max-width: 1500px;
margin: 0px;
@@ -1648,6 +1680,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/doc/src/tutorials/addressbook-fr.qdoc b/doc/src/tutorials/addressbook-fr.qdoc
index d40d939f22..fe27488484 100644
--- a/doc/src/tutorials/addressbook-fr.qdoc
+++ b/doc/src/tutorials/addressbook-fr.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/tutorials/addressbook.qdoc b/doc/src/tutorials/addressbook.qdoc
index d39a804383..1c71f9790c 100644
--- a/doc/src/tutorials/addressbook.qdoc
+++ b/doc/src/tutorials/addressbook.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/tutorials/modelview.qdoc b/doc/src/tutorials/modelview.qdoc
index e47fe831fe..a355e434bf 100644
--- a/doc/src/tutorials/modelview.qdoc
+++ b/doc/src/tutorials/modelview.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/tutorials/widgets-tutorial.qdoc b/doc/src/tutorials/widgets-tutorial.qdoc
index a708311843..df911a51c4 100644
--- a/doc/src/tutorials/widgets-tutorial.qdoc
+++ b/doc/src/tutorials/widgets-tutorial.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/widgets-and-layouts/focus.qdoc b/doc/src/widgets-and-layouts/focus.qdoc
index f1ff2f87e6..994878297e 100644
--- a/doc/src/widgets-and-layouts/focus.qdoc
+++ b/doc/src/widgets-and-layouts/focus.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/widgets-and-layouts/gallery-cde.qdoc b/doc/src/widgets-and-layouts/gallery-cde.qdoc
index e52f77c2a0..c783399522 100644
--- a/doc/src/widgets-and-layouts/gallery-cde.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-cde.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/widgets-and-layouts/gallery-cleanlooks.qdoc b/doc/src/widgets-and-layouts/gallery-cleanlooks.qdoc
index dfc498d933..d03adc8740 100644
--- a/doc/src/widgets-and-layouts/gallery-cleanlooks.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-cleanlooks.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/widgets-and-layouts/gallery-gtk.qdoc b/doc/src/widgets-and-layouts/gallery-gtk.qdoc
index 503c5c572d..b3a6372a08 100644
--- a/doc/src/widgets-and-layouts/gallery-gtk.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-gtk.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/widgets-and-layouts/gallery-macintosh.qdoc b/doc/src/widgets-and-layouts/gallery-macintosh.qdoc
index 1319ac19b2..30a78ca1fb 100644
--- a/doc/src/widgets-and-layouts/gallery-macintosh.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-macintosh.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/widgets-and-layouts/gallery-motif.qdoc b/doc/src/widgets-and-layouts/gallery-motif.qdoc
index 455b824b5a..861c22ae78 100644
--- a/doc/src/widgets-and-layouts/gallery-motif.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-motif.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/widgets-and-layouts/gallery-plastique.qdoc b/doc/src/widgets-and-layouts/gallery-plastique.qdoc
index cd8e38214f..0ea62eeee6 100644
--- a/doc/src/widgets-and-layouts/gallery-plastique.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-plastique.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/widgets-and-layouts/gallery-windows.qdoc b/doc/src/widgets-and-layouts/gallery-windows.qdoc
index ff4aa998c6..d3464a0855 100644
--- a/doc/src/widgets-and-layouts/gallery-windows.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-windows.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/widgets-and-layouts/gallery-windowsvista.qdoc b/doc/src/widgets-and-layouts/gallery-windowsvista.qdoc
index c71940998e..00afd523cb 100644
--- a/doc/src/widgets-and-layouts/gallery-windowsvista.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-windowsvista.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/widgets-and-layouts/gallery-windowsxp.qdoc b/doc/src/widgets-and-layouts/gallery-windowsxp.qdoc
index 2399114714..60c8ff04ac 100644
--- a/doc/src/widgets-and-layouts/gallery-windowsxp.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-windowsxp.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/widgets-and-layouts/gallery.qdoc b/doc/src/widgets-and-layouts/gallery.qdoc
index 11132fda11..201817b9be 100644
--- a/doc/src/widgets-and-layouts/gallery.qdoc
+++ b/doc/src/widgets-and-layouts/gallery.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/widgets-and-layouts/layout.qdoc b/doc/src/widgets-and-layouts/layout.qdoc
index 4db991a5ee..10077f9e68 100644
--- a/doc/src/widgets-and-layouts/layout.qdoc
+++ b/doc/src/widgets-and-layouts/layout.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/widgets-and-layouts/styles.qdoc b/doc/src/widgets-and-layouts/styles.qdoc
index 180260b72e..cd0b86d85b 100644
--- a/doc/src/widgets-and-layouts/styles.qdoc
+++ b/doc/src/widgets-and-layouts/styles.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/widgets-and-layouts/stylesheet.qdoc b/doc/src/widgets-and-layouts/stylesheet.qdoc
index cc36fa2306..6343e6aeac 100644
--- a/doc/src/widgets-and-layouts/stylesheet.qdoc
+++ b/doc/src/widgets-and-layouts/stylesheet.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/widgets-and-layouts/widgets.qdoc b/doc/src/widgets-and-layouts/widgets.qdoc
index fbce744792..6d1d5eec44 100644
--- a/doc/src/widgets-and-layouts/widgets.qdoc
+++ b/doc/src/widgets-and-layouts/widgets.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/windows-and-dialogs/dialogs.qdoc b/doc/src/windows-and-dialogs/dialogs.qdoc
index bcf9c0e883..fef728f3e4 100644
--- a/doc/src/windows-and-dialogs/dialogs.qdoc
+++ b/doc/src/windows-and-dialogs/dialogs.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/windows-and-dialogs/mainwindow.qdoc b/doc/src/windows-and-dialogs/mainwindow.qdoc
index 9d50495146..9d3ac30d70 100644
--- a/doc/src/windows-and-dialogs/mainwindow.qdoc
+++ b/doc/src/windows-and-dialogs/mainwindow.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/xml-processing/xml-patterns.qdoc b/doc/src/xml-processing/xml-patterns.qdoc
index 9f1917d1bd..006b876a51 100644
--- a/doc/src/xml-processing/xml-patterns.qdoc
+++ b/doc/src/xml-processing/xml-patterns.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/xml-processing/xml-processing.qdoc b/doc/src/xml-processing/xml-processing.qdoc
index dcdd8d12a9..85f3c7b8bc 100644
--- a/doc/src/xml-processing/xml-processing.qdoc
+++ b/doc/src/xml-processing/xml-processing.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/xml-processing/xquery-introduction.qdoc b/doc/src/xml-processing/xquery-introduction.qdoc
index b5356f77e3..5f9743ae7f 100644
--- a/doc/src/xml-processing/xquery-introduction.qdoc
+++ b/doc/src/xml-processing/xquery-introduction.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/zh_CN/bughowto.qdoc b/doc/src/zh_CN/bughowto.qdoc
index 05c84033a6..13f5c70eaf 100644
--- a/doc/src/zh_CN/bughowto.qdoc
+++ b/doc/src/zh_CN/bughowto.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/zh_CN/getting-started/how-to-learn-qt.qdoc b/doc/src/zh_CN/getting-started/how-to-learn-qt.qdoc
index b43b53e2d5..d942ee62a7 100644
--- a/doc/src/zh_CN/getting-started/how-to-learn-qt.qdoc
+++ b/doc/src/zh_CN/getting-started/how-to-learn-qt.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/zh_CN/getting-started/tutorials.qdoc b/doc/src/zh_CN/getting-started/tutorials.qdoc
index d674175910..b9ff7dd74d 100644
--- a/doc/src/zh_CN/getting-started/tutorials.qdoc
+++ b/doc/src/zh_CN/getting-started/tutorials.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/zh_CN/tutorials/addressbook.qdoc b/doc/src/zh_CN/tutorials/addressbook.qdoc
index c1c97173ef..cbd02d7cc4 100644
--- a/doc/src/zh_CN/tutorials/addressbook.qdoc
+++ b/doc/src/zh_CN/tutorials/addressbook.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/zh_CN/tutorials/widgets-tutorial.qdoc b/doc/src/zh_CN/tutorials/widgets-tutorial.qdoc
index ba4433e48b..66e6c10e5b 100644
--- a/doc/src/zh_CN/tutorials/widgets-tutorial.qdoc
+++ b/doc/src/zh_CN/tutorials/widgets-tutorial.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/examples/declarative/animation/behaviors/wigglytext.qml b/examples/declarative/animation/behaviors/wigglytext.qml
new file mode 100644
index 0000000000..6cd93abbd6
--- /dev/null
+++ b/examples/declarative/animation/behaviors/wigglytext.qml
@@ -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 examples 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: container
+
+ property string text: "Drag this text..."
+ property bool animated: true
+
+ width: 640; height: 480; color: "#474747"; focus: true
+
+ Keys.onPressed: {
+ if (event.key == Qt.Key_Delete || event.key == Qt.Key_Backspace)
+ container.remove()
+ else if (event.text != "") {
+ container.append(event.text)
+ }
+ }
+
+ function append(text) {
+ container.animated = false
+ var lastLetter = container.children[container.children.length - 1]
+ var newLetter = letterComponent.createObject(container)
+ newLetter.text = text
+ newLetter.follow = lastLetter
+ container.animated = true
+ }
+
+ function remove() {
+ if (container.children.length)
+ container.children[container.children.length - 1].destroy()
+ }
+
+ function doLayout() {
+ var follow = null
+ for (var i = 0; i < container.text.length; ++i) {
+ var newLetter = letterComponent.createObject(container)
+ newLetter.text = container.text[i]
+ newLetter.follow = follow
+ follow = newLetter
+ }
+ }
+
+ Component {
+ id: letterComponent
+ Text {
+ id: letter
+ property variant follow
+
+ x: follow ? follow.x + follow.width : container.width / 3
+ y: follow ? follow.y : container.height / 2
+
+ font.pixelSize: 40; font.bold: true
+ color: "#999999"; styleColor: "#222222"; style: Text.Raised
+
+ MouseArea {
+ anchors.fill: parent
+ drag.target: letter; drag.axis: Drag.XandYAxis
+ onPressed: letter.color = "#dddddd"
+ onReleased: letter.color = "#999999"
+ }
+
+ Behavior on x { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } }
+ Behavior on y { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } }
+ }
+ }
+
+ Component.onCompleted: doLayout()
+}
diff --git a/examples/declarative/cppextensions/imageprovider/imageprovider.pro b/examples/declarative/cppextensions/imageprovider/imageprovider.pro
index 9797a3ff0a..f700f0b45b 100644
--- a/examples/declarative/cppextensions/imageprovider/imageprovider.pro
+++ b/examples/declarative/cppextensions/imageprovider/imageprovider.pro
@@ -22,7 +22,7 @@ symbian:{
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
TARGET.EPOCALLOWDLLDATA = 1
- importFiles.sources = ImageProviderCore/qmlimageproviderplugin.dll ImageProviderCore/qmldir
+ importFiles.files = ImageProviderCore/qmlimageproviderplugin.dll ImageProviderCore/qmldir
importFiles.path = ImageProviderCore
DEPLOYMENT += importFiles
}
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/cppextensions/qwidgets/qwidgets.pro b/examples/declarative/cppextensions/qwidgets/qwidgets.pro
index 3353a8daeb..d92e072c4e 100644
--- a/examples/declarative/cppextensions/qwidgets/qwidgets.pro
+++ b/examples/declarative/cppextensions/qwidgets/qwidgets.pro
@@ -17,7 +17,7 @@ symbian:{
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
TARGET.EPOCALLOWDLLDATA = 1
- importFiles.sources = QWidgets/qmlqwidgetsplugin.dll QWidgets/qmldir
+ importFiles.files = QWidgets/qmlqwidgetsplugin.dll QWidgets/qmldir
importFiles.path = QWidgets
DEPLOYMENT += importFiles
diff --git a/examples/declarative/i18n/i18n.qml b/examples/declarative/i18n/i18n.qml
index 8dac88debf..219deda894 100644
--- a/examples/declarative/i18n/i18n.qml
+++ b/examples/declarative/i18n/i18n.qml
@@ -65,7 +65,8 @@ Rectangle {
anchors.fill: parent; spacing: 20
Text {
- text: "If a translation is available for the system language (eg. French) then the string below will translated (eg. 'Bonjour'). Otherwise it will show 'Hello'."
+ text: "If a translation is available for the system language (eg. French) then the
+ string below will translated (eg. 'Bonjour'). Otherwise it will show 'Hello'."
width: parent.width; wrapMode: Text.WordWrap
}
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/declarative/tutorials/samegame/samegame4/content/samegame.js b/examples/declarative/tutorials/samegame/samegame4/content/samegame.js
index 79ff0c19b1..ccc3f9dae2 100755
--- a/examples/declarative/tutorials/samegame/samegame4/content/samegame.js
+++ b/examples/declarative/tutorials/samegame/samegame4/content/samegame.js
@@ -145,7 +145,7 @@ function shuffleDown() {
obj = board[index(column, row)];
if (obj == null)
continue;
- obj.x = (fallDist - column) * gameCanvas.blockSize;
+ obj.x = (column - fallDist) * gameCanvas.blockSize;
board[index(column - fallDist, row)] = obj;
board[index(column, row)] = null;
}
diff --git a/examples/desktop/systray/systray.pro b/examples/desktop/systray/systray.pro
index 9b25916ab4..710452b325 100644
--- a/examples/desktop/systray/systray.pro
+++ b/examples/desktop/systray/systray.pro
@@ -14,10 +14,10 @@ symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
wince* {
CONFIG(debug, release|debug) {
- addPlugins.sources = $$QT_BUILD_TREE/plugins/imageformats/qsvgd4.dll
+ addPlugins.files = $$QT_BUILD_TREE/plugins/imageformats/qsvgd4.dll
}
CONFIG(release, release|debug) {
- addPlugins.sources = $$QT_BUILD_TREE/plugins/imageformats/qsvg4.dll
+ addPlugins.files = $$QT_BUILD_TREE/plugins/imageformats/qsvg4.dll
}
addPlugins.path = imageformats
DEPLOYMENT += addPlugins
diff --git a/examples/draganddrop/puzzle/puzzle.pro b/examples/draganddrop/puzzle/puzzle.pro
index ec88f7a0a3..c0400d87f7 100644
--- a/examples/draganddrop/puzzle/puzzle.pro
+++ b/examples/draganddrop/puzzle/puzzle.pro
@@ -18,12 +18,12 @@ INSTALLS += target sources
symbian:{
TARGET.UID3 = 0xA000CF65
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
- addFile.sources = example.jpg
+ addFile.files = example.jpg
addFile.path = .
DEPLOYMENT += addFile
}
wince*: {
- addFile.sources = example.jpg
+ addFile.files = example.jpg
addFile.path = .
DEPLOYMENT += addFile
}
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/painting/svgviewer/svgviewer.pro b/examples/painting/svgviewer/svgviewer.pro
index 4809b91dac..6417849db8 100644
--- a/examples/painting/svgviewer/svgviewer.pro
+++ b/examples/painting/svgviewer/svgviewer.pro
@@ -17,7 +17,7 @@ sources.path = $$[QT_INSTALL_EXAMPLES]/painting/svgviewer
INSTALLS += target sources
wince*: {
- addFiles.sources = files\\*.svg
+ addFiles.files = files\\*.svg
addFiles.path = "\\My Documents"
DEPLOYMENT += addFiles
}
@@ -25,7 +25,7 @@ wince*: {
symbian: {
TARGET.UID3 = 0xA000A64E
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
- addFiles.sources = files\\*.svg
+ addFiles.files = files\\*.svg
addFiles.path = .
DEPLOYMENT += addFiles
}
diff --git a/examples/richtext/syntaxhighlighter/syntaxhighlighter.pro b/examples/richtext/syntaxhighlighter/syntaxhighlighter.pro
index 0574b2d72c..67aa1ffedc 100644
--- a/examples/richtext/syntaxhighlighter/syntaxhighlighter.pro
+++ b/examples/richtext/syntaxhighlighter/syntaxhighlighter.pro
@@ -13,7 +13,7 @@ INSTALLS += target sources
symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
wince*: {
- addFiles.sources = main.cpp mainwindow.cpp
+ addFiles.files = main.cpp mainwindow.cpp
addFiles.path = .
DEPLOYMENT += addFiles
}
diff --git a/examples/richtext/textobject/textobject.pro b/examples/richtext/textobject/textobject.pro
index 4fa9cb0b9b..222b0fe34c 100644
--- a/examples/richtext/textobject/textobject.pro
+++ b/examples/richtext/textobject/textobject.pro
@@ -12,7 +12,7 @@ sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/richtext/textobject
INSTALLS += target sources
-filesToDeploy.sources = files/*.svg
+filesToDeploy.files = files/*.svg
filesToDeploy.path = files
DEPLOYMENT += filesToDeploy
diff --git a/examples/script/context2d/context2d.pro b/examples/script/context2d/context2d.pro
index 54f5c31aa5..6a0e397368 100644
--- a/examples/script/context2d/context2d.pro
+++ b/examples/script/context2d/context2d.pro
@@ -27,6 +27,6 @@ symbian:{
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
TARGET.EPOCHEAPSIZE = 0x200000 0xA00000
contextScripts.path = .
- contextScripts.sources = scripts
+ contextScripts.files = scripts
DEPLOYMENT += contextScripts
}
diff --git a/examples/symbianpkgrules.pri b/examples/symbianpkgrules.pri
index a1b663408d..0f615c70eb 100644
--- a/examples/symbianpkgrules.pri
+++ b/examples/symbianpkgrules.pri
@@ -13,4 +13,7 @@ vendorinfo = \
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/undoframework/mainwindow.cpp b/examples/tools/undoframework/mainwindow.cpp
index b4b7ee5f7f..90b4d3fdd5 100644
--- a/examples/tools/undoframework/mainwindow.cpp
+++ b/examples/tools/undoframework/mainwindow.cpp
@@ -48,7 +48,7 @@
//! [0]
MainWindow::MainWindow()
{
- undoStack = new QUndoStack();
+ undoStack = new QUndoStack(this);
createActions();
createMenus();
diff --git a/examples/tutorials/gettingStarted/gsQml/filedialog/cppPlugins.pro b/examples/tutorials/gettingStarted/gsQml/filedialog/filedialog.pro
index d85787d00c..d85787d00c 100644
--- a/examples/tutorials/gettingStarted/gsQml/filedialog/cppPlugins.pro
+++ b/examples/tutorials/gettingStarted/gsQml/filedialog/filedialog.pro
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/examples/tutorials/gettingStarted/gsQml/parts/part3/TextArea.qml b/examples/tutorials/gettingStarted/gsQml/parts/part3/TextArea.qml
new file mode 100644
index 0000000000..b0bf6647e1
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part3/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
+ 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;
+ }
+
+ TextEdit{
+ id: textEditor
+ anchors.fill:parent
+ width:parent.width; height:parent.height
+ color:"midnightblue"
+ focus: true
+
+ wrapMode: TextEdit.Wrap
+
+ 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/examples/tutorials/gettingStarted/gsQml/parts/part4/SimpleButton.qml b/examples/tutorials/gettingStarted/gsQml/parts/part4/SimpleButton.qml
new file mode 100644
index 0000000000..d360faab91
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part4/SimpleButton.qml
@@ -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 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: simplebutton
+ color: "grey"
+ width: 150; height: 75
+
+ Text{
+ id: buttonLabel
+ anchors.centerIn: parent
+ text: "button label"
+ }
+
+ MouseArea{
+ id: buttonMouseArea
+ anchors.fill: parent
+ onClicked: console.log(buttonLabel.text + " clicked" )
+ }
+}
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/tutorials/gettingStarted/gsQml/texteditor.pro b/examples/tutorials/gettingStarted/gsQml/texteditor.pro
new file mode 100644
index 0000000000..aa5306cceb
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/texteditor.pro
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+ filedialog\
+
diff --git a/examples/webkit/imageanalyzer/README b/examples/webkit/imageanalyzer/README
new file mode 100644
index 0000000000..9415b57fb3
--- /dev/null
+++ b/examples/webkit/imageanalyzer/README
@@ -0,0 +1,20 @@
+This example demonstrates the use of Qt WebKit to make a hybrid application.
+
+Build instructions:
+
+ On Mac OS X:
+ In this directory:
+ qmake -spec macx-g++
+ make clean all
+ open imageanalyzer.app
+ On Linux/Unix:
+ In this directory:
+ qmake
+ make clean all
+ ./imageanalyzer
+
+ On Windows:
+ In this directory:
+ qmake
+ nmake clean all
+ debug\imageanalyzer.exe
diff --git a/examples/webkit/imageanalyzer/imageanalyzer.cpp b/examples/webkit/imageanalyzer/imageanalyzer.cpp
new file mode 100644
index 0000000000..9f49a00141
--- /dev/null
+++ b/examples/webkit/imageanalyzer/imageanalyzer.cpp
@@ -0,0 +1,222 @@
+/****************************************************************************
+**
+** 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 examples 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 <QNetworkReply>
+#include <QNetworkRequest>
+#include <QNetworkAccessManager>
+#include <QNetworkDiskCache>
+#include "imageanalyzer.h"
+
+/*!
+ * 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 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.
+ */
+
+//! [ ImageAnalyzer - Constructor ]
+ImageAnalyzer::ImageAnalyzer(QNetworkDiskCache* netcache, QObject* parent)
+ : QObject(parent), m_cache(netcache), m_outstandingFetches(0)
+{
+ /* ImageAnalyzer only wants to receive http responses
+ for requests that it makes, so that's why it has its own
+ QNetworkAccessManager. */
+ m_network = new QNetworkAccessManager(this);
+ m_watcher = new QFutureWatcher<QRgb>(this);
+ /* We want to share a cache with the web browser,
+ in case it has some images we want: */
+ m_network->setCache(m_cache);
+
+ QObject::connect(m_network, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleReply(QNetworkReply*)));
+ QObject::connect(m_watcher, SIGNAL(finished()),
+ this, SLOT(doneProcessing()));
+ QObject::connect(m_watcher, SIGNAL(progressValueChanged(int)),
+ this, SLOT(progressStatus(int)));
+}
+//! [ ImageAnalyzer - Constructor ]
+ImageAnalyzer::~ImageAnalyzer()
+{
+ delete(m_watcher);
+}
+
+
+QRgb ImageAnalyzer::lastResults()
+{
+ int rTot = 0;
+ int bTot = 0;
+ int gTot = 0;
+ int count = m_watcher->future().results().size();
+ foreach(const QRgb & triplet, m_watcher->future().results())
+ {
+ rTot += qRed(triplet);
+ bTot += qBlue(triplet);
+ gTot += qGreen(triplet);
+ }
+ return qRgb(rTot/count, bTot/count, gTot/count);
+}
+
+float ImageAnalyzer::lastRed() { return qRed(lastResults())/2.55; }
+float ImageAnalyzer::lastGreen() { return qGreen(lastResults())/2.55; }
+float ImageAnalyzer::lastBlue() { return qBlue(lastResults())/2.55; }
+
+void ImageAnalyzer::progressStatus(int newstat)
+{
+ emit updateProgress(newstat, m_watcher->progressMaximum());
+}
+
+
+bool ImageAnalyzer::isBusy()
+{
+ return m_watcher->isRunning();
+}
+
+
+//! [ ImageAnalyzer - startAnalysis ]
+void ImageAnalyzer::startAnalysis(const QStringList & urls)
+{
+ m_URLQueue = urls;
+ fetchURLs();
+}
+//! [ ImageAnalyzer - startAnalysis ]
+
+/*!
+ * Analyzes the entire queue - just starts all our http GETs.
+ */
+//! [ ImageAnalyzer - fetchURLs ]
+void ImageAnalyzer::fetchURLs()
+{
+ while (!m_URLQueue.isEmpty())
+ {
+ QString url = m_URLQueue.takeFirst();
+ QUrl URL = QUrl(url);
+ QIODevice * pData = m_cache->data(URL);
+ // Is image already loaded in cache?
+ if (pData == 0) {
+ // HTTP Get image over network.
+ m_outstandingFetches++;
+ QNetworkRequest request = QNetworkRequest(URL);
+ request.setRawHeader("User-Agent", "Nokia - Custom QT app");
+ m_network->get(request);
+ } else {
+ // Get image from cache
+ QImage image;
+ image.load(pData, 0);
+ if (!image.isNull())
+ queueImage(image);
+ delete(pData);
+ }
+ }
+}
+//! [ ImageAnalyzer - fetchURLs ]
+/*
+ * Slot to handle the incoming responses from our http GETs
+ */
+//! [ ImageAnalyzer - handleReply ]
+void ImageAnalyzer::handleReply(QNetworkReply * pReply)
+{
+ m_outstandingFetches--;
+ if (pReply->error()) {
+ qDebug() << "Error code" << pReply->error();
+ qDebug() << "Http code" << pReply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
+ return;
+ }
+ QImage image;
+ image.load(pReply, 0);
+ pReply->deleteLater();
+ if (image.isNull()) {
+ qDebug() << "bad image";
+ qDebug() << pReply->rawHeaderList();
+ foreach(QByteArray element, pReply->rawHeaderList()) {
+ qDebug() << element << " = " << pReply->rawHeader(element);
+ }
+ return;
+ }
+ queueImage(image);
+}
+//! [ ImageAnalyzer - handleReply ]
+
+void ImageAnalyzer::doneProcessing()
+{
+ m_imageQueue = QList<QImage>();
+ emit finishedAnalysis();
+}
+//! [ ImageAnalyzer - queueImage ]
+void ImageAnalyzer::queueImage(QImage img)
+{
+ if (!img.isNull())
+ m_imageQueue << img;
+
+ if (m_outstandingFetches == 0 && m_URLQueue.isEmpty()) {
+ m_watcher->setFuture(QtConcurrent::mapped(m_imageQueue, averageRGB));
+ }
+}
+//! [ ImageAnalyzer - queueImage ]
+
+//! [ ImageAnalyzer - averageRGB ]
+QRgb averageRGB(const QImage &img)
+{
+ int pixelCount = img.width() * img.height();
+ int rAvg, gAvg, bAvg;
+
+ // We waste some time here:
+ for (int timeWaster=0; timeWaster < 100; timeWaster++) {
+ quint64 rTot = 0;
+ quint64 gTot = 0;
+ quint64 bTot = 0;
+ for (int i=0; i < img.width(); i++) {
+ for (int j=0; j < img.height(); j++) {
+ QRgb pixel = img.pixel(i,j);
+ rTot += qRed(pixel);
+ gTot += qGreen(pixel);
+ bTot += qBlue(pixel);
+ }
+ }
+ rAvg = (rTot)/(pixelCount);
+ gAvg = (gTot)/(pixelCount);
+ bAvg = (bTot)/(pixelCount);
+ }
+ return qRgb(rAvg, gAvg, bAvg);
+}
+//! [ ImageAnalyzer - averageRGB ]
diff --git a/examples/webkit/imageanalyzer/imageanalyzer.h b/examples/webkit/imageanalyzer/imageanalyzer.h
new file mode 100644
index 0000000000..5a969098da
--- /dev/null
+++ b/examples/webkit/imageanalyzer/imageanalyzer.h
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** 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 examples 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 IMAGEANALYZER_H
+#define IMAGEANALYZER_H
+
+#include <QFutureWatcher>
+#include <QtGui>
+
+QT_BEGIN_NAMESPACE
+class QNetworkAccessManager;
+class QNetworkReply;
+class QNetworkDiskCache;
+QT_END_NAMESPACE
+
+//! [ ImageAnalyzer - public interface ]
+class ImageAnalyzer : public QObject
+{
+ Q_OBJECT
+public:
+ ImageAnalyzer(QNetworkDiskCache * netcache, QObject * parent=0);
+
+ QRgb lastResults();
+ float lastRed();
+ float lastGreen();
+ float lastBlue();
+ bool isBusy();
+ Q_PROPERTY(bool busy READ isBusy);
+ Q_PROPERTY(float red READ lastRed);
+ Q_PROPERTY(float green READ lastGreen);
+ Q_PROPERTY(float blue READ lastBlue);
+ ~ImageAnalyzer();
+
+public slots:
+ /*! initiates analysis of all the urls in the list */
+ void startAnalysis(const QStringList & urls);
+
+signals:
+ void finishedAnalysis();
+ void updateProgress(int completed, int total);
+ //! [ ImageAnalyzer - public interface ]
+
+private slots:
+ void handleReply(QNetworkReply*);
+ void doneProcessing();
+ void progressStatus(int);
+
+private:
+ QRgb processImages();
+ void fetchURLs();
+ void queueImage(QImage img);
+
+ //! [ ImageAnalyzer - private members ]
+private:
+ QNetworkAccessManager* m_network;
+ QNetworkDiskCache* m_cache;
+ QStringList m_URLQueue;
+ QList<QImage> m_imageQueue;
+ int m_outstandingFetches;
+ QFutureWatcher<QRgb> * m_watcher;
+ //! [ ImageAnalyzer - private members ]
+};
+
+QRgb averageRGB(const QImage &img);
+
+#endif
diff --git a/examples/webkit/imageanalyzer/imageanalyzer.pro b/examples/webkit/imageanalyzer/imageanalyzer.pro
new file mode 100644
index 0000000000..c9a0ed1354
--- /dev/null
+++ b/examples/webkit/imageanalyzer/imageanalyzer.pro
@@ -0,0 +1,14 @@
+TEMPLATE = app
+HEADERS = imageanalyzer.h \
+ mainwindow.h
+SOURCES = imageanalyzer.cpp \
+ main.cpp \
+ mainwindow.cpp
+
+QT += network webkit
+
+RESOURCES = resources/imageanalyzer.qrc
+
+OTHER_FILES += html/index.html README ../webkit-bridge-tutorial.qdoc outline.txt
+
+
diff --git a/examples/webkit/imageanalyzer/main.cpp b/examples/webkit/imageanalyzer/main.cpp
new file mode 100644
index 0000000000..c3f04de507
--- /dev/null
+++ b/examples/webkit/imageanalyzer/main.cpp
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** 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 examples 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 "imageanalyzer.h"
+#include "mainwindow.h"
+
+int main(int argc, char* argv[])
+{
+ QApplication app(argc, argv);
+
+ MainWin win;
+ win.show();
+ return app.exec();
+}
+
diff --git a/examples/webkit/imageanalyzer/mainwindow.cpp b/examples/webkit/imageanalyzer/mainwindow.cpp
new file mode 100644
index 0000000000..d89098ee1a
--- /dev/null
+++ b/examples/webkit/imageanalyzer/mainwindow.cpp
@@ -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 examples 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 "mainwindow.h"
+#include "imageanalyzer.h"
+
+#include <QWebFrame>
+#include <QWebElementCollection>
+#include <QNetworkDiskCache>
+
+/*
+ * Default Constructor
+ */
+//! [MainWindow - constructor]
+MainWin::MainWin(QWidget * parent) : QWebView(parent)
+{
+ m_network = new QNetworkAccessManager(this);
+ m_cache = new QNetworkDiskCache(this);
+ m_cache->setCacheDirectory(QDesktopServices::storageLocation(QDesktopServices::CacheLocation) + "/imageanalyzer");
+ m_cache->setMaximumCacheSize(1000000); //set the cache to 10megs
+ m_network->setCache(m_cache);
+ page()->setNetworkAccessManager(m_network);
+
+ //! The object we will expose to JavaScript engine:
+ m_analyzer = new ImageAnalyzer(m_cache, this);
+
+ // Signal is emitted before frame loads any web content:
+ QObject::connect(page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),
+ this, SLOT(addJSObject()));
+
+ // qrc:// URLs refer to resources. See imagenalayzer.qrc
+ QUrl startURL = QUrl("qrc:/index.html");
+
+ // Load web content now!
+ setUrl(startURL);
+}
+//! [MainWindow - constructor]
+
+//! [MainWindow - addJSObject]
+void MainWin::addJSObject() {
+ // Add pAnalyzer to JavaScript Frame as member "imageAnalyzer".
+ page()->mainFrame()->addToJavaScriptWindowObject(QString("imageAnalyzer"), m_analyzer);
+}
+//! [MainWindow - addJSObject]
diff --git a/examples/webkit/imageanalyzer/mainwindow.h b/examples/webkit/imageanalyzer/mainwindow.h
new file mode 100644
index 0000000000..3c943dc5e3
--- /dev/null
+++ b/examples/webkit/imageanalyzer/mainwindow.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 examples 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 MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QWebView>
+
+class ImageAnalyzer;
+QT_BEGIN_NAMESPACE
+class QNetworkDiskCache;
+QT_END_NAMESPACE
+
+class MainWin : public QWebView
+{
+ Q_OBJECT
+
+public:
+ explicit MainWin(QWidget * parent = 0);
+
+private:
+ ImageAnalyzer * m_analyzer;
+ QNetworkAccessManager * m_network;
+ QNetworkDiskCache * m_cache;
+
+private slots:
+ void addJSObject();
+
+};
+#endif
diff --git a/examples/webkit/imageanalyzer/resources/imageanalyzer.qrc b/examples/webkit/imageanalyzer/resources/imageanalyzer.qrc
new file mode 100644
index 0000000000..fe9a5dffae
--- /dev/null
+++ b/examples/webkit/imageanalyzer/resources/imageanalyzer.qrc
@@ -0,0 +1,10 @@
+<!DOCTYPE RCC><RCC version="1.0">
+ <qresource>
+ <file>index.html</file>
+ <file>images/mtRainier.jpg</file>
+ <file>images/bellaCoola.jpg</file>
+ <file>images/trees.jpg</file>
+ <file>images/flower.jpg</file>
+ <file>images/seaShell.jpg</file>
+</qresource>
+</RCC>
diff --git a/examples/webkit/imageanalyzer/resources/images/README b/examples/webkit/imageanalyzer/resources/images/README
new file mode 100644
index 0000000000..176a1da226
--- /dev/null
+++ b/examples/webkit/imageanalyzer/resources/images/README
@@ -0,0 +1,2 @@
+The images are under public domain and were obtained from
+http://publicdomainpictures.net
diff --git a/examples/webkit/imageanalyzer/resources/images/bellaCoola.jpg b/examples/webkit/imageanalyzer/resources/images/bellaCoola.jpg
new file mode 100644
index 0000000000..f90ed5472a
--- /dev/null
+++ b/examples/webkit/imageanalyzer/resources/images/bellaCoola.jpg
Binary files differ
diff --git a/examples/webkit/imageanalyzer/resources/images/flower.jpg b/examples/webkit/imageanalyzer/resources/images/flower.jpg
new file mode 100644
index 0000000000..6b7f6be23d
--- /dev/null
+++ b/examples/webkit/imageanalyzer/resources/images/flower.jpg
Binary files differ
diff --git a/examples/webkit/imageanalyzer/resources/images/mtRainier.jpg b/examples/webkit/imageanalyzer/resources/images/mtRainier.jpg
new file mode 100644
index 0000000000..d09a3f2489
--- /dev/null
+++ b/examples/webkit/imageanalyzer/resources/images/mtRainier.jpg
Binary files differ
diff --git a/examples/webkit/imageanalyzer/resources/images/seaShell.jpg b/examples/webkit/imageanalyzer/resources/images/seaShell.jpg
new file mode 100644
index 0000000000..c5005a90d8
--- /dev/null
+++ b/examples/webkit/imageanalyzer/resources/images/seaShell.jpg
Binary files differ
diff --git a/examples/webkit/imageanalyzer/resources/images/trees.jpg b/examples/webkit/imageanalyzer/resources/images/trees.jpg
new file mode 100644
index 0000000000..083b26d024
--- /dev/null
+++ b/examples/webkit/imageanalyzer/resources/images/trees.jpg
Binary files differ
diff --git a/examples/webkit/imageanalyzer/resources/index.html b/examples/webkit/imageanalyzer/resources/index.html
new file mode 100644
index 0000000000..6532951588
--- /dev/null
+++ b/examples/webkit/imageanalyzer/resources/index.html
@@ -0,0 +1,133 @@
+
+<html>
+ <body>
+ <!-- [ images list ] -->
+ <div style="float:right; width:50%; border-left: solid 1px black">
+ <div id="listdiv" align="center">
+ <h5>Images to be analyzed:</h5>
+ <select multiple size=10 id=imglist style="width:80%"></select>
+ <br />
+ <input type="button" id="evalbutton" value="Analyze" onclick="analyzeImages()" />
+ </div>
+ </div>
+ <!-- [ images list ] -->
+ <div style="width:50%">
+ <div id="titleblock" align="center">
+ <h2>Image Analyzer</h2>
+ </div>
+ <div id=outputdiv align=center>
+ <h4>Status: <span id=status>Idle</span></h4>
+ <h5>
+ Latest Results:<br />
+ Red: <span id=redval style="color:red">n/a</span><br />
+ Green: <span id=greenval style="color:green">n/a</span><br />
+ Blue: <span id=blueval style="color:blue">n/a</span><br />
+ </h5>
+ <h3>Click on images below to select for analysis</h3>
+ </div>
+ </div>
+ <!-- [ sample images ] -->
+ <div id=imagediv style="clear:both; text-align:center">
+ <hr/>
+ <img src="images/mtRainier.jpg" height=150px onclick='return addImage(this);' />
+ <img src="images/bellaCoola.jpg" height=150px onclick='return addImage(this);'/>
+ <img src="images/seaShell.jpg" height=150px onclick='return addImage(this);'/>
+ <!-- [ sample images ] -->
+ <img src="images/flower.jpg" height=150px onclick='return addImage(this);'/>
+ <img src="images/trees.jpg" height=150px onclick='return addImage(this);'/>
+ </div>
+
+ </body>
+</html>
+
+<script type="text/javascript">
+ var remaining = 0;
+ var connected = false;
+ //We use this function because connect statements resolve their target once, imediately
+ //not at signal emission so they must be connected once the imageAnalyzer object has been added to the frame
+ //! <!-- [ connect slots ] -->
+ function connectSlots()
+ {
+ if ( !connected ) {
+ connected = true;
+ imageAnalyzer.finishedAnalysis.connect(this, finished);
+ imageAnalyzer.updateProgress.connect(this, updateProg);
+ }
+ }
+ //! <!-- [ connect slots ] -->
+
+ function finished() {
+ setStatus('Idle');
+ setResults(imageAnalyzer.red.toFixed(2), imageAnalyzer.green.toFixed(2), imageAnalyzer.blue.toFixed(2));
+ }
+ //This will function as the recieving "slot" for the progress signal
+ function updateProg(complete, max)
+ {
+ var oldRemaining = remaining;
+ remaining = max - complete;
+ pullList(oldRemaining - remaining);
+ //Prevent results getting messed up if we don't get signals in order
+ if( imageAnalyzer.busy ) {
+ setStatus('Processing (' + complete + ' of ' + max + ' completed)');
+ setResults('Calculating','Calculating','Calculating');
+ }
+ }
+
+//! <!-- [ analyzeImages ] -->
+function analyzeImages() {
+ connectSlots();
+ var imglist = document.getElementsByTagName('option');
+ if (imglist.length > 0) {
+ stringlist = [];
+ for(var i=0; i<imglist.length; i++) {
+ stringlist[i]=imglist[i].value;
+ }
+ if (!imageAnalyzer.busy) {
+ remaining = stringlist.length;
+ imageAnalyzer.startAnalysis(stringlist);
+ } else {
+ alert("Processing, please wait until finished.");
+ }
+//! <!-- [ analyzeImages ] -->
+ } else {
+ alert('No images selected. Click on one or more images to select them for analysis.');
+ }
+}
+function clearList() {
+ var imglist = document.getElementById('imglist');
+ while(imglist.length > 0) {
+ imglist.removeChild(imglist.childNodes[0]);
+ }
+}
+function pullList(count) {
+ var imglist = document.getElementById('imglist');
+ while(imglist.length > 0 && count > 0) {
+ imglist.removeChild(imglist.childNodes[0]);
+ count--;
+ }
+}
+function setStatus(statusString) {
+ document.getElementById('status').innerHTML = statusString;
+}
+
+function setResults(red, green, blue) {
+ if (! isNaN(red) ) { red += " %"; }
+ if (! isNaN(green) ) { green += " %"; }
+ if (! isNaN(blue) ) { blue += " %"; }
+ document.getElementById('redval').innerHTML = red;
+ document.getElementById('greenval').innerHTML = green;
+ document.getElementById('blueval').innerHTML = blue;
+}
+//! <!-- [ addImage ] -->
+function addImage(newimg) {
+ var imglist = document.getElementById('imglist');
+ var curChildren = imglist.childNodes;
+ var newline = document.createElement('option');
+ newline.innerHTML = newimg.src.substring(newimg.src.lastIndexOf('/')+1);
+ newline.value = newimg.src;
+ imglist.appendChild(newline);
+}
+//! <!-- [ addImage ] -->
+</script>
+
+
diff --git a/examples/webkit/webkit.pro b/examples/webkit/webkit.pro
index 76c880106f..6a1d8f8b5d 100644
--- a/examples/webkit/webkit.pro
+++ b/examples/webkit/webkit.pro
@@ -4,6 +4,7 @@ SUBDIRS += domtraversal \
previewer \
fancybrowser \
simpleselector \
+ imageanalyzer \
framecapture
contains(QT_CONFIG, openssl):SUBDIRS += googlechat
diff --git a/examples/widgets/icons/icons.pro b/examples/widgets/icons/icons.pro
index 39c7ab27cc..48b2da907c 100644
--- a/examples/widgets/icons/icons.pro
+++ b/examples/widgets/icons/icons.pro
@@ -17,7 +17,7 @@ INSTALLS += target sources
symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
wince*: {
- imageFiles.sources = images/*
+ imageFiles.files = images/*
wincewm*: {
imageFiles.path = "/My Documents/My Pictures"
} else {
diff --git a/examples/widgets/movie/movie.pro b/examples/widgets/movie/movie.pro
index 517fec7b00..d59bf2ee26 100644
--- a/examples/widgets/movie/movie.pro
+++ b/examples/widgets/movie/movie.pro
@@ -11,7 +11,7 @@ INSTALLS += target sources
symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
wince*: {
- addFiles.sources += *.mng
+ addFiles.files += *.mng
addFiles.path = .
DEPLOYMENT += addFiles
DEPLOYMENT_PLUGIN += qmng
diff --git a/examples/xml/dombookmarks/dombookmarks.pro b/examples/xml/dombookmarks/dombookmarks.pro
index f906d2f354..80bbec45a3 100644
--- a/examples/xml/dombookmarks/dombookmarks.pro
+++ b/examples/xml/dombookmarks/dombookmarks.pro
@@ -14,7 +14,7 @@ INSTALLS += target sources
symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
wince*: {
- addFiles.sources = frank.xbel jennifer.xbel
+ addFiles.files = frank.xbel jennifer.xbel
addFiles.path = "\\My Documents"
DEPLOYMENT += addFiles
}
diff --git a/examples/xml/htmlinfo/htmlinfo.pro b/examples/xml/htmlinfo/htmlinfo.pro
index 5e9c8caacc..94b3a07e69 100644
--- a/examples/xml/htmlinfo/htmlinfo.pro
+++ b/examples/xml/htmlinfo/htmlinfo.pro
@@ -2,7 +2,7 @@ SOURCES += main.cpp
QT -= gui
wince*|symbian:{
- htmlfiles.sources = *.html
+ htmlfiles.files = *.html
htmlfiles.path = .
DEPLOYMENT += htmlfiles
}
diff --git a/examples/xml/saxbookmarks/saxbookmarks.pro b/examples/xml/saxbookmarks/saxbookmarks.pro
index 7293bd1f64..d4b09b6828 100644
--- a/examples/xml/saxbookmarks/saxbookmarks.pro
+++ b/examples/xml/saxbookmarks/saxbookmarks.pro
@@ -14,7 +14,7 @@ sources.path = $$[QT_INSTALL_EXAMPLES]/xml/saxbookmarks
INSTALLS += target sources
wince*: {
- addFiles.sources = frank.xbel jennifer.xbel
+ addFiles.files = frank.xbel jennifer.xbel
addFiles.path = "\\My Documents"
DEPLOYMENT += addFiles
}
@@ -22,7 +22,7 @@ wince*: {
symbian: {
TARGET.UID3 = 0xA000C60A
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
- addFiles.sources = frank.xbel jennifer.xbel
+ addFiles.files = frank.xbel jennifer.xbel
addFiles.path = /data/qt/saxbookmarks
DEPLOYMENT += addFiles
}
diff --git a/header.FDL b/header.FDL
index 4f99540054..264a1ff342 100644
--- a/header.FDL
+++ b/header.FDL
@@ -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/lib/fonts/dejavu_sans_11_50.qpf2 b/lib/fonts/dejavu_sans_11_50.qpf2
new file mode 100644
index 0000000000..c88d099092
--- /dev/null
+++ b/lib/fonts/dejavu_sans_11_50.qpf2
Binary files differ
diff --git a/mkspecs/common/clang.conf b/mkspecs/common/clang.conf
new file mode 100644
index 0000000000..069cdfafec
--- /dev/null
+++ b/mkspecs/common/clang.conf
@@ -0,0 +1,17 @@
+#
+# Qmake configuration for Clang on Linux and Mac
+#
+
+QMAKE_CC = clang
+QMAKE_CXX = clang++
+
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+
+CONFIG += clang_pch_style
+QMAKE_PCH_OUTPUT_EXT = .pch
+
+QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CFLAGS_USE_PRECOMPILE = -Xclang -include-pch -Xclang ${QMAKE_PCH_OUTPUT}
+QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
diff --git a/mkspecs/common/g++-base.conf b/mkspecs/common/g++-base.conf
new file mode 100644
index 0000000000..eb5b7d6188
--- /dev/null
+++ b/mkspecs/common/g++-base.conf
@@ -0,0 +1,30 @@
+#
+# Qmake configuration for the GNU C++ compiler
+#
+# Before making changes to this file, please read the comment in
+# gcc-base.conf, to make sure the change goes in the right place.
+#
+# To verify that your change has the desired effect on the final configuration
+# you can use the manual test in tests/manual/mkspecs.
+#
+
+QMAKE_CC = gcc
+
+QMAKE_LINK_C = $$QMAKE_CC
+QMAKE_LINK_C_SHLIB = $$QMAKE_CC
+
+QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g
+
+QMAKE_CXX = g++
+
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+
+QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
+
+QMAKE_PCH_OUTPUT_EXT = .gch
+
+QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CFLAGS_USE_PRECOMPILE = -include ${QMAKE_PCH_OUTPUT_BASE}
+QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
diff --git a/mkspecs/common/g++-macx.conf b/mkspecs/common/g++-macx.conf
new file mode 100644
index 0000000000..22511573c1
--- /dev/null
+++ b/mkspecs/common/g++-macx.conf
@@ -0,0 +1,32 @@
+#
+# Qmake configuration for the GNU C++ compiler on Mac OS X
+#
+# Before making changes to this file, please read the comment in
+# gcc-base.conf, to make sure the change goes in the right place.
+#
+# To verify that your change has the desired effect on the final configuration
+# you can use the manual test in tests/manual/mkspecs.
+#
+
+include(g++-base.conf)
+
+QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_DWARF2
+QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_DWARF2
+QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += -g $$QMAKE_CFLAGS_DWARF2
+
+QMAKE_LFLAGS_STATIC_LIB += -all_load
+
+QMAKE_CFLAGS_X86_64 += -Xarch_x86_64 -mmacosx-version-min=10.5
+QMAKE_CFLAGS_PPC_64 += -Xarch_ppc64 -mmacosx-version-min=10.5
+
+QMAKE_CXXFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64
+QMAKE_CXXFLAGS_PPC_64 = $$QMAKE_CFLAGS_PPC_64
+QMAKE_OBJECTIVE_CFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64
+QMAKE_OBJECTIVE_CFLAGS_PPC_64 = $$QMAKE_CFLAGS_PPC_64
+QMAKE_LFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64
+QMAKE_LFLAGS_PPC_64 = $$QMAKE_CFLAGS_PPC_64
+
+QMAKE_OBJCFLAGS_PRECOMPILE = -x objective-c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+QMAKE_OBJCXXFLAGS_PRECOMPILE = -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
diff --git a/mkspecs/common/g++-unix.conf b/mkspecs/common/g++-unix.conf
new file mode 100644
index 0000000000..96e301e8fa
--- /dev/null
+++ b/mkspecs/common/g++-unix.conf
@@ -0,0 +1,14 @@
+#
+# Qmake configuration for the GNU C++ compiler on *nix-systems
+#
+# Before making changes to this file, please read the comment in
+# gcc-base.conf, to make sure the change goes in the right place.
+#
+# To verify that your change has the desired effect on the final configuration
+# you can use the manual test in tests/manual/mkspecs.
+#
+
+include(g++-base.conf)
+
+QMAKE_LFLAGS_RELEASE += -Wl,-O1
+QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
diff --git a/mkspecs/common/g++.conf b/mkspecs/common/g++.conf
index 0d511fc014..c5a34a9db3 100644
--- a/mkspecs/common/g++.conf
+++ b/mkspecs/common/g++.conf
@@ -1,54 +1,12 @@
#
-# qmake configuration for common gcc
+# Notice: g++.conf has been split into g++-base.conf and g++-unix.conf
+#
+# This file will make sure that anyone who's still including g++.conf
+# directly will get a warning and an explanation of how to fix their mkspec
#
-QMAKE_CC = gcc
-QMAKE_CFLAGS += -pipe
-QMAKE_CFLAGS_DEPS += -M
-QMAKE_CFLAGS_WARN_ON += -Wall -W
-QMAKE_CFLAGS_WARN_OFF += -w
-QMAKE_CFLAGS_RELEASE += -O2
-QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g
-QMAKE_CFLAGS_DEBUG += -g
-QMAKE_CFLAGS_SHLIB += -fPIC
-QMAKE_CFLAGS_STATIC_LIB += -fPIC
-QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
-QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
-QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
-
-QMAKE_CXX = g++
-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
-QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
-QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
-QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
-QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
-QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
-QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
-QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
-
-QMAKE_LINK = g++
-QMAKE_LINK_SHLIB = g++
-QMAKE_LINK_C = gcc
-QMAKE_LINK_C_SHLIB = gcc
-QMAKE_LFLAGS +=
-QMAKE_LFLAGS_RELEASE += -Wl,-O1
-QMAKE_LFLAGS_DEBUG +=
-QMAKE_LFLAGS_APP +=
-QMAKE_LFLAGS_SHLIB += -shared
-QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_SONAME += -Wl,-soname,
-QMAKE_LFLAGS_THREAD +=
-QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
-QMAKE_LFLAGS_RPATH = -Wl,-rpath,
-
-QMAKE_PCH_OUTPUT_EXT = .gch
+warning($$escape_expand("Your mkspec is including 'common/g++.conf', but the mkspecs have been refactored\\n\\tTo fix this include 'common/gcc-base-$${TARGET_PLATFORM}.conf and 'common/g++-$${TARGET_PLATFORM}.conf' instead"))
-# -Bsymbolic-functions (ld) support
-QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
-QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
+# We include gcc-base-unix.conf and g++-unix.conf to keep the behavior of the old g++.conf
+include(gcc-base-unix.conf)
+include(g++-unix.conf)
diff --git a/mkspecs/common/gcc-base-macx.conf b/mkspecs/common/gcc-base-macx.conf
new file mode 100644
index 0000000000..5c9a8a1d23
--- /dev/null
+++ b/mkspecs/common/gcc-base-macx.conf
@@ -0,0 +1,43 @@
+#
+# Base qmake configuration for GCC on Mac OS X
+#
+# Before making changes to this file, please read the comment in
+# gcc-base.conf, to make sure the change goes in the right place.
+#
+# To verify that your change has the desired effect on the final configuration
+# you can use the manual test in tests/manual/mkspecs.
+#
+
+include(gcc-base.conf)
+
+QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__
+
+QMAKE_CFLAGS_X86 += -arch i386
+QMAKE_CFLAGS_X86_64 += -arch x86_64
+QMAKE_CFLAGS_PPC += -arch ppc
+QMAKE_CFLAGS_PPC_64 += -arch ppc64
+QMAKE_CFLAGS_DWARF2 += -gdwarf-2
+
+QMAKE_CXXFLAGS_X86 += $$QMAKE_CFLAGS_X86
+QMAKE_CXXFLAGS_X86_64 += $$QMAKE_CFLAGS_X86_64
+QMAKE_CXXFLAGS_PPC += $$QMAKE_CFLAGS_PPC
+QMAKE_CXXFLAGS_PPC_64 += $$QMAKE_CFLAGS_PPC_64
+QMAKE_CXXFLAGS_DWARF2 += $$QMAKE_CFLAGS_DWARF2
+
+QMAKE_OBJECTIVE_CFLAGS_X86 += $$QMAKE_CFLAGS_X86
+QMAKE_OBJECTIVE_CFLAGS_X86_64 += $$QMAKE_CFLAGS_X86_64
+QMAKE_OBJECTIVE_CFLAGS_PPC += $$QMAKE_CFLAGS_PPC
+QMAKE_OBJECTIVE_CFLAGS_PPC_64 += $$QMAKE_CFLAGS_PPC_64
+
+QMAKE_LFLAGS_X86 += $$QMAKE_CFLAGS_X86
+QMAKE_LFLAGS_X86_64 += $$QMAKE_CFLAGS_X86_64
+QMAKE_LFLAGS_PPC += $$QMAKE_CFLAGS_PPC
+QMAKE_LFLAGS_PPC_64 += $$QMAKE_CFLAGS_PPC_64
+
+QMAKE_LFLAGS += -headerpad_max_install_names
+QMAKE_LFLAGS_SHLIB += -single_module -dynamiclib
+QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_INCREMENTAL += -undefined suppress -flat_namespace
+QMAKE_LFLAGS_SONAME += -install_name$${LITERAL_WHITESPACE}
+QMAKE_LFLAGS_VERSION += -current_version$${LITERAL_WHITESPACE}
+QMAKE_LFLAGS_COMPAT_VERSION += -compatibility_version$${LITERAL_WHITESPACE}
diff --git a/mkspecs/common/gcc-base-unix.conf b/mkspecs/common/gcc-base-unix.conf
new file mode 100644
index 0000000000..dc8d7e42cd
--- /dev/null
+++ b/mkspecs/common/gcc-base-unix.conf
@@ -0,0 +1,21 @@
+#
+# Base qmake configuration for GCC on *nix-systems
+#
+# Before making changes to this file, please read the comment in
+# gcc-base.conf, to make sure the change goes in the right place.
+#
+# To verify that your change has the desired effect on the final configuration
+# you can use the manual test in tests/manual/mkspecs.
+#
+
+include(gcc-base.conf)
+
+QMAKE_LFLAGS_SHLIB += -shared
+QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME += -Wl,-soname,
+QMAKE_LFLAGS_THREAD +=
+QMAKE_LFLAGS_RPATH = -Wl,-rpath,
+
+# -Bsymbolic-functions (ld) support
+QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
+QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
new file mode 100644
index 0000000000..0e90666350
--- /dev/null
+++ b/mkspecs/common/gcc-base.conf
@@ -0,0 +1,60 @@
+#
+# This file is used as a basis for the following compilers:
+#
+# - The GNU C++ compiler (g++)
+# - LLVM
+# - Clang
+#
+# Platform-specific options shared by these compilers are put into:
+#
+# - gcc-base-macx.conf
+# - gcc-base-unix.conf
+#
+# These base files are then combined with configurations for each compiler:
+#
+# - g++-base.conf
+# - g++-macx.conf
+# - g++-unix.conf
+# - llvm.conf
+# - clang.conf
+#
+# The combination happens in the top level mkspec, by including a platform-
+# specific version of the base-file, for example gcc-base-macx.conf, and then
+# a (possibly platform-specific) version of the actual compiler configuration,
+# for example g++-macx.conf.
+#
+# If you are making changes to any of these files, please consider the
+# possible effect it may have due to these include-rules, and whether it
+# might make more sense to share the rule or make it more specific.
+#
+# To verify that your change has the desired effect on the final configuration
+# you can use the manual test in tests/manual/mkspecs.
+#
+
+QMAKE_CFLAGS += -pipe
+QMAKE_CFLAGS_DEPS += -M
+QMAKE_CFLAGS_WARN_ON += -Wall -W
+QMAKE_CFLAGS_WARN_OFF += -w
+QMAKE_CFLAGS_RELEASE += -O2
+QMAKE_CFLAGS_DEBUG += -g
+QMAKE_CFLAGS_SHLIB += -fPIC
+QMAKE_CFLAGS_STATIC_LIB += -fPIC
+QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
+
+QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
+QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+
+QMAKE_LFLAGS +=
+QMAKE_LFLAGS_DEBUG +=
+QMAKE_LFLAGS_APP +=
+QMAKE_LFLAGS_RELEASE +=
+
diff --git a/mkspecs/common/llvm.conf b/mkspecs/common/llvm.conf
index 70f52aaada..86e0ab440f 100644
--- a/mkspecs/common/llvm.conf
+++ b/mkspecs/common/llvm.conf
@@ -1,49 +1,16 @@
#
-# qmake configuration for common gcc
+# Qmake configuration for LLVM on Linux and Mac
#
-QMAKE_CC = llvm-gcc
-QMAKE_CFLAGS += -pipe
-QMAKE_CFLAGS_DEPS += -M
-QMAKE_CFLAGS_WARN_ON += -Wall -W
-QMAKE_CFLAGS_WARN_OFF += -w
-QMAKE_CFLAGS_RELEASE += -O2
-QMAKE_CFLAGS_DEBUG += -g
-QMAKE_CFLAGS_SHLIB += -fPIC
-QMAKE_CFLAGS_STATIC_LIB += -fPIC
-QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
-QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
-QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
+QMAKE_CC = llvm-gcc
+QMAKE_CXX = llvm-g++
-QMAKE_CXX = llvm-g++
-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
-QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
-QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
-QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
-QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
-QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
-QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
-QMAKE_LINK = llvm-g++
-QMAKE_LINK_SHLIB = llvm-g++
-QMAKE_LFLAGS +=
-QMAKE_LFLAGS_RELEASE +=
-QMAKE_LFLAGS_DEBUG +=
-QMAKE_LFLAGS_APP +=
-QMAKE_LFLAGS_SHLIB += -shared
-QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_SONAME += -Wl,-soname,
-QMAKE_LFLAGS_THREAD +=
-QMAKE_LFLAGS_RPATH = -Wl,-rpath,
+QMAKE_PCH_OUTPUT_EXT = .gch
-QMAKE_PCH_OUTPUT_EXT = .gch
-
-# -Bsymbolic-functions (ld) support
-QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
-QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
+QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CFLAGS_USE_PRECOMPILE = -include ${QMAKE_PCH_OUTPUT_BASE}
+QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE \ No newline at end of file
diff --git a/mkspecs/common/mac-g++.conf b/mkspecs/common/mac-g++.conf
deleted file mode 100644
index 29b740861d..0000000000
--- a/mkspecs/common/mac-g++.conf
+++ /dev/null
@@ -1,81 +0,0 @@
-#
-# qmake configuration for common gcc on Mac OS X
-#
-
-include(mac.conf)
-
-QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__
-QMAKE_CFLAGS += -pipe
-QMAKE_CFLAGS_DEPS += -M
-QMAKE_CFLAGS_WARN_ON += -Wall -W
-QMAKE_CFLAGS_WARN_OFF += -w
-QMAKE_CFLAGS_RELEASE += -O2
-QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g -gdwarf-2
-QMAKE_CFLAGS_DEBUG += -g
-QMAKE_CFLAGS_SHLIB += -fPIC
-QMAKE_CFLAGS_STATIC_LIB += -fPIC
-QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
-QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
-QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
-
-QMAKE_CFLAGS_PPC_64 += -arch ppc64 -Xarch_ppc64 -mmacosx-version-min=10.5
-QMAKE_OBJECTIVE_CFLAGS_PPC_64 += -arch ppc64 -Xarch_ppc64 -mmacosx-version-min=10.5
-QMAKE_CFLAGS_X86_64 += -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5
-QMAKE_OBJECTIVE_CFLAGS_X86_64 += -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5
-QMAKE_CFLAGS_PPC += -arch ppc
-QMAKE_OBJECTIVE_CFLAGS_PPC += -arch ppc
-QMAKE_CFLAGS_X86 += -arch i386
-QMAKE_OBJECTIVE_CFLAGS_X86 += -arch i386
-QMAKE_CFLAGS_DWARF2 += -gdwarf-2
-
-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
-QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
-QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
-QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
-QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
-QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
-QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
-QMAKE_CXXFLAGS_PPC_64 += -arch ppc64 -Xarch_ppc64 -mmacosx-version-min=10.5
-QMAKE_CXXFLAGS_X86_64 += -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5
-QMAKE_CXXFLAGS_PPC += -arch ppc
-QMAKE_CXXFLAGS_X86 += -arch i386
-QMAKE_CXXFLAGS_DWARF2 += $$QMAKE_CFLAGS_DWARF2
-QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
-
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-QMAKE_LINK_C = $$QMAKE_CC
-QMAKE_LINK_C_SHLIB = $$QMAKE_CC
-QMAKE_LFLAGS += -headerpad_max_install_names
-QMAKE_LFLAGS_RELEASE +=
-QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += -g -gdwarf-2
-QMAKE_LFLAGS_DEBUG +=
-QMAKE_LFLAGS_APP +=
-QMAKE_LFLAGS_SHLIB += -single_module -dynamiclib
-QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_THREAD +=
-QMAKE_LFLAGS_INCREMENTAL+= -undefined suppress -flat_namespace
-QMAKE_LFLAGS_SONAME += -install_name$${LITERAL_WHITESPACE}
-QMAKE_LFLAGS_PPC_64 += -arch ppc64 -Xarch_ppc64 -mmacosx-version-min=10.5
-QMAKE_LFLAGS_X86_64 += -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5
-QMAKE_LFLAGS_PPC += -arch ppc
-QMAKE_LFLAGS_X86 += -arch i386
-QMAKE_LFLAGS_VERSION += -current_version$${LITERAL_WHITESPACE}
-QMAKE_LFLAGS_COMPAT_VERSION += -compatibility_version$${LITERAL_WHITESPACE}
-# -all_load requred to make Objective-C categories work in static builds.
-QMAKE_LFLAGS_STATIC_LIB += -all_load
-QMAKE_LFLAGS_RPATH +=
-
-QMAKE_PCH_OUTPUT_EXT = .gch
-
-QMAKE_OBJCFLAGS_PRECOMPILE += -x objective-c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
-
-QMAKE_OBJCXXFLAGS_PRECOMPILE += -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
diff --git a/mkspecs/common/mac-llvm.conf b/mkspecs/common/mac-llvm.conf
deleted file mode 100644
index 4ff088cb77..0000000000
--- a/mkspecs/common/mac-llvm.conf
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# qmake configuration for common gcc on Mac OS X
-#
-
-include(mac.conf)
-
-QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__
-QMAKE_CC = llvm-gcc
-QMAKE_CFLAGS += -pipe
-QMAKE_CFLAGS_DEPS += -M
-QMAKE_CFLAGS_WARN_ON += -Wall -W
-QMAKE_CFLAGS_WARN_OFF += -w
-QMAKE_CFLAGS_RELEASE += -O2
-QMAKE_CFLAGS_DEBUG += -g
-QMAKE_CFLAGS_SHLIB += -fPIC
-QMAKE_CFLAGS_STATIC_LIB += -fPIC
-QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
-QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
-QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
-
-QMAKE_CFLAGS_PPC_64 += -arch ppc64
-QMAKE_OBJECTIVE_CFLAGS_PPC_64 += -arch ppc64
-QMAKE_CFLAGS_X86_64 += -arch x86_64
-QMAKE_OBJECTIVE_CFLAGS_X86_64 += -arch x86_64
-QMAKE_CFLAGS_PPC += -arch ppc
-QMAKE_OBJECTIVE_CFLAGS_PPC += -arch ppc
-QMAKE_CFLAGS_X86 += -arch i386
-QMAKE_OBJECTIVE_CFLAGS_X86 += -arch i386
-QMAKE_CFLAGS_DWARF2 += -gdwarf-2
-
-QMAKE_CXX = llvm-g++
-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
-QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
-QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
-QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
-QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
-QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
-QMAKE_CXXFLAGS_PPC_64 += -arch ppc64
-QMAKE_CXXFLAGS_X86_64 += -arch x86_64
-QMAKE_CXXFLAGS_PPC += -arch ppc
-QMAKE_CXXFLAGS_X86 += -arch i386
-QMAKE_CXXFLAGS_DWARF2 += $$QMAKE_CFLAGS_DWARF2
-QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
-
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-QMAKE_LFLAGS += -headerpad_max_install_names
-QMAKE_LFLAGS_RELEASE +=
-QMAKE_LFLAGS_DEBUG +=
-QMAKE_LFLAGS_APP +=
-QMAKE_LFLAGS_SHLIB += -single_module -dynamiclib
-QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_THREAD +=
-QMAKE_LFLAGS_INCREMENTAL+= -undefined suppress -flat_namespace
-QMAKE_LFLAGS_SONAME += -install_name$${LITERAL_WHITESPACE}
-QMAKE_LFLAGS_PPC_64 += -arch ppc64
-QMAKE_LFLAGS_X86_64 += -arch x86_64
-QMAKE_LFLAGS_PPC += -arch ppc
-QMAKE_LFLAGS_X86 += -arch i386
-QMAKE_LFLAGS_VERSION += -current_version$${LITERAL_WHITESPACE}
-QMAKE_LFLAGS_COMPAT_VERSION += -compatibility_version$${LITERAL_WHITESPACE}
-QMAKE_LFLAGS_RPATH +=
-
-QMAKE_PCH_OUTPUT_EXT = .gch
-
-QMAKE_OBJCFLAGS_PRECOMPILE += -x objective-c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
-
-QMAKE_OBJCXXFLAGS_PRECOMPILE += -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
diff --git a/mkspecs/common/mac/qplatformdefs.h b/mkspecs/common/mac/qplatformdefs.h
new file mode 100644
index 0000000000..99d64ef054
--- /dev/null
+++ b/mkspecs/common/mac/qplatformdefs.h
@@ -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 qmake spec of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+// Get Qt defines/settings
+
+#include "qglobal.h"
+
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
+
+#include <unistd.h>
+
+
+// We are hot - unistd.h should have turned on the specific APIs we requested
+
+
+#include <pthread.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+#include <signal.h>
+#define QT_NO_LIBRARY_UNLOAD
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/ipc.h>
+#include <sys/time.h>
+#include <sys/shm.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#ifndef QT_NO_IPV6IFNAME
+#include <net/if.h>
+#endif
+
+#include "../common/posix/qplatformdefs.h"
+
+#undef QT_OPEN_LARGEFILE
+#undef QT_SOCKLEN_T
+#undef QT_SIGNAL_IGNORE
+
+#define QT_OPEN_LARGEFILE 0
+
+#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
+#define QT_SOCKLEN_T socklen_t
+#else
+#define QT_SOCKLEN_T int
+#endif
+
+#define QT_SIGNAL_IGNORE (void (*)(int))1
+
+#define QT_SNPRINTF ::snprintf
+#define QT_VSNPRINTF ::vsnprintf
+
+#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/common/qws.conf b/mkspecs/common/qws.conf
index 225f0fff5f..59820b8083 100644
--- a/mkspecs/common/qws.conf
+++ b/mkspecs/common/qws.conf
@@ -20,5 +20,3 @@ QMAKE_INCDIR_OPENGL_ES2 =
QMAKE_LIBDIR_OPENGL_ES2 =
QMAKE_LIBS_X11 =
QMAKE_LIBS_X11SM =
-QMAKE_LIBS_OPENGL =
-QMAKE_LIBS_OPENGL_QT =
diff --git a/mkspecs/common/symbian/symbian-makefile.conf b/mkspecs/common/symbian/symbian-makefile.conf
index 364e91b687..9dc3674871 100644
--- a/mkspecs/common/symbian/symbian-makefile.conf
+++ b/mkspecs/common/symbian/symbian-makefile.conf
@@ -30,9 +30,9 @@ QMAKE_EXTENSION_STATICLIB = lib
QMAKE_SYMBIAN_SHLIB = 1
is_using_gnupoc {
- DEFINES *= __PRODUCT_INCLUDE__=\\<$${EPOCROOT}epoc32/include/variant/symbian_os.hrh\\>
+ DEFINES *= __PRODUCT_INCLUDE__=\"<$${EPOCROOT}epoc32/include/variant/symbian_os.hrh>\"
} else {
- DEFINES *= __PRODUCT_INCLUDE__=\\<$${EPOCROOT}epoc32/include/variant/Symbian_OS.hrh\\>
+ DEFINES *= __PRODUCT_INCLUDE__=\"<$${EPOCROOT}epoc32/include/variant/Symbian_OS.hrh>\"
}
DEFINES *= \
__SYMBIAN32__ \
diff --git a/mkspecs/common/symbian/symbian-mmp.conf b/mkspecs/common/symbian/symbian-mmp.conf
index 52927816c6..1fbd302c68 100644
--- a/mkspecs/common/symbian/symbian-mmp.conf
+++ b/mkspecs/common/symbian/symbian-mmp.conf
@@ -4,16 +4,6 @@
include(symbian.conf)
-contains(QMAKE_HOST.os, "Windows") {
- QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc.exe
- QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic.exe
- QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc.exe
-} else {
- QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc
- QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic
- QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc
-}
-
load(symbian/add_mmp_rules)
symbian-abld {
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index 0bdc8e5b9a..4d0320dd91 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -27,7 +27,7 @@ QMAKE_CFLAGS_DEBUG =
QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
MMP_OPTION_KEYWORDS = CW ARMCC GCCE
-VERSION_FLAGS.ARMCC = ARMCC_4_0
+VERSION_FLAGS.ARMCC = ARMCC_4
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
# Symbian build system applies -cwd source on the MWCC command line.
# this causes problems with include paths, -cwd include uses the same
@@ -36,7 +36,7 @@ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
# both on the command line and rely on the compiler using the last specified
QMAKE_CXXFLAGS.CW = -cwd include
QMAKE_CXXFLAGS.ARMCC = --visibility_inlines_hidden
-QMAKE_CXXFLAGS.ARMCC_4_0 = --import_all_vtbl
+QMAKE_CXXFLAGS.ARMCC_4 = --import_all_vtbl
QMAKE_CXXFLAGS.GCCE = -fvisibility-inlines-hidden
QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
@@ -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) {
@@ -95,15 +94,23 @@ contains(QMAKE_HOST.os,Windows) {
QMAKE_DEL_DIR = rmdir
QMAKE_DEL_TREE = rmdir /s /q
QMAKE_CHK_DIR_EXISTS = if not exist
+
+ QMAKE_MOC = $$[QT_INSTALL_BINS]\\moc.exe
+ QMAKE_UIC = $$[QT_INSTALL_BINS]\\uic.exe
+ QMAKE_IDC = $$[QT_INSTALL_BINS]\\idc.exe
} else {
QMAKE_COPY = cp
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
+
+ QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+ QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+ QMAKE_IDC = $$[QT_INSTALL_BINS]/idc
}
QMAKE_IDL = midl
@@ -119,6 +126,10 @@ QT_ARCH = symbian
load(qt_config)
+QMAKE_LIBS_QT_ENTRY = -lqtmain$${QT_LIBINFIX}.lib
+QMAKE_LIBS_NO_QT_ENTRY = -llibcrt0.lib
+QMAKE_LIBS_NO_QT_ENTRY_GCCE = -llibcrt0_gcce.lib
+
# These directories must match what configure uses for QT_INSTALL_PLUGINS and QT_INSTALL_IMPORTS
QT_PLUGINS_BASE_DIR = /resource/qt$${QT_LIBINFIX}/plugins
QT_IMPORTS_BASE_DIR = /resource/qt/imports
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/mac/objective_c.prf b/mkspecs/features/mac/objective_c.prf
index 0df7013216..ca693bae8a 100644
--- a/mkspecs/features/mac/objective_c.prf
+++ b/mkspecs/features/mac/objective_c.prf
@@ -1,13 +1,22 @@
+for(source, SOURCES) {
+ contains(source,.*\\.mm?$) {
+ warning(Objective-C source \'$$source\' found in SOURCES but should be in OBJECTIVE_SOURCES)
+ SOURCES -= $$source
+ OBJECTIVE_SOURCES += $$source
+ }
+}
+
isEmpty(QMAKE_OBJECTIVE_CC):QMAKE_OBJECTIVE_CC = $$QMAKE_CC
- QMAKE_OBJECTIVE_CFLAGS = $$QMAKE_CFLAGS
- QMAKE_OBJECTIVE_CFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
- QMAKE_OBJECTIVE_CFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
- QMAKE_OBJECTIVE_CFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
- QMAKE_OBJECTIVE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
- QMAKE_OBJECTIVE_CFLAGS_X86 = $$QMAKE_CFLAGS_X86
- QMAKE_OBJECTIVE_CFLAGS_PPC = $$QMAKE_CFLAGS_PPC
- QMAKE_OBJECTIVE_CFLAGS_HIDESYMS = $$QMAKE_CXXFLAGS_HIDESYMS
+
+QMAKE_OBJECTIVE_CFLAGS = $$QMAKE_CFLAGS
+QMAKE_OBJECTIVE_CFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_OBJECTIVE_CFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_OBJECTIVE_CFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_OBJECTIVE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_OBJECTIVE_CFLAGS_X86 = $$QMAKE_CFLAGS_X86
+QMAKE_OBJECTIVE_CFLAGS_PPC = $$QMAKE_CFLAGS_PPC
+QMAKE_OBJECTIVE_CFLAGS_HIDESYMS = $$QMAKE_CXXFLAGS_HIDESYMS
OBJECTIVE_C_OBJECTS_DIR = $$OBJECTS_DIR
isEmpty(OBJECTIVE_C_OBJECTS_DIR):OBJECTIVE_C_OBJECTS_DIR = .
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index e59319fa6c..191a449719 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -113,7 +113,7 @@ for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) {
CONFIG(debug, debug|release): QT_ITEM = $${QTPLUG}d4.dll
else: QT_ITEM = $${QTPLUG}4.dll
- eval(qt_additional_plugin_$${QTPLUG}.sources = $$[QT_INSTALL_PLUGINS]/$${QT_PLUGINPATH}/$${QT_ITEM})
+ eval(qt_additional_plugin_$${QTPLUG}.files = $$[QT_INSTALL_PLUGINS]/$${QT_PLUGINPATH}/$${QT_ITEM})
eval(qt_additional_plugin_$${QTPLUG}.path = $${QT_PLUGINPATH})
DEPLOYMENT *= qt_additional_plugin_$${QTPLUG}
@@ -121,7 +121,7 @@ for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) {
isEqual(QT_CURRENT_VERIFY, DEPLOYMENT_PLUGIN):shared:symbian: {
QT_ITEM = $${QTPLUG}.dll
- eval(qt_additional_plugin_$${QTPLUG}.sources = $${QT_ITEM})
+ eval(qt_additional_plugin_$${QTPLUG}.files = $${QT_ITEM})
eval(qt_additional_plugin_$${QTPLUG}.path = $${QT_PLUGINPATH})
DEPLOYMENT *= qt_additional_plugin_$${QTPLUG}
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index afc708a23e..e5ef5a1f9e 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -87,6 +87,12 @@ defineTest(qtPrepareTool) {
else:$$1 = $$[QT_INSTALL_BINS]/$$2
}
$$1 ~= s,[/\\\\],$$QMAKE_DIR_SEP,
- contains(QMAKE_HOST.os, Windows):!contains($$1, .*\\.exe$):$$1 = $$eval($$1).exe
+ contains(QMAKE_HOST.os, Windows):!contains($$1, .*\\.(exe|bat)$) {
+ exists($$eval($$1).bat) {
+ $$1 = $$eval($$1).bat
+ } else {
+ $$1 = $$eval($$1).exe
+ }
+ }
export($$1)
}
diff --git a/mkspecs/features/qttest_p4.prf b/mkspecs/features/qttest_p4.prf
index d1c7c2be93..2ee148b715 100644
--- a/mkspecs/features/qttest_p4.prf
+++ b/mkspecs/features/qttest_p4.prf
@@ -1,6 +1,9 @@
isEmpty(TEMPLATE):TEMPLATE=app
CONFIG += qt warn_on console depend_includepath testcase
+# x11 is not defined by configure (the following line is copied from gui.pro)
+!win32:!embedded:!mac:!symbian:CONFIG += x11
+
qtAddLibrary(QtTest)
symbian:{
diff --git a/mkspecs/features/symbian/application_icon.prf b/mkspecs/features/symbian/application_icon.prf
index 29488119aa..f50e9445bb 100644
--- a/mkspecs/features/symbian/application_icon.prf
+++ b/mkspecs/features/symbian/application_icon.prf
@@ -7,7 +7,8 @@ contains(CONFIG, no_icon) {
symbian:RSS_RULES += "hidden = KAppIsHidden;"
CONFIG -= no_icon
}
-}
+}
+
!contains(CONFIG, no_icon) {
baseTarget = $$symbianRemoveSpecialCharacters($$basename(TARGET))
@@ -15,17 +16,19 @@ contains(CONFIG, no_icon) {
resourceZDir = $$EPOCROOT$$HW_ZDIR$$APP_RESOURCE_DIR
regZDir = $$EPOCROOT$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR
} else {
- isEmpty(DESTDIR) {
- resourceZDir = .
- } else {
+ contains(DESTDIR, "/.*") {
resourceZDir = $$DESTDIR
+ } else:isEmpty(DESTDIR) {
+ resourceZDir = $$OUT_PWD
+ } else {
+ resourceZDir = $$OUT_PWD/$$DESTDIR
}
regZDir = $$resourceZDir
}
- default_resource_deployment.sources += $$resourceZDir/$${baseTarget}.rsc
+ default_resource_deployment.files += $$resourceZDir/$${baseTarget}.rsc
default_resource_deployment.path = $$APP_RESOURCE_DIR
- default_reg_deployment.sources += $$regZDir/$${baseTarget}_reg.rsc
+ default_reg_deployment.files += $$regZDir/$${baseTarget}_reg.rsc
default_reg_deployment.path = $$REG_RESOURCE_IMPORT_DIR
!isEmpty(ICON) {
@@ -68,9 +71,10 @@ 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
+ default_resource_deployment.files += $$resourceZDir/$${baseTarget}.mif
}
}
diff --git a/mkspecs/features/symbian/data_caging_paths.prf b/mkspecs/features/symbian/data_caging_paths.prf
index 2f03128d95..7f5420cc88 100644
--- a/mkspecs/features/symbian/data_caging_paths.prf
+++ b/mkspecs/features/symbian/data_caging_paths.prf
@@ -13,7 +13,7 @@
#
# # These variables are mostly useful when specifying deployment
#
-# myLib.sources = myLib.dll
+# myLib.files = myLib.dll
# myLib.path = $$SHARED_LIB_DIR
# DEPLOYMENT += myLib
#
@@ -21,7 +21,7 @@
# # $$QT_PUBLIC_PLUGINS_BASE specifies the public base directory for Qt
# # plugin stubs:
#
-# myPublicImageFormatPlugin.sources = myImageFormat.dll
+# myPublicImageFormatPlugin.files = myImageFormat.dll
# myPublicImageFormatPlugin.path = $$QT_PLUGINS_BASE_DIR/imageformats
# DEPLOYMENT += myPublicImageFormatPlugin
#
diff --git a/mkspecs/features/symbian/def_files.prf b/mkspecs/features/symbian/def_files.prf
index f24387857b..1c11925566 100644
--- a/mkspecs/features/symbian/def_files.prf
+++ b/mkspecs/features/symbian/def_files.prf
@@ -7,6 +7,18 @@ CONFIG -= def_files_disabled
equals(QMAKE_TARGET_PRODUCT, Qt4):clean_TARGET = $$replace(TARGET, "$${QT_LIBINFIX}$", "")
else:clean_TARGET = $$TARGET
+defineTest(qtTestIfDirExists) {
+ contains(QMAKE_HOST.os,Windows) {
+ dirToTest = $$1
+ $$dirToTest ~= s,/,\\,
+ # Windows trick. Test for existence of nul, which every directory has.
+ retValue = $$system("if exist $$dirToTest\\nul echo true")
+ contains(retValue, true):return(true)|return(false)
+ } else {
+ system("test -d $$1"):return(true)|return(false)
+ }
+}
+
symbian-abld|symbian-sbsv2 {
# Firstly, if the MMP_RULES already contain a defBlock variable, don't generate another one
# (this bit is slightly magic, because it depends upon everyone creating their DEFFILE statements
@@ -52,9 +64,11 @@ symbian-abld|symbian-sbsv2 {
} else {
defFile = .
}
- system("$$QMAKE_CHK_DIR_EXISTS $$_PRO_FILE_PWD_/$$defFile") {
+ qtTestIfDirExists($$_PRO_FILE_PWD_/$$defFile) {
!exists("$$_PRO_FILE_PWD_/$$defFile/eabi") {
- system("$$QMAKE_MKDIR $$_PRO_FILE_PWD_/$$defFile/eabi")
+ dirToCreate = $$_PRO_FILE_PWD_/$$defFile/eabi
+ contains(QMAKE_HOST.os,Windows):dirToCreate ~= s,/,\\,
+ system("$$QMAKE_MKDIR $$dirToCreate")
}
elf2e32FileToAdd = $$_PRO_FILE_PWD_/$$defFile/eabi/$$basename(clean_TARGET)u.def
} else {
diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf
index a9b6d0e914..d9ff03d6ee 100644
--- a/mkspecs/features/symbian/default_post.prf
+++ b/mkspecs/features/symbian/default_post.prf
@@ -3,16 +3,21 @@ 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.sources += $$symbianRemoveSpecialCharacters($$basename(TARGET)).exe
default_bin_deployment.path += /sys/bin
-
+
load(application_icon.prf)
}
contains(TEMPLATE, lib): {
diff --git a/mkspecs/features/symbian/do_not_build_as_thumb.prf b/mkspecs/features/symbian/do_not_build_as_thumb.prf
index 60d9382c2c..0f1fd9fbe7 100644
--- a/mkspecs/features/symbian/do_not_build_as_thumb.prf
+++ b/mkspecs/features/symbian/do_not_build_as_thumb.prf
@@ -1,6 +1,6 @@
symbian-abld|symbian-sbsv2 {
MMP_RULES += ALWAYS_BUILD_AS_ARM
-} else:linux-armcc {
+} else:symbian-armcc {
QMAKE_CFLAGS -= --thumb
QMAKE_CFLAGS += --arm
QMAKE_CXXFLAGS -= --thumb
diff --git a/mkspecs/features/symbian/qt_config.prf b/mkspecs/features/symbian/qt_config.prf
index 2f446dc830..82c18621b7 100644
--- a/mkspecs/features/symbian/qt_config.prf
+++ b/mkspecs/features/symbian/qt_config.prf
@@ -3,7 +3,7 @@ load(qt_config)
!contains(QMAKE_HOST.os, "Windows") {
# Test for the existence of lower cased headers, a sign of using Gnupoc.
# Note that the qmake "exists" test won't do because it is case insensitive.
- system("test -f $${EPOCROOT}/epoc32/include/akndoc.h") {
+ system("test -f $${EPOCROOT}epoc32/include/akndoc.h") {
CONFIG += is_using_gnupoc
}
}
diff --git a/mkspecs/features/symbian/run_on_phone.prf b/mkspecs/features/symbian/run_on_phone.prf
index d8452773da..ba88a662f9 100644
--- a/mkspecs/features/symbian/run_on_phone.prf
+++ b/mkspecs/features/symbian/run_on_phone.prf
@@ -5,7 +5,8 @@ GENERATE_RUN_TARGETS = false
contains(TEMPLATE, app): GENERATE_RUN_TARGETS = true
else:!equals(DEPLOYMENT, default_deployment) {
for(dep_item, $$list($$DEPLOYMENT)) {
- dep_item_sources = $$eval($${dep_item}.sources)
+ ### Qt 5: remove .sources, inconsistent with INSTALLS
+ dep_item_sources = $$eval($${dep_item}.files) $$eval($${dep_item}.sources)
!isEmpty(dep_item_sources): GENERATE_RUN_TARGETS = true
}
}
diff --git a/mkspecs/features/symbian/sis_targets.prf b/mkspecs/features/symbian/sis_targets.prf
index e838e10d3a..e5a33cb799 100644
--- a/mkspecs/features/symbian/sis_targets.prf
+++ b/mkspecs/features/symbian/sis_targets.prf
@@ -4,7 +4,8 @@ GENERATE_SIS_TARGETS = false
contains(TEMPLATE, app): GENERATE_SIS_TARGETS = true
else:!equals(DEPLOYMENT, default_deployment) {
for(dep_item, $$list($$DEPLOYMENT)) {
- dep_item_sources = $$eval($${dep_item}.sources)
+ ### Qt 5: remove .sources, inconsistent with INSTALLS
+ dep_item_sources = $$eval($${dep_item}.files) $$eval($${dep_item}.sources)
!isEmpty(dep_item_sources): GENERATE_SIS_TARGETS = true
}
}
diff --git a/mkspecs/features/symbian/symbian_building.prf b/mkspecs/features/symbian/symbian_building.prf
index 614fb6515d..9288583c4c 100644
--- a/mkspecs/features/symbian/symbian_building.prf
+++ b/mkspecs/features/symbian/symbian_building.prf
@@ -1,7 +1,7 @@
-linux-armcc {
+symbian-armcc {
QMAKE_CFLAGS += $$QMAKE_CFLAGS.ARMCC
QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS.ARMCC
-} else:linux-gcce {
+} else:symbian-gcce {
QMAKE_CFLAGS += $$QMAKE_CFLAGS.GCCE
QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS.GCCE
}
@@ -16,7 +16,7 @@ else:clean_TARGET = $$TARGET
!contains(clean_TARGET, ".*[ -/].*"):eval(TMPVAR = \$\$QMAKE_$${clean_TARGET}_LFLAGS)
!isEmpty(TMPVAR) {
QMAKE_LFLAGS += $$TMPVAR
-} else :linux-gcce { # lets provide a simple default. Without elf2e32 complains
+} else :symbian-gcce { # lets provide a simple default. Without elf2e32 complains
QMAKE_LFLAGS += -Ttext 0x80000 -Tdata 0x400000
}
@@ -62,8 +62,8 @@ for(libToProcess, libsToProcess) {
} else {
qt_newLib = $$processSymbianLibrary($$qt_library)
contains(qt_newLib, ".*\\.dso$")|contains(qt_newLib, ".*\\.lib$"):PRE_TARGETDEPS += $$qt_newLib
- linux-gcce:qt_newLib = "-l:$$qt_newLib"
- eval($$libToProcess += \$\$qt_newLib)
+ symbian-gcce:qt_newLib = "-l:$$qt_newLib"
+ eval($$libToProcess *= \$\$qt_newLib)
}
}
}
@@ -89,12 +89,13 @@ count(splitVersion, 0) {
decVersion = "10.0"
} else {
count(splitVersion, 3) {
- hexVersion = $$system("sh -c 'printf %02x $$member(splitVersion, 0)'")
- hexPart2 = $$system("sh -c 'printf %02x $$member(splitVersion, 1)'")"
- hexPart2 = $$hexPart2$$system("sh -c 'printf %02x $$member(splitVersion, 2)'")"
- decVersion = $$system("sh -c 'printf %1d 0x$$hexVersion'").
+ hexVersion = $$system("perl -e \"printf (\\\"%02x\\\", $$member(splitVersion, 0))\"")
+ hexPart2 = $$system("perl -e \"printf (\\\"%02x\\\", $$member(splitVersion, 1))\"")"
+ hexPart2 = $$hexPart2$$system("perl -e \"printf (\\\"%02x\\\", $$member(splitVersion, 2))\"")"
+ decVersion = $$system("perl -e \"printf (\\\"%1d\\\", 0x$$hexVersion)\"").
hexVersion = $$hexVersion$$hexPart2
- decVersion = $$decVersion$$system("sh -c 'printf %d 0x$$hexPart2'")
+ decVersion = $$decVersion$$system("perl -e \"printf (\\\"%d\\\", 0x$$hexPart2)\"")
+
!contains(hexVersion, "[0-9a-f]{8}"):hexVersion = "00$${hexVersion}"
} else { # app code may have different numbering...
hexVersion = $$VERSION
@@ -117,7 +118,9 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) {
contains(CONFIG, plugin):QMAKE_ELF2E32_FLAGS += --definput=plugin_commonu.def
!isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK
- QMAKE_POST_LINK = $$QMAKE_MOVE $$symbianDestdir/$${baseTarget}.dll $$symbianDestdir/$${baseTarget}.sym \
+ moveCmd = $$QMAKE_MOVE $$symbianDestdir/$${baseTarget}.dll $$symbianDestdir/$${baseTarget}.sym
+ contains(QMAKE_HOST.os,Windows):moveCmd = $$replace(moveCmd, /, \\)
+ QMAKE_POST_LINK = $$moveCmd \
&& $$QMAKE_ELF2E32_WRAPPER --version=$$decVersion \
--sid=$$TARGET.SID \
--uid1=0x10000079 \
@@ -129,7 +132,7 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) {
--tmpdso=$${symbianObjdir}/$${baseTarget}.dso \
--dso=$${symbianDestdir}/$${baseTarget}.dso \
--defoutput=$$symbianObjdir/$${baseTarget}.def \
- --linkas=$${baseTarget}\\{$${hexVersion}\\}\\[$${intUid3}\\].dll \
+ --linkas=\"$${baseTarget}{$${hexVersion}}[$${intUid3}].dll\" \
--heap=$$epoc_heap_size \
--stack=$$TARGET.EPOCSTACKSIZE \
$$elf2e32_LIBPATH \
@@ -142,11 +145,17 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) {
QMAKE_CLEAN += $${symbianObjdir}/$${baseTarget}.dso
QMAKE_CLEAN += $${symbianObjdir}/$${baseTarget}.def
- linux-armcc: {
- LIBS += usrt2_2.lib dfpaeabi.dso dfprvct2_2.dso drtaeabi.dso scppnwdl.dso drtrvct2_2.dso h_t__uf.l\\(switch8.o\\)
- LIBS += -ledllstub.lib -ledll.lib\\(uc_dll_.o\\)
- } else :linux-gcce {
+ symbian-armcc: {
+ LIBS += usrt2_2.lib dfpaeabi.dso dfprvct2_2.dso drtaeabi.dso scppnwdl.dso drtrvct2_2.dso
+ # Quotation unfortunately is different on Windows and unix.
+ contains(QMAKE_HOST.os, Windows) {
+ LIBS += \"h_t__uf.l(switch8.o)\" edllstub.lib \"edll.lib(uc_dll_.o)\"
+ } else {
+ LIBS += h_t__uf.l\\(switch8.o\\) edllstub.lib edll.lib\\(uc_dll_.o\\)
+ }
+ } else :symbian-gcce {
LIBS += \
+ -l:edllstub.lib \
-l:edll.lib \
-l:usrt2_2.lib \
-l:dfpaeabi.dso \
@@ -156,13 +165,15 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) {
-lgcc
}
- QMAKE_LFLAGS += --soname $${baseTarget}\\{$${hexVersion}\\}\\[$${intUid3}\\].dll
+ QMAKE_LFLAGS += --soname \"$${baseTarget}{$${hexVersion}}[$${intUid3}].dll\"
DEFINES += __DLL__
}
contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@:.*") {
!isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK
- QMAKE_POST_LINK = $$QMAKE_MOVE $$symbianDestdir/$${baseTarget} $$symbianDestdir/$${baseTarget}.sym \
+ moveCmd = $$QMAKE_MOVE $$symbianDestdir/$${baseTarget} $$symbianDestdir/$${baseTarget}.sym
+ contains(QMAKE_HOST.os,Windows):moveCmd = $$replace(moveCmd, /, \\)
+ QMAKE_POST_LINK = $$moveCmd \
&& $$QMAKE_ELF2E32_WRAPPER --version $$decVersion \
--sid=$$TARGET.SID \
--uid1=0x1000007a \
@@ -171,7 +182,7 @@ contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@:.*") {
--targettype=EXE \
--elfinput=$${symbianDestdir}/$${baseTarget}.sym \
--output=$${symbianDestdir}/$${baseTarget}.exe \
- --linkas=$${baseTarget}\\{$${hexVersion}\\}\\[$${intUid3}\\].exe \
+ --linkas=\"$${baseTarget}{$${hexVersion}}[$${intUid3}].exe\" \
--heap=$$epoc_heap_size \
--stack=$$TARGET.EPOCSTACKSIZE \
$$elf2e32_LIBPATH \
@@ -184,28 +195,31 @@ contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@:.*") {
QMAKE_DISTCLEAN += $${symbianDestdir}/$${baseTarget}.exe
QMAKE_CLEAN += $${symbianDestdir}/$${baseTarget}
- linux-armcc: {
+ symbian-armcc: {
QMAKE_LIBS += usrt2_2.lib dfpaeabi.dso dfprvct2_2.dso drtaeabi.dso scppnwdl.dso drtrvct2_2.dso h_t__uf.l\\(switch8.o\\)
QMAKE_LIBS += -leexe.lib\\(uc_exe_.o\\)
- 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 {
+ } else :symbian-gcce {
# notice that we can't merge these as ordering of arguments is important.
QMAKE_LIBS += \
-l:eexe.lib \
-l:usrt2_2.lib
- 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 \
@@ -216,12 +230,12 @@ contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@:.*") {
QMAKE_LFLAGS += --shared
}
- QMAKE_LFLAGS += --soname $${baseTarget}\\{$${hexVersion}\\}\\[$${intUid3}\\].exe
+ QMAKE_LFLAGS += --soname \"$${baseTarget}{$${hexVersion}}[$${intUid3}].exe\"
DEFINES += __EXE__
}
# Symbian resource files
-linux-armcc: {
+symbian-armcc: {
SYMBIAN_RVCT22INC=$$(RVCT22INC)
!isEmpty(SYMBIAN_RVCT22INC):symbian_resources_INCLUDES = -I$${SYMBIAN_RVCT22INC}
}
@@ -229,7 +243,7 @@ symbian_resources_INCLUDES = $$replace(symbian_resources_INCLUDES, ",", " -I")
symbian_resources_INCLUDES += $$join(INCLUDEPATH, " -I", "-I")
symbian_resources_DEFINES = $$join(DEFINES, " -D", "-D")
symbian_resources_RCC_DIR = $$replace(RCC_DIR, "/$", "")
-symbian_resources_INCLUDES += "-I $$symbian_resources_RCC_DIR"
+symbian_resources_INCLUDES += "-I$$symbian_resources_RCC_DIR"
for(symbian_resource, SYMBIAN_RESOURCES) {
symbian_resource = $$basename(symbian_resource)
@@ -245,7 +259,7 @@ symbianresources.commands = cpp -nostdinc -undef \
$$symbian_resources_INCLUDES \
$$symbian_resources_DEFINES \
${QMAKE_FILE_NAME} \
- -o $${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rpp \
+ > $${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rpp \
&& rcomp -u -m045,046,047 \
-s$${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rpp \
-o$${symbianDestdir}/${QMAKE_FILE_BASE}$${QT_LIBINFIX}.rsc \
@@ -265,7 +279,7 @@ contains(TEMPLATE, "app"):!contains(CONFIG, "no_icon") {
$$symbian_resources_INCLUDES \
$$symbian_resources_DEFINES \
$${baseTarget}.rss \
- -o $${symbian_resources_RCC_DIR}/$${baseTarget}.rpp \
+ > $${symbian_resources_RCC_DIR}/$${baseTarget}.rpp \
&& rcomp -u -m045,046,047 \
-s$${symbian_resources_RCC_DIR}/$${baseTarget}.rpp \
-o$${symbianDestdir}/$${baseTarget}.rsc \
@@ -284,7 +298,7 @@ contains(TEMPLATE, "app"):!contains(CONFIG, "no_icon") {
$$symbian_resources_INCLUDES \
$$symbian_resources_DEFINES \
$${baseTarget}_reg.rss \
- -o $${symbian_resources_RCC_DIR}/$${baseTarget}_reg.rpp \
+ > $${symbian_resources_RCC_DIR}/$${baseTarget}_reg.rpp \
&& rcomp -u -m045,046,047 \
-s$${symbian_resources_RCC_DIR}/$${baseTarget}_reg.rpp \
-o$${symbianDestdir}/$${baseTarget}_reg.rsc \
diff --git a/mkspecs/freebsd-g++/qmake.conf b/mkspecs/freebsd-g++/qmake.conf
index 9de93d4abe..9d7c4431d8 100644
--- a/mkspecs/freebsd-g++/qmake.conf
+++ b/mkspecs/freebsd-g++/qmake.conf
@@ -48,6 +48,7 @@ QMAKE_DEL_FILE = rm -f
QMAKE_DEL_DIR = rmdir
QMAKE_CHK_DIR_EXISTS = test -d
QMAKE_MKDIR = mkdir -p
-include(../common/g++.conf)
include(../common/unix.conf)
+include(../common/gcc-base-unix.conf)
+include(../common/g++-unix.conf)
load(qt_config)
diff --git a/mkspecs/linux-g++-32/qmake.conf b/mkspecs/linux-g++-32/qmake.conf
index f425c0d3c5..cdf8914bda 100644
--- a/mkspecs/linux-g++-32/qmake.conf
+++ b/mkspecs/linux-g++-32/qmake.conf
@@ -12,6 +12,7 @@ QMAKE_INCREMENTAL_STYLE = sublib
QMAKE_CFLAGS = -m32
QMAKE_LFLAGS = -m32
-include(../common/g++.conf)
include(../common/linux.conf)
+include(../common/gcc-base-unix.conf)
+include(../common/g++-unix.conf)
load(qt_config)
diff --git a/mkspecs/linux-g++-64/qmake.conf b/mkspecs/linux-g++-64/qmake.conf
index b8877a9376..222f6b7ec0 100644
--- a/mkspecs/linux-g++-64/qmake.conf
+++ b/mkspecs/linux-g++-64/qmake.conf
@@ -15,8 +15,10 @@ QMAKE_INCREMENTAL_STYLE = sublib
QMAKE_CFLAGS = -m64
QMAKE_LFLAGS = -m64
-include(../common/g++.conf)
include(../common/linux.conf)
+include(../common/gcc-base-unix.conf)
+include(../common/g++-unix.conf)
+
QMAKE_LIBDIR_X11 = /usr/X11R6/lib64
QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib64
diff --git a/mkspecs/linux-g++-maemo/qmake.conf b/mkspecs/linux-g++-maemo/qmake.conf
index 8f85c548a7..23f1f71e0f 100644
--- a/mkspecs/linux-g++-maemo/qmake.conf
+++ b/mkspecs/linux-g++-maemo/qmake.conf
@@ -10,8 +10,9 @@ CONFIG += nostrip
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/g++.conf)
include(../common/linux.conf)
+include(../common/gcc-base-unix.conf)
+include(../common/g++-unix.conf)
# Override the default lib/include directories for scratchbox:
@@ -21,10 +22,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/linux-g++/qmake.conf b/mkspecs/linux-g++/qmake.conf
index d772b5e6aa..00df8949cc 100644
--- a/mkspecs/linux-g++/qmake.conf
+++ b/mkspecs/linux-g++/qmake.conf
@@ -9,6 +9,7 @@ CONFIG += qt warn_on release incremental link_prl gdb_dwarf_index
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/g++.conf)
include(../common/linux.conf)
+include(../common/gcc-base-unix.conf)
+include(../common/g++-unix.conf)
load(qt_config)
diff --git a/mkspecs/linux-llvm/qmake.conf b/mkspecs/linux-llvm/qmake.conf
index 77f8d811b7..46ea2aacbf 100644
--- a/mkspecs/linux-llvm/qmake.conf
+++ b/mkspecs/linux-llvm/qmake.conf
@@ -9,6 +9,7 @@ CONFIG += qt warn_on release incremental link_prl gdb_dwarf_index
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/llvm.conf)
include(../common/linux.conf)
+include(../common/gcc-base-unix.conf)
+include(../common/llvm.conf)
load(qt_config)
diff --git a/mkspecs/macx-g++/qmake.conf b/mkspecs/macx-g++/qmake.conf
index 4464686b3e..e402e54582 100644
--- a/mkspecs/macx-g++/qmake.conf
+++ b/mkspecs/macx-g++/qmake.conf
@@ -13,9 +13,7 @@ CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
-QMAKE_CC = gcc
-QMAKE_CXX = g++
-
-include(../common/mac-g++.conf)
-
+include(../common/mac.conf)
+include(../common/gcc-base-macx.conf)
+include(../common/g++-macx.conf)
load(qt_config)
diff --git a/mkspecs/macx-g++/qplatformdefs.h b/mkspecs/macx-g++/qplatformdefs.h
index 99d64ef054..5bdef57b51 100644
--- a/mkspecs/macx-g++/qplatformdefs.h
+++ b/mkspecs/macx-g++/qplatformdefs.h
@@ -39,59 +39,5 @@
**
****************************************************************************/
-#ifndef QPLATFORMDEFS_H
-#define QPLATFORMDEFS_H
+#include "../common/mac/qplatformdefs.h"
-// Get Qt defines/settings
-
-#include "qglobal.h"
-
-// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
-
-#include <unistd.h>
-
-
-// We are hot - unistd.h should have turned on the specific APIs we requested
-
-
-#include <pthread.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <grp.h>
-#include <pwd.h>
-#include <signal.h>
-#define QT_NO_LIBRARY_UNLOAD
-
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/ipc.h>
-#include <sys/time.h>
-#include <sys/shm.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <netinet/in.h>
-#ifndef QT_NO_IPV6IFNAME
-#include <net/if.h>
-#endif
-
-#include "../common/posix/qplatformdefs.h"
-
-#undef QT_OPEN_LARGEFILE
-#undef QT_SOCKLEN_T
-#undef QT_SIGNAL_IGNORE
-
-#define QT_OPEN_LARGEFILE 0
-
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
-#define QT_SOCKLEN_T socklen_t
-#else
-#define QT_SOCKLEN_T int
-#endif
-
-#define QT_SIGNAL_IGNORE (void (*)(int))1
-
-#define QT_SNPRINTF ::snprintf
-#define QT_VSNPRINTF ::vsnprintf
-
-#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/macx-g++40/qmake.conf b/mkspecs/macx-g++40/qmake.conf
index 784f5fce58..07663c6ebc 100644
--- a/mkspecs/macx-g++40/qmake.conf
+++ b/mkspecs/macx-g++40/qmake.conf
@@ -13,9 +13,16 @@ CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
+include(../common/mac.conf)
+include(../common/gcc-base-macx.conf)
+include(../common/g++-macx.conf)
+
QMAKE_CC = gcc-4.0
QMAKE_CXX = g++-4.0
-include(../common/mac-g++.conf)
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+QMAKE_LINK_C = $$QMAKE_CC
+QMAKE_LINK_C_SHLIB = $$QMAKE_CC
load(qt_config)
diff --git a/mkspecs/macx-g++40/qplatformdefs.h b/mkspecs/macx-g++40/qplatformdefs.h
index 99d64ef054..5bdef57b51 100644
--- a/mkspecs/macx-g++40/qplatformdefs.h
+++ b/mkspecs/macx-g++40/qplatformdefs.h
@@ -39,59 +39,5 @@
**
****************************************************************************/
-#ifndef QPLATFORMDEFS_H
-#define QPLATFORMDEFS_H
+#include "../common/mac/qplatformdefs.h"
-// Get Qt defines/settings
-
-#include "qglobal.h"
-
-// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
-
-#include <unistd.h>
-
-
-// We are hot - unistd.h should have turned on the specific APIs we requested
-
-
-#include <pthread.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <grp.h>
-#include <pwd.h>
-#include <signal.h>
-#define QT_NO_LIBRARY_UNLOAD
-
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/ipc.h>
-#include <sys/time.h>
-#include <sys/shm.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <netinet/in.h>
-#ifndef QT_NO_IPV6IFNAME
-#include <net/if.h>
-#endif
-
-#include "../common/posix/qplatformdefs.h"
-
-#undef QT_OPEN_LARGEFILE
-#undef QT_SOCKLEN_T
-#undef QT_SIGNAL_IGNORE
-
-#define QT_OPEN_LARGEFILE 0
-
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
-#define QT_SOCKLEN_T socklen_t
-#else
-#define QT_SOCKLEN_T int
-#endif
-
-#define QT_SIGNAL_IGNORE (void (*)(int))1
-
-#define QT_SNPRINTF ::snprintf
-#define QT_VSNPRINTF ::vsnprintf
-
-#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/macx-g++42/qmake.conf b/mkspecs/macx-g++42/qmake.conf
index fb936973a7..3d313056f2 100644
--- a/mkspecs/macx-g++42/qmake.conf
+++ b/mkspecs/macx-g++42/qmake.conf
@@ -13,9 +13,16 @@ CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
+include(../common/mac.conf)
+include(../common/gcc-base-macx.conf)
+include(../common/g++-macx.conf)
+
QMAKE_CC = gcc-4.2
QMAKE_CXX = g++-4.2
-include(../common/mac-g++.conf)
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+QMAKE_LINK_C = $$QMAKE_CC
+QMAKE_LINK_C_SHLIB = $$QMAKE_CC
load(qt_config)
diff --git a/mkspecs/macx-g++42/qplatformdefs.h b/mkspecs/macx-g++42/qplatformdefs.h
index 99d64ef054..5bdef57b51 100644
--- a/mkspecs/macx-g++42/qplatformdefs.h
+++ b/mkspecs/macx-g++42/qplatformdefs.h
@@ -39,59 +39,5 @@
**
****************************************************************************/
-#ifndef QPLATFORMDEFS_H
-#define QPLATFORMDEFS_H
+#include "../common/mac/qplatformdefs.h"
-// Get Qt defines/settings
-
-#include "qglobal.h"
-
-// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
-
-#include <unistd.h>
-
-
-// We are hot - unistd.h should have turned on the specific APIs we requested
-
-
-#include <pthread.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <grp.h>
-#include <pwd.h>
-#include <signal.h>
-#define QT_NO_LIBRARY_UNLOAD
-
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/ipc.h>
-#include <sys/time.h>
-#include <sys/shm.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <netinet/in.h>
-#ifndef QT_NO_IPV6IFNAME
-#include <net/if.h>
-#endif
-
-#include "../common/posix/qplatformdefs.h"
-
-#undef QT_OPEN_LARGEFILE
-#undef QT_SOCKLEN_T
-#undef QT_SIGNAL_IGNORE
-
-#define QT_OPEN_LARGEFILE 0
-
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
-#define QT_SOCKLEN_T socklen_t
-#else
-#define QT_SOCKLEN_T int
-#endif
-
-#define QT_SIGNAL_IGNORE (void (*)(int))1
-
-#define QT_SNPRINTF ::snprintf
-#define QT_VSNPRINTF ::vsnprintf
-
-#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/macx-icc/qplatformdefs.h b/mkspecs/macx-icc/qplatformdefs.h
index d46381c952..5bdef57b51 100644
--- a/mkspecs/macx-icc/qplatformdefs.h
+++ b/mkspecs/macx-icc/qplatformdefs.h
@@ -39,5 +39,5 @@
**
****************************************************************************/
-#include "../macx-g++/qplatformdefs.h"
+#include "../common/mac/qplatformdefs.h"
diff --git a/mkspecs/macx-llvm/qmake.conf b/mkspecs/macx-llvm/qmake.conf
index d46baeaa37..d794701d5c 100644
--- a/mkspecs/macx-llvm/qmake.conf
+++ b/mkspecs/macx-llvm/qmake.conf
@@ -13,6 +13,13 @@ CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac-llvm.conf)
+include(../common/mac.conf)
+include(../common/gcc-base-macx.conf)
+include(../common/llvm.conf)
+
+QMAKE_OBJCFLAGS_PRECOMPILE = -x objective-c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+QMAKE_OBJCXXFLAGS_PRECOMPILE = -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
load(qt_config)
diff --git a/mkspecs/macx-llvm/qplatformdefs.h b/mkspecs/macx-llvm/qplatformdefs.h
index 99d64ef054..5bdef57b51 100644
--- a/mkspecs/macx-llvm/qplatformdefs.h
+++ b/mkspecs/macx-llvm/qplatformdefs.h
@@ -39,59 +39,5 @@
**
****************************************************************************/
-#ifndef QPLATFORMDEFS_H
-#define QPLATFORMDEFS_H
+#include "../common/mac/qplatformdefs.h"
-// Get Qt defines/settings
-
-#include "qglobal.h"
-
-// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
-
-#include <unistd.h>
-
-
-// We are hot - unistd.h should have turned on the specific APIs we requested
-
-
-#include <pthread.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <grp.h>
-#include <pwd.h>
-#include <signal.h>
-#define QT_NO_LIBRARY_UNLOAD
-
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/ipc.h>
-#include <sys/time.h>
-#include <sys/shm.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <netinet/in.h>
-#ifndef QT_NO_IPV6IFNAME
-#include <net/if.h>
-#endif
-
-#include "../common/posix/qplatformdefs.h"
-
-#undef QT_OPEN_LARGEFILE
-#undef QT_SOCKLEN_T
-#undef QT_SIGNAL_IGNORE
-
-#define QT_OPEN_LARGEFILE 0
-
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
-#define QT_SOCKLEN_T socklen_t
-#else
-#define QT_SOCKLEN_T int
-#endif
-
-#define QT_SIGNAL_IGNORE (void (*)(int))1
-
-#define QT_SNPRINTF ::snprintf
-#define QT_VSNPRINTF ::vsnprintf
-
-#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/macx-xcode/qmake.conf b/mkspecs/macx-xcode/qmake.conf
index 3a4a5007c0..4cb462696e 100755
--- a/mkspecs/macx-xcode/qmake.conf
+++ b/mkspecs/macx-xcode/qmake.conf
@@ -9,10 +9,16 @@ TEMPLATE = app
CONFIG += qt warn_on release lib_version_first incremental plugin_no_soname link_prl app_bundle
QT += core gui
-include(../common/mac-g++.conf)
+include(../common/mac.conf)
+include(../common/gcc-base-macx.conf)
+include(../common/g++-macx.conf)
-QMAKE_CC =
-QMAKE_CXX =
+QMAKE_CC =
+QMAKE_CXX =
+QMAKE_LINK =
+QMAKE_LINK_C =
+QMAKE_LINK_C_SHLIB =
+QMAKE_LINK_SHLIB =
QMAKE_CFLAGS_HIDESYMS =
QMAKE_CFLAGS_PPC_64 =
QMAKE_CFLAGS_X86_64 =
diff --git a/mkspecs/macx-xcode/qplatformdefs.h b/mkspecs/macx-xcode/qplatformdefs.h
index 99d64ef054..5bdef57b51 100644
--- a/mkspecs/macx-xcode/qplatformdefs.h
+++ b/mkspecs/macx-xcode/qplatformdefs.h
@@ -39,59 +39,5 @@
**
****************************************************************************/
-#ifndef QPLATFORMDEFS_H
-#define QPLATFORMDEFS_H
+#include "../common/mac/qplatformdefs.h"
-// Get Qt defines/settings
-
-#include "qglobal.h"
-
-// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
-
-#include <unistd.h>
-
-
-// We are hot - unistd.h should have turned on the specific APIs we requested
-
-
-#include <pthread.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <grp.h>
-#include <pwd.h>
-#include <signal.h>
-#define QT_NO_LIBRARY_UNLOAD
-
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/ipc.h>
-#include <sys/time.h>
-#include <sys/shm.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <netinet/in.h>
-#ifndef QT_NO_IPV6IFNAME
-#include <net/if.h>
-#endif
-
-#include "../common/posix/qplatformdefs.h"
-
-#undef QT_OPEN_LARGEFILE
-#undef QT_SOCKLEN_T
-#undef QT_SIGNAL_IGNORE
-
-#define QT_OPEN_LARGEFILE 0
-
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
-#define QT_SOCKLEN_T socklen_t
-#else
-#define QT_SOCKLEN_T int
-#endif
-
-#define QT_SIGNAL_IGNORE (void (*)(int))1
-
-#define QT_SNPRINTF ::snprintf
-#define QT_VSNPRINTF ::vsnprintf
-
-#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/qws/linux-arm-g++/qmake.conf b/mkspecs/qws/linux-arm-g++/qmake.conf
index 7e0a3b4a69..7b378133ac 100644
--- a/mkspecs/qws/linux-arm-g++/qmake.conf
+++ b/mkspecs/qws/linux-arm-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with arm-linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf b/mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf
index 3611421c44..e1ad837361 100644
--- a/mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf
+++ b/mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with arm-none-linux-gnueabi-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-armv6-g++/qmake.conf b/mkspecs/qws/linux-armv6-g++/qmake.conf
index cd7ecca229..0e2473c26c 100644
--- a/mkspecs/qws/linux-armv6-g++/qmake.conf
+++ b/mkspecs/qws/linux-armv6-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building for ARMv6 devices with arm-linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-avr32-g++/qmake.conf b/mkspecs/qws/linux-avr32-g++/qmake.conf
index 057c93870d..32c0444de8 100644
--- a/mkspecs/qws/linux-avr32-g++/qmake.conf
+++ b/mkspecs/qws/linux-avr32-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with avr32-linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-cellon-g++/qmake.conf b/mkspecs/qws/linux-cellon-g++/qmake.conf
index 363a3ce66f..ad66c3c342 100644
--- a/mkspecs/qws/linux-cellon-g++/qmake.conf
+++ b/mkspecs/qws/linux-cellon-g++/qmake.conf
@@ -6,8 +6,9 @@
# qmake configuration for building with arm-linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-dm7000-g++/qmake.conf b/mkspecs/qws/linux-dm7000-g++/qmake.conf
index aea2647433..c897091466 100644
--- a/mkspecs/qws/linux-dm7000-g++/qmake.conf
+++ b/mkspecs/qws/linux-dm7000-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for linux-dm7000-g++, for Dream Multimedia's DM7000S
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-dm800-g++/qmake.conf b/mkspecs/qws/linux-dm800-g++/qmake.conf
index fca93b4cd7..002e4c7d56 100644
--- a/mkspecs/qws/linux-dm800-g++/qmake.conf
+++ b/mkspecs/qws/linux-dm800-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for linux-dm800-g++, for Dream Multimedia's DM800
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-generic-g++-32/qmake.conf b/mkspecs/qws/linux-generic-g++-32/qmake.conf
index 81af4ab3e9..249c10aae9 100644
--- a/mkspecs/qws/linux-generic-g++-32/qmake.conf
+++ b/mkspecs/qws/linux-generic-g++-32/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with arm-linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-generic-g++/qmake.conf b/mkspecs/qws/linux-generic-g++/qmake.conf
index a026e88c9d..e803d0d402 100644
--- a/mkspecs/qws/linux-generic-g++/qmake.conf
+++ b/mkspecs/qws/linux-generic-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
load(qt_config)
diff --git a/mkspecs/qws/linux-ipaq-g++/qmake.conf b/mkspecs/qws/linux-ipaq-g++/qmake.conf
index 59f4e6eaef..f9d33b3628 100644
--- a/mkspecs/qws/linux-ipaq-g++/qmake.conf
+++ b/mkspecs/qws/linux-ipaq-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with arm-linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-lsb-g++/qmake.conf b/mkspecs/qws/linux-lsb-g++/qmake.conf
index 8b6622807a..4b359258fb 100644
--- a/mkspecs/qws/linux-lsb-g++/qmake.conf
+++ b/mkspecs/qws/linux-lsb-g++/qmake.conf
@@ -3,10 +3,12 @@
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
+
QMAKE_LSB = 1
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-mips-g++/qmake.conf b/mkspecs/qws/linux-mips-g++/qmake.conf
index 3c55342f61..1a8607869f 100644
--- a/mkspecs/qws/linux-mips-g++/qmake.conf
+++ b/mkspecs/qws/linux-mips-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with mipsel-linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-nacl-g++/qmake.conf b/mkspecs/qws/linux-nacl-g++/qmake.conf
new file mode 100644
index 0000000000..83ce65b937
--- /dev/null
+++ b/mkspecs/qws/linux-nacl-g++/qmake.conf
@@ -0,0 +1,74 @@
+#
+# qmake configuration for building with nacl-g++
+#
+
+include(../../common/unix.conf)
+include(../../common/qws.conf)
+
+QT = core gui
+
+# copy of ../../common/g++.conf, with modifications:
+
+QMAKE_CC = nacl-gcc
+QMAKE_CXX = nacl-g++
+QMAKE_LINK = nacl-g++
+QMAKE_LINK_SHLIB = nacl-g++
+
+#QMAKE_CC = gcc
+QMAKE_CFLAGS += -pipe -DXP_UNIX -DNACL_STANDALONE=1
+QMAKE_CFLAGS_DEPS += -M
+QMAKE_CFLAGS_WARN_ON += -Wall -W
+QMAKE_CFLAGS_WARN_OFF += -w
+QMAKE_CFLAGS_RELEASE += -O2
+QMAKE_CFLAGS_DEBUG += -g
+QMAKE_CFLAGS_SHLIB += -fPIC
+#QMAKE_CFLAGS_STATIC_LIB += -fPIC
+QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
+QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
+
+#QMAKE_CXX = g++
+QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
+QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+
+#QMAKE_LINK = g++
+#QMAKE_LINK_SHLIB = g++
+QMAKE_LINK_C = gcc
+QMAKE_LINK_C_SHLIB = gcc
+QMAKE_LFLAGS +=
+QMAKE_LFLAGS_RELEASE += -Wl,-O1
+QMAKE_LFLAGS_DEBUG +=
+QMAKE_LFLAGS_APP +=
+QMAKE_LFLAGS_SHLIB += -shared
+QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME += -Wl,-soname,
+QMAKE_LFLAGS_THREAD +=
+QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
+QMAKE_LFLAGS_RPATH = -Wl,-rpath,
+
+QMAKE_LIBS = -lgoogle_nacl_imc -lgoogle_nacl_npruntime -lgoogle_nacl_pgl -lgoogle_nacl_gpu -lpthread -lsrpc
+
+QMAKE_PCH_OUTPUT_EXT = .gch
+
+# -Bsymbolic-functions (ld) support
+QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
+QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
+
+# modifications to linux.conf
+QMAKE_AR = nacl-ar q
+QMAKE_OBJCOPY = nacl-objcopy
+QMAKE_STRIP = nacl-strip
+QMAKE_LIBS_DYNLOAD =
+
+load(qt_config)
diff --git a/mkspecs/qws/linux-nacl-g++/qplatformdefs.h b/mkspecs/qws/linux-nacl-g++/qplatformdefs.h
new file mode 100644
index 0000000000..01b26d9e50
--- /dev/null
+++ b/mkspecs/qws/linux-nacl-g++/qplatformdefs.h
@@ -0,0 +1,175 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake spec of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+// Get Qt defines/settings
+
+#define _POSIX_TIMERS
+
+#include "qglobal.h"
+
+
+#define _POSIX_TIMERS
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
+
+// 1) need to reset default environment if _BSD_SOURCE is defined
+// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0
+// 3) it seems older glibc need this to include the X/Open stuff
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
+
+#include <unistd.h>
+
+
+// We are hot - unistd.h should have turned on the specific APIs we requested
+
+#include <sys/features.h>
+#include <pthread.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+#include <signal.h>
+//#include <dlfcn.h>
+
+#include <sys/types.h>
+//#include <sys/ioctl.h>
+//#include <sys/ipc.h>
+
+#include <sys/time.h>
+//#include <sys/shm.h>
+//#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+//#include <netinet/in.h>
+#ifndef QT_NO_IPV6IFNAME
+#include <net/if.h>
+#endif
+
+// extra disabling.
+#ifdef __native_client__
+#define QT_NO_FSFILEENGINE
+#define QT_NO_TRANSLATION
+#endif
+
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_STATBUF struct stat64
+#define QT_STATBUF4TSTAT struct stat64
+#define QT_STAT ::stat64
+#define QT_FSTAT ::fstat64
+#define QT_LSTAT ::lstat64
+#define QT_OPEN ::open64
+#define QT_TRUNCATE ::truncate64
+#define QT_FTRUNCATE ::ftruncate64
+#define QT_LSEEK ::lseek64
+#else
+#define QT_STATBUF struct stat
+#define QT_STATBUF4TSTAT struct stat
+#define QT_STAT ::stat
+#define QT_FSTAT ::fstat
+#define QT_LSTAT ::lstat
+#define QT_OPEN ::open
+#define QT_TRUNCATE ::truncate
+#define QT_FTRUNCATE ::ftruncate
+#define QT_LSEEK ::lseek
+#endif
+
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_FOPEN ::fopen64
+#define QT_FSEEK ::fseeko64
+#define QT_FTELL ::ftello64
+#define QT_FGETPOS ::fgetpos64
+#define QT_FSETPOS ::fsetpos64
+#define QT_FPOS_T fpos64_t
+#define QT_OFF_T off64_t
+#else
+#define QT_FOPEN ::fopen
+#define QT_FSEEK ::fseek
+#define QT_FTELL ::ftell
+#define QT_FGETPOS ::fgetpos
+#define QT_FSETPOS ::fsetpos
+#define QT_FPOS_T fpos_t
+#define QT_OFF_T long
+#endif
+
+#define QT_STAT_REG S_IFREG
+#define QT_STAT_DIR S_IFDIR
+#define QT_STAT_MASK S_IFMT
+#define QT_STAT_LNK S_IFLNK
+#define QT_SOCKET_CONNECT ::connect
+#define QT_SOCKET_BIND ::bind
+#define QT_FILENO fileno
+#define QT_CLOSE ::close
+#define QT_READ ::read
+#define QT_WRITE ::write
+#define QT_ACCESS ::access
+#define QT_GETCWD ::getcwd
+#define QT_CHDIR ::chdir
+#define QT_MKDIR ::mkdir
+#define QT_RMDIR ::rmdir
+#define QT_OPEN_LARGEFILE O_LARGEFILE
+#define QT_OPEN_RDONLY O_RDONLY
+#define QT_OPEN_WRONLY O_WRONLY
+#define QT_OPEN_RDWR O_RDWR
+#define QT_OPEN_CREAT O_CREAT
+#define QT_OPEN_TRUNC O_TRUNC
+#define QT_OPEN_APPEND O_APPEND
+
+#define QT_SIGNAL_RETTYPE void
+#define QT_SIGNAL_ARGS int
+#define QT_SIGNAL_IGNORE SIG_IGN
+
+#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+#define QT_SOCKLEN_T socklen_t
+#else
+#define QT_SOCKLEN_T int
+#endif
+
+#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+#define QT_SNPRINTF ::snprintf
+#define QT_VSNPRINTF ::vsnprintf
+#endif
+
+
+#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/qws/linux-powerpc-g++/qmake.conf b/mkspecs/qws/linux-powerpc-g++/qmake.conf
index e1926b4cca..6a6310aa02 100644
--- a/mkspecs/qws/linux-powerpc-g++/qmake.conf
+++ b/mkspecs/qws/linux-powerpc-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-sh-g++/qmake.conf b/mkspecs/qws/linux-sh-g++/qmake.conf
index 61b57a3b23..004780a559 100644
--- a/mkspecs/qws/linux-sh-g++/qmake.conf
+++ b/mkspecs/qws/linux-sh-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building for SH devices with sh3-linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-sh4al-g++/qmake.conf b/mkspecs/qws/linux-sh4al-g++/qmake.conf
index 9caebdfafe..71f6b3df56 100644
--- a/mkspecs/qws/linux-sh4al-g++/qmake.conf
+++ b/mkspecs/qws/linux-sh4al-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building for SH4AL-DSP devices with sh3-linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-sharp-g++/qmake.conf b/mkspecs/qws/linux-sharp-g++/qmake.conf
index 083e4e87e9..6a000b9c64 100644
--- a/mkspecs/qws/linux-sharp-g++/qmake.conf
+++ b/mkspecs/qws/linux-sharp-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with arm-linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-x86-g++/qmake.conf b/mkspecs/qws/linux-x86-g++/qmake.conf
index 7e28d4eb41..55011ec52b 100644
--- a/mkspecs/qws/linux-x86-g++/qmake.conf
+++ b/mkspecs/qws/linux-x86-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
load(qt_config)
diff --git a/mkspecs/qws/linux-x86_64-g++/qmake.conf b/mkspecs/qws/linux-x86_64-g++/qmake.conf
index d4e6189cd1..e18d055790 100644
--- a/mkspecs/qws/linux-x86_64-g++/qmake.conf
+++ b/mkspecs/qws/linux-x86_64-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/linux-zylonite-g++/qmake.conf b/mkspecs/qws/linux-zylonite-g++/qmake.conf
index 97ae6001b3..f50b70f945 100644
--- a/mkspecs/qws/linux-zylonite-g++/qmake.conf
+++ b/mkspecs/qws/linux-zylonite-g++/qmake.conf
@@ -2,8 +2,9 @@
# qmake configuration for building with arm-linux-g++
#
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
diff --git a/mkspecs/qws/macx-generic-g++/qmake.conf b/mkspecs/qws/macx-generic-g++/qmake.conf
index 9096712cb5..8dcbb39316 100644
--- a/mkspecs/qws/macx-generic-g++/qmake.conf
+++ b/mkspecs/qws/macx-generic-g++/qmake.conf
@@ -2,6 +2,8 @@
# qmake configuration for macx-g++ with Qtopia Core
#
+include(../../common/unix.conf)
+
MAKEFILE_GENERATOR = UNIX
TARGET_PLATFORM = macx
TEMPLATE = app
@@ -18,18 +20,18 @@ QMAKE_YACCFLAGS = -d
QMAKE_CFLAGS = -pipe
QMAKE_CFLAGS_WARN_ON = -Wall -W
QMAKE_CFLAGS_WARN_OFF =
-QMAKE_CFLAGS_RELEASE = -O2 -fno-default-inline
+QMAKE_CFLAGS_RELEASE = -O2
QMAKE_CFLAGS_DEBUG = -g
QMAKE_CFLAGS_SHLIB = -fPIC
QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
QMAKE_CFLAGS_THREAD = -D_REENTRANT
QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
-QMAKE_CXX = $(TB)c++
+QMAKE_CXX = c++
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -DQT_NO_QWS_TRANSFORMED
QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE -fno-default-inline
QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
diff --git a/mkspecs/qws/macx-nacl-g++/qmake.conf b/mkspecs/qws/macx-nacl-g++/qmake.conf
new file mode 100644
index 0000000000..0a54b4be64
--- /dev/null
+++ b/mkspecs/qws/macx-nacl-g++/qmake.conf
@@ -0,0 +1,95 @@
+#
+# qmake configuration for macx-nacl-g++ with embedded-lite
+#
+
+include(../../common/unix.conf)
+
+MAKEFILE_GENERATOR = UNIX
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+QMAKE_INCREMENTAL_STYLE = sublib
+QMAKE_EXTENSION_SHLIB = dylib
+
+
+QMAKE_CC = nacl-gcc
+QMAKE_CXX = nacl-g++
+QMAKE_LINK = nacl-g++
+QMAKE_LINK_SHLIB = nacl-g++
+
+#QMAKE_CC = $(TB)cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -pipe -DXP_UNIX -DNACL_STANDALONE=1
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
+
+#QMAKE_CXX = $(TB)c++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -DQT_NO_QWS_TRANSFORMED
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE -fno-default-inline
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+QMAKE_INCDIR_QTOPIA = $(QPEDIR)/include
+QMAKE_LIBDIR_QTOPIA = $(QPEDIR)/lib
+
+#QMAKE_LINK = $$QMAKE_CXX
+#QMAKE_LINK_SHLIB = $$QMAKE_CXX
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -dynamiclib
+QMAKE_LFLAGS_INCREMENTAL = -undefined suppress -flat_namespace
+QMAKE_LFLAGS_PLUGIN = -bundle
+QMAKE_LFLAGS_SONAME =
+QMAKE_LFLAGS_THREAD =
+
+QMAKE_LIBS = -lgoogle_nacl_imc -lgoogle_nacl_npruntime -lgoogle_nacl_pgl -lgoogle_nacl_gpu -lpthread -lsrpc
+QMAKE_LIBS_X11 =
+QMAKE_LIBS_X11SM =
+QMAKE_LIBS_QT = -lqte
+QMAKE_LIBS_QT_THREAD = -lqte-mt
+QMAKE_LIBS_QT_OPENGL = -lqgl
+QMAKE_LIBS_QTOPIA = -lqpe -lqtopia
+QMAKE_LIBS_THREAD =
+QMAKE_LIBS_OPENGL =
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR = nacl-ar q
+QMAKE_OBJCOPY = nacl-objcopy
+QMAKE_STRIP = nacl-strip
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+load(qt_config)
diff --git a/mkspecs/qws/macx-nacl-g++/qplatformdefs.h b/mkspecs/qws/macx-nacl-g++/qplatformdefs.h
new file mode 100644
index 0000000000..01b26d9e50
--- /dev/null
+++ b/mkspecs/qws/macx-nacl-g++/qplatformdefs.h
@@ -0,0 +1,175 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake spec of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+// Get Qt defines/settings
+
+#define _POSIX_TIMERS
+
+#include "qglobal.h"
+
+
+#define _POSIX_TIMERS
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
+
+// 1) need to reset default environment if _BSD_SOURCE is defined
+// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0
+// 3) it seems older glibc need this to include the X/Open stuff
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
+
+#include <unistd.h>
+
+
+// We are hot - unistd.h should have turned on the specific APIs we requested
+
+#include <sys/features.h>
+#include <pthread.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+#include <signal.h>
+//#include <dlfcn.h>
+
+#include <sys/types.h>
+//#include <sys/ioctl.h>
+//#include <sys/ipc.h>
+
+#include <sys/time.h>
+//#include <sys/shm.h>
+//#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+//#include <netinet/in.h>
+#ifndef QT_NO_IPV6IFNAME
+#include <net/if.h>
+#endif
+
+// extra disabling.
+#ifdef __native_client__
+#define QT_NO_FSFILEENGINE
+#define QT_NO_TRANSLATION
+#endif
+
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_STATBUF struct stat64
+#define QT_STATBUF4TSTAT struct stat64
+#define QT_STAT ::stat64
+#define QT_FSTAT ::fstat64
+#define QT_LSTAT ::lstat64
+#define QT_OPEN ::open64
+#define QT_TRUNCATE ::truncate64
+#define QT_FTRUNCATE ::ftruncate64
+#define QT_LSEEK ::lseek64
+#else
+#define QT_STATBUF struct stat
+#define QT_STATBUF4TSTAT struct stat
+#define QT_STAT ::stat
+#define QT_FSTAT ::fstat
+#define QT_LSTAT ::lstat
+#define QT_OPEN ::open
+#define QT_TRUNCATE ::truncate
+#define QT_FTRUNCATE ::ftruncate
+#define QT_LSEEK ::lseek
+#endif
+
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_FOPEN ::fopen64
+#define QT_FSEEK ::fseeko64
+#define QT_FTELL ::ftello64
+#define QT_FGETPOS ::fgetpos64
+#define QT_FSETPOS ::fsetpos64
+#define QT_FPOS_T fpos64_t
+#define QT_OFF_T off64_t
+#else
+#define QT_FOPEN ::fopen
+#define QT_FSEEK ::fseek
+#define QT_FTELL ::ftell
+#define QT_FGETPOS ::fgetpos
+#define QT_FSETPOS ::fsetpos
+#define QT_FPOS_T fpos_t
+#define QT_OFF_T long
+#endif
+
+#define QT_STAT_REG S_IFREG
+#define QT_STAT_DIR S_IFDIR
+#define QT_STAT_MASK S_IFMT
+#define QT_STAT_LNK S_IFLNK
+#define QT_SOCKET_CONNECT ::connect
+#define QT_SOCKET_BIND ::bind
+#define QT_FILENO fileno
+#define QT_CLOSE ::close
+#define QT_READ ::read
+#define QT_WRITE ::write
+#define QT_ACCESS ::access
+#define QT_GETCWD ::getcwd
+#define QT_CHDIR ::chdir
+#define QT_MKDIR ::mkdir
+#define QT_RMDIR ::rmdir
+#define QT_OPEN_LARGEFILE O_LARGEFILE
+#define QT_OPEN_RDONLY O_RDONLY
+#define QT_OPEN_WRONLY O_WRONLY
+#define QT_OPEN_RDWR O_RDWR
+#define QT_OPEN_CREAT O_CREAT
+#define QT_OPEN_TRUNC O_TRUNC
+#define QT_OPEN_APPEND O_APPEND
+
+#define QT_SIGNAL_RETTYPE void
+#define QT_SIGNAL_ARGS int
+#define QT_SIGNAL_IGNORE SIG_IGN
+
+#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+#define QT_SOCKLEN_T socklen_t
+#else
+#define QT_SOCKLEN_T int
+#endif
+
+#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+#define QT_SNPRINTF ::snprintf
+#define QT_VSNPRINTF ::vsnprintf
+#endif
+
+
+#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/symbian/linux-armcc/features/default_post.prf b/mkspecs/symbian-armcc/features/default_post.prf
index 7aa1f4d2b3..7aa1f4d2b3 100644
--- a/mkspecs/symbian/linux-armcc/features/default_post.prf
+++ b/mkspecs/symbian-armcc/features/default_post.prf
diff --git a/mkspecs/symbian-armcc/qmake.conf b/mkspecs/symbian-armcc/qmake.conf
new file mode 100644
index 0000000000..be6af391fb
--- /dev/null
+++ b/mkspecs/symbian-armcc/qmake.conf
@@ -0,0 +1,62 @@
+#
+# qmake configuration for symbian-armcc
+#
+
+include(../common/symbian/symbian-makefile.conf)
+
+include(../common/armcc.conf)
+
+QMAKE_RVCT_LINKSTYLE = 1
+
+# notice that the middle part of the following set of vars matches the TARGET content of the libs
+
+#QMAKE_qtmain_CXXFLAGS = --arm
+#QMAKE_QtCore_CXXFLAGS =
+QMAKE_QtGui_LFLAGS = "--rw-base 0x800000"
+#QMAKE_QtDBus_CXXFLAGS =
+#QMAKE_QtDeclarative_CXXFLAGS =
+#QMAKE_QtMultimedia_CXXFLAGS =
+#QMAKE_QtNetwork_CXXFLAGS =
+#QMAKE_QtOpenGL_CXXFLAGS =
+#QMAKE_QtOpenVG_CXXFLAGS =
+#QMAKE_phonon_CXXFLAGS =
+#QMAKE_QtScript_CXXFLAGS =
+#QMAKE_QtScriptTools_CXXFLAGS =
+#QMAKE_QtSql_CXXFLAGS =
+#QMAKE_QtSvg_CXXFLAGS =
+#QMAKE_QtTest_CXXFLAGS =
+#QMAKE_QtXmlPatterns_CXXFLAGS =
+#QMAKE_QtXml_CXXFLAGS =
+QMAKE_QtWebKit_CXXFLAGS = --arm
+# Move RW-section base address to start from 0xE00000 instead of the toolchain default 0x400000.
+QMAKE_QtWebKit_LFLAGS = --rw-base 0xE00000
+
+QMAKE_CFLAGS += --dllimport_runtime --diag_suppress 186,611,654,1300 --thumb --fpu softvfp --cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --no_vfe --apcs /inter
+QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
+QMAKE_LFLAGS += --symver_soname --diag_suppress 6331,6780 --bpabi --reloc --datacompressor=off --split --dll --no_scanlib
+QMAKE_LFLAGS_APP += --entry _E32Startup
+QMAKE_LFLAGS_SHLIB += --entry _E32Dll
+QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
+
+DEFINES += EKA2 \
+ __ARMCC__ \
+ __ARMcc_2__ \
+ __ARMCC_2_2__
+
+QMAKE_LIBDIR += $${EPOCROOT}epoc32/release/armv5/lib
+QMAKE_LIBDIR *= $$(RVCT22LIB)
+
+INCLUDEPATH = $${EPOCROOT}epoc32/include \
+ $${EPOCROOT}epoc32/include/variant \
+ $${EPOCROOT}epoc32/include/stdapis \
+ $$INCLUDEPATH
+
+exists($${EPOCROOT}epoc32/include/rvct2_2) {
+ INCLUDEPATH += $${EPOCROOT}epoc32/include/rvct2_2
+ QMAKE_CFLAGS += --preinclude rvct2_2.h
+ QMAKE_CXXFLAGS += --preinclude rvct2_2.h
+} else {
+ INCLUDEPATH += $${EPOCROOT}epoc32/include/rvct
+ QMAKE_CFLAGS += --preinclude rvct.h
+ QMAKE_CXXFLAGS += --preinclude rvct.h
+}
diff --git a/mkspecs/symbian-armcc/qplatformdefs.h b/mkspecs/symbian-armcc/qplatformdefs.h
new file mode 100644
index 0000000000..6f084d3483
--- /dev/null
+++ b/mkspecs/symbian-armcc/qplatformdefs.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** 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 mkspecs 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 "../common/symbian/qplatformdefs.h"
diff --git a/mkspecs/symbian/linux-gcce/features/default_post.prf b/mkspecs/symbian-gcce/features/default_post.prf
index 7aa1f4d2b3..7aa1f4d2b3 100644
--- a/mkspecs/symbian/linux-gcce/features/default_post.prf
+++ b/mkspecs/symbian-gcce/features/default_post.prf
diff --git a/mkspecs/symbian-gcce/qmake.conf b/mkspecs/symbian-gcce/qmake.conf
new file mode 100644
index 0000000000..a31e6e44c5
--- /dev/null
+++ b/mkspecs/symbian-gcce/qmake.conf
@@ -0,0 +1,93 @@
+#
+# qmake configuration for symbian-gcce
+#
+
+include(../common/symbian/symbian-makefile.conf)
+
+include(../common/g++-unix.conf)
+include(../common/gcc-base-unix.conf)
+
+QMAKE_CC = arm-none-symbianelf-gcc
+QMAKE_CXX = arm-none-symbianelf-g++
+QMAKE_LINK = arm-none-symbianelf-ld
+QMAKE_LINK_SHLIB = arm-none-symbianelf-ld
+QMAKE_LINK_C = arm-none-symbianelf-ld
+QMAKE_LINK_C_SHLIB = arm-none-symbianelf-ld
+QMAKE_AR = arm-none-symbianelf-ar cqs
+
+# gcce defaults to 'arm' instruction set. Lets use the better 'thumb' if possible
+# notice that the middle part of the following set of vars matches the TARGET content of the libs
+
+QMAKE_qtmain_CXXFLAGS = -mthumb
+QMAKE_QtCore_CXXFLAGS = -mthumb
+QMAKE_QtGui_LFLAGS = -Ttext 0x8000 -Tdata 0xE00000
+QMAKE_QtDBus_CXXFLAGS = -mthumb
+QMAKE_QtDeclarative_CXXFLAGS = -mthumb
+QMAKE_QtMultimedia_CXXFLAGS = -mthumb
+QMAKE_QtNetwork_CXXFLAGS = -mthumb
+QMAKE_QtOpenGL_CXXFLAGS = -mthumb
+QMAKE_QtOpenVG_CXXFLAGS = -mthumb
+QMAKE_phonon_CXXFLAGS = -mthumb
+QMAKE_QtScript_CXXFLAGS = -mthumb
+QMAKE_QtScriptTools_CXXFLAGS = -mthumb
+QMAKE_QtSql_CXXFLAGS = -mthumb
+QMAKE_QtSvg_CXXFLAGS = -mthumb
+QMAKE_QtTest_CXXFLAGS = -mthumb
+QMAKE_QtXmlPatterns_CXXFLAGS = -mthumb
+QMAKE_QtXml_CXXFLAGS = -mthumb
+#TODO fails with; arm-none-symbianelf-ld: section .data loaded at [00e00000,00e05973] overlaps section .text loaded at [00008000,00fe748b]
+QMAKE_QtWebKit_LFLAGS = -Ttext 0x8000 -Tdata 0xE00000
+
+# never use -fPIC, gcce-linker doesn't like it.
+# g++ conf above adds it if the host platform is 64 bit, so we remove it again
+QMAKE_CFLAGS_SHLIB -= -fPIC
+QMAKE_CFLAGS_STATIC_LIB -= -fPIC
+QMAKE_CXXFLAGS_SHLIB -= -fPIC
+QMAKE_CXXFLAGS_STATIC_LIB -= -fPIC
+
+QMAKE_LFLAGS_SONAME =
+#QMAKE_LFLAGS_THREAD +=
+#QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
+QMAKE_LFLAGS_RPATH = --rpath=
+
+DEFINES += __GCCE__ \
+ UNICODE
+
+QMAKE_LFLAGS_APP += --entry=_E32Startup -u _E32Startup
+QMAKE_LFLAGS_SHLIB += -shared --default-symver --entry _E32Dll
+QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
+
+gcceExtraFlags = --include=$${EPOCROOT}epoc32/include/gcce/gcce.h -march=armv5t -mapcs -mthumb-interwork -nostdinc -c -msoft-float -T script
+QMAKE_CFLAGS += $${gcceExtraFlags}
+QMAKE_CXXFLAGS += $${gcceExtraFlags} -x c++ -fexceptions -fno-unit-at-a-time -fvisibility-inlines-hidden
+#If we are not going to link to Qt or qtmain.lib, we need to include this at least once.
+isEmpty(QT):contains(TEMPLATE, app) {
+ QMAKE_CXXFLAGS += --include=$${EPOCROOT}epoc32/include/stdapis/staticlibinit_gcce.h
+}
+
+QMAKE_LFLAGS += --target1-abs \
+ --no-undefined \
+ --nostdlib
+
+QMAKE_LIBDIR += $${EPOCROOT}epoc32/release/armv5/udeb/
+
+# g++ knows the path to the gcc-shipped-libs, ld doesn't. So cache the full path in the generate Makefile
+QMAKE_GCC_SEARCH_DIRS =$$system($$QMAKE_CXX -print-search-dirs)
+for(line, QMAKE_GCC_SEARCH_DIRS) {
+ contains(line, "libraries:") {
+ foundIt="1"
+ } else {
+ contains(foundIt, "1") {
+ QMAKE_LFLAGS += $$replace(line, "[=:]", " -L")
+ }
+ }
+}
+
+QMAKE_LIBDIR += $${EPOCROOT}epoc32/release/armv5/lib
+
+INCLUDEPATH = $${EPOCROOT}epoc32/include/ \
+ $${EPOCROOT}epoc32/include/variant \
+ $${EPOCROOT}epoc32/include/stdapis \
+ $${EPOCROOT}epoc32/include/gcce \
+ $$INCLUDEPATH
+
diff --git a/mkspecs/symbian-gcce/qplatformdefs.h b/mkspecs/symbian-gcce/qplatformdefs.h
new file mode 100644
index 0000000000..8549347e2e
--- /dev/null
+++ b/mkspecs/symbian-gcce/qplatformdefs.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+**
+** 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 mkspecs 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 "../common/symbian/qplatformdefs.h"
+
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm b/mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm
index 3877edb28e..a557cbbaf1 100644
--- a/mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm
@@ -21,7 +21,7 @@ CLEAN_TARGET:=$(1)
$(1): $(2)
$(call startrule,qmake_emulator_deployment) \
- $(GNUCP) --no-preserve=mode $(2) "$$@" && \
+ $(GNUCP) --remove-destination --no-preserve=mode $(2) "$$@" && \
$(GNUCHMOD) a+rw "$$@" \
$(call endrule,qmake_emulator_deployment)
endef
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/symbian/linux-armcc/qmake.conf b/mkspecs/symbian/linux-armcc/qmake.conf
deleted file mode 100644
index f058421e51..0000000000
--- a/mkspecs/symbian/linux-armcc/qmake.conf
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# qmake configuration for symbian/linux-armcc
-#
-
-include(../../common/symbian/symbian-makefile.conf)
-
-include(../../common/armcc.conf)
-
-QMAKE_RVCT_LINKSTYLE = 1
-
-# notice that the middle part of the following set of vars matches the TARGET content of the libs
-
-#QMAKE_qtmain_CXXFLAGS = --arm
-#QMAKE_QtCore_CXXFLAGS =
-QMAKE_QtGui_LFLAGS = "--rw-base 0x800000"
-#QMAKE_QtDBus_CXXFLAGS =
-#QMAKE_QtDeclarative_CXXFLAGS =
-#QMAKE_QtMultimedia_CXXFLAGS =
-#QMAKE_QtNetwork_CXXFLAGS =
-#QMAKE_QtOpenGL_CXXFLAGS =
-#QMAKE_QtOpenVG_CXXFLAGS =
-#QMAKE_phonon_CXXFLAGS =
-#QMAKE_QtScript_CXXFLAGS =
-#QMAKE_QtScriptTools_CXXFLAGS =
-#QMAKE_QtSql_CXXFLAGS =
-#QMAKE_QtSvg_CXXFLAGS =
-#QMAKE_QtTest_CXXFLAGS =
-#QMAKE_QtXmlPatterns_CXXFLAGS =
-#QMAKE_QtXml_CXXFLAGS =
-QMAKE_QtWebKit_CXXFLAGS = --arm
-# Move RW-section base address to start from 0xE00000 instead of the toolchain default 0x400000.
-QMAKE_QtWebKit_LFLAGS = --rw-base 0xE00000
-
-QMAKE_CFLAGS += --dllimport_runtime --diag_suppress 186,611,654,1300 --thumb --fpu softvfp --cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --no_vfe --apcs /inter
-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
-QMAKE_LFLAGS += --symver_soname --diag_suppress 6331,6780 --bpabi --reloc --datacompressor=off --split --dll --no_scanlib
-QMAKE_LFLAGS_APP += --entry _E32Startup
-QMAKE_LFLAGS_SHLIB += --entry _E32Dll
-QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
-
-DEFINES += EKA2 \
- __ARMCC__ \
- __ARMcc_2__ \
- __ARMCC_2_2__
-
-QMAKE_LIBDIR += $${EPOCROOT}epoc32/release/armv5/lib
-QMAKE_LIBDIR *= $$(RVCT22LIB)
-
-INCLUDEPATH = $${EPOCROOT}epoc32/include \
- $${EPOCROOT}epoc32/include/variant \
- $${EPOCROOT}epoc32/include/stdapis \
- $$INCLUDEPATH
-
-exists($${EPOCROOT}epoc32/include/rvct2_2) {
- INCLUDEPATH += $${EPOCROOT}epoc32/include/rvct2_2
- QMAKE_CFLAGS += --preinclude rvct2_2.h
- QMAKE_CXXFLAGS += --preinclude rvct2_2.h
-} else {
- INCLUDEPATH += $${EPOCROOT}epoc32/include/rvct
- QMAKE_CFLAGS += --preinclude rvct.h
- QMAKE_CXXFLAGS += --preinclude rvct.h
-}
diff --git a/mkspecs/symbian/linux-armcc/qplatformdefs.h b/mkspecs/symbian/linux-armcc/qplatformdefs.h
deleted file mode 100644
index 3b7d023873..0000000000
--- a/mkspecs/symbian/linux-armcc/qplatformdefs.h
+++ /dev/null
@@ -1,42 +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 mkspecs 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 "../../common/symbian/qplatformdefs.h"
diff --git a/mkspecs/symbian/linux-gcce/qmake.conf b/mkspecs/symbian/linux-gcce/qmake.conf
deleted file mode 100644
index faac2f12f1..0000000000
--- a/mkspecs/symbian/linux-gcce/qmake.conf
+++ /dev/null
@@ -1,95 +0,0 @@
-#
-# qmake configuration for symbian/linux-gcce
-#
-
-include(../../common/symbian/symbian-makefile.conf)
-
-include(../../common/g++.conf)
-
-QMAKE_CC = arm-none-symbianelf-gcc
-QMAKE_CXX = arm-none-symbianelf-g++
-QMAKE_LINK = arm-none-symbianelf-ld
-QMAKE_LINK_SHLIB = arm-none-symbianelf-ld
-QMAKE_LINK_C = arm-none-symbianelf-ld
-QMAKE_LINK_C_SHLIB = arm-none-symbianelf-ld
-QMAKE_AR = arm-none-symbianelf-ar cqs
-
-# gcce defaults to 'arm' instruction set. Lets use the better 'thumb' if possible
-# notice that the middle part of the following set of vars matches the TARGET content of the libs
-
-QMAKE_qtmain_CXXFLAGS = -mthumb
-QMAKE_QtCore_CXXFLAGS = -mthumb
-QMAKE_QtGui_LFLAGS = -Ttext 0x8000 -Tdata 0xE00000
-QMAKE_QtDBus_CXXFLAGS = -mthumb
-QMAKE_QtDeclarative_CXXFLAGS = -mthumb
-QMAKE_QtMultimedia_CXXFLAGS = -mthumb
-QMAKE_QtNetwork_CXXFLAGS = -mthumb
-QMAKE_QtOpenGL_CXXFLAGS = -mthumb
-QMAKE_QtOpenVG_CXXFLAGS = -mthumb
-QMAKE_phonon_CXXFLAGS = -mthumb
-QMAKE_QtScript_CXXFLAGS = -mthumb
-QMAKE_QtScriptTools_CXXFLAGS = -mthumb
-QMAKE_QtSql_CXXFLAGS = -mthumb
-QMAKE_QtSvg_CXXFLAGS = -mthumb
-QMAKE_QtTest_CXXFLAGS = -mthumb
-QMAKE_QtXmlPatterns_CXXFLAGS = -mthumb
-QMAKE_QtXml_CXXFLAGS = -mthumb
-#TODO fails with; arm-none-symbianelf-ld: section .data loaded at [00e00000,00e05973] overlaps section .text loaded at [00008000,00fe748b]
-QMAKE_QtWebKit_LFLAGS = -Ttext 0x8000 -Tdata 0xE00000
-
-# never use -fPIC, gcce-linker doesn't like it.
-# g++ conf above adds it if the host platform is 64 bit, so we remove it again
-QMAKE_CFLAGS_SHLIB -= -fPIC
-QMAKE_CFLAGS_STATIC_LIB -= -fPIC
-QMAKE_CXXFLAGS_SHLIB -= -fPIC
-QMAKE_CXXFLAGS_STATIC_LIB -= -fPIC
-
-QMAKE_LFLAGS_SONAME =
-#QMAKE_LFLAGS_THREAD +=
-#QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
-QMAKE_LFLAGS_RPATH = --rpath=
-
-DEFINES += __GCCE__ \
- UNICODE \
- _STLP_NO_EXCEPTION_HEADER
-
-QMAKE_LFLAGS_APP += --entry=_E32Startup -u _E32Startup
-QMAKE_LFLAGS_SHLIB += --default-symver --entry _E32Dll
-QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
-
-gcceExtraFlags = --include=${EPOCROOT}/epoc32/include/gcce/gcce.h -march=armv5t -mapcs -mthumb-interwork -nostdinc -c -msoft-float -T script
-QMAKE_CFLAGS += $${gcceExtraFlags}
-QMAKE_CXXFLAGS += $${gcceExtraFlags} -x c++ -fexceptions -fno-unit-at-a-time -fvisibility-inlines-hidden
-#If we are not going to link to Qt or qtmain.lib, we need to include this at least once.
-isEmpty(QT):contains(TEMPLATE, app) {
- QMAKE_CXXFLAGS += --include=${EPOCROOT}/epoc32/include/stdapis/staticlibinit_gcce.h
-}
-
-QMAKE_LFLAGS += --target1-abs \
- --no-undefined \
- --nostdlib
-
-QMAKE_LIBDIR += ${EPOCROOT}/epoc32/release/armv5/udeb/
-
-# g++ knows the path to the gcc-shipped-libs, ld doesn't. So cache the full path in the generate Makefile
-QMAKE_GCC_SEARCH_DIRS =$$system($$QMAKE_CXX -print-search-dirs)
-for(line, QMAKE_GCC_SEARCH_DIRS) {
- contains(line, "libraries:") {
- foundIt="1"
- } else {
- contains(foundIt, "1") {
- QMAKE_LFLAGS += $$replace(line, "[=:]", " -L")
- }
- }
-}
-
-QMAKE_LIBDIR += $${EPOCROOT}/epoc32/release/armv5/lib
-
-INCLUDEPATH = ${EPOCROOT}/epoc32/include/ \
- $${EPOCROOT}/epoc32/include/variant \
- $${EPOCROOT}/epoc32/include/stdapis \
- $${EPOCROOT}/epoc32/include/gcce \
- ${EPOCROOT}/epoc32/include/stdapis/sys \
- ${EPOCROOT}/epoc32/include/stdapis/stlport \
- $$INCLUDEPATH
-
diff --git a/mkspecs/symbian/linux-gcce/qplatformdefs.h b/mkspecs/symbian/linux-gcce/qplatformdefs.h
deleted file mode 100644
index fcbd9ea33d..0000000000
--- a/mkspecs/symbian/linux-gcce/qplatformdefs.h
+++ /dev/null
@@ -1,43 +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 mkspecs 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 "../../common/symbian/qplatformdefs.h"
-
diff --git a/mkspecs/unsupported/linux-clang/qmake.conf b/mkspecs/unsupported/linux-clang/qmake.conf
new file mode 100644
index 0000000000..6b63b7a06e
--- /dev/null
+++ b/mkspecs/unsupported/linux-clang/qmake.conf
@@ -0,0 +1,19 @@
+#
+# qmake configuration for linux-clang
+#
+
+MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
+TEMPLATE = app
+CONFIG += qt warn_on release incremental link_prl
+QT += core gui
+
+QMAKE_INCREMENTAL_STYLE = sublib
+
+include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/clang.conf)
+
+QMAKE_LFLAGS += -ccc-gcc-name g++
+
+load(qt_config)
diff --git a/mkspecs/unsupported/linux-clang/qplatformdefs.h b/mkspecs/unsupported/linux-clang/qplatformdefs.h
new file mode 100644
index 0000000000..2dd7b8017a
--- /dev/null
+++ b/mkspecs/unsupported/linux-clang/qplatformdefs.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake spec of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+// Get Qt defines/settings
+
+#include "qglobal.h"
+
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
+
+// 1) need to reset default environment if _BSD_SOURCE is defined
+// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0
+// 3) it seems older glibc need this to include the X/Open stuff
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
+
+#include <unistd.h>
+
+
+// We are hot - unistd.h should have turned on the specific APIs we requested
+
+#include <features.h>
+#include <pthread.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+#include <signal.h>
+#include <dlfcn.h>
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/ipc.h>
+#include <sys/time.h>
+#include <sys/shm.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#ifndef QT_NO_IPV6IFNAME
+#include <net/if.h>
+#endif
+
+#define QT_USE_XOPEN_LFS_EXTENSIONS
+#include "../../common/posix/qplatformdefs.h"
+
+#undef QT_SOCKLEN_T
+
+#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+#define QT_SOCKLEN_T socklen_t
+#else
+#define QT_SOCKLEN_T int
+#endif
+
+#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+#define QT_SNPRINTF ::snprintf
+#define QT_VSNPRINTF ::vsnprintf
+#endif
+
+
+#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf b/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf
index 28e7754066..c362634adc 100644
--- a/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf
+++ b/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf
@@ -18,8 +18,9 @@ CONFIG += qt warn_on release incremental link_prl
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
-include(../../common/g++.conf)
include(../../common/linux.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = sb2 gcc
diff --git a/mkspecs/unsupported/macx-clang/Info.plist.app b/mkspecs/unsupported/macx-clang/Info.plist.app
new file mode 100644
index 0000000000..393b615475
--- /dev/null
+++ b/mkspecs/unsupported/macx-clang/Info.plist.app
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>CFBundleIconFile</key>
+ <string>@ICON@</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleGetInfoString</key>
+ <string>Created by Qt/QMake</string>
+ <key>CFBundleSignature</key>
+ <string>@TYPEINFO@</string>
+ <key>CFBundleExecutable</key>
+ <string>@EXECUTABLE@</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.yourcompany.@EXECUTABLE@</string>
+ <key>NOTE</key>
+ <string>This file was generated by Qt/QMake.</string>
+</dict>
+</plist>
diff --git a/mkspecs/unsupported/macx-clang/Info.plist.lib b/mkspecs/unsupported/macx-clang/Info.plist.lib
new file mode 100644
index 0000000000..97609ed0ce
--- /dev/null
+++ b/mkspecs/unsupported/macx-clang/Info.plist.lib
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>CFBundlePackageType</key>
+ <string>FMWK</string>
+ <key>CFBundleShortVersionString</key>
+ <string>@SHORT_VERSION@</string>
+ <key>CFBundleGetInfoString</key>
+ <string>Created by Qt/QMake</string>
+ <key>CFBundleSignature</key>
+ <string>@TYPEINFO@</string>
+ <key>CFBundleExecutable</key>
+ <string>@LIBRARY@</string>
+ <key>NOTE</key>
+ <string>Please, do NOT change this file -- It was generated by Qt/QMake.</string>
+</dict>
+</plist>
diff --git a/mkspecs/unsupported/macx-clang/qmake.conf b/mkspecs/unsupported/macx-clang/qmake.conf
new file mode 100644
index 0000000000..319134421a
--- /dev/null
+++ b/mkspecs/unsupported/macx-clang/qmake.conf
@@ -0,0 +1,21 @@
+#
+# qmake configuration for Clang on OS X
+#
+
+MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = macx
+TEMPLATE = app
+CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib_version_first plugin_no_soname link_prl
+QT += core gui
+QMAKE_INCREMENTAL_STYLE = sublib
+
+include(../../common/mac.conf)
+include(../../common/gcc-base-macx.conf)
+include(../../common/clang.conf)
+
+QMAKE_OBJCFLAGS_PRECOMPILE = -x objective-c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+QMAKE_OBJCXXFLAGS_PRECOMPILE = -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+
+load(qt_config)
diff --git a/mkspecs/unsupported/macx-clang/qplatformdefs.h b/mkspecs/unsupported/macx-clang/qplatformdefs.h
new file mode 100644
index 0000000000..72f3ac719d
--- /dev/null
+++ b/mkspecs/unsupported/macx-clang/qplatformdefs.h
@@ -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 qmake spec of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+// Get Qt defines/settings
+
+#include "qglobal.h"
+
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
+
+#include <unistd.h>
+
+
+// We are hot - unistd.h should have turned on the specific APIs we requested
+
+
+#include <pthread.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+#include <signal.h>
+#define QT_NO_LIBRARY_UNLOAD
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/ipc.h>
+#include <sys/time.h>
+#include <sys/shm.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#ifndef QT_NO_IPV6IFNAME
+#include <net/if.h>
+#endif
+
+#include "../../common/posix/qplatformdefs.h"
+
+#undef QT_OPEN_LARGEFILE
+#undef QT_SOCKLEN_T
+#undef QT_SIGNAL_IGNORE
+
+#define QT_OPEN_LARGEFILE 0
+
+#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
+#define QT_SOCKLEN_T socklen_t
+#else
+#define QT_SOCKLEN_T int
+#endif
+
+#define QT_SIGNAL_IGNORE (void (*)(int))1
+
+#define QT_SNPRINTF ::snprintf
+#define QT_VSNPRINTF ::vsnprintf
+
+#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/unsupported/qnx-g++/qmake.conf b/mkspecs/unsupported/qnx-g++/qmake.conf
index dfe9bed49f..83c4a26e06 100644
--- a/mkspecs/unsupported/qnx-g++/qmake.conf
+++ b/mkspecs/unsupported/qnx-g++/qmake.conf
@@ -10,7 +10,8 @@ TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
-include(../common/g++.conf)
+include(../common/gcc-base-unix.conf)
+include(../common/g++-unix.conf)
include(../common/unix.conf)
QMAKE_CFLAGS_THREAD = -D_REENTRANT
diff --git a/mkspecs/unsupported/qws/linux-x86-openkode-g++/qmake.conf b/mkspecs/unsupported/qws/linux-x86-openkode-g++/qmake.conf
new file mode 100644
index 0000000000..b891c5ea38
--- /dev/null
+++ b/mkspecs/unsupported/qws/linux-x86-openkode-g++/qmake.conf
@@ -0,0 +1,23 @@
+#
+# qmake configuration for building with linux-g++
+#
+
+include(../../../common/gcc-base-unix.conf)
+include(../../../common/g++-unix.conf)
+include(../../../common/linux.conf)
+include(../../../common/qws.conf)
+
+load(qt_config)
+
+# ### HACK - This should be a configure check
+OPENKODE_DIR = $(OPENKODE_DIR)
+
+QMAKE_INCDIR_OPENGL_ES2 = $${OPENKODE_DIR}/include
+QMAKE_LIBDIR_OPENGL_ES2 = $${OPENKODE_DIR}/lib-target
+QMAKE_LIBS_OPENGL_ES2 = $${QMAKE_RPATH}/$${OPENKODE_DIR}/lib-target -lGLESv2_CM
+
+QMAKE_INCDIR_EGL = $$QMAKE_INCDIR_OPENGL_ES2
+QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2
+QMAKE_LIBS_EGL = $${QMAKE_RPATH}/$${OPENKODE_DIR}/lib-target -lEGL
+
+QMAKE_LIBS += $${QMAKE_RPATH}/$${OPENKODE_DIR}/lib-target
diff --git a/mkspecs/unsupported/qws/linux-x86-openkode-g++/qplatformdefs.h b/mkspecs/unsupported/qws/linux-x86-openkode-g++/qplatformdefs.h
new file mode 100644
index 0000000000..86d84e8386
--- /dev/null
+++ b/mkspecs/unsupported/qws/linux-x86-openkode-g++/qplatformdefs.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the qmake spec of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "../../../linux-g++/qplatformdefs.h"
diff --git a/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf b/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf
index 26de9b75d7..bb760b24a7 100644
--- a/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf
+++ b/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf
@@ -61,7 +61,6 @@ QMAKE_PCH_OUTPUT_EXT = .gch
QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
-#include(../../common/g++.conf)
include(../../common/unix.conf)
QMAKE_CFLAGS_THREAD = -D_REENTRANT
diff --git a/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf b/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf
index 80b5f3e088..7a77c817f3 100644
--- a/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf
+++ b/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf
@@ -14,7 +14,8 @@ VXWORKS_ARCH = ppc
VXWORKS_CPU = PPC32
VXWORKS_ARCH_MUNCH = ppc
-include(../../common/g++.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/linux.conf)
QMAKE_CC = cc$$VXWORKS_ARCH_MUNCH
diff --git a/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf b/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf
index 83f46c052a..2a96a1ad72 100644
--- a/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf
+++ b/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf
@@ -14,7 +14,8 @@ VXWORKS_ARCH = simlinux
VXWORKS_CPU = SIMLINUX
VXWORKS_ARCH_MUNCH = pentium
-include(../../common/g++.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
include(../../common/linux.conf)
QMAKE_CC = cc$$VXWORKS_ARCH_MUNCH
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/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp
index aa55f5119d..c659adbb30 100644
--- a/qmake/generators/mac/pbuilder_pbx.cpp
+++ b/qmake/generators/mac/pbuilder_pbx.cpp
@@ -167,6 +167,7 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
}
if(tmp_proj.read(fn)) {
if(Option::debug_level) {
+ debug_msg(1, "Dumping all variables:");
QMap<QString, QStringList> &vars = tmp_proj.variables();
for(QMap<QString, QStringList>::Iterator it = vars.begin();
it != vars.end(); ++it) {
diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp
index e98831dd34..df055509e3 100644
--- a/qmake/generators/metamakefile.cpp
+++ b/qmake/generators/metamakefile.cpp
@@ -217,6 +217,7 @@ BuildsMetaMakefileGenerator::write(const QString &oldpwd)
// debugging
if(Option::debug_level) {
+ debug_msg(1, "Dumping all variables:");
QMap<QString, QStringList> &vars = project->variables();
for(QMap<QString, QStringList>::Iterator it = vars.begin(); it != vars.end(); ++it) {
if(!it.key().startsWith(".") && !it.value().isEmpty())
diff --git a/qmake/generators/symbian/initprojectdeploy_symbian.cpp b/qmake/generators/symbian/initprojectdeploy_symbian.cpp
index 5a6f66f3d6..eb45b10487 100644
--- a/qmake/generators/symbian/initprojectdeploy_symbian.cpp
+++ b/qmake/generators/symbian/initprojectdeploy_symbian.cpp
@@ -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)
@@ -250,7 +255,8 @@ void initProjectDeploySymbian(QMakeProject* project,
QStringList flags = project->values(item + ".flags");
- foreach(QString source, project->values(item + ".sources")) {
+ // ### Qt 5: remove .sources, inconsistent with INSTALLS
+ foreach(QString source, project->values(item + ".sources") + project->values(item + ".files")) {
source = Option::fixPathToLocalOS(source);
QString nameFilter;
QFileInfo info(source);
diff --git a/qmake/generators/symbian/symbian_makefile.h b/qmake/generators/symbian/symbian_makefile.h
index 94f01453c7..63cede2763 100644
--- a/qmake/generators/symbian/symbian_makefile.h
+++ b/qmake/generators/symbian/symbian_makefile.h
@@ -72,7 +72,9 @@ public:
} else {
const QStringList deployments = this->project->values("DEPLOYMENT");
for (int i = 0; i < deployments.count(); ++i) {
- if (!this->project->values(deployments.at(i) + ".sources").isEmpty()) {
+ // ### Qt 5: remove .sources, inconsistent with INSTALLS
+ if (!this->project->values(deployments.at(i) + ".sources").isEmpty() ||
+ !this->project->values(deployments.at(i) + ".files").isEmpty()) {
generatePkg = true;
break;
}
diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp
index 0938b58972..9d4f27e124 100644
--- a/qmake/generators/symbian/symbiancommon.cpp
+++ b/qmake/generators/symbian/symbiancommon.cpp
@@ -699,7 +699,7 @@ void SymbianCommonGenerator::readRssRules(QString &numberOfIcons,
newValues << itemList.join("\n");
}
}
- // Verify thet there is exactly one value in RSS_TAG_NBROFICONS
+ // Verify that there is exactly one value in RSS_TAG_NBROFICONS
if (newKey == RSS_TAG_NBROFICONS) {
if (newValues.count() == 1) {
numberOfIcons = newValues[0];
@@ -708,7 +708,7 @@ void SymbianCommonGenerator::readRssRules(QString &numberOfIcons,
RSS_RULES_BASE, RSS_TAG_NBROFICONS);
continue;
}
- // Verify thet there is exactly one value in RSS_TAG_ICONFILE
+ // Verify that there is exactly one value in RSS_TAG_ICONFILE
} else if (newKey == RSS_TAG_ICONFILE) {
if (newValues.count() == 1) {
iconFile = newValues[0];
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
index 09a3fc8ed8..0d63cdfff6 100644
--- a/qmake/generators/symbian/symmake.cpp
+++ b/qmake/generators/symbian/symmake.cpp
@@ -197,7 +197,9 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t)
generatePkg = true;
} else {
foreach(QString item, project->values("DEPLOYMENT")) {
- if (!project->values(item + ".sources").isEmpty()) {
+ // ### Qt 5: remove .sources, inconsistent with INSTALLS
+ if (!project->values(item + ".sources").isEmpty() ||
+ !project->values(item + ".files").isEmpty()) {
generatePkg = true;
break;
}
diff --git a/qmake/generators/symbian/symmake_abld.cpp b/qmake/generators/symbian/symmake_abld.cpp
index 7416cbe64e..f8951098a1 100644
--- a/qmake/generators/symbian/symmake_abld.cpp
+++ b/qmake/generators/symbian/symmake_abld.cpp
@@ -205,8 +205,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;
@@ -427,7 +430,8 @@ bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t, bool i
t << WINSCW_DEPLOYMENT_TARGET ":" << endl;
QString remoteTestPath = epocRoot()
- + QLatin1String(isRom ? "epoc32\\data\\z\\private\\" : "epoc32\\winscw\\c\\private\\")
+ + QDir::toNativeSeparators(QLatin1String(isRom ? "epoc32/data/z/private/"
+ : "epoc32/winscw/c/private/"))
+ privateDirUid;
DeploymentList depList;
@@ -439,11 +443,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 +469,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..d650e083bc 100644
--- a/qmake/generators/symbian/symmake_sbsv2.cpp
+++ b/qmake/generators/symbian/symmake_sbsv2.cpp
@@ -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;
diff --git a/qmake/generators/unix/unixmake.cpp b/qmake/generators/unix/unixmake.cpp
index 71a606174c..43543a1df3 100644
--- a/qmake/generators/unix/unixmake.cpp
+++ b/qmake/generators/unix/unixmake.cpp
@@ -206,6 +206,33 @@ UnixMakefileGenerator::init()
// icc style
pchFlags = pchFlags.replace("${QMAKE_PCH_OUTPUT}",
pchBaseName + project->first("QMAKE_PCH_OUTPUT_EXT"));
+ } else {
+ // gcc style (including clang_pch_style)
+ QString headerPrefix = project->first("QMAKE_PRECOMP_PREFIX");
+ QString headerSuffix;
+ if (project->isActiveConfig("clang_pch_style"))
+ headerSuffix = project->first("QMAKE_PCH_OUTPUT_EXT");
+ else
+ pchBaseName += project->first("QMAKE_PCH_OUTPUT_EXT");
+
+ pchBaseName += Option::dir_sep;
+ QString pchOutputFile;
+
+ if(comps[i] == "C") {
+ pchOutputFile = "c";
+ } else if(comps[i] == "CXX") {
+ pchOutputFile = "c++";
+ } else if(project->isActiveConfig("objective_c")) {
+ if(comps[i] == "OBJC")
+ pchOutputFile = "objective-c";
+ else if(comps[i] == "OBJCXX")
+ pchOutputFile = "objective-c++";
+ }
+
+ if(!pchOutputFile.isEmpty()) {
+ pchFlags = pchFlags.replace("${QMAKE_PCH_OUTPUT}",
+ pchBaseName + pchOutputFile + headerSuffix);
+ }
}
if (!pchFlags.isEmpty())
@@ -379,7 +406,9 @@ QStringList
QString header_prefix;
if(!project->isEmpty("PRECOMPILED_DIR"))
header_prefix = project->first("PRECOMPILED_DIR");
- header_prefix += project->first("QMAKE_ORIG_TARGET") + project->first("QMAKE_PCH_OUTPUT_EXT");
+ header_prefix += project->first("QMAKE_ORIG_TARGET");
+ if (!project->isActiveConfig("clang_pch_style"))
+ header_prefix += project->first("QMAKE_PCH_OUTPUT_EXT");
if (project->isActiveConfig("icc_pch_style")) {
// icc style
for(QStringList::Iterator it = Option::cpp_ext.begin(); it != Option::cpp_ext.end(); ++it) {
@@ -389,23 +418,25 @@ QStringList
}
}
} else {
- // gcc style
+ // gcc style (including clang_pch_style)
+ QString header_suffix = project->isActiveConfig("clang_pch_style")
+ ? project->first("QMAKE_PCH_OUTPUT_EXT") : "";
header_prefix += Option::dir_sep + project->first("QMAKE_PRECOMP_PREFIX");
for(QStringList::Iterator it = Option::c_ext.begin(); it != Option::c_ext.end(); ++it) {
if(file.endsWith(*it)) {
if(!project->isEmpty("QMAKE_CFLAGS_PRECOMPILE")) {
- QString precomp_c_h = header_prefix + "c";
+ QString precomp_c_h = header_prefix + "c" + header_suffix;
if(!ret.contains(precomp_c_h))
ret += precomp_c_h;
}
if(project->isActiveConfig("objective_c")) {
if(!project->isEmpty("QMAKE_OBJCFLAGS_PRECOMPILE")) {
- QString precomp_objc_h = header_prefix + "objective-c";
+ QString precomp_objc_h = header_prefix + "objective-c" + header_suffix;
if(!ret.contains(precomp_objc_h))
ret += precomp_objc_h;
}
if(!project->isEmpty("QMAKE_OBJCXXFLAGS_PRECOMPILE")) {
- QString precomp_objcpp_h = header_prefix + "objective-c++";
+ QString precomp_objcpp_h = header_prefix + "objective-c++" + header_suffix;
if(!ret.contains(precomp_objcpp_h))
ret += precomp_objcpp_h;
}
@@ -416,13 +447,13 @@ QStringList
for(QStringList::Iterator it = Option::cpp_ext.begin(); it != Option::cpp_ext.end(); ++it) {
if(file.endsWith(*it)) {
if(!project->isEmpty("QMAKE_CXXFLAGS_PRECOMPILE")) {
- QString precomp_cpp_h = header_prefix + "c++";
+ QString precomp_cpp_h = header_prefix + "c++" + header_suffix;
if(!ret.contains(precomp_cpp_h))
ret += precomp_cpp_h;
}
if(project->isActiveConfig("objective_c")) {
if(!project->isEmpty("QMAKE_OBJCXXFLAGS_PRECOMPILE")) {
- QString precomp_objcpp_h = header_prefix + "objective-c++";
+ QString precomp_objcpp_h = header_prefix + "objective-c++" + header_suffix;
if(!ret.contains(precomp_objcpp_h))
ret += precomp_objcpp_h;
}
diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp
index d16cd6b317..7c683169dc 100644
--- a/qmake/generators/unix/unixmake2.cpp
+++ b/qmake/generators/unix/unixmake2.cpp
@@ -835,7 +835,9 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
if(!project->isEmpty("PRECOMPILED_DIR"))
precomph_out_dir = project->first("PRECOMPILED_DIR");
- precomph_out_dir += project->first("QMAKE_ORIG_TARGET") + project->first("QMAKE_PCH_OUTPUT_EXT");
+ precomph_out_dir += project->first("QMAKE_ORIG_TARGET");
+ if (!project->isActiveConfig("clang_pch_style"))
+ precomph_out_dir += project->first("QMAKE_PCH_OUTPUT_EXT");
if (project->isActiveConfig("icc_pch_style")) {
// icc style
@@ -849,19 +851,22 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
precomp_files << precomph_out_dir << sourceFile << objectFile;
} else {
- // gcc style
+ // gcc style (including clang_pch_style)
precomph_out_dir += Option::dir_sep;
QString header_prefix = project->first("QMAKE_PRECOMP_PREFIX");
+ QString header_suffix = project->isActiveConfig("clang_pch_style")
+ ? project->first("QMAKE_PCH_OUTPUT_EXT") : "";
+
if(!project->isEmpty("QMAKE_CFLAGS_PRECOMPILE"))
- precomp_files += precomph_out_dir + header_prefix + "c";
+ precomp_files += precomph_out_dir + header_prefix + "c" + header_suffix;
if(!project->isEmpty("QMAKE_CXXFLAGS_PRECOMPILE"))
- precomp_files += precomph_out_dir + header_prefix + "c++";
+ precomp_files += precomph_out_dir + header_prefix + "c++" + header_suffix;
if(project->isActiveConfig("objective_c")) {
if(!project->isEmpty("QMAKE_OBJCFLAGS_PRECOMPILE"))
- precomp_files += precomph_out_dir + header_prefix + "objective-c";
+ precomp_files += precomph_out_dir + header_prefix + "objective-c" + header_suffix;
if(!project->isEmpty("QMAKE_OBJCXXFLAGS_PRECOMPILE"))
- precomp_files += precomph_out_dir + header_prefix + "objective-c++";
+ precomp_files += precomph_out_dir + header_prefix + "objective-c++" + header_suffix;
}
}
t << "-$(DEL_FILE) " << precomp_files.join(" ") << "\n\t";
@@ -930,7 +935,9 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
QString pchOutput;
if(!project->isEmpty("PRECOMPILED_DIR"))
pchOutput = project->first("PRECOMPILED_DIR");
- pchOutput += pchBaseName + project->first("QMAKE_PCH_OUTPUT_EXT");
+ pchOutput += pchBaseName;
+ if (!project->isActiveConfig("clang_pch_style"))
+ pchOutput += project->first("QMAKE_PCH_OUTPUT_EXT");
if (project->isActiveConfig("icc_pch_style")) {
// icc style
@@ -943,9 +950,10 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
pchFlags = pchFlags.replace("${QMAKE_PCH_TEMP_SOURCE}", sourceFile)
.replace("${QMAKE_PCH_TEMP_OBJECT}", objectFile);
} else {
- // gcc style
+ // gcc style (including clang_pch_style)
QString header_prefix = project->first("QMAKE_PRECOMP_PREFIX");
-
+ QString header_suffix = project->isActiveConfig("clang_pch_style")
+ ? project->first("QMAKE_PCH_OUTPUT_EXT") : "";
pchOutput += Option::dir_sep;
QString pchOutputDir = pchOutput, pchOutputFile;
@@ -961,7 +969,7 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
}
if(pchOutputFile.isEmpty())
continue;
- pchOutput += header_prefix + pchOutputFile;
+ pchOutput += header_prefix + pchOutputFile + header_suffix;
t << pchOutput << ": " << pchInput << " " << findDependencies(pchInput).join(" \\\n\t\t")
<< "\n\t" << mkdir_p_asstring(pchOutputDir);
diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp
index d32b8889dd..0678d86bca 100644
--- a/qmake/generators/win32/msvc_nmake.cpp
+++ b/qmake/generators/win32/msvc_nmake.cpp
@@ -215,7 +215,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_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp
index b20d2b7fa5..834e5fdd7d 100644
--- a/qmake/generators/win32/msvc_objectmodel.cpp
+++ b/qmake/generators/win32/msvc_objectmodel.cpp
@@ -2288,7 +2288,7 @@ bool VCFilter::addExtraCompiler(const VCFilterFile &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(' ');
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index 06b726fda3..fbaa6c2876 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -459,6 +459,7 @@ void VcprojGenerator::writeSubDirs(QTextStream &t)
tmp_vcproj.setProjectFile(&tmp_proj);
Option::qmake_mode = old_mode;
if(Option::debug_level) {
+ debug_msg(1, "Dumping all variables:");
QMap<QString, QStringList> &vars = tmp_proj.variables();
for(QMap<QString, QStringList>::Iterator it = vars.begin();
it != vars.end(); ++it) {
@@ -1174,7 +1175,8 @@ void VcprojGenerator::initDeploymentTool()
devicePath = Option::fixPathToLocalOS(QDir::cleanPath(targetPath + QLatin1Char('\\') + devicePath));
}
// foreach d in item.sources
- foreach(QString source, project->values(item + ".sources")) {
+ // ### Qt 5: remove .sources, inconsistent with INSTALLS
+ foreach(QString source, project->values(item + ".sources") + project->values(item + ".files")) {
QString itemDevicePath = devicePath;
source = Option::fixPathToLocalOS(source);
QString nameFilter;
@@ -1551,10 +1553,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 58f21cb90d..ddfe399bc0 100644
--- a/qmake/generators/win32/winmakefile.cpp
+++ b/qmake/generators/win32/winmakefile.cpp
@@ -651,7 +651,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 29d42425ef..5f5745ac04 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -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) {
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..4a618da35b 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
@@ -37,7 +37,7 @@ static HB_Bool isLetter(HB_UChar16 ucs)
FLAG(HB_Letter_Titlecase) |
FLAG(HB_Letter_Modifier) |
FLAG(HB_Letter_Other);
- return FLAG(HB_GetUnicodeCharCategory(ucs)) & test;
+ return (FLAG(HB_GetUnicodeCharCategory(ucs)) & test) != 0;
}
static HB_Bool isMark(HB_UChar16 ucs)
@@ -660,18 +660,18 @@ static const unsigned char indicPosition[0xe00-0x900] = {
None, None, None, None,
None, None, None, None,
- None, None, None, None,
- None, None, None, None,
- None, None, None, None,
+ None, Below, Below, Below,
+ Below, Below, Below, Below,
+ Below, Below, None, Below,
- None, None, None, None,
- Below, None, None, None,
- Below, None, None, None,
+ Below, Below, Below, Below,
+ Below, Below, Below, Below,
+ Below, None, Below, Below,
Below, Below, Below, Post,
Below, None, Below, Below,
- None, None, None, None,
- None, None, None, None,
+ None, Below, Below, Below,
+ Below, Below, None, None,
None, None, Post, Above,
Post, Below, Below, Below,
@@ -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,
@@ -1741,6 +1741,11 @@ static int indic_nextSyllableBoundary(HB_Script script, const HB_UChar16 *s, int
if (state == Halant && uc[pos] == 0x200d /* ZWJ */)
break;
// the control character should be the last char in the item
+ if (state == Consonant && script == HB_Script_Bengali && uc[pos-1] == 0x09B0 && uc[pos] == 0x200d /* ZWJ */)
+ break;
+ if (state == Consonant && script == HB_Script_Kannada && uc[pos-1] == 0x0CB0 && uc[pos] == 0x200d /* ZWJ */)
+ break;
+ // Bengali and Kannada has a special exception for rendering yaphala with ra (to avoid reph) see http://www.unicode.org/faq/indic.html#15
++pos;
goto finish;
case Consonant:
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/harfbuzz/tests/shaping/main.cpp b/src/3rdparty/harfbuzz/tests/shaping/main.cpp
index 28f8e07ea8..73760a89f2 100644
--- a/src/3rdparty/harfbuzz/tests/shaping/main.cpp
+++ b/src/3rdparty/harfbuzz/tests/shaping/main.cpp
@@ -642,6 +642,10 @@ void tst_QScriptEngine::bengali()
{ { 0x9f1, 0x9cd, 0x9ad, 0x0 },
{ 0x191, 0x17d, 0x168, 0x0 } },
+ // Ra ZWJ Halant Ya
+ { { 0x09b0, 0x200d, 0x09cd, 0x09af, 0x0 },
+ { 0x016b, 0x01cf, 0x0 } },
+
{ {0}, {0} }
};
@@ -749,6 +753,13 @@ void tst_QScriptEngine::bengali()
{ { 0x09b0, 0x09cd, 0x09ac, 0x09cd, 0x09ac, 0x0 },
{ 0x013b, 0x00e1, 0x0 } },
+ // Init feature for vowel sign E should only be
+ // applied when it's initial character (QTBUG-13620)
+ { { 0x09a8, 0x09c7, 0x0 },
+ { 0x0232, 0x0086, 0x0 } },
+ { { 0x09a8, 0x09a8, 0x09c7, 0x0 },
+ { 0x0086, 0x009b, 0x0086, 0x0 } },
+
{ {0}, {0} }
};
@@ -847,6 +858,19 @@ void tst_QScriptEngine::oriya()
{ 0x177, 0x0 } },
{ { 0xb28, 0xb4d, 0xb24, 0xb4d, 0xb30, 0xb4d, 0xb2f, 0x0 },
{ 0x176, 0x124, 0x0 } },
+
+ // QTBUG-13542
+ { { 0x0b2c, 0x0b4d, 0x0b21, 0x0 },
+ { 0x0089, 0x00fc, 0x0 } },
+ { { 0x0b36, 0x0b4d, 0x0b2b, 0x0 },
+ { 0x0092, 0x0105, 0x0 } },
+ { { 0x0b36, 0x0b4d, 0x0b1f, 0x0 },
+ { 0x0092, 0x00fa, 0x0 } },
+ { { 0x0b39, 0x0b4d, 0x0b1f, 0x0 },
+ { 0x0095, 0x00fa, 0x0 } },
+ { { 0x0b15, 0x0b4d, 0x0b16, 0x0 },
+ { 0x0073, 0x00f1, 0x0 } },
+
{ {0}, {0} }
};
@@ -1005,6 +1029,11 @@ void tst_QScriptEngine::kannada()
{ 0x0036, 0x00c1, 0x0 } },
{ { 0x0cb0, 0x0ccd, 0x200d, 0x0c95, 0x0 },
{ 0x0050, 0x00a7, 0x0 } },
+
+ // Kaphala
+ { { 0x0cb0, 0x200d, 0x0ccd, 0x0c95, 0x0 },
+ { 0x0050, 0x00a7, 0x0 } },
+
{ {0}, {0} }
};
diff --git a/src/3rdparty/md5/md5.cpp b/src/3rdparty/md5/md5.cpp
index f32903c36c..ac296b532b 100644
--- a/src/3rdparty/md5/md5.cpp
+++ b/src/3rdparty/md5/md5.cpp
@@ -24,6 +24,7 @@
#ifndef _WIN32_WCE
#include <sys/types.h> /* for stupid systems */
#else
+#include <windef.h>
#include <types.h>
#endif
diff --git a/src/3rdparty/phonon/gstreamer/devicemanager.cpp b/src/3rdparty/phonon/gstreamer/devicemanager.cpp
index c3826ebedd..518aa85b64 100644
--- a/src/3rdparty/phonon/gstreamer/devicemanager.cpp
+++ b/src/3rdparty/phonon/gstreamer/devicemanager.cpp
@@ -22,7 +22,9 @@
#include "videowidget.h"
#include "glrenderer.h"
#include "widgetrenderer.h"
+#ifdef Q_WS_X11
#include "x11renderer.h"
+#endif
#include "artssink.h"
#include "pulsesupport.h"
@@ -264,7 +266,7 @@ AbstractRenderer *DeviceManager::createVideoRenderer(VideoWidget *parent)
if (m_videoSinkWidget == "software") {
return new WidgetRenderer(parent);
}
-#ifndef Q_WS_QWS
+#ifdef Q_WS_X11
else if (m_videoSinkWidget == "xwindow") {
return new X11Renderer(parent);
} else {
diff --git a/src/3rdparty/phonon/gstreamer/videowidget.cpp b/src/3rdparty/phonon/gstreamer/videowidget.cpp
index e1f0ec97f8..a4c6f79eb9 100644
--- a/src/3rdparty/phonon/gstreamer/videowidget.cpp
+++ b/src/3rdparty/phonon/gstreamer/videowidget.cpp
@@ -31,7 +31,9 @@
#include "glrenderer.h"
#include "widgetrenderer.h"
+#ifdef Q_WS_X11
#include "x11renderer.h"
+#endif
#ifndef QT_NO_PHONON_VIDEO
QT_BEGIN_NAMESPACE
@@ -116,10 +118,12 @@ void VideoWidget::setupVideoBin()
GstPad *videopad = gst_element_get_pad (queue, "sink");
gst_element_add_pad (m_videoBin, gst_ghost_pad_new ("sink", videopad));
gst_object_unref (videopad);
+#ifndef Q_WS_QPA
QWidget *parentWidget = qobject_cast<QWidget*>(parent());
if (parentWidget)
parentWidget->winId(); // Due to some existing issues with alien in 4.4,
// we must currently force the creation of a parent widget.
+#endif
m_isValid = true; //initialization ok, accept input
}
}
diff --git a/src/3rdparty/phonon/gstreamer/x11renderer.h b/src/3rdparty/phonon/gstreamer/x11renderer.h
index f7140da151..8e2ea19c16 100644
--- a/src/3rdparty/phonon/gstreamer/x11renderer.h
+++ b/src/3rdparty/phonon/gstreamer/x11renderer.h
@@ -27,8 +27,6 @@
QT_BEGIN_NAMESPACE
-#ifndef Q_WS_QWS
-
class QString;
namespace Phonon
@@ -61,8 +59,6 @@ private:
}
} //namespace Phonon::Gstreamer
-#endif // Q_WS_QWS
-
QT_END_NAMESPACE
#endif // Phonon_GSTREAMER_X11RENDERER_H
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/objectdescriptionmodel.h b/src/3rdparty/phonon/phonon/objectdescriptionmodel.h
index 8fd622f46e..d99460057a 100644
--- a/src/3rdparty/phonon/phonon/objectdescriptionmodel.h
+++ b/src/3rdparty/phonon/phonon/objectdescriptionmodel.h
@@ -141,10 +141,11 @@ namespace Phonon
/* Required to ensure template class vtables are exported on both symbian
and existing builds. */
-#if defined(Q_OS_SYMBIAN) && defined(Q_CC_RVCT)
+#if (defined(Q_OS_SYMBIAN) && defined(Q_CC_RVCT)) || defined(Q_CC_CLANG)
// RVCT compiler (2.2.686) requires the export declaration to be on the class to export vtables
// MWC compiler works both ways
// GCCE compiler is unknown (it can't compile QtCore yet)
+// Clang also requires the export declaration to be on the class to export vtables
#define PHONON_TEMPLATE_CLASS_EXPORT PHONON_EXPORT
#define PHONON_TEMPLATE_CLASS_MEMBER_EXPORT
#else
diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro
index 981dba2ebd..3ccc57fece 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.pro
+++ b/src/3rdparty/webkit/WebCore/WebCore.pro
@@ -56,6 +56,7 @@ TEMPLATE = lib
TARGET = QtWebKit
contains(QT_CONFIG, embedded):CONFIG += embedded
+contains(QT_CONFIG, qpa):CONFIG += embedded
CONFIG(standalone_package) {
isEmpty(WC_GENERATED_SOURCES_DIR):WC_GENERATED_SOURCES_DIR = $$PWD/generated
@@ -2180,11 +2181,11 @@ contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=1) {
mac {
SOURCES += \
- plugins/mac/PluginPackageMac.cpp \
- plugins/mac/PluginViewMac.mm
+ plugins/mac/PluginPackageMac.cpp
OBJECTIVE_SOURCES += \
platform/text/mac/StringImplMac.mm \
- platform/mac/WebCoreNSStringExtras.mm
+ platform/mac/WebCoreNSStringExtras.mm \
+ plugins/mac/PluginViewMac.mm
INCLUDEPATH += platform/mac
# Note: XP_MACOSX is defined in npapi.h
} else {
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h
index 40f7e40e4a..0df23a2d13 100644
--- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h
+++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h
@@ -225,7 +225,7 @@ namespace WebCore {
{
if (!node)
return JSC::jsNull();
- if (JSNode* wrapper = getCachedDOMNodeWrapper(exec, node->document(), node))
+ if (JSC::JSCell* wrapper = getCachedDOMNodeWrapper(exec, node->document(), node))
return wrapper;
return createDOMNodeWrapper<WrapperClass>(exec, globalObject, node);
}
diff --git a/src/activeqt/container/qaxwidget.cpp b/src/activeqt/container/qaxwidget.cpp
index d3f736bdc5..15d586b5b5 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 dfec817810..4a385444a1 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/animation/qabstractanimation.cpp b/src/corelib/animation/qabstractanimation.cpp
index 641b42bdb9..9add36e14b 100644
--- a/src/corelib/animation/qabstractanimation.cpp
+++ b/src/corelib/animation/qabstractanimation.cpp
@@ -166,11 +166,12 @@ Q_GLOBAL_STATIC(QThreadStorage<QUnifiedTimer *>, unifiedTimer)
#endif
QUnifiedTimer::QUnifiedTimer() :
- QObject(), lastTick(0), timingInterval(DEFAULT_TIMER_INTERVAL),
+ QObject(), defaultDriver(this), lastTick(0), timingInterval(DEFAULT_TIMER_INTERVAL),
currentAnimationIdx(0), consistentTiming(false), slowMode(false),
slowdownFactor(5.0f), isPauseTimerActive(false), runningLeafAnimations(0)
{
time.invalidate();
+ driver = &defaultDriver;
}
@@ -247,14 +248,27 @@ void QUnifiedTimer::restartAnimationTimer()
qDebug() << runningPauseAnimations;
qDebug() << closestPauseAnimationTimeToFinish();
}
+ driver->stop();
animationTimer.start(closestTimeToFinish, this);
isPauseTimerActive = true;
- } else if (!animationTimer.isActive() || isPauseTimerActive) {
- animationTimer.start(timingInterval, this);
+ } else if (!driver->isRunning() || isPauseTimerActive) {
+ driver->start();
isPauseTimerActive = false;
}
}
+void QUnifiedTimer::setTimingInterval(int interval)
+{
+ timingInterval = interval;
+
+ if (driver->isRunning() && !isPauseTimerActive) {
+ //we changed the timing interval
+ driver->stop();
+ driver->start();
+ }
+}
+
+
void QUnifiedTimer::timerEvent(QTimerEvent *event)
{
//in the case of consistent timing we make sure the orders in which events come is always the same
@@ -369,6 +383,129 @@ int QUnifiedTimer::closestPauseAnimationTimeToFinish()
return closestTimeToFinish;
}
+void QUnifiedTimer::installAnimationDriver(QAnimationDriver *d)
+{
+ if (driver->isRunning()) {
+ qWarning("QUnifiedTimer: Cannot change animation driver while animations are running");
+ return;
+ }
+
+ if (driver && driver != &defaultDriver)
+ delete driver;
+
+ driver = d;
+}
+
+/*!
+ \class QAnimationDriver
+
+ \brief The QAnimationDriver class is used to exchange the mechanism that drives animations.
+
+ The default animation system is driven by a timer that fires at regular intervals.
+ In some scenarios, it is better to drive the animation based on other synchronization
+ mechanisms, such as the vertical refresh rate of the screen.
+ */
+
+QAnimationDriver::QAnimationDriver(QObject *parent)
+ : QObject(*(new QAnimationDriverPrivate), parent)
+{
+}
+
+QAnimationDriver::QAnimationDriver(QAnimationDriverPrivate &dd, QObject *parent)
+ : QObject(dd, parent)
+{
+}
+
+
+/*!
+ Advances the animation based on the current time. This function should
+ be continuously called by the driver while the animation is running.
+ */
+void QAnimationDriver::advance()
+{
+ QUnifiedTimer *instance = QUnifiedTimer::instance();
+
+ // update current time on all top level animations
+ instance->updateAnimationsTime();
+ instance->restartAnimationTimer();
+}
+
+
+/*!
+ Installs this animation driver. The animation driver is thread local and
+ will only apply for the thread its installed in.
+ */
+void QAnimationDriver::install()
+{
+ QUnifiedTimer *timer = QUnifiedTimer::instance(true);
+ timer->installAnimationDriver(this);
+}
+
+bool QAnimationDriver::isRunning() const
+{
+ return d_func()->running;
+}
+
+
+void QAnimationDriver::start()
+{
+ Q_D(QAnimationDriver);
+ if (!d->running) {
+ started();
+ d->running = true;
+ }
+}
+
+
+void QAnimationDriver::stop()
+{
+ Q_D(QAnimationDriver);
+ if (d->running) {
+ stopped();
+ d->running = false;
+ }
+}
+
+/*!
+ \fn QAnimationDriver::started()
+
+ This function is called by the animation framework to notify the driver
+ that it should start running.
+ */
+
+/*!
+ \fn QAnimationDriver::stopped()
+
+ This function is called by the animation framework to notify the driver
+ that it should stop running.
+ */
+
+/*!
+ The default animation driver just spins the timer...
+ */
+QDefaultAnimationDriver::QDefaultAnimationDriver(QUnifiedTimer *timer)
+ : QAnimationDriver(0), m_unified_timer(timer)
+{
+}
+
+void QDefaultAnimationDriver::timerEvent(QTimerEvent *e)
+{
+ Q_ASSERT(e->timerId() == m_timer.timerId());
+ advance();
+}
+
+void QDefaultAnimationDriver::started()
+{
+ m_timer.start(m_unified_timer->timingInterval, this);
+}
+
+void QDefaultAnimationDriver::stopped()
+{
+ m_timer.stop();
+}
+
+
+
void QAbstractAnimationPrivate::setState(QAbstractAnimation::State newState)
{
Q_Q(QAbstractAnimation);
@@ -794,6 +931,9 @@ void QAbstractAnimation::stop()
{
Q_D(QAbstractAnimation);
+ if (d->state == Stopped)
+ return;
+
d->setState(Stopped);
}
diff --git a/src/corelib/animation/qabstractanimation.h b/src/corelib/animation/qabstractanimation.h
index d3c0d0dcec..6abe8c197d 100644
--- a/src/corelib/animation/qabstractanimation.h
+++ b/src/corelib/animation/qabstractanimation.h
@@ -54,6 +54,7 @@ QT_MODULE(Core)
class QAnimationGroup;
class QSequentialAnimationGroup;
+class QAnimationDriver;
class QAbstractAnimationPrivate;
class Q_CORE_EXPORT QAbstractAnimation : public QObject
@@ -132,6 +133,36 @@ private:
Q_DECLARE_PRIVATE(QAbstractAnimation)
};
+class QAnimationDriverPrivate;
+class Q_CORE_EXPORT QAnimationDriver : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QAnimationDriver)
+
+public:
+ QAnimationDriver(QObject *parent);
+
+ void advance();
+ void install();
+
+ bool isRunning() const;
+
+protected:
+ virtual void started() = 0;
+ virtual void stopped() = 0;
+
+ QAnimationDriver(QAnimationDriverPrivate &dd, QObject *parent = 0);
+
+private:
+ friend class QUnifiedTimer;
+
+ void start();
+ void stop();
+};
+
+
+
+
#endif //QT_NO_ANIMATION
QT_END_NAMESPACE
diff --git a/src/corelib/animation/qabstractanimation_p.h b/src/corelib/animation/qabstractanimation_p.h
index d3d4098252..d56c130d12 100644
--- a/src/corelib/animation/qabstractanimation_p.h
+++ b/src/corelib/animation/qabstractanimation_p.h
@@ -58,6 +58,7 @@
#include <QtCore/qtimer.h>
#include <QtCore/qelapsedtimer.h>
#include <private/qobject_p.h>
+#include <qabstractanimation.h>
#ifdef Q_OS_WIN
#include <qt_windows.h>
@@ -114,30 +115,47 @@ private:
Q_DECLARE_PUBLIC(QAbstractAnimation)
};
+
+class QUnifiedTimer;
+class QDefaultAnimationDriver : public QAnimationDriver
+{
+ Q_OBJECT
+public:
+ QDefaultAnimationDriver(QUnifiedTimer *timer);
+ void timerEvent(QTimerEvent *e);
+
+ void started();
+ void stopped();
+
+private:
+ QBasicTimer m_timer;
+ QUnifiedTimer *m_unified_timer;
+};
+
+class Q_CORE_EXPORT QAnimationDriverPrivate : public QObjectPrivate
+{
+public:
+ QAnimationDriverPrivate() : running(false) {}
+ bool running;
+};
+
typedef QElapsedTimer ElapsedTimer;
-class QUnifiedTimer : public QObject
+class Q_CORE_EXPORT QUnifiedTimer : public QObject
{
private:
QUnifiedTimer();
public:
//XXX this is needed by dui
- static Q_CORE_EXPORT QUnifiedTimer *instance();
+ static QUnifiedTimer *instance();
static QUnifiedTimer *instance(bool create);
static void registerAnimation(QAbstractAnimation *animation, bool isTopLevel);
static void unregisterAnimation(QAbstractAnimation *animation);
//defines the timing interval. Default is DEFAULT_TIMER_INTERVAL
- void setTimingInterval(int interval)
- {
- timingInterval = interval;
- if (animationTimer.isActive() && !isPauseTimerActive) {
- //we changed the timing interval
- animationTimer.start(timingInterval, this);
- }
- }
+ void setTimingInterval(int interval);
/*
this allows to have a consistent timer interval at each tick from the timer
@@ -161,11 +179,20 @@ public:
*/
static void updateAnimationTimer();
+ void installAnimationDriver(QAnimationDriver *driver);
+
+ void restartAnimationTimer();
+ void updateAnimationsTime();
+
protected:
void timerEvent(QTimerEvent *);
private:
- // timer used for all active (running) animations
+ friend class QDefaultAnimationDriver;
+
+ QAnimationDriver *driver;
+ QDefaultAnimationDriver defaultDriver;
+
QBasicTimer animationTimer;
// timer used to delay the check if we should start/stop the animation timer
QBasicTimer startStopAnimationTimer;
@@ -195,9 +222,6 @@ private:
void registerRunningAnimation(QAbstractAnimation *animation);
void unregisterRunningAnimation(QAbstractAnimation *animation);
- void restartAnimationTimer();
-
- void updateAnimationsTime();
int closestPauseAnimationTimeToFinish();
};
diff --git a/src/corelib/arch/qatomic_arch.h b/src/corelib/arch/qatomic_arch.h
index 00b288b17c..5106d290d1 100644
--- a/src/corelib/arch/qatomic_arch.h
+++ b/src/corelib/arch/qatomic_arch.h
@@ -88,6 +88,8 @@ QT_BEGIN_HEADER
# include "QtCore/qatomic_sh.h"
#elif defined(QT_ARCH_SH4A)
# include "QtCore/qatomic_sh4a.h"
+#elif defined(QT_ARCH_NACL)
+# include "QtCore/qatomic_generic.h"
#else
# error "Qt has not been ported to this architecture"
#endif
diff --git a/src/corelib/arch/qatomic_arm.h b/src/corelib/arch/qatomic_arm.h
index 1c1c8a54b1..0513af2a2a 100644
--- a/src/corelib/arch/qatomic_arm.h
+++ b/src/corelib/arch/qatomic_arm.h
@@ -59,7 +59,7 @@ QT_END_INCLUDE_HEADER
|| defined(__ARM_ARCH_6K__) \
|| defined(__ARM_ARCH_6ZK__) \
|| defined(__ARM_ARCH_6M__) \
- || (__TARGET_ARCH_ARM-0 >= 6)
+ || (defined(__TARGET_ARCH_ARM) && (__TARGET_ARCH_ARM-0 >= 6))
# define QT_ARCH_ARMV6
QT_BEGIN_INCLUDE_HEADER
# include "QtCore/qatomic_armv6.h"
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/arch/symbian/qatomic_generic_armv6.cpp b/src/corelib/arch/symbian/qatomic_generic_armv6.cpp
index 39d966ab42..444d3d3d48 100644
--- a/src/corelib/arch/symbian/qatomic_generic_armv6.cpp
+++ b/src/corelib/arch/symbian/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/codecs/codecs.qdoc b/src/corelib/codecs/codecs.qdoc
index b88f016178..3171f580ec 100644
--- a/src/corelib/codecs/codecs.qdoc
+++ b/src/corelib/codecs/codecs.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/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/concurrent/qtconcurrentrunbase.h b/src/corelib/concurrent/qtconcurrentrunbase.h
index a6bbe3e0c3..888d3952c6 100644
--- a/src/corelib/concurrent/qtconcurrentrunbase.h
+++ b/src/corelib/concurrent/qtconcurrentrunbase.h
@@ -100,7 +100,18 @@ public:
this->reportFinished();
return;
}
- this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ } catch (QtConcurrent::Exception &e) {
+ QFutureInterface<T>::reportException(e);
+ } catch (...) {
+ QFutureInterface<T>::reportException(QtConcurrent::UnhandledException());
+ }
+#endif
+
this->reportResult(result);
this->reportFinished();
}
@@ -117,7 +128,17 @@ public:
this->reportFinished();
return;
}
- this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ } catch (QtConcurrent::Exception &e) {
+ QFutureInterface<void>::reportException(e);
+ } catch (...) {
+ QFutureInterface<void>::reportException(QtConcurrent::UnhandledException());
+ }
+#endif
this->reportFinished();
}
};
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index b7d6034609..e946d5d1ae 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -19,7 +19,14 @@ include(codecs/codecs.pri)
include(statemachine/statemachine.pri)
include(xml/xml.pri)
-mac|darwin:LIBS_PRIVATE += -framework ApplicationServices
+!qpa:mac|darwin:LIBS_PRIVATE += -framework ApplicationServices
+qpa:mac|darwin {
+ contains(QT_CONFIG, coreservices) {
+ LIBS_PRIVATE += -framework CoreServices
+ } else {
+ LIBS_PRIVATE += -framework CoreFoundation
+ }
+}
mac:lib_bundle:DEFINES += QT_NO_DEBUG_PLUGIN_CHECK
win32:DEFINES-=QT_NO_CAST_TO_ASCII
@@ -37,10 +44,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..47b82ef177 100644
--- a/src/corelib/global/global.pri
+++ b/src/corelib/global/global.pri
@@ -13,13 +13,17 @@ SOURCES += \
global/qmalloc.cpp \
global/qnumeric.cpp
+nacl {
+ SOURCES += global/qnaclunimplemented.cpp
+}
+
# qlibraryinfo.cpp includes qconfig.cpp
INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global
# Only used on platforms with CONFIG += precompile_header
PRECOMPILED_HEADER = global/qt_pch.h
-linux*:!static:!linux-armcc:!linux-gcce {
+linux*:!static:!symbian-armcc:!symbian-gcce {
QMAKE_LFLAGS += -Wl,-e,qt_core_boilerplate
prog=$$quote(if (/program interpreter: (.*)]/) { print $1; })
DEFINES += ELF_INTERPRETER=\\\"$$system(readelf -l /bin/ls | perl -n -e \'$$prog\')\\\"
diff --git a/src/corelib/global/qconfig-minimal-system-dependencies.h b/src/corelib/global/qconfig-minimal-system-dependencies.h
new file mode 100644
index 0000000000..63319b94f6
--- /dev/null
+++ b/src/corelib/global/qconfig-minimal-system-dependencies.h
@@ -0,0 +1,371 @@
+/****************************************************************************
+**
+** 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 QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#define QT_FONTS_ARE_RESOURCES
+
+/* Data structures */
+#ifndef QT_NO_QUUID_STRING
+# define QT_NO_QUUID_STRING
+#endif
+#ifndef QT_NO_STL
+# define QT_NO_STL
+#endif
+#ifndef QT_NO_TEXTDATE
+# define QT_NO_TEXTDATE
+#endif
+#ifndef QT_NO_DATESTRING
+# define QT_NO_DATESTRING
+#endif
+
+/* Dialogs */
+#ifndef QT_NO_FILEDIALOG
+# define QT_NO_FILEDIALOG
+#endif
+#ifndef QT_NO_PRINTDIALOG
+# define QT_NO_PRINTDIALOG
+#endif
+#ifndef QT_NO_PRINTPREVIEWDIALOG
+# define QT_NO_PRINTPREVIEWDIALOG
+#endif
+
+
+/* File I/O */
+#ifndef QT_NO_DOM
+# define QT_NO_DOM
+#endif
+#ifndef QT_NO_FILESYSTEMWATCHER
+# define QT_NO_FILESYSTEMWATCHER
+#endif
+#ifndef QT_NO_FSFILEENGINE
+# define QT_NO_FSFILEENGINE
+#endif
+#ifndef QT_NO_FILESYSTEMMODEL
+# define QT_NO_FILESYSTEMMODEL
+#endif
+#ifndef QT_NO_FILESYSTEMMODEL
+# define QT_NO_FILESYSTEMMODEL
+#endif
+#ifndef QT_NO_PROCESS
+# define QT_NO_PROCESS
+#endif
+#ifndef QT_NO_TEMPORARYFILE
+# define QT_NO_TEMPORARYFILE
+#endif
+#ifndef QT_NO_SETTINGS
+# define QT_NO_SETTINGS
+#endif
+#ifndef QT_NO_LIBRARY
+# define QT_NO_LIBRARY
+#endif
+
+/* Fonts */
+#ifndef QT_NO_QWS_QPF2
+# define QT_NO_QWS_QPF2
+#endif
+
+/* Images */
+#ifndef QT_NO_IMAGEFORMATPLUGIN
+# define QT_NO_IMAGEFORMATPLUGIN
+#endif
+#ifndef QT_NO_IMAGE_HEURISTIC_MASK
+# define QT_NO_IMAGE_HEURISTIC_MASK
+#endif
+#ifndef QT_NO_IMAGE_TEXT
+# define QT_NO_IMAGE_TEXT
+#endif
+#ifndef QT_NO_MOVIE
+# define QT_NO_MOVIE
+#endif
+
+/* Internationalization */
+#ifndef QT_NO_BIG_CODECS
+# define QT_NO_BIG_CODECS
+#endif
+#ifndef QT_NO_QWS_INPUTMETHODS
+# define QT_NO_QWS_INPUTMETHODS
+#endif
+#ifndef QT_NO_TEXTCODEC
+# define QT_NO_TEXTCODEC
+#endif
+#ifndef QT_NO_CODECS
+# define QT_NO_CODECS
+#endif
+#ifndef QT_NO_TEXTCODECPLUGIN
+# define QT_NO_TEXTCODECPLUGIN
+#endif
+#ifndef QT_NO_TRANSLATION
+# define QT_NO_TRANSLATION
+#endif
+#ifndef QT_NO_TRANSLATION_UTF8
+# define QT_NO_TRANSLATION_UTF8
+#endif
+
+/* ItemViews */
+
+#ifndef QT_NO_DIRMODEL
+# define QT_NO_DIRMODEL
+#endif
+
+/* Kernel */
+#ifndef QT_NO_CLIPBOARD
+# define QT_NO_CLIPBOARD
+#endif
+#ifndef QT_NO_CSSPARSER
+# define QT_NO_CSSPARSER
+#endif
+#ifndef QT_NO_CURSOR
+# define QT_NO_CURSOR
+#endif
+#ifndef QT_NO_DRAGANDDROP
+# define QT_NO_DRAGANDDROP
+#endif
+#ifndef QT_NO_EFFECTS
+# define QT_NO_EFFECTS
+#endif
+#ifndef QT_NO_SESSIONMANAGER
+# define QT_NO_SESSIONMANAGER
+#endif
+#ifndef QT_NO_SHAREDMEMORY
+# define QT_NO_SHAREDMEMORY
+#endif
+#ifndef QT_NO_SOUND
+# define QT_NO_SOUND
+#endif
+#ifndef QT_NO_SYSTEMLOCALE
+# define QT_NO_SYSTEMSEMAPHORE
+#endif
+#ifndef QT_NO_SYSTEMSEMAPHORE
+# define QT_NO_SYSTEMSEMAPHORE
+#endif
+#ifndef QT_NO_TABLETEVENT
+# define QT_NO_TABLETEVENT
+#endif
+#ifndef QT_NO_CRASHHANDLER
+# define QT_NO_CRASHHANDLER
+#endif
+#ifndef QT_NO_CONCURRENT
+# define QT_NO_CONCURRENT
+#endif
+#ifndef QT_NO_XMLSTREAM
+# define QT_NO_XMLSTREAM
+#endif
+#ifndef QT_NO_XMLSTREAMREADER
+# define QT_NO_XMLSTREAMREADER
+#endif
+#ifndef QT_NO_XMLSTREAMWRITER
+# define QT_NO_XMLSTREAMWRITER
+#endif
+
+/* Networking */
+#ifndef QT_NO_COP
+# define QT_NO_COP
+#endif
+#ifndef QT_NO_HOSTINFO
+# define QT_NO_HOSTINFO
+#endif
+#ifndef QT_NO_HTTP
+# define QT_NO_HTTP
+#endif
+#ifndef QT_NO_NETWORKPROXY
+# define QT_NO_NETWORKPROXY
+#endif
+#ifndef QT_NO_SOCKS5
+# define QT_NO_SOCKS5
+#endif
+#ifndef QT_NO_UDPSOCKET
+# define QT_NO_UDPSOCKET
+#endif
+#ifndef QT_NO_URLINFO
+# define QT_NO_URLINFO
+#endif
+#ifndef QT_NO_FTP
+# define QT_NO_FTP
+#endif
+
+/* Painting */
+#ifndef QT_NO_COLORNAMES
+# define QT_NO_COLORNAMES
+#endif
+#ifndef QT_NO_DIRECTPAINTER
+# define QT_NO_DIRECTPAINTER
+#endif
+#ifndef QT_NO_PAINTONSCREEN
+# define QT_NO_PAINTONSCREEN
+#endif
+#ifndef QT_NO_PAINT_DEBUG
+# define QT_NO_PAINT_DEBUG
+#endif
+#ifndef QT_NO_PICTURE
+# define QT_NO_PICTURE
+#endif
+#ifndef QT_NO_PRINTER
+# define QT_NO_PRINTER
+#endif
+#ifndef QT_NO_CUPS
+# define QT_NO_CUPS
+#endif
+
+/* Qt for Embedded Linux */
+#ifndef QT_NO_QWSEMBEDWIDGET
+# define QT_NO_QWSEMBEDWIDGET
+#endif
+#ifndef QT_NO_QWS_ALPHA_CURSOR
+# define QT_NO_QWS_ALPHA_CURSOR
+#endif
+#ifndef QT_NO_QWS_CURSOR
+# define QT_NO_QWS_CURSOR
+#endif
+#ifndef QT_NO_QWS_DECORATION_DEFAULT
+# define QT_NO_QWS_DECORATION_DEFAULT
+#endif
+#ifndef QT_NO_QWS_DECORATION_STYLED
+# define QT_NO_QWS_DECORATION_STYLED
+#endif
+#ifndef QT_NO_QWS_DECORATION_WINDOWS
+# define QT_NO_QWS_DECORATION_WINDOWS
+#endif
+#ifndef QT_NO_QWS_MANAGER
+# define QT_NO_QWS_MANAGER
+#endif
+#ifndef QT_NO_QWS_KEYBOARD
+# define QT_NO_QWS_KEYBOARD
+#endif
+#ifndef QT_NO_QWS_MOUSE
+# define QT_NO_QWS_MOUSE
+#endif
+#ifndef QT_NO_QWS_MOUSE_AUTO
+# define QT_NO_QWS_MOUSE_AUTO
+#endif
+#ifndef QT_NO_QWS_MOUSE_MANUAL
+# define QT_NO_QWS_MOUSE_MANUAL
+#endif
+#ifndef QT_NO_QWS_MULTIPROCESS
+# define QT_NO_QWS_MULTIPROCESS
+#endif
+#ifndef QT_NO_QWS_SOUNDSERVER
+# define QT_NO_QWS_SOUNDSERVER
+#endif
+#ifndef QT_NO_SXE
+# define QT_NO_SXE
+#endif
+#ifndef QT_NO_QWS_PROPERTIES
+# define QT_NO_QWS_PROPERTIES
+#endif
+#ifndef QT_NO_QWS_PROXYSCREEN
+# define QT_NO_QWS_PROXYSCREEN
+#endif
+#ifndef QT_NO_QWS_DYNAMICSCREENTRANSFORMATION
+# define QT_NO_QWS_DYNAMICSCREENTRANSFORMATION
+#endif
+#ifndef QT_NO_QWS_LINUXFB
+# define QT_NO_QWS_LINUXFB
+#endif
+#ifndef QT_NO_QWS_MOUSE_PC
+# define QT_NO_QWS_MOUSE_PC
+#endif
+#ifndef QT_NO_QWS_MOUSE_LINUXTP
+# define QT_NO_QWS_MOUSE_LINUXTP
+#endif
+#ifndef QT_NO_QWS_QPF
+# define QT_NO_QWS_QPF
+#endif
+
+/* SVG */
+#ifndef QT_NO_SVG
+# define QT_NO_SVG
+#endif
+#ifndef QT_NO_GRAPHICSSVGITEM
+# define QT_NO_GRAPHICSSVGITEM
+#endif
+#ifndef QT_NO_SVGGENERATOR
+# define QT_NO_SVGGENERATOR
+#endif
+#ifndef QT_NO_SVGRENDERER
+# define QT_NO_SVGRENDERER
+#endif
+#ifndef QT_NO_SVGWIDGET
+# define QT_NO_SVGWIDGET
+#endif
+
+/* Styles */
+#ifndef QT_NO_STYLE_MOTIF
+# define QT_NO_STYLE_MOTIF
+#endif
+#ifndef QT_NO_STYLE_CDE
+# define QT_NO_STYLE_CDE
+#endif
+#ifndef QT_NO_STYLE_STYLESHEET
+# define QT_NO_STYLE_STYLESHEET
+#endif
+#ifndef QT_NO_STYLE_WINDOWSCE
+# define QT_NO_STYLE_WINDOWSCE
+#endif
+#ifndef QT_NO_STYLE_WINDOWSMOBILE
+# define QT_NO_STYLE_WINDOWSMOBILE
+#endif
+#ifndef QT_NO_STYLE_WINDOWSVISTA
+# define QT_NO_STYLE_WINDOWSVISTA
+#endif
+#ifndef QT_NO_STYLE_WINDOWSXP
+# define QT_NO_STYLE_WINDOWSXP
+#endif
+
+/* Utilities */
+#ifndef QT_NO_ACCESSIBILITY
+# define QT_NO_ACCESSIBILITY
+#endif
+#ifndef QT_NO_COMPLETER
+# define QT_NO_COMPLETER
+#endif
+#ifndef QT_NO_DESKTOPSERVICES
+# define QT_NO_DESKTOPSERVICES
+#endif
+#ifndef QT_NO_SCRIPT
+# define QT_NO_SCRIPT
+#endif
+#ifndef QT_NO_SYSTEMTRAYICON
+# define QT_NO_SYSTEMTRAYICON
+#endif
+
+/* Windows */
+#ifndef QT_NO_WIN_ACTIVEQT
+# define QT_NO_WIN_ACTIVEQT
+#endif
diff --git a/src/corelib/global/qendian.qdoc b/src/corelib/global/qendian.qdoc
index 795ff81054..ecdaf9f13d 100644
--- a/src/corelib/global/qendian.qdoc
+++ b/src/corelib/global/qendian.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/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h
index b606843e82..97100791d7 100644
--- a/src/corelib/global/qfeatures.h
+++ b/src/corelib/global/qfeatures.h
@@ -523,11 +523,6 @@
#define QT_NO_FTP
#endif
-// Hyper Text Transfer Protocol
-#if !defined(QT_NO_HTTP) && (defined(QT_NO_HOSTINFO))
-#define QT_NO_HTTP
-#endif
-
// QInputContext
#if !defined(QT_NO_IM) && (defined(QT_NO_LIBRARY))
#define QT_NO_IM
@@ -583,6 +578,11 @@
#define QT_NO_GRAPHICSVIEW
#endif
+// Hyper Text Transfer Protocol
+#if !defined(QT_NO_HTTP) && (defined(QT_NO_HOSTINFO) || defined(QT_NO_NETWORKPROXY))
+#define QT_NO_HTTP
+#endif
+
// QMdiArea
#if !defined(QT_NO_MDIAREA) && (defined(QT_NO_SCROLLAREA))
#define QT_NO_MDIAREA
diff --git a/src/corelib/global/qfeatures.txt b/src/corelib/global/qfeatures.txt
index 4d938a9b14..f07fbd5bd5 100644
--- a/src/corelib/global/qfeatures.txt
+++ b/src/corelib/global/qfeatures.txt
@@ -1050,7 +1050,7 @@ SeeAlso: ???
Feature: HTTP
Description: Supports HTTP file access.
Section: Networking
-Requires: HOSTINFO
+Requires: HOSTINFO NETWORKPROXY
Name: Hyper Text Transfer Protocol
SeeAlso: ???
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index e973688e25..9b597f6421 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -74,7 +74,7 @@
# include <envLib.h>
#endif
-#if defined(Q_CC_MWERKS) && defined(Q_OS_MACX)
+#if defined(Q_OS_MACX) && !defined(QT_NO_CORESERVICES)
#include <CoreServices/CoreServices.h>
#endif
@@ -1232,7 +1232,7 @@ bool qSharedBuild()
Defined on Mac OS X.
- \sa Q_WS_WIN, Q_WS_X11, Q_WS_QWS, Q_WS_S60
+ \sa Q_WS_WIN, Q_WS_X11, Q_WS_QWS, Q_WS_QPA, Q_WS_S60
*/
/*!
@@ -1241,7 +1241,7 @@ bool qSharedBuild()
Defined on Windows.
- \sa Q_WS_MAC, Q_WS_X11, Q_WS_QWS, Q_WS_S60
+ \sa Q_WS_MAC, Q_WS_X11, Q_WS_QWS, Q_WS_QPA, Q_WS_S60
*/
/*!
@@ -1250,7 +1250,7 @@ bool qSharedBuild()
Defined on X11.
- \sa Q_WS_MAC, Q_WS_WIN, Q_WS_QWS, Q_WS_S60
+ \sa Q_WS_MAC, Q_WS_WIN, Q_WS_QWS, Q_WS_QPA, Q_WS_S60
*/
/*!
@@ -1259,7 +1259,16 @@ bool qSharedBuild()
Defined on Qt for Embedded Linux.
- \sa Q_WS_MAC, Q_WS_WIN, Q_WS_X11, Q_WS_S60
+ \sa Q_WS_MAC, Q_WS_WIN, Q_WS_X11, Q_WS_QPA, Q_WS_S60
+*/
+
+/*!
+ \macro Q_WS_QPA
+ \relates <QtGlobal>
+
+ Defined on Qt for Embedded Linux, Lite version.
+
+ \sa Q_WS_MAC, Q_WS_WIN, Q_WS_X11, Q_WS_QWS, Q_WS_S60
*/
/*!
@@ -1634,7 +1643,7 @@ static const unsigned int qt_one = 1;
const int QSysInfo::ByteOrder = ((*((unsigned char *) &qt_one) == 0) ? BigEndian : LittleEndian);
#endif
-#if !defined(QWS) && defined(Q_OS_MAC)
+#if !defined(QWS) && !defined(Q_WS_QPA) && defined(Q_OS_MAC)
QT_BEGIN_INCLUDE_NAMESPACE
#include "private/qcore_mac_p.h"
@@ -1688,15 +1697,18 @@ Q_CORE_EXPORT void qt_mac_to_pascal_string(QString s, Str255 str, TextEncoding e
Q_CORE_EXPORT QString qt_mac_from_pascal_string(const Str255 pstr) {
return QCFString(CFStringCreateWithPascalString(0, pstr, CFStringGetSystemEncoding()));
}
+#endif //!defined(QWS) && !defined(Q_WS_QPA) && defined(Q_OS_MAC)
-
+#if !defined(QWS) && defined(Q_OS_MAC)
static QSysInfo::MacVersion macVersion()
{
+#ifndef QT_NO_CORESERVICES
SInt32 gestalt_version;
if (Gestalt(gestaltSystemVersion, &gestalt_version) == noErr) {
return QSysInfo::MacVersion(((gestalt_version & 0x00F0) >> 4) + 2);
}
+#endif
return QSysInfo::MV_Unknown;
}
const QSysInfo::MacVersion QSysInfo::MacintoshVersion = macVersion();
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index 1b2a6a8531..b75a3d8617 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -64,6 +64,10 @@
#ifdef __cplusplus
+#ifndef QT_NO_STL
+#include <algorithm>
+#endif
+
#ifndef QT_NAMESPACE /* user namespace */
# define QT_PREPEND_NAMESPACE(name) ::name
@@ -216,6 +220,8 @@ namespace QT_NAMESPACE {}
# define Q_OS_ULTRIX
#elif defined(sinix)
# define Q_OS_RELIANT
+#elif defined(__native_client__)
+# define Q_OS_NACL
#elif defined(__linux__) || defined(__linux)
# define Q_OS_LINUX
#elif defined(__FreeBSD__) || defined(__DragonFly__)
@@ -284,7 +290,7 @@ namespace QT_NAMESPACE {}
# endif
#endif
-#if defined(Q_OS_MAC64) && !defined(QT_MAC_USE_COCOA) && !defined(QT_BUILD_QMAKE)
+#if defined(Q_WS_MAC64) && !defined(QT_MAC_USE_COCOA) && !defined(QT_BUILD_QMAKE) && !defined(QT_BOOTSTRAPPED)
#error "You are building a 64-bit application, but using a 32-bit version of Qt. Check your build configuration."
#endif
@@ -356,6 +362,7 @@ namespace QT_NAMESPACE {}
GCCE - GCCE (Symbian GCCE builds)
RVCT - ARM Realview Compiler Suite
NOKIAX86 - Nokia x86 (Symbian WINSCW builds)
+ CLANG - C++ front-end for the LLVM compiler
Should be sorted most to least authoritative.
@@ -452,6 +459,10 @@ namespace QT_NAMESPACE {}
# define Q_CC_INTEL
# define Q_NO_TEMPLATE_FRIENDS
# endif
+# if defined(__clang__)
+/* Clang also masquerades as GCC 4.2.1 */
+# define Q_CC_CLANG
+# endif
# ifdef __APPLE__
# define Q_NO_DEPRECATED_CONSTRUCTORS
# endif
@@ -817,7 +828,7 @@ namespace QT_NAMESPACE {}
# define Q_WS_PM
# error "Qt does not work with OS/2 Presentation Manager or Workplace Shell"
#elif defined(Q_OS_UNIX)
-# if defined(Q_OS_MAC) && !defined(__USE_WS_X11__) && !defined(Q_WS_QWS)
+# if defined(Q_OS_MAC) && !defined(__USE_WS_X11__) && !defined(Q_WS_QWS) && !defined(Q_WS_QPA)
# define Q_WS_MAC
# define Q_WS_MACX
# if defined(Q_OS_MAC64)
@@ -829,7 +840,7 @@ namespace QT_NAMESPACE {}
# if !defined(QT_NO_S60)
# define Q_WS_S60
# endif
-# elif !defined(Q_WS_QWS)
+# elif !defined(Q_WS_QWS) && !defined(Q_WS_QPA)
# define Q_WS_X11
# endif
#endif
@@ -1091,7 +1102,7 @@ redefine to built-in booleans to make autotests work properly */
typedef int QNoImplicitBoolCast;
-#if defined(QT_ARCH_ARM) || defined(QT_ARCH_AVR32) || (defined(QT_ARCH_MIPS) && (defined(Q_WS_QWS) || defined(Q_OS_WINCE))) || defined(QT_ARCH_SH) || defined(QT_ARCH_SH4A)
+#if defined(QT_ARCH_ARM) || defined(QT_ARCH_ARMV6) || defined(QT_ARCH_AVR32) || (defined(QT_ARCH_MIPS) && (defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_WINCE))) || defined(QT_ARCH_SH) || defined(QT_ARCH_SH4A)
#define QT_NO_FPU
#endif
@@ -2057,9 +2068,14 @@ Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS)
template <typename T>
inline void qSwap(T &value1, T &value2)
{
+#ifdef QT_NO_STL
const T t = value1;
value1 = value2;
value2 = t;
+#else
+ using std::swap;
+ swap(value1, value2);
+#endif
}
/*
@@ -2071,12 +2087,23 @@ inline void qSwap(T &value1, T &value2)
types must declare a 'bool isDetached(void) const;' member for this
to work.
*/
+#ifdef QT_NO_STL
+#define Q_DECLARE_SHARED_STL(TYPE)
+#else
+#define Q_DECLARE_SHARED_STL(TYPE) \
+QT_END_NAMESPACE \
+namespace std { \
+ template<> inline void swap<QT_PREPEND_NAMESPACE(TYPE)>(QT_PREPEND_NAMESPACE(TYPE) &value1, QT_PREPEND_NAMESPACE(TYPE) &value2) \
+ { swap(value1.data_ptr(), value2.data_ptr()); } \
+} \
+QT_BEGIN_NAMESPACE
+#endif
+
#define Q_DECLARE_SHARED(TYPE) \
template <> inline bool qIsDetached<TYPE>(TYPE &t) { return t.isDetached(); } \
template <> inline void qSwap<TYPE>(TYPE &value1, TYPE &value2) \
-{ \
- qSwap(value1.data_ptr(), value2.data_ptr()); \
-}
+{ qSwap(value1.data_ptr(), value2.data_ptr()); } \
+Q_DECLARE_SHARED_STL(TYPE)
/*
QTypeInfo primitive specializations
@@ -2644,6 +2671,10 @@ QT_LICENSED_MODULE(DBus)
# define QT_NO_PROCESS
#endif
+#ifdef Q_OS_NACL
+#include <QtCore/qnaclunimplemented.h>
+#endif
+
#if defined (__ELF__)
# if defined (Q_OS_LINUX) || defined (Q_OS_SOLARIS) || defined (Q_OS_FREEBSD) || defined (Q_OS_OPENBSD) || defined (Q_OS_IRIX)
# define Q_OF_ELF
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/qnaclunimplemented.cpp b/src/corelib/global/qnaclunimplemented.cpp
new file mode 100644
index 0000000000..1a89b8df0e
--- /dev/null
+++ b/src/corelib/global/qnaclunimplemented.cpp
@@ -0,0 +1,156 @@
+/****************************************************************************
+**
+** 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 QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qnaclunimplemented.h"
+#include <pthread.h>
+#include <qglobal.h>
+
+/*
+ The purpose of this file is to stub out certain functions
+ that are not provided by the Native Client SDK. This is
+ done as an alterative to sprinkling the Qt sources with
+ NACL ifdefs.
+
+ There are two main classes of functions:
+
+ - Functions that are called but can have no effect:
+ For these we simply give an empty implementation
+
+ - Functions that are referenced in the source code, but
+ is not/must not be called at run-time:
+ These we either leave undefined or implement with a
+ qFatal.
+
+ This is a work in progress.
+*/
+
+extern "C" {
+
+void pthread_cleanup_push(void (*)(void *), void *)
+{
+
+}
+
+void pthread_cleanup_pop(int)
+{
+
+}
+
+int pthread_setcancelstate(int, int *)
+{
+ return 0;
+}
+
+int pthread_setcanceltype(int, int *)
+{
+ return 0;
+}
+
+void pthread_testcancel(void)
+{
+
+}
+
+
+int pthread_cancel(pthread_t)
+{
+ return 0;
+}
+
+int pthread_attr_setinheritsched(pthread_attr_t *,int)
+{
+ return 0;
+}
+
+
+int pthread_attr_getinheritsched(const pthread_attr_t *, int *)
+{
+ return 0;
+}
+
+// event dispatcher, select
+//struct fd_set;
+//struct timeval;
+
+int fcntl(int, int, ...)
+{
+ return 0;
+}
+
+int sigaction(int, const struct sigaction *, struct sigaction *)
+{
+ return 0;
+}
+
+int open(const char *, int, ...)
+{
+ return 0;
+}
+
+int open64(const char *, int, ...)
+{
+ return 0;
+}
+
+int access(const char *, int)
+{
+ return 0;
+}
+
+typedef long off64_t;
+off64_t ftello64(void *)
+{
+ qFatal("ftello64 called");
+ return 0;
+}
+
+off64_t lseek64(int, off_t, int)
+{
+ qFatal("lseek64 called");
+ return 0;
+}
+
+} // Extern C
+
+int select(int, fd_set *, fd_set *, fd_set *, struct timeval *)
+{
+ return 0;
+}
diff --git a/src/corelib/global/qnaclunimplemented.h b/src/corelib/global/qnaclunimplemented.h
new file mode 100644
index 0000000000..2d3d4268d2
--- /dev/null
+++ b/src/corelib/global/qnaclunimplemented.h
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** 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 QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QNACLUNIMPLEMENTED_H
+#define QNACLUNIMPLEMENTED_H
+
+#ifdef Q_OS_NACL
+
+// pthread
+#include <pthread.h>
+#define PTHREAD_CANCEL_DISABLE 1
+#define PTHREAD_CANCEL_ENABLE 2
+#define PTHREAD_INHERIT_SCHED 3
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Core)
+
+extern "C" {
+
+void pthread_cleanup_push(void (*handler)(void *), void *arg);
+void pthread_cleanup_pop(int execute);
+
+int pthread_setcancelstate(int state, int *oldstate);
+int pthread_setcanceltype(int type, int *oldtype);
+void pthread_testcancel(void);
+int pthread_cancel(pthread_t thread);
+
+int pthread_attr_setinheritsched(pthread_attr_t *attr,
+ int inheritsched);
+int pthread_attr_getinheritsched(const pthread_attr_t *attr,
+ int *inheritsched);
+
+// event dispatcher, select
+//struct fd_set;
+//struct timeval;
+int fcntl(int fildes, int cmd, ...);
+int sigaction(int sig, const struct sigaction * act, struct sigaction * oact);
+
+typedef long off64_t;
+off64_t ftello64(void *stream);
+off64_t lseek64(int fildes, off_t offset, int whence);
+int open64(const char *path, int oflag, ...);
+
+}
+
+int select(int nfds, fd_set * readfds, fd_set * writefds, fd_set * errorfds, struct timeval * timeout);
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif //Q_OS_NACL
+
+#endif //QNACLUNIMPLEMENTED_H
diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h
index a531009c39..3ed6291233 100644
--- a/src/corelib/global/qnamespace.h
+++ b/src/corelib/global/qnamespace.h
@@ -1659,7 +1659,7 @@ public:
typedef void *HANDLE;
#elif defined(Q_WS_X11)
typedef unsigned long HANDLE;
-#elif defined(Q_WS_QWS)
+#elif defined(Q_WS_QWS) || defined(Q_WS_QPA)
typedef void * HANDLE;
#elif defined(Q_OS_SYMBIAN)
typedef unsigned long int HANDLE; // equivalent to TUint32
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index 2bc33d3097..f097f2acaa 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.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
@@ -466,15 +466,18 @@
\value TextWordWrap Breaks lines at appropriate points, e.g. at word
boundaries.
\value TextWrapAnywhere Breaks lines anywhere, even within words.
- \value TextHideMnemonic Same as Qt::TextShowMnemonic but doesn't draw the underlines.
- \value TextDontPrint Treat this text as "hidden" and don't print
- it.
- \value IncludeTrailingSpaces When this option is set, QTextLine::naturalTextWidth() and naturalTextRect() will
- return a value that includes the width of trailing spaces in the text; otherwise
- this width is excluded.
+ \value TextHideMnemonic Same as Qt::TextShowMnemonic but doesn't draw
+ the underlines.
+ \value TextDontPrint Treat this text as "hidden" and don't print it.
+ \value IncludeTrailingSpaces When this option is set,
+ QTextLine::naturalTextWidth() and naturalTextRect() will
+ return a value that includes the width of trailing spaces in the
+ text; otherwise this width is excluded.
\value TextIncludeTrailingSpaces Same as IncludeTrailingSpaces
\value TextJustificationForced Ensures that text lines are justified.
+ \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
@@ -487,7 +490,6 @@
\omitvalue WordBreak
\omitvalue TextForceLeftToRight
\omitvalue TextForceRightToLeft
- \omitvalue TextLongestVariant Always use the longest variant when computing the size of a multi-variant string.
You can use as many modifier flags as you want, except that
Qt::TextSingleLine and Qt::TextWordWrap cannot be combined.
@@ -514,9 +516,11 @@
delivery at a later time.
\value AutoConnection
- (default) Same as DirectConnection, if the emitter and
- receiver are in the same thread. Same as QueuedConnection,
- if the emitter and receiver are in different threads.
+ (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/io.pri b/src/corelib/io/io.pri
index f81ffafe41..4d4ae21b79 100644
--- a/src/corelib/io/io.pri
+++ b/src/corelib/io/io.pri
@@ -83,7 +83,7 @@ win32 {
SOURCES += io/qprocess_unix.cpp
SOURCES += io/qfilesystemiterator_unix.cpp
}
- macx-*: {
+ !nacl:macx-*: {
HEADERS += io/qfilesystemwatcher_fsevents_p.h
SOURCES += io/qfilesystemengine_mac.cpp
SOURCES += io/qsettings_mac.cpp io/qfilesystemwatcher_fsevents.cpp
@@ -99,9 +99,11 @@ win32 {
io/qfilesystemwatcher_dnotify_p.h
}
- freebsd-*|macx-*|darwin-*|openbsd-*:{
- SOURCES += io/qfilesystemwatcher_kqueue.cpp
- HEADERS += io/qfilesystemwatcher_kqueue_p.h
+ !nacl {
+ freebsd-*|macx-*|darwin-*|openbsd-*:{
+ SOURCES += io/qfilesystemwatcher_kqueue.cpp
+ HEADERS += io/qfilesystemwatcher_kqueue_p.h
+ }
}
symbian {
diff --git a/src/corelib/io/qfilesystemwatcher_fsevents.cpp b/src/corelib/io/qfilesystemwatcher_fsevents.cpp
index d3276bdb19..0f9679259f 100644
--- a/src/corelib/io/qfilesystemwatcher_fsevents.cpp
+++ b/src/corelib/io/qfilesystemwatcher_fsevents.cpp
@@ -45,6 +45,8 @@
#include "qfilesystemwatcher.h"
#include "qfilesystemwatcher_fsevents_p.h"
+#ifndef QT_NO_FILESYSTEMWATCHER
+
#include <qdebug.h>
#include <qfile.h>
#include <qdatetime.h>
@@ -487,3 +489,4 @@ void QFSEventsFileSystemWatcherEngine::run()
}
QT_END_NAMESPACE
+#endif //QT_NO_FILESYSTEMWATCHER
diff --git a/src/corelib/io/qfilesystemwatcher_fsevents_p.h b/src/corelib/io/qfilesystemwatcher_fsevents_p.h
index b0462b6926..c888c614d1 100644
--- a/src/corelib/io/qfilesystemwatcher_fsevents_p.h
+++ b/src/corelib/io/qfilesystemwatcher_fsevents_p.h
@@ -56,6 +56,8 @@
#include "qfilesystemwatcher_p.h"
+#ifndef QT_NO_FILESYSTEMWATCHER
+
#include <QtCore/qmutex.h>
#include <QtCore/qwaitcondition.h>
#include <QtCore/qthread.h>
@@ -123,6 +125,8 @@ private:
#endif
};
+#endif //QT_NO_FILESYSTEMWATCHER
+
#endif
QT_END_NAMESPACE
diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp
index 4740a8974b..dc18ae77e7 100644
--- a/src/corelib/io/qfilesystemwatcher_inotify.cpp
+++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp
@@ -353,24 +353,24 @@ void QInotifyFileSystemWatcherEngine::readFromInotify()
ioctl(inotifyFd, FIONREAD, (char *) &buffSize);
QVarLengthArray<char, 4096> buffer(buffSize);
buffSize = read(inotifyFd, buffer.data(), buffSize);
- const char *at = buffer.data();
- const char * const end = at + buffSize;
+ char *at = buffer.data();
+ char * const end = at + buffSize;
- QMap<int, inotify_event> eventForId;
+ QMap<int, inotify_event *> eventForId;
while (at < end) {
- const inotify_event *event = reinterpret_cast<const inotify_event *>(at);
+ inotify_event *event = reinterpret_cast<inotify_event *>(at);
if (eventForId.contains(event->wd))
- eventForId[event->wd].mask |= event->mask;
+ eventForId[event->wd]->mask |= event->mask;
else
- eventForId.insert(event->wd, *event);
+ eventForId.insert(event->wd, event);
at += sizeof(inotify_event) + event->len;
}
- QMap<int, inotify_event>::const_iterator it = eventForId.constBegin();
+ QMap<int, inotify_event *>::const_iterator it = eventForId.constBegin();
while (it != eventForId.constEnd()) {
- inotify_event event = *it;
+ const inotify_event &event = **it;
++it;
// qDebug() << "inotify event, wd" << event.wd << "mask" << hex << event.mask;
diff --git a/src/corelib/io/qfilesystemwatcher_kqueue.cpp b/src/corelib/io/qfilesystemwatcher_kqueue.cpp
index 378ad20af2..79607925d9 100644
--- a/src/corelib/io/qfilesystemwatcher_kqueue.cpp
+++ b/src/corelib/io/qfilesystemwatcher_kqueue.cpp
@@ -45,6 +45,8 @@
#include "qfilesystemwatcher_kqueue_p.h"
#include "private/qcore_unix_p.h"
+#ifndef QT_NO_FILESYSTEMWATCHER
+
#include <qdebug.h>
#include <qfile.h>
#include <qsocketnotifier.h>
@@ -343,4 +345,6 @@ process_next_event:
}
}
+#endif //QT_NO_FILESYSTEMWATCHER
+
QT_END_NAMESPACE
diff --git a/src/corelib/io/qfilesystemwatcher_kqueue_p.h b/src/corelib/io/qfilesystemwatcher_kqueue_p.h
index eda646b92a..edc20ae75d 100644
--- a/src/corelib/io/qfilesystemwatcher_kqueue_p.h
+++ b/src/corelib/io/qfilesystemwatcher_kqueue_p.h
@@ -60,6 +60,7 @@
#include <QtCore/qthread.h>
#include <QtCore/qvector.h>
+#ifndef QT_NO_FILESYSTEMWATCHER
struct kevent;
QT_BEGIN_NAMESPACE
@@ -92,4 +93,5 @@ private:
QT_END_NAMESPACE
+#endif //QT_NO_FILESYSTEMWATCHER
#endif // FILEWATCHER_KQUEUE_P_H
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/qresource.cpp b/src/corelib/io/qresource.cpp
index 929885c390..98b1dccb7d 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -580,7 +580,7 @@ QResource::addSearchPath(const QString &path)
\obsolete
Use QDir::searchPaths() instead.
-
+
Returns the current search path list. This list is consulted when
creating a relative resource.
@@ -928,7 +928,7 @@ public:
}
};
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) && ! defined (Q_OS_NACL)
#define QT_USE_MMAP
#endif
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index f25c272e6e..7235459126 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;
@@ -1124,7 +1130,7 @@ static void initDefaultPaths(QMutexLocker *locker)
if (env == 0) {
userPath = homePath;
userPath += QLatin1Char('/');
-#ifdef Q_WS_QWS
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA)
userPath += QLatin1String("Settings");
#else
userPath += QLatin1String(".config");
@@ -1229,16 +1235,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();
}
}
@@ -3504,7 +3515,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/io/qsettings_p.h b/src/corelib/io/qsettings_p.h
index ec345beffe..5ff4d96f5c 100644
--- a/src/corelib/io/qsettings_p.h
+++ b/src/corelib/io/qsettings_p.h
@@ -70,7 +70,7 @@
QT_BEGIN_NAMESPACE
-#if defined(Q_WS_QWS)
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA)
#define QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
#endif
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 6452c0fc80..6ec556205d 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -6048,6 +6048,14 @@ QUrl &QUrl::operator =(const QString &url)
return *this;
}
+/*!
+ \fn void QUrl::swap(QUrl &other)
+ \since 4.8
+
+ Swaps URL \a other with this URL. This operation is very
+ fast and never fails.
+*/
+
/*! \internal
Forces a detach.
diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h
index 563be5fd19..63fe98dcae 100644
--- a/src/corelib/io/qurl.h
+++ b/src/corelib/io/qurl.h
@@ -100,6 +100,8 @@ public:
#endif
~QUrl();
+ inline void swap(QUrl &other) { qSwap(d, other.d); }
+
void setUrl(const QString &url);
void setUrl(const QString &url, ParsingMode mode);
// ### Qt 5: merge the two setUrl() functions, with mode = TolerantMode
diff --git a/src/corelib/kernel/kernel.pri b/src/corelib/kernel/kernel.pri
index bd674a5850..93818d1c13 100644
--- a/src/corelib/kernel/kernel.pri
+++ b/src/corelib/kernel/kernel.pri
@@ -80,12 +80,12 @@ wince*: {
kernel/qfunctions_wince.h
}
-mac:!embedded {
+mac:!embedded:!qpa{
SOURCES += \
kernel/qcoreapplication_mac.cpp
}
-mac {
+mac:!nacl {
SOURCES += \
kernel/qcore_mac.cpp
}
diff --git a/src/corelib/kernel/qabstractitemmodel.cpp b/src/corelib/kernel/qabstractitemmodel.cpp
index 4fc97923d5..7e1ed9d21f 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}
*/
@@ -1336,14 +1336,13 @@ void QAbstractItemModelPrivate::columnsRemoved(const QModelIndex &parent,
layoutChanged(). In other words, when the structure changes:
\list
- \o Call beginLayoutChanged()
+ \o emit layoutAboutToBeChanged
\o Remember the QModelIndex that will change
\o Update your internal data
\o Call changePersistentIndex()
- \o Call endLayoutChanged()
+ \o emit layoutChanged
\endlist
-
\sa layoutAboutToBeChanged(), dataChanged(), headerDataChanged(), modelReset(),
changePersistentIndex()
*/
@@ -1761,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)
@@ -1798,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
@@ -1815,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
{
@@ -1831,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)
{
@@ -2637,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;
@@ -2649,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();
}
@@ -2861,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;
@@ -2873,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/qcore_mac_p.h b/src/corelib/kernel/qcore_mac_p.h
index 9591f0860f..22b6a36cd9 100644
--- a/src/corelib/kernel/qcore_mac_p.h
+++ b/src/corelib/kernel/qcore_mac_p.h
@@ -68,7 +68,15 @@
# undef qDebug
#endif
+#if defined(QT_BUILD_QMAKE) || defined(QT_BOOTSTRAPPED)
#include <ApplicationServices/ApplicationServices.h>
+#else
+#include <CoreFoundation/CoreFoundation.h>
+#endif
+
+#ifndef QT_NO_CORESERVICES
+#include <CoreServices/CoreServices.h>
+#endif
#undef DEBUG
#ifdef OLD_DEBUG
diff --git a/src/corelib/kernel/qcore_unix.cpp b/src/corelib/kernel/qcore_unix.cpp
index e0d92c047b..685576bc73 100644
--- a/src/corelib/kernel/qcore_unix.cpp
+++ b/src/corelib/kernel/qcore_unix.cpp
@@ -42,7 +42,8 @@
#include "qcore_unix_p.h"
#include "qelapsedtimer.h"
-#ifndef Q_OS_VXWORKS
+#ifdef Q_OS_NACL
+#elif !defined (Q_OS_VXWORKS)
# if !defined(Q_OS_HPUX) || defined(__ia64)
# include <sys/select.h>
# endif
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 4abe0aec4a..0f95ee0875 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -416,11 +416,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/qcoreevent.h b/src/corelib/kernel/qcoreevent.h
index 9d3513ae90..4c91aaffa0 100644
--- a/src/corelib/kernel/qcoreevent.h
+++ b/src/corelib/kernel/qcoreevent.h
@@ -328,6 +328,7 @@ private:
friend class QETWidget;
friend class QGraphicsView;
friend class QGraphicsViewPrivate;
+ friend class QGraphicsScene;
friend class QGraphicsScenePrivate;
#ifndef QT_NO_GESTURES
friend class QGestureManager;
diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp
index 8390275bb7..8d257803fa 100644
--- a/src/corelib/kernel/qeventdispatcher_glib.cpp
+++ b/src/corelib/kernel/qeventdispatcher_glib.cpp
@@ -180,6 +180,8 @@ static gboolean timerSourceCheck(GSource *source)
static gboolean timerSourceDispatch(GSource *source, GSourceFunc, gpointer)
{
GTimerSource *timerSource = reinterpret_cast<GTimerSource *>(source);
+ if (timerSource->processEventsFlags & QEventLoop::X11ExcludeTimers)
+ return true;
timerSource->runWithIdlePriority = true;
(void) timerSource->timerList.activateTimers();
return true; // ??? don't remove, right again?
@@ -311,6 +313,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 +395,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 87d6a49775..61541199db 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_unix.cpp b/src/corelib/kernel/qeventdispatcher_unix.cpp
index f50994ce9a..b2b980666d 100644
--- a/src/corelib/kernel/qeventdispatcher_unix.cpp
+++ b/src/corelib/kernel/qeventdispatcher_unix.cpp
@@ -112,7 +112,9 @@ QEventDispatcherUNIXPrivate::QEventDispatcherUNIXPrivate()
bool pipefail = false;
// initialize the common parts of the event loop
-#if defined(Q_OS_INTEGRITY)
+#if defined(Q_OS_NACL)
+ // do nothing.
+#elif defined(Q_OS_INTEGRITY)
// INTEGRITY doesn't like a "select" on pipes, so use socketpair instead
if (socketpair(AF_INET, SOCK_STREAM, PF_INET, thread_pipe) == -1) {
perror("QEventDispatcherUNIXPrivate(): Unable to create socket pair");
@@ -157,7 +159,9 @@ QEventDispatcherUNIXPrivate::QEventDispatcherUNIXPrivate()
QEventDispatcherUNIXPrivate::~QEventDispatcherUNIXPrivate()
{
-#if defined(Q_OS_VXWORKS)
+#if defined(Q_OS_NACL)
+ // do nothing.
+#elif defined(Q_OS_VXWORKS)
close(thread_pipe[0]);
char name[20];
@@ -312,7 +316,7 @@ int QEventDispatcherUNIXPrivate::doSelect(QEventLoop::ProcessEventsFlags flags,
QTimerInfoList::QTimerInfoList()
{
-#if (_POSIX_MONOTONIC_CLOCK-0 <= 0) && !defined(Q_OS_MAC)
+#if (_POSIX_MONOTONIC_CLOCK-0 <= 0) && !defined(Q_OS_MAC) && !defined(Q_OS_NACL)
if (!QElapsedTimer::isMonotonic()) {
// not using monotonic timers, initialize the timeChanged() machinery
previousTime = qt_gettime();
@@ -364,6 +368,10 @@ timeval qAbs(const timeval &t)
*/
bool QTimerInfoList::timeChanged(timeval *delta)
{
+#ifdef Q_OS_NACL
+ Q_UNUSED(delta)
+ return false; // Calling "times" crashes.
+#endif
struct tms unused;
clock_t currentTicks = times(&unused);
diff --git a/src/corelib/kernel/qeventdispatcher_unix_p.h b/src/corelib/kernel/qeventdispatcher_unix_p.h
index 060a1634a1..e1b6b1d02a 100644
--- a/src/corelib/kernel/qeventdispatcher_unix_p.h
+++ b/src/corelib/kernel/qeventdispatcher_unix_p.h
@@ -64,7 +64,7 @@
# include <sys/times.h>
#else
# include <sys/time.h>
-# if !defined(Q_OS_HPUX) || defined(__ia64)
+# if (!defined(Q_OS_HPUX) || defined(__ia64)) && !defined(Q_OS_NACL)
# include <sys/select.h>
# endif
#endif
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index 153ccdf7b2..aa7e32f209 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -78,6 +78,8 @@ extern uint qGlobalPostedEventsCount();
#ifndef QT_NO_GESTURES
#ifndef WM_GESTURE
# define WM_GESTURE 0x0119
+#endif
+#ifndef WM_GESTURENOTIFY
# define WM_GESTURENOTIFY 0x011A
#endif
#endif // QT_NO_GESTURES
@@ -354,9 +356,6 @@ public:
// for controlling when to send posted events
QAtomicInt serialNumber;
int lastSerialNumber;
-#ifndef Q_OS_WINCE
- int lastMessageTime;
-#endif
QAtomicInt wakeUps;
// timers
@@ -381,11 +380,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), wakeUps(0)
{
resolveTimerAPI();
}
@@ -500,9 +495,6 @@ LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPA
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;
@@ -521,11 +513,7 @@ LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int code, WPARAM wp, LPARAM lp)
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
- ) {
+ && PeekMessage(&unused, 0, WM_TIMER, WM_TIMER, PM_NOREMOVE) == 0)) {
// no more input or timer events in the message queue or more than 10ms has elapsed since
// we send posted events, we can allow posted events to be sent now
(void) d->wakeUps.fetchAndStoreRelease(0);
diff --git a/src/corelib/kernel/qmath.qdoc b/src/corelib/kernel/qmath.qdoc
index 48f74b6426..2c03b9a769 100644
--- a/src/corelib/kernel/qmath.qdoc
+++ b/src/corelib/kernel/qmath.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/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/qobject.cpp b/src/corelib/kernel/qobject.cpp
index ceffa66c8b..7fe9c52a56 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -127,6 +127,7 @@ extern "C" Q_CORE_EXPORT void qt_removeObject(QObject *)
void (*QAbstractDeclarativeData::destroyed)(QAbstractDeclarativeData *, QObject *) = 0;
void (*QAbstractDeclarativeData::parentChanged)(QAbstractDeclarativeData *, QObject *, QObject *) = 0;
+void (*QAbstractDeclarativeData::objectNameChanged)(QAbstractDeclarativeData *, QObject *) = 0;
QObjectData::~QObjectData() {}
@@ -1067,7 +1068,12 @@ QString QObject::objectName() const
void QObject::setObjectName(const QString &name)
{
Q_D(QObject);
+ bool objectNameChanged = d->declarativeData && d->objectName != name;
+
d->objectName = name;
+
+ if (objectNameChanged)
+ d->declarativeData->objectNameChanged(d->declarativeData, this);
}
@@ -3502,9 +3508,7 @@ void QMetaObject::activate(QObject *sender, const QMetaObject *m, int local_sign
// determine if this connection should be sent immediately or
// put into the event queue
- if ((c->connectionType == Qt::AutoConnection
- && (!receiverInSameThread
- || receiver->d_func()->threadData != sender->d_func()->threadData))
+ if ((c->connectionType == Qt::AutoConnection && !receiverInSameThread)
|| (c->connectionType == Qt::QueuedConnection)) {
queued_activate(sender, signal_absolute_index, c, argv ? argv : empty_argv);
continue;
diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h
index 82023d4001..effd3e6d62 100644
--- a/src/corelib/kernel/qobject_p.h
+++ b/src/corelib/kernel/qobject_p.h
@@ -90,6 +90,7 @@ class Q_CORE_EXPORT QAbstractDeclarativeData
public:
static void (*destroyed)(QAbstractDeclarativeData *, QObject *);
static void (*parentChanged)(QAbstractDeclarativeData *, QObject *, QObject *);
+ static void (*objectNameChanged)(QAbstractDeclarativeData *, QObject *);
};
class Q_CORE_EXPORT QObjectPrivate : public QObjectData
diff --git a/src/corelib/kernel/qsharedmemory.cpp b/src/corelib/kernel/qsharedmemory.cpp
index 0782ffe305..6d7c7a407d 100644
--- a/src/corelib/kernel/qsharedmemory.cpp
+++ b/src/corelib/kernel/qsharedmemory.cpp
@@ -73,14 +73,13 @@ QSharedMemoryPrivate::makePlatformSafeKey(const QString &key,
QString part1 = key;
part1.replace(QRegExp(QLatin1String("[^A-Za-z]")), QString());
result.append(part1);
-#ifdef Q_OS_SYMBIAN
- return result.left(KMaxKernelName);
-#endif
QByteArray hex = QCryptographicHash::hash(key.toUtf8(), QCryptographicHash::Sha1).toHex();
result.append(QLatin1String(hex));
#ifdef Q_OS_WIN
return result;
+#elif defined(Q_OS_SYMBIAN)
+ return result.left(KMaxKernelName);
#else
return QDir::tempPath() + QLatin1Char('/') + result;
#endif
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index feb85ce714..aa070f118c 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -1808,6 +1808,14 @@ QVariant& QVariant::operator=(const QVariant &variant)
}
/*!
+ \fn void QVariant::swap(QVariant &other)
+ \since 4.8
+
+ Swaps variant \a other with this variant. This operation is very
+ fast and never fails.
+*/
+
+/*!
\fn void QVariant::detach()
\internal
diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h
index b2679548c8..611db8bd83 100644
--- a/src/corelib/kernel/qvariant.h
+++ b/src/corelib/kernel/qvariant.h
@@ -224,6 +224,8 @@ class Q_CORE_EXPORT QVariant
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QVariant &other) { qSwap(d, other.d); }
+
Type type() const;
int userType() const;
const char *typeName() const;
diff --git a/src/corelib/plugin/qelfparser_p.cpp b/src/corelib/plugin/qelfparser_p.cpp
index 2e77ae7be8..c60b3d5973 100644
--- a/src/corelib/plugin/qelfparser_p.cpp
+++ b/src/corelib/plugin/qelfparser_p.cpp
@@ -39,8 +39,11 @@
**
****************************************************************************/
-#include "qlibrary_p.h"
#include "qelfparser_p.h"
+
+#if defined (Q_OF_ELF) && defined(Q_CC_GNU)
+
+#include "qlibrary_p.h"
#include <qdebug.h>
QT_BEGIN_NAMESPACE
@@ -139,7 +142,7 @@ int QElfParser::parse(const char *dataStart, ulong fdlen, const QString &library
qelfhalf_t e_shtrndx = read<qelfhalf_t> (data);
data += sizeof(qelfhalf_t); // e_shtrndx
- if ((e_shnum * e_shentsize) > fdlen) {
+ if ((quint32)(e_shnum * e_shentsize) > fdlen) {
if (lib)
lib->errorString = QLibrary::tr("'%1' is an invalid ELF object (%2)").arg(library)
.arg(QLatin1String("announced %2 sections, each %3 bytes, exceed file size"))
@@ -165,7 +168,7 @@ int QElfParser::parse(const char *dataStart, ulong fdlen, const QString &library
parseSectionHeader(dataStart + soff, &strtab);
m_stringTableFileOffset = strtab.offset;
- if ((m_stringTableFileOffset + e_shentsize) >= fdlen || m_stringTableFileOffset == 0) {
+ if ((quint32)(m_stringTableFileOffset + e_shentsize) >= fdlen || m_stringTableFileOffset == 0) {
if (lib)
lib->errorString = QLibrary::tr("'%1' is an invalid ELF object (%2)").arg(library)
.arg(QLatin1String("string table seems to be at %1"))
@@ -232,3 +235,4 @@ int QElfParser::parse(const char *dataStart, ulong fdlen, const QString &library
QT_END_NAMESPACE
+#endif // defined(Q_OF_ELF) && defined(Q_CC_GNU)
diff --git a/src/corelib/plugin/qelfparser_p.h b/src/corelib/plugin/qelfparser_p.h
index 380d5a1e16..8087da5597 100644
--- a/src/corelib/plugin/qelfparser_p.h
+++ b/src/corelib/plugin/qelfparser_p.h
@@ -56,6 +56,8 @@
#include <qendian.h>
#include <qglobal.h>
+#if defined (Q_OF_ELF) && defined(Q_CC_GNU)
+
QT_BEGIN_NAMESPACE
class QString;
@@ -99,5 +101,6 @@ public:
QT_END_NAMESPACE
-#endif // QELFPARSER_P_H
+#endif // defined(Q_OF_ELF) && defined(Q_CC_GNU)
+#endif // QELFPARSER_P_H
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
index 5683c666c0..fc8721cc16 100644
--- a/src/corelib/plugin/qlibrary.cpp
+++ b/src/corelib/plugin/qlibrary.cpp
@@ -1,3 +1,4 @@
+
/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -385,7 +386,7 @@ static bool qt_unix_query(const QString &library, uint *version, bool *debug, QB
}
} else if (r != QElfParser::Ok) {
if (lib && qt_debug_component()) {
- qWarning(qPrintable(lib->errorString));
+ qWarning("QElfParser: %s",qPrintable(lib->errorString));
}
return false;
}
diff --git a/src/corelib/plugin/qplugin.qdoc b/src/corelib/plugin/qplugin.qdoc
index b02cfbffbd..9183350314 100644
--- a/src/corelib/plugin/qplugin.qdoc
+++ b/src/corelib/plugin/qplugin.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/src/corelib/plugin/qsystemlibrary.cpp b/src/corelib/plugin/qsystemlibrary.cpp
index 1b8d8fea75..2386cd66b8 100644
--- a/src/corelib/plugin/qsystemlibrary.cpp
+++ b/src/corelib/plugin/qsystemlibrary.cpp
@@ -57,8 +57,8 @@
The search order is the same as the order in DLL Safe search mode Windows,
except that we don't search:
* The current directory
- * The 16-bit system directory. (normally c:\windows\system)
- * The Windows directory. (normally c:\windows)
+ * The 16-bit system directory. (normally \c{c:\windows\system})
+ * The Windows directory. (normally \c{c:\windows})
This means that the effective search order is:
1. Application path.
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp
index 09558a9aab..98f7931dcb 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 2c63dfcca1..69b70cb4d2 100644
--- a/src/corelib/thread/qthread.cpp
+++ b/src/corelib/thread/qthread.cpp
@@ -667,9 +667,9 @@ QThread::Priority QThread::priority() const
to finish will be woken up.
\warning This function is dangerous and its use is discouraged.
- The thread can be terminate at any point in its code path.
+ The thread can be terminated at any point in its code path.
Threads can be terminated while modifying data. There is no
- chance for the thread to cleanup after itself, unlock any held
+ chance for the thread to clean up after itself, unlock any held
mutexes, etc. In short, use this function only if absolutely
necessary.
diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
index a7601b654a..f508c0a4c0 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -83,7 +83,9 @@
# define old_qDebug qDebug
# undef qDebug
# endif
+#ifndef QT_NO_CORESERVICES
# include <CoreServices/CoreServices.h>
+#endif //QT_NO_CORESERVICES
# ifdef old_qDebug
# undef qDebug
@@ -142,6 +144,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 +193,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 +301,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;
@@ -313,6 +345,7 @@ void QThreadPrivate::finish(void *arg)
emit thr->terminated();
d->terminated = false;
emit thr->finished();
+ QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
if (d->data->eventDispatcher) {
d->data->eventDispatcher->closingDown();
@@ -358,7 +391,7 @@ int QThread::idealThreadCount()
{
int cores = -1;
-#if defined(Q_OS_MAC)
+#if defined(Q_OS_MAC) && !defined(Q_WS_QPA)
// Mac OS X
cores = MPProcessorsScheduled();
#elif defined(Q_OS_HPUX)
@@ -476,6 +509,7 @@ void QThread::usleep(unsigned long usecs)
// 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
+#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0)
static bool calculateUnixPriority(int priority, int *sched_policy, int *sched_priority)
{
#ifdef SCHED_IDLE
@@ -503,6 +537,7 @@ static bool calculateUnixPriority(int priority, int *sched_policy, int *sched_pr
*sched_priority = prio;
return true;
}
+#endif
void QThread::start(Priority priority)
{
diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
index f0cbe8dab3..4a967ed3bc 100644
--- a/src/corelib/thread/qthread_win.cpp
+++ b/src/corelib/thread/qthread_win.cpp
@@ -332,6 +332,7 @@ void QThreadPrivate::finish(void *arg, bool lockAnyway)
emit thr->terminated();
d->terminated = false;
emit thr->finished();
+ QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
if (d->data->eventDispatcher) {
d->data->eventDispatcher->closingDown();
diff --git a/src/corelib/thread/qwaitcondition.qdoc b/src/corelib/thread/qwaitcondition.qdoc
index b21285e305..aaed420254 100644
--- a/src/corelib/thread/qwaitcondition.qdoc
+++ b/src/corelib/thread/qwaitcondition.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/src/corelib/tools/qalgorithms.qdoc b/src/corelib/tools/qalgorithms.qdoc
index 4a4f5921b9..898f9400da 100644
--- a/src/corelib/tools/qalgorithms.qdoc
+++ b/src/corelib/tools/qalgorithms.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/src/corelib/tools/qbitarray.cpp b/src/corelib/tools/qbitarray.cpp
index 04018ba20f..a1ad787e09 100644
--- a/src/corelib/tools/qbitarray.cpp
+++ b/src/corelib/tools/qbitarray.cpp
@@ -418,6 +418,13 @@ void QBitArray::fill(bool value, int begin, int end)
this bit array.
*/
+/*! \fn void QBitArray::swap(QBitArray &other)
+ \since 4.8
+
+ Swaps bit array \a other with this bit array. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QBitArray::operator==(const QBitArray &other) const
Returns true if \a other is equal to this bit array; otherwise
diff --git a/src/corelib/tools/qbitarray.h b/src/corelib/tools/qbitarray.h
index bd79904ec6..ddda5e7af0 100644
--- a/src/corelib/tools/qbitarray.h
+++ b/src/corelib/tools/qbitarray.h
@@ -68,6 +68,8 @@ public:
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QBitArray &other) { qSwap(d, other.d); }
+
inline int size() const { return (d.size() << 3) - *d.constData(); }
inline int count() const { return (d.size() << 3) - *d.constData(); }
int count(bool on) const;
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp
index 6be3416020..f26d8783f6 100644
--- a/src/corelib/tools/qbytearray.cpp
+++ b/src/corelib/tools/qbytearray.cpp
@@ -541,6 +541,11 @@ QByteArray qUncompress(const uchar* data, int nbytes)
forever {
ulong alloc = len;
+ if (len >= (1 << 31) - sizeof(QByteArray::Data)) {
+ //QByteArray does not support that huge size anyway.
+ qWarning("qUncompress: Input data is corrupted");
+ return QByteArray();
+ }
QByteArray::Data *p = static_cast<QByteArray::Data *>(qRealloc(d.data(), sizeof(QByteArray::Data) + alloc));
if (!p) {
// we are not allowed to crash here when compiling with QT_NO_EXCEPTIONS
@@ -556,6 +561,11 @@ QByteArray qUncompress(const uchar* data, int nbytes)
switch (res) {
case Z_OK:
if (len != alloc) {
+ if (len >= (1 << 31) - sizeof(QByteArray::Data)) {
+ //QByteArray does not support that huge size anyway.
+ qWarning("qUncompress: Input data is corrupted");
+ return QByteArray();
+ }
QByteArray::Data *p = static_cast<QByteArray::Data *>(qRealloc(d.data(), sizeof(QByteArray::Data) + len));
if (!p) {
// we are not allowed to crash here when compiling with QT_NO_EXCEPTIONS
@@ -904,6 +914,13 @@ QByteArray &QByteArray::operator=(const char *str)
return *this;
}
+/*! \fn void QByteArray::swap(QByteArray &other)
+ \since 4.8
+
+ Swaps byte array \a other with this byte array. This operation is very
+ fast and never fails.
+*/
+
/*! \fn int QByteArray::size() const
Returns the number of bytes in this byte array.
@@ -1816,7 +1833,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);
}
@@ -1857,7 +1874,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/qbytearray.h b/src/corelib/tools/qbytearray.h
index 3cdcaabd4e..b625f4c5e2 100644
--- a/src/corelib/tools/qbytearray.h
+++ b/src/corelib/tools/qbytearray.h
@@ -149,6 +149,8 @@ public:
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QByteArray &other) { qSwap(d, other.d); }
+
inline int size() const;
bool isEmpty() const;
void resize(int size);
diff --git a/src/corelib/tools/qcache.qdoc b/src/corelib/tools/qcache.qdoc
index 71e0483cdf..0a3c971ec2 100644
--- a/src/corelib/tools/qcache.qdoc
+++ b/src/corelib/tools/qcache.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/src/corelib/tools/qcontiguouscache.cpp b/src/corelib/tools/qcontiguouscache.cpp
index 3ba5186af9..7880bd3a3d 100644
--- a/src/corelib/tools/qcontiguouscache.cpp
+++ b/src/corelib/tools/qcontiguouscache.cpp
@@ -194,6 +194,13 @@ MyRecord record(int row) const
Assigns \a other to this cache and returns a reference to this cache.
*/
+/*! \fn void QContiguousCache::swap(QContiguousCache<T> &other)
+ \since 4.8
+
+ Swaps cache \a other with this cache. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QContiguousCache::operator==(const QContiguousCache<T> &other) const
Returns true if \a other is equal to this cache; otherwise returns false.
diff --git a/src/corelib/tools/qcontiguouscache.h b/src/corelib/tools/qcontiguouscache.h
index 4c1a846633..3d0a1593b5 100644
--- a/src/corelib/tools/qcontiguouscache.h
+++ b/src/corelib/tools/qcontiguouscache.h
@@ -114,6 +114,7 @@ public:
inline QContiguousCache<T> &operator=(QContiguousCache<T> &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QContiguousCache<T> &other) { qSwap(d, other.d); }
bool operator==(const QContiguousCache<T> &other) const;
inline bool operator!=(const QContiguousCache<T> &other) const { return !(*this == other); }
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index f21aa2ea1b..6a20c7afd3 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -1630,6 +1630,7 @@ QString QTime::toString(Qt::DateFormat format) const
\endtable
If the datetime is invalid, an empty string will be returned.
+ If \a format is empty, the default format "hh:mm:ss" is used.
\sa QDate::toString() QDateTime::toString()
*/
diff --git a/src/corelib/tools/qelapsedtimer.cpp b/src/corelib/tools/qelapsedtimer.cpp
index 4adddf9bb9..28d34503cd 100644
--- a/src/corelib/tools/qelapsedtimer.cpp
+++ b/src/corelib/tools/qelapsedtimer.cpp
@@ -83,7 +83,7 @@ QT_BEGIN_NAMESPACE
function, which can be used to determine if a certain number of
milliseconds has already elapsed:
- \snippet doc/src/snippets/qelapsedtimer/main.cpp 1
+ \snippet doc/src/snippets/qelapsedtimer/main.cpp 2
\section1 Reference clocks
diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp
index 2971c063c1..3dc9c92fff 100644
--- a/src/corelib/tools/qhash.cpp
+++ b/src/corelib/tools/qhash.cpp
@@ -730,6 +730,20 @@ void QHashData::checkSanity()
Assigns \a other to this hash and returns a reference to this hash.
*/
+/*! \fn void QHash::swap(QHash<Key, T> &other)
+ \since 4.8
+
+ Swaps hash \a other with this hash. This operation is very
+ fast and never fails.
+*/
+
+/*! \fn void QMultiHash::swap(QMultiHash<Key, T> &other)
+ \since 4.8
+
+ Swaps hash \a other with this hash. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QHash::operator==(const QHash<Key, T> &other) const
Returns true if \a other is equal to this hash; otherwise returns
diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h
index 992ff33b94..21fca2dd05 100644
--- a/src/corelib/tools/qhash.h
+++ b/src/corelib/tools/qhash.h
@@ -287,6 +287,7 @@ public:
inline QHash<Key, T> &operator=(QHash<Key, T> &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QHash<Key, T> &other) { qSwap(d, other.d); }
bool operator==(const QHash<Key, T> &other) const;
inline bool operator!=(const QHash<Key, T> &other) const { return !(*this == other); }
@@ -925,6 +926,7 @@ class QMultiHash : public QHash<Key, T>
public:
QMultiHash() {}
QMultiHash(const QHash<Key, T> &other) : QHash<Key, T>(other) {}
+ inline void swap(QMultiHash<Key, T> &other) { QHash<Key, T>::swap(other); } // prevent QMultiHash<->QHash swaps
inline typename QHash<Key, T>::iterator replace(const Key &key, const T &value)
{ return QHash<Key, T>::insert(key, value); }
diff --git a/src/corelib/tools/qiterator.qdoc b/src/corelib/tools/qiterator.qdoc
index 1e7637b9ee..9cec7ec38c 100644
--- a/src/corelib/tools/qiterator.qdoc
+++ b/src/corelib/tools/qiterator.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/src/corelib/tools/qlinkedlist.cpp b/src/corelib/tools/qlinkedlist.cpp
index 909d940e6f..7b452fc1b8 100644
--- a/src/corelib/tools/qlinkedlist.cpp
+++ b/src/corelib/tools/qlinkedlist.cpp
@@ -147,6 +147,13 @@ QLinkedListData QLinkedListData::shared_null = {
list.
*/
+/*! \fn void QLinkedList::swap(QLinkedList<T> &other)
+ \since 4.8
+
+ Swaps list \a other with this list. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QLinkedList::operator==(const QLinkedList<T> &other) const
Returns true if \a other is equal to this list; otherwise returns
@@ -254,7 +261,7 @@ QLinkedListData QLinkedListData::shared_null = {
\sa insert()
*/
-/*!
+/*!
\fn bool QLinkedList::removeOne(const T &value)
\since 4.4
@@ -830,7 +837,7 @@ QLinkedListData QLinkedListData::shared_null = {
QLinkedList\<T\>::const_iterator allows you to iterate over a
QLinkedList\<T\>. If you want modify the QLinkedList as you iterate
- over it, you must use QLinkedList::const_iterator instead. It is
+ over it, you must use QLinkedList::iterator instead. It is
generally good practice to use QLinkedList::const_iterator on a
non-const QLinkedList as well, unless you need to change the
QLinkedList through the iterator. Const iterators are slightly
diff --git a/src/corelib/tools/qlinkedlist.h b/src/corelib/tools/qlinkedlist.h
index c0879441fd..849bfd3a52 100644
--- a/src/corelib/tools/qlinkedlist.h
+++ b/src/corelib/tools/qlinkedlist.h
@@ -89,6 +89,7 @@ public:
inline QLinkedList<T> &operator=(QLinkedList<T> &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QLinkedList<T> &other) { qSwap(d, other.d); }
bool operator==(const QLinkedList<T> &l) const;
inline bool operator!=(const QLinkedList<T> &l) const { return !(*this == l); }
diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp
index 6cc6fc1657..5706171130 100644
--- a/src/corelib/tools/qlist.cpp
+++ b/src/corelib/tools/qlist.cpp
@@ -602,6 +602,13 @@ void **QListData::erase(void **xi)
list.
*/
+/*! \fn void QList::swap(QList<T> &other)
+ \since 4.8
+
+ Swaps list \a other with this list. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QList::operator==(const QList<T> &other) const
Returns true if \a other is equal to this list; otherwise returns
@@ -936,7 +943,7 @@ void **QListData::erase(void **xi)
This function requires the value type to have an implementation of
\c operator==().
- Note that QList uses 0-based indexes, just like C++ arrays. Negative
+ Note that QList uses 0-based indexes, just like C++ arrays. Negative
indexes are not supported with the exception of the value mentioned
above.
diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h
index 8f988d60a2..b1fcabfa8c 100644
--- a/src/corelib/tools/qlist.h
+++ b/src/corelib/tools/qlist.h
@@ -126,6 +126,7 @@ public:
inline QList &operator=(QList &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QList<T> &other) { qSwap(d, other.d); }
#ifdef Q_COMPILER_INITIALIZER_LISTS
inline QList(std::initializer_list<T> args) : d(&QListData::shared_null)
{ d->ref.ref(); qCopy(args.begin(), args.end(), std::back_inserter(*this)); }
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index 6b1de5ef0e..83d6dcdf87 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
@@ -6637,7 +6637,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 +6653,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 +7308,7 @@ Q_CORE_EXPORT char *qdtoa( double d, int mode, int ndigits, int *decpt, int *sig
Q_CORE_EXPORT double qstrtod(const char *s00, const char **se, bool *ok)
{
+ errno = 0;
double ret = strtod((char*)s00, (char**)se);
if (ok) {
if((ret == 0.0l && errno == ERANGE)
diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h
index 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/qmap.cpp b/src/corelib/tools/qmap.cpp
index 3143ee4081..5a5fffde8a 100644
--- a/src/corelib/tools/qmap.cpp
+++ b/src/corelib/tools/qmap.cpp
@@ -404,6 +404,20 @@ void QMapData::dump()
Assigns \a other to this map and returns a reference to this map.
*/
+/*! \fn void QMap::swap(QMap<Key, T> &other)
+ \since 4.8
+
+ Swaps map \a other with this map. This operation is very
+ fast and never fails.
+*/
+
+/*! \fn void QMultiMap::swap(QMultiMap<Key, T> &other)
+ \since 4.8
+
+ Swaps map \a other with this map. This operation is very
+ fast and never fails.
+*/
+
/*! \fn bool QMap::operator==(const QMap<Key, T> &other) const
Returns true if \a other is equal to this map; otherwise returns
diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h
index ce8fd75f7a..2897529463 100644
--- a/src/corelib/tools/qmap.h
+++ b/src/corelib/tools/qmap.h
@@ -189,6 +189,7 @@ public:
inline QMap<Key, T> &operator=(QMap<Key, T> &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QMap<Key, T> &other) { qSwap(d, other.d); }
#ifndef QT_NO_STL
explicit QMap(const typename std::map<Key, T> &other);
std::map<Key, T> toStdMap() const;
@@ -973,6 +974,7 @@ class QMultiMap : public QMap<Key, T>
public:
QMultiMap() {}
QMultiMap(const QMap<Key, T> &other) : QMap<Key, T>(other) {}
+ inline void swap(QMultiMap<Key, T> &other) { QMap<Key, T>::swap(other); }
inline typename QMap<Key, T>::iterator replace(const Key &key, const T &value)
{ return QMap<Key, T>::insert(key, value); }
diff --git a/src/corelib/tools/qpair.qdoc b/src/corelib/tools/qpair.qdoc
index d49c09eb0c..4ef151e2e6 100644
--- a/src/corelib/tools/qpair.qdoc
+++ b/src/corelib/tools/qpair.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/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/qqueue.cpp b/src/corelib/tools/qqueue.cpp
index 849bb0b473..36026956b2 100644
--- a/src/corelib/tools/qqueue.cpp
+++ b/src/corelib/tools/qqueue.cpp
@@ -91,6 +91,14 @@
*/
/*!
+ \fn void QQueue::swap(QQueue<T> &other)
+ \since 4.8
+
+ Swaps queue \a other with this queue. This operation is very
+ fast and never fails.
+*/
+
+/*!
\fn void QQueue::enqueue(const T& t)
Adds value \a t to the tail of the queue.
diff --git a/src/corelib/tools/qqueue.h b/src/corelib/tools/qqueue.h
index c29134b6f1..4ef1a61023 100644
--- a/src/corelib/tools/qqueue.h
+++ b/src/corelib/tools/qqueue.h
@@ -56,6 +56,7 @@ class QQueue : public QList<T>
public:
inline QQueue() {}
inline ~QQueue() {}
+ inline void swap(QQueue<T> &other) { QList<T>::swap(other); } // prevent QList<->QQueue swaps
inline void enqueue(const T &t) { QList<T>::append(t); }
inline T dequeue() { return QList<T>::takeFirst(); }
inline T &head() { return QList<T>::first(); }
diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp
index 7a26c4f364..5d2a0e3954 100644
--- a/src/corelib/tools/qregexp.cpp
+++ b/src/corelib/tools/qregexp.cpp
@@ -3858,6 +3858,14 @@ QRegExp &QRegExp::operator=(const QRegExp &rx)
}
/*!
+ \fn void QRegExp::swap(QRegExp &other)
+ \since 4.8
+
+ Swaps regular expression \a other with this regular
+ expression. This operation is very fast and never fails.
+*/
+
+/*!
Returns true if this regular expression is equal to \a rx;
otherwise returns false.
diff --git a/src/corelib/tools/qregexp.h b/src/corelib/tools/qregexp.h
index 0b4a702c62..4a74f90dbc 100644
--- a/src/corelib/tools/qregexp.h
+++ b/src/corelib/tools/qregexp.h
@@ -80,6 +80,7 @@ public:
inline QRegExp &operator=(QRegExp &&other)
{ qSwap(priv,other.priv); return *this; }
#endif
+ inline void swap(QRegExp &other) { qSwap(priv, other.priv); }
bool operator==(const QRegExp &rx) const;
inline bool operator!=(const QRegExp &rx) const { return !operator==(rx); }
diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h
index 40d3851f5d..b3a6db6fe4 100644
--- a/src/corelib/tools/qscopedpointer.h
+++ b/src/corelib/tools/qscopedpointer.h
@@ -186,6 +186,18 @@ template <class T, class Cleanup>
Q_INLINE_TEMPLATE void qSwap(QScopedPointer<T, Cleanup> &p1, QScopedPointer<T, Cleanup> &p2)
{ p1.swap(p2); }
+#ifndef QT_NO_STL
+QT_END_NAMESPACE
+namespace std {
+ template <class T, class Cleanup>
+ Q_INLINE_TEMPLATE void swap(QT_PREPEND_NAMESPACE(QScopedPointer)<T, Cleanup> &p1, QT_PREPEND_NAMESPACE(QScopedPointer)<T, Cleanup> &p2)
+ { p1.swap(p2); }
+}
+QT_BEGIN_NAMESPACE
+#endif
+
+
+
namespace QtPrivate {
template <typename X, typename Y> struct QScopedArrayEnsureSameType;
template <typename X> struct QScopedArrayEnsureSameType<X,X> { typedef X* Type; };
diff --git a/src/corelib/tools/qset.h b/src/corelib/tools/qset.h
index dc3c45a046..472078f8dc 100644
--- a/src/corelib/tools/qset.h
+++ b/src/corelib/tools/qset.h
@@ -65,6 +65,7 @@ public:
inline QSet<T> &operator=(QSet<T> &&other)
{ qSwap(q_hash, other.q_hash); return *this; }
#endif
+ inline void swap(QSet<T> &other) { q_hash.swap(other.q_hash); }
inline bool operator==(const QSet<T> &other) const
{ return q_hash == other.q_hash; }
diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc
index d1aca4c779..57368f04c3 100644
--- a/src/corelib/tools/qset.qdoc
+++ b/src/corelib/tools/qset.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
@@ -123,6 +123,13 @@
*/
/*!
+ \fn void QSet::swap(QSet<T> &other)
+
+ Swaps set \a other with this set. This operation is very fast and
+ never fails.
+*/
+
+/*!
\fn bool QSet::operator==(const QSet<T> &other) const
Returns true if the \a other set is equal to this set; otherwise
diff --git a/src/corelib/tools/qshareddata.h b/src/corelib/tools/qshareddata.h
index b646a9d3ce..45456feb54 100644
--- a/src/corelib/tools/qshareddata.h
+++ b/src/corelib/tools/qshareddata.h
@@ -263,6 +263,20 @@ template <class T>
Q_INLINE_TEMPLATE void qSwap(QExplicitlySharedDataPointer<T> &p1, QExplicitlySharedDataPointer<T> &p2)
{ p1.swap(p2); }
+#ifndef QT_NO_STL
+QT_END_NAMESPACE
+namespace std {
+ template <class T>
+ Q_INLINE_TEMPLATE void swap(QT_PREPEND_NAMESPACE(QSharedDataPointer)<T> &p1, QT_PREPEND_NAMESPACE(QSharedDataPointer)<T> &p2)
+ { p1.swap(p2); }
+
+ template <class T>
+ Q_INLINE_TEMPLATE void swap(QT_PREPEND_NAMESPACE(QExplicitlySharedDataPointer)<T> &p1, QT_PREPEND_NAMESPACE(QExplicitlySharedDataPointer)<T> &p2)
+ { p1.swap(p2); }
+}
+QT_BEGIN_NAMESPACE
+#endif
+
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp
index 8f9559a96a..3cc9c456f6 100644
--- a/src/corelib/tools/qsharedpointer.cpp
+++ b/src/corelib/tools/qsharedpointer.cpp
@@ -395,7 +395,7 @@
\section1 Tracking QObject
- QWeakPointer can be used to track deletion classes derives from QObject,
+ QWeakPointer can be used to track deletion classes that derive from QObject,
even if they are not managed by QSharedPointer. When used in that role,
QWeakPointer replaces the older QPointer in all use-cases. QWeakPointer
is also more efficient than QPointer, so it should be preferred in all
@@ -1163,7 +1163,7 @@
\since 4.6
\brief The qSharedPointerObjectCast function is for casting a shared pointer.
-
+
Returns a shared pointer to the pointer held by \a other, using a
\l qobject_cast() to type \tt X to obtain an internal pointer of the
appropriate type. If the \tt qobject_cast fails, the object
@@ -1430,7 +1430,7 @@ void QtSharedPointer::internalSafetyCheckAdd2(const void *d_ptr, const volatile
Q_ASSERT(!kp->dPointers.contains(d_ptr));
//qDebug("Adding d=%p value=%p", d_ptr, ptr);
-
+
const void *other_d_ptr = kp->dataPointers.value(ptr, 0);
if (other_d_ptr) {
# ifdef BACKTRACE_SUPPORTED
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index 20dda12ea3..ef8c454f2a 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -376,6 +376,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>
@@ -453,11 +460,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)
@@ -776,6 +784,16 @@ inline void qSwap(QSharedPointer<T> &p1, QSharedPointer<T> &p2)
p1.swap(p2);
}
+#ifndef QT_NO_STL
+QT_END_NAMESPACE
+namespace std {
+ template <class T>
+ inline void swap(QT_PREPEND_NAMESPACE(QSharedPointer)<T> &p1, QT_PREPEND_NAMESPACE(QSharedPointer)<T> &p2)
+ { p1.swap(p2); }
+}
+QT_BEGIN_NAMESPACE
+#endif
+
namespace QtSharedPointer {
// helper functions:
template <class X, class T>
diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp
index b2fe2dabad..d44a9d0c99 100644
--- a/src/corelib/tools/qsimd.cpp
+++ b/src/corelib/tools/qsimd.cpp
@@ -72,7 +72,12 @@
QT_BEGIN_NAMESPACE
-#if defined (Q_OS_WINCE)
+#if defined (Q_OS_NACL)
+static inline uint detectProcessorFeatures()
+{
+ return 0;
+}
+#elif defined (Q_OS_WINCE)
static inline uint detectProcessorFeatures()
{
uint features = 0;
@@ -135,7 +140,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..87fa7700eb 100644
--- a/src/corelib/tools/qsimd_p.h
+++ b/src/corelib/tools/qsimd_p.h
@@ -105,7 +105,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/qstack.cpp b/src/corelib/tools/qstack.cpp
index fa149006e6..b42fe3bc3a 100644
--- a/src/corelib/tools/qstack.cpp
+++ b/src/corelib/tools/qstack.cpp
@@ -91,6 +91,14 @@
*/
/*!
+ \fn void QStack::swap(QStack<T> &other)
+ \since 4.8
+
+ Swaps stack \a other with this stack. This operation is very fast and
+ never fails.
+*/
+
+/*!
\fn void QStack::push(const T& t)
Adds element \a t to the top of the stack.
diff --git a/src/corelib/tools/qstack.h b/src/corelib/tools/qstack.h
index 526c7051eb..6ddc38119b 100644
--- a/src/corelib/tools/qstack.h
+++ b/src/corelib/tools/qstack.h
@@ -56,6 +56,7 @@ class QStack : public QVector<T>
public:
inline QStack() {}
inline ~QStack() {}
+ inline void swap(QStack<T> &other) { QVector<T>::swap(other); } // prevent QVector<->QStack swaps
inline void push(const T &t) { QVector<T>::append(t); }
T pop();
T &top();
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index cfffc4aa99..bb496c6b82 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -579,7 +579,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
@@ -1174,6 +1174,13 @@ QString::QString(QChar ch)
*/
+/*! \fn void QString::swap(QString &other)
+ \since 4.8
+
+ Swaps string \a other with this string. This operation is very fast and
+ never fails.
+*/
+
/*! \fn void QString::detach()
\internal
@@ -3599,7 +3606,7 @@ static QByteArray toLatin1_helper(const QChar *data, int length)
}
length = length % 16;
}
-#elif QT_HAVE_NEON
+#elif 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
@@ -3906,7 +3913,7 @@ QString QString::fromLocal8Bit(const char *str, int size)
/*!
Returns a QString initialized with the first \a size characters
- of the 8-bit string \a str.
+ from the string \a str.
If \a size is -1 (default), it is taken to be qstrlen(\a
str).
@@ -4290,7 +4297,7 @@ QString& QString::fill(QChar ch, int size)
Returns the number of characters in this string. Equivalent to
size().
- \sa setLength()
+ \sa resize()
*/
/*!
@@ -7460,31 +7467,17 @@ QDataStream &operator<<(QDataStream &out, const QString &str)
out << str.toLatin1();
} else {
if (!str.isNull() || out.version() < 3) {
- int byteOrder = out.byteOrder();
- const QChar* ub = str.unicode();
- static const uint auto_size = 1024;
- char t[auto_size];
- char *b;
- if (str.length()*sizeof(QChar) > auto_size) {
- b = new char[str.length()*sizeof(QChar)];
+ if ((out.byteOrder() == QDataStream::BigEndian) == (QSysInfo::ByteOrder == QSysInfo::BigEndian)) {
+ out.writeBytes(reinterpret_cast<const char *>(str.unicode()), sizeof(QChar) * str.length());
} else {
- b = t;
- }
- int l = str.length();
- char *c=b;
- while (l--) {
- if (byteOrder == QDataStream::BigEndian) {
- *c++ = (char)ub->row();
- *c++ = (char)ub->cell();
- } else {
- *c++ = (char)ub->cell();
- *c++ = (char)ub->row();
+ QVarLengthArray<ushort> buffer(str.length());
+ const ushort *data = reinterpret_cast<const ushort *>(str.constData());
+ for (int i = 0; i < str.length(); i++) {
+ buffer[i] = qbswap(*data);
+ ++data;
}
- ub++;
+ out.writeBytes(reinterpret_cast<const char *>(buffer.data()), sizeof(ushort) * buffer.size());
}
- out.writeBytes(b, sizeof(QChar)*str.length());
- if (str.length()*sizeof(QChar) > auto_size)
- delete [] b;
} else {
// write null marker
out << (quint32)0xffffffff;
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index 589fdc2d20..07f43ca2c8 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -108,6 +108,7 @@ public:
inline QString &operator=(QString &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QString &other) { qSwap(d, other.d); }
inline int size() const { return d->size; }
inline int count() const { return d->size; }
inline int length() const;
diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
index 4a6bb4b802..38823239a0 100644
--- a/src/corelib/tools/qvarlengtharray.h
+++ b/src/corelib/tools/qvarlengtharray.h
@@ -44,7 +44,10 @@
#include <QtCore/qcontainerfwd.h>
#include <QtCore/qglobal.h>
+#include <QtCore/qalgorithms.h>
+
#include <new>
+#include <string.h>
QT_BEGIN_HEADER
@@ -123,6 +126,18 @@ public:
}
}
void append(const T *buf, int size);
+ inline QVarLengthArray<T, Prealloc> &operator<<(const T &t)
+ { append(t); return *this; }
+ inline QVarLengthArray<T, Prealloc> &operator+=(const T &t)
+ { append(t); return *this; }
+
+ void prepend(const T &t);
+ void insert(int i, const T &t);
+ void insert(int i, int n, const T &t);
+ void replace(int i, const T &t);
+ void remove(int i);
+ void remove(int i, int n);
+
inline T *data() { return ptr; }
inline const T *data() const { return ptr; }
@@ -135,6 +150,21 @@ public:
typedef const value_type &const_reference;
typedef qptrdiff difference_type;
+
+ typedef T* iterator;
+ typedef const T* const_iterator;
+
+ inline iterator begin() { return ptr; }
+ inline const_iterator begin() const { return ptr; }
+ inline const_iterator constBegin() const { return ptr; }
+ inline iterator end() { return ptr + s; }
+ inline const_iterator end() const { return ptr + s; }
+ inline const_iterator constEnd() const { return ptr + s; }
+ iterator insert(iterator before, int n, const T &x);
+ inline iterator insert(iterator before, const T &x) { return insert(before, 1, x); }
+ iterator erase(iterator begin, iterator end);
+ inline iterator erase(iterator pos) { return erase(pos, pos+1); }
+
private:
friend class QPodList<T, Prealloc>;
void realloc(int size, int alloc);
@@ -272,6 +302,100 @@ Q_OUTOFLINE_TEMPLATE T QVarLengthArray<T, Prealloc>::value(int i, const T &defau
return (i < 0 || i >= size()) ? defaultValue : at(i);
}
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::insert(int i, const T &t)
+{ Q_ASSERT_X(i >= 0 && i <= s, "QVarLengthArray::insert", "index out of range");
+ insert(begin() + i, 1, t); }
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::insert(int i, int n, const T &t)
+{ Q_ASSERT_X(i >= 0 && i <= s, "QVarLengthArray::insert", "index out of range");
+ insert(begin() + i, n, t); }
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::remove(int i, int n)
+{ Q_ASSERT_X(i >= 0 && n >= 0 && i + n <= s, "QVarLengthArray::remove", "index out of range");
+ erase(begin() + i, begin() + i + n); }
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::remove(int i)
+{ Q_ASSERT_X(i >= 0 && i < s, "QVarLengthArray::remove", "index out of range");
+ erase(begin() + i, begin() + i + 1); }
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::prepend(const T &t)
+{ insert(begin(), 1, t); }
+
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::replace(int i, const T &t)
+{
+ Q_ASSERT_X(i >= 0 && i < s, "QVarLengthArray::replace", "index out of range");
+ const T copy(t);
+ data()[i] = copy;
+}
+
+
+template <class T, int Prealloc>
+Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::insert(iterator before, size_type n, const T &t)
+{
+ int offset = int(before - ptr);
+ if (n != 0) {
+ resize(s + n);
+ const T copy(t);
+ if (QTypeInfo<T>::isStatic) {
+ T *b = ptr + offset;
+ T *j = ptr + s;
+ T *i = j - n;
+ while (i != b)
+ *--j = *--i;
+ i = b + n;
+ while (i != b)
+ *--i = copy;
+ } else {
+ T *b = ptr + offset;
+ T *i = b + n;
+ memmove(i, b, (s - offset - n) * sizeof(T));
+ while (i != b)
+ new (--i) T(copy);
+ }
+ }
+ return ptr + offset;
+}
+
+template <class T, int Prealloc>
+Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::erase(iterator abegin, iterator aend)
+{
+ int f = int(abegin - ptr);
+ int l = int(aend - ptr);
+ int n = l - f;
+ if (QTypeInfo<T>::isComplex) {
+ qCopy(ptr + l, ptr + s, ptr + f);
+ T *i = ptr + s;
+ T *b = ptr + s - n;
+ while (i != b) {
+ --i;
+ i->~T();
+ }
+ } else {
+ memmove(ptr + f, ptr + l, (s - l) * sizeof(T));
+ }
+ s -= n;
+ return ptr + f;
+}
+
+template <typename T, int Prealloc1, int Prealloc2>
+bool operator==(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)
+{
+ if (l.size() != r.size())
+ return false;
+ for (int i = 0; i < l.size(); i++) {
+ if (l.at(i) != r.at(i))
+ return false;
+ }
+ return true;
+}
+
+template <typename T, int Prealloc1, int Prealloc2>
+bool operator!=(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T, Prealloc2> &r)
+{
+ return !(l == r);
+}
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qvarlengtharray.qdoc b/src/corelib/tools/qvarlengtharray.qdoc
index cbd81c7b53..4d5d5d1412 100644
--- a/src/corelib/tools/qvarlengtharray.qdoc
+++ b/src/corelib/tools/qvarlengtharray.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
@@ -337,3 +337,211 @@
Typedef for const T &. Provided for STL compatibility.
*/
+/*! \fn void QVarLengthArray::prepend(const T &value)
+
+ \since 4.8
+ Inserts \a value at the beginning of the array.
+
+
+ This is the same as vector.insert(0, \a value).
+
+ For large arrays, this operation can be slow (\l{linear time}),
+ because it requires moving all the items in the vector by one
+ position further in memory. If you want a container class that
+ provides a fast prepend() function, use QList or QLinkedList
+ instead.
+
+ \sa append(), insert()
+*/
+
+/*! \fn void QVarLengthArray::replace(int i, const T &value)
+
+ \since 4.8
+ Replaces the item at index position \a i with \a value.
+
+ \a i must be a valid index position in the array (i.e., 0 <= \a
+ i < size()).
+
+ \sa operator[](), remove()
+*/
+
+/*! \fn void QVarLengthArray::remove(int i)
+
+ \overload
+ \since 4.8
+
+ Removes the element at index position \a i.
+
+ \sa insert(), replace()
+*/
+
+/*! \fn void QVarLengthArray::remove(int i, int count)
+
+ \overload
+ \since 4.8
+
+ Removes \a count elements from the middle of the array, starting at
+ index position \a i.
+
+ \sa insert(), replace()
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::begin()
+ \since 4.8
+
+ Returns an \l{STL-style iterator} pointing to the first item in
+ the array.
+
+ \sa constBegin(), end()
+*/
+
+/*! \fn QVarLengthArray::const_iterator QVarLengthArray::begin() const
+ \since 4.8
+ \overload
+*/
+
+/*! \fn QVarLengthArray::const_iterator QVarLengthArray::constBegin() const
+ \since 4.8
+
+ Returns a const \l{STL-style iterator} pointing to the first item
+ in the array.
+
+ \sa begin(), constEnd()
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::end()
+ \since 4.8
+
+ Returns an \l{STL-style iterator} pointing to the imaginary item
+ after the last item in the array.
+
+ \sa begin(), constEnd()
+*/
+
+/*! \fn QVarLengthArray::const_iterator QVarLengthArray::end() const
+ \since 4.8
+
+ \overload
+*/
+
+/*! \fn QVarLengthArray::const_iterator QVarLengthArray::constEnd() const
+ \since 4.8
+
+ Returns a const \l{STL-style iterator} pointing to the imaginary
+ item after the last item in the array.
+
+ \sa constBegin(), end()
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::erase(iterator pos)
+ \since 4.8
+
+ Removes the item pointed to by the iterator \a pos from the
+ vector, and returns an iterator to the next item in the vector
+ (which may be end()).
+
+ \sa insert(), remove()
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::erase(iterator begin, iterator end)
+
+ \overload
+ \since 4.8
+
+ Removes all the items from \a begin up to (but not including) \a
+ end. Returns an iterator to the same item that \a end referred to
+ before the call.
+*/
+
+/*! \fn void QVarLengthArray::insert(int i, const T &value)
+ \since 4.8
+
+ Inserts \a value at index position \a i in the array. If \a i is
+ 0, the value is prepended to the vector. If \a i is size(), the
+ value is appended to the vector.
+
+ For large arrays, this operation can be slow (\l{linear time}),
+ because it requires moving all the items at indexes \a i and
+ above by one position further in memory. If you want a container
+ class that provides a fast insert() function, use QLinkedList
+ instead.
+
+ \sa remove()
+*/
+
+/*! \fn void QVarLengthArray::insert(int i, int count, const T &value)
+
+ \overload
+ \since 4.8
+
+ Inserts \a count copies of \a value at index position \a i in the
+ vector.
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::insert(iterator before, const T &value)
+
+ \overload
+ \since 4.8
+
+ Inserts \a value in front of the item pointed to by the iterator
+ \a before. Returns an iterator pointing at the inserted item.
+*/
+
+/*! \fn QVarLengthArray::iterator QVarLengthArray::insert(iterator before, int count, const T &value)
+
+ \since 4.8
+ Inserts \a count copies of \a value in front of the item pointed to
+ by the iterator \a before. Returns an iterator pointing at the
+ first of the inserted items.
+*/
+
+
+
+/*! \fn bool operator==(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)
+
+ \relates QVarLengthArray
+ \since 4.8
+ Returns true if the two array are equal;
+
+ Two arrays are considered equal if they contain the same values
+ in the same order.
+
+ This function requires the value type to have an implementation
+ of \c operator==().
+
+ \sa operator!=()
+*/
+
+/*! \fn bool operator!=(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)
+
+ \relates QVarLengthArray
+ \since 4.8
+ Returns true if the two array are different;
+
+ Two arrays are considered equal if they contain the same values
+ in the same order.
+
+ This function requires the value type to have an implementation
+ of \c operator==().
+
+ \sa operator==()
+*/
+
+/*! \fn QVarLengthArray &QVarLengthArray::operator<<(const T &value)
+
+ \since 4.8
+ Appends \a value to the array and returns a reference to this
+ vector.
+
+ \sa append(), operator+=()
+*/
+
+/*! \fn QVarLengthArray &QVarLengthArray::operator+=(const T &value)
+
+ \since 4.8
+ Appends \a value to the array and returns a reference to this
+ vector.
+
+ \sa append(), operator<<()
+*/
+
diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp
index 3a13540766..0497211690 100644
--- a/src/corelib/tools/qvector.cpp
+++ b/src/corelib/tools/qvector.cpp
@@ -285,6 +285,13 @@ int QVectorData::grow(int sizeofTypedData, int size, int sizeofT, bool excessive
vector.
*/
+/*! \fn void QVector::swap(QVector<T> &other)
+ \since 4.8
+
+ Swaps vector \a other with this vector. This operation is very fast and
+ never fails.
+*/
+
/*! \fn bool QVector::operator==(const QVector<T> &other) const
Returns true if \a other is equal to this vector; otherwise
diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h
index c16aefb2ef..0f7db88c90 100644
--- a/src/corelib/tools/qvector.h
+++ b/src/corelib/tools/qvector.h
@@ -125,6 +125,7 @@ public:
inline QVector<T> operator=(QVector<T> &&other)
{ qSwap(p, other.p); return *this; }
#endif
+ inline void swap(QVector<T> &other) { qSwap(d, other.d); }
#ifdef Q_COMPILER_INITIALIZER_LISTS
inline QVector(std::initializer_list<T> args);
#endif
@@ -303,7 +304,7 @@ public:
#ifndef QT_NO_STL
static inline QVector<T> fromStdVector(const std::vector<T> &vector)
- { QVector<T> tmp; tmp.reserve(vector.size()); qCopy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; }
+ { QVector<T> tmp; tmp.reserve(int(vector.size())); qCopy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; }
inline std::vector<T> toStdVector() const
{ std::vector<T> tmp; tmp.reserve(size()); qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; }
#endif
@@ -439,9 +440,9 @@ QVector<T>::QVector(int asize, const T &t)
template <typename T>
QVector<T>::QVector(std::initializer_list<T> args)
{
- d = malloc(args.size());
+ d = malloc(int(args.size()));
d->ref = 1;
- d->alloc = d->size = args.size();
+ d->alloc = d->size = int(args.size());
d->sharable = true;
d->capacity = false;
T* i = p->array + d->size;
diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri
index d81ab04c7e..03bb32d8e1 100644
--- a/src/corelib/tools/tools.pri
+++ b/src/corelib/tools/tools.pri
@@ -83,7 +83,7 @@ SOURCES += \
symbian:SOURCES+=tools/qlocale_symbian.cpp
-mac:SOURCES += tools/qelapsedtimer_mac.cpp
+!nacl:mac:SOURCES += tools/qelapsedtimer_mac.cpp
else:symbian:SOURCES += tools/qelapsedtimer_symbian.cpp
else:unix:SOURCES += tools/qelapsedtimer_unix.cpp
else:win32:SOURCES += tools/qelapsedtimer_win.cpp
diff --git a/src/corelib/xml/qxmlstream.h b/src/corelib/xml/qxmlstream.h
index 402afa3ab6..d7143bd41c 100644
--- a/src/corelib/xml/qxmlstream.h
+++ b/src/corelib/xml/qxmlstream.h
@@ -169,6 +169,7 @@ Q_DECLARE_TYPEINFO(QXmlStreamAttribute, Q_MOVABLE_TYPE);
class Q_XMLSTREAM_EXPORT QXmlStreamAttributes : public QVector<QXmlStreamAttribute>
{
public:
+ inline QXmlStreamAttributes() {}
QStringRef value(const QString &namespaceUri, const QString &name) const;
QStringRef value(const QString &namespaceUri, const QLatin1String &name) const;
QStringRef value(const QLatin1String &namespaceUri, const QLatin1String &name) const;
diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp
index 9ff0ff154d..943b9656a3 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/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 35979d60f0..c7f62aa1a6 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -801,7 +801,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();
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 dbfb3fb43f..61fd562ce7 100644
--- a/src/declarative/graphicsitems/qdeclarativeevents.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeevents.cpp
@@ -113,11 +113,13 @@ Item {
\qmlclass MouseEvent QDeclarativeMouseEvent
\since 4.7
\ingroup qml-event-elements
-
+
\brief The MouseEvent object provides information about a mouse event.
- The position of the mouse can be found via the x and y properties.
- The button that caused the event is available via the button property.
+ The position of the mouse can be found via the \l x and \l y properties.
+ The button that caused the event is available via the \l button property.
+
+ \sa MouseArea
*/
/*!
@@ -129,7 +131,7 @@ Item {
\qmlproperty int MouseEvent::x
\qmlproperty int MouseEvent::y
- These properties hold the position of the mouse event.
+ These properties hold the coordinates of the position supplied by the mouse event.
*/
@@ -186,7 +188,7 @@ Item {
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.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.
@@ -195,9 +197,12 @@ Item {
For example, to react to a Shift key + Left mouse button click:
\qml
-MouseArea {
- onClicked: { if (mouse.button == Qt.LeftButton && mouse.modifiers & Qt.ShiftModifier) doSomething(); }
-}
+ MouseArea {
+ onClicked: {
+ if (mouse.button == Qt.LeftButton && mouse.modifiers & Qt.ShiftModifier)
+ doSomething();
+ }
+ }
\endqml
*/
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
index 7c43e5b970..0f786e35f8 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);
}
@@ -466,15 +474,15 @@ QDeclarativeFlickable::~QDeclarativeFlickable()
qreal QDeclarativeFlickable::contentX() const
{
Q_D(const QDeclarativeFlickable);
- return -d->hData.move.value();
+ return -d->contentItem->x();
}
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();
@@ -484,15 +492,15 @@ void QDeclarativeFlickable::setContentX(qreal pos)
qreal QDeclarativeFlickable::contentY() const
{
Q_D(const QDeclarativeFlickable);
- return -d->vData.move.value();
+ return -d->contentItem->y();
}
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();
@@ -979,8 +987,8 @@ void QDeclarativeFlickable::viewportMoved()
{
Q_D(QDeclarativeFlickable);
- qreal prevY = d->lastFlickablePosition.x();
- qreal prevX = d->lastFlickablePosition.y();
+ qreal prevX = d->lastFlickablePosition.x();
+ qreal prevY = d->lastFlickablePosition.y();
d->velocityTimeline.clear();
if (d->pressed || d->calcVelocity) {
int elapsed = QDeclarativeItemPrivate::restart(d->velocityTime);
@@ -1001,7 +1009,7 @@ void QDeclarativeFlickable::viewportMoved()
}
}
- d->lastFlickablePosition = QPointF(d->vData.move.value(), d->hData.move.value());
+ d->lastFlickablePosition = QPointF(d->hData.move.value(), d->vData.move.value());
d->vTime = d->timeline.time();
d->updateBeginningEnd();
@@ -1021,6 +1029,13 @@ void QDeclarativeFlickable::geometryChanged(const QRectF &newGeometry,
d->contentItem->setWidth(width());
emit contentWidthChanged();
}
+ // Make sure that we're entirely in view.
+ if (!d->pressed && !d->movingHorizontally && !d->movingVertically) {
+ int oldDuration = d->fixupDuration;
+ d->fixupDuration = 0;
+ d->fixupX();
+ d->fixupDuration = oldDuration;
+ }
}
if (newGeometry.height() != oldGeometry.height()) {
if (yflick())
@@ -1029,6 +1044,13 @@ void QDeclarativeFlickable::geometryChanged(const QRectF &newGeometry,
d->contentItem->setHeight(height());
emit contentHeightChanged();
}
+ // Make sure that we're entirely in view.
+ if (!d->pressed && !d->movingHorizontally && !d->movingVertically) {
+ int oldDuration = d->fixupDuration;
+ d->fixupDuration = 0;
+ d->fixupY();
+ d->fixupDuration = oldDuration;
+ }
}
if (changed)
@@ -1150,19 +1172,18 @@ void QDeclarativeFlickable::setBoundsBehavior(BoundsBehavior b)
\qmlproperty real Flickable::contentWidth
\qmlproperty real Flickable::contentHeight
- The dimensions of the content (the surface controlled by Flickable). Typically this
- should be set to the combined size of the items placed in the Flickable. Note this
- can be set automatically using \l {Item::childrenRect.width}{childrenRect.width}
- and \l {Item::childrenRect.height}{childrenRect.height}. For example:
+ The dimensions of the content (the surface controlled by Flickable).
+ This should typically be set to the combined size of the items placed in the
+ Flickable.
- \code
- Flickable {
- width: 320; height: 480
- contentWidth: childrenRect.width; contentHeight: childrenRect.height
+ The following snippet shows how these properties are used to display
+ an image that is larger than the Flickable item itself:
- Image { id: image; source: "bigImage.png" }
- }
- \endcode
+ \snippet doc/src/snippets/declarative/flickable.qml document
+
+ In some cases, the the content dimensions can be automatically set
+ using the \l {Item::childrenRect.width}{childrenRect.width}
+ and \l {Item::childrenRect.height}{childrenRect.height} properties.
*/
qreal QDeclarativeFlickable::contentWidth() const
{
@@ -1484,6 +1505,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();
@@ -1491,13 +1521,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;
@@ -1507,6 +1530,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;
@@ -1516,8 +1553,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 8216ab7c35..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();
@@ -218,7 +218,14 @@ public:
return visibleItems.last()->rowPos() + rows * rowSize();
}
} else {
- return (modelIndex / columns) * rowSize();
+ qreal pos = (modelIndex / columns) * rowSize();
+ if (header) {
+ qreal headerSize = flow == QDeclarativeGridView::LeftToRight
+ ? header->item->height()
+ : header->item->width();
+ pos += headerSize;
+ }
+ return pos;
}
return 0;
}
@@ -385,6 +392,7 @@ public:
bool layoutScheduled : 1;
bool deferredRelease : 1;
bool haveHighlightRange : 1;
+ bool currentIndexCleared : 1;
};
void QDeclarativeGridViewPrivate::init()
@@ -723,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;
@@ -764,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;
@@ -1204,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();
@@ -1229,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;
@@ -1245,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();
}
@@ -1317,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
@@ -1337,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();
}
@@ -1815,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()) {
@@ -1976,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);
}
}
}
@@ -2001,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);
}
}
}
@@ -2026,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);
}
}
}
@@ -2051,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);
}
}
}
@@ -2194,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);
@@ -2269,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;
@@ -2383,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) {
@@ -2470,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/qdeclarativeimagebase.cpp b/src/declarative/graphicsitems/qdeclarativeimagebase.cpp
index 02b4807e1f..c3bac2d205 100644
--- a/src/declarative/graphicsitems/qdeclarativeimagebase.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeimagebase.cpp
@@ -46,8 +46,6 @@
#include <qdeclarativeinfo.h>
#include <qdeclarativepixmapcache_p.h>
-#include <QFile>
-
QT_BEGIN_NAMESPACE
QDeclarativeImageBase::QDeclarativeImageBase(QDeclarativeImageBasePrivate &dd, QDeclarativeItem *parent)
@@ -115,6 +113,7 @@ void QDeclarativeImageBase::setSourceSize(const QSize& size)
return;
d->sourcesize = size;
+ d->explicitSourceSize = true;
emit sourceSizeChanged();
if (isComponentComplete())
load();
@@ -123,7 +122,10 @@ void QDeclarativeImageBase::setSourceSize(const QSize& size)
QSize QDeclarativeImageBase::sourceSize() const
{
Q_D(const QDeclarativeImageBase);
- return d->sourcesize.isValid() ? d->sourcesize : QSize(implicitWidth(),implicitHeight());
+
+ int width = d->sourcesize.width();
+ int height = d->sourcesize.height();
+ return QSize(width != -1 ? width : implicitWidth(), height != -1 ? height : implicitHeight());
}
void QDeclarativeImageBase::load()
@@ -141,7 +143,7 @@ void QDeclarativeImageBase::load()
pixmapChange();
update();
} else {
- d->pix.load(qmlEngine(this), d->url, d->sourcesize, d->async);
+ d->pix.load(qmlEngine(this), d->url, d->explicitSourceSize ? sourceSize() : QSize(), d->async);
if (d->pix.isLoading()) {
d->progress = 0.0;
@@ -186,11 +188,8 @@ void QDeclarativeImageBase::requestFinished()
setImplicitWidth(d->pix.width());
setImplicitHeight(d->pix.height());
- if (d->sourcesize.width() != d->pix.width() || d->sourcesize.height() != d->pix.height()) {
- d->sourcesize.setWidth(d->pix.width());
- d->sourcesize.setHeight(d->pix.height());
+ if (d->sourcesize.width() != d->pix.width() || d->sourcesize.height() != d->pix.height())
emit sourceSizeChanged();
- }
if (d->status != oldStatus)
emit statusChanged(d->status);
diff --git a/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h b/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h
index aee8b28ee0..3d23ba9f68 100644
--- a/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h
@@ -69,6 +69,7 @@ public:
QDeclarativeImageBasePrivate()
: status(QDeclarativeImageBase::Null),
progress(0.0),
+ explicitSourceSize(false),
async(false)
{
QGraphicsItemPrivate::flags = QGraphicsItemPrivate::flags & ~QGraphicsItem::ItemHasNoContents;
@@ -79,6 +80,7 @@ public:
QUrl url;
qreal progress;
QSize sourcesize;
+ bool explicitSourceSize : 1;
bool async : 1;
};
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp
index 250a43b65a..e0df75195b 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp
@@ -56,7 +56,6 @@
#include <QDebug>
#include <QPen>
-#include <QFile>
#include <QEvent>
#include <QGraphicsSceneMouseEvent>
#include <QtCore/qnumeric.h>
@@ -729,41 +728,39 @@ void QDeclarativeKeyNavigationAttached::keyReleased(QKeyEvent *event, bool post)
\since 4.7
\brief The Keys attached property provides key handling to Items.
- All visual primitives support key handling via the \e Keys
- attached property. Keys can be handled via the \e onPressed
- and \e onReleased signal properties.
+ All visual primitives support key handling via the Keys
+ attached property. Keys can be handled via the onPressed
+ and onReleased signal properties.
The signal properties have a \l KeyEvent parameter, named
\e event which contains details of the event. If a key is
handled \e event.accepted should be set to true to prevent the
event from propagating up the item hierarchy.
- \code
- Item {
- focus: true
- Keys.onPressed: {
- if (event.key == Qt.Key_Left) {
- console.log("move left");
- event.accepted = true;
- }
- }
- }
- \endcode
+ \section1 Example Usage
+
+ The following example shows how the general onPressed handler can
+ be used to test for a certain key; in this case, the left cursor
+ key:
+
+ \snippet doc/src/snippets/declarative/keys/keys-pressed.qml key item
Some keys may alternatively be handled via specific signal properties,
for example \e onSelectPressed. These handlers automatically set
\e event.accepted to true.
- \code
- Item {
- focus: true
- Keys.onLeftPressed: console.log("move left")
- }
- \endcode
+ \snippet doc/src/snippets/declarative/keys/keys-handler.qml key item
+
+ See \l{Qt::Key}{Qt.Key} for the list of keyboard codes.
- See \l {Qt::Key}{Qt.Key} for the list of keyboard codes.
+ \section1 Key Handling Priorities
- If priority is Keys.BeforeItem (default) the order of key event processing is:
+ The Keys attached property can be configured to handle key events
+ before or after the item it is attached to. This makes it possible
+ to intercept events in order to override an item's default behavior,
+ or act as a fallback for keys not handled by the item.
+
+ If \l priority is Keys.BeforeItem (default) the order of key event processing is:
\list 1
\o Items specified in \c forwardTo
@@ -774,6 +771,7 @@ void QDeclarativeKeyNavigationAttached::keyReleased(QKeyEvent *event, bool post)
\endlist
If priority is Keys.AfterItem the order of key event processing is:
+
\list 1
\o Item specific key handling, e.g. TextInput key handling
\o Items specified in \c forwardTo
@@ -1181,7 +1179,7 @@ void QDeclarativeKeysAttached::keyPressed(QKeyEvent *event, bool post)
d->inPress = true;
for (int ii = 0; ii < d->targets.count(); ++ii) {
QGraphicsItem *i = d->finalFocusProxy(d->targets.at(ii));
- if (i) {
+ if (i && i->isVisible()) {
d->item->scene()->sendEvent(i, event);
if (event->isAccepted()) {
d->inPress = false;
@@ -1223,7 +1221,7 @@ void QDeclarativeKeysAttached::keyReleased(QKeyEvent *event, bool post)
d->inRelease = true;
for (int ii = 0; ii < d->targets.count(); ++ii) {
QGraphicsItem *i = d->finalFocusProxy(d->targets.at(ii));
- if (i) {
+ if (i && i->isVisible()) {
d->item->scene()->sendEvent(i, event);
if (event->isAccepted()) {
d->inRelease = false;
@@ -1248,7 +1246,7 @@ void QDeclarativeKeysAttached::inputMethodEvent(QInputMethodEvent *event, bool p
d->inIM = true;
for (int ii = 0; ii < d->targets.count(); ++ii) {
QGraphicsItem *i = d->finalFocusProxy(d->targets.at(ii));
- if (i && (i->flags() & QGraphicsItem::ItemAcceptsInputMethod)) {
+ if (i && i->isVisible() && (i->flags() & QGraphicsItem::ItemAcceptsInputMethod)) {
d->item->scene()->sendEvent(i, event);
if (event->isAccepted()) {
d->imeItem = i;
@@ -1276,7 +1274,7 @@ QVariant QDeclarativeKeysAttached::inputMethodQuery(Qt::InputMethodQuery query)
if (d->item) {
for (int ii = 0; ii < d->targets.count(); ++ii) {
QGraphicsItem *i = d->finalFocusProxy(d->targets.at(ii));
- if (i && (i->flags() & QGraphicsItem::ItemAcceptsInputMethod) && i == d->imeItem) { //### how robust is i == d->imeItem check?
+ if (i && i->isVisible() && (i->flags() & QGraphicsItem::ItemAcceptsInputMethod) && i == d->imeItem) { //### how robust is i == d->imeItem check?
QVariant v = static_cast<QDeclarativeItemAccessor *>(i)->doInputMethodQuery(query);
if (v.userType() == QVariant::RectF)
v = d->item->mapRectFromItem(i, v.toRectF()); //### cost?
@@ -1957,12 +1955,8 @@ void QDeclarativeItem::geometryChanged(const QRectF &newGeometry,
change.listener->itemGeometryChanged(this, newGeometry, oldGeometry);
}
- if (newGeometry.x() != oldGeometry.x())
- emit xChanged();
if (newGeometry.width() != oldGeometry.width())
emit widthChanged();
- if (newGeometry.y() != oldGeometry.y())
- emit yChanged();
if (newGeometry.height() != oldGeometry.height())
emit heightChanged();
}
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index 6b46bc5658..6be49babe6 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,8 @@ 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)
+ , minExtentDirty(true), maxExtentDirty(true)
{}
void init();
@@ -333,28 +334,9 @@ public:
return model && model->count() && model->isValid();
}
- int snapIndex() {
- int index = currentIndex;
- for (int i = 0; i < visibleItems.count(); ++i) {
- FxListItem *item = visibleItems[i];
- if (item->index == -1)
- continue;
- qreal itemTop = item->position();
- if (itemTop >= highlight->position()-item->size()/2 && itemTop < highlight->position()+item->size()/2)
- return item->index;
- }
- return index;
- }
-
qreal snapPosAt(qreal pos) {
- for (int i = 0; i < visibleItems.count(); ++i) {
- FxListItem *item = visibleItems[i];
- if (item->index == -1)
- continue;
- qreal itemTop = item->position();
- if (itemTop+item->size()/2 >= pos && itemTop <= pos)
- return item->position();
- }
+ if (FxListItem *snapItem = snapItemAt(pos))
+ return snapItem->position();
if (visibleItems.count()) {
qreal firstPos = visibleItems.first()->position();
qreal endPos = visibleItems.last()->position();
@@ -367,17 +349,18 @@ public:
}
FxListItem *snapItemAt(qreal pos) {
+ FxListItem *snapItem = 0;
for (int i = 0; i < visibleItems.count(); ++i) {
FxListItem *item = visibleItems[i];
if (item->index == -1)
continue;
qreal itemTop = item->position();
- if (item->index == model->count()-1 || (itemTop+item->size()/2 >= pos))
+ if (highlight && itemTop >= pos && item->endPosition() <= pos + highlight->size() - 1)
return item;
+ if (itemTop+item->size()/2 >= pos && itemTop-item->size()/2 < pos)
+ snapItem = item;
}
- if (visibleItems.count() && visibleItems.first()->position() <= pos)
- return visibleItems.first();
- return 0;
+ return snapItem;
}
int lastVisibleIndex() const {
@@ -393,44 +376,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 +502,7 @@ public:
bool lazyRelease : 1;
bool deferredRelease : 1;
bool layoutScheduled : 1;
+ bool currentIndexCleared : 1;
mutable bool minExtentDirty : 1;
mutable bool maxExtentDirty : 1;
};
@@ -775,10 +734,9 @@ void QDeclarativeListViewPrivate::layout()
setPosition(0);
return;
}
- updateSections();
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);
@@ -792,8 +750,10 @@ void QDeclarativeListViewPrivate::layout()
minExtentDirty = true;
maxExtentDirty = true;
updateHighlight();
- fixupPosition();
- q->refill();
+ if (!q->isMoving() && !q->isFlicking()) {
+ fixupPosition();
+ q->refill();
+ }
if (header)
updateHeader();
if (footer)
@@ -882,6 +842,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);
@@ -934,6 +895,7 @@ void QDeclarativeListViewPrivate::createSection(FxListItem *listItem)
return;
if (listItem->attached->m_prevSection != listItem->attached->m_section) {
if (!listItem->section) {
+ qreal pos = listItem->position();
int i = sectionCacheSize-1;
while (i >= 0 && !sectionCache[i])
--i;
@@ -961,8 +923,10 @@ void QDeclarativeListViewPrivate::createSection(FxListItem *listItem)
delete context;
}
}
+ listItem->setPosition(pos);
}
} else if (listItem->section) {
+ qreal pos = listItem->position();
int i = 0;
do {
if (!sectionCache[i]) {
@@ -975,12 +939,13 @@ void QDeclarativeListViewPrivate::createSection(FxListItem *listItem)
} while (i < sectionCacheSize);
delete listItem->section;
listItem->section = 0;
+ listItem->setPosition(pos);
}
}
void QDeclarativeListViewPrivate::updateSections()
{
- if (sectionCriteria) {
+ if (sectionCriteria && !visibleItems.isEmpty()) {
QString prevSection;
if (visibleIndex > 0)
prevSection = sectionAt(visibleIndex-1);
@@ -990,6 +955,8 @@ void QDeclarativeListViewPrivate::updateSections()
if (visibleItems.at(i)->index != -1) {
QDeclarativeListViewAttached *attached = visibleItems.at(i)->attached;
attached->setPrevSection(prevSection);
+ QString propValue = model->stringValue(visibleItems.at(i)->index, sectionCriteria->property());
+ attached->setSection(sectionCriteria->sectionString(propValue));
if (prevAtt)
prevAtt->setNextSection(attached->section());
createSection(visibleItems.at(i));
@@ -1009,18 +976,27 @@ void QDeclarativeListViewPrivate::updateSections()
void QDeclarativeListViewPrivate::updateCurrentSection()
{
+ Q_Q(QDeclarativeListView);
if (!sectionCriteria || visibleItems.isEmpty()) {
- currentSection.clear();
+ if (!currentSection.isEmpty()) {
+ currentSection.clear();
+ emit q->currentSectionChanged();
+ }
return;
}
int index = 0;
while (index < visibleItems.count() && visibleItems.at(index)->endPosition() < position())
++index;
+ QString newSection = currentSection;
if (index < visibleItems.count())
- currentSection = visibleItems.at(index)->attached->section();
+ newSection = visibleItems.at(index)->attached->section();
else
- currentSection = visibleItems.first()->attached->section();
+ newSection = visibleItems.first()->attached->section();
+ if (newSection != currentSection) {
+ currentSection = newSection;
+ emit q->currentSectionChanged();
+ }
}
void QDeclarativeListViewPrivate::updateCurrent(int modelIndex)
@@ -1031,8 +1007,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;
@@ -1178,33 +1157,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) {
@@ -1215,25 +1200,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);
}
@@ -1355,12 +1321,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)) {
@@ -1370,7 +1339,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 {
@@ -1551,8 +1520,9 @@ void QDeclarativeListView::setModel(const QVariant &model)
disconnect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int)));
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(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();
@@ -1581,8 +1551,9 @@ void QDeclarativeListView::setModel(const QVariant &model)
if (d->model) {
d->bufferMode = QDeclarativeListViewPrivate::BufferBefore | QDeclarativeListViewPrivate::BufferAfter;
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;
@@ -1596,8 +1567,9 @@ void QDeclarativeListView::setModel(const QVariant &model)
connect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int)));
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(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();
}
@@ -1653,6 +1625,7 @@ void QDeclarativeListView::setDelegate(QDeclarativeComponent *delegate)
d->visibleItems.clear();
d->releaseItem(d->currentItem);
d->currentItem = 0;
+ updateSections();
refill();
d->moveReason = QDeclarativeListViewPrivate::SetIndex;
d->updateCurrent(d->currentIndex);
@@ -1670,7 +1643,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
@@ -1690,10 +1664,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();
}
@@ -2066,8 +2043,10 @@ void QDeclarativeListView::setCacheBuffer(int b)
QDeclarativeViewSection *QDeclarativeListView::sectionCriteria()
{
Q_D(QDeclarativeListView);
- if (!d->sectionCriteria)
+ if (!d->sectionCriteria) {
d->sectionCriteria = new QDeclarativeViewSection(this);
+ connect(d->sectionCriteria, SIGNAL(propertyChanged()), this, SLOT(updateSections()));
+ }
return d->sectionCriteria;
}
@@ -2300,6 +2279,8 @@ void QDeclarativeListView::viewportMoved()
{
Q_D(QDeclarativeListView);
QDeclarativeFlickable::viewportMoved();
+ if (!d->itemCount)
+ return;
d->lazyRelease = true;
refill();
if (d->flickingHorizontally || d->flickingVertically || d->movingHorizontally || d->movingVertically)
@@ -2316,9 +2297,10 @@ void QDeclarativeListView::viewportMoved()
d->highlight->setPosition(qRound(pos));
// update current index
- int idx = d->snapIndex();
- if (idx >= 0 && idx != d->currentIndex)
- d->updateCurrent(idx);
+ if (FxListItem *snapItem = d->snapItemAt(d->highlight->position())) {
+ if (snapItem->index >= 0 && snapItem->index != d->currentIndex)
+ d->updateCurrent(snapItem->index);
+ }
}
}
@@ -2503,16 +2485,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);
}
}
@@ -2521,16 +2505,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);
}
}
@@ -2660,10 +2646,11 @@ void QDeclarativeListView::componentComplete()
{
Q_D(QDeclarativeListView);
QDeclarativeFlickable::componentComplete();
+ updateSections();
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);
@@ -2676,6 +2663,18 @@ void QDeclarativeListView::componentComplete()
}
}
+void QDeclarativeListView::updateSections()
+{
+ Q_D(QDeclarativeListView);
+ if (isComponentComplete() && d->model) {
+ QList<QByteArray> roles;
+ if (d->sectionCriteria && !d->sectionCriteria->property().isEmpty())
+ roles << d->sectionCriteria->property().toUtf8();
+ d->model->setWatchedRoles(roles);
+ d->updateSections();
+ }
+}
+
void QDeclarativeListView::refill()
{
Q_D(QDeclarativeListView);
@@ -2751,13 +2750,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;
@@ -2765,15 +2764,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
@@ -2800,7 +2799,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;
@@ -2864,7 +2862,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) {
@@ -2885,6 +2883,7 @@ void QDeclarativeListView::itemsInserted(int modelIndex, int count)
for (int j = 0; j < added.count(); ++j)
added.at(j)->attached->emitAdd();
+ d->updateSections();
d->itemCount += count;
emit countChanged();
}
@@ -2977,6 +2976,7 @@ void QDeclarativeListView::itemsRemoved(int modelIndex, int count)
}
}
+ d->updateSections();
emit countChanged();
}
@@ -3098,6 +3098,14 @@ void QDeclarativeListView::itemsMoved(int from, int to, int count)
// Ensure we don't cause an ugly list scroll.
d->visibleItems.first()->setPosition(d->visibleItems.first()->position() + moveBy);
+ d->updateSections();
+ d->layout();
+}
+
+void QDeclarativeListView::itemsChanged(int, int)
+{
+ Q_D(QDeclarativeListView);
+ d->updateSections();
d->layout();
}
diff --git a/src/declarative/graphicsitems/qdeclarativelistview_p.h b/src/declarative/graphicsitems/qdeclarativelistview_p.h
index 735b248723..2678b90ca7 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview_p.h
+++ b/src/declarative/graphicsitems/qdeclarativelistview_p.h
@@ -250,11 +250,13 @@ protected:
virtual void componentComplete();
private Q_SLOTS:
+ void updateSections();
void refill();
void trackedPositionChanged();
void itemsInserted(int index, int count);
void itemsRemoved(int index, int count);
void itemsMoved(int from, int to, int count);
+ void itemsChanged(int index, int count);
void modelReset();
void destroyRemoved();
void createdItem(int index, QDeclarativeItem *item);
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 a0208efeb3..d9edd11171 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.
*/
/*!
@@ -557,6 +557,7 @@ void QDeclarativeMouseArea::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
ungrabMouse();
setKeepMouseGrab(false);
}
+ d->doubleClick = false;
}
void QDeclarativeMouseArea::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
@@ -565,14 +566,13 @@ void QDeclarativeMouseArea::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *even
if (!d->absorb) {
QDeclarativeItem::mouseDoubleClickEvent(event);
} else {
+ 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());
emit this->doubleClicked(&me);
- if (!me.isAccepted()) {
- // Only deliver the press event if we haven't accepted the double click.
- QDeclarativeItem::mouseDoubleClickEvent(event);
- }
+ QDeclarativeItem::mouseDoubleClickEvent(event);
}
}
@@ -841,7 +841,8 @@ bool QDeclarativeMouseArea::setPressed(bool p)
d->pressed = p;
QDeclarativeMouseEvent me(d->lastPos.x(), d->lastPos.y(), d->lastButton, d->lastButtons, d->lastModifiers, isclick, d->longPress);
if (d->pressed) {
- emit pressed(&me);
+ if (!d->doubleClick)
+ emit pressed(&me);
me.setX(d->lastPos.x());
me.setY(d->lastPos.y());
emit mousePositionChanged(&me);
@@ -849,7 +850,7 @@ bool QDeclarativeMouseArea::setPressed(bool p)
emit released(&me);
me.setX(d->lastPos.x());
me.setY(d->lastPos.y());
- if (isclick && !d->longPress)
+ if (isclick && !d->longPress && !d->doubleClick)
emit clicked(&me);
}
diff --git a/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h b/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h
index 48a56d95b3..06a01d3c6a 100644
--- a/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h
@@ -68,7 +68,7 @@ class QDeclarativeMouseAreaPrivate : public QDeclarativeItemPrivate
public:
QDeclarativeMouseAreaPrivate()
: absorb(true), hovered(false), pressed(false), longPress(false),
- moved(false), stealMouse(false), drag(0)
+ moved(false), stealMouse(false), doubleClick(false), drag(0)
{
}
@@ -109,6 +109,7 @@ public:
bool dragX : 1;
bool dragY : 1;
bool stealMouse : 1;
+ bool doubleClick : 1;
QDeclarativeDrag *drag;
QPointF startScene;
qreal startX;
diff --git a/src/declarative/graphicsitems/qdeclarativepainteditem.cpp b/src/declarative/graphicsitems/qdeclarativepainteditem.cpp
index a6db1fa7fe..b470b3ab60 100644
--- a/src/declarative/graphicsitems/qdeclarativepainteditem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepainteditem.cpp
@@ -44,7 +44,6 @@
#include <QDebug>
#include <QPen>
-#include <QFile>
#include <QEvent>
#include <QApplication>
#include <QGraphicsSceneMouseEvent>
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 31943b2948..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();
}
@@ -1112,16 +1129,16 @@ void QDeclarativePathViewPrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent
if (!interactive || !lastPosTime.isValid())
return;
+ qreal newPc;
+ QPointF pathPoint = pointNear(event->pos(), &newPc);
if (!stealMouse) {
- QPointF delta = event->pos() - startPoint;
+ QPointF delta = pathPoint - startPoint;
if (qAbs(delta.x()) > QApplication::startDragDistance() || qAbs(delta.y()) > QApplication::startDragDistance())
stealMouse = true;
}
if (stealMouse) {
moveReason = QDeclarativePathViewPrivate::Mouse;
- qreal newPc;
- pointNear(event->pos(), &newPc);
qreal diff = (newPc - startPc)*modelCount*mappedRange;
if (diff) {
setOffset(offset + diff);
@@ -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..fc3954f042 100644
--- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
@@ -261,9 +261,9 @@ void QDeclarativeRectangle::doUpdate()
A width of 1 creates a thin line. For no line, use a width of 0 or a transparent color.
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
@@ -477,7 +477,8 @@ void QDeclarativeRectangle::drawRect(QPainter &p)
{
Q_D(QDeclarativeRectangle);
if ((d->gradient && d->gradient->gradient())
- || d->radius > width()/2 || d->radius > height()/2) {
+ || d->radius > width()/2 || d->radius > height()/2
+ || width() < 3 || height() < 3) {
// XXX This path is still slower than the image path
// Image path won't work for gradients or invalid radius though
bool oldAA = p.testRenderHint(QPainter::Antialiasing);
diff --git a/src/declarative/graphicsitems/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 65f15644d7..82c444e04f 100644
--- a/src/declarative/graphicsitems/qdeclarativetext.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetext.cpp
@@ -82,15 +82,16 @@ private:
static QSet<QUrl> errors;
};
-DEFINE_BOOL_CONFIG_OPTION(disableImageCache, QML_DISABLE_IMAGE_CACHE);
+DEFINE_BOOL_CONFIG_OPTION(enableImageCache, QML_ENABLE_TEXT_IMAGE_CACHE);
QDeclarativeTextPrivate::QDeclarativeTextPrivate()
-: color((QRgb)0), style(QDeclarativeText::Normal),
- hAlign(QDeclarativeText::AlignLeft), vAlign(QDeclarativeText::AlignTop), elideMode(QDeclarativeText::ElideNone),
- imgDirty(true), dirty(true), richText(false), singleline(false), cache(true), internalWidthUpdate(false), doc(0),
- format(QDeclarativeText::AutoText), wrapMode(QDeclarativeText::NoWrap)
+: color((QRgb)0), style(QDeclarativeText::Normal), hAlign(QDeclarativeText::AlignLeft),
+ vAlign(QDeclarativeText::AlignTop), elideMode(QDeclarativeText::ElideNone),
+ format(QDeclarativeText::AutoText), wrapMode(QDeclarativeText::NoWrap), imageCacheDirty(true),
+ updateOnComponentComplete(true), richText(false), singleline(false), cacheAllTextAsImage(true),
+ internalWidthUpdate(false), doc(0)
{
- cache = !disableImageCache();
+ cacheAllTextAsImage = enableImageCache();
QGraphicsItemPrivate::acceptedMouseButtons = Qt::LeftButton;
QGraphicsItemPrivate::flags = QGraphicsItemPrivate::flags & ~QGraphicsItem::ItemHasNoContents;
}
@@ -151,7 +152,6 @@ void QTextDocumentWithImageResources::requestFinished()
#endif
QDeclarativeTextPrivate *d = QDeclarativeTextPrivate::get(textItem);
d->updateLayout();
- d->markImgDirty();
}
}
@@ -172,6 +172,384 @@ void QTextDocumentWithImageResources::setText(const QString &text)
QSet<QUrl> QTextDocumentWithImageResources::errors;
+QDeclarativeTextPrivate::~QDeclarativeTextPrivate()
+{
+}
+
+void QDeclarativeTextPrivate::updateLayout()
+{
+ Q_Q(QDeclarativeText);
+ if (!q->isComponentComplete()) {
+ updateOnComponentComplete = true;
+ return;
+ }
+
+ // Setup instance of QTextLayout for all cases other than richtext
+ if (!richText) {
+ layout.clearLayout();
+ layout.setFont(font);
+ if (format != QDeclarativeText::StyledText) {
+ QString tmp = text;
+ tmp.replace(QLatin1Char('\n'), QChar::LineSeparator);
+ singleline = !tmp.contains(QChar::LineSeparator);
+ if (singleline && elideMode != QDeclarativeText::ElideNone && q->widthValid()) {
+ QFontMetrics fm(font);
+ tmp = fm.elidedText(tmp,(Qt::TextElideMode)elideMode,q->width()); // XXX still worth layout...?
+ }
+ layout.setText(tmp);
+ } else {
+ singleline = false;
+ QDeclarativeStyledText::parse(text, layout);
+ }
+ }
+
+ updateSize();
+}
+
+void QDeclarativeTextPrivate::updateSize()
+{
+ Q_Q(QDeclarativeText);
+
+ if (!q->isComponentComplete()) {
+ updateOnComponentComplete = true;
+ return;
+ }
+
+ invalidateImageCache();
+
+ QFontMetrics fm(font);
+ if (text.isEmpty()) {
+ q->setImplicitWidth(0);
+ q->setImplicitHeight(fm.height());
+ emit q->paintedSizeChanged();
+ q->update();
+ return;
+ }
+
+ int dy = q->height();
+ QSize size(0, 0);
+
+ //setup instance of QTextLayout for all cases other than richtext
+ if (!richText) {
+ size = setupTextLayout();
+ if (layedOutTextSize != size) {
+ q->prepareGeometryChange();
+ layedOutTextSize = size;
+ }
+ dy -= size.height();
+ } else {
+ singleline = false; // richtext can't elide or be optimized for single-line case
+ ensureDoc();
+ doc->setDefaultFont(font);
+ QTextOption option((Qt::Alignment)int(hAlign | vAlign));
+ option.setWrapMode(QTextOption::WrapMode(wrapMode));
+ doc->setDefaultTextOption(option);
+ if (wrapMode != QDeclarativeText::NoWrap && q->widthValid())
+ doc->setTextWidth(q->width());
+ else
+ doc->setTextWidth(doc->idealWidth()); // ### Text does not align if width is not set (QTextDoc bug)
+ dy -= (int)doc->size().height();
+ QSize dsize = doc->size().toSize();
+ if (dsize != layedOutTextSize) {
+ q->prepareGeometryChange();
+ layedOutTextSize = dsize;
+ }
+ size = QSize(int(doc->idealWidth()),dsize.height());
+ }
+ int yoff = 0;
+
+ if (q->heightValid()) {
+ if (vAlign == QDeclarativeText::AlignBottom)
+ yoff = dy;
+ else if (vAlign == QDeclarativeText::AlignVCenter)
+ yoff = dy/2;
+ }
+ q->setBaselineOffset(fm.ascent() + yoff);
+
+ //### need to comfirm cost of always setting these for richText
+ internalWidthUpdate = true;
+ q->setImplicitWidth(size.width());
+ internalWidthUpdate = false;
+ q->setImplicitHeight(size.height());
+ emit q->paintedSizeChanged();
+ q->update();
+}
+
+/*!
+ Lays out the QDeclarativeTextPrivate::layout QTextLayout in the constraints of the QDeclarativeText.
+
+ Returns the size of the final text. This can be used to position the text vertically (the text is
+ already absolutely positioned horizontally).
+*/
+QSize QDeclarativeTextPrivate::setupTextLayout()
+{
+ // ### text layout handling should be profiled and optimized as needed
+ // what about QStackTextEngine engine(tmp, d->font.font()); QTextLayout textLayout(&engine);
+ Q_Q(QDeclarativeText);
+ layout.setCacheEnabled(true);
+
+ qreal height = 0;
+ qreal widthUsed = 0;
+ qreal lineWidth = 0;
+
+ //set manual width
+ if ((wrapMode != QDeclarativeText::NoWrap || elideMode != QDeclarativeText::ElideNone) && q->widthValid())
+ lineWidth = q->width();
+
+ QTextOption textOption = layout.textOption();
+ textOption.setWrapMode(QTextOption::WrapMode(wrapMode));
+ layout.setTextOption(textOption);
+
+ layout.beginLayout();
+ forever {
+ QTextLine line = layout.createLine();
+ if (!line.isValid())
+ break;
+
+ if (lineWidth)
+ line.setLineWidth(lineWidth);
+ }
+ layout.endLayout();
+
+ for (int i = 0; i < layout.lineCount(); ++i) {
+ QTextLine line = layout.lineAt(i);
+ widthUsed = qMax(widthUsed, line.naturalTextWidth());
+ }
+
+ qreal layoutWidth = q->widthValid() ? q->width() : widthUsed;
+
+ qreal x = 0;
+ for (int i = 0; i < layout.lineCount(); ++i) {
+ QTextLine line = layout.lineAt(i);
+ line.setPosition(QPointF(0, height));
+ height += line.height();
+
+ if (!cacheAllTextAsImage) {
+ if (hAlign == QDeclarativeText::AlignLeft) {
+ x = 0;
+ } else if (hAlign == QDeclarativeText::AlignRight) {
+ x = layoutWidth - line.naturalTextWidth();
+ } else if (hAlign == QDeclarativeText::AlignHCenter) {
+ x = (layoutWidth - line.naturalTextWidth()) / 2;
+ }
+ line.setPosition(QPointF(x, line.y()));
+ }
+ }
+
+ return layout.boundingRect().toAlignedRect().size();
+}
+
+/*!
+ Returns a painted version of the QDeclarativeTextPrivate::layout QTextLayout.
+ If \a drawStyle is true, the style color overrides all colors in the document.
+*/
+QPixmap QDeclarativeTextPrivate::textLayoutImage(bool drawStyle)
+{
+ //do layout
+ QSize size = layedOutTextSize;
+
+ qreal x = 0;
+ for (int i = 0; i < layout.lineCount(); ++i) {
+ QTextLine line = layout.lineAt(i);
+ if (hAlign == QDeclarativeText::AlignLeft) {
+ x = 0;
+ } else if (hAlign == QDeclarativeText::AlignRight) {
+ x = size.width() - line.naturalTextWidth();
+ } else if (hAlign == QDeclarativeText::AlignHCenter) {
+ x = (size.width() - line.naturalTextWidth()) / 2;
+ }
+ line.setPosition(QPointF(x, line.y()));
+ }
+
+ //paint text
+ QPixmap img(size);
+ if (!size.isEmpty()) {
+ img.fill(Qt::transparent);
+#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
+ drawTextLayout(&p, QPointF(0,0), drawStyle);
+ }
+ return img;
+}
+
+/*!
+ Paints the QDeclarativeTextPrivate::layout QTextLayout into \a painter at \a pos. If
+ \a drawStyle is true, the style color overrides all colors in the document.
+*/
+void QDeclarativeTextPrivate::drawTextLayout(QPainter *painter, const QPointF &pos, bool drawStyle)
+{
+ if (drawStyle)
+ painter->setPen(styleColor);
+ else
+ painter->setPen(color);
+ painter->setFont(font);
+ layout.draw(painter, pos);
+}
+
+/*!
+ Returns a painted version of the QDeclarativeTextPrivate::doc QTextDocument.
+ If \a drawStyle is true, the style color overrides all colors in the document.
+*/
+QPixmap QDeclarativeTextPrivate::textDocumentImage(bool drawStyle)
+{
+ QSize size = doc->size().toSize();
+
+ //paint text
+ QPixmap img(size);
+ img.fill(Qt::transparent);
+#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
+
+ QAbstractTextDocumentLayout::PaintContext context;
+
+ QTextOption oldOption(doc->defaultTextOption());
+ if (drawStyle) {
+ context.palette.setColor(QPalette::Text, styleColor);
+ QTextOption colorOption(doc->defaultTextOption());
+ colorOption.setFlags(QTextOption::SuppressColors);
+ doc->setDefaultTextOption(colorOption);
+ } else {
+ context.palette.setColor(QPalette::Text, color);
+ }
+ doc->documentLayout()->draw(&p, context);
+ if (drawStyle)
+ doc->setDefaultTextOption(oldOption);
+ return img;
+}
+
+/*!
+ Mark the image cache as dirty.
+*/
+void QDeclarativeTextPrivate::invalidateImageCache()
+{
+ Q_Q(QDeclarativeText);
+
+ if (imageCacheDirty)
+ return;
+
+ imageCacheDirty = true;
+ imageCache = QPixmap();
+
+ if (q->isComponentComplete())
+ q->update();
+}
+
+/*!
+ Tests if the image cache is dirty, and repaints it if it is.
+*/
+void QDeclarativeTextPrivate::checkImageCache()
+{
+ if (!imageCacheDirty)
+ return;
+
+ if (text.isEmpty()) {
+
+ imageCache = QPixmap();
+
+ } else {
+
+ QPixmap textImage;
+ QPixmap styledImage;
+
+ if (richText) {
+ textImage = textDocumentImage(false);
+ if (style != QDeclarativeText::Normal)
+ styledImage = textDocumentImage(true); //### should use styleColor
+ } else {
+ textImage = textLayoutImage(false);
+ if (style != QDeclarativeText::Normal)
+ styledImage = textLayoutImage(true); //### should use styleColor
+ }
+
+ switch (style) {
+ case QDeclarativeText::Outline:
+ imageCache = drawOutline(textImage, styledImage);
+ break;
+ case QDeclarativeText::Sunken:
+ imageCache = drawOutline(textImage, styledImage, -1);
+ break;
+ case QDeclarativeText::Raised:
+ imageCache = drawOutline(textImage, styledImage, 1);
+ break;
+ default:
+ imageCache = textImage;
+ break;
+ }
+
+ }
+
+ imageCacheDirty = false;
+}
+
+/*!
+ Ensures the QDeclarativeTextPrivate::doc variable is set to a valid text document
+*/
+void QDeclarativeTextPrivate::ensureDoc()
+{
+ if (!doc) {
+ Q_Q(QDeclarativeText);
+ doc = new QTextDocumentWithImageResources(q);
+ doc->setDocumentMargin(0);
+ }
+}
+
+/*!
+ Draw \a styleSource as an outline around \a source and return the new image.
+*/
+QPixmap QDeclarativeTextPrivate::drawOutline(const QPixmap &source, const QPixmap &styleSource)
+{
+ QPixmap img = QPixmap(styleSource.width() + 2, styleSource.height() + 2);
+ img.fill(Qt::transparent);
+
+ QPainter ppm(&img);
+
+ QPoint pos(0, 0);
+ pos += QPoint(-1, 0);
+ ppm.drawPixmap(pos, styleSource);
+ pos += QPoint(2, 0);
+ ppm.drawPixmap(pos, styleSource);
+ pos += QPoint(-1, -1);
+ ppm.drawPixmap(pos, styleSource);
+ pos += QPoint(0, 2);
+ ppm.drawPixmap(pos, styleSource);
+
+ pos += QPoint(0, -1);
+ ppm.drawPixmap(pos, source);
+ ppm.end();
+
+ return img;
+}
+
+/*!
+ Draw \a styleSource below \a source at \a yOffset and return the new image.
+*/
+QPixmap QDeclarativeTextPrivate::drawOutline(const QPixmap &source, const QPixmap &styleSource, int yOffset)
+{
+ QPixmap img = QPixmap(styleSource.width() + 2, styleSource.height() + 2);
+ img.fill(Qt::transparent);
+
+ QPainter ppm(&img);
+
+ ppm.drawPixmap(QPoint(0, yOffset), styleSource);
+ ppm.drawPixmap(0, 0, source);
+
+ ppm.end();
+
+ return img;
+}
+
/*!
\qmlclass Text QDeclarativeText
\ingroup qml-basic-visual-elements
@@ -211,10 +589,44 @@ QDeclarativeText::~QDeclarativeText()
{
}
+/*!
+ \qmlproperty bool Text::clip
+ This property holds whether the text is clipped.
-QDeclarativeTextPrivate::~QDeclarativeTextPrivate()
-{
-}
+ Note that if the text does not fit in the bounding rectangle it will be abruptly chopped.
+
+ If you want to display potentially long text in a limited space, you probably want to use \c elide instead.
+*/
+
+/*!
+ \qmlproperty bool Text::smooth
+
+ This property holds whether the text is smoothly scaled or transformed.
+
+ Smooth filtering gives better visual quality, but is slower. If
+ the item is displayed at its natural size, this property has no visual or
+ performance effect.
+
+ \note Generally scaling artifacts are only visible if the item is stationary on
+ the screen. A common pattern when animating an item is to disable smooth
+ filtering at the beginning of the animation and reenable it at the conclusion.
+*/
+
+/*!
+ \qmlsignal Text::onLinkActivated(string link)
+
+ This handler is called when the user clicks on a link embedded in the text.
+ The link must be in rich text or HTML format and the
+ \a link string provides access to the particular link.
+
+ \snippet doc/src/snippets/declarative/text/onLinkActivated.qml 0
+
+ The example code will display the text
+ "The main website is at \l{http://qt.nokia.com}{Nokia Qt DF}."
+
+ Clicking on the highlighted link will output
+ \tt{http://qt.nokia.com link activated} to the console.
+*/
/*!
\qmlproperty string Text::font.family
@@ -320,7 +732,6 @@ QDeclarativeTextPrivate::~QDeclarativeTextPrivate()
Text { text: "Hello"; font.capitalization: Font.AllLowercase }
\endqml
*/
-
QFont QDeclarativeText::font() const
{
Q_D(const QDeclarativeText);
@@ -334,30 +745,9 @@ void QDeclarativeText::setFont(const QFont &font)
return;
d->font = font;
-
d->updateLayout();
- d->markImgDirty();
- emit fontChanged(d->font);
-}
-void QDeclarativeText::setText(const QString &n)
-{
- Q_D(QDeclarativeText);
- if (d->text == n)
- return;
-
- d->richText = d->format == RichText || (d->format == AutoText && Qt::mightBeRichText(n));
- if (d->richText) {
- if (isComponentComplete()) {
- d->ensureDoc();
- d->doc->setText(n);
- }
- }
-
- d->text = n;
- d->updateLayout();
- d->markImgDirty();
- emit textChanged(d->text);
+ emit fontChanged(d->font);
}
/*!
@@ -374,17 +764,25 @@ QString QDeclarativeText::text() const
return d->text;
}
-void QDeclarativeText::setColor(const QColor &color)
+void QDeclarativeText::setText(const QString &n)
{
Q_D(QDeclarativeText);
- if (d->color == color)
+ if (d->text == n)
return;
- d->color = color;
- d->markImgDirty();
- emit colorChanged(d->color);
+ d->richText = d->format == RichText || (d->format == AutoText && Qt::mightBeRichText(n));
+ if (d->richText && isComponentComplete()) {
+ d->ensureDoc();
+ d->doc->setText(n);
+ }
+
+ d->text = n;
+ d->updateLayout();
+
+ emit textChanged(d->text);
}
+
/*!
\qmlproperty color Text::color
@@ -398,13 +796,23 @@ void QDeclarativeText::setColor(const QColor &color)
Text { color: "steelblue"; ... }
\endqml
*/
-
QColor QDeclarativeText::color() const
{
Q_D(const QDeclarativeText);
return d->color;
}
+void QDeclarativeText::setColor(const QColor &color)
+{
+ Q_D(QDeclarativeText);
+ if (d->color == color)
+ return;
+
+ d->color = color;
+ d->invalidateImageCache();
+ emit colorChanged(d->color);
+}
+
/*!
\qmlproperty enumeration Text::style
@@ -445,21 +853,10 @@ void QDeclarativeText::setStyle(QDeclarativeText::TextStyle style)
if (isComponentComplete() && (d->style == Normal || style == Normal))
prepareGeometryChange();
d->style = style;
- d->markImgDirty();
+ d->invalidateImageCache();
emit styleChanged(d->style);
}
-void QDeclarativeText::setStyleColor(const QColor &color)
-{
- Q_D(QDeclarativeText);
- if (d->styleColor == color)
- return;
-
- d->styleColor = color;
- d->markImgDirty();
- emit styleColorChanged(d->styleColor);
-}
-
/*!
\qmlproperty color Text::styleColor
@@ -481,6 +878,18 @@ QColor QDeclarativeText::styleColor() const
return d->styleColor;
}
+void QDeclarativeText::setStyleColor(const QColor &color)
+{
+ Q_D(QDeclarativeText);
+ if (d->styleColor == color)
+ return;
+
+ d->styleColor = color;
+ d->invalidateImageCache();
+ emit styleColorChanged(d->styleColor);
+}
+
+
/*!
\qmlproperty enumeration Text::horizontalAlignment
\qmlproperty enumeration Text::verticalAlignment
@@ -493,7 +902,7 @@ QColor QDeclarativeText::styleColor() const
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.
*/
@@ -511,7 +920,10 @@ void QDeclarativeText::setHAlign(HAlignment align)
if (isComponentComplete())
prepareGeometryChange();
+
d->hAlign = align;
+ d->updateLayout();
+
emit horizontalAlignmentChanged(align);
}
@@ -559,9 +971,8 @@ void QDeclarativeText::setWrapMode(WrapMode mode)
return;
d->wrapMode = mode;
-
d->updateLayout();
- d->markImgDirty();
+
emit wrapModeChanged();
}
@@ -621,7 +1032,6 @@ Column {
\o \image declarative-textformat.png
\endtable
*/
-
QDeclarativeText::TextFormat QDeclarativeText::textFormat() const
{
Q_D(const QDeclarativeText);
@@ -637,19 +1047,13 @@ void QDeclarativeText::setTextFormat(TextFormat format)
bool wasRich = d->richText;
d->richText = format == RichText || (format == AutoText && Qt::mightBeRichText(d->text));
- if (wasRich && !d->richText) {
- //### delete control? (and vice-versa below)
- d->updateLayout();
- d->markImgDirty();
- } else if (!wasRich && d->richText) {
- if (isComponentComplete()) {
- d->ensureDoc();
- d->doc->setText(d->text);
- }
- d->updateLayout();
- d->markImgDirty();
+ if (!wasRich && d->richText && isComponentComplete()) {
+ d->ensureDoc();
+ d->doc->setText(d->text);
}
+ d->updateLayout();
+
emit textFormatChanged(d->format);
}
@@ -659,7 +1063,7 @@ void QDeclarativeText::setTextFormat(TextFormat format)
Set this property to elide parts of the text fit to the Text item's width.
The text will only elide if an explicit width has been set.
- This property cannot be used with wrapping enabled or with rich text.
+ This property cannot be used with multi-line text or with rich text.
Eliding can be:
\list
@@ -688,12 +1092,12 @@ void QDeclarativeText::setElideMode(QDeclarativeText::TextElideMode mode)
return;
d->elideMode = mode;
-
d->updateLayout();
- d->markImgDirty();
+
emit elideModeChanged(d->elideMode);
}
+/*! \internal */
QRectF QDeclarativeText::boundingRect() const
{
Q_D(const QDeclarativeText);
@@ -704,7 +1108,7 @@ QRectF QDeclarativeText::boundingRect() const
int x = 0;
int y = 0;
- QSize size = d->cachedLayoutSize;
+ QSize size = d->layedOutTextSize;
if (d->style != Normal)
size += QSize(2,2);
@@ -737,117 +1141,24 @@ QRectF QDeclarativeText::boundingRect() const
return QRectF(x,y,size.width(),size.height());
}
-void QDeclarativeText::geometryChanged(const QRectF &newGeometry,
- const QRectF &oldGeometry)
+/*! \internal */
+void QDeclarativeText::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_D(QDeclarativeText);
- if (!d->internalWidthUpdate && newGeometry.width() != oldGeometry.width()) {
- if (d->wrapMode != QDeclarativeText::NoWrap || d->elideMode != QDeclarativeText::ElideNone) {
- //re-elide if needed
- if (d->singleline && d->elideMode != QDeclarativeText::ElideNone &&
- isComponentComplete() && widthValid()) {
-
- QFontMetrics fm(d->font);
- QString tmp = fm.elidedText(d->text,(Qt::TextElideMode)d->elideMode,width()); // XXX still worth layout...?
- d->layout.setText(tmp);
- }
-
- d->imgDirty = true;
+ 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();
+ } else {
+ // We just need to re-layout
d->updateSize();
}
}
- QDeclarativeItem::geometryChanged(newGeometry, oldGeometry);
-}
-
-void QDeclarativeTextPrivate::updateLayout()
-{
- Q_Q(QDeclarativeText);
- if (q->isComponentComplete()) {
- //setup instance of QTextLayout for all cases other than richtext
- if (!richText) {
- layout.clearLayout();
- layout.setFont(font);
- if (format != QDeclarativeText::StyledText) {
- QString tmp = text;
- tmp.replace(QLatin1Char('\n'), QChar::LineSeparator);
- singleline = !tmp.contains(QChar::LineSeparator);
- if (singleline && elideMode != QDeclarativeText::ElideNone && q->widthValid()) {
- QFontMetrics fm(font);
- tmp = fm.elidedText(tmp,(Qt::TextElideMode)elideMode,q->width()); // XXX still worth layout...?
- }
- layout.setText(tmp);
- } else {
- singleline = false;
- QDeclarativeStyledText::parse(text, layout);
- }
- }
- updateSize();
- } else {
- dirty = true;
- }
-}
-
-
-void QDeclarativeTextPrivate::updateSize()
-{
- Q_Q(QDeclarativeText);
- if (q->isComponentComplete()) {
- QFontMetrics fm(font);
- if (text.isEmpty()) {
- q->setImplicitHeight(fm.height());
- emit q->paintedSizeChanged();
- return;
- }
-
- int dy = q->height();
- QSize size(0, 0);
-
- //setup instance of QTextLayout for all cases other than richtext
- if (!richText) {
- size = setupTextLayout();
- if (cachedLayoutSize != size) {
- q->prepareGeometryChange();
- cachedLayoutSize = size;
- }
- dy -= size.height();
- } else {
- singleline = false; // richtext can't elide or be optimized for single-line case
- ensureDoc();
- doc->setDefaultFont(font);
- QTextOption option((Qt::Alignment)int(hAlign | vAlign));
- option.setWrapMode(QTextOption::WrapMode(wrapMode));
- doc->setDefaultTextOption(option);
- if (wrapMode != QDeclarativeText::NoWrap && q->widthValid())
- doc->setTextWidth(q->width());
- else
- doc->setTextWidth(doc->idealWidth()); // ### Text does not align if width is not set (QTextDoc bug)
- dy -= (int)doc->size().height();
- QSize dsize = doc->size().toSize();
- if (dsize != cachedLayoutSize) {
- q->prepareGeometryChange();
- cachedLayoutSize = dsize;
- }
- size = QSize(int(doc->idealWidth()),dsize.height());
- }
- int yoff = 0;
-
- if (q->heightValid()) {
- if (vAlign == QDeclarativeText::AlignBottom)
- yoff = dy;
- else if (vAlign == QDeclarativeText::AlignVCenter)
- yoff = dy/2;
- }
- q->setBaselineOffset(fm.ascent() + yoff);
- //### need to comfirm cost of always setting these for richText
- internalWidthUpdate = true;
- q->setImplicitWidth(size.width());
- internalWidthUpdate = false;
- q->setImplicitHeight(size.height());
- emit q->paintedSizeChanged();
- } else {
- dirty = true;
- }
+ QDeclarativeItem::geometryChanged(newGeometry, oldGeometry);
}
/*!
@@ -872,228 +1183,6 @@ qreal QDeclarativeText::paintedHeight() const
return implicitHeight();
}
-
-
-// ### text layout handling should be profiled and optimized as needed
-// what about QStackTextEngine engine(tmp, d->font.font()); QTextLayout textLayout(&engine);
-
-void QDeclarativeTextPrivate::drawOutline()
-{
- QPixmap img = QPixmap(imgStyleCache.width()+2,imgStyleCache.height()+2);
- img.fill(Qt::transparent);
-
- QPainter ppm(&img);
-
- QPoint pos(imgCache.rect().topLeft());
- pos += QPoint(-1, 0);
- ppm.drawPixmap(pos, imgStyleCache);
- pos += QPoint(2, 0);
- ppm.drawPixmap(pos, imgStyleCache);
- pos += QPoint(-1, -1);
- ppm.drawPixmap(pos, imgStyleCache);
- pos += QPoint(0, 2);
- ppm.drawPixmap(pos, imgStyleCache);
-
- pos += QPoint(0, -1);
- ppm.drawPixmap(pos, imgCache);
- ppm.end();
-
- imgCache = img;
-}
-
-void QDeclarativeTextPrivate::drawOutline(int yOffset)
-{
- QPixmap img = QPixmap(imgStyleCache.width()+2,imgStyleCache.height()+2);
- img.fill(Qt::transparent);
-
- QPainter ppm(&img);
-
- QPoint pos(imgCache.rect().topLeft());
- pos += QPoint(0, yOffset);
- ppm.drawPixmap(pos, imgStyleCache);
-
- pos += QPoint(0, -yOffset);
- ppm.drawPixmap(pos, imgCache);
- ppm.end();
-
- imgCache = img;
-}
-
-QSize QDeclarativeTextPrivate::setupTextLayout()
-{
- Q_Q(QDeclarativeText);
- layout.setCacheEnabled(true);
-
- int height = 0;
- qreal widthUsed = 0;
- qreal lineWidth = 0;
-
- //set manual width
- if ((wrapMode != QDeclarativeText::NoWrap || elideMode != QDeclarativeText::ElideNone) && q->widthValid())
- lineWidth = q->width();
-
- QTextOption textOption = layout.textOption();
- textOption.setWrapMode(QTextOption::WrapMode(wrapMode));
- layout.setTextOption(textOption);
-
- layout.beginLayout();
-
- while (1) {
- QTextLine line = layout.createLine();
- if (!line.isValid())
- break;
-
- if ((wrapMode != QDeclarativeText::NoWrap || elideMode != QDeclarativeText::ElideNone) && q->widthValid())
- line.setLineWidth(lineWidth);
- }
- layout.endLayout();
-
- int x = 0;
- for (int i = 0; i < layout.lineCount(); ++i) {
- QTextLine line = layout.lineAt(i);
- widthUsed = qMax(widthUsed, line.naturalTextWidth());
- line.setPosition(QPointF(0, height));
- height += int(line.height());
-
- if (!cache) {
- if (hAlign == QDeclarativeText::AlignLeft) {
- x = 0;
- } else if (hAlign == QDeclarativeText::AlignRight) {
- x = q->width() - (int)line.naturalTextWidth();
- } else if (hAlign == QDeclarativeText::AlignHCenter) {
- x = (q->width() - (int)line.naturalTextWidth()) / 2;
- }
- line.setPosition(QPoint(x, (int)line.y()));
- }
- }
-
- return QSize(qCeil(widthUsed), height);
-}
-
-QPixmap QDeclarativeTextPrivate::wrappedTextImage(bool drawStyle)
-{
- //do layout
- QSize size = cachedLayoutSize;
-
- int 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();
- } else if (hAlign == QDeclarativeText::AlignHCenter) {
- x = (size.width() - (int)line.naturalTextWidth()) / 2;
- }
- line.setPosition(QPoint(x, (int)line.y()));
- }
-
- //paint text
- QPixmap img(size);
- if (!size.isEmpty()) {
- img.fill(Qt::transparent);
-#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
- drawWrappedText(&p, QPointF(0,0), drawStyle);
- }
- return img;
-}
-
-void QDeclarativeTextPrivate::drawWrappedText(QPainter *p, const QPointF &pos, bool drawStyle)
-{
- if (drawStyle)
- p->setPen(styleColor);
- else
- p->setPen(color);
- p->setFont(font);
- layout.draw(p , pos);
-}
-
-QPixmap QDeclarativeTextPrivate::richTextImage(bool drawStyle)
-{
- QSize size = doc->size().toSize();
-
- //paint text
- QPixmap img(size);
- img.fill(Qt::transparent);
-#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
-
- QAbstractTextDocumentLayout::PaintContext context;
-
- QTextOption oldOption(doc->defaultTextOption());
- if (drawStyle) {
- context.palette.setColor(QPalette::Text, styleColor);
- QTextOption colorOption(doc->defaultTextOption());
- colorOption.setFlags(QTextOption::SuppressColors);
- doc->setDefaultTextOption(colorOption);
- } else {
- context.palette.setColor(QPalette::Text, color);
- }
- doc->documentLayout()->draw(&p, context);
- if (drawStyle)
- doc->setDefaultTextOption(oldOption);
- return img;
-}
-
-void QDeclarativeTextPrivate::checkImgCache()
-{
- if (!imgDirty)
- return;
-
- bool empty = text.isEmpty();
- QPixmap newImgCache;
- if (empty) {
- imgStyleCache = QPixmap();
- } else if (richText) {
- newImgCache = richTextImage(false);
- if (style != QDeclarativeText::Normal)
- imgStyleCache = richTextImage(true); //### should use styleColor
- } else {
- newImgCache = wrappedTextImage(false);
- if (style != QDeclarativeText::Normal)
- imgStyleCache = wrappedTextImage(true); //### should use styleColor
- }
- imgCache = newImgCache;
- if (!empty)
- switch (style) {
- case QDeclarativeText::Outline:
- drawOutline();
- break;
- case QDeclarativeText::Sunken:
- drawOutline(-1);
- break;
- case QDeclarativeText::Raised:
- drawOutline(1);
- break;
- default:
- break;
- }
-
- imgDirty = false;
-}
-
-void QDeclarativeTextPrivate::ensureDoc()
-{
- if (!doc) {
- Q_Q(QDeclarativeText);
- doc = new QTextDocumentWithImageResources(q);
- doc->setDocumentMargin(0);
- }
-}
-
/*!
Returns the number of resources (images) that are being loaded asynchronously.
*/
@@ -1103,22 +1192,14 @@ int QDeclarativeText::resourcesLoading() const
return d->doc ? d->doc->resourcesLoading() : 0;
}
-/*!
- \qmlproperty bool Text::clip
- This property holds whether the text is clipped.
-
- Note that if the text does not fit in the bounding rectangle it will be abruptly chopped.
-
- If you want to display potentially long text in a limited space, you probably want to use \c elide instead.
-*/
-
+/*! \internal */
void QDeclarativeText::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *)
{
Q_D(QDeclarativeText);
- if (d->cache || d->style != Normal) {
- d->checkImgCache();
- if (d->imgCache.isNull())
+ if (d->cacheAllTextAsImage || d->style != Normal) {
+ d->checkImageCache();
+ if (d->imageCache.isNull())
return;
bool oldAA = p->testRenderHint(QPainter::Antialiasing);
@@ -1128,23 +1209,23 @@ void QDeclarativeText::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWid
QRect br = boundingRect().toRect();
- bool needClip = clip() && (d->imgCache.width() > width() ||
- d->imgCache.height() > height());
+ bool needClip = clip() && (d->imageCache.width() > width() ||
+ d->imageCache.height() > height());
if (needClip)
- p->drawPixmap(0, 0, width(), height(), d->imgCache, -br.x(), -br.y(), width(), height());
+ p->drawPixmap(0, 0, width(), height(), d->imageCache, -br.x(), -br.y(), width(), height());
else
- p->drawPixmap(br.x(), br.y(), d->imgCache);
+ p->drawPixmap(br.x(), br.y(), d->imageCache);
if (d->smooth) {
p->setRenderHint(QPainter::Antialiasing, oldAA);
p->setRenderHint(QPainter::SmoothPixmapTransform, oldSmooth);
}
} else {
- qreal y = boundingRect().y();
+ QRectF bounds = boundingRect();
- bool needClip = clip() && (d->cachedLayoutSize.width() > width() ||
- d->cachedLayoutSize.height() > height());
+ bool needClip = clip() && (d->layedOutTextSize.width() > width() ||
+ d->layedOutTextSize.height() > height());
if (needClip) {
p->save();
@@ -1153,49 +1234,35 @@ void QDeclarativeText::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWid
if (d->richText) {
QAbstractTextDocumentLayout::PaintContext context;
context.palette.setColor(QPalette::Text, d->color);
- p->translate(0, y);
+ p->translate(bounds.x(), bounds.y());
d->doc->documentLayout()->draw(p, context);
- p->translate(0, -y);
+ p->translate(-bounds.x(), -bounds.y());
} else {
- d->drawWrappedText(p, QPointF(0,y), false);
+ d->drawTextLayout(p, QPointF(0, bounds.y()), false);
}
- if (needClip)
+
+ if (needClip) {
p->restore();
+ }
}
}
-/*!
- \qmlproperty bool Text::smooth
-
- This property holds whether the text is smoothly scaled or transformed.
-
- Smooth filtering gives better visual quality, but is slower. If
- the item is displayed at its natural size, this property has no visual or
- performance effect.
-
- \note Generally scaling artifacts are only visible if the item is stationary on
- the screen. A common pattern when animating an item is to disable smooth
- filtering at the beginning of the animation and reenable it at the conclusion.
-*/
-
+/*! \internal */
void QDeclarativeText::componentComplete()
{
Q_D(QDeclarativeText);
QDeclarativeItem::componentComplete();
- if (d->dirty) {
+ if (d->updateOnComponentComplete) {
+ d->updateOnComponentComplete = false;
if (d->richText) {
d->ensureDoc();
d->doc->setText(d->text);
}
d->updateLayout();
- d->dirty = false;
}
}
-/*!
- \overload
- Handles the given mouse \a event.
- */
+/*! \internal */
void QDeclarativeText::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativeText);
@@ -1214,26 +1281,7 @@ void QDeclarativeText::mousePressEvent(QGraphicsSceneMouseEvent *event)
}
-/*!
- \qmlsignal Text::onLinkActivated(string link)
-
- This handler is called when the user clicks on a link embedded in the text.
- The link must be in rich text or HTML format and the
- \a link string provides access to the particular link.
-
- \snippet doc/src/snippets/declarative/text/onLinkActivated.qml 0
-
- The example code will display the text
- "The main website is at \l{http://qt.nokia.com}{Nokia Qt DF}."
-
- Clicking on the highlighted link will output
- \tt{http://qt.nokia.com link activated} to the console.
-*/
-
-/*!
- \overload
- Handles the given mouse \a event.
- */
+/*! \internal */
void QDeclarativeText::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativeText);
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/qdeclarativetext_p_p.h b/src/declarative/graphicsitems/qdeclarativetext_p_p.h
index db68558912..e37f477bae 100644
--- a/src/declarative/graphicsitems/qdeclarativetext_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetext_p_p.h
@@ -74,24 +74,8 @@ public:
~QDeclarativeTextPrivate();
- void ensureDoc();
void updateSize();
void updateLayout();
- void markImgDirty() {
- Q_Q(QDeclarativeText);
- imgDirty = true;
- if (q->isComponentComplete())
- q->update();
- }
- void checkImgCache();
-
- void drawOutline();
- void drawOutline(int yOffset);
-
- QPixmap wrappedTextImage(bool drawStyle);
- void drawWrappedText(QPainter *p, const QPointF &pos, bool drawStyle);
- QPixmap richTextImage(bool drawStyle);
- QSize setupTextLayout();
QString text;
QFont font;
@@ -99,23 +83,37 @@ public:
QDeclarativeText::TextStyle style;
QColor styleColor;
QString activeLink;
- QPixmap imgCache;
- QPixmap imgStyleCache;
QDeclarativeText::HAlignment hAlign;
QDeclarativeText::VAlignment vAlign;
QDeclarativeText::TextElideMode elideMode;
- bool imgDirty:1;
- bool dirty:1;
+ QDeclarativeText::TextFormat format;
+ QDeclarativeText::WrapMode wrapMode;
+
+ void invalidateImageCache();
+ void checkImageCache();
+ QPixmap imageCache;
+
+ bool imageCacheDirty:1;
+ bool updateOnComponentComplete:1;
bool richText:1;
bool singleline:1;
- bool cache:1;
+ bool cacheAllTextAsImage:1;
bool internalWidthUpdate:1;
+
+ QSize layedOutTextSize;
+
+ void ensureDoc();
+ QPixmap textDocumentImage(bool drawStyle);
QTextDocumentWithImageResources *doc;
+
+ QSize setupTextLayout();
+ QPixmap textLayoutImage(bool drawStyle);
+ void drawTextLayout(QPainter *p, const QPointF &pos, bool drawStyle);
QDeclarativeTextLayout layout;
- QSize cachedLayoutSize;
- QDeclarativeText::TextFormat format;
- QDeclarativeText::WrapMode wrapMode;
-
+
+ static QPixmap drawOutline(const QPixmap &source, const QPixmap &styleSource);
+ static QPixmap drawOutline(const QPixmap &source, const QPixmap &styleSource, int yOffset);
+
static inline QDeclarativeTextPrivate *get(QDeclarativeText *t) {
return t->d_func();
}
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
index 6f5608a919..e05f4e40de 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
@@ -319,6 +319,7 @@ void QDeclarativeTextEdit::setTextFormat(TextFormat format)
updateSize();
}
d->format = format;
+ d->control->setAcceptRichText(d->format != PlainText);
emit textFormatChanged(d->format);
}
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
index 637dd77a6e..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()));
@@ -1464,6 +1475,7 @@ void QDeclarativeTextInputPrivate::init()
void QDeclarativeTextInput::cursorPosChanged()
{
Q_D(QDeclarativeTextInput);
+ d->updateHorizontalScroll();
updateRect();//TODO: Only update rect between pos's
updateMicroFocus();
emit cursorPositionChanged();
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 439f500cd5..4fe6c4cac2 100644
--- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
+++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
@@ -403,6 +403,8 @@ public:
QDeclarativeListAccessor *m_listAccessor;
QModelIndex m_root;
+ QList<QByteArray> watchedRoles;
+ QList<int> watchedRoleIds;
};
class QDeclarativeVisualDataModelDataMetaObject : public QDeclarativeOpenMetaObject
@@ -712,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;
@@ -760,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;
@@ -935,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();
}
@@ -1170,10 +1176,25 @@ int QDeclarativeVisualDataModel::indexOf(QDeclarativeItem *item, QObject *) cons
return -1;
}
+void QDeclarativeVisualDataModel::setWatchedRoles(QList<QByteArray> roles)
+{
+ Q_D(QDeclarativeVisualDataModel);
+ d->watchedRoles = roles;
+ d->watchedRoleIds.clear();
+}
+
void QDeclarativeVisualDataModel::_q_itemsChanged(int index, int count,
const QList<int> &roles)
{
Q_D(QDeclarativeVisualDataModel);
+ bool changed = false;
+ if (!d->watchedRoles.isEmpty() && d->watchedRoleIds.isEmpty()) {
+ foreach (QByteArray r, d->watchedRoles) {
+ if (d->m_roleNames.contains(r))
+ d->watchedRoleIds << d->m_roleNames.value(r);
+ }
+ }
+
for (QHash<int,QDeclarativeVisualDataModelPrivate::ObjectRef>::ConstIterator iter = d->m_cache.begin();
iter != d->m_cache.end(); ++iter) {
const int idx = iter.key();
@@ -1183,6 +1204,8 @@ void QDeclarativeVisualDataModel::_q_itemsChanged(int index, int count,
QDeclarativeVisualDataModelData *data = d->data(objRef.obj);
for (int roleIdx = 0; roleIdx < roles.count(); ++roleIdx) {
int role = roles.at(roleIdx);
+ if (!changed && !d->watchedRoleIds.isEmpty() && d->watchedRoleIds.contains(role))
+ changed = true;
int propId = data->propForRole(role);
if (propId != -1) {
if (data->hasValue(propId)) {
@@ -1217,6 +1240,8 @@ void QDeclarativeVisualDataModel::_q_itemsChanged(int index, int count,
}
}
}
+ if (changed)
+ emit itemsChanged(index, count);
}
void QDeclarativeVisualDataModel::_q_itemsInserted(int index, int count)
diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel_p.h b/src/declarative/graphicsitems/qdeclarativevisualitemmodel_p.h
index f09d8dd73a..5e187c269e 100644
--- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel_p.h
+++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel_p.h
@@ -79,6 +79,7 @@ public:
virtual bool completePending() const = 0;
virtual void completeItem() = 0;
virtual QString stringValue(int, const QString &) = 0;
+ virtual void setWatchedRoles(QList<QByteArray> roles) = 0;
virtual int indexOf(QDeclarativeItem *item, QObject *objectContext) const = 0;
@@ -87,6 +88,7 @@ Q_SIGNALS:
void itemsInserted(int index, int count);
void itemsRemoved(int index, int count);
void itemsMoved(int from, int to, int count);
+ void itemsChanged(int index, int count);
void modelReset();
void createdItem(int index, QDeclarativeItem *item);
void destroyingItem(QDeclarativeItem *item);
@@ -120,6 +122,7 @@ public:
virtual bool completePending() const;
virtual void completeItem();
virtual QString stringValue(int index, const QString &role);
+ virtual void setWatchedRoles(QList<QByteArray>) {}
virtual int indexOf(QDeclarativeItem *item, QObject *objectContext) const;
@@ -174,6 +177,7 @@ public:
bool completePending() const;
void completeItem();
virtual QString stringValue(int index, const QString &role);
+ virtual void setWatchedRoles(QList<QByteArray> roles);
int indexOf(QDeclarativeItem *item, QObject *objectContext) const;
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..a4ecc770c4 100644
--- a/src/declarative/qml/qdeclarativecompileddata.cpp
+++ b/src/declarative/qml/qdeclarativecompileddata.cpp
@@ -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 dc28e229cc..b2740b82a6 100644
--- a/src/declarative/qml/qdeclarativecompiler.cpp
+++ b/src/declarative/qml/qdeclarativecompiler.cpp
@@ -590,7 +590,7 @@ bool QDeclarativeCompiler::compile(QDeclarativeEngine *engine,
COMPILE_EXCEPTION(parserRef->refObjects.first(), err);
}
} else if (tref.typeData) {
- ref.component = tref.typeData->component();
+ ref.component = tref.typeData->compiledData();
ref.ref = tref.typeData;
ref.ref->addref();
}
@@ -722,7 +722,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 +940,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 +957,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());
@@ -1932,6 +1932,9 @@ bool QDeclarativeCompiler::buildPropertyAssignment(QDeclarativeParser::Property
{
obj->addValueProperty(prop);
+ if (prop->values.count() > 1)
+ COMPILE_EXCEPTION(prop->values.at(0), tr( "Cannot assign multiple values to a singular property") );
+
for (int ii = 0; ii < prop->values.count(); ++ii) {
Value *v = prop->values.at(ii);
if (v->object) {
@@ -2562,8 +2565,8 @@ bool QDeclarativeCompiler::compileAlias(QMetaObjectBuilder &builder,
QStringList alias = astNodeToStringList(node);
- if (alias.count() != 1 && alias.count() != 2)
- COMPILE_EXCEPTION(prop.defaultValue, tr("Invalid alias reference. An alias reference must be specified as <id> or <id>.<property>"));
+ if (alias.count() < 1 || alias.count() > 3)
+ COMPILE_EXCEPTION(prop.defaultValue, tr("Invalid alias reference. An alias reference must be specified as <id>, <id>.<property> or <id>.<value property>.<property>"));
if (!compileState.ids.contains(alias.at(0)))
COMPILE_EXCEPTION(prop.defaultValue, tr("Invalid alias reference. Unable to find id \"%1\"").arg(alias.at(0)));
@@ -2575,11 +2578,14 @@ bool QDeclarativeCompiler::compileAlias(QMetaObjectBuilder &builder,
int propIdx = -1;
int flags = 0;
bool writable = false;
- if (alias.count() == 2) {
+ if (alias.count() == 2 || alias.count() == 3) {
propIdx = idObject->metaObject()->indexOfProperty(alias.at(1).toUtf8().constData());
- if (-1 == propIdx)
+ if (-1 == propIdx) {
COMPILE_EXCEPTION(prop.defaultValue, tr("Invalid alias location"));
+ } else if (propIdx > 0xFFFF) {
+ COMPILE_EXCEPTION(prop.defaultValue, tr("Alias property exceeds alias bounds"));
+ }
QMetaProperty aliasProperty = idObject->metaObject()->property(propIdx);
if (!aliasProperty.isScriptable())
@@ -2587,6 +2593,22 @@ bool QDeclarativeCompiler::compileAlias(QMetaObjectBuilder &builder,
writable = aliasProperty.isWritable();
+ if (alias.count() == 3) {
+ QDeclarativeValueType *valueType = enginePrivate->valueTypes[aliasProperty.type()];
+ if (!valueType)
+ COMPILE_EXCEPTION(prop.defaultValue, tr("Invalid alias location"));
+
+ propIdx |= ((unsigned int)aliasProperty.type()) << 24;
+
+ int valueTypeIndex = valueType->metaObject()->indexOfProperty(alias.at(2).toUtf8().constData());
+ if (valueTypeIndex == -1)
+ COMPILE_EXCEPTION(prop.defaultValue, tr("Invalid alias location"));
+ Q_ASSERT(valueTypeIndex <= 0xFF);
+
+ aliasProperty = valueType->metaObject()->property(valueTypeIndex);
+ propIdx |= (valueTypeIndex << 16);
+ }
+
if (aliasProperty.isEnumType())
typeName = "int"; // Avoid introducing a dependency on the aliased metaobject
else
diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h
index 89eef095fa..43a0901ca4 100644
--- a/src/declarative/qml/qdeclarativecompiler_p.h
+++ b/src/declarative/qml/qdeclarativecompiler_p.h
@@ -93,10 +93,11 @@ public:
QByteArray className;
QDeclarativeType *type;
- QDeclarativeComponent *component;
+// 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 b532b0c41a..2686ce3d52 100644
--- a/src/declarative/qml/qdeclarativecomponent.cpp
+++ b/src/declarative/qml/qdeclarativecomponent.cpp
@@ -57,7 +57,6 @@
#include <QStack>
#include <QStringList>
-#include <QFileInfo>
#include <QtCore/qdebug.h>
#include <QApplication>
@@ -99,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}
*/
@@ -734,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;
@@ -795,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 e916273f10..def418842c 100644
--- a/src/declarative/qml/qdeclarativedata_p.h
+++ b/src/declarative/qml/qdeclarativedata_p.h
@@ -64,6 +64,7 @@ class QDeclarativeAbstractBinding;
class QDeclarativeContext;
class QDeclarativePropertyCache;
class QDeclarativeContextData;
+class QDeclarativeNotifier;
// 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.
@@ -75,20 +76,23 @@ public:
: ownMemory(true), ownContext(false), indestructible(true), explicitIndestructibleSet(false),
context(0), outerContext(0), bindings(0), nextContextObject(0), prevContextObject(0), bindingBitsSize(0),
bindingBits(0), lineNumber(0), columnNumber(0), deferredComponent(0), deferredIdx(0),
- attachedProperties(0), scriptValue(0), objectDataRefCount(0), propertyCache(0), guards(0) {
+ scriptValue(0), objectDataRefCount(0), propertyCache(0), guards(0), extendedData(0) {
init();
}
static inline void init() {
QAbstractDeclarativeData::destroyed = destroyed;
QAbstractDeclarativeData::parentChanged = parentChanged;
+ QAbstractDeclarativeData::objectNameChanged = objectNameChanged;
}
static void destroyed(QAbstractDeclarativeData *, QObject *);
static void parentChanged(QAbstractDeclarativeData *, QObject *, QObject *);
+ static void objectNameChanged(QAbstractDeclarativeData *, QObject *);
void destroyed(QObject *);
void parentChanged(QObject *, QObject *);
+ void objectNameChanged(QObject *);
void setImplicitDestructible() {
if (!explicitIndestructibleSet) indestructible = false;
@@ -123,8 +127,6 @@ public:
QDeclarativeCompiledData *deferredComponent; // Can't this be found from the context?
unsigned int deferredIdx;
- QHash<int, QObject *> *attachedProperties;
-
// ### Can we make this QScriptValuePrivate so we incur no additional allocation
// cost?
QScriptValue *scriptValue;
@@ -147,6 +149,18 @@ public:
return 0;
}
}
+
+ QDeclarativeNotifier *objectNameNotifier() const;
+ QHash<int, QObject *> *attachedProperties() const;
+
+ struct ExtendedData {
+ ExtendedData();
+ ~ExtendedData();
+
+ QHash<int, QObject *> attachedProperties;
+ void *objectNameNotifier;
+ };
+ mutable ExtendedData *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 9ca7858a69..cd113361b1 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -68,6 +68,7 @@
#include "private/qdeclarativelist_p.h"
#include "private/qdeclarativetypenamecache_p.h"
#include "private/qdeclarativeinclude_p.h"
+#include "private/qdeclarativenotifier_p.h"
#include <QtCore/qmetaobject.h>
#include <QScriptClass>
@@ -104,6 +105,7 @@
#ifdef Q_OS_WIN // for %APPDATA%
#include <qt_windows.h>
#include <qlibrary.h>
+#include <windows.h>
#define CSIDL_APPDATA 0x001a // <username>\Application Data
#endif
@@ -174,6 +176,7 @@ struct StaticQtMetaObject : public QObject
};
static bool qt_QmlQtModule_registered = false;
+bool QDeclarativeEnginePrivate::qml_debugging_enabled = false;
void QDeclarativeEnginePrivate::defineModule()
{
@@ -468,6 +471,11 @@ void QDeclarativeData::parentChanged(QAbstractDeclarativeData *d, QObject *o, QO
static_cast<QDeclarativeData *>(d)->parentChanged(o, p);
}
+void QDeclarativeData::objectNameChanged(QAbstractDeclarativeData *d, QObject *o)
+{
+ static_cast<QDeclarativeData *>(d)->objectNameChanged(o);
+}
+
void QDeclarativeEnginePrivate::init()
{
Q_Q(QDeclarativeEngine);
@@ -601,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)
{
@@ -871,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
@@ -949,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->attachedProperties?data->attachedProperties->value(id):0;
+ QObject *rv = data->extendedData?data->attachedProperties()->value(id):0;
if (rv || !create)
return rv;
@@ -959,11 +967,8 @@ QObject *qmlAttachedPropertiesObjectById(int id, const QObject *object, bool cre
rv = pf(const_cast<QObject *>(object));
- if (rv) {
- if (!data->attachedProperties)
- data->attachedProperties = new QHash<int, QObject *>();
- data->attachedProperties->insert(id, rv);
- }
+ if (rv)
+ data->attachedProperties()->insert(id, rv);
return rv;
}
@@ -984,8 +989,6 @@ void QDeclarativeData::destroyed(QObject *object)
{
if (deferredComponent)
deferredComponent->release();
- if (attachedProperties)
- delete attachedProperties;
if (nextContextObject)
nextContextObject->prevContextObject = prevContextObject;
@@ -1019,6 +1022,9 @@ void QDeclarativeData::destroyed(QObject *object)
if (scriptValue)
delete scriptValue;
+ if (extendedData)
+ delete extendedData;
+
if (ownMemory)
delete this;
}
@@ -1028,6 +1034,11 @@ void QDeclarativeData::parentChanged(QObject *, QObject *parent)
if (!parent && scriptValue) { delete scriptValue; scriptValue = 0; }
}
+void QDeclarativeData::objectNameChanged(QObject *)
+{
+ if (extendedData) objectNameNotifier()->notify();
+}
+
bool QDeclarativeData::hasBindingBit(int bit) const
{
if (bindingBitsSize > bit)
@@ -1064,6 +1075,28 @@ 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.
@@ -2159,4 +2192,42 @@ const QMetaObject *QDeclarativeEnginePrivate::metaObjectForType(int t) const
}
}
+bool QDeclarative_isFileCaseCorrect(const QString &fileName)
+{
+#if defined(Q_OS_MAC) || defined(Q_OS_WIN32)
+ QFileInfo info(fileName);
+
+ QString absolute = info.absoluteFilePath();
+
+#if defined(Q_OS_MAC)
+ QString canonical = info.canonicalFilePath();
+#elif defined(Q_OS_WIN32)
+ wchar_t buffer[1024];
+
+ DWORD rv = ::GetShortPathName((wchar_t*)absolute.utf16(), buffer, 1024);
+ if (rv == 0 || rv >= 1024) return true;
+ rv = ::GetLongPathName(buffer, buffer, 1024);
+ if (rv == 0 || rv >= 1024) return true;
+
+ QString canonical((QChar *)buffer);
+#endif
+
+ int absoluteLength = absolute.length();
+ int canonicalLength = canonical.length();
+
+ int length = qMin(absoluteLength, canonicalLength);
+ for (int ii = 0; ii < length; ++ii) {
+ const QChar &a = absolute.at(absoluteLength - 1 - ii);
+ const QChar &c = canonical.at(canonicalLength - 1 - ii);
+
+ if (a.toLower() != c.toLower())
+ return true;
+ if (a != c)
+ return false;
+ }
+#endif
+
+ return true;
+}
+
QT_END_NAMESPACE
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/qdeclarativefastproperties.cpp b/src/declarative/qml/qdeclarativefastproperties.cpp
index eb69b6aede..78e3afd1b9 100644
--- a/src/declarative/qml/qdeclarativefastproperties.cpp
+++ b/src/declarative/qml/qdeclarativefastproperties.cpp
@@ -51,10 +51,19 @@ QT_BEGIN_NAMESPACE
// primarily read from bindings is a candidate for inclusion as a fast
// property.
+static void QObject_objectName(QObject *object, void *output, QDeclarativeNotifierEndpoint *endpoint)
+{
+ if (endpoint)
+ endpoint->connect(QDeclarativeData::get(object, true)->objectNameNotifier());
+ *((QString *)output) = object->objectName();
+}
+
QDeclarativeFastProperties::QDeclarativeFastProperties()
{
add(&QDeclarativeItem::staticMetaObject, QDeclarativeItem::staticMetaObject.indexOfProperty("parent"),
QDeclarativeItemPrivate::parentProperty);
+ add(&QObject::staticMetaObject, QObject::staticMetaObject.indexOfProperty("objectName"),
+ QObject_objectName);
}
int QDeclarativeFastProperties::accessorIndexForProperty(const QMetaObject *metaObject, int propertyIndex)
diff --git a/src/declarative/qml/qdeclarativeglobal_p.h b/src/declarative/qml/qdeclarativeglobal_p.h
index 104199227f..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) {
@@ -75,6 +81,19 @@ struct QDeclarativeGraphics_DerivedObject : public QObject
};
/*!
+ Returns true if the case of \a fileName is equivalent to the file case of
+ \a fileName on disk, and false otherwise.
+
+ This is used to ensure that the behavior of QML on a case-insensitive file
+ system is the same as on a case-sensitive file system. This function
+ performs a "best effort" attempt to determine the real case of the file.
+ It may have false positives (say the case is correct when it isn't), but it
+ should never have a false negative (say the case is incorrect when it is
+ correct).
+*/
+bool QDeclarative_isFileCaseCorrect(const QString &fileName);
+
+/*!
Makes the \a object a child of \a parent. Note that when using this method,
neither \a parent nor the object's previous parent (if it had one) will
receive ChildRemoved or ChildAdded events.
diff --git a/src/declarative/qml/qdeclarativeimport.cpp b/src/declarative/qml/qdeclarativeimport.cpp
index fe4ed489d4..6f5216ab33 100644
--- a/src/declarative/qml/qdeclarativeimport.cpp
+++ b/src/declarative/qml/qdeclarativeimport.cpp
@@ -351,7 +351,11 @@ bool QDeclarativeImportsPrivate::importExtension(const QString &absoluteFilePath
{
QFile file(absoluteFilePath);
QString filecontent;
- if (file.open(QFile::ReadOnly)) {
+ if (!QDeclarative_isFileCaseCorrect(absoluteFilePath)) {
+ if (errorString)
+ *errorString = QDeclarativeImportDatabase::tr("cannot load module \"%1\": File name case mismatch for \"%2\"").arg(uri).arg(absoluteFilePath);
+ return false;
+ } else if (file.open(QFile::ReadOnly)) {
filecontent = QString::fromUtf8(file.readAll());
if (qmlImportTrace())
qDebug().nospace() << "QDeclarativeImports(" << qPrintable(base.toString()) << "::importExtension: "
@@ -913,6 +917,11 @@ bool QDeclarativeImportDatabase::importPlugin(const QString &filePath, const QSt
}
if (!engineInitialized || !typesRegistered) {
+ if (!QDeclarative_isFileCaseCorrect(absoluteFilePath)) {
+ if (errorString)
+ *errorString = tr("File name case mismatch for \"%2\"").arg(absoluteFilePath);
+ return false;
+ }
QPluginLoader loader(absoluteFilePath);
if (!loader.load()) {
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 ab6ff74b95..eff59df2ef 100644
--- a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
+++ b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
@@ -239,8 +239,13 @@ QDeclarativeObjectScriptClass::property(QObject *obj, const Identifier &name)
}
} else {
if (enginePriv->captureProperties && !(lastData->flags & QDeclarativePropertyCache::Data::IsConstant)) {
- enginePriv->capturedProperties <<
- QDeclarativeEnginePrivate::CapturedProperty(obj, lastData->coreIndex, lastData->notifyIndex);
+ if (lastData->coreIndex == 0) {
+ enginePriv->capturedProperties <<
+ QDeclarativeEnginePrivate::CapturedProperty(QDeclarativeData::get(obj, true)->objectNameNotifier());
+ } else {
+ enginePriv->capturedProperties <<
+ QDeclarativeEnginePrivate::CapturedProperty(obj, lastData->coreIndex, lastData->notifyIndex);
+ }
}
if (QDeclarativeValueTypeFactory::isValueType((uint)lastData->propType)) {
@@ -416,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(", \"");
@@ -833,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);
+}
+
+QDeclarativeObjectMethodScriptClass::Value
+QDeclarativeObjectMethodScriptClass::callPrecise(QObject *object, const QDeclarativePropertyCache::Data &data,
+ QScriptContext *ctxt)
+{
+ if (data.flags & QDeclarativePropertyCache::Data::HasArguments) {
- QMetaMethod m = method->object->metaObject()->method(method->data.coreIndex);
+ QMetaMethod m = object->metaObject()->method(data.coreIndex);
QList<QByteArray> argTypeNames = m.parameterTypes();
QVarLengthArray<int, 9> argTypes(argTypeNames.count());
@@ -843,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)))));
}
@@ -851,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);
- for (int ii = 0; ii < argTypes.count(); ++ii)
+ } 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) {
+
+ 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..0adcdbda44 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,74 @@ 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);
+ QDeclarativeEnginePrivate *enginePriv = QDeclarativeEnginePrivate::get(engine);
- 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 061f309476..c015519cb4 100644
--- a/src/declarative/qml/qdeclarativetypeloader.cpp
+++ b/src/declarative/qml/qdeclarativetypeloader.cpp
@@ -44,6 +44,7 @@
#include <private/qdeclarativeengine_p.h>
#include <private/qdeclarativecompiler_p.h>
#include <private/qdeclarativecomponent_p.h>
+#include <private/qdeclarativeglobal_p.h>
#include <QtDeclarative/qdeclarativecomponent.h>
#include <QtCore/qdebug.h>
@@ -493,6 +494,13 @@ void QDeclarativeDataLoader::load(QDeclarativeDataBlob *blob)
QString lf = QDeclarativeEnginePrivate::urlToLocalFileOrQrc(blob->m_url);
if (!lf.isEmpty()) {
+ if (!QDeclarative_isFileCaseCorrect(lf)) {
+ QDeclarativeError error;
+ error.setUrl(blob->m_url);
+ error.setDescription(QLatin1String("File name case mismatch"));
+ blob->setError(error);
+ return;
+ }
QFile file(lf);
if (file.open(QFile::ReadOnly)) {
QByteArray data = file.readAll();
@@ -711,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)
{
}
@@ -760,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/qdeclarativevmemetaobject.cpp b/src/declarative/qml/qdeclarativevmemetaobject.cpp
index 37f08fca9d..e28062b9d9 100644
--- a/src/declarative/qml/qdeclarativevmemetaobject.cpp
+++ b/src/declarative/qml/qdeclarativevmemetaobject.cpp
@@ -459,7 +459,7 @@ int QDeclarativeVMEMetaObject::metaCall(QMetaObject::Call c, int _id, void **a)
id -= propOffset;
if (id < metaData->propertyCount) {
- int t = (metaData->propertyData() + id)->propertyType;
+ int t = (metaData->propertyData() + id)->propertyType;
bool needActivate = false;
if (t == -1) {
@@ -586,11 +586,26 @@ int QDeclarativeVMEMetaObject::metaCall(QMetaObject::Call c, int _id, void **a)
connectAlias(id);
- if (d->propertyIdx == -1) {
+ if (d->isObjectAlias()) {
*reinterpret_cast<QObject **>(a[0]) = target;
return -1;
+ } else if (d->isValueTypeAlias()) {
+ // Value type property
+ QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(ctxt->engine);
+
+ QDeclarativeValueType *valueType = ep->valueTypes[d->valueType()];
+ Q_ASSERT(valueType);
+
+ valueType->read(target, d->propertyIndex());
+ int rv = QMetaObject::metacall(valueType, c, d->valueTypeIndex(), a);
+
+ if (c == QMetaObject::WriteProperty)
+ valueType->write(target, d->propertyIndex(), 0x00);
+
+ return rv;
+
} else {
- return QMetaObject::metacall(target, c, d->propertyIdx, a);
+ return QMetaObject::metacall(target, c, d->propertyIndex(), a);
}
}
@@ -823,8 +838,8 @@ void QDeclarativeVMEMetaObject::connectAlias(int aliasId)
int sigIdx = methodOffset + aliasId + metaData->propertyCount;
QMetaObject::connect(context, d->contextIdx + ctxtPriv->notifyIndex, object, sigIdx);
- if (d->propertyIdx != -1) {
- QMetaProperty prop = target->metaObject()->property(d->propertyIdx);
+ if (!d->isObjectAlias()) {
+ QMetaProperty prop = target->metaObject()->property(d->propertyIndex());
if (prop.hasNotifySignal())
QDeclarativePropertyPrivate::connect(target, prop.notifySignalIndex(), object, sigIdx);
}
diff --git a/src/declarative/qml/qdeclarativevmemetaobject_p.h b/src/declarative/qml/qdeclarativevmemetaobject_p.h
index 4ccaa734ee..5134763de1 100644
--- a/src/declarative/qml/qdeclarativevmemetaobject_p.h
+++ b/src/declarative/qml/qdeclarativevmemetaobject_p.h
@@ -84,6 +84,25 @@ struct QDeclarativeVMEMetaData
int contextIdx;
int propertyIdx;
int flags;
+
+ bool isObjectAlias() const {
+ return propertyIdx == -1;
+ }
+ bool isPropertyAlias() const {
+ return !isObjectAlias() && !(propertyIdx & 0xFF000000);
+ }
+ bool isValueTypeAlias() const {
+ return !isObjectAlias() && (propertyIdx & 0xFF000000);
+ }
+ int propertyIndex() const {
+ return propertyIdx & 0x0000FFFF;
+ }
+ int valueTypeIndex() const {
+ return (propertyIdx & 0x00FF0000) >> 16;
+ }
+ int valueType() const {
+ return ((unsigned int)propertyIdx) >> 24;
+ }
};
struct PropertyData {
diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp
index 509ca6bb5f..ae7a80d139 100644
--- a/src/declarative/qml/qdeclarativeworkerscript.cpp
+++ b/src/declarative/qml/qdeclarativeworkerscript.cpp
@@ -514,7 +514,7 @@ void QDeclarativeWorkerScriptEngine::run()
/*!
\qmlclass WorkerScript QDeclarativeWorkerScript
- \ingroup qml-utility-elements
+ \ingroup qml-utility-elements
\brief The WorkerScript element enables the use of threads in QML.
Use WorkerScript to run operations in a new thread.
@@ -528,7 +528,7 @@ void QDeclarativeWorkerScriptEngine::run()
\snippet doc/src/snippets/declarative/workerscript.qml 0
- The above worker script specifies a javascript file, "script.js", that handles
+ The above worker script specifies a JavaScript file, "script.js", that handles
the operations to be performed in the new thread. Here is \c script.js:
\qml
@@ -543,6 +543,19 @@ void QDeclarativeWorkerScriptEngine::run()
\tt script.js. This in turn sends a reply message that is then received
by the \tt onMessage() handler of \tt myWorker.
+
+ \section3 Restrictions
+
+ Since the \c WorkerScript.onMessage() function is run in a separate thread, the
+ JavaScript file is evaluated in a context separate from the main QML engine. This means
+ that unlike an ordinary JavaScript file that is imported into QML, the \c script.js
+ in the above example cannot access the properties, methods or other attributes
+ of the QML item, nor can it access any context properties set on the QML object
+ through QDeclarativeContext.
+
+ Additionally, there are restrictions on the types of values that can be passed to and
+ from the worker script. See the sendMessage() documentation for details.
+
\sa {declarative/threading/workerscript}{WorkerScript example},
{declarative/threading/threadedlistmodel}{Threaded ListModel example}
*/
@@ -586,6 +599,19 @@ void QDeclarativeWorkerScript::setSource(const QUrl &source)
Sends the given \a message to a worker script handler in another
thread. The other worker script handler can receive this message
through the onMessage() handler.
+
+ The \c message object may only contain values of the following
+ types:
+
+ \list
+ \o boolean, number, string
+ \o JavaScript objects and arrays
+ \o ListModel objects (any other type of QObject* is not allowed)
+ \endlist
+
+ All objects and arrays are copied to the \c message. With the exception
+ of ListModel objects, any modifications by the other thread to an object
+ passed in \c message will not be reflected in the original object.
*/
void QDeclarativeWorkerScript::sendMessage(const QScriptValue &message)
{
diff --git a/src/declarative/qml/qmetaobjectbuilder.cpp b/src/declarative/qml/qmetaobjectbuilder.cpp
index 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 26c04d4317..b8c2c6defe 100644
--- a/src/declarative/util/qdeclarativeanimation_p_p.h
+++ b/src/declarative/util/qdeclarativeanimation_p_p.h
@@ -327,7 +327,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 3e4a81a0c8..03a0561fbf 100644
--- a/src/declarative/util/qdeclarativefontloader.cpp
+++ b/src/declarative/util/qdeclarativefontloader.cpp
@@ -49,7 +49,6 @@
#include <QDebug>
#include <QNetworkRequest>
#include <QNetworkReply>
-#include <QFile>
#include <QFontDatabase>
#include <private/qobject_p.h>
@@ -221,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);
@@ -298,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/qdeclarativelistmodelworkeragent.cpp b/src/declarative/util/qdeclarativelistmodelworkeragent.cpp
index 6804d4af6e..852b0557d9 100644
--- a/src/declarative/util/qdeclarativelistmodelworkeragent.cpp
+++ b/src/declarative/util/qdeclarativelistmodelworkeragent.cpp
@@ -208,7 +208,7 @@ bool QDeclarativeListModelWorkerAgent::event(QEvent *e)
const QList<Change> &changes = s->data.changes;
if (m_copy) {
- bool cc = m_copy->count() != s->list->count();
+ bool cc = m_orig->count() != s->list->count();
FlatListModel *orig = m_orig->m_flat;
FlatListModel *copy = s->list->m_flat;
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..a07b1bb1cc 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), loading(false), redirectCount(0), requestSize(d->requestSize)
{
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 163f6261d2..c4d8dde8f2 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
{
@@ -696,7 +697,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/accessible.pri b/src/gui/accessible/accessible.pri
index ad2fb4c828..31362ffded 100644
--- a/src/gui/accessible/accessible.pri
+++ b/src/gui/accessible/accessible.pri
@@ -12,7 +12,7 @@ contains(QT_CONFIG, accessibility) {
accessible/qaccessiblewidget.cpp \
accessible/qaccessibleplugin.cpp
- mac:!embedded {
+ mac:!embedded:!qpa {
HEADERS += accessible/qaccessible_mac_p.h
OBJECTIVE_SOURCES += accessible/qaccessible_mac.mm \
accessible/qaccessible_mac_cocoa.mm
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..cd8e71a8a0 100644
--- a/src/gui/dialogs/dialogs.pri
+++ b/src/gui/dialogs/dialogs.pri
@@ -27,7 +27,7 @@ HEADERS += \
dialogs/qwizard.h \
dialogs/qprintpreviewdialog.h
-!embedded:mac {
+!embedded:!qpa:mac {
OBJECTIVE_SOURCES += dialogs/qfiledialog_mac.mm \
dialogs/qfontdialog_mac.mm \
dialogs/qnspanelproxy_mac.mm \
@@ -61,7 +61,7 @@ win32 {
!win32-borland:!wince*: LIBS += -lshell32 # the filedialog needs this library
}
-!mac:!embedded:!symbian:unix {
+!mac:!embedded:!symbian:unix|qpa {
HEADERS += dialogs/qpagesetupdialog_unix_p.h
SOURCES += dialogs/qprintdialog_unix.cpp \
dialogs/qpagesetupdialog_unix.cpp
diff --git a/src/gui/dialogs/qdialog.cpp b/src/gui/dialogs/qdialog.cpp
index 5a791fc0f0..6970b76710 100644
--- a/src/gui/dialogs/qdialog.cpp
+++ b/src/gui/dialogs/qdialog.cpp
@@ -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 624610bfb5..1b9d127063 100644
--- a/src/gui/dialogs/qfiledialog.cpp
+++ b/src/gui/dialogs/qfiledialog.cpp
@@ -3261,7 +3261,10 @@ QString QFSCompleter::pathFromIndex(const QModelIndex &index) const
if (currentLocation == QDir::separator())
return path.mid(currentLocation.length());
#endif
- return path.mid(currentLocation.length() + 1);
+ if (currentLocation.endsWith('/'))
+ return path.mid(currentLocation.length());
+ else
+ return path.mid(currentLocation.length()+1);
}
return index.data(QFileSystemModel::FilePathRole).toString();
}
diff --git a/src/gui/dialogs/qfiledialog_mac.mm b/src/gui/dialogs/qfiledialog_mac.mm
index 87850a75e4..6c1d7f6312 100644
--- a/src/gui/dialogs/qfiledialog_mac.mm
+++ b/src/gui/dialogs/qfiledialog_mac.mm
@@ -63,6 +63,7 @@
#include <qdesktopwidget.h>
#include <stdlib.h>
#include <qabstracteventdispatcher.h>
+#import <AppKit/NSSavePanel.h>
#include "ui_qfiledialog.h"
QT_BEGIN_NAMESPACE
@@ -84,7 +85,13 @@ QT_USE_NAMESPACE
@class QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate);
-@interface QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) : NSObject {
+@interface QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate)
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
+ : NSObject<NSOpenSavePanelDelegate>
+#else
+ : NSObject
+#endif
+{
@public
NSOpenPanel *mOpenPanel;
NSSavePanel *mSavePanel;
diff --git a/src/gui/dialogs/qfiledialog_win.cpp b/src/gui/dialogs/qfiledialog_win.cpp
index 5b192b4e34..feec804b4b 100644
--- a/src/gui/dialogs/qfiledialog_win.cpp
+++ b/src/gui/dialogs/qfiledialog_win.cpp
@@ -60,7 +60,6 @@
#endif
#ifdef Q_WS_WINCE
-#include <shlobj.h>
#include <commdlg.h>
bool qt_priv_ptr_valid = false;
#else
@@ -603,7 +602,7 @@ QString qt_win_CID_get_existing_directory(const QFileDialogArgs &args)
// Set the FOS_PICKFOLDERS flag
DWORD newOptions;
hr = pfd->GetOptions(&newOptions);
- newOptions |= FOS_PICKFOLDERS;
+ newOptions |= (FOS_PICKFOLDERS | FOS_FORCEFILESYSTEM);
if (SUCCEEDED(hr) && SUCCEEDED((hr = pfd->SetOptions(newOptions)))) {
QWidget *parentWindow = args.parent;
if (parentWindow)
diff --git a/src/gui/dialogs/qfileinfogatherer_p.h b/src/gui/dialogs/qfileinfogatherer_p.h
index 8681eb5b96..b28509b7c6 100644
--- a/src/gui/dialogs/qfileinfogatherer_p.h
+++ b/src/gui/dialogs/qfileinfogatherer_p.h
@@ -84,10 +84,13 @@ public:
&& permissions() == fileInfo.permissions();
}
+#ifndef QT_NO_FSFILEENGINE
bool isCaseSensitive() const {
QFSFileEngine fe(mFileInfo.absoluteFilePath());
return fe.caseSensitive();
}
+#endif
+
QFile::Permissions permissions() const {
return mFileInfo.permissions();
}
diff --git a/src/gui/dialogs/qfilesystemmodel.cpp b/src/gui/dialogs/qfilesystemmodel.cpp
index be4261d284..6552370d0f 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/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm
index 9c63dfab1c..6fb363bcae 100644
--- a/src/gui/dialogs/qfontdialog_mac.mm
+++ b/src/gui/dialogs/qfontdialog_mac.mm
@@ -496,7 +496,7 @@ void QFontDialogPrivate::setFont(void *delegate, const QFont &font)
QMacCocoaAutoReleasePool pool;
QFontEngine *fe = font.d->engineForScript(QUnicodeTables::Common);
NSFontManager *mgr = [NSFontManager sharedFontManager];
- NSFont *nsFont = 0;
+ const NSFont *nsFont = 0;
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
if (qstrcmp(fe->name(), "CoreText") == 0) {
@@ -522,7 +522,7 @@ void QFontDialogPrivate::setFont(void *delegate, const QFont &font)
size:fontInfo.pointSize()];
}
- [mgr setSelectedFont:nsFont isMultiple:NO];
+ [mgr setSelectedFont:const_cast<NSFont *>(nsFont) isMultiple:NO];
[static_cast<QT_MANGLE_NAMESPACE(QCocoaFontPanelDelegate) *>(delegate) setQtFont:font];
}
diff --git a/src/gui/dialogs/qinputdialog.cpp b/src/gui/dialogs/qinputdialog.cpp
index e996ee9be4..9e4b9b6635 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);
@@ -244,6 +247,9 @@ void QInputDialogPrivate::ensureLineEdit()
Q_Q(QInputDialog);
if (!lineEdit) {
lineEdit = new QLineEdit(q);
+#ifndef QT_NO_IM
+ qt_widget_private(lineEdit)->inheritsInputMethodHints = 1;
+#endif
lineEdit->hide();
QObject::connect(lineEdit, SIGNAL(textChanged(QString)),
q, SLOT(_q_textChanged(QString)));
@@ -255,6 +261,9 @@ void QInputDialogPrivate::ensureComboBox()
Q_Q(QInputDialog);
if (!comboBox) {
comboBox = new QComboBox(q);
+#ifndef QT_NO_IM
+ qt_widget_private(comboBox)->inheritsInputMethodHints = 1;
+#endif
comboBox->hide();
QObject::connect(comboBox, SIGNAL(editTextChanged(QString)),
q, SLOT(_q_textChanged(QString)));
@@ -552,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
@@ -1122,6 +1134,8 @@ void QInputDialog::done(int result)
be entered).
\a text is the default text which is placed in the line edit.
\a mode is the echo mode the line edit will use.
+ \a inputMethodHints is the input method hints that will be used in the
+ edit widget if an input method is active.
If \a ok is nonnull \e *\a ok will be set to true if the user pressed
\gui OK and to false if the user pressed \gui Cancel. The dialog's parent
@@ -1144,13 +1158,14 @@ void QInputDialog::done(int result)
QString QInputDialog::getText(QWidget *parent, const QString &title, const QString &label,
QLineEdit::EchoMode mode, const QString &text, bool *ok,
- Qt::WindowFlags flags)
+ Qt::WindowFlags flags, Qt::InputMethodHints inputMethodHints)
{
QInputDialog dialog(parent, flags);
dialog.setWindowTitle(title);
dialog.setLabelText(label);
dialog.setTextValue(text);
dialog.setTextEchoMode(mode);
+ dialog.setInputMethodHints(inputMethodHints);
int ret = dialog.exec();
if (ok)
@@ -1163,6 +1178,17 @@ QString QInputDialog::getText(QWidget *parent, const QString &title, const QStri
}
/*!
+ \internal
+*/
+// ### Qt 5: Use only the version above.
+QString QInputDialog::getText(QWidget *parent, const QString &title, const QString &label,
+ QLineEdit::EchoMode mode, const QString &text, bool *ok,
+ Qt::WindowFlags flags)
+{
+ return getText(parent, title, label, mode, text, ok, flags, Qt::ImhNone);
+}
+
+/*!
\since 4.5
Static convenience function to get an integer input from the user.
@@ -1272,6 +1298,8 @@ double QInputDialog::getDouble(QWidget *parent, const QString &title, const QStr
be entered).
\a items is the string list which is inserted into the combobox.
\a current is the number of the item which should be the current item.
+ \a inputMethodHints is the input method hints that will be used if the
+ combobox is editable and an input method is active.
If \a editable is true the user can enter their own text; otherwise the
user may only select one of the existing items.
@@ -1296,7 +1324,7 @@ double QInputDialog::getDouble(QWidget *parent, const QString &title, const QStr
QString QInputDialog::getItem(QWidget *parent, const QString &title, const QString &label,
const QStringList &items, int current, bool editable, bool *ok,
- Qt::WindowFlags flags)
+ Qt::WindowFlags flags, Qt::InputMethodHints inputMethodHints)
{
QString text(items.value(current));
@@ -1306,6 +1334,7 @@ QString QInputDialog::getItem(QWidget *parent, const QString &title, const QStri
dialog.setComboBoxItems(items);
dialog.setTextValue(text);
dialog.setComboBoxEditable(editable);
+ dialog.setInputMethodHints(inputMethodHints);
int ret = dialog.exec();
if (ok)
@@ -1318,6 +1347,17 @@ QString QInputDialog::getItem(QWidget *parent, const QString &title, const QStri
}
/*!
+ \internal
+*/
+// ### Qt 5: Use only the version above.
+QString QInputDialog::getItem(QWidget *parent, const QString &title, const QString &label,
+ const QStringList &items, int current, bool editable, bool *ok,
+ Qt::WindowFlags flags)
+{
+ return getItem(parent, title, label, items, current, editable, ok, flags, Qt::ImhNone);
+}
+
+/*!
\obsolete
Use getInt() instead.
diff --git a/src/gui/dialogs/qinputdialog.h b/src/gui/dialogs/qinputdialog.h
index 02868c13e7..25e27b055c 100644
--- a/src/gui/dialogs/qinputdialog.h
+++ b/src/gui/dialogs/qinputdialog.h
@@ -167,18 +167,37 @@ public:
void setVisible(bool visible);
+#ifdef Q_QDOC
+ static QString getText(QWidget *parent, const QString &title, const QString &label,
+ QLineEdit::EchoMode echo = QLineEdit::Normal,
+ const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = 0,
+ Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
+ static QString getItem(QWidget *parent, const QString &title, const QString &label,
+ const QStringList &items, int current = 0, bool editable = true,
+ bool *ok = 0, Qt::WindowFlags flags = 0,
+ Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
+#else
static QString getText(QWidget *parent, const QString &title, const QString &label,
QLineEdit::EchoMode echo = QLineEdit::Normal,
const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = 0);
+ static QString getItem(QWidget *parent, const QString &title, const QString &label,
+ const QStringList &items, int current = 0, bool editable = true,
+ bool *ok = 0, Qt::WindowFlags flags = 0);
+ static QString getText(QWidget *parent, const QString &title, const QString &label,
+ QLineEdit::EchoMode echo,
+ const QString &text, bool *ok, Qt::WindowFlags flags,
+ Qt::InputMethodHints inputMethodHints);
+ static QString getItem(QWidget *parent, const QString &title, const QString &label,
+ const QStringList &items, int current, bool editable,
+ bool *ok, Qt::WindowFlags flags,
+ Qt::InputMethodHints inputMethodHints);
+#endif
static int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0,
int minValue = -2147483647, int maxValue = 2147483647,
int step = 1, bool *ok = 0, Qt::WindowFlags flags = 0);
static double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0,
double minValue = -2147483647, double maxValue = 2147483647,
int decimals = 1, bool *ok = 0, Qt::WindowFlags flags = 0);
- static QString getItem(QWidget *parent, const QString &title, const QString &label,
- const QStringList &items, int current = 0, bool editable = true,
- bool *ok = 0, Qt::WindowFlags flags = 0);
// obsolete
static int getInteger(QWidget *parent, const QString &title, const QString &label, int value = 0,
diff --git a/src/gui/dialogs/qprintdialog.qdoc b/src/gui/dialogs/qprintdialog.qdoc
index bd406c183b..b75fe2e55f 100644
--- a/src/gui/dialogs/qprintdialog.qdoc
+++ b/src/gui/dialogs/qprintdialog.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/src/gui/egl/egl.pri b/src/gui/egl/egl.pri
index c6c020d307..8e8664c679 100644
--- a/src/gui/egl/egl.pri
+++ b/src/gui/egl/egl.pri
@@ -6,9 +6,21 @@ contains(QT_CONFIG, egl): {
egl/qeglcontext_p.h \
egl/qeglproperties_p.h
- SOURCES += \
- egl/qegl.cpp \
- egl/qeglproperties.cpp
+ SOURCES += \
+ egl/qegl.cpp \
+ egl/qeglproperties.cpp
+ unix {
+ !isEmpty(QMAKE_INCDIR_EGL){
+ INCLUDEPATH += $$QMAKE_INCDIR_EGL
+ }
+ !isEmpty(QMAKE_LIBDIR_EGL){
+ for(p, QMAKE_LIBDIR_EGL) {
+ exists($$p):LIBS += -L$$p
+ }
+ }
+
+ !isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL
+ }
wince*: SOURCES += egl/qegl_wince.cpp
@@ -16,10 +28,14 @@ contains(QT_CONFIG, egl): {
embedded {
SOURCES += egl/qegl_qws.cpp
} else {
- symbian {
- SOURCES += egl/qegl_symbian.cpp
+ qpa {
+ SOURCES += egl/qegl_qpa.cpp
} else {
- SOURCES += egl/qegl_x11.cpp
+ symbian {
+ SOURCES += egl/qegl_symbian.cpp
+ } else {
+ SOURCES += egl/qegl_x11.cpp
+ }
}
}
}
diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp
index af3b79a87c..66cb843e58 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
}
@@ -394,7 +394,7 @@ bool QEglContext::createContext(QEglContext *shareContext, const QEglProperties
}
}
if (ctx == EGL_NO_CONTEXT) {
- ctx = eglCreateContext(display(), cfg, 0, contextProps.properties());
+ ctx = eglCreateContext(display(), cfg, EGL_NO_CONTEXT, contextProps.properties());
if (ctx == EGL_NO_CONTEXT) {
qWarning() << "QEglContext::createContext(): Unable to create EGL context:" << QEgl::errorString();
return false;
diff --git a/src/gui/egl/qegl_qpa.cpp b/src/gui/egl/qegl_qpa.cpp
new file mode 100644
index 0000000000..10caf46d56
--- /dev/null
+++ b/src/gui/egl/qegl_qpa.cpp
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <QtGui/qpaintdevice.h>
+#include <QtGui/qpixmap.h>
+#include <QtGui/qwidget.h>
+#include "qeglcontext_p.h"
+
+#if !defined(QT_NO_EGL)
+
+#include <QtGui/private/qgraphicssystem_p.h>
+#include <QtGui/private/qapplication_p.h>
+#include <QtGui/qdesktopwidget.h>
+
+QT_BEGIN_NAMESPACE
+
+EGLNativeDisplayType QEgl::nativeDisplay()
+{
+ return EGLNativeDisplayType(EGL_DEFAULT_DISPLAY);
+}
+
+EGLNativeWindowType QEgl::nativeWindow(QWidget* widget)
+{
+ return (EGLNativeWindowType)(widget->winId());
+}
+
+EGLNativePixmapType QEgl::nativePixmap(QPixmap* pixmap)
+{
+ Q_UNUSED(pixmap);
+ return 0;
+}
+
+//EGLDisplay QEglContext::display()
+//{
+// return eglGetDisplay(EGLNativeDisplayType(EGL_DEFAULT_DISPLAY));
+//}
+
+static QPlatformScreen *screenForDevice(QPaintDevice *device)
+{
+ QPlatformIntegration *pi = QApplicationPrivate::platformIntegration();
+
+ QList<QPlatformScreen *> screens = pi->screens();
+
+ int screenNumber;
+ if (device && device->devType() == QInternal::Widget)
+ screenNumber = qApp->desktop()->screenNumber(static_cast<QWidget *>(device));
+ else
+ screenNumber = 0;
+ if (screenNumber < 0 || screenNumber >= screens.size())
+ return 0;
+ return screens[screenNumber];
+}
+
+// Set pixel format and other properties based on a paint device.
+void QEglProperties::setPaintDeviceFormat(QPaintDevice *dev)
+{
+ if (!dev)
+ return;
+
+ // Find the QGLScreen for this paint device.
+ QPlatformScreen *screen = screenForDevice(dev);
+ if (!screen)
+ return;
+ int devType = dev->devType();
+ if (devType == QInternal::Image)
+ setPixelFormat(static_cast<QImage *>(dev)->format());
+ else
+ setPixelFormat(screen->format());
+}
+
+QT_END_NAMESPACE
+
+#endif // !QT_NO_EGL
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/qkbd_defaultmap_qws_p.h b/src/gui/embedded/qkbd_defaultmap_qws_p.h
index 16c3459af4..703dfcdde8 100644
--- a/src/gui/embedded/qkbd_defaultmap_qws_p.h
+++ b/src/gui/embedded/qkbd_defaultmap_qws_p.h
@@ -642,7 +642,14 @@ const QWSKeyboard::Mapping QWSKbPrivate::s_keymap_default[] = {
{ 111, 0xffff, 0x01000007, 0x00, 0x00, 0x0000 },
{ 111, 0xffff, 0x01000000, 0x06, 0x08, 0x0200 },
{ 111, 0xffff, 0x01000000, 0x0c, 0x08, 0x0200 },
+ { 113, 0xffff, 0x01000071, 0x00, 0x00, 0x0000 },
+ { 114, 0xffff, 0x01000070, 0x00, 0x00, 0x0000 },
+ { 115, 0xffff, 0x01000072, 0x00, 0x00, 0x0000 },
+ { 116, 0xffff, 0x0100010b, 0x00, 0x00, 0x0000 },
{ 119, 0xffff, 0x01000008, 0x00, 0x00, 0x0000 },
+ { 138, 0xffff, 0x01000058, 0x00, 0x00, 0x0000 },
+ { 139, 0xffff, 0x01000055, 0x00, 0x00, 0x0000 },
+
};
const QWSKeyboard::Composing QWSKbPrivate::s_keycompose_default[] = {
diff --git a/src/gui/embedded/qkbd_qws.cpp b/src/gui/embedded/qkbd_qws.cpp
index b28e293e81..1999ddbf05 100644
--- a/src/gui/embedded/qkbd_qws.cpp
+++ b/src/gui/embedded/qkbd_qws.cpp
@@ -48,8 +48,16 @@
#include <QDataStream>
#include <QStringList>
+#ifdef Q_WS_QWS
#include "qwindowsystem_qws.h"
#include "qscreen_qws.h"
+#endif
+
+#ifdef Q_WS_QPA
+#include <QWindowSystemInterface>
+#include <QKeyEvent>
+#endif
+
#include "qtimer.h"
#include <stdlib.h>
@@ -352,7 +360,15 @@ QWSKeyboardHandler::~QWSKeyboardHandler()
void QWSKeyboardHandler::processKeyEvent(int unicode, int keycode, Qt::KeyboardModifiers modifiers,
bool isPress, bool autoRepeat)
{
+#if defined(Q_WS_QWS)
qwsServer->processKeyEvent(unicode, keycode, modifiers, isPress, autoRepeat);
+#elif defined(Q_WS_QPA)
+ QEvent::Type type = isPress ? QEvent::KeyPress : QEvent::KeyRelease;
+ QString str;
+ if (unicode != 0xffff)
+ str = QString(unicode);
+ QWindowSystemInterface::handleKeyEvent(0, type, keycode, modifiers, str);
+#endif
}
/*!
@@ -375,6 +391,7 @@ void QWSKeyboardHandler::processKeyEvent(int unicode, int keycode, Qt::KeyboardM
*/
int QWSKeyboardHandler::transformDirKey(int key)
{
+#ifdef Q_WS_QWS
static int dir_keyrot = -1;
if (dir_keyrot < 0) {
// get the rotation
@@ -387,6 +404,9 @@ int QWSKeyboardHandler::transformDirKey(int key)
}
int xf = qt_screen->transformOrientation() + dir_keyrot;
return (key-Qt::Key_Left+xf)%4+Qt::Key_Left;
+#else
+ return 0;
+#endif
}
/*!
@@ -450,9 +470,11 @@ void QWSKeyboardHandler::endAutoRepeat()
/*!
\fn QWSKeyboardHandler::KeycodeAction QWSKeyboardHandler::processKeycode(quint16 keycode, bool isPress, bool autoRepeat)
+ \since 4.6
+
Maps \a keycode according to a keymap and sends that key event to the
\l{Qt for Embedded Linux} server application.
-
+
Please see the \l{Qt for Embedded Linux Character Input} and the \l
{kmap2qmap} documentations for a description on how to create and use
keymap files.
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/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 83aafe9fbe..e9a2f9f09d 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -2365,7 +2365,7 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo
while (fsi->d_ptr->focusScopeItem && fsi->d_ptr->focusScopeItem->isVisible())
fsi = fsi->d_ptr->focusScopeItem;
fsi->d_ptr->setFocusHelper(Qt::OtherFocusReason, /* climb = */ true,
- /* focusFromShow = */ true);
+ /* focusFromHide = */ false);
}
break;
}
@@ -2375,6 +2375,10 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo
QGraphicsItem *fi = subFocusItem;
if (fi && fi != scene->focusItem()) {
scene->setFocusItem(fi);
+ } else if (flags & QGraphicsItem::ItemIsFocusScope &&
+ !scene->focusItem() &&
+ q->isAncestorOf(scene->d_func()->lastFocusItem)) {
+ q_ptr->setFocus();
}
}
} else {
@@ -2385,7 +2389,7 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo
if (p->flags() & QGraphicsItem::ItemIsFocusScope) {
if (p->d_ptr->visible) {
p->d_ptr->setFocusHelper(Qt::OtherFocusReason, /* climb = */ true,
- /* focusFromShow = */ true);
+ /* focusFromHide = */ true);
}
break;
}
@@ -3245,13 +3249,13 @@ bool QGraphicsItem::hasFocus() const
*/
void QGraphicsItem::setFocus(Qt::FocusReason focusReason)
{
- d_ptr->setFocusHelper(focusReason, /* climb = */ true, /* focusFromShow = */ false);
+ d_ptr->setFocusHelper(focusReason, /* climb = */ true, /* focusFromHide = */ false);
}
/*!
\internal
*/
-void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool climb, bool focusFromShow)
+void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool climb, bool focusFromHide)
{
// Disabled / unfocusable items cannot accept focus.
if (!q_ptr->isEnabled() || !(flags & QGraphicsItem::ItemIsFocusable))
@@ -3272,7 +3276,7 @@ void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool clim
if (p->flags() & QGraphicsItem::ItemIsFocusScope) {
QGraphicsItem *oldFocusScopeItem = p->d_ptr->focusScopeItem;
p->d_ptr->focusScopeItem = q_ptr;
- if (!p->focusItem() && !focusFromShow) {
+ if (!p->focusItem() && !focusFromHide) {
if (oldFocusScopeItem)
oldFocusScopeItem->d_ptr->focusScopeItemChange(false);
focusScopeItemChange(true);
@@ -3318,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);
}
/*!
@@ -3333,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,
- /* focusFromShow = */ 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;
@@ -3342,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);
}
@@ -3702,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;
}
@@ -4384,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 c8a7699af6..1b7aa975a9 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -477,7 +477,7 @@ public:
inline void markParentDirty(bool updateBoundingRect = false);
- void setFocusHelper(Qt::FocusReason focusReason, bool climb, bool focusFromShow);
+ void setFocusHelper(Qt::FocusReason focusReason, bool climb, bool focusFromHide);
void clearFocusHelper(bool giveFocusToParent);
void setSubFocus(QGraphicsItem *rootItem = 0);
void clearSubFocus(QGraphicsItem *rootItem = 0);
@@ -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 34ec4e048e..fab1bbba6f 100644
--- a/src/gui/graphicsview/qgraphicslayoutitem.cpp
+++ b/src/gui/graphicsview/qgraphicslayoutitem.cpp
@@ -140,11 +140,9 @@ QSizeF *QGraphicsLayoutItemPrivate::effectiveSizeHints(const QSizeF &constraint)
if (!sizeHintCacheDirty && cachedConstraint == constraint)
return cachedSizeHints;
- const bool hasConstraint = constraint.width() >= 0 || constraint.height() >= 0;
-
for (int i = 0; i < Qt::NSizeHints; ++i) {
cachedSizeHints[i] = constraint;
- if (userSizeHints && !hasConstraint)
+ if (userSizeHints)
combineSize(cachedSizeHints[i], userSizeHints[i]);
}
diff --git a/src/gui/graphicsview/qgraphicsproxywidget.cpp b/src/gui/graphicsview/qgraphicsproxywidget.cpp
index 320395ef53..bf61150c9d 100644
--- a/src/gui/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/gui/graphicsview/qgraphicsproxywidget.cpp
@@ -266,8 +266,8 @@ void QGraphicsProxyWidgetPrivate::sendWidgetMouseEvent(QGraphicsSceneMouseEvent
}
if (!lastWidgetUnderMouse) {
- QApplicationPrivate::dispatchEnterLeave(embeddedMouseGrabber ? embeddedMouseGrabber : widget, 0);
- lastWidgetUnderMouse = widget;
+ QApplicationPrivate::dispatchEnterLeave(embeddedMouseGrabber ? embeddedMouseGrabber : receiver, 0);
+ lastWidgetUnderMouse = receiver;
}
// Map event position from us to the receiver
@@ -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/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 5b1da9ee23..981fbbc9fb 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -3461,7 +3461,8 @@ bool QGraphicsScene::event(QEvent *event)
break;
}
case QEvent::Leave:
- d->leaveScene();
+ // hackieshly unpacking the viewport pointer from the leave event.
+ d->leaveScene(reinterpret_cast<QWidget *>(event->d));
break;
case QEvent::GraphicsSceneHelp:
helpEvent(static_cast<QGraphicsSceneHelpEvent *>(event));
@@ -3933,20 +3934,19 @@ bool QGraphicsScenePrivate::dispatchHoverEvent(QGraphicsSceneHoverEvent *hoverEv
Handles all actions necessary to clean up the scene when the mouse leaves
the view.
*/
-void QGraphicsScenePrivate::leaveScene()
+void QGraphicsScenePrivate::leaveScene(QWidget *viewport)
{
- Q_Q(QGraphicsScene);
#ifndef QT_NO_TOOLTIP
QToolTip::hideText();
#endif
+ QGraphicsView *view = qobject_cast<QGraphicsView *>(viewport->parent());
// Send HoverLeave events to all existing hover items, topmost first.
- QGraphicsView *senderWidget = qobject_cast<QGraphicsView *>(q->sender());
QGraphicsSceneHoverEvent hoverEvent;
- hoverEvent.setWidget(senderWidget);
+ hoverEvent.setWidget(viewport);
- if (senderWidget) {
+ if (view) {
QPoint cursorPos = QCursor::pos();
- hoverEvent.setScenePos(senderWidget->mapToScene(senderWidget->mapFromGlobal(cursorPos)));
+ hoverEvent.setScenePos(view->mapToScene(viewport->mapFromGlobal(cursorPos)));
hoverEvent.setLastScenePos(hoverEvent.scenePos());
hoverEvent.setScreenPos(cursorPos);
hoverEvent.setLastScreenPos(hoverEvent.screenPos());
diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h
index f28dfe92d6..2818fb2a3b 100644
--- a/src/gui/graphicsview/qgraphicsscene_p.h
+++ b/src/gui/graphicsview/qgraphicsscene_p.h
@@ -201,7 +201,7 @@ public:
bool dispatchHoverEvent(QGraphicsSceneHoverEvent *hoverEvent);
bool itemAcceptsHoverEvents_helper(const QGraphicsItem *item) const;
- void leaveScene();
+ void leaveScene(QWidget *viewport);
void cloneDragDropEvent(QGraphicsSceneDragDropEvent *dest,
QGraphicsSceneDragDropEvent *source);
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/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 2db29b9ea6..73f14933b3 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -80,9 +80,7 @@ static const int QGRAPHICSVIEW_PREALLOC_STYLE_OPTIONS = 503; // largest prime <
yourself, you can call setSceneRect(). This will adjust the scroll bars'
ranges appropriately. Note that although the scene supports a virtually
unlimited size, the range of the scroll bars will never exceed the range of
- an integer (INT_MIN, INT_MAX). When the scene is larger than the scroll
- bars' values, you can choose to use translate() to navigate the scene
- instead.
+ an integer (INT_MIN, INT_MAX).
QGraphicsView visualizes the scene by calling render(). By default, the
items are drawn onto the viewport by using a regular QPainter, and using
@@ -101,7 +99,8 @@ static const int QGRAPHICSVIEW_PREALLOC_STYLE_OPTIONS = 503; // largest prime <
convenience functions rotate(), scale(), translate() or shear(). The most
two common transformations are scaling, which is used to implement
zooming, and rotation. QGraphicsView keeps the center of the view fixed
- during a transformation.
+ during a transformation. Because of the scene alignment (setAligment()),
+ translating the view will have no visual impact.
You can interact with the items on the scene by using the mouse and
keyboard. QGraphicsView translates the mouse and key events into \e scene
@@ -2790,6 +2789,9 @@ bool QGraphicsView::viewportEvent(QEvent *event)
d->scene->d_func()->removePopup(d->scene->d_func()->popupWidgets.first());
}
d->useLastMouseEvent = false;
+ // a hack to pass a viewport pointer to the scene inside the leave event
+ Q_ASSERT(event->d == 0);
+ event->d = reinterpret_cast<QEventPrivate *>(viewport());
QApplication::sendEvent(d->scene, event);
break;
#ifndef QT_NO_TOOLTIP
diff --git a/src/gui/graphicsview/qgraphicsview_p.h b/src/gui/graphicsview/qgraphicsview_p.h
index 62be800043..38c3bca75b 100644
--- a/src/gui/graphicsview/qgraphicsview_p.h
+++ b/src/gui/graphicsview/qgraphicsview_p.h
@@ -184,7 +184,7 @@ public:
#ifdef Q_WS_MAC
// QWidget::update() works slightly different on the Mac without the raster engine;
// it's not part of our backing store so it needs special threatment.
- if (QApplicationPrivate::graphics_system_name != "raster") {
+ if (QApplicationPrivate::graphics_system_name != QLatin1String("raster")) {
// At this point either HIViewSetNeedsDisplay (Carbon) or setNeedsDisplay: YES (Cocoa)
// is called, which means there's a pending update request. We want to dispatch it
// now because otherwise graphics view updates would require two
diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp
index 1bfe266f69..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.
@@ -750,6 +750,22 @@ QSizeF QGraphicsWidget::sizeHint(Qt::SizeHint which, const QSizeF &constraint) c
/*!
\property QGraphicsWidget::layout
\brief The layout of the widget
+
+ Any existing layout manager is deleted before the new layout is assigned. If
+ \a layout is 0, the widget is left without a layout. Existing subwidgets'
+ geometries will remain unaffected.
+
+ QGraphicsWidget takes ownership of \a layout.
+
+ All widgets that are currently managed by \a layout or all of its
+ sublayouts, are automatically reparented to this item. The layout is then
+ invalidated, and the child widget geometries are adjusted according to
+ this item's geometry() and contentsMargins(). Children who are not
+ explicitly managed by \a layout remain unaffected by the layout after
+ it has been assigned to this widget.
+
+ If no layout is currently managing this widget, layout() will return 0.
+
*/
/*!
diff --git a/src/gui/graphicsview/qgridlayoutengine.cpp b/src/gui/graphicsview/qgridlayoutengine.cpp
index f8cd5932a0..7f8d574e42 100644
--- a/src/gui/graphicsview/qgridlayoutengine.cpp
+++ b/src/gui/graphicsview/qgridlayoutengine.cpp
@@ -631,14 +631,17 @@ QRectF QGridLayoutItem::geometryWithin(qreal x, qreal y, qreal width, qreal heig
qreal cellWidth = width;
qreal cellHeight = height;
- QSize constraint;
+
+ QSizeF size = effectiveMaxSize(QSizeF(-1,-1));
if (hasDynamicConstraint()) {
- if (dynamicConstraintOrientation() == Qt::Vertical)
- constraint.setWidth(cellWidth);
- else
- constraint.setHeight(cellHeight);
+ if (dynamicConstraintOrientation() == Qt::Vertical) {
+ if (size.width() > cellWidth)
+ size = effectiveMaxSize(QSizeF(cellWidth, -1));
+ } else if(size.height() > cellHeight) {
+ size = effectiveMaxSize(QSizeF(-1, cellHeight));
+ }
}
- QSizeF size = effectiveMaxSize(constraint).boundedTo(QSizeF(cellWidth, cellHeight));
+ size = size.boundedTo(QSizeF(cellWidth, cellHeight));
width = size.width();
height = size.height();
@@ -714,7 +717,7 @@ QSizeF QGridLayoutItem::effectiveMaxSize(const QSizeF &constraint) const
}
if (!size.isValid()) {
- QSizeF maxSize = layoutItem()->effectiveSizeHint(Qt::MaximumSize, constraint);
+ QSizeF maxSize = layoutItem()->effectiveSizeHint(Qt::MaximumSize, size);
if (size.width() == -1)
size.setWidth(maxSize.width());
if (size.height() == -1)
@@ -1111,20 +1114,76 @@ QRectF QGridLayoutEngine::cellRect(const QLayoutStyleInfo &styleInfo,
QSizeF QGridLayoutEngine::sizeHint(const QLayoutStyleInfo &styleInfo, Qt::SizeHint which,
const QSizeF &constraint) const
{
- ensureColumnAndRowData(styleInfo);
+ QGridLayoutBox sizehint_totalBoxes[NOrientations];
- if (hasDynamicConstraint())
- return dynamicallyConstrainedSizeHint(which, constraint);
+ if(rowCount() < 1 || columnCount() < 1 || !hasDynamicConstraint()) {
+ //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];
+ }
+ } else if(constraintOrientation() == Qt::Vertical) {
+ //We have items whose width depends on their height
+ if(q_cachedDataForStyleInfo != styleInfo)
+ ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal);
+ else
+ sizehint_totalBoxes[Hor] = q_totalBoxes[Hor];
+ QVector<qreal> sizehint_xx;
+ QVector<qreal> sizehint_widths;
+
+ sizehint_xx.resize(columnCount());
+ sizehint_widths.resize(columnCount());
+ qreal width = constraint.width();
+ if(width < 0) {
+ /* It's not obvious what the behaviour should be. */
+/* if(which == Qt::MaximumSize)
+ width = sizehint_totalBoxes[Hor].q_maximumSize;
+ else if(which == Qt::MinimumSize)
+ width = sizehint_totalBoxes[Hor].q_minimumSize;
+ else*/
+ width = sizehint_totalBoxes[Hor].q_preferredSize;
+ }
+ //Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as
+ //constraints to find the row heights
+ q_columnData.calculateGeometries(0, columnCount(), width, sizehint_xx.data(), sizehint_widths.data(),
+ 0, sizehint_totalBoxes[Hor]);
+ ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, sizehint_xx.data(), sizehint_widths.data(), Qt::Vertical);
+ } else {
+ //We have items whose height depends on their width
+ ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical);
+ QVector<qreal> sizehint_yy;
+ QVector<qreal> sizehint_heights;
+
+ sizehint_yy.resize(rowCount());
+ sizehint_heights.resize(rowCount());
+ qreal height = constraint.height();
+ if(height < 0) {
+/* if(which == Qt::MaximumSize)
+ height = sizehint_totalBoxes[Ver].q_maximumSize;
+ else if(which == Qt::MinimumSize)
+ height = sizehint_totalBoxes[Ver].q_minimumSize;
+ else*/
+ height = sizehint_totalBoxes[Ver].q_preferredSize;
+ }
+ //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as
+ //constraints to find the column widths
+ q_rowData.calculateGeometries(0, rowCount(), height, sizehint_yy.data(), sizehint_heights.data(),
+ 0, sizehint_totalBoxes[Ver]);
+ ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, sizehint_yy.data(), sizehint_heights.data(), Qt::Vertical);
+ }
switch (which) {
case Qt::MinimumSize:
- 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;
}
@@ -1300,6 +1359,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;
@@ -1413,11 +1473,21 @@ void QGridLayoutEngine::fillRowData(QGridLayoutRowData *rowData, const QLayoutSt
box = &multiCell.q_box;
multiCell.q_stretch = itemStretch;
}
- // Items with constraints are not included in the orientation that
- // they are constrained (since it depends on the hfw/constraint function).
- // They must be combined at a later stage.
- if (!item->hasDynamicConstraint() || orientation != item->dynamicConstraintOrientation())
+ // 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);
@@ -1554,115 +1624,18 @@ 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);
-
- q_columnData.distributeMultiCells();
- q_rowData.distributeMultiCells();
-
- q_totalBoxes[Hor] = q_columnData.totalBox(0, columnCount());
- q_totalBoxes[Ver] = q_rowData.totalBox(0, rowCount());
-
- q_cachedDataForStyleInfo = styleInfo;
+ rowData->reset(rowCount(orientation));
+ fillRowData(rowData, styleInfo, colPositions, colSizes, orientation);
+ rowData->distributeMultiCells();
+ *totalBox = rowData->totalBox(0, rowCount(orientation));
+ //We have items whose width depends on their height
}
-QSizeF QGridLayoutEngine::dynamicallyConstrainedSizeHint(Qt::SizeHint which,
- const QSizeF &constraint) const
-{
- Q_ASSERT(hasDynamicConstraint());
- if (constraint.width() < 0 && constraint.height() < 0) {
- // Process the hfw / wfh items that we did not process in fillRowData()
- const Qt::Orientation constraintOrient = constraintOrientation();
-
- QGridLayoutRowData rowData = constraintOrient == Qt::Vertical ? q_rowData : q_columnData;
- for (int i = q_items.count() - 1; i >= 0; --i) {
- QGridLayoutItem *item = q_items.at(i);
- if (item->hasDynamicConstraint()) {
- QGridLayoutBox box = item->box(constraintOrient);
- QGridLayoutBox &rowBox = rowData.boxes[item->firstRow(constraintOrient)];
- rowBox.combine(box);
- }
- }
-
- QGridLayoutBox totalBoxes[2];
- if (constraintOrient == Qt::Vertical) {
- totalBoxes[Hor] = q_columnData.totalBox(0, columnCount());
- totalBoxes[Ver] = rowData.totalBox(0, rowCount());
- } else {
- totalBoxes[Hor] = rowData.totalBox(0, columnCount());
- totalBoxes[Ver] = q_rowData.totalBox(0, rowCount());
- }
- return QSizeF(totalBoxes[Hor].q_sizes(which), totalBoxes[Ver].q_sizes(which));
- }
-
-
- Q_ASSERT(constraint.width() >= 0 || constraint.height() >= 0);
- q_xx.resize(columnCount());
- q_yy.resize(rowCount());
- q_widths.resize(columnCount());
- q_heights.resize(rowCount());
- q_descents.resize(rowCount());
-
-
- const Qt::Orientation orientation = constraintOrientation();
- QGridLayoutRowData *colData;
- QGridLayoutRowData constrainedRowData;
- QGridLayoutBox *totalBox;
- qreal *sizes;
- qreal *pos;
- qreal *descents;
- qreal targetSize;
- qreal cCount;
- qreal rCount;
-
- if (orientation == Qt::Vertical) {
- // height for width
- colData = &q_columnData;
- totalBox = &q_totalBoxes[Hor];
- sizes = q_widths.data();
- pos = q_xx.data();
- descents = 0;
- targetSize = constraint.width();
- cCount = columnCount();
- rCount = rowCount();
- constrainedRowData = q_rowData;
- } else {
- // width for height
- colData = &q_rowData;
- totalBox = &q_totalBoxes[Ver];
- sizes = q_heights.data();
- pos = q_yy.data();
- descents = q_descents.data();
- targetSize = constraint.height();
- cCount = rowCount();
- rCount = columnCount();
- constrainedRowData = q_columnData;
- }
- colData->calculateGeometries(0, cCount, targetSize, pos, sizes, descents, *totalBox);
- for (int i = q_items.count() - 1; i >= 0; --i) {
- QGridLayoutItem *item = q_items.at(i);
-
- if (item->hasDynamicConstraint()) {
- const qreal size = sizes[item->firstColumn(orientation)];
- QGridLayoutBox box = item->box(orientation, size);
- QGridLayoutBox &rowBox = constrainedRowData.boxes[item->firstRow(orientation)];
- rowBox.combine(box);
- }
- }
- const qreal newSize = constrainedRowData.totalBox(0, rCount).q_sizes(which);
-
- return (orientation == Qt::Vertical) ? QSizeF(targetSize, newSize) : QSizeF(newSize, targetSize);
-}
-
-
/**
returns false if the layout has contradicting constraints (i.e. some items with a horizontal
constraint and other items with a vertical constraint)
@@ -1709,85 +1682,41 @@ Qt::Orientation QGridLayoutEngine::constraintOrientation() const
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());
-
- Qt::Orientation orientation = Qt::Vertical;
- if (hasDynamicConstraint())
- orientation = constraintOrientation();
-
- /*
- In order to do hfw we need to first distribute the columns, then the rows.
- In order to do wfh we need to first distribute the rows, then the columns.
-
- If there is no constraint, the order of distributing the rows or columns first is irrelevant.
- We choose horizontal just to keep the same behaviour as before (however, there shouldn't
- be any behaviour difference).
- */
-
- QGridLayoutRowData *colData;
- QGridLayoutRowData rowData;
- qreal *widths;
- qreal *heights;
- qreal *xx;
- qreal *yy;
- qreal *xdescents = 0;
- qreal *ydescents = 0;
- qreal cCount;
- qreal rCount;
- QSizeF oSize = size;
- if (orientation == Qt::Vertical) {
- // height for width
- colData = &q_columnData;
- rowData = q_rowData;
- widths = q_widths.data();
- heights = q_heights.data();
- xx = q_xx.data();
- yy = q_yy.data();
- cCount = columnCount();
- rCount = rowCount();
- ydescents = q_descents.data();
+ 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]);
+ 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]);
} else {
- // width for height
- colData = &q_rowData;
- rowData = q_columnData;
- widths = q_heights.data();
- heights = q_widths.data();
- xx = q_yy.data();
- yy = q_xx.data();
- cCount = rowCount();
- rCount = columnCount();
- xdescents = q_descents.data();
- oSize.transpose();
+ //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]);
+ 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]);
}
-
- colData->calculateGeometries(0, cCount, oSize.width(), xx, widths,
- xdescents, q_totalBoxes[orientation == Qt::Horizontal]);
- for (int i = q_items.count() - 1; i >= 0; --i) {
- QGridLayoutItem *item = q_items.at(i);
- const int col = item->firstColumn(orientation);
- const int row = item->firstRow(orientation);
- if (item->hasDynamicConstraint()) {
- const qreal sz = widths[col];
- QGridLayoutBox box = item->box(orientation, sz);
- rowData.boxes[row].combine(box);
- }
- }
-
- QGridLayoutBox &totalBox = q_totalBoxes[orientation == Qt::Vertical];
- totalBox = rowData.totalBox(0, rCount);
- rowData.calculateGeometries(0, rCount, oSize.height(), yy, heights,
- ydescents, totalBox);
-
- q_cachedSize = size;
}
QT_END_NAMESPACE
diff --git a/src/gui/graphicsview/qgridlayoutengine_p.h b/src/gui/graphicsview/qgridlayoutengine_p.h
index 55451d758b..7c77b2ac01 100644
--- a/src/gui/graphicsview/qgridlayoutengine_p.h
+++ b/src/gui/graphicsview/qgridlayoutengine_p.h
@@ -93,8 +93,8 @@ enum LayoutSide {
enum {
NoConstraint,
- HorizontalConstraint,
- VerticalConstraint,
+ 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
};
@@ -411,9 +411,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
diff --git a/src/gui/gui.pro b/src/gui/gui.pro
index 90b5de5971..11a25e2189 100644
--- a/src/gui/gui.pro
+++ b/src/gui/gui.pro
@@ -5,7 +5,7 @@ DEFINES += QT_BUILD_GUI_LIB QT_NO_USING_NAMESPACE
win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x65000000
irix-cc*:QMAKE_CXXFLAGS += -no_prelink -ptused
-!win32:!embedded:!mac:!symbian:CONFIG += x11
+!win32:!embedded:!qpa:!mac:!symbian:CONFIG += x11
unix:QMAKE_PKGCONFIG_REQUIRES = QtCore
@@ -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/image.pri b/src/gui/image/image.pri
index f89706cc7c..92ea397a57 100644
--- a/src/gui/image/image.pri
+++ b/src/gui/image/image.pri
@@ -23,6 +23,7 @@ HEADERS += \
image/qpictureformatplugin.h \
image/qpixmap.h \
image/qpixmap_raster_p.h \
+ image/qpixmap_blitter_p.h \
image/qpixmapcache.h \
image/qpixmapcache_p.h \
image/qpixmapdata_p.h \
@@ -50,6 +51,7 @@ SOURCES += \
image/qiconengineplugin.cpp \
image/qmovie.cpp \
image/qpixmap_raster.cpp \
+ image/qpixmap_blitter.cpp \
image/qnativeimage.cpp \
image/qimagepixmapcleanuphooks.cpp
@@ -59,6 +61,9 @@ win32 {
else:embedded {
SOURCES += image/qpixmap_qws.cpp
}
+else:qpa {
+ SOURCES += image/qpixmap_qpa.cpp
+}
else:x11 {
HEADERS += image/qpixmap_x11_p.h
SOURCES += image/qpixmap_x11.cpp
diff --git a/src/gui/image/qbitmap.cpp b/src/gui/image/qbitmap.cpp
index 91622f3a22..9d90b3ff69 100644
--- a/src/gui/image/qbitmap.cpp
+++ b/src/gui/image/qbitmap.cpp
@@ -227,6 +227,14 @@ QBitmap::~QBitmap()
}
/*!
+ \fn void QBitmap::swap(QBitmap &other)
+ \since 4.8
+
+ Swaps bitmap \a other with this bitmap. This operation is very
+ fast and never fails.
+*/
+
+/*!
Returns the bitmap as a QVariant.
*/
QBitmap::operator QVariant() const
diff --git a/src/gui/image/qbitmap.h b/src/gui/image/qbitmap.h
index 1bbe1cf94f..93be951e89 100644
--- a/src/gui/image/qbitmap.h
+++ b/src/gui/image/qbitmap.h
@@ -63,6 +63,7 @@ public:
~QBitmap();
QBitmap &operator=(const QPixmap &);
+ inline void swap(QBitmap &other) { QPixmap::swap(other); } // prevent QBitmap<->QPixmap swaps
operator QVariant() const;
inline void clear() { fill(Qt::color0); }
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
index a2f429a559..e54bb5fcba 100644
--- a/src/gui/image/qicon.cpp
+++ b/src/gui/image/qicon.cpp
@@ -613,6 +613,14 @@ QIcon &QIcon::operator=(const QIcon &other)
}
/*!
+ \fn void QIcon::swap(QIcon &other)
+ \since 4.8
+
+ Swaps icon \a other with this icon. This operation is very
+ fast and never fails.
+*/
+
+/*!
Returns the icon as a QVariant.
*/
QIcon::operator QVariant() const
diff --git a/src/gui/image/qicon.h b/src/gui/image/qicon.h
index fd591e62ba..5091d03871 100644
--- a/src/gui/image/qicon.h
+++ b/src/gui/image/qicon.h
@@ -75,6 +75,8 @@ public:
inline QIcon &operator=(QIcon &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QIcon &other) { qSwap(d, other.d); }
+
operator QVariant() const;
QPixmap pixmap(const QSize &size, Mode mode = Normal, State state = Off) const;
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index 300e04b4ee..d86021cb9a 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -1329,6 +1329,14 @@ QImage &QImage::operator=(const QImage &image)
}
/*!
+ \fn void QImage::swap(QImage &other)
+ \since 4.8
+
+ Swaps image \a other with this image. This operation is very
+ fast and never fails.
+*/
+
+/*!
\internal
*/
int QImage::devType() const
@@ -6689,6 +6697,10 @@ bool QImageData::convertInPlace(QImage::Format newFormat, Qt::ImageConversionFla
if (format == newFormat)
return true;
+ // No in-place conversion if we have to detach
+ if (ref > 1)
+ return false;
+
const InPlace_Image_Converter *const converterPtr = &inplace_converter_map[format][newFormat];
InPlace_Image_Converter converter = *converterPtr;
if (converter)
diff --git a/src/gui/image/qimage.h b/src/gui/image/qimage.h
index 4fe7da2396..c6a947ef0a 100644
--- a/src/gui/image/qimage.h
+++ b/src/gui/image/qimage.h
@@ -144,6 +144,7 @@ public:
inline QImage &operator=(QImage &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QImage &other) { qSwap(d, other.d); }
bool isNull() const;
@@ -334,6 +335,7 @@ private:
QImageData *d;
friend class QRasterPixmapData;
+ friend class QBlittablePixmapData;
friend class QPixmapCacheEntry;
friend Q_GUI_EXPORT qint64 qt_image_id(const QImage &image);
friend const QVector<QRgb> *qt_image_colortable(const QImage &image);
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/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp
index 844638789d..0f7872e92c 100644
--- a/src/gui/image/qnativeimage.cpp
+++ b/src/gui/image/qnativeimage.cpp
@@ -45,6 +45,9 @@
#include "private/qpaintengine_raster_p.h"
+#include "private/qapplication_p.h"
+#include "private/qgraphicssystem_p.h"
+
#if defined(Q_WS_X11) && !defined(QT_NO_MITSHM)
#include <qx11info_x11.h>
#include <sys/ipc.h>
@@ -241,8 +244,19 @@ QNativeImage::QNativeImage(int width, int height, QImage::Format format, bool /*
: image(width, height, format)
{
-
uint cgflags = kCGImageAlphaNoneSkipFirst;
+ switch (format) {
+ case QImage::Format_ARGB32:
+ cgflags = kCGImageAlphaFirst;
+ break;
+ case QImage::Format_ARGB32_Premultiplied:
+ case QImage::Format_ARGB8565_Premultiplied:
+ case QImage::Format_ARGB6666_Premultiplied:
+ case QImage::Format_ARGB8555_Premultiplied:
+ case QImage::Format_ARGB4444_Premultiplied:
+ cgflags = kCGImageAlphaPremultipliedFirst;
+ break;
+ }
#ifdef kCGBitmapByteOrder32Host //only needed because CGImage.h added symbols in the minor version
cgflags |= kCGBitmapByteOrder32Host;
@@ -284,7 +298,11 @@ QNativeImage::~QNativeImage()
QImage::Format QNativeImage::systemFormat()
{
+#ifdef Q_WS_QPA
+ return QApplicationPrivate::platformIntegration()->screens().at(0)->format();
+#else
return QImage::Format_RGB32;
+#endif
}
#endif // platforms
diff --git a/src/gui/image/qpicture.cpp b/src/gui/image/qpicture.cpp
index 48d2de3e3b..fc81d23bf3 100644
--- a/src/gui/image/qpicture.cpp
+++ b/src/gui/image/qpicture.cpp
@@ -1030,6 +1030,14 @@ QPicture& QPicture::operator=(const QPicture &p)
}
/*!
+ \fn void QPicture::swap(QPicture &other)
+ \since 4.8
+
+ Swaps picture \a other with this picture. This operation is very
+ fast and never fails.
+*/
+
+/*!
\internal
Constructs a QPicturePrivate
diff --git a/src/gui/image/qpicture.h b/src/gui/image/qpicture.h
index 49b0fd6708..d24f23aaf2 100644
--- a/src/gui/image/qpicture.h
+++ b/src/gui/image/qpicture.h
@@ -85,6 +85,7 @@ public:
inline QPicture &operator=(QPicture &&other)
{ qSwap(d_ptr, other.d_ptr); return *this; }
#endif
+ inline void swap(QPicture &other) { d_ptr.swap(other.d_ptr); }
void detach();
bool isDetached() const;
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index ad07fbd50d..9fd10ae84a 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -440,6 +440,14 @@ QPixmap &QPixmap::operator=(const QPixmap &pixmap)
}
/*!
+ \fn void QPixmap::swap(QPixmap &other)
+ \since 4.8
+
+ Swaps pixmap \a other with this pixmap. This operation is very
+ fast and never fails.
+*/
+
+/*!
Returns the pixmap as a QVariant.
*/
QPixmap::operator QVariant() const
@@ -1102,6 +1110,9 @@ QPixmap QPixmap::grabWidget(QWidget * widget, const QRect &rect)
return QPixmap();
QPixmap res(r.size());
+ if (!qt_widget_private(widget)->isOpaque)
+ res.fill(Qt::transparent);
+
widget->d_func()->render(&res, QPoint(), r, QWidget::DrawWindowBackground
| QWidget::DrawChildren | QWidget::IgnoreMask, true);
return res;
@@ -1964,6 +1975,8 @@ int QPixmap::defaultDepth()
return 32;
#elif defined(Q_OS_SYMBIAN)
return S60->screenDepth;
+#elif defined(Q_WS_QPA)
+ return 32; //LITE: use graphicssystem (we should do that in general)
#endif
}
diff --git a/src/gui/image/qpixmap.h b/src/gui/image/qpixmap.h
index e9f9365f7e..15fe5fa171 100644
--- a/src/gui/image/qpixmap.h
+++ b/src/gui/image/qpixmap.h
@@ -87,6 +87,8 @@ public:
inline QPixmap &operator=(QPixmap &&other)
{ qSwap(data, other.data); return *this; }
#endif
+ inline void swap(QPixmap &other) { qSwap(data, other.data); }
+
operator QVariant() const;
bool isNull() const; // ### Qt 5: make inline
diff --git a/src/gui/image/qpixmap_blitter.cpp b/src/gui/image/qpixmap_blitter.cpp
new file mode 100644
index 0000000000..e8a7b8915c
--- /dev/null
+++ b/src/gui/image/qpixmap_blitter.cpp
@@ -0,0 +1,311 @@
+/****************************************************************************
+**
+** 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 "qpixmap_blitter_p.h"
+
+#include <qpainter.h>
+#include <qimage.h>
+
+#include <private/qapplication_p.h>
+#include <private/qgraphicssystem_p.h>
+#include <private/qblittable_p.h>
+
+#include <private/qdrawhelper_p.h>
+
+#ifndef QT_NO_BLITTABLE
+QT_BEGIN_NAMESPACE
+
+static int global_ser_no = 0;
+
+QBlittablePixmapData::QBlittablePixmapData()
+ : QPixmapData(QPixmapData::PixmapType,BlitterClass), m_engine(0), m_blittable(0)
+#ifdef QT_BLITTER_RASTEROVERLAY
+ ,m_rasterOverlay(0), m_unmergedCopy(0)
+#endif //QT_BLITTER_RASTEROVERLAY
+{
+ setSerialNumber(++global_ser_no);
+}
+
+QBlittablePixmapData::~QBlittablePixmapData()
+{
+ delete m_blittable;
+ delete m_engine;
+#ifdef QT_BLITTER_RASTEROVERLAY
+ delete m_rasterOverlay;
+ delete m_unmergedCopy;
+#endif //QT_BLITTER_RASTEROVERLAY
+}
+
+QBlittable *QBlittablePixmapData::blittable() const
+{
+ if (!m_blittable) {
+ QBlittablePixmapData *that = const_cast<QBlittablePixmapData *>(this);
+ that->m_blittable = this->createBlittable(QSize(w,h));
+ }
+
+ return m_blittable;
+}
+
+void QBlittablePixmapData::setBlittable(QBlittable *blittable)
+{
+ resize(blittable->size().width(),blittable->size().height());
+ m_blittable = blittable;
+}
+
+void QBlittablePixmapData::resize(int width, int height)
+{
+
+ delete m_blittable;
+ m_blittable = 0;
+ delete m_engine;
+ m_engine = 0;
+#ifdef Q_WS_QPA
+ d = QApplicationPrivate::platformIntegration()->screens().at(0)->depth();
+#endif
+ w = width;
+ h = height;
+ is_null = (w <= 0 || h <= 0);
+}
+Q_GUI_EXPORT extern int qt_defaultDpiX();
+Q_GUI_EXPORT extern int qt_defaultDpiY();
+
+int QBlittablePixmapData::metric(QPaintDevice::PaintDeviceMetric metric) const
+{
+ switch (metric) {
+ case QPaintDevice::PdmWidth:
+ return w;
+ case QPaintDevice::PdmHeight:
+ return h;
+ case QPaintDevice::PdmWidthMM:
+ return qRound(w * 25.4 / qt_defaultDpiX());
+ case QPaintDevice::PdmHeightMM:
+ return qRound(h * 25.4 / qt_defaultDpiY());
+ case QPaintDevice::PdmDepth:
+ return 32;
+ case QPaintDevice::PdmDpiX: // fall-through
+ case QPaintDevice::PdmPhysicalDpiX:
+ return qt_defaultDpiX();
+ case QPaintDevice::PdmDpiY: // fall-through
+ case QPaintDevice::PdmPhysicalDpiY:
+ return qt_defaultDpiY();
+ default:
+ qWarning("QRasterPixmapData::metric(): Unhandled metric type %d", metric);
+ break;
+ }
+
+ return 0;
+}
+
+void QBlittablePixmapData::fill(const QColor &color)
+{
+ //jlind: todo: change when blittables can support non opaque fillRects
+ if (color.alpha() == 255 && blittable()->capabilities() & QBlittable::SolidRectCapability) {
+ blittable()->unlock();
+ blittable()->fillRect(QRectF(0,0,w,h),color);
+ }else {
+ uint pixel;
+ switch (blittable()->lock()->format()) {
+ case QImage::Format_ARGB32_Premultiplied:
+ pixel = PREMUL(color.rgba());
+ break;
+ case QImage::Format_ARGB8565_Premultiplied:
+ pixel = qargb8565(color.rgba()).rawValue();
+ break;
+ case QImage::Format_ARGB8555_Premultiplied:
+ pixel = qargb8555(color.rgba()).rawValue();
+ break;
+ case QImage::Format_ARGB6666_Premultiplied:
+ pixel = qargb6666(color.rgba()).rawValue();
+ break;
+ case QImage::Format_ARGB4444_Premultiplied:
+ pixel = qargb4444(color.rgba()).rawValue();
+ break;
+ default:
+ pixel = color.rgba();
+ break;
+ }
+ //so premultiplied formats are supported and ARGB32 and RGB32
+ blittable()->lock()->fill(pixel);
+ }
+
+}
+
+QImage *QBlittablePixmapData::buffer()
+{
+ return blittable()->lock();
+}
+
+QImage QBlittablePixmapData::toImage() const
+{
+ return blittable()->lock()->copy();
+}
+
+bool QBlittablePixmapData::hasAlphaChannel() const
+{
+ return blittable()->lock()->hasAlphaChannel();
+}
+
+void QBlittablePixmapData::fromImage(const QImage &image,
+ Qt::ImageConversionFlags flags)
+{
+ resize(image.width(),image.height());
+ markRasterOverlay(QRect(0,0,w,h));
+ QImage *thisImg = buffer();
+
+ QImage correctFormatPic = image;
+ if (correctFormatPic.format() != thisImg->format())
+ correctFormatPic = correctFormatPic.convertToFormat(thisImg->format(), flags);
+
+ uchar *mem = thisImg->bits();
+ const uchar *bits = correctFormatPic.bits();
+ int bytesCopied = 0;
+ while (bytesCopied < correctFormatPic.byteCount()) {
+ memcpy(mem,bits,correctFormatPic.bytesPerLine());
+ mem += thisImg->bytesPerLine();
+ bits += correctFormatPic.bytesPerLine();
+ bytesCopied+=correctFormatPic.bytesPerLine();
+ }
+}
+
+QPaintEngine *QBlittablePixmapData::paintEngine() const
+{
+ if (!m_engine) {
+ QBlittablePixmapData *that = const_cast<QBlittablePixmapData *>(this);
+ that->m_engine = new QBlitterPaintEngine(that);
+ }
+ return m_engine;
+}
+
+#ifdef QT_BLITTER_RASTEROVERLAY
+
+static bool showRasterOverlay = !qgetenv("QT_BLITTER_RASTEROVERLAY").isEmpty();
+
+void QBlittablePixmapData::mergeOverlay()
+{
+ if (m_unmergedCopy || !showRasterOverlay)
+ return;
+ m_unmergedCopy = new QImage(buffer()->copy());
+ QPainter p(buffer());
+ p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+ p.drawImage(0,0,*overlay());
+ p.end();
+}
+
+void QBlittablePixmapData::unmergeOverlay()
+{
+ if (!m_unmergedCopy || !showRasterOverlay)
+ return;
+ QPainter p(buffer());
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ p.drawImage(0,0,*m_unmergedCopy);
+ p.end();
+
+ delete m_unmergedCopy;
+ m_unmergedCopy = 0;
+}
+
+QImage *QBlittablePixmapData::overlay()
+{
+ if (!m_rasterOverlay||
+ m_rasterOverlay->size() != QSize(w,h)){
+ m_rasterOverlay = new QImage(w,h,QImage::Format_ARGB32_Premultiplied);
+ m_rasterOverlay->fill(0x00000000);
+ uint color = (qrand() % 11)+7;
+ m_overlayColor = QColor(Qt::GlobalColor(color));
+ m_overlayColor.setAlpha(0x88);
+
+ }
+ return m_rasterOverlay;
+}
+
+void QBlittablePixmapData::markRasterOverlayImpl(const QRectF &rect)
+{
+ if (!showRasterOverlay)
+ return;
+ QRectF transformationRect = clipAndTransformRect(rect);
+ if(!transformationRect.isEmpty()) {
+ QPainter p(overlay());
+ p.setBrush(m_overlayColor);
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ p.fillRect(transformationRect,QBrush(m_overlayColor));
+ }
+}
+
+void QBlittablePixmapData::unmarkRasterOverlayImpl(const QRectF &rect)
+{
+ if (!showRasterOverlay)
+ return;
+ QRectF transformationRect = clipAndTransformRect(rect);
+ if (!transformationRect.isEmpty()) {
+ QPainter p(overlay());
+ QColor color(0x00,0x00,0x00,0x00);
+ p.setBrush(color);
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ p.fillRect(transformationRect,QBrush(color));
+ }
+}
+
+QRectF QBlittablePixmapData::clipAndTransformRect(const QRectF &rect) const
+{
+ QRectF transformationRect = rect;
+ paintEngine();
+ if (m_engine->state()) {
+ transformationRect = m_engine->state()->matrix.mapRect(rect);
+ const QClipData *clipData = m_engine->clip();
+ if (clipData) {
+ if (clipData->hasRectClip) {
+ transformationRect &= clipData->clipRect;
+ } else if (clipData->hasRegionClip) {
+ const QVector<QRect> rects = clipData->clipRegion.rects();
+ for (int i = 0; i < rects.size(); i++) {
+ transformationRect &= rects.at(i);
+ }
+ }
+ }
+ }
+ return transformationRect;
+}
+
+#endif //QT_BLITTER_RASTEROVERLAY
+
+QT_END_NAMESPACE
+
+#endif //QT_NO_BLITTABLE
diff --git a/src/gui/image/qpixmap_blitter_p.h b/src/gui/image/qpixmap_blitter_p.h
new file mode 100644
index 0000000000..55b5618d65
--- /dev/null
+++ b/src/gui/image/qpixmap_blitter_p.h
@@ -0,0 +1,166 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef QPIXMAP_BLITTER_P_H
+#define QPIXMAP_BLITTER_P_H
+
+#include <private/qpixmapdata_p.h>
+#include <private/qpaintengine_blitter_p.h>
+
+#ifndef QT_NO_BLITTABLE
+QT_BEGIN_NAMESPACE
+
+class Q_GUI_EXPORT QBlittablePixmapData : public QPixmapData
+{
+// Q_DECLARE_PRIVATE(QBlittablePixmapData);
+public:
+ QBlittablePixmapData();
+ ~QBlittablePixmapData();
+
+ virtual QBlittable *createBlittable(const QSize &size) const = 0;
+ QBlittable *blittable() const;
+ void setBlittable(QBlittable *blittable);
+
+ void resize(int width, int height);
+ int metric(QPaintDevice::PaintDeviceMetric metric) const;
+ void fill(const QColor &color);
+ QImage *buffer();
+ QImage toImage() const;
+ bool hasAlphaChannel() const;
+ void fromImage(const QImage &image, Qt::ImageConversionFlags flags);
+
+ QPaintEngine *paintEngine() const;
+
+ void markRasterOverlay(const QRectF &);
+ void markRasterOverlay(const QPointF &, const QTextItem &);
+ void markRasterOverlay(const QVectorPath &);
+ void markRasterOverlay(const QRect *rects, int rectCount);
+ void markRasterOverlay(const QRectF *rects, int rectCount);
+ void unmarkRasterOverlay(const QRectF &);
+
+#ifdef QT_BLITTER_RASTEROVERLAY
+ void mergeOverlay();
+ void unmergeOverlay();
+ QImage *overlay();
+
+#endif //QT_BLITTER_RASTEROVERLAY
+protected:
+ QBlitterPaintEngine *m_engine;
+ QBlittable *m_blittable;
+
+#ifdef QT_BLITTER_RASTEROVERLAY
+ QImage *m_rasterOverlay;
+ QImage *m_unmergedCopy;
+ QColor m_overlayColor;
+
+ void markRasterOverlayImpl(const QRectF &);
+ void unmarkRasterOverlayImpl(const QRectF &);
+ QRectF clipAndTransformRect(const QRectF &) const;
+#endif //QT_BLITTER_RASTEROVERLAY
+
+};
+
+inline void QBlittablePixmapData::markRasterOverlay(const QRectF &rect)
+{
+#ifdef QT_BLITTER_RASTEROVERLAY
+ markRasterOverlayImpl(rect);
+#else
+ Q_UNUSED(rect)
+#endif
+}
+
+inline void QBlittablePixmapData::markRasterOverlay(const QVectorPath &path)
+{
+#ifdef QT_BLITTER_RASTEROVERLAY
+ markRasterOverlayImpl(path.convertToPainterPath().boundingRect());
+#else
+ Q_UNUSED(path)
+#endif
+}
+
+inline void QBlittablePixmapData::markRasterOverlay(const QPointF &pos, const QTextItem &ti)
+{
+#ifdef QT_BLITTER_RASTEROVERLAY
+ QFontMetricsF fm(ti.font());
+ QRectF rect = fm.tightBoundingRect(ti.text());
+ rect.moveBottomLeft(pos);
+ markRasterOverlay(rect);
+#else
+ Q_UNUSED(pos)
+ Q_UNUSED(ti)
+#endif
+}
+
+inline void QBlittablePixmapData::markRasterOverlay(const QRect *rects, int rectCount)
+{
+#ifdef QT_BLITTER_RASTEROVERLAY
+ for (int i = 0; i < rectCount; i++) {
+ markRasterOverlay(rects[i]);
+ }
+#else
+ Q_UNUSED(rects)
+ Q_UNUSED(rectCount)
+#endif
+}
+inline void QBlittablePixmapData::markRasterOverlay(const QRectF *rects, int rectCount)
+{
+#ifdef QT_BLITTER_RASTEROVERLAY
+ for (int i = 0; i < rectCount; i++) {
+ markRasterOverlay(rects[i]);
+ }
+#else
+ Q_UNUSED(rects)
+ Q_UNUSED(rectCount)
+#endif
+}
+
+inline void QBlittablePixmapData::unmarkRasterOverlay(const QRectF &rect)
+{
+#ifdef QT_BLITTER_RASTEROVERLAY
+ unmarkRasterOverlayImpl(rect);
+#else
+ Q_UNUSED(rect)
+#endif
+}
+
+QT_END_NAMESPACE
+#endif // QT_NO_BLITTABLE
+#endif // QPIXMAP_BLITTER_P_H
diff --git a/src/gui/image/qpixmap_qpa.cpp b/src/gui/image/qpixmap_qpa.cpp
new file mode 100644
index 0000000000..61be2169d0
--- /dev/null
+++ b/src/gui/image/qpixmap_qpa.cpp
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <qpixmap.h>
+#include <private/qgraphicssystem_p.h>
+#include <private/qapplication_p.h>
+
+QPixmap QPixmap::grabWindow(WId window, int x, int y, int w, int h)
+{
+ return QApplicationPrivate::platformIntegration()->grabWindow(window, x, y, w, h);
+}
diff --git a/src/gui/image/qpixmap_s60.cpp b/src/gui/image/qpixmap_s60.cpp
index 47249d9873..b7c8acb81b 100644
--- a/src/gui/image/qpixmap_s60.cpp
+++ b/src/gui/image/qpixmap_s60.cpp
@@ -968,11 +968,12 @@ void QS60PixmapData::fromNativeType(void* pixmap, NativeType nativeType)
if (needsCopy) {
TSize size = sourceBitmap->SizeInPixels();
+ int bytesPerLine = sourceBitmap->ScanLineLength(size.iWidth, displayMode);
QSymbianBitmapDataAccess da;
da.beginDataAccess(sourceBitmap);
uchar *bytes = (uchar*)sourceBitmap->DataAddress();
- QImage img = QImage(bytes, size.iWidth, size.iHeight, format);
+ QImage img = QImage(bytes, size.iWidth, size.iHeight, bytesPerLine, format);
img = img.copy();
da.endDataAccess(sourceBitmap);
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/qpixmapdata_p.h b/src/gui/image/qpixmapdata_p.h
index ec62b0be64..f69eb3df13 100644
--- a/src/gui/image/qpixmapdata_p.h
+++ b/src/gui/image/qpixmapdata_p.h
@@ -75,7 +75,8 @@ public:
};
#endif
enum ClassId { RasterClass, X11Class, MacClass, DirectFBClass,
- OpenGLClass, OpenVGClass, RuntimeClass, CustomClass = 1024 };
+ OpenGLClass, OpenVGClass, RuntimeClass, BlitterClass,
+ CustomClass = 1024 };
QPixmapData(PixelType pixelType, int classId);
virtual ~QPixmapData();
diff --git a/src/gui/image/qpixmapdatafactory.cpp b/src/gui/image/qpixmapdatafactory.cpp
index 7498a7c188..50dad385bb 100644
--- a/src/gui/image/qpixmapdatafactory.cpp
+++ b/src/gui/image/qpixmapdatafactory.cpp
@@ -53,6 +53,9 @@
#ifdef Q_WS_MAC
# include <private/qpixmap_mac_p.h>
#endif
+#ifdef Q_WS_QPA
+# include <private/qpixmap_raster_p.h>
+#endif
#ifdef Q_OS_SYMBIAN
# include <private/qpixmap_s60_p.h>
#endif
@@ -82,8 +85,10 @@ QPixmapData* QSimplePixmapDataFactory::create(QPixmapData::PixelType type)
return new QRasterPixmapData(type);
#elif defined(Q_WS_MAC)
return new QMacPixmapData(type);
+#elif defined(Q_WS_QPA)
+ return new QRasterPixmapData(type);
#elif defined(Q_OS_SYMBIAN)
- return new QS60PixmapData(type);
+ return new QS60PixmapData(type);
#else
#error QSimplePixmapDataFactory::create() not implemented
#endif
diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp
index 935aba0423..ea62cf8147 100644
--- a/src/gui/image/qpnghandler.cpp
+++ b/src/gui/image/qpnghandler.cpp
@@ -331,6 +331,7 @@ public:
float gamma;
int quality;
QString description;
+ QStringList readTexts;
png_struct *png_ptr;
png_info *info_ptr;
@@ -389,25 +390,20 @@ bool Q_INTERNAL_WIN_NO_THROW QPngHandlerPrivate::readPngHeader()
while (num_text--) {
QString key, value;
-#if defined(PNG_iTXt_SUPPORTED) && !defined(QT_NO_TEXTCODEC)
- if (text_ptr->lang) {
- QTextCodec *codec = QTextCodec::codecForName(text_ptr->lang);
- if (codec) {
- key = codec->toUnicode(text_ptr->lang_key);
- value = codec->toUnicode(QByteArray(text_ptr->text, text_ptr->itxt_length));
- } else {
- key = QString::fromLatin1(text_ptr->key);
- value = QString::fromLatin1(QByteArray(text_ptr->text, int(text_ptr->text_length)));
- }
+ key = QString::fromLatin1(text_ptr->key);
+#if defined(PNG_iTXt_SUPPORTED)
+ if (text_ptr->itxt_length) {
+ value = QString::fromUtf8(text_ptr->text, int(text_ptr->itxt_length));
} else
#endif
{
- key = QString::fromLatin1(text_ptr->key);
value = QString::fromLatin1(QByteArray(text_ptr->text, int(text_ptr->text_length)));
}
if (!description.isEmpty())
description += QLatin1String("\n\n");
description += key + QLatin1String(": ") + value.simplified();
+ readTexts.append(key);
+ readTexts.append(value);
text_ptr++;
}
#endif
@@ -485,25 +481,8 @@ bool Q_INTERNAL_WIN_NO_THROW QPngHandlerPrivate::readPngImage(QImage *outImage)
outImage->setDotsPerMeterX(png_get_x_pixels_per_meter(png_ptr,info_ptr));
outImage->setDotsPerMeterY(png_get_y_pixels_per_meter(png_ptr,info_ptr));
-#ifndef QT_NO_IMAGE_TEXT
- png_textp text_ptr;
- int num_text=0;
- png_get_text(png_ptr,info_ptr,&text_ptr,&num_text);
- while (num_text--) {
- outImage->setText(text_ptr->key,0,QString::fromAscii(text_ptr->text));
- text_ptr++;
- }
-
- foreach (const QString &pair, description.split(QLatin1String("\n\n"))) {
- int index = pair.indexOf(QLatin1Char(':'));
- if (index >= 0 && pair.indexOf(QLatin1Char(' ')) < index) {
- outImage->setText(QLatin1String("Description"), pair.simplified());
- } else {
- QString key = pair.left(index);
- outImage->setText(key, pair.mid(index + 2).simplified());
- }
- }
-#endif
+ for (int i = 0; i < readTexts.size()-1; i+=2)
+ outImage->setText(readTexts.at(i), readTexts.at(i+1));
png_read_end(png_ptr, end_info);
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
@@ -634,29 +613,40 @@ static void set_text(const QImage &image, png_structp png_ptr, png_infop info_pt
return;
png_textp text_ptr = new png_text[text.size()];
+ qMemSet(text_ptr, 0, text.size() * sizeof(png_text));
QMap<QString, QString>::ConstIterator it = text.constBegin();
int i = 0;
while (it != text.constEnd()) {
- QString t = it.value();
- if (t.length() < 40)
- text_ptr[i].compression = PNG_TEXT_COMPRESSION_NONE;
- else
- text_ptr[i].compression = PNG_TEXT_COMPRESSION_zTXt;
text_ptr[i].key = qstrdup(it.key().left(79).toLatin1().constData());
+ bool noCompress = (it.value().length() < 40);
-#ifndef PNG_iTXt_SUPPORTED
- QByteArray value = it.value().toLatin1();
- text_ptr[i].text = qstrdup(value.constData());
- text_ptr[i].text_length = value.size();
-#else
- QByteArray value = it.value().toUtf8();
- text_ptr[i].text = qstrdup(value.constData());
- text_ptr[i].text_length = 0;
- text_ptr[i].itxt_length = value.size();
- text_ptr[i].lang = const_cast<char*>("UTF-8");
- text_ptr[i].lang_key = qstrdup(it.key().toUtf8().constData());
+#ifdef PNG_iTXt_SUPPORTED
+ bool needsItxt = false;
+ foreach(const QChar c, it.value()) {
+ uchar ch = c.cell();
+ if (c.row() || (ch < 0x20 && ch != '\n') || (ch > 0x7e && ch < 0xa0)) {
+ needsItxt = true;
+ break;
+ }
+ }
+
+ if (needsItxt) {
+ text_ptr[i].compression = noCompress ? PNG_ITXT_COMPRESSION_NONE : PNG_ITXT_COMPRESSION_zTXt;
+ QByteArray value = it.value().toUtf8();
+ text_ptr[i].text = qstrdup(value.constData());
+ text_ptr[i].itxt_length = value.size();
+ text_ptr[i].lang = const_cast<char*>("UTF-8");
+ text_ptr[i].lang_key = qstrdup(it.key().toUtf8().constData());
+ }
+ else
#endif
+ {
+ text_ptr[i].compression = noCompress ? PNG_TEXT_COMPRESSION_NONE : PNG_TEXT_COMPRESSION_zTXt;
+ QByteArray value = it.value().toLatin1();
+ text_ptr[i].text = qstrdup(value.constData());
+ text_ptr[i].text_length = value.size();
+ }
++i;
++it;
}
diff --git a/src/gui/image/qtiffhandler.cpp b/src/gui/image/qtiffhandler.cpp
index 2e8b9988ee..dd2bd10842 100644
--- a/src/gui/image/qtiffhandler.cpp
+++ b/src/gui/image/qtiffhandler.cpp
@@ -611,6 +611,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/inputmethod.pri b/src/gui/inputmethod/inputmethod.pri
index 02e3e57024..d4394380dc 100644
--- a/src/gui/inputmethod/inputmethod.pri
+++ b/src/gui/inputmethod/inputmethod.pri
@@ -19,7 +19,7 @@ embedded {
HEADERS += inputmethod/qwsinputcontext_p.h
SOURCES += inputmethod/qwsinputcontext_qws.cpp
}
-mac:!embedded {
+mac:!embedded:!qpa {
HEADERS += inputmethod/qmacinputcontext_p.h
SOURCES += inputmethod/qmacinputcontext_mac.cpp
}
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 0842ee8258..8af6013f15 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -1169,7 +1169,7 @@ QAbstractItemView::EditTriggers QAbstractItemView::editTriggers() const
\property QAbstractItemView::verticalScrollMode
\brief how the view scrolls its contents in the vertical direction
- This property controlls how the view scroll its contents vertically.
+ This property controls how the view scroll its contents vertically.
Scrolling can be done either per pixel or per item.
*/
@@ -1195,7 +1195,7 @@ QAbstractItemView::ScrollMode QAbstractItemView::verticalScrollMode() const
\property QAbstractItemView::horizontalScrollMode
\brief how the view scrolls its contents in the horizontal direction
- This property controlls how the view scroll its contents horizontally.
+ This property controls how the view scroll its contents horizontally.
Scrolling can be done either per pixel or per item.
*/
@@ -1278,7 +1278,7 @@ bool QAbstractItemView::hasAutoScroll() const
\property QAbstractItemView::autoScrollMargin
\brief the size of the area when auto scrolling is triggered
- This property controlls the size of the area at the edge of the viewport that
+ This property controls the size of the area at the edge of the viewport that
triggers autoscrolling. The default value is 16 pixels.
*/
void QAbstractItemView::setAutoScrollMargin(int margin)
@@ -1366,7 +1366,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}
*/
/*!
@@ -4101,13 +4101,13 @@ bool QAbstractItemViewPrivate::openEditor(const QModelIndex &index, QEvent *even
if (!w)
return false;
- if (event)
- QApplication::sendEvent(w->focusProxy() ? w->focusProxy() : w, event);
-
q->setState(QAbstractItemView::EditingState);
w->show();
w->setFocus();
+ if (event)
+ QApplication::sendEvent(w->focusProxy() ? w->focusProxy() : w, event);
+
return true;
}
diff --git a/src/gui/itemviews/qabstractproxymodel.cpp b/src/gui/itemviews/qabstractproxymodel.cpp
index 51dfa7a86e..b9574f19f4 100644
--- a/src/gui/itemviews/qabstractproxymodel.cpp
+++ b/src/gui/itemviews/qabstractproxymodel.cpp
@@ -121,12 +121,15 @@ QAbstractProxyModel::~QAbstractProxyModel()
void QAbstractProxyModel::setSourceModel(QAbstractItemModel *sourceModel)
{
Q_D(QAbstractProxyModel);
- if (d->model)
+ if (d->model) {
disconnect(d->model, SIGNAL(destroyed()), this, SLOT(_q_sourceModelDestroyed()));
+ disconnect(d->model, SIGNAL(modelReset()), this, SLOT(resetInternalData()));
+ }
if (sourceModel) {
d->model = sourceModel;
connect(d->model, SIGNAL(destroyed()), this, SLOT(_q_sourceModelDestroyed()));
+ connect(d->model, SIGNAL(modelReset()), this, SLOT(resetInternalData()));
} else {
d->model = QAbstractItemModelPrivate::staticEmptyModel();
}
@@ -359,7 +362,7 @@ QMimeData* QAbstractProxyModel::mimeData(const QModelIndexList &indexes) const
QModelIndexList list;
foreach(const QModelIndex &index, indexes)
list << mapToSource(index);
- return d->model->mimeData(indexes);
+ return d->model->mimeData(list);
}
/*!
@@ -380,6 +383,25 @@ Qt::DropActions QAbstractProxyModel::supportedDropActions() const
return d->model->supportedDropActions();
}
+/*
+ \since 4.8
+
+ This slot is called just after the internal data of a model is cleared
+ while it is being reset.
+
+ This slot is provided the convenience of subclasses of concrete proxy
+ models, such as subclasses of QSortFilterProxyModel which maintain extra
+ data.
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp 10
+
+ \sa modelAboutToBeReset(), modelReset()
+*/
+void QAbstractProxyModel::resetInternalData()
+{
+
+}
+
QT_END_NAMESPACE
#include "moc_qabstractproxymodel.cpp"
diff --git a/src/gui/itemviews/qabstractproxymodel.h b/src/gui/itemviews/qabstractproxymodel.h
index a5a1168d61..0daa7f8bda 100644
--- a/src/gui/itemviews/qabstractproxymodel.h
+++ b/src/gui/itemviews/qabstractproxymodel.h
@@ -95,6 +95,9 @@ public:
QStringList mimeTypes() const;
Qt::DropActions supportedDropActions() const;
+protected Q_SLOTS:
+ void resetInternalData();
+
protected:
QAbstractProxyModel(QAbstractProxyModelPrivate &, QObject *parent);
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 7156b8713d..7b892c5616 100644
--- a/src/gui/itemviews/qitemselectionmodel.cpp
+++ b/src/gui/itemviews/qitemselectionmodel.cpp
@@ -781,7 +781,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();
@@ -1068,6 +1068,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/qlistview.cpp b/src/gui/itemviews/qlistview.cpp
index ce1f0e53e7..d1ef354ce6 100644
--- a/src/gui/itemviews/qlistview.cpp
+++ b/src/gui/itemviews/qlistview.cpp
@@ -1490,19 +1490,20 @@ void QListView::updateGeometries()
// if the scroll bars are turned off, we resize the contents to the viewport
if (d->movement == Static && !d->isWrapping()) {
- d->layoutChildren(); // we need the viewport size to be updated
+ const QSize maxSize = maximumViewportSize();
if (d->flow == TopToBottom) {
if (horizontalScrollBarPolicy() == Qt::ScrollBarAlwaysOff) {
- d->setContentsSize(viewport()->width(), contentsSize().height());
+ d->setContentsSize(maxSize.width(), contentsSize().height());
horizontalScrollBar()->setRange(0, 0); // we see all the contents anyway
}
} else { // LeftToRight
if (verticalScrollBarPolicy() == Qt::ScrollBarAlwaysOff) {
- d->setContentsSize(contentsSize().width(), viewport()->height());
+ d->setContentsSize(contentsSize().width(), maxSize.height());
verticalScrollBar()->setRange(0, 0); // we see all the contents anyway
}
}
}
+
}
/*!
diff --git a/src/gui/itemviews/qstringlistmodel.cpp b/src/gui/itemviews/qstringlistmodel.cpp
index 8d69ee4ab8..60ff9520ef 100644
--- a/src/gui/itemviews/qstringlistmodel.cpp
+++ b/src/gui/itemviews/qstringlistmodel.cpp
@@ -290,8 +290,9 @@ QStringList QStringListModel::stringList() const
*/
void QStringListModel::setStringList(const QStringList &strings)
{
+ emit beginResetModel();
lst = strings;
- reset();
+ emit endResetModel();
}
/*!
diff --git a/src/gui/itemviews/qtableview.cpp b/src/gui/itemviews/qtableview.cpp
index d8fef5529f..d1022f1734 100644
--- a/src/gui/itemviews/qtableview.cpp
+++ b/src/gui/itemviews/qtableview.cpp
@@ -114,7 +114,7 @@ void QSpanCollection::updateSpan(QSpanCollection::Span *span, int old_height)
}
} else if (old_height > span->height()) {
//remove the span from all the subspans lists that intersect the columns not covered anymore
- Index::iterator it_y = index.lowerBound(-qMax(span->bottom(), span->top())); //qMax usefull if height is 0
+ Index::iterator it_y = index.lowerBound(-qMax(span->bottom(), span->top())); //qMax useful if height is 0
Q_ASSERT(it_y != index.end()); //it_y must exist since the span is in the list
while (-it_y.key() <= span->top() + old_height -1) {
if (-it_y.key() > span->bottom()) {
@@ -1404,7 +1404,7 @@ void QTableView::paintEvent(QPaintEvent *event)
}
if (showGrid) {
- // Find the bottom right (the last rows/coloumns might be hidden)
+ // Find the bottom right (the last rows/columns might be hidden)
while (verticalHeader->isSectionHidden(verticalHeader->logicalIndex(bottom))) --bottom;
QPen old = painter.pen();
painter.setPen(gridPen);
diff --git a/src/gui/kernel/kernel.pri b/src/gui/kernel/kernel.pri
index 2629d7fa13..4261e93438 100644
--- a/src/gui/kernel/kernel.pri
+++ b/src/gui/kernel/kernel.pri
@@ -32,8 +32,6 @@ HEADERS += \
kernel/qshortcutmap_p.h \
kernel/qsizepolicy.h \
kernel/qpalette.h \
- kernel/qsound.h \
- kernel/qsound_p.h \
kernel/qstackedlayout.h \
kernel/qtooltip.h \
kernel/qwhatsthis.h \
@@ -50,7 +48,7 @@ HEADERS += \
kernel/qgesturemanager_p.h \
kernel/qsoftkeymanager_p.h \
kernel/qsoftkeymanager_common_p.h \
- kernel/qguiplatformplugin_p.h
+ kernel/qguiplatformplugin_p.h \
SOURCES += \
kernel/qaction.cpp \
@@ -72,7 +70,6 @@ SOURCES += \
kernel/qpalette.cpp \
kernel/qshortcut.cpp \
kernel/qshortcutmap.cpp \
- kernel/qsound.cpp \
kernel/qstackedlayout.cpp \
kernel/qtooltip.cpp \
kernel/qguivariant.cpp \
@@ -200,7 +197,66 @@ embedded {
}
}
-!embedded:!x11:mac {
+!qpa {
+ HEADERS += \
+ kernel/qsound.h \
+ kernel/qsound_p.h
+
+ SOURCES += \
+ kernel/qsound.cpp
+}
+
+qpa {
+ HEADERS += \
+ kernel/qgenericpluginfactory_qpa.h \
+ kernel/qgenericplugin_qpa.h \
+ kernel/qeventdispatcher_qpa_p.h \
+ kernel/qwindowsysteminterface_qpa.h \
+ kernel/qwindowsysteminterface_qpa_p.h \
+ kernel/qplatformintegration_qpa.h \
+ kernel/qplatformscreen_qpa.h \
+ kernel/qplatformintegrationfactory_qpa_p.h \
+ kernel/qplatformintegrationplugin_qpa.h \
+ kernel/qplatformwindow_qpa.h \
+ kernel/qplatformwindowformat_qpa.h \
+ kernel/qplatformglcontext_qpa.h \
+ kernel/qdesktopwidget_qpa_p.h \
+ kernel/qplatformeventloopintegration_qpa.h \
+ kernel/qplatformcursor_qpa.h
+
+ SOURCES += \
+ kernel/qapplication_qpa.cpp \
+ kernel/qclipboard_qpa.cpp \
+ kernel/qcursor_qpa.cpp \
+ kernel/qdnd_qws.cpp \
+ kernel/qdesktopwidget_qpa.cpp \
+ kernel/qgenericpluginfactory_qpa.cpp \
+ kernel/qgenericplugin_qpa.cpp \
+ kernel/qkeymapper_qws.cpp \
+ kernel/qwidget_qpa.cpp \
+ kernel/qeventdispatcher_qpa.cpp \
+ kernel/qwindowsysteminterface_qpa.cpp \
+ kernel/qplatformintegration_qpa.cpp \
+ kernel/qplatformscreen_qpa.cpp \
+ kernel/qplatformintegrationfactory_qpa.cpp \
+ kernel/qplatformintegrationplugin_qpa.cpp \
+ kernel/qplatformwindow_qpa.cpp \
+ kernel/qplatformwindowformat_qpa.cpp \
+ kernel/qplatformeventloopintegration_qpa.cpp \
+ kernel/qplatformglcontext_qpa.cpp \
+ kernel/qplatformcursor_qpa.cpp
+
+ contains(QT_CONFIG, glib) {
+ SOURCES += \
+ kernel/qeventdispatcher_glib_qpa.cpp
+ HEADERS += \
+ kernel/qeventdispatcher_glib_qpa_p.h
+ QMAKE_CXXFLAGS += $$QT_CFLAGS_GLIB
+ LIBS_PRIVATE +=$$QT_LIBS_GLIB
+ }
+}
+
+!embedded:!qpa:!x11:mac {
SOURCES += \
kernel/qclipboard_mac.cpp \
kernel/qmime_mac.cpp \
diff --git a/src/gui/kernel/mac.pri b/src/gui/kernel/mac.pri
index 153851069e..21acd06e65 100644
--- a/src/gui/kernel/mac.pri
+++ b/src/gui/kernel/mac.pri
@@ -1,4 +1,4 @@
-!x11:!embedded:mac {
+!x11:!embedded:!qpa:mac {
LIBS_PRIVATE += -framework Carbon -lz
*-mwerks:INCLUDEPATH += compat
}
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp
index 1284947d6e..833e80399b 100644
--- a/src/gui/kernel/qapplication.cpp
+++ b/src/gui/kernel/qapplication.cpp
@@ -450,6 +450,9 @@ QPalette *QApplicationPrivate::sys_pal = 0; // default system palette
QPalette *QApplicationPrivate::set_pal = 0; // default palette set by programmer
QGraphicsSystem *QApplicationPrivate::graphics_system = 0; // default graphics system
+#if defined(Q_WS_QPA)
+QPlatformIntegration *QApplicationPrivate::platform_integration = 0;
+#endif
QString QApplicationPrivate::graphics_system_name; // graphics system id - for delayed initialization
bool QApplicationPrivate::runtime_graphics_system = false;
@@ -495,7 +498,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;
@@ -512,7 +515,7 @@ inline bool QApplicationPrivate::isAlien(QWidget *widget)
{
if (!widget)
return false;
-#if defined(Q_WS_QWS)
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA)
return !widget->isWindow()
# ifdef Q_BACKINGSTORE_SUBSURFACES
&& !(widget->d_func()->maybeTopData() && widget->d_func()->maybeTopData()->windowSurface)
@@ -568,7 +571,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) {
@@ -804,6 +807,7 @@ void QApplicationPrivate::construct(
)
{
initResources();
+ graphics_system_name = QLatin1String(qgetenv("QT_DEFAULT_GRAPHICS_SYSTEM"));
qt_is_gui_used = (qt_appType != QApplication::Tty);
process_cmdline();
@@ -964,10 +968,11 @@ void QApplicationPrivate::initialize()
QWidgetPrivate::mapper = new QWidgetMapper;
QWidgetPrivate::allWidgets = new QWidgetSet;
-#if !defined(Q_WS_X11) && !defined(Q_WS_QWS)
+#if !defined(Q_WS_X11) && !defined(Q_WS_QWS) && !defined(Q_WS_QPA)
// initialize the graphics system - on X11 this is initialized inside
// qt_init() in qapplication_x11.cpp because of several reasons.
// On QWS, the graphics system is set by the QScreen plugin.
+ // We don't use graphics systems in Qt QPA
graphics_system = QGraphicsSystemFactory::create(graphics_system_name);
#endif
@@ -1428,10 +1433,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);
@@ -1633,14 +1646,18 @@ QStyle* QApplication::setStyle(const QString& style)
void QApplication::setGraphicsSystem(const QString &system)
{
-#ifdef QT_GRAPHICSSYSTEM_RUNTIME
+#ifdef Q_WS_QPA
+ Q_UNUSED(system);
+#else
+# ifdef QT_GRAPHICSSYSTEM_RUNTIME
if (QApplicationPrivate::graphics_system_name == QLatin1String("runtime")) {
QRuntimeGraphicsSystem *r =
static_cast<QRuntimeGraphicsSystem *>(QApplicationPrivate::graphics_system);
r->setGraphicsSystem(system);
} else
-#endif
+# endif
QApplicationPrivate::graphics_system_name = system;
+#endif
}
/*!
@@ -2786,7 +2803,7 @@ void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave) {
// Update cursor for alien/graphics widgets.
const bool enterOnAlien = (enter && (isAlien(enter) || enter->testAttribute(Qt::WA_DontShowOnScreen)));
-#if defined(Q_WS_X11)
+#if defined(Q_WS_X11) || defined(Q_WS_QPA)
//Whenever we leave an alien widget on X11, we need to reset its nativeParentWidget()'s cursor.
// This is not required on Windows as the cursor is reset on every single mouse move.
QWidget *parentOfLeavingCursor = 0;
@@ -2810,7 +2827,15 @@ void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave) {
if (!parentOfLeavingCursor->window()->graphicsProxyWidget())
#endif
{
+#if defined(Q_WS_X11)
qt_x11_enforce_cursor(parentOfLeavingCursor,true);
+#elif defined(Q_WS_QPA)
+ if (enter == QApplication::desktop()) {
+ qt_qpa_set_cursor(enter, true);
+ } else {
+ qt_qpa_set_cursor(parentOfLeavingCursor, true);
+ }
+#endif
}
}
#endif
@@ -2834,6 +2859,8 @@ void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave) {
qt_x11_enforce_cursor(cursorWidget, true);
#elif defined(Q_OS_SYMBIAN)
qt_symbian_set_cursor(cursorWidget, true);
+#elif defined(Q_WS_QPA)
+ qt_qpa_set_cursor(cursorWidget, true);
#endif
}
}
@@ -3138,7 +3165,7 @@ bool QApplicationPrivate::sendMouseEvent(QWidget *receiver, QMouseEvent *event,
return result;
}
-#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_WS_MAC)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_WS_MAC) || defined(Q_WS_QPA)
/*
This function should only be called when the widget changes visibility, i.e.
when the \a widget is shown, hidden or deleted. This function does nothing
@@ -3150,7 +3177,7 @@ extern QWidget *qt_button_down;
void QApplicationPrivate::sendSyntheticEnterLeave(QWidget *widget)
{
#ifndef QT_NO_CURSOR
-#ifdef Q_WS_QWS
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA)
if (!widget || widget->isWindow())
return;
#else
@@ -6075,10 +6102,17 @@ QPixmap QApplicationPrivate::getPixmapCursor(Qt::CursorShape cshape)
default:
break;
}
+#else
+ Q_UNUSED(cshape);
#endif
return QPixmap();
}
+QString QApplicationPrivate::qmljsDebugArgumentsString()
+{
+ return qmljs_debug_arguments;
+}
+
QT_END_NAMESPACE
#include "moc_qapplication.cpp"
diff --git a/src/gui/kernel/qapplication_mac.mm b/src/gui/kernel/qapplication_mac.mm
index c3f3e74a8a..3aafeb4dff 100644
--- a/src/gui/kernel/qapplication_mac.mm
+++ b/src/gui/kernel/qapplication_mac.mm
@@ -549,7 +549,7 @@ void qt_mac_update_os_settings()
FontMap("QTipLabel", kThemeSmallSystemFont),
FontMap("QLabel", kThemeSystemFont),
FontMap("QToolButton", kThemeSmallSystemFont),
- FontMap("QMenuItem", kThemeMenuItemCmdKeyFont), // It doesn't exist, but its unique.
+ FontMap("QMenuItem", kThemeMenuItemFont), // It doesn't exist, but its unique.
FontMap("QComboLineEdit", kThemeViewsFont), // It doesn't exist, but its unique.
FontMap("QSmallFont", kThemeSmallSystemFont), // It doesn't exist, but its unique.
FontMap("QMiniFont", kThemeMiniSystemFont), // It doesn't exist, but its unique.
@@ -1246,7 +1246,7 @@ void qt_init(QApplicationPrivate *priv, int)
qt_redirectNSApplicationSendEvent();
QMacCocoaAutoReleasePool pool;
- NSObject *oldDelegate = [cocoaApp delegate];
+ id oldDelegate = [cocoaApp delegate];
QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) *newDelegate = [QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) sharedDelegate];
Q_ASSERT(newDelegate);
[newDelegate setQtPrivate:priv];
diff --git a/src/gui/kernel/qapplication_p.h b/src/gui/kernel/qapplication_p.h
index 636829e07e..7b49999889 100644
--- a/src/gui/kernel/qapplication_p.h
+++ b/src/gui/kernel/qapplication_p.h
@@ -65,8 +65,10 @@
#include "QtCore/qhash.h"
#include "QtCore/qpointer.h"
#include "private/qcoreapplication_p.h"
-#include "private/qshortcutmap_p.h"
+#include "QtGui/private/qshortcutmap_p.h"
#include <private/qthread_p.h>
+#include "QtCore/qpoint.h"
+#include <QTime>
#ifdef Q_WS_QWS
#include "QtGui/qscreen_qws.h"
#include <private/qgraphicssystem_qws_p.h>
@@ -74,6 +76,11 @@
#ifdef Q_OS_SYMBIAN
#include <w32std.h>
#endif
+#ifdef Q_WS_QPA
+#include <QWindowSystemInterface>
+#include "qwindowsysteminterface_qpa_p.h"
+#include "QtGui/qplatformintegration_qpa.h"
+#endif
QT_BEGIN_NAMESPACE
@@ -312,10 +319,18 @@ public:
static QString desktopStyleKey();
static QGraphicsSystem *graphicsSystem()
-#if !defined(Q_WS_QWS)
- { return graphics_system; }
-#else
+#if defined(Q_WS_QWS)
{ return QScreen::instance()->graphicsSystem(); }
+#else
+ { return graphics_system; }
+#endif
+
+#if defined(Q_WS_QPA)
+ static QPlatformIntegration *platformIntegration()
+ { return platform_integration; }
+
+ static QAbstractEventDispatcher *qt_qpa_core_dispatcher()
+ { return QCoreApplication::instance()->d_func()->threadData->eventDispatcher; }
#endif
void createEventDispatcher();
@@ -418,6 +433,9 @@ public:
static QGraphicsSystem *graphics_system;
static QString graphics_system_name;
static bool runtime_graphics_system;
+#ifdef Q_WS_QPA
+ static QPlatformIntegration *platform_integration;
+#endif
private:
static QFont *app_font; // private for a reason! Always use QApplication::font() instead!
@@ -446,7 +464,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;
@@ -476,6 +495,30 @@ public:
static bool qt_mac_apply_settings();
#endif
+#ifdef Q_WS_QPA
+ static void processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent *e);
+ static void processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent *e);
+ static void processWheelEvent(QWindowSystemInterfacePrivate::WheelEvent *e);
+ static void processTouchEvent(QWindowSystemInterfacePrivate::TouchEvent *e);
+
+ static void processCloseEvent(QWindowSystemInterfacePrivate::CloseEvent *e);
+
+ static void processGeometryChangeEvent(QWindowSystemInterfacePrivate::GeometryChangeEvent *e);
+
+ static void processEnterEvent(QWindowSystemInterfacePrivate::EnterEvent *e);
+ static void processLeaveEvent(QWindowSystemInterfacePrivate::LeaveEvent *e);
+
+ static void processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *e);
+
+// static void reportScreenCount(int count);
+ static void reportScreenCount(QWindowSystemInterfacePrivate::ScreenCountEvent *e);
+// static void reportGeometryChange(int screenIndex);
+ static void reportGeometryChange(QWindowSystemInterfacePrivate::ScreenGeometryEvent *e);
+// static void reportAvailableGeometryChange(int screenIndex);
+ static void reportAvailableGeometryChange(QWindowSystemInterfacePrivate::ScreenAvailableGeometryEvent *e);
+
+#endif
+
#ifdef Q_WS_QWS
QPointer<QWSManager> last_manager;
QWSServerCleaner qwsServerCleaner;
@@ -521,7 +564,7 @@ public:
void _q_aboutToQuit();
#endif
-#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC) || defined(Q_WS_QPA)
void sendSyntheticEnterLeave(QWidget *widget);
#endif
@@ -629,6 +672,8 @@ Q_GUI_EXPORT void qt_translateRawTouchEvent(QWidget *window,
extern void qt_x11_enforce_cursor(QWidget *);
#elif defined(Q_OS_SYMBIAN)
extern void qt_symbian_set_cursor(QWidget *, bool);
+#elif defined (Q_WS_QPA)
+ extern void qt_qpa_set_cursor(QWidget *, bool);
#endif
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qapplication_qpa.cpp b/src/gui/kernel/qapplication_qpa.cpp
new file mode 100644
index 0000000000..ece035c9c6
--- /dev/null
+++ b/src/gui/kernel/qapplication_qpa.cpp
@@ -0,0 +1,928 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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_p.h"
+#include "qcolormap.h"
+#include "qpixmapcache.h"
+#if !defined(QT_NO_GLIB)
+#include "qeventdispatcher_glib_qpa_p.h"
+#endif
+#include "qeventdispatcher_qpa_p.h"
+#ifndef QT_NO_CURSOR
+#include "private/qcursor_p.h"
+#endif
+
+#include "private/qwidget_p.h"
+
+#include "qgenericpluginfactory_qpa.h"
+#include "qplatformintegrationfactory_qpa_p.h"
+#include <qdesktopwidget.h>
+
+#include <qinputcontext.h>
+#include <QPlatformCursor>
+#include <qdebug.h>
+#include <QWindowSystemInterface>
+#include "qwindowsysteminterface_qpa_p.h"
+#include <QPlatformIntegration>
+
+#include "qdesktopwidget_qpa_p.h"
+
+QT_BEGIN_NAMESPACE
+
+static QString appName;
+static QString appFont;
+
+QWidget *qt_button_down = 0; // widget got last button-down
+
+static bool app_do_modal = false;
+extern QWidgetList *qt_modal_stack; // stack of modal widgets
+
+int qt_last_x = 0;
+int qt_last_y = 0;
+QPointer<QWidget> qt_last_mouse_receiver = 0;
+
+static Qt::KeyboardModifiers modifiers = Qt::NoModifier;
+static Qt::MouseButtons buttons = Qt::NoButton;
+static ulong mousePressTime;
+static Qt::MouseButton mousePressButton = Qt::NoButton;
+static int mousePressX;
+static int mousePressY;
+static int mouse_double_click_distance = 5;
+
+void QApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *e)
+{
+ switch(e->type) {
+ case QWindowSystemInterfacePrivate::Mouse:
+ QApplicationPrivate::processMouseEvent(static_cast<QWindowSystemInterfacePrivate::MouseEvent *>(e));
+ break;
+ case QWindowSystemInterfacePrivate::Wheel:
+ QApplicationPrivate::processWheelEvent(static_cast<QWindowSystemInterfacePrivate::WheelEvent *>(e));
+ break;
+ case QWindowSystemInterfacePrivate::Key:
+ QApplicationPrivate::processKeyEvent(static_cast<QWindowSystemInterfacePrivate::KeyEvent *>(e));
+ break;
+ case QWindowSystemInterfacePrivate::Touch:
+ QApplicationPrivate::processTouchEvent(static_cast<QWindowSystemInterfacePrivate::TouchEvent *>(e));
+ break;
+ case QWindowSystemInterfacePrivate::GeometryChange:
+ QApplicationPrivate::processGeometryChangeEvent(static_cast<QWindowSystemInterfacePrivate::GeometryChangeEvent*>(e));
+ break;
+ case QWindowSystemInterfacePrivate::Enter:
+ QApplicationPrivate::processEnterEvent(static_cast<QWindowSystemInterfacePrivate::EnterEvent *>(e));
+ break;
+ case QWindowSystemInterfacePrivate::Leave:
+ QApplicationPrivate::processLeaveEvent(static_cast<QWindowSystemInterfacePrivate::LeaveEvent *>(e));
+ break;
+ case QWindowSystemInterfacePrivate::Close:
+ QApplicationPrivate::processCloseEvent(
+ static_cast<QWindowSystemInterfacePrivate::CloseEvent *>(e));
+ break;
+ case QWindowSystemInterfacePrivate::ScreenCountChange:
+ QApplicationPrivate::reportScreenCount(
+ static_cast<QWindowSystemInterfacePrivate::ScreenCountEvent *>(e));
+ break;
+ case QWindowSystemInterfacePrivate::ScreenGeometry:
+ QApplicationPrivate::reportGeometryChange(
+ static_cast<QWindowSystemInterfacePrivate::ScreenGeometryEvent *>(e));
+ break;
+ case QWindowSystemInterfacePrivate::ScreenAvailableGeometry:
+ QApplicationPrivate::reportAvailableGeometryChange(
+ static_cast<QWindowSystemInterfacePrivate::ScreenAvailableGeometryEvent *>(e));
+ break;
+ default:
+ qWarning() << "Unknown user input event type:" << e->type;
+ break;
+ }
+}
+
+QString QApplicationPrivate::appName() const
+{
+ return QT_PREPEND_NAMESPACE(appName);
+}
+
+void QApplicationPrivate::createEventDispatcher()
+{
+ Q_Q(QApplication);
+#if !defined(QT_NO_GLIB)
+ if (qgetenv("QT_NO_GLIB").isEmpty() && QEventDispatcherGlib::versionSupported())
+ eventDispatcher = new QPAEventDispatcherGlib(q);
+ else
+#endif
+ eventDispatcher = new QEventDispatcherQPA(q);
+}
+
+static bool qt_try_modal(QWidget *widget, QEvent::Type type)
+{
+ QWidget * top = 0;
+
+ if (QApplicationPrivate::tryModalHelper(widget, &top))
+ return true;
+
+ bool block_event = false;
+ bool paint_event = false;
+
+ switch (type) {
+#if 0
+ case QEvent::Focus:
+ if (!static_cast<QWSFocusEvent*>(event)->simpleData.get_focus)
+ break;
+ // drop through
+#endif
+ case QEvent::MouseButtonPress: // disallow mouse/key events
+ case QEvent::MouseButtonRelease:
+ case QEvent::MouseMove:
+ case QEvent::KeyPress:
+ case QEvent::KeyRelease:
+ block_event = true;
+ break;
+ default:
+ break;
+ }
+
+ if ((block_event || paint_event) && top->parentWidget() == 0)
+ top->raise();
+
+ return !block_event;
+}
+
+
+
+void QApplicationPrivate::enterModal_sys(QWidget *widget)
+{
+ if (!qt_modal_stack)
+ qt_modal_stack = new QWidgetList;
+ qt_modal_stack->insert(0, widget);
+ app_do_modal = true;
+}
+
+void QApplicationPrivate::leaveModal_sys(QWidget *widget )
+{
+ if (qt_modal_stack && qt_modal_stack->removeAll(widget)) {
+ if (qt_modal_stack->isEmpty()) {
+ delete qt_modal_stack;
+ qt_modal_stack = 0;
+ }
+ }
+ app_do_modal = qt_modal_stack != 0;
+}
+
+bool QApplicationPrivate::modalState()
+{
+ return app_do_modal;
+}
+
+void QApplicationPrivate::closePopup(QWidget *popup)
+{
+ Q_Q(QApplication);
+ if (!popupWidgets)
+ return;
+ popupWidgets->removeAll(popup);
+
+//###
+// if (popup == qt_popup_down) {
+// qt_button_down = 0;
+// qt_popup_down = 0;
+// }
+
+ if (QApplicationPrivate::popupWidgets->count() == 0) { // this was the last popup
+ delete QApplicationPrivate::popupWidgets;
+ QApplicationPrivate::popupWidgets = 0;
+
+ //### replay mouse event?
+
+ //### transfer/release mouse grab
+
+ //### transfer/release keyboard grab
+
+ //give back focus
+
+ if (active_window) {
+ if (QWidget *fw = active_window->focusWidget()) {
+ if (fw != QApplication::focusWidget()) {
+ fw->setFocus(Qt::PopupFocusReason);
+ } else {
+ QFocusEvent e(QEvent::FocusIn, Qt::PopupFocusReason);
+ q->sendEvent(fw, &e);
+ }
+ }
+ }
+
+ } else {
+ // A popup was closed, so the previous popup gets the focus.
+
+ QWidget* aw = QApplicationPrivate::popupWidgets->last();
+ if (QWidget *fw = aw->focusWidget())
+ fw->setFocus(Qt::PopupFocusReason);
+
+ //### regrab the keyboard and mouse in case 'popup' lost the grab
+
+
+ }
+
+}
+
+static int openPopupCount = 0;
+void QApplicationPrivate::openPopup(QWidget *popup)
+{
+ openPopupCount++;
+ if (!popupWidgets) { // create list
+ popupWidgets = new QWidgetList;
+
+ /* only grab if you are the first/parent popup */
+ //#### ->grabMouse(popup,true);
+ //#### ->grabKeyboard(popup,true);
+ //### popupGrabOk = true;
+ }
+ popupWidgets->append(popup); // add to end of list
+
+ // popups are not focus-handled by the window system (the first
+ // popup grabbed the keyboard), so we have to do that manually: A
+ // new popup gets the focus
+ if (popup->focusWidget()) {
+ popup->focusWidget()->setFocus(Qt::PopupFocusReason);
+ } else if (popupWidgets->count() == 1) { // this was the first popup
+ if (QWidget *fw = QApplication::focusWidget()) {
+ QFocusEvent e(QEvent::FocusOut, Qt::PopupFocusReason);
+ QApplication::sendEvent(fw, &e);
+ }
+ }
+}
+
+void QApplicationPrivate::initializeMultitouch_sys()
+{
+}
+
+void QApplicationPrivate::cleanupMultitouch_sys()
+{
+}
+
+void QApplicationPrivate::initializeWidgetPaletteHash()
+{
+}
+
+void QApplication::setCursorFlashTime(int msecs)
+{
+ QApplicationPrivate::cursor_flash_time = msecs;
+}
+
+int QApplication::cursorFlashTime()
+{
+ return QApplicationPrivate::cursor_flash_time;
+}
+
+void QApplication::setDoubleClickInterval(int ms)
+{
+ QApplicationPrivate::mouse_double_click_time = ms;
+}
+
+int QApplication::doubleClickInterval()
+{
+ return QApplicationPrivate::mouse_double_click_time;
+}
+
+void QApplication::setKeyboardInputInterval(int ms)
+{
+ QApplicationPrivate::keyboard_input_time = ms;
+}
+
+int QApplication::keyboardInputInterval()
+{
+ return QApplicationPrivate::keyboard_input_time;
+}
+
+#ifndef QT_NO_WHEELEVENT
+void QApplication::setWheelScrollLines(int lines)
+{
+ QApplicationPrivate::wheel_scroll_lines = lines;
+}
+
+int QApplication::wheelScrollLines()
+{
+ return QApplicationPrivate::wheel_scroll_lines;
+}
+#endif
+
+void QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable)
+{
+ switch (effect) {
+ case Qt::UI_AnimateMenu:
+ QApplicationPrivate::animate_menu = enable;
+ break;
+ case Qt::UI_FadeMenu:
+ if (enable)
+ QApplicationPrivate::animate_menu = true;
+ QApplicationPrivate::fade_menu = enable;
+ break;
+ case Qt::UI_AnimateCombo:
+ QApplicationPrivate::animate_combo = enable;
+ break;
+ case Qt::UI_AnimateTooltip:
+ QApplicationPrivate::animate_tooltip = enable;
+ break;
+ case Qt::UI_FadeTooltip:
+ if (enable)
+ QApplicationPrivate::animate_tooltip = true;
+ QApplicationPrivate::fade_tooltip = enable;
+ break;
+ case Qt::UI_AnimateToolBox:
+ QApplicationPrivate::animate_toolbox = enable;
+ break;
+ default:
+ QApplicationPrivate::animate_ui = enable;
+ break;
+ }
+}
+
+bool QApplication::isEffectEnabled(Qt::UIEffect effect)
+{
+ if (QColormap::instance().depth() < 16 || !QApplicationPrivate::animate_ui)
+ return false;
+
+ switch(effect) {
+ case Qt::UI_AnimateMenu:
+ return QApplicationPrivate::animate_menu;
+ case Qt::UI_FadeMenu:
+ return QApplicationPrivate::fade_menu;
+ case Qt::UI_AnimateCombo:
+ return QApplicationPrivate::animate_combo;
+ case Qt::UI_AnimateTooltip:
+ return QApplicationPrivate::animate_tooltip;
+ case Qt::UI_FadeTooltip:
+ return QApplicationPrivate::fade_tooltip;
+ case Qt::UI_AnimateToolBox:
+ return QApplicationPrivate::animate_toolbox;
+ default:
+ return QApplicationPrivate::animate_ui;
+ }
+}
+
+#ifndef QT_NO_CURSOR
+void QApplication::setOverrideCursor(const QCursor &cursor)
+{
+ qApp->d_func()->cursor_list.prepend(cursor);
+ qt_qpa_set_cursor(0, false);
+}
+
+void QApplication::restoreOverrideCursor()
+{
+ if (qApp->d_func()->cursor_list.isEmpty())
+ return;
+ qApp->d_func()->cursor_list.removeFirst();
+ qt_qpa_set_cursor(0, false);
+}
+
+#endif// QT_NO_CURSOR
+
+QWidget *QApplication::topLevelAt(const QPoint &pos)
+{
+ QPlatformIntegration *pi = QApplicationPrivate::platformIntegration();
+
+ QList<QPlatformScreen *> screens = pi->screens();
+ QList<QPlatformScreen *>::const_iterator screen = screens.constBegin();
+ QList<QPlatformScreen *>::const_iterator end = screens.constEnd();
+
+ // The first screen in a virtual environment should know about all top levels
+ if (pi->isVirtualDesktop()) {
+ QWidget *w = (*screen)->topLevelAt(pos);
+ return w;
+ }
+
+ while (screen != end) {
+ if ((*screen)->geometry().contains(pos))
+ return (*screen)->topLevelAt(pos);
+ ++screen;
+ }
+ return 0;
+}
+
+void QApplication::beep()
+{
+}
+
+void QApplication::alert(QWidget *, int)
+{
+}
+
+static void init_platform(const QString &name)
+{
+ QApplicationPrivate::platform_integration = QPlatformIntegrationFactory::create(name);
+ if (!QApplicationPrivate::platform_integration) {
+ QStringList keys = QPlatformIntegrationFactory::keys();
+ QString fatalMessage =
+ QString::fromLatin1("Failed to load platform plugin \"%1\". Available platforms are: \n").arg(name);
+ foreach(QString key, keys) {
+ fatalMessage.append(key + QString::fromLatin1("\n"));
+ }
+ qFatal("%s", fatalMessage.toLocal8Bit().constData());
+
+ }
+
+}
+
+
+static void cleanup_platform()
+{
+ delete QApplicationPrivate::platform_integration;
+ QApplicationPrivate::platform_integration = 0;
+}
+
+static void init_plugins(const QList<QByteArray> pluginList)
+{
+ for (int i = 0; i < pluginList.count(); ++i) {
+ QByteArray pluginSpec = pluginList.at(i);
+ qDebug() << "init_plugins" << i << pluginSpec;
+ int colonPos = pluginSpec.indexOf(':');
+ QObject *plugin;
+ if (colonPos < 0)
+ plugin = QGenericPluginFactory::create(QLatin1String(pluginSpec), QString());
+ else
+ plugin = QGenericPluginFactory::create(QLatin1String(pluginSpec.mid(0, colonPos)),
+ QLatin1String(pluginSpec.mid(colonPos+1)));
+ qDebug() << " created" << plugin;
+ }
+}
+
+#ifndef QT_NO_QWS_INPUTMETHODS
+class QDummyInputContext : public QInputContext
+{
+public:
+ explicit QDummyInputContext(QObject* parent = 0) : QInputContext(parent) {}
+ ~QDummyInputContext() {}
+ QString identifierName() { return QString(); }
+ QString language() { return QString(); }
+
+ void reset() {}
+ bool isComposing() const { return false; }
+
+};
+#endif // QT_NO_QWS_INPUTMETHODS
+
+void qt_init(QApplicationPrivate *priv, int type)
+{
+ Q_UNUSED(type);
+
+ qApp->setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
+ char *p;
+ char **argv = priv->argv;
+ int argc = priv->argc;
+
+ if (argv && *argv) { //apparently, we allow people to pass 0 on the other platforms
+ p = strrchr(argv[0], '/');
+ appName = QString::fromLocal8Bit(p ? p + 1 : argv[0]);
+ }
+
+ QList<QByteArray> pluginList;
+ QString platformName = QLatin1String(qgetenv("QT_QPA_PLATFORM"));
+
+ // Get command line params
+
+ int j = argc ? 1 : 0;
+ for (int i=1; i<argc; i++) {
+ if (argv[i] && *argv[i] != '-') {
+ argv[j++] = argv[i];
+ continue;
+ }
+ QByteArray arg = argv[i];
+ if (arg == "-fn" || arg == "-font") {
+ if (++i < argc)
+ appFont = QString::fromLocal8Bit(argv[i]);
+ } else if (arg == "-platform") {
+ if (++i < argc)
+ platformName = QLatin1String(argv[i]);
+ } else if (arg == "-plugin") {
+ if (++i < argc)
+ pluginList << argv[i];
+ } else {
+ argv[j++] = argv[i];
+ }
+ }
+
+ if (j < priv->argc) {
+ priv->argv[j] = 0;
+ priv->argc = j;
+ }
+
+#if 0
+ QByteArray pluginEnv = qgetenv("QT_QPA_PLUGINS");
+ if (!pluginEnv.isEmpty()) {
+ pluginList.append(pluginEnv.split(';'));
+ }
+#endif
+
+ init_platform(platformName);
+ init_plugins(pluginList);
+
+ QColormap::initialize();
+ QFont::initialize();
+#ifndef QT_NO_CURSOR
+// QCursorData::initialize();
+#endif
+
+ qApp->setObjectName(appName);
+
+#ifndef QT_NO_QWS_INPUTMETHODS
+ qApp->setInputContext(new QDummyInputContext(qApp));
+#endif
+}
+
+void qt_cleanup()
+{
+ cleanup_platform();
+
+ QPixmapCache::clear();
+#ifndef QT_NO_CURSOR
+ QCursorData::cleanup();
+#endif
+ QFont::cleanup();
+ QColormap::cleanup();
+ delete QApplicationPrivate::inputContext;
+ QApplicationPrivate::inputContext = 0;
+
+ QApplicationPrivate::active_window = 0; //### this should not be necessary
+}
+
+
+#ifdef QT3_SUPPORT
+void QApplication::setMainWidget(QWidget *mainWidget)
+{
+ QApplicationPrivate::main_widget = mainWidget;
+ if (QApplicationPrivate::main_widget && windowIcon().isNull()
+ && QApplicationPrivate::main_widget->testAttribute(Qt::WA_SetWindowIcon))
+ setWindowIcon(QApplicationPrivate::main_widget->windowIcon());
+}
+#endif
+
+void QApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent *e)
+{
+ // qDebug() << "handleMouseEvent" << tlw << ev.pos() << ev.globalPos() << hex << ev.buttons();
+ static QWeakPointer<QWidget> implicit_mouse_grabber;
+
+ QEvent::Type type;
+ // move first
+ Qt::MouseButtons stateChange = e->buttons ^ buttons;
+ if (e->globalPos != QPoint(qt_last_x, qt_last_y) && (stateChange != Qt::NoButton)) {
+ QWindowSystemInterfacePrivate::MouseEvent * newMouseEvent =
+ new QWindowSystemInterfacePrivate::MouseEvent(e->widget.data(), e->timestamp, e->localPos, e->globalPos, e->buttons);
+ QWindowSystemInterfacePrivate::windowSystemEventQueue.prepend(newMouseEvent); // just in case the move triggers a new event loop
+ stateChange = Qt::NoButton;
+ }
+
+ QWidget * tlw = e->widget.data();
+
+ QPoint localPoint = e->localPos;
+ QPoint globalPoint = e->globalPos;
+ QWidget *mouseWindow = tlw;
+
+ Qt::MouseButton button = Qt::NoButton;
+
+
+ if (qt_last_x != globalPoint.x() || qt_last_y != globalPoint.y()) {
+ type = QEvent::MouseMove;
+ qt_last_x = globalPoint.x();
+ qt_last_y = globalPoint.y();
+ if (qAbs(globalPoint.x() - mousePressX) > mouse_double_click_distance||
+ qAbs(globalPoint.y() - mousePressY) > mouse_double_click_distance)
+ mousePressButton = Qt::NoButton;
+ }
+ else { // check to see if a new button has been pressed/released
+ for (int check = Qt::LeftButton;
+ check <= Qt::XButton2;
+ check = check << 1) {
+ if (check & stateChange) {
+ button = Qt::MouseButton(check);
+ break;
+ }
+ }
+ if (button == Qt::NoButton) {
+ // Ignore mouse events that don't change the current state
+ return;
+ }
+ buttons = e->buttons;
+ if (button & e->buttons) {
+ if ((e->timestamp - mousePressTime) < static_cast<ulong>(QApplication::doubleClickInterval()) && button == mousePressButton) {
+ type = QEvent::MouseButtonDblClick;
+ mousePressButton = Qt::NoButton;
+ }
+ else {
+ type = QEvent::MouseButtonPress;
+ mousePressTime = e->timestamp;
+ mousePressButton = button;
+ mousePressX = qt_last_x;
+ mousePressY = qt_last_y;
+ }
+ }
+ else
+ type = QEvent::MouseButtonRelease;
+ }
+
+ if (self->inPopupMode()) {
+ //popup mouse handling is magical...
+ mouseWindow = qApp->activePopupWidget();
+
+ implicit_mouse_grabber.clear();
+ //### how should popup mode and implicit mouse grab interact?
+
+ } else if (tlw && app_do_modal && !qt_try_modal(tlw, QEvent::MouseButtonRelease) ) {
+ //even if we're blocked by modality, we should deliver the mouse release event..
+ //### this code is not completely correct: multiple buttons can be pressed simultaneously
+ if (!(implicit_mouse_grabber && buttons == Qt::NoButton)) {
+ //qDebug() << "modal blocked mouse event to" << tlw;
+ return;
+ }
+ }
+
+ // find the tlw if we didn't get it from the plugin
+ if (!mouseWindow) {
+ mouseWindow = QApplication::topLevelAt(globalPoint);
+ }
+
+ if (!mouseWindow && !implicit_mouse_grabber)
+ mouseWindow = QApplication::desktop();
+
+ if (mouseWindow && mouseWindow != tlw) {
+ //we did not get a sensible localPoint from the window system, so let's calculate it
+ localPoint = mouseWindow->mapFromGlobal(globalPoint);
+ }
+
+ // which child should have it?
+ QWidget *mouseWidget = mouseWindow;
+ if (mouseWindow) {
+ QWidget *w = mouseWindow->childAt(localPoint);
+ if (w) {
+ mouseWidget = w;
+ }
+ }
+
+ //handle implicit mouse grab
+ if (type == QEvent::MouseButtonPress && !implicit_mouse_grabber) {
+ implicit_mouse_grabber = mouseWidget;
+
+ Q_ASSERT(mouseWindow);
+ mouseWindow->activateWindow(); //focus
+ } else if (implicit_mouse_grabber) {
+ mouseWidget = implicit_mouse_grabber.data();
+ mouseWindow = mouseWidget->window();
+ if (mouseWindow != tlw)
+ localPoint = mouseWindow->mapFromGlobal(globalPoint);
+ }
+
+ Q_ASSERT(mouseWidget);
+
+ //localPoint is local to mouseWindow, but it needs to be local to mouseWidget
+ localPoint = mouseWidget->mapFrom(mouseWindow, localPoint);
+
+ if (buttons == Qt::NoButton) {
+ //qDebug() << "resetting mouse grabber";
+ implicit_mouse_grabber.clear();
+ }
+
+ if (mouseWidget != qt_last_mouse_receiver) {
+ dispatchEnterLeave(mouseWidget, qt_last_mouse_receiver);
+ qt_last_mouse_receiver = mouseWidget;
+ }
+
+ // Remember, we might enter a modal event loop when sending the event,
+ // so think carefully before adding code below this point.
+
+ // qDebug() << "sending mouse ev." << ev.type() << localPoint << globalPoint << ev.button() << ev.buttons() << mouseWidget << "mouse grabber" << implicit_mouse_grabber;
+
+ QMouseEvent ev(type, localPoint, globalPoint, button, buttons, modifiers);
+
+ QList<QWeakPointer<QPlatformCursor> > cursors = QPlatformCursorPrivate::getInstances();
+ foreach (QWeakPointer<QPlatformCursor> cursor, cursors) {
+ if (cursor)
+ cursor.data()->pointerEvent(ev);
+ }
+
+ QApplication::sendSpontaneousEvent(mouseWidget, &ev);
+}
+
+
+//### there's a lot of duplicated logic here -- refactoring required!
+
+void QApplicationPrivate::processWheelEvent(QWindowSystemInterfacePrivate::WheelEvent *e)
+{
+// QPoint localPoint = ev.pos();
+ QPoint globalPoint = e->globalPos;
+// bool trustLocalPoint = !!tlw; //is there something the local point can be local to?
+ QWidget *mouseWidget;
+
+ qt_last_x = globalPoint.x();
+ qt_last_y = globalPoint.y();
+
+ QWidget *mouseWindow = e->widget.data();
+
+ // find the tlw if we didn't get it from the plugin
+ if (!mouseWindow) {
+ mouseWindow = QApplication::topLevelAt(globalPoint);
+ }
+
+ if (!mouseWindow)
+ return;
+
+ mouseWidget = mouseWindow;
+
+ if (app_do_modal && !qt_try_modal(mouseWindow, QEvent::Wheel) ) {
+ qDebug() << "modal blocked wheel event" << mouseWindow;
+ return;
+ }
+ QPoint p = mouseWindow->mapFromGlobal(globalPoint);
+ QWidget *w = mouseWindow->childAt(p);
+ if (w) {
+ mouseWidget = w;
+ p = mouseWidget->mapFromGlobal(globalPoint);
+ }
+
+ QWheelEvent ev(p, globalPoint, e->delta, buttons, modifiers,
+ e->orient);
+ QApplication::sendSpontaneousEvent(mouseWidget, &ev);
+}
+
+
+
+// Remember, Qt convention is: keyboard state is state *before*
+
+void QApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent *e)
+{
+ QWidget *focusW = 0;
+ if (self->inPopupMode()) {
+ QWidget *popupW = qApp->activePopupWidget();
+ focusW = popupW->focusWidget() ? popupW->focusWidget() : popupW;
+ }
+ if (!focusW)
+ focusW = QApplication::focusWidget();
+ if (!focusW) {
+ focusW = e->widget.data();
+ }
+ if (!focusW)
+ focusW = QApplication::activeWindow();
+
+ //qDebug() << "handleKeyEvent" << hex << e->key() << e->modifiers() << e->text() << "widget" << focusW;
+
+ if (!focusW)
+ return;
+ if (app_do_modal && !qt_try_modal(focusW, e->keyType))
+ return;
+
+ modifiers = e->modifiers;
+ QKeyEvent ev(e->keyType, e->key, e->modifiers, e->unicode, e->repeat, e->repeatCount);
+ QApplication::sendSpontaneousEvent(focusW, &ev);
+}
+
+void QApplicationPrivate::processEnterEvent(QWindowSystemInterfacePrivate::EnterEvent *e)
+{
+ QApplicationPrivate::dispatchEnterLeave(e->enter.data(),0);
+ qt_last_mouse_receiver = e->enter.data();
+}
+
+void QApplicationPrivate::processLeaveEvent(QWindowSystemInterfacePrivate::LeaveEvent *e)
+{
+ QApplicationPrivate::dispatchEnterLeave(0,qt_last_mouse_receiver);
+
+ if (e->leave.data() && !e->leave.data()->isAncestorOf(qt_last_mouse_receiver)) //(???) this should not happen
+ QApplicationPrivate::dispatchEnterLeave(0, e->leave.data());
+ qt_last_mouse_receiver = 0;
+
+}
+
+
+void QApplicationPrivate::processGeometryChangeEvent(QWindowSystemInterfacePrivate::GeometryChangeEvent *e)
+{
+ if (e->tlw.isNull())
+ return;
+ QWidget *tlw = e->tlw.data();
+ if (!tlw->isWindow())
+ return; //geo of native child widgets is controlled by lighthouse
+ //so we already have sent the events; besides this new rect
+ //is not mapped to parent
+
+ QRect newRect = e->newGeometry;
+ QRect cr(tlw->geometry());
+ bool isResize = cr.size() != newRect.size();
+ bool isMove = cr.topLeft() != newRect.topLeft();
+ tlw->data->crect = newRect;
+ if (isResize) {
+ QResizeEvent e(tlw->data->crect.size(), cr.size());
+ QApplication::sendSpontaneousEvent(tlw, &e);
+ tlw->update();
+ }
+
+ if (isMove) {
+ //### frame geometry
+ QMoveEvent e(tlw->data->crect.topLeft(), cr.topLeft());
+ QApplication::sendSpontaneousEvent(tlw, &e);
+ }
+}
+
+void QApplicationPrivate::processCloseEvent(QWindowSystemInterfacePrivate::CloseEvent *e)
+{
+ if (e->topLevel.isNull()) {
+ //qDebug() << "QApplicationPrivate::processCloseEvent NULL";
+ return;
+ }
+ e->topLevel.data()->d_func()->close_helper(QWidgetPrivate::CloseWithSpontaneousEvent);
+}
+
+void QApplicationPrivate::processTouchEvent(QWindowSystemInterfacePrivate::TouchEvent *e)
+{
+ translateRawTouchEvent(e->widget.data(), e->devType, e->points);
+}
+
+void QApplicationPrivate::reportScreenCount(QWindowSystemInterfacePrivate::ScreenCountEvent *e)
+{
+ // This operation only makes sense after the QApplication constructor runs
+ if (QCoreApplication::startingUp())
+ return;
+
+ QApplication::desktop()->d_func()->updateScreenList();
+ // signal anything listening for creation or deletion of screens
+ QDesktopWidget *desktop = QApplication::desktop();
+ emit desktop->screenCountChanged(e->count);
+}
+
+void QApplicationPrivate::reportGeometryChange(QWindowSystemInterfacePrivate::ScreenGeometryEvent *e)
+{
+ // This operation only makes sense after the QApplication constructor runs
+ if (QCoreApplication::startingUp())
+ return;
+
+ QApplication::desktop()->d_func()->updateScreenList();
+
+ // signal anything listening for screen geometry changes
+ QDesktopWidget *desktop = QApplication::desktop();
+ emit desktop->resized(e->index);
+
+ // make sure maximized and fullscreen windows are updated
+ QWidgetList list = QApplication::topLevelWidgets();
+ for (int i = list.size() - 1; i >= 0; --i) {
+ QWidget *w = list.at(i);
+ if (w->isFullScreen())
+ w->d_func()->setFullScreenSize_helper();
+ else if (w->isMaximized())
+ w->d_func()->setMaxWindowState_helper();
+ }
+}
+
+void QApplicationPrivate::reportAvailableGeometryChange(
+ QWindowSystemInterfacePrivate::ScreenAvailableGeometryEvent *e)
+{
+ // This operation only makes sense after the QApplication constructor runs
+ if (QCoreApplication::startingUp())
+ return;
+
+ QApplication::desktop()->d_func()->updateScreenList();
+
+ // signal anything listening for screen geometry changes
+ QDesktopWidget *desktop = QApplication::desktop();
+ emit desktop->workAreaResized(e->index);
+
+ // make sure maximized and fullscreen windows are updated
+ QWidgetList list = QApplication::topLevelWidgets();
+ for (int i = list.size() - 1; i >= 0; --i) {
+ QWidget *w = list.at(i);
+ if (w->isFullScreen())
+ w->d_func()->setFullScreenSize_helper();
+ else if (w->isMaximized())
+ w->d_func()->setMaxWindowState_helper();
+ }
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 57702c6aa9..5f01bcba80 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -1237,10 +1237,11 @@ void QSymbianControl::FocusChanged(TDrawNow /* aDrawNow */)
qwidget->d_func()->setWindowTitle_sys(qwidget->windowTitle());
#ifdef Q_WS_S60
// If widget is fullscreen/minimized, hide status pane and button container otherwise show them.
- const bool visible = !(qwidget->windowState() & (Qt::WindowFullScreen | Qt::WindowMinimized));
+ QWidget *const window = qwidget->window();
+ const bool visible = !(window->windowState() & (Qt::WindowFullScreen | Qt::WindowMinimized));
const bool statusPaneVisibility = visible;
- const bool isFullscreen = qwidget->windowState() & Qt::WindowFullScreen;
- const bool cbaVisibilityHint = qwidget->windowFlags() & Qt::WindowSoftkeysVisibleHint;
+ const bool isFullscreen = window->windowState() & Qt::WindowFullScreen;
+ const bool cbaVisibilityHint = window->windowFlags() & Qt::WindowSoftkeysVisibleHint;
const bool buttonGroupVisibility = (visible || (isFullscreen && cbaVisibilityHint));
S60->setStatusPaneAndButtonGroupVisibility(statusPaneVisibility, buttonGroupVisibility);
#endif
@@ -1424,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));
@@ -2057,6 +2058,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 a32a957d9b..1dab738f50 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -115,12 +115,25 @@ extern void qt_wince_hide_taskbar(HWND hwnd); //defined in qguifunctions_wince.c
# if defined(Q_WS_WINCE)
# include <bldver.h>
# endif
-# include <winable.h>
+# if !defined(Q_WS_WINCE)
+# include <winable.h>
+# endif
+#endif
+
+#ifndef QT_NO_GESTURES
+# ifndef GID_ZOOM
+# define GID_ZOOM 3
+# define GID_TWOFINGERTAP 6
+# define GID_PRESSANDTAP 7
+# define GID_ROLLOVER GID_PRESSANDTAP
+# endif
#endif
#ifndef WM_TOUCH
# define WM_TOUCH 0x0240
+#endif
+#ifndef TOUCHEVENTF_MOVE
# define TOUCHEVENTF_MOVE 0x0001
# define TOUCHEVENTF_DOWN 0x0002
# define TOUCHEVENTF_UP 0x0004
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
index d9056395a8..ff98229ff1 100644
--- a/src/gui/kernel/qapplication_x11.cpp
+++ b/src/gui/kernel/qapplication_x11.cpp
@@ -2335,6 +2335,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)
@@ -3741,7 +3765,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_qpa.cpp b/src/gui/kernel/qclipboard_qpa.cpp
new file mode 100644
index 0000000000..92b9e83255
--- /dev/null
+++ b/src/gui/kernel/qclipboard_qpa.cpp
@@ -0,0 +1,163 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qclipboard.h"
+
+#ifndef QT_NO_CLIPBOARD
+
+#include "qmimedata.h"
+#include "qapplication.h"
+
+QT_BEGIN_NAMESPACE
+
+QT_USE_NAMESPACE
+
+
+class QClipboardData
+{
+public:
+ QClipboardData();
+ ~QClipboardData();
+
+ void setSource(QMimeData* s)
+ {
+ if (s == src)
+ return;
+ delete src;
+ src = s;
+ }
+ QMimeData* source()
+ { return src; }
+
+ void clear();
+
+private:
+ QMimeData* src;
+};
+
+QClipboardData::QClipboardData()
+{
+ src = 0;
+}
+
+QClipboardData::~QClipboardData()
+{
+ delete src;
+}
+
+void QClipboardData::clear()
+{
+ delete src;
+ src = 0;
+}
+
+
+static QClipboardData *internalCbData = 0;
+
+static void cleanupClipboardData()
+{
+ delete internalCbData;
+ internalCbData = 0;
+}
+
+static QClipboardData *clipboardData()
+{
+ if (internalCbData == 0) {
+ internalCbData = new QClipboardData;
+ qAddPostRoutine(cleanupClipboardData);
+ }
+ return internalCbData;
+}
+
+
+void QClipboard::clear(Mode mode)
+{
+ setText(QString(), mode);
+}
+
+
+bool QClipboard::event(QEvent *e)
+{
+ return QObject::event(e);
+}
+
+const QMimeData* QClipboard::mimeData(Mode mode) const
+{
+ if (mode != Clipboard) return 0;
+
+ QClipboardData *d = clipboardData();
+ return d->source();
+}
+
+void QClipboard::setMimeData(QMimeData* src, Mode mode)
+{
+ if (mode != Clipboard) return;
+
+ QClipboardData *d = clipboardData();
+
+ d->setSource(src);
+
+ emitChanged(QClipboard::Clipboard);
+}
+
+bool QClipboard::supportsMode(Mode mode) const
+{
+ return (mode == Clipboard);
+}
+
+bool QClipboard::ownsMode(Mode mode) const
+{
+ if (mode == Clipboard)
+ qWarning("QClipboard::ownsClipboard: UNIMPLEMENTED!");
+ return false;
+}
+
+void QClipboard::connectNotify( const char * )
+{
+}
+
+void QClipboard::ownerDestroyed()
+{
+}
+
+#endif // QT_NO_CLIPBOARD
+
+QT_END_NAMESPACE
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..b963b3c6f5 100644
--- a/src/gui/kernel/qcocoamenuloader_mac.mm
+++ b/src/gui/kernel/qcocoamenuloader_mac.mm
@@ -70,13 +70,13 @@ QT_USE_NAMESPACE
showAllItem = [[appMenu itemWithTitle:@"Show All"] retain];
// Get the names in the nib to match the app name set by Qt.
- NSString *appName = reinterpret_cast<const NSString*>(QCFString::toCFStringRef(qAppName()));
+ const NSString *appName = reinterpret_cast<const NSString*>(QCFString::toCFStringRef(qAppName()));
[quitItem setTitle:[[quitItem title] stringByReplacingOccurrencesOfString:@"NewApplication"
- withString:appName]];
+ withString:const_cast<NSString *>(appName)]];
[hideItem setTitle:[[hideItem title] stringByReplacingOccurrencesOfString:@"NewApplication"
- withString:appName]];
+ withString:const_cast<NSString *>(appName)]];
[aboutItem setTitle:[[aboutItem title] stringByReplacingOccurrencesOfString:@"NewApplication"
- withString:appName]];
+ withString:const_cast<NSString *>(appName)]];
[appName release];
// Disable the items that don't do anything. If someone associates a QAction with them
// They should get synced back in.
@@ -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 8576f52970..dfcc2e6ffb 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -534,7 +534,7 @@ static int qCocoaViewCount = 0;
return;
// We use a different graphics system.
- if (QApplicationPrivate::graphicsSystem() != 0) {
+ if (QApplicationPrivate::graphicsSystem() != 0 && !qwidgetprivate->isInUnifiedToolbar) {
// Qt handles the painting occuring inside the window.
// Cocoa also keeps track of all widgets as NSView and therefore might
@@ -558,6 +558,15 @@ static int qCocoaViewCount = 0;
CGContextRef cg = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
qwidgetprivate->hd = cg;
+
+ // We steal the CGContext for flushing in the unified toolbar with the raster engine.
+ if (QApplicationPrivate::graphicsSystem() != 0 && qwidgetprivate->isInUnifiedToolbar) {
+ qwidgetprivate->cgContext = cg;
+ qwidgetprivate->hasOwnContext = true;
+ qwidgetprivate->unifiedSurface->flush(qwidget, qwidgetprivate->ut_rg, qwidgetprivate->ut_pt);
+ return;
+ }
+
CGContextSaveGState(cg);
if (qwidget->isVisible() && qwidget->updatesEnabled()) { //process the actual paint event.
@@ -955,10 +964,6 @@ static int qCocoaViewCount = 0;
}
}
#endif //QT_NO_WHEELEVENT
-
- if (!wheelOK) {
- return [super scrollWheel:theEvent];
- }
}
- (void)tabletProximity:(NSEvent *)tabletEvent
@@ -1408,7 +1413,7 @@ static int qCocoaViewCount = 0;
if (!selectedText.isEmpty()) {
QCFString string(selectedText.mid(theRange.location, theRange.length));
const NSString *tmpString = reinterpret_cast<const NSString *>((CFStringRef)string);
- return [[[NSAttributedString alloc] initWithString:tmpString] autorelease];
+ return [[[NSAttributedString alloc] initWithString:const_cast<NSString *>(tmpString)] autorelease];
} else {
return nil;
}
diff --git a/src/gui/kernel/qcursor.h b/src/gui/kernel/qcursor.h
index ed6b254f65..62d2f41ae3 100644
--- a/src/gui/kernel/qcursor.h
+++ b/src/gui/kernel/qcursor.h
@@ -130,7 +130,7 @@ public:
static int x11Screen();
#elif defined(Q_WS_MAC)
Qt::HANDLE handle() const;
-#elif defined(Q_WS_QWS)
+#elif defined(Q_WS_QWS) || defined(Q_WS_QPA)
int handle() const;
#elif defined(Q_OS_SYMBIAN)
Qt::HANDLE handle() const;
diff --git a/src/gui/kernel/qcursor_p.h b/src/gui/kernel/qcursor_p.h
index 23798b4cd0..bfd6eac145 100644
--- a/src/gui/kernel/qcursor_p.h
+++ b/src/gui/kernel/qcursor_p.h
@@ -91,7 +91,7 @@ public:
short hx, hy;
#if defined (Q_WS_MAC)
int mId;
-#elif defined(Q_WS_QWS)
+#elif defined(Q_WS_QWS) || defined(Q_WS_QPA)
int id;
#endif
#if defined (Q_WS_WIN)
diff --git a/src/gui/kernel/qcursor_qpa.cpp b/src/gui/kernel/qcursor_qpa.cpp
new file mode 100644
index 0000000000..a6ae7d30f5
--- /dev/null
+++ b/src/gui/kernel/qcursor_qpa.cpp
@@ -0,0 +1,127 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <qcursor.h>
+#include <private/qcursor_p.h>
+#include <qbitmap.h>
+
+QT_BEGIN_NAMESPACE
+
+QT_USE_NAMESPACE
+
+#ifndef QT_NO_CURSOR
+
+static int nextCursorId = Qt::BitmapCursor;
+
+/*****************************************************************************
+ Internal QCursorData class
+ *****************************************************************************/
+
+QCursorData::QCursorData(Qt::CursorShape s)
+ : cshape(s), bm(0), bmm(0), hx(0), hy(0), id(s)
+{
+ ref = 1;
+}
+
+QCursorData::~QCursorData()
+{
+ delete bm;
+ delete bmm;
+}
+
+
+/*****************************************************************************
+ Global cursors
+ *****************************************************************************/
+
+extern QCursorData *qt_cursorTable[Qt::LastCursor + 1]; // qcursor.cpp
+
+int QCursor::handle() const
+{
+ return d->id;
+}
+
+
+QCursorData *QCursorData::setBitmap(const QBitmap &bitmap, const QBitmap &mask, int hotX, int hotY)
+{
+ if (!QCursorData::initialized)
+ QCursorData::initialize();
+ if (bitmap.depth() != 1 || mask.depth() != 1 || bitmap.size() != mask.size()) {
+ qWarning("QCursor: Cannot create bitmap cursor; invalid bitmap(s)");
+ QCursorData *c = qt_cursorTable[0];
+ c->ref.ref();
+ return c;
+ }
+ QCursorData *d = new QCursorData;
+ d->bm = new QBitmap(bitmap);
+ d->bmm = new QBitmap(mask);
+ d->cshape = Qt::BitmapCursor;
+ d->id = ++nextCursorId;
+ d->hx = hotX >= 0 ? hotX : bitmap.width() / 2;
+ d->hy = hotY >= 0 ? hotY : bitmap.height() / 2;
+
+ return d;
+}
+
+void QCursorData::update()
+{
+}
+
+#endif //QT_NO_CURSOR
+
+extern int qt_last_x,qt_last_y;
+
+QPoint QCursor::pos()
+{
+ return QPoint(qt_last_x, qt_last_y);
+}
+
+void QCursor::setPos(int x, int y)
+{
+ // Need to check, since some X servers generate null mouse move
+ // events, causing looping in applications which call setPos() on
+ // every mouse move event.
+ //
+ if (pos() == QPoint(x, y))
+ return;
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qdesktopwidget.qdoc b/src/gui/kernel/qdesktopwidget.qdoc
index 2d72bf9740..c550082011 100644
--- a/src/gui/kernel/qdesktopwidget.qdoc
+++ b/src/gui/kernel/qdesktopwidget.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/src/gui/kernel/qdesktopwidget_qpa.cpp b/src/gui/kernel/qdesktopwidget_qpa.cpp
new file mode 100644
index 0000000000..cff05f5836
--- /dev/null
+++ b/src/gui/kernel/qdesktopwidget_qpa.cpp
@@ -0,0 +1,180 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qdesktopwidget.h"
+#include "private/qapplication_p.h"
+#include "private/qgraphicssystem_p.h"
+#include <QWidget>
+#include "private/qwidget_p.h"
+#include "private/qdesktopwidget_qpa_p.h"
+QT_BEGIN_NAMESPACE
+
+QT_USE_NAMESPACE
+
+void QDesktopWidgetPrivate::updateScreenList()
+{
+ QList<QPlatformScreen *> screenList = QApplicationPrivate::platformIntegration()->screens();
+ int targetLength = screenList.length();
+ int currentLength = screens.length();
+
+ // Add or remove screen widgets as necessary
+ if(currentLength > targetLength) {
+ QDesktopScreenWidget *screen;
+ while (currentLength-- > targetLength) {
+ screen = screens.takeLast();
+ delete screen;
+ }
+ }
+ else if (currentLength < targetLength) {
+ QDesktopScreenWidget *screen;
+ while (currentLength < targetLength) {
+ screen = new QDesktopScreenWidget(currentLength++);
+ screens.append(screen);
+ }
+ }
+
+ QRegion virtualGeometry;
+ bool doVirtualGeometry = QApplicationPrivate::platformIntegration()->isVirtualDesktop();
+
+ // update the geometry of each screen widget
+ for (int i = 0; i < screens.length(); i++) {
+ QRect screenGeometry = screenList.at(i)->geometry();
+ screens.at(i)->setGeometry(screenGeometry);
+ if (doVirtualGeometry)
+ virtualGeometry += screenGeometry;
+ }
+
+ virtualScreen.setGeometry(virtualGeometry.boundingRect());
+ Q_Q(QDesktopWidget);
+ q->setGeometry(virtualScreen.geometry());
+}
+
+QDesktopWidget::QDesktopWidget()
+ : QWidget(*new QDesktopWidgetPrivate, 0, Qt::Desktop)
+{
+ Q_D(QDesktopWidget);
+ setObjectName(QLatin1String("desktop"));
+ d->updateScreenList();
+}
+
+QDesktopWidget::~QDesktopWidget()
+{
+}
+
+bool QDesktopWidget::isVirtualDesktop() const
+{
+ return QApplicationPrivate::platformIntegration()->isVirtualDesktop();
+}
+
+int QDesktopWidget::primaryScreen() const
+{
+ return 0;
+}
+
+int QDesktopWidget::numScreens() const
+{
+ QPlatformIntegration *pi = QApplicationPrivate::platformIntegration();
+ return qMax(pi->screens().size(), 1);
+}
+
+QWidget *QDesktopWidget::screen(int screen)
+{
+ Q_D(QDesktopWidget);
+ if (QApplicationPrivate::platformIntegration()->isVirtualDesktop())
+ return &d->virtualScreen;
+ if (screen < 0 || screen >= d->screens.length())
+ return d->screens.at(0);
+ return d->screens.at(screen);
+}
+
+const QRect QDesktopWidget::availableGeometry(int screenNo) const
+{
+ QPlatformIntegration *pi = QApplicationPrivate::platformIntegration();
+ QList<QPlatformScreen *> screens = pi->screens();
+ if (screenNo == -1)
+ screenNo = 0;
+ if (screenNo < 0 || screenNo >= screens.size())
+ return QRect();
+ else
+ return screens[screenNo]->availableGeometry();
+}
+
+const QRect QDesktopWidget::screenGeometry(int screenNo) const
+{
+ QPlatformIntegration *pi = QApplicationPrivate::platformIntegration();
+ QList<QPlatformScreen *> screens = pi->screens();
+ if (screenNo == -1)
+ screenNo = 0;
+ if (screenNo < 0 || screenNo >= screens.size())
+ return QRect();
+ else
+ return screens[screenNo]->geometry();
+}
+
+int QDesktopWidget::screenNumber(const QWidget *w) const
+{
+ if (!w)
+ return 0;
+
+ QRect frame = w->frameGeometry();
+ if (!w->isWindow())
+ frame.moveTopLeft(w->mapToGlobal(QPoint(0, 0)));
+ const QPoint midpoint = (frame.topLeft() + frame.bottomRight()) / 2;
+ return screenNumber(midpoint);
+}
+
+int QDesktopWidget::screenNumber(const QPoint &p) const
+{
+ QPlatformIntegration *pi = QApplicationPrivate::platformIntegration();
+ QList<QPlatformScreen *> screens = pi->screens();
+
+ for (int i = 0; i < screens.size(); ++i)
+ if (screens[i]->geometry().contains(p))
+ return i;
+
+ return primaryScreen(); //even better would be closest screen
+}
+
+void QDesktopWidget::resizeEvent(QResizeEvent *)
+{
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qdesktopwidget_qpa_p.h b/src/gui/kernel/qdesktopwidget_qpa_p.h
new file mode 100644
index 0000000000..8bed09d5fd
--- /dev/null
+++ b/src/gui/kernel/qdesktopwidget_qpa_p.h
@@ -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 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 for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#ifndef QDESKTOPWIDGET_QPA_P_H
+#define QDESKTOPWIDGET_QPA_P_H
+
+#include "QDesktopWidget"
+#include "private/qwidget_p.h"
+
+class QDesktopScreenWidget : public QWidget {
+ Q_OBJECT
+public:
+ QDesktopScreenWidget(int screenNumber = -1) { setWindowFlags(Qt::Desktop); setVisible(false); d_func()->screenNumber = screenNumber; }
+};
+
+class QDesktopWidgetPrivate : public QWidgetPrivate {
+ Q_DECLARE_PUBLIC(QDesktopWidget)
+
+public:
+ ~QDesktopWidgetPrivate() {foreach(QDesktopScreenWidget *s, screens) delete s; }
+ void updateScreenList();
+
+ QList<QDesktopScreenWidget *> screens;
+ QDesktopScreenWidget virtualScreen;
+};
+
+#endif // QDESKTOPWIDGET_QPA_P_H
diff --git a/src/gui/kernel/qdnd_p.h b/src/gui/kernel/qdnd_p.h
index 033e6a6702..598a9de8a6 100644
--- a/src/gui/kernel/qdnd_p.h
+++ b/src/gui/kernel/qdnd_p.h
@@ -261,11 +261,11 @@ public:
#endif
private:
-#ifdef Q_WS_QWS
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA)
Qt::DropAction currentActionForOverrideCursor;
#endif
#ifdef Q_OS_SYMBIAN
-#ifndef QT_NO_CURSOR
+#ifndef QT_NO_CURSOR
QCursor overrideCursor;
#endif
#endif
diff --git a/src/gui/kernel/qeventdispatcher_glib_qpa.cpp b/src/gui/kernel/qeventdispatcher_glib_qpa.cpp
new file mode 100644
index 0000000000..01d40ca998
--- /dev/null
+++ b/src/gui/kernel/qeventdispatcher_glib_qpa.cpp
@@ -0,0 +1,147 @@
+/****************************************************************************
+**
+** 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 QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qeventdispatcher_glib_qpa_p.h"
+
+#include "qapplication.h"
+
+#include "qplatformdefs.h"
+#include "qapplication.h"
+
+#include <glib.h>
+#include "qapplication_p.h"
+
+#include <qdebug.h>
+
+QT_BEGIN_NAMESPACE
+
+struct GUserEventSource
+{
+ GSource source;
+ QPAEventDispatcherGlib *q;
+};
+
+static gboolean userEventSourcePrepare(GSource *s, gint *timeout)
+{
+ Q_UNUSED(s)
+ Q_UNUSED(timeout)
+
+ return QWindowSystemInterfacePrivate::windowSystemEventsQueued() > 0;
+}
+
+static gboolean userEventSourceCheck(GSource *source)
+{
+ return userEventSourcePrepare(source, 0);
+}
+
+static gboolean userEventSourceDispatch(GSource *s, GSourceFunc, gpointer)
+{
+ GUserEventSource * source = reinterpret_cast<GUserEventSource *>(s);
+
+ QWindowSystemInterfacePrivate::WindowSystemEvent * event;
+ while (QWindowSystemInterfacePrivate::windowSystemEventsQueued()) {
+ event = QWindowSystemInterfacePrivate::getWindowSystemEvent();
+ if (!event)
+ break;
+
+ // send through event filter
+ if (source->q->filterEvent(event)) {
+ delete event;
+ continue;
+ }
+ QApplicationPrivate::processWindowSystemEvent(event);
+ delete event;
+ }
+
+ return true;
+}
+
+
+static GSourceFuncs userEventSourceFuncs = {
+ userEventSourcePrepare,
+ userEventSourceCheck,
+ userEventSourceDispatch,
+ NULL,
+ NULL,
+ NULL
+};
+
+QPAEventDispatcherGlibPrivate::QPAEventDispatcherGlibPrivate(GMainContext *context)
+ : QEventDispatcherGlibPrivate(context)
+{
+ userEventSource = reinterpret_cast<GUserEventSource *>(g_source_new(&userEventSourceFuncs,
+ sizeof(GUserEventSource)));
+ userEventSource->q = 0;
+ g_source_set_can_recurse(&userEventSource->source, true);
+ g_source_attach(&userEventSource->source, mainContext);
+}
+
+
+QPAEventDispatcherGlib::QPAEventDispatcherGlib(QObject *parent)
+ : QEventDispatcherGlib(*new QPAEventDispatcherGlibPrivate, parent)
+{
+ Q_D(QPAEventDispatcherGlib);
+ d->userEventSource->q = this;
+}
+
+QPAEventDispatcherGlib::~QPAEventDispatcherGlib()
+{
+ Q_D(QPAEventDispatcherGlib);
+
+ g_source_destroy(&d->userEventSource->source);
+ g_source_unref(&d->userEventSource->source);
+ d->userEventSource = 0;
+}
+
+bool QPAEventDispatcherGlib::processEvents(QEventLoop::ProcessEventsFlags flags)
+{
+ static bool init = false;
+ if (!init) {
+ if (QApplicationPrivate::platformIntegration()->createEventLoopIntegration()) {
+ qWarning("Eventloop integration is not supported by the glib event dispatcher");
+ qWarning("Use the UNIX event dispatcher by defining environment variable QT_NO_GLIB=1");
+ }
+ init = true;
+ }
+ return QEventDispatcherGlib::processEvents(flags);
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qeventdispatcher_glib_qpa_p.h b/src/gui/kernel/qeventdispatcher_glib_qpa_p.h
new file mode 100644
index 0000000000..1c32ab2961
--- /dev/null
+++ b/src/gui/kernel/qeventdispatcher_glib_qpa_p.h
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** 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 QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QEVENTDISPATCHER_GLIB_QPA_P_H
+#define QEVENTDISPATCHER_GLIB_QPA_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of the QLibrary class. This header file may change from
+// version to version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/private/qeventdispatcher_glib_p.h>
+
+typedef struct _GMainContext GMainContext;
+
+QT_BEGIN_NAMESPACE
+class QPAEventDispatcherGlibPrivate;
+
+class QPAEventDispatcherGlib : public QEventDispatcherGlib
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QPAEventDispatcherGlib)
+
+public:
+ explicit QPAEventDispatcherGlib(QObject *parent = 0);
+ ~QPAEventDispatcherGlib();
+
+ bool processEvents(QEventLoop::ProcessEventsFlags flags);
+};
+
+struct GUserEventSource;
+
+class QPAEventDispatcherGlibPrivate : public QEventDispatcherGlibPrivate
+{
+ Q_DECLARE_PUBLIC(QPAEventDispatcherGlib)
+public:
+ QPAEventDispatcherGlibPrivate(GMainContext *context = 0);
+ GUserEventSource *userEventSource;
+};
+
+
+QT_END_NAMESPACE
+
+#endif // QEVENTDISPATCHER_GLIB_QPA_P_H
diff --git a/src/gui/kernel/qeventdispatcher_qpa.cpp b/src/gui/kernel/qeventdispatcher_qpa.cpp
new file mode 100644
index 0000000000..cb701418ca
--- /dev/null
+++ b/src/gui/kernel/qeventdispatcher_qpa.cpp
@@ -0,0 +1,302 @@
+/****************************************************************************
+**
+** 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 "qplatformdefs.h"
+#include "qapplication.h"
+#include "qeventdispatcher_qpa_p.h"
+#include "private/qeventdispatcher_unix_p.h"
+#include "qapplication_p.h"
+#include "qplatformeventloopintegration_qpa.h"
+
+#include <QWindowSystemInterface>
+#include <QtCore/QElapsedTimer>
+#include <QtCore/QAtomicInt>
+#include <QtCore/QSemaphore>
+
+#include <errno.h>
+
+QT_BEGIN_NAMESPACE
+
+QT_USE_NAMESPACE
+
+class Rendezvous
+{
+public:
+ void checkpoint()
+ {
+ if (state.testAndSetOrdered(0,1)) {
+ semaphore.acquire();
+ } else if (state.testAndSetAcquire(1,0)) {
+ semaphore.release();
+ } else {
+ qWarning("Barrier internal error");
+ }
+ }
+private:
+ QSemaphore semaphore;
+ QAtomicInt state;
+};
+
+class SelectWorker : public QThread
+{
+public:
+ SelectWorker(QEventDispatcherQPAPrivate *eventDispatcherPrivate)
+ : QThread(),
+ m_edPrivate(eventDispatcherPrivate),
+ m_retVal(0)
+ {
+ }
+
+ void setSelectValues(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
+ {
+ m_nfds = nfds;
+ m_readfds = readfds;
+ m_writefds = writefds;
+ m_exceptfds = exceptfds;
+
+
+ }
+
+ int retVal() const {
+ return m_retVal;
+ }
+
+protected:
+ void run();
+
+private:
+ QEventDispatcherQPAPrivate *m_edPrivate;
+ int m_retVal;
+
+ int m_nfds;
+ fd_set *m_readfds, *m_writefds, *m_exceptfds;
+};
+
+class QEventDispatcherQPAPrivate : public QEventDispatcherUNIXPrivate
+{
+ Q_DECLARE_PUBLIC(QEventDispatcherQPA)
+public:
+ QEventDispatcherQPAPrivate()
+ : eventLoopIntegration(0),
+ barrierBeforeBlocking(0),
+ barrierReturnValue(0),
+ selectReturnMutex(0),
+ selectWorkerNeedsSync(true),
+ selectWorkerHasResult(false),
+ m_integrationInitialised(false),
+ m_hasIntegration(false)
+ {
+
+ }
+
+ ~QEventDispatcherQPAPrivate()
+ {
+ delete selectWorker;
+ delete eventLoopIntegration;
+ delete barrierBeforeBlocking;
+ delete barrierReturnValue;
+ delete selectReturnMutex;
+ }
+
+ bool hasIntegration() const
+ {
+ if (!m_integrationInitialised) {
+ QEventDispatcherQPAPrivate *that = const_cast<QEventDispatcherQPAPrivate *>(this);
+ if (qApp && (qApp->thread() == QThread::currentThread())) { // guiThread
+ if (QApplicationPrivate::platformIntegration()) {
+ that->eventLoopIntegration = QApplicationPrivate::platformIntegration()->createEventLoopIntegration();
+ if (that->eventLoopIntegration) {
+ that->selectWorker = new SelectWorker(that);
+ that->barrierBeforeBlocking = new Rendezvous;
+ that->barrierReturnValue = new Rendezvous;
+ that->selectReturnMutex = new QMutex;
+ that->selectWorker->start();
+ that->m_hasIntegration = true;
+ if (!QElapsedTimer::isMonotonic())
+ qWarning("Having eventloop integration without monotonic timers can lead to undefined behaviour");
+ }
+ }
+ }
+ that->m_integrationInitialised = true;
+ }
+ return m_hasIntegration;
+ }
+
+ QPlatformEventLoopIntegration *eventLoopIntegration;
+ Rendezvous *barrierBeforeBlocking;
+ Rendezvous *barrierReturnValue;
+
+ QMutex *selectReturnMutex;
+ bool selectWorkerNeedsSync;
+ bool selectWorkerHasResult;
+
+ SelectWorker *selectWorker;
+private:
+ bool m_integrationInitialised;
+ bool m_hasIntegration;
+};
+
+QEventDispatcherQPA::QEventDispatcherQPA(QObject *parent)
+ : QEventDispatcherUNIX(*new QEventDispatcherQPAPrivate, parent)
+{ }
+
+QEventDispatcherQPA::~QEventDispatcherQPA()
+{ }
+
+bool QEventDispatcherQPA::processEvents(QEventLoop::ProcessEventsFlags flags)
+{
+ Q_D(QEventDispatcherQPA);
+ int nevents = 0;
+
+ // handle gui and posted events
+ d->interrupt = false;
+ QApplication::sendPostedEvents();
+
+ while (!d->interrupt) { // also flushes output buffer ###can be optimized
+ QWindowSystemInterfacePrivate::WindowSystemEvent *event;
+ if (!(flags & QEventLoop::ExcludeUserInputEvents)
+ && QWindowSystemInterfacePrivate::windowSystemEventsQueued() > 0) {
+ // process a pending user input event
+ event = QWindowSystemInterfacePrivate::getWindowSystemEvent();
+ if (!event)
+ break;
+ } else {
+ break;
+ }
+
+ if (filterEvent(event)) {
+ delete event;
+ continue;
+ }
+ nevents++;
+
+ QApplicationPrivate::processWindowSystemEvent(event);
+ delete event;
+ }
+
+ if (!d->interrupt) {
+ if (QEventDispatcherUNIX::processEvents(flags))
+ return true;
+ }
+ return (nevents > 0);
+}
+
+bool QEventDispatcherQPA::hasPendingEvents()
+{
+ extern uint qGlobalPostedEventsCount(); // from qapplication.cpp
+ return qGlobalPostedEventsCount() || QWindowSystemInterfacePrivate::windowSystemEventsQueued();
+}
+
+void QEventDispatcherQPA::registerSocketNotifier(QSocketNotifier *notifier)
+{
+ Q_D(QEventDispatcherQPA);
+ QEventDispatcherUNIX::registerSocketNotifier(notifier);
+ if (d->hasIntegration())
+ wakeUp();
+
+}
+
+void QEventDispatcherQPA::unregisterSocketNotifier(QSocketNotifier *notifier)
+{
+ Q_D(QEventDispatcherQPA);
+ QEventDispatcherUNIX::unregisterSocketNotifier(notifier);
+ if (d->hasIntegration())
+ wakeUp();
+}
+
+void QEventDispatcherQPA::flush()
+{
+ if(qApp)
+ qApp->sendPostedEvents();
+}
+
+
+int QEventDispatcherQPA::select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
+ timeval *timeout)
+{
+ Q_D(QEventDispatcherQPA);
+ int retVal = 0;
+ if (d->hasIntegration()) {
+ qint64 timeoutmsec = 0;
+ if (timeout)
+ timeoutmsec = timeout->tv_sec * 1000 + (timeout->tv_usec/1000);
+ d->selectReturnMutex->lock();
+ if (d->selectWorkerNeedsSync) {
+ if (d->selectWorkerHasResult) {
+ retVal = d->selectWorker->retVal();
+ d->selectWorkerHasResult = false;
+
+ d->selectReturnMutex->unlock();
+ d->barrierReturnValue->checkpoint();
+ return retVal;
+ } else {
+ d->selectWorkerNeedsSync = false;
+ d->selectWorker->setSelectValues(nfds,readfds, writefds, exceptfds);
+ d->barrierBeforeBlocking->checkpoint();
+ }
+ }
+ d->selectReturnMutex->unlock();
+ d->eventLoopIntegration->processEvents(timeoutmsec);
+ retVal = 0; //is 0 if select has not returned
+ } else {
+ retVal = QEventDispatcherUNIX::select(nfds, readfds, writefds, exceptfds, timeout);
+ }
+ return retVal;
+}
+
+void SelectWorker::run()
+{
+ while(true) {
+ m_retVal = 0;
+ m_edPrivate->barrierBeforeBlocking->checkpoint(); // wait for mainthread
+ int tmpRet = qt_safe_select(m_nfds,m_readfds,m_writefds,m_exceptfds,0);
+ m_edPrivate->selectReturnMutex->lock();
+ m_edPrivate->eventLoopIntegration->wakeup();
+
+ m_edPrivate->selectWorkerNeedsSync = true;
+ m_edPrivate->selectWorkerHasResult = true;
+ m_retVal = tmpRet;
+
+ m_edPrivate->selectReturnMutex->unlock();
+ m_edPrivate->barrierReturnValue->checkpoint();
+ }
+}
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qeventdispatcher_qpa_p.h b/src/gui/kernel/qeventdispatcher_qpa_p.h
new file mode 100644
index 0000000000..8065c3e60c
--- /dev/null
+++ b/src/gui/kernel/qeventdispatcher_qpa_p.h
@@ -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 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$
+**
+****************************************************************************/
+
+#ifndef QEVENTDISPATCHER_QPA_P_H
+#define QEVENTDISPATCHER_QPA_P_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 "private/qeventdispatcher_unix_p.h"
+
+QT_BEGIN_NAMESPACE
+
+class QEventDispatcherQPAPrivate;
+
+class QEventDispatcherQPA : public QEventDispatcherUNIX
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QEventDispatcherQPA)
+
+public:
+ explicit QEventDispatcherQPA(QObject *parent = 0);
+ ~QEventDispatcherQPA();
+
+ bool processEvents(QEventLoop::ProcessEventsFlags flags);
+ bool hasPendingEvents();
+
+ void registerSocketNotifier(QSocketNotifier *notifier);
+ void unregisterSocketNotifier(QSocketNotifier *notifier);
+
+ void flush();
+
+protected:
+ int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
+ timeval *timeout);
+};
+
+QT_END_NAMESPACE
+
+#endif // QEVENTDISPATCHER_QPA_P_H
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/qgenericplugin_qpa.cpp b/src/gui/kernel/qgenericplugin_qpa.cpp
new file mode 100644
index 0000000000..43d6525bb6
--- /dev/null
+++ b/src/gui/kernel/qgenericplugin_qpa.cpp
@@ -0,0 +1,112 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qgenericplugin_qpa.h"
+
+#ifndef QT_NO_LIBRARY
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QGenericPlugin
+ \ingroup plugins
+ \ingroup qpa
+
+ \brief The QGenericPlugin class is an abstract base class for
+ window-system related plugins in Qt QPA.
+
+ Note that this class is only available in \l{Qt QPA}.
+
+ A mouse plugin can be created by subclassing
+ QGenericPlugin and reimplementing the pure virtual keys() and
+ create() functions. By exporting the derived class using the
+ Q_EXPORT_PLUGIN2() macro, The default implementation of the
+ QGenericPluginFactory class will automatically detect the plugin and
+ load the driver into the server application at run-time. See \l
+ {How to Create Qt Plugins} for details.
+
+ \sa QGenericPluginFactory
+*/
+
+/*!
+ \fn QStringList QGenericPlugin::keys() const
+
+ Implement this function to return the list of valid keys, i.e. the
+ drivers supported by this plugin.
+
+ \sa create()
+*/
+
+/*!
+ Constructs a plugin with the given \a parent.
+
+ Note that this constructor is invoked automatically by the
+ Q_EXPORT_PLUGIN2() macro, so there is no need for calling it
+ explicitly.
+*/
+QGenericPlugin::QGenericPlugin(QObject *parent)
+ : QObject(parent)
+{
+}
+
+/*!
+ Destroys the plugin.
+
+ Note that Qt destroys a plugin automatically when it is no longer
+ used, so there is no need for calling the destructor explicitly.
+*/
+QGenericPlugin::~QGenericPlugin()
+{
+}
+
+/*!
+ \fn QObject* QGenericPlugin::create(const QString &key, const QString& specification)
+
+ Implement this function to create a driver matching the type
+ specified by the given \a key and \a specification parameters. Note that
+ keys are case-insensitive.
+
+ \sa keys()
+*/
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_LIBRARY
diff --git a/src/gui/kernel/qgenericplugin_qpa.h b/src/gui/kernel/qgenericplugin_qpa.h
new file mode 100644
index 0000000000..e1792cd417
--- /dev/null
+++ b/src/gui/kernel/qgenericplugin_qpa.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+#ifndef QGENERICPLUGIN_QPA_H
+#define QGENERICPLUGIN_QPA_H
+
+#include <QtCore/qplugin.h>
+#include <QtCore/qfactoryinterface.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+#ifndef QT_NO_LIBRARY
+
+//class QGenericObject; ?????
+
+ struct Q_GUI_EXPORT QGenericPluginFactoryInterface : public QFactoryInterface
+{
+ virtual QObject* create(const QString &name, const QString &spec) = 0;
+};
+
+#define QGenericPluginFactoryInterface_iid "com.trolltech.Qt.QGenericPluginFactoryInterface"
+Q_DECLARE_INTERFACE(QGenericPluginFactoryInterface, QGenericPluginFactoryInterface_iid)
+
+class Q_GUI_EXPORT QGenericPlugin : public QObject, public QGenericPluginFactoryInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(QGenericPluginFactoryInterface:QFactoryInterface)
+public:
+ explicit QGenericPlugin(QObject *parent = 0);
+ ~QGenericPlugin();
+
+ virtual QStringList keys() const = 0;
+ virtual QObject* create(const QString& name, const QString &spec) = 0;
+};
+
+#endif // QT_NO_LIBRARY
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QGENERICPLUGIN_QPA_H
diff --git a/src/gui/kernel/qgenericpluginfactory_qpa.cpp b/src/gui/kernel/qgenericpluginfactory_qpa.cpp
new file mode 100644
index 0000000000..abc575ae86
--- /dev/null
+++ b/src/gui/kernel/qgenericpluginfactory_qpa.cpp
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qgenericpluginfactory_qpa.h"
+
+#include "qapplication.h"
+#include "private/qfactoryloader_p.h"
+#include "qgenericplugin_qpa.h"
+#include "qdebug.h"
+
+QT_BEGIN_NAMESPACE
+
+#if !defined(Q_OS_WIN32) || defined(QT_MAKEDLL)
+#ifndef QT_NO_LIBRARY
+
+Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
+ (QGenericPluginFactoryInterface_iid,
+ QLatin1String("/generic"), Qt::CaseInsensitive))
+
+#endif //QT_NO_LIBRARY
+#endif //QT_MAKEDLL
+
+/*!
+ \class QGenericPluginFactory
+ \ingroup qpa
+
+ \brief The QGenericPluginFactory class creates window-system
+ related plugin drivers in Qt QPA.
+
+ Note that this class is only available in \l{Qt QPA}.
+
+
+ \sa QGenericPlugin
+*/
+
+/*!
+ Creates the driver specified by \a key, using the given \a specification.
+
+ Note that the keys are case-insensitive.
+
+ \sa keys()
+*/
+QObject *QGenericPluginFactory::create(const QString& key, const QString &specification)
+{
+ QString driver = key.toLower();
+
+#if !defined(Q_OS_WIN32) || defined(QT_MAKEDLL)
+#ifndef QT_NO_LIBRARY
+ if (QGenericPluginFactoryInterface *factory = qobject_cast<QGenericPluginFactoryInterface*>(loader()->instance(driver)))
+ return factory->create(driver, specification);
+#endif
+#endif
+ return 0;
+}
+
+/*!
+ Returns the list of valid keys, i.e. the available mouse drivers.
+
+ \sa create()
+*/
+QStringList QGenericPluginFactory::keys()
+{
+ QStringList list;
+
+#if !defined(Q_OS_WIN32) || defined(QT_MAKEDLL)
+#ifndef QT_NO_LIBRARY
+ QStringList plugins = loader()->keys();
+ for (int i = 0; i < plugins.size(); ++i) {
+ if (!list.contains(plugins.at(i)))
+ list += plugins.at(i);
+ }
+#endif //QT_NO_LIBRARY
+#endif //QT_MAKEDLL
+ return list;
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qgenericpluginfactory_qpa.h b/src/gui/kernel/qgenericpluginfactory_qpa.h
new file mode 100644
index 0000000000..59eac386ed
--- /dev/null
+++ b/src/gui/kernel/qgenericpluginfactory_qpa.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+#ifndef QGENERICPLUGINFACTORY_QPA_H
+#define QGENERICPLUGINFACTORY_QPA_H
+
+#include <QtCore/qstringlist.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class QString;
+class QObject;
+
+class Q_GUI_EXPORT QGenericPluginFactory
+{
+public:
+ static QStringList keys();
+ static QObject *create(const QString&, const QString &);
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QGENERICPLUGINFACTORY_QPA_H
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 8dd2db75ee..930ca1081c 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;
@@ -382,6 +386,11 @@ bool QGestureManager::filterEventThroughContexts(const QMultiMap<QObject *,
recycle(gesture);
m_gestureTargets.remove(gesture);
}
+
+ //Clean up the Gestures
+ qDeleteAll(m_gesturesToDelete);
+ m_gesturesToDelete.clear();
+
return consumeEventHint;
}
@@ -444,7 +453,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..a5a3482bb1 100644
--- a/src/gui/kernel/qgesturemanager_p.h
+++ b/src/gui/kernel/qgesturemanager_p.h
@@ -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/qguifunctions_wince.cpp b/src/gui/kernel/qguifunctions_wince.cpp
index 6e2ed76deb..572698e75d 100644
--- a/src/gui/kernel/qguifunctions_wince.cpp
+++ b/src/gui/kernel/qguifunctions_wince.cpp
@@ -112,6 +112,9 @@ struct AygSIPINFO
#ifndef SPI_GETSIPINFO
#define SPI_GETSIPINFO 225
#endif
+#ifndef SPI_GETPLATFORMTYPE
+#define SPI_GETPLATFORMTYPE 257
+#endif
typedef BOOL (*AygInitDialog)(AygSHINITDLGINFO*);
typedef BOOL (*AygFullScreen)(HWND, DWORD);
diff --git a/src/gui/kernel/qguiplatformplugin.cpp b/src/gui/kernel/qguiplatformplugin.cpp
index 2dd251bcd7..98b9c4ac29 100644
--- a/src/gui/kernel/qguiplatformplugin.cpp
+++ b/src/gui/kernel/qguiplatformplugin.cpp
@@ -152,7 +152,7 @@ QString QGuiPlatformPlugin::styleName()
return QLatin1String("Windows"); // default style for Symbian without S60
#elif defined(Q_WS_X11) && defined(Q_OS_IRIX)
return QLatin1String("SGI"); // default style for X11 on IRIX
-#elif defined(Q_WS_QWS)
+#elif defined(Q_WS_QWS) || defined(Q_WS_QPA)
return QLatin1String("Plastique"); // default style for X11 and small devices
#elif defined(Q_WS_MAC)
return QLatin1String("Macintosh"); // default style for all Mac's
diff --git a/src/gui/kernel/qkeymapper_mac.cpp b/src/gui/kernel/qkeymapper_mac.cpp
index 3dc6afc88a..300e5cac12 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);
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index e14a9198a6..b4a360a077 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -1521,6 +1521,14 @@ QKeySequence &QKeySequence::operator=(const QKeySequence &other)
}
/*!
+ \fn void QKeySequence::swap(QKeySequence &other)
+ \since 4.8
+
+ Swaps key sequence \a other with this key sequence. This operation is very
+ fast and never fails.
+*/
+
+/*!
\fn bool QKeySequence::operator!=(const QKeySequence &other) const
Returns true if this key sequence is not equal to the \a other
diff --git a/src/gui/kernel/qkeysequence.h b/src/gui/kernel/qkeysequence.h
index b47873de90..a2352ebed3 100644
--- a/src/gui/kernel/qkeysequence.h
+++ b/src/gui/kernel/qkeysequence.h
@@ -183,6 +183,7 @@ public:
inline QKeySequence &operator=(QKeySequence &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QKeySequence &other) { qSwap(d, other.d); }
bool operator==(const QKeySequence &other) const;
inline bool operator!= (const QKeySequence &other) const
{ return !(*this == other); }
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/qplatformcursor_qpa.cpp b/src/gui/kernel/qplatformcursor_qpa.cpp
new file mode 100644
index 0000000000..ac557b9ff9
--- /dev/null
+++ b/src/gui/kernel/qplatformcursor_qpa.cpp
@@ -0,0 +1,660 @@
+/****************************************************************************
+**
+** 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 QtOpenVG 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 "qplatformcursor_qpa.h"
+
+#include <QWidget>
+#include <QPainter>
+#include <QBitmap>
+#include <QApplication>
+
+#include <QDebug>
+
+QT_BEGIN_NAMESPACE
+
+QList <QWeakPointer<QPlatformCursor> > QPlatformCursorPrivate::instances;
+
+/*!
+ \class QGraphicsSystemCursor
+
+ \brief The QGraphicsSystemCursor class provides information about
+ pointer device events (movement, buttons), and requests to change
+ the currently displayed cursor.
+
+ Note that QGraphicsSystemCursor does not include any graphics for
+ display. An application that sets a QCursor may provide its own
+ graphics.
+
+ \sa QGraphicsSystemCursorImage
+*/
+
+/*!
+ \fn virtual void QGraphicsSystemCursor::pointerEvent(const QMouseEvent & event)
+
+ This method is called by Qt whenever a QMouseEvent is generated by the
+ underlying pointer input. \a event is a reference to the QMouseEvent in
+ question. A default do-nothing implementation is provided.
+
+ \sa QApplicationPrivate::handleMouseEvent()
+*/
+
+/*!
+ \fn virtual void QGraphicsSystemCursor::changeCursor(QCursor * widgetCursor, QWidget * widget)
+
+ \brief This method is called by Qt whenever the cursor graphic should be changed.
+
+ Implementation of this method is mandatory for a subclass of QGraphicsSystemCursor.
+
+ \a widgetCursor is a pointer to the QCursor that should be displayed.
+
+ \a widget is a pointer to the widget currently displayed at QCursor::pos(). Note
+ that this may be 0 if the current position is not occupied by a displayed widget.
+
+ \sa QApplicationPrivate::handleMouseEvent(), QCursor::pos()
+*/
+
+/*!
+ \fn QGraphicsSystemCursor::QGraphicsSystemCursor()
+
+ \brief Constructs a QGraphicsSystemCursor
+*/
+QPlatformCursor::QPlatformCursor(QPlatformScreen *scr )
+ : screen(scr)
+{
+ QPlatformCursorPrivate::instances.append(this);
+}
+
+// End of display and pointer event handling code
+// Beginning of built-in cursor graphics
+// from src/gui/embedded/QGraphicsSystemCursorImage_qws.cpp
+
+/*!
+ \class QGraphicsSystemCursorImage
+
+ \brief The QGraphicsSystemCursorImage class provides a set of graphics
+ intended to be used as cursors.
+
+ \sa QGraphicsSystemCursor
+*/
+
+static QPlatformCursorImage *systemCursorTable[Qt::LastCursor+1];
+static bool systemCursorTableInit = false;
+
+// 16 x 16
+static const uchar cur_arrow_bits[] = {
+ 0x07, 0x00, 0x39, 0x00, 0xc1, 0x01, 0x02, 0x0e, 0x02, 0x10, 0x02, 0x08,
+ 0x04, 0x04, 0x04, 0x02, 0x04, 0x04, 0x88, 0x08, 0x48, 0x11, 0x28, 0x22,
+ 0x10, 0x44, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00 };
+static const uchar mcur_arrow_bits[] = {
+ 0x07, 0x00, 0x3f, 0x00, 0xff, 0x01, 0xfe, 0x0f, 0xfe, 0x1f, 0xfe, 0x0f,
+ 0xfc, 0x07, 0xfc, 0x03, 0xfc, 0x07, 0xf8, 0x0f, 0x78, 0x1f, 0x38, 0x3e,
+ 0x10, 0x7c, 0x00, 0x38, 0x00, 0x10, 0x00, 0x00 };
+
+static const unsigned char cur_up_arrow_bits[] = {
+ 0x80, 0x00, 0x40, 0x01, 0x40, 0x01, 0x20, 0x02, 0x20, 0x02, 0x10, 0x04,
+ 0x10, 0x04, 0x08, 0x08, 0x78, 0x0f, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01,
+ 0x40, 0x01, 0x40, 0x01, 0x40, 0x01, 0xc0, 0x01};
+static const unsigned char mcur_up_arrow_bits[] = {
+ 0x80, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0xe0, 0x03, 0xe0, 0x03, 0xf0, 0x07,
+ 0xf0, 0x07, 0xf8, 0x0f, 0xf8, 0x0f, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01,
+ 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01};
+
+static const unsigned char cur_cross_bits[] = {
+ 0xc0, 0x01, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01,
+ 0x7f, 0x7f, 0x01, 0x40, 0x7f, 0x7f, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01,
+ 0x40, 0x01, 0x40, 0x01, 0xc0, 0x01, 0x00, 0x00};
+static const unsigned char mcur_cross_bits[] = {
+ 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01,
+ 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01,
+ 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00};
+
+static const uchar cur_ibeam_bits[] = {
+ 0x00, 0x00, 0xe0, 0x03, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
+ 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
+ 0x80, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00 };
+static const uchar mcur_ibeam_bits[] = {
+ 0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01,
+ 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01,
+ 0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0x00, 0x00 };
+
+static const uchar cur_ver_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f,
+ 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xf0, 0x0f,
+ 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00 };
+static const uchar mcur_ver_bits[] = {
+ 0x00, 0x00, 0x80, 0x03, 0xc0, 0x07, 0xe0, 0x0f, 0xf0, 0x1f, 0xf8, 0x3f,
+ 0xfc, 0x7f, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xfc, 0x7f, 0xf8, 0x3f,
+ 0xf0, 0x1f, 0xe0, 0x0f, 0xc0, 0x07, 0x80, 0x03 };
+
+static const uchar cur_hor_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x30, 0x18,
+ 0x38, 0x38, 0xfc, 0x7f, 0xfc, 0x7f, 0x38, 0x38, 0x30, 0x18, 0x20, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+static const uchar mcur_hor_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x60, 0x0c, 0x70, 0x1c, 0x78, 0x3c,
+ 0xfc, 0x7f, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0x7f, 0x78, 0x3c,
+ 0x70, 0x1c, 0x60, 0x0c, 0x40, 0x04, 0x00, 0x00 };
+static const uchar cur_bdiag_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x3e,
+ 0x00, 0x37, 0x88, 0x23, 0xd8, 0x01, 0xf8, 0x00, 0x78, 0x00, 0xf8, 0x00,
+ 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+static const uchar mcur_bdiag_bits[] = {
+ 0x00, 0x00, 0xc0, 0x7f, 0x80, 0x7f, 0x00, 0x7f, 0x00, 0x7e, 0x04, 0x7f,
+ 0x8c, 0x7f, 0xdc, 0x77, 0xfc, 0x63, 0xfc, 0x41, 0xfc, 0x00, 0xfc, 0x01,
+ 0xfc, 0x03, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00 };
+static const uchar cur_fdiag_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0xf8, 0x00, 0x78, 0x00,
+ 0xf8, 0x00, 0xd8, 0x01, 0x88, 0x23, 0x00, 0x37, 0x00, 0x3e, 0x00, 0x3c,
+ 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00 };
+static const uchar mcur_fdiag_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0xfc, 0x03, 0xfc, 0x01, 0xfc, 0x00,
+ 0xfc, 0x41, 0xfc, 0x63, 0xdc, 0x77, 0x8c, 0x7f, 0x04, 0x7f, 0x00, 0x7e,
+ 0x00, 0x7f, 0x80, 0x7f, 0xc0, 0x7f, 0x00, 0x00 };
+
+// 20 x 20
+static const uchar forbidden_bits[] = {
+ 0x00,0x00,0x00,0x80,0x1f,0x00,0xe0,0x7f,0x00,0xf0,0xf0,0x00,0x38,0xc0,0x01,
+ 0x7c,0x80,0x03,0xec,0x00,0x03,0xce,0x01,0x07,0x86,0x03,0x06,0x06,0x07,0x06,
+ 0x06,0x0e,0x06,0x06,0x1c,0x06,0x0e,0x38,0x07,0x0c,0x70,0x03,0x1c,0xe0,0x03,
+ 0x38,0xc0,0x01,0xf0,0xe0,0x00,0xe0,0x7f,0x00,0x80,0x1f,0x00,0x00,0x00,0x00 };
+
+static const uchar forbiddenm_bits[] = {
+ 0x80,0x1f,0x00,0xe0,0x7f,0x00,0xf0,0xff,0x00,0xf8,0xff,0x01,0xfc,0xf0,0x03,
+ 0xfe,0xc0,0x07,0xfe,0x81,0x07,0xff,0x83,0x0f,0xcf,0x07,0x0f,0x8f,0x0f,0x0f,
+ 0x0f,0x1f,0x0f,0x0f,0x3e,0x0f,0x1f,0xfc,0x0f,0x1e,0xf8,0x07,0x3e,0xf0,0x07,
+ 0xfc,0xe0,0x03,0xf8,0xff,0x01,0xf0,0xff,0x00,0xe0,0x7f,0x00,0x80,0x1f,0x00};
+
+// 32 x 32
+static const uchar wait_data_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00,
+ 0x00, 0x04, 0x40, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x08, 0x20, 0x00,
+ 0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x20, 0x00,
+ 0x00, 0x50, 0x15, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x40, 0x05, 0x00,
+ 0x00, 0x80, 0x02, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x20, 0x08, 0x00,
+ 0x00, 0x10, 0x10, 0x00, 0x00, 0x08, 0x21, 0x00, 0x00, 0x88, 0x22, 0x00,
+ 0x00, 0x48, 0x25, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0x00, 0xfc, 0x7f, 0x00,
+ 0x00, 0x04, 0x40, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+static const uchar wait_mask_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00,
+ 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xf8, 0x3f, 0x00,
+ 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x3f, 0x00,
+ 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x07, 0x00,
+ 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x0f, 0x00,
+ 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x3f, 0x00,
+ 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00,
+ 0x00, 0xfc, 0x7f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+static const uchar hsplit_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00,
+ 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00,
+ 0x00, 0x41, 0x82, 0x00, 0x80, 0x41, 0x82, 0x01, 0xc0, 0x7f, 0xfe, 0x03,
+ 0x80, 0x41, 0x82, 0x01, 0x00, 0x41, 0x82, 0x00, 0x00, 0x40, 0x02, 0x00,
+ 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00,
+ 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+static const uchar hsplitm_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00,
+ 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe2, 0x47, 0x00, 0x00, 0xe3, 0xc7, 0x00,
+ 0x80, 0xe3, 0xc7, 0x01, 0xc0, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0x07,
+ 0xc0, 0xff, 0xff, 0x03, 0x80, 0xe3, 0xc7, 0x01, 0x00, 0xe3, 0xc7, 0x00,
+ 0x00, 0xe2, 0x47, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00,
+ 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+static const uchar vsplit_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00,
+ 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+static const uchar vsplitm_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xf0, 0x07, 0x00,
+ 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00,
+ 0x00, 0xc0, 0x01, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00,
+ 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0x00,
+ 0x80, 0xff, 0xff, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00,
+ 0x00, 0xc0, 0x01, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00,
+ 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+static const uchar phand_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
+ 0x7e, 0x04, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x70, 0x08, 0x00, 0x00,
+ 0x08, 0x08, 0x00, 0x00, 0x70, 0x14, 0x00, 0x00, 0x08, 0x22, 0x00, 0x00,
+ 0x30, 0x41, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00, 0x40, 0x12, 0x00, 0x00,
+ 0x80, 0x08, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+static const uchar phandm_bits[] = {
+ 0xfe, 0x01, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00,
+ 0xff, 0x0f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00,
+ 0xfc, 0x1f, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00,
+ 0xf8, 0xff, 0x00, 0x00, 0xf0, 0x7f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00,
+ 0xc0, 0x1f, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+static const uchar size_all_data_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x81, 0x40, 0x00, 0x80, 0x81, 0xc0, 0x00,
+ 0xc0, 0xff, 0xff, 0x01, 0x80, 0x81, 0xc0, 0x00, 0x00, 0x81, 0x40, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+static const uchar size_all_mask_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xf0, 0x07, 0x00,
+ 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc2, 0x21, 0x00,
+ 0x00, 0xc3, 0x61, 0x00, 0x80, 0xc3, 0xe1, 0x00, 0xc0, 0xff, 0xff, 0x01,
+ 0xe0, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0x01, 0x80, 0xc3, 0xe1, 0x00,
+ 0x00, 0xc3, 0x61, 0x00, 0x00, 0xc2, 0x21, 0x00, 0x00, 0xc0, 0x01, 0x00,
+ 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x03, 0x00,
+ 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+static const uchar whatsthis_bits[] = {
+ 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0xf0, 0x07, 0x00,
+ 0x09, 0x18, 0x0e, 0x00, 0x11, 0x1c, 0x0e, 0x00, 0x21, 0x1c, 0x0e, 0x00,
+ 0x41, 0x1c, 0x0e, 0x00, 0x81, 0x1c, 0x0e, 0x00, 0x01, 0x01, 0x07, 0x00,
+ 0x01, 0x82, 0x03, 0x00, 0xc1, 0xc7, 0x01, 0x00, 0x49, 0xc0, 0x01, 0x00,
+ 0x95, 0xc0, 0x01, 0x00, 0x93, 0xc0, 0x01, 0x00, 0x21, 0x01, 0x00, 0x00,
+ 0x20, 0xc1, 0x01, 0x00, 0x40, 0xc2, 0x01, 0x00, 0x40, 0x02, 0x00, 0x00,
+ 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
+static const uchar whatsthism_bits[] = {
+ 0x01, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x07, 0x00, 0x07, 0xf8, 0x0f, 0x00,
+ 0x0f, 0xfc, 0x1f, 0x00, 0x1f, 0x3e, 0x1f, 0x00, 0x3f, 0x3e, 0x1f, 0x00,
+ 0x7f, 0x3e, 0x1f, 0x00, 0xff, 0x3e, 0x1f, 0x00, 0xff, 0x9d, 0x0f, 0x00,
+ 0xff, 0xc3, 0x07, 0x00, 0xff, 0xe7, 0x03, 0x00, 0x7f, 0xe0, 0x03, 0x00,
+ 0xf7, 0xe0, 0x03, 0x00, 0xf3, 0xe0, 0x03, 0x00, 0xe1, 0xe1, 0x03, 0x00,
+ 0xe0, 0xe1, 0x03, 0x00, 0xc0, 0xe3, 0x03, 0x00, 0xc0, 0xe3, 0x03, 0x00,
+ 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
+
+static const uchar busy_bits[] = {
+ 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x09, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
+ 0x41, 0xe0, 0xff, 0x00, 0x81, 0x20, 0x80, 0x00, 0x01, 0xe1, 0xff, 0x00,
+ 0x01, 0x42, 0x40, 0x00, 0xc1, 0x47, 0x40, 0x00, 0x49, 0x40, 0x55, 0x00,
+ 0x95, 0x80, 0x2a, 0x00, 0x93, 0x00, 0x15, 0x00, 0x21, 0x01, 0x0a, 0x00,
+ 0x20, 0x01, 0x11, 0x00, 0x40, 0x82, 0x20, 0x00, 0x40, 0x42, 0x44, 0x00,
+ 0x80, 0x41, 0x4a, 0x00, 0x00, 0x40, 0x55, 0x00, 0x00, 0xe0, 0xff, 0x00,
+ 0x00, 0x20, 0x80, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+static const uchar busym_bits[] = {
+ 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+ 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
+ 0x7f, 0xe0, 0xff, 0x00, 0xff, 0xe0, 0xff, 0x00, 0xff, 0xe1, 0xff, 0x00,
+ 0xff, 0xc3, 0x7f, 0x00, 0xff, 0xc7, 0x7f, 0x00, 0x7f, 0xc0, 0x7f, 0x00,
+ 0xf7, 0x80, 0x3f, 0x00, 0xf3, 0x00, 0x1f, 0x00, 0xe1, 0x01, 0x0e, 0x00,
+ 0xe0, 0x01, 0x1f, 0x00, 0xc0, 0x83, 0x3f, 0x00, 0xc0, 0xc3, 0x7f, 0x00,
+ 0x80, 0xc1, 0x7f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0x00,
+ 0x00, 0xe0, 0xff, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+// 16 x 16
+static const uchar openhand_bits[] = {
+ 0x80,0x01,0x58,0x0e,0x64,0x12,0x64,0x52,0x48,0xb2,0x48,0x92,
+ 0x16,0x90,0x19,0x80,0x11,0x40,0x02,0x40,0x04,0x40,0x04,0x20,
+ 0x08,0x20,0x10,0x10,0x20,0x10,0x00,0x00};
+static const uchar openhandm_bits[] = {
+ 0x80,0x01,0xd8,0x0f,0xfc,0x1f,0xfc,0x5f,0xf8,0xff,0xf8,0xff,
+ 0xfe,0xff,0xff,0xff,0xff,0x7f,0xfe,0x7f,0xfc,0x7f,0xfc,0x3f,
+ 0xf8,0x3f,0xf0,0x1f,0xe0,0x1f,0x00,0x00};
+static const uchar closedhand_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x0d,0x48,0x32,0x08,0x50,
+ 0x10,0x40,0x18,0x40,0x04,0x40,0x04,0x20,0x08,0x20,0x10,0x10,
+ 0x20,0x10,0x20,0x10,0x00,0x00,0x00,0x00};
+static const uchar closedhandm_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x0d,0xf8,0x3f,0xf8,0x7f,
+ 0xf0,0x7f,0xf8,0x7f,0xfc,0x7f,0xfc,0x3f,0xf8,0x3f,0xf0,0x1f,
+ 0xe0,0x1f,0xe0,0x1f,0x00,0x00,0x00,0x00};
+
+void QPlatformCursorImage::createSystemCursor(int id)
+{
+ if (!systemCursorTableInit) {
+ for (int i = 0; i <= Qt::LastCursor; i++)
+ systemCursorTable[i] = 0;
+ systemCursorTableInit = true;
+ }
+ switch (id) {
+ // 16x16 cursors
+ case Qt::ArrowCursor:
+ systemCursorTable[Qt::ArrowCursor] =
+ new QPlatformCursorImage(cur_arrow_bits, mcur_arrow_bits, 16, 16, 0, 0);
+ break;
+
+ case Qt::UpArrowCursor:
+ systemCursorTable[Qt::UpArrowCursor] =
+ new QPlatformCursorImage(cur_up_arrow_bits, mcur_up_arrow_bits, 16, 16, 7, 0);
+ break;
+
+ case Qt::CrossCursor:
+ systemCursorTable[Qt::CrossCursor] =
+ new QPlatformCursorImage(cur_cross_bits, mcur_cross_bits, 16, 16, 7, 7);
+ break;
+
+ case Qt::IBeamCursor:
+ systemCursorTable[Qt::IBeamCursor] =
+ new QPlatformCursorImage(cur_ibeam_bits, mcur_ibeam_bits, 16, 16, 7, 7);
+ break;
+
+ case Qt::SizeVerCursor:
+ systemCursorTable[Qt::SizeVerCursor] =
+ new QPlatformCursorImage(cur_ver_bits, mcur_ver_bits, 16, 16, 7, 7);
+ break;
+
+ case Qt::SizeHorCursor:
+ systemCursorTable[Qt::SizeHorCursor] =
+ new QPlatformCursorImage(cur_hor_bits, mcur_hor_bits, 16, 16, 7, 7);
+ break;
+
+ case Qt::SizeBDiagCursor:
+ systemCursorTable[Qt::SizeBDiagCursor] =
+ new QPlatformCursorImage(cur_bdiag_bits, mcur_bdiag_bits, 16, 16, 7, 7);
+ break;
+
+ case Qt::SizeFDiagCursor:
+ systemCursorTable[Qt::SizeFDiagCursor] =
+ new QPlatformCursorImage(cur_fdiag_bits, mcur_fdiag_bits, 16, 16, 7, 7);
+ break;
+
+ case Qt::BlankCursor:
+ systemCursorTable[Qt::BlankCursor] =
+ new QPlatformCursorImage(0, 0, 0, 0, 0, 0);
+ break;
+
+ // 20x20 cursors
+ case Qt::ForbiddenCursor:
+ systemCursorTable[Qt::ForbiddenCursor] =
+ new QPlatformCursorImage(forbidden_bits, forbiddenm_bits, 20, 20, 10, 10);
+ break;
+
+ // 32x32 cursors
+ case Qt::WaitCursor:
+ systemCursorTable[Qt::WaitCursor] =
+ new QPlatformCursorImage(wait_data_bits, wait_mask_bits, 32, 32, 15, 15);
+ break;
+
+ case Qt::SplitVCursor:
+ systemCursorTable[Qt::SplitVCursor] =
+ new QPlatformCursorImage(vsplit_bits, vsplitm_bits, 32, 32, 15, 15);
+ break;
+
+ case Qt::SplitHCursor:
+ systemCursorTable[Qt::SplitHCursor] =
+ new QPlatformCursorImage(hsplit_bits, hsplitm_bits, 32, 32, 15, 15);
+ break;
+
+ case Qt::SizeAllCursor:
+ systemCursorTable[Qt::SizeAllCursor] =
+ new QPlatformCursorImage(size_all_data_bits, size_all_mask_bits, 32, 32, 15, 15);
+ break;
+
+ case Qt::PointingHandCursor:
+ systemCursorTable[Qt::PointingHandCursor] =
+ new QPlatformCursorImage(phand_bits, phandm_bits, 32, 32, 0, 0);
+ break;
+
+ case Qt::WhatsThisCursor:
+ systemCursorTable[Qt::WhatsThisCursor] =
+ new QPlatformCursorImage(whatsthis_bits, whatsthism_bits, 32, 32, 0, 0);
+ break;
+ case Qt::BusyCursor:
+ systemCursorTable[Qt::BusyCursor] =
+ new QPlatformCursorImage(busy_bits, busym_bits, 32, 32, 0, 0);
+ break;
+
+ case Qt::OpenHandCursor:
+ systemCursorTable[Qt::OpenHandCursor] =
+ new QPlatformCursorImage(openhand_bits, openhandm_bits, 16, 16, 8, 8);
+ break;
+ case Qt::ClosedHandCursor:
+ systemCursorTable[Qt::ClosedHandCursor] =
+ new QPlatformCursorImage(closedhand_bits, closedhandm_bits, 16, 16, 8, 8);
+ break;
+ default:
+ qWarning("Unknown system cursor %d", id);
+ }
+}
+
+/*!
+ \fn void QGraphicsSystemCursorImage::set(Qt::CursorShape id)
+
+ \brief Calling this method sets the cursor image to the specified shape
+
+ \a id is one of the defined Qt::CursorShape values.
+
+ If id is invalid, Qt::BitmapCursor, or unknown by the implementation,
+ Qt::ArrowCursor is used instead.
+*/
+
+void QPlatformCursorImage::set(Qt::CursorShape id)
+{
+ QPlatformCursorImage *cursor = 0;
+ if (id >= 0 && id <= Qt::LastCursor) {
+ if (!systemCursorTable[id])
+ createSystemCursor(id);
+ cursor = systemCursorTable[id];
+ }
+
+ if (cursor == 0) {
+ if (!systemCursorTable[Qt::ArrowCursor])
+ createSystemCursor(Qt::ArrowCursor);
+ cursor = systemCursorTable[Qt::ArrowCursor];
+ }
+ cursorImage = cursor->cursorImage;
+ hot = cursor->hot;
+}
+
+/*!
+ \fn void QGraphicsSystemCursorImage::set(const QImage * image, int hx, int hy)
+
+ \brief Set the cursor image to the specified QImage, with the hotsport at (hx, hy)
+
+ \a image A pointer to a QImage
+
+ \a hx The x coordinate of the cursor's hotspot
+
+ \a hy the y coordinate of the cursor's hotspot
+*/
+
+void QPlatformCursorImage::set(const QImage &image, int hx, int hy)
+{
+ hot.setX(hx);
+ hot.setY(hy);
+ cursorImage = image;
+}
+
+/*!
+ \fn void QGraphicsSystemCursorImage::set(const uchar *data, const uchar *mask, int width, int height, int hx, int hy)
+
+ \brief set the cursor image to the graphic represented by the combination of data, mask,
+ width, and height
+
+ \a data The pixel data of the graphic
+
+ \a mask Mask data for the graphic. pixels in data with a corresponding mask bit of 0 are not drawn
+
+ \a width The width of the graphic in pixels
+
+ \a height The height of the graphic in pixels
+
+ \a hx The X hotspot of the cursor graphic
+
+ \a hy The Y hotspot of the cursor graphic
+*/
+void QPlatformCursorImage::set(const uchar *data, const uchar *mask,
+ int width, int height, int hx, int hy)
+{
+ hot.setX(hx);
+ hot.setY(hy);
+
+ cursorImage = QImage(width,height, QImage::Format_Indexed8);
+
+ if (!width || !height || !data || !mask || cursorImage.isNull())
+ return;
+
+ cursorImage.setNumColors(3);
+ cursorImage.setColor(0, 0xff000000);
+ cursorImage.setColor(1, 0xffffffff);
+ cursorImage.setColor(2, 0x00000000);
+
+ int bytesPerLine = (width + 7) / 8;
+ int p = 0;
+ int d, m;
+
+ int x = -1, w = 0;
+
+ uchar *cursor_data = cursorImage.bits();
+ int bpl = cursorImage.bytesPerLine();
+ for (int i = 0; i < height; i++)
+ {
+ for (int j = 0; j < bytesPerLine; j++, data++, mask++)
+ {
+ for (int b = 0; b < 8 && j*8+b < width; b++)
+ {
+ d = *data & (1 << b);
+ m = *mask & (1 << b);
+ if (d && m) p = 0;
+ else if (!d && m) p = 1;
+ else p = 2;
+ cursor_data[j*8+b] = p;
+
+ // calc region
+ if (x < 0 && m)
+ x = j*8+b;
+ else if (x >= 0 && !m) {
+ x = -1;
+ w = 0;
+ }
+ if (m)
+ w++;
+ }
+ }
+ if (x >= 0) {
+ x = -1;
+ w = 0;
+ }
+ cursor_data += bpl;
+ }
+
+}
+
+/*!
+ \fn QGraphicsSystemCursorImage::QGraphicsSystemCursorImage(const uchar *data, const uchar *mask, int width, int height, int hotX, int hotY)
+
+ \brief set the cursor image to the graphic represented by the combination of data, mask,
+ width, and height
+
+ \a data The pixel data of the graphic
+
+ \a mask Mask data for the graphic. pixels in data with a corresponding mask bit of 0 are not drawn
+
+ \a width The width of the graphic in pixels
+
+ \a height The height of the graphic in pixels
+
+ \a hotX The X hotspot of the cursor graphic
+
+ \a hotY The Y hotspot of the cursor graphic
+
+ \sa set
+*/
+
+/*!
+ \fn QImage *QGraphicsSystemCursorImage::image()
+
+ \brief Return the cursor graphic as a pointer to a QImage
+*/
+
+/*!
+ \fn QPoint QGraphicsSystemCursorImage::hotspot()
+
+ \brief Return the cursor's hotspot
+*/
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qplatformcursor_qpa.h b/src/gui/kernel/qplatformcursor_qpa.h
new file mode 100644
index 0000000000..71d0e87444
--- /dev/null
+++ b/src/gui/kernel/qplatformcursor_qpa.h
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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$
+**
+****************************************************************************/
+#ifndef QGRAPHICSSYSTEMCURSOR_H
+#define QGRAPHICSSYSTEMCURSOR_H
+
+#include <QtCore/QList>
+#include <QtGui/QImage>
+#include <QtGui/QMouseEvent>
+#include <QtCore/QWeakPointer>
+#include <QtCore/QObject>
+#include <QtGui/QPlatformScreen>
+#include <QtGui/QCursor>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+// Cursor graphics management
+class Q_GUI_EXPORT QPlatformCursorImage {
+public:
+ QPlatformCursorImage(const uchar *data, const uchar *mask, int width, int height, int hotX, int hotY)
+ { set(data, mask, width, height, hotX, hotY); }
+ QImage * image() { return &cursorImage; }
+ QPoint hotspot() { return hot; }
+ void set(const uchar *data, const uchar *mask, int width, int height, int hotX, int hotY);
+ void set(const QImage &image, int hx, int hy);
+ void set(Qt::CursorShape);
+private:
+ static void createSystemCursor(int id);
+ QImage cursorImage;
+ QPoint hot;
+};
+
+class QPlatformCursor;
+
+class QPlatformCursorPrivate {
+public:
+ static QList<QWeakPointer<QPlatformCursor> > getInstances() { return instances; }
+ static QList<QWeakPointer<QPlatformCursor> > instances;
+};
+
+class Q_GUI_EXPORT QPlatformCursor : public QObject {
+public:
+ QPlatformCursor(QPlatformScreen *);
+
+ // input methods
+ virtual void pointerEvent(const QMouseEvent & event) { Q_UNUSED(event); }
+ virtual void changeCursor(QCursor * widgetCursor, QWidget * widget) = 0;
+
+protected:
+ QPlatformScreen* screen; // Where to request an update
+
+private:
+ Q_DECLARE_PRIVATE(QPlatformCursor);
+ friend void qt_qpa_set_cursor(QWidget * w, bool force);
+ friend class QApplicationPrivate;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QGRAPHICSSYSTEMCURSOR_H
diff --git a/src/gui/kernel/qplatformeventloopintegration_qpa.cpp b/src/gui/kernel/qplatformeventloopintegration_qpa.cpp
new file mode 100644
index 0000000000..8bdba5e2c2
--- /dev/null
+++ b/src/gui/kernel/qplatformeventloopintegration_qpa.cpp
@@ -0,0 +1,41 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
diff --git a/src/gui/kernel/qplatformeventloopintegration_qpa.h b/src/gui/kernel/qplatformeventloopintegration_qpa.h
new file mode 100644
index 0000000000..a06fecfb95
--- /dev/null
+++ b/src/gui/kernel/qplatformeventloopintegration_qpa.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 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$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMEVENTLOOPINTEGRATION_QPA_H
+#define QPLATFORMEVENTLOOPINTEGRATION_QPA_H
+
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class QPlatformEventLoopIntegration
+{
+public:
+ virtual void processEvents( qint64 msec ) = 0;
+ virtual void wakeup() = 0;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QPLATFORMEVENTLOOPINTEGRATION_QPA_H
diff --git a/src/gui/kernel/qplatformglcontext_qpa.cpp b/src/gui/kernel/qplatformglcontext_qpa.cpp
new file mode 100644
index 0000000000..36db2b047d
--- /dev/null
+++ b/src/gui/kernel/qplatformglcontext_qpa.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 QtOpenGL 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 "qplatformglcontext_qpa.h"
+
+QPlatformGLContext::~QPlatformGLContext()
+{ }
+
+static QPlatformGLContext *staticSharedContext = 0;
+
+void QPlatformGLContext::setDefaultSharedContext(QPlatformGLContext *sharedContext)
+{
+ staticSharedContext = sharedContext;
+}
+
+QPlatformGLContext *QPlatformGLContext::defaultSharedContext()
+{
+ return staticSharedContext;
+}
diff --git a/src/gui/kernel/qplatformglcontext_qpa.h b/src/gui/kernel/qplatformglcontext_qpa.h
new file mode 100644
index 0000000000..ed41723022
--- /dev/null
+++ b/src/gui/kernel/qplatformglcontext_qpa.h
@@ -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 QtOpenGL 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$
+**
+****************************************************************************/
+
+#ifndef QPLATFORM_GL_CONTEXT_H
+#define QPLATFORM_GL_CONTEXT_H
+
+#include <QtCore/qnamespace.h>
+#include <QtGui/QPlatformWindowFormat>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class Q_OPENGL_EXPORT QPlatformGLContext
+{
+public:
+ virtual ~QPlatformGLContext();
+
+ virtual void makeCurrent() = 0;
+ virtual void doneCurrent() = 0;
+ virtual void swapBuffers() = 0;
+ virtual void* getProcAddress(const QString& procName) = 0;
+
+ virtual QPlatformWindowFormat platformWindowFormat() const = 0;
+
+ static QPlatformGLContext *defaultSharedContext();
+
+protected:
+
+ static void setDefaultSharedContext(QPlatformGLContext *sharedContext);
+
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+
+#endif // QPLATFORM_GL_INTEGRATION_P_H
diff --git a/src/gui/kernel/qplatformintegration_qpa.cpp b/src/gui/kernel/qplatformintegration_qpa.cpp
new file mode 100644
index 0000000000..e2a493d20f
--- /dev/null
+++ b/src/gui/kernel/qplatformintegration_qpa.cpp
@@ -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 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 "qplatformintegration_qpa.h"
+
+#include <QtGui/QPlatformFontDatabase>
+
+QT_BEGIN_NAMESPACE
+
+QPixmap QPlatformIntegration::grabWindow(WId window, int x, int y, int width, int height) const
+{
+ Q_UNUSED(window);
+ Q_UNUSED(x);
+ Q_UNUSED(y);
+ Q_UNUSED(width);
+ Q_UNUSED(height);
+ return QPixmap();
+}
+
+QPlatformEventLoopIntegration *QPlatformIntegration::createEventLoopIntegration() const
+{
+ return 0;
+}
+
+bool QPlatformIntegration::hasOpenGL() const
+{
+ return false;
+}
+
+QPlatformFontDatabase *QPlatformIntegration::fontDatabase() const
+{
+ static QPlatformFontDatabase *db = 0;
+ if (!db) {
+ db = new QPlatformFontDatabase;
+ }
+ return db;
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qplatformintegration_qpa.h b/src/gui/kernel/qplatformintegration_qpa.h
new file mode 100644
index 0000000000..b1f4e5f5db
--- /dev/null
+++ b/src/gui/kernel/qplatformintegration_qpa.h
@@ -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 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$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMINTEGRATION_H
+#define QPLATFORMINTEGRATION_H
+
+#include <QtGui/qwindowdefs.h>
+#include <QtGui/private/qwindowsurface_p.h>
+#include <QtGui/private/qpixmapdata_p.h>
+#include <QtGui/qplatformscreen_qpa.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class QPlatformWindow;
+class QWindowSurface;
+class QBlittable;
+class QWidget;
+class QPlatformEventLoopIntegration;
+class QPlatformFontDatabase;
+
+class Q_GUI_EXPORT QPlatformIntegration
+{
+public:
+ virtual ~QPlatformIntegration() { }
+
+// GraphicsSystem functions
+ virtual QPixmapData *createPixmapData(QPixmapData::PixelType type) const = 0;
+ virtual QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId = 0) const = 0;
+ virtual QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const = 0;
+ virtual void moveToScreen(QWidget *window, int screen) {Q_UNUSED(window); Q_UNUSED(screen);}
+
+// Window System functions
+ virtual QList<QPlatformScreen *> screens() const = 0;
+ virtual bool isVirtualDesktop() { return false; }
+ virtual QPixmap grabWindow(WId window, int x, int y, int width, int height) const;
+
+//Fontdatabase integration.
+ virtual QPlatformFontDatabase *fontDatabase() const;
+
+// Experimental in mainthread eventloop integration
+// This should only be used if it is only possible to do window system event processing in
+// the gui thread. All of the functions in QWindowSystemInterface are thread safe.
+ virtual QPlatformEventLoopIntegration *createEventLoopIntegration() const;
+
+//jl:XXX should it be hasGLContext and do we need it at all?
+ virtual bool hasOpenGL() const;
+
+
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QPLATFORMINTEGRATION_H
diff --git a/src/gui/kernel/qplatformintegrationfactory_qpa.cpp b/src/gui/kernel/qplatformintegrationfactory_qpa.cpp
new file mode 100644
index 0000000000..9122e1a300
--- /dev/null
+++ b/src/gui/kernel/qplatformintegrationfactory_qpa.cpp
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** 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 "qplatformintegrationfactory_qpa_p.h"
+#include <QPlatformIntegrationPlugin>
+#include "private/qfactoryloader_p.h"
+#include "qmutex.h"
+
+#include "qapplication.h"
+#include "qdebug.h"
+
+QT_BEGIN_NAMESPACE
+
+#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
+Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
+ (QPlatformIntegrationFactoryInterface_iid, QLatin1String("/platforms"), Qt::CaseInsensitive))
+#endif
+
+QPlatformIntegration *QPlatformIntegrationFactory::create(const QString& key)
+{
+ QPlatformIntegration *ret = 0;
+ QStringList paramList = key.split(QLatin1Char(':'));
+ QString platform = paramList.takeFirst().toLower();
+
+#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
+ if (QPlatformIntegrationFactoryInterface *factory = qobject_cast<QPlatformIntegrationFactoryInterface*>(loader()->instance(platform)))
+ ret = factory->create(platform, paramList);
+#endif
+
+ return ret;
+}
+
+/*!
+ Returns the list of valid keys, i.e. the keys this factory can
+ create styles for.
+
+ \sa create()
+*/
+QStringList QPlatformIntegrationFactory::keys()
+{
+#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
+ QStringList list = loader()->keys();
+#else
+ QStringList list;
+#endif
+ return list;
+}
+
+QT_END_NAMESPACE
+
diff --git a/src/gui/kernel/qplatformintegrationfactory_qpa_p.h b/src/gui/kernel/qplatformintegrationfactory_qpa_p.h
new file mode 100644
index 0000000000..ba02d2c6b6
--- /dev/null
+++ b/src/gui/kernel/qplatformintegrationfactory_qpa_p.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMINTEGRATIONFACTORY_H
+#define QPLATFORMINTEGRATIONFACTORY_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/qstringlist.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class QPlatformIntegration;
+
+class QPlatformIntegrationFactory
+{
+public:
+ static QStringList keys();
+ static QPlatformIntegration *create(const QString&);
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QPLATFORMINTEGRATIONFACTORY_H
+
diff --git a/src/gui/kernel/qplatformintegrationplugin_qpa.cpp b/src/gui/kernel/qplatformintegrationplugin_qpa.cpp
new file mode 100644
index 0000000000..3bf2474f52
--- /dev/null
+++ b/src/gui/kernel/qplatformintegrationplugin_qpa.cpp
@@ -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 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 "qplatformintegrationplugin_qpa.h"
+
+QT_BEGIN_NAMESPACE
+
+QPlatformIntegrationPlugin::QPlatformIntegrationPlugin(QObject *parent)
+ : QObject(parent)
+{
+}
+
+QPlatformIntegrationPlugin::~QPlatformIntegrationPlugin()
+{
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qplatformintegrationplugin_qpa.h b/src/gui/kernel/qplatformintegrationplugin_qpa.h
new file mode 100644
index 0000000000..9c37cf72e5
--- /dev/null
+++ b/src/gui/kernel/qplatformintegrationplugin_qpa.h
@@ -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 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$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMINTEGRATIONPLUGIN_H
+#define QPLATFORMINTEGRATIONPLUGIN_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/qplugin.h>
+#include <QtCore/qfactoryinterface.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class QPlatformIntegration;
+
+struct QPlatformIntegrationFactoryInterface : public QFactoryInterface
+{
+ virtual QPlatformIntegration *create(const QString &key, const QStringList &paramList) = 0;
+};
+
+#define QPlatformIntegrationFactoryInterface_iid "com.nokia.Qt.QPlatformIntegrationFactoryInterface"
+
+Q_DECLARE_INTERFACE(QPlatformIntegrationFactoryInterface, QPlatformIntegrationFactoryInterface_iid)
+
+class Q_GUI_EXPORT QPlatformIntegrationPlugin : public QObject, public QPlatformIntegrationFactoryInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(QPlatformIntegrationFactoryInterface:QFactoryInterface)
+public:
+ explicit QPlatformIntegrationPlugin(QObject *parent = 0);
+ ~QPlatformIntegrationPlugin();
+
+ virtual QStringList keys() const = 0;
+ virtual QPlatformIntegration *create(const QString &key, const QStringList &paramList) = 0;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QPLATFORMINTEGRATIONPLUGIN_H
diff --git a/src/gui/kernel/qplatformscreen_qpa.cpp b/src/gui/kernel/qplatformscreen_qpa.cpp
new file mode 100644
index 0000000000..478d2d61ec
--- /dev/null
+++ b/src/gui/kernel/qplatformscreen_qpa.cpp
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** 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 "qplatformscreen_qpa.h"
+#include <QtGui/qapplication.h>
+#include <QtGui/qdesktopwidget.h>
+
+QWidget *QPlatformScreen::topLevelAt(const QPoint & pos) const
+{
+ QWidgetList list = QApplication::topLevelWidgets();
+ for (int i = list.size()-1; i >= 0; --i) {
+ QWidget *w = list[i];
+ //### mask is ignored
+ if (w != QApplication::desktop() && w->isVisible() && w->geometry().contains(pos))
+ return w;
+ }
+
+ return 0;
+}
+
+QSize QPlatformScreen::physicalSize() const
+{
+ static const int dpi = 100;
+ int width = geometry().width() / dpi * qreal(25.4) ;
+ int height = geometry().height() / dpi * qreal(25.4) ;
+ return QSize(width,height);
+}
+
diff --git a/src/gui/kernel/qplatformscreen_qpa.h b/src/gui/kernel/qplatformscreen_qpa.h
new file mode 100644
index 0000000000..1704f0f749
--- /dev/null
+++ b/src/gui/kernel/qplatformscreen_qpa.h
@@ -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 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$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMSCREEN_H
+#define QPLATFORMSCREEN_H
+
+#include <QtCore/qmetatype.h>
+#include <QtCore/qnamespace.h>
+#include <QtCore/qcoreevent.h>
+#include <QtCore/qvariant.h>
+#include <QtCore/qrect.h>
+#include <QtCore/qobject.h>
+
+#include <QtGui/qcursor.h>
+#include <QtGui/qimage.h>
+#include <QtGui/qwidget.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class Q_GUI_EXPORT QPlatformScreen : public QObject
+{
+ Q_OBJECT
+public:
+ virtual ~QPlatformScreen() { }
+
+ virtual QRect geometry() const = 0;
+ virtual QRect availableGeometry() const {return geometry();}
+ virtual int depth() const = 0;
+ virtual QImage::Format format() const = 0;
+ virtual QSize physicalSize() const;
+ virtual void setDirty(const QRect &) {}
+ virtual QWidget *topLevelAt(const QPoint &point) const;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QPLATFORMSCREEN_H
diff --git a/src/gui/kernel/qplatformwindow_qpa.cpp b/src/gui/kernel/qplatformwindow_qpa.cpp
new file mode 100644
index 0000000000..9d722d8595
--- /dev/null
+++ b/src/gui/kernel/qplatformwindow_qpa.cpp
@@ -0,0 +1,129 @@
+/****************************************************************************
+**
+** 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 "qplatformwindow_qpa.h"
+
+#include <QtGui/qwidget.h>
+
+class QPlatformWindowPrivate
+{
+ QWidget *tlw;
+ QRect rect;
+ Qt::WindowFlags flags;
+ friend class QPlatformWindow;
+};
+
+QPlatformWindow::QPlatformWindow(QWidget *tlw)
+ : d_ptr(new QPlatformWindowPrivate)
+{
+ Q_D(QPlatformWindow);
+ d->tlw = tlw;
+ tlw->setPlatformWindow(this);
+}
+
+QPlatformWindow::~QPlatformWindow()
+{
+}
+
+QWidget *QPlatformWindow::widget() const
+{
+ Q_D(const QPlatformWindow);
+ return d->tlw;
+}
+
+void QPlatformWindow::setGeometry(const QRect &rect)
+{
+ Q_D(QPlatformWindow);
+ d->rect = rect;
+}
+
+QRect QPlatformWindow::geometry() const
+{
+ Q_D(const QPlatformWindow);
+ return d->rect;
+}
+
+/*!
+Reimplemented in subclasses to show the surface if \a visible is \c true, and hide it if \a visible is \c false.
+*/
+void QPlatformWindow::setVisible(bool visible)
+{
+ Q_UNUSED(visible);
+}
+/*!
+Requests setting the window flags of this surface to \a type. Returns the actual flags set.
+*/
+Qt::WindowFlags QPlatformWindow::setWindowFlags(Qt::WindowFlags flags)
+{
+ Q_D(QPlatformWindow);
+ d->flags = flags;
+ return flags;
+}
+
+/*!
+ Returns the effective window flags for this surface.
+*/
+Qt::WindowFlags QPlatformWindow::windowFlags() const
+{
+ Q_D(const QPlatformWindow);
+ return d->flags;
+}
+
+WId QPlatformWindow::winId() const { return WId(0); }
+
+void QPlatformWindow::setParent(const QPlatformWindow *) { qWarning("This plugin does not support setParent!"); }
+
+void QPlatformWindow::setWindowTitle(const QString &) {}
+
+void QPlatformWindow::raise() { qWarning("This plugin does not support raise()"); }
+
+void QPlatformWindow::lower() { qWarning("This plugin does not support lower()"); }
+
+void QPlatformWindow::setOpacity(qreal level)
+{
+ Q_UNUSED(level);
+ qWarning("This plugin does not support setting window opacity");
+}
+
+QPlatformGLContext *QPlatformWindow::glContext() const
+{
+ return 0;
+}
diff --git a/src/gui/kernel/qplatformwindow_qpa.h b/src/gui/kernel/qplatformwindow_qpa.h
new file mode 100644
index 0000000000..6dfba054b7
--- /dev/null
+++ b/src/gui/kernel/qplatformwindow_qpa.h
@@ -0,0 +1,94 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+#ifndef QPLATFORMWINDOW_H
+#define QPLATFORMWINDOW_H
+
+
+#include <QtCore/qscopedpointer.h>
+#include <QtCore/qrect.h>
+#include <QtCore/qstring.h>
+#include <QtGui/qwindowdefs.h>
+
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class QPlatformWindowPrivate;
+class QWidget;
+class QPlatformGLContext;
+
+class Q_GUI_EXPORT QPlatformWindow
+{
+ Q_DECLARE_PRIVATE(QPlatformWindow);
+public:
+ QPlatformWindow(QWidget *tlw);
+ virtual ~QPlatformWindow();
+
+ QWidget *widget() const;
+ virtual void setGeometry(const QRect &rect);
+ virtual QRect geometry() const;
+
+ virtual void setVisible(bool visible);
+ virtual Qt::WindowFlags setWindowFlags(Qt::WindowFlags flags);
+ virtual Qt::WindowFlags windowFlags() const;
+ virtual WId winId() const;
+ virtual void setParent(const QPlatformWindow *window);
+
+ virtual void setWindowTitle(const QString &);
+ virtual void raise();
+ virtual void lower();
+
+ virtual void setOpacity(qreal level);
+
+ virtual QPlatformGLContext *glContext() const;
+protected:
+ QScopedPointer<QPlatformWindowPrivate> d_ptr;
+private:
+ Q_DISABLE_COPY(QPlatformWindow);
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+#endif //QPLATFORMWINDOW_H
diff --git a/src/gui/kernel/qplatformwindowformat_qpa.cpp b/src/gui/kernel/qplatformwindowformat_qpa.cpp
new file mode 100644
index 0000000000..d497e8573e
--- /dev/null
+++ b/src/gui/kernel/qplatformwindowformat_qpa.cpp
@@ -0,0 +1,1012 @@
+/****************************************************************************
+**
+** 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 "qplatformwindowformat_qpa.h"
+
+#include <QtCore/QDebug>
+
+Q_GLOBAL_STATIC(QPlatformWindowFormat, q_platformwindow_default_format);
+
+class QPlatformWindowFormatPrivate
+{
+public:
+ QPlatformWindowFormatPrivate()
+ : ref(1)
+ , opts(QPlatformWindowFormat::DoubleBuffer | QPlatformWindowFormat::DepthBuffer
+ | QPlatformWindowFormat::Rgba | QPlatformWindowFormat::DirectRendering
+ | QPlatformWindowFormat::StencilBuffer | QPlatformWindowFormat::DeprecatedFunctions
+ | QPlatformWindowFormat::UseDefaultSharedContext)
+ , depthSize(-1)
+ , accumSize(-1)
+ , stencilSize(-1)
+ , redSize(-1)
+ , greenSize(-1)
+ , blueSize(-1)
+ , alphaSize(-1)
+ , numSamples(-1)
+ , swapInterval(-1)
+ , windowApi(QPlatformWindowFormat::Raster)
+ , sharedContext(0)
+ {
+ }
+
+ QPlatformWindowFormatPrivate(const QPlatformWindowFormatPrivate *other)
+ : ref(1),
+ opts(other->opts),
+ depthSize(other->depthSize),
+ accumSize(other->accumSize),
+ stencilSize(other->stencilSize),
+ redSize(other->redSize),
+ greenSize(other->greenSize),
+ blueSize(other->blueSize),
+ alphaSize(other->alphaSize),
+ numSamples(other->numSamples),
+ swapInterval(other->swapInterval),
+ windowApi(other->windowApi),
+ sharedContext(other->sharedContext)
+ {
+ }
+ QAtomicInt ref;
+ QPlatformWindowFormat::FormatOptions opts;
+ int depthSize;
+ int accumSize;
+ int stencilSize;
+ int redSize;
+ int greenSize;
+ int blueSize;
+ int alphaSize;
+ int numSamples;
+ int swapInterval;
+ QPlatformWindowFormat::WindowApi windowApi;
+ QPlatformGLContext *sharedContext;
+};
+
+/*!
+ \class QPlatformWindowFormat
+ \brief The QPlatformWindowFormat class specifies the display format of an OpenGL
+ rendering context.
+
+ \ingroup painting-3D
+
+ A display format has several characteristics:
+ \list
+ \i \link setDoubleBuffer() Double or single buffering.\endlink
+ \i \link setDepth() Depth buffer.\endlink
+ \i \link setRgba() RGBA or color index mode.\endlink
+ \i \link setAlpha() Alpha channel.\endlink
+ \i \link setAccum() Accumulation buffer.\endlink
+ \i \link setStencil() Stencil buffer.\endlink
+ \i \link setStereo() Stereo buffers.\endlink
+ \i \link setDirectRendering() Direct rendering.\endlink
+ \i \link setOverlay() Presence of an overlay.\endlink
+ \i \link setPlane() Plane of an overlay.\endlink
+ \i \link setSampleBuffers() Multisample buffers.\endlink
+ \endlist
+
+ You can also specify preferred bit depths for the color buffer,
+ depth buffer, alpha buffer, accumulation buffer and the stencil
+ buffer with the functions: setRedBufferSize(), setGreenBufferSize(),
+ setBlueBufferSize(), setDepthBufferSize(), setAlphaBufferSize(),
+ setAccumBufferSize() and setStencilBufferSize().
+
+ Note that even if you specify that you prefer a 32 bit depth
+ buffer (e.g. with setDepthBufferSize(32)), the format that is
+ chosen may not have a 32 bit depth buffer, even if there is a
+ format available with a 32 bit depth buffer. The main reason for
+ this is how the system dependant picking algorithms work on the
+ different platforms, and some format options may have higher
+ precedence than others.
+
+ You create and tell a QPlatformWindowFormat object what rendering options you
+ want from an OpenGL rendering context.
+
+ OpenGL drivers or accelerated hardware may or may not support
+ advanced features such as alpha channel or stereographic viewing.
+ If you request some features that the driver/hardware does not
+ provide when you create a QGLWidget, you will get a rendering
+ context with the nearest subset of features.
+
+ There are different ways to define the display characteristics of
+ a rendering context. One is to create a QPlatformWindowFormat and make it the
+ default for the entire application:
+ \snippet doc/src/snippets/code/src_opengl_qgl.cpp 0
+
+ Or you can specify the desired format when creating an object of
+ your QGLWidget subclass:
+ \snippet doc/src/snippets/code/src_opengl_qgl.cpp 1
+
+ After the widget has been created, you can find out which of the
+ requested features the system was able to provide:
+ \snippet doc/src/snippets/code/src_opengl_qgl.cpp 2
+
+ \legalese
+ OpenGL is a trademark of Silicon Graphics, Inc. in the
+ United States and other countries.
+ \endlegalese
+
+ \sa QGLContext, QGLWidget
+*/
+
+/*!
+ Constructs a QPlatformWindowFormat object with the following default settings:
+ \list
+ \i \link setDoubleBuffer() Double buffer:\endlink Enabled.
+ \i \link setDepth() Depth buffer:\endlink Enabled.
+ \i \link setRgba() RGBA:\endlink Enabled (i.e., color index disabled).
+ \i \link setAlpha() Alpha channel:\endlink Disabled.
+ \i \link setAccum() Accumulator buffer:\endlink Disabled.
+ \i \link setStencil() Stencil buffer:\endlink Enabled.
+ \i \link setStereo() Stereo:\endlink Disabled.
+ \i \link setDirectRendering() Direct rendering:\endlink Enabled.
+ \i \link setOverlay() Overlay:\endlink Disabled.
+ \i \link setPlane() Plane:\endlink 0 (i.e., normal plane).
+ \i \link setSampleBuffers() Multisample buffers:\endlink Disabled.
+ \endlist
+*/
+
+QPlatformWindowFormat::QPlatformWindowFormat()
+{
+ d = new QPlatformWindowFormatPrivate;
+}
+
+
+/*!
+ Creates a QPlatformWindowFormat object that is a copy of the current
+ defaultFormat().
+
+ If \a options is not 0, the default format is modified by the
+ specified format options. The \a options parameter should be
+ QGL::FormatOption values OR'ed together.
+
+ This constructor makes it easy to specify a certain desired format
+ in classes derived from QGLWidget, for example:
+ \snippet doc/src/snippets/code/src_opengl_qgl.cpp 3
+
+ Note that there are QGL::FormatOption values to turn format settings
+ both on and off, e.g. QGL::DepthBuffer and QGL::NoDepthBuffer,
+ QGL::DirectRendering and QGL::IndirectRendering, etc.
+
+ The \a plane parameter defaults to 0 and is the plane which this
+ format should be associated with. Not all OpenGL implementations
+ supports overlay/underlay rendering planes.
+
+ \sa defaultFormat(), setOption(), setPlane()
+*/
+
+QPlatformWindowFormat::QPlatformWindowFormat(QPlatformWindowFormat::FormatOptions options)
+{
+ d = new QPlatformWindowFormatPrivate;
+ QPlatformWindowFormat::FormatOptions newOpts = options;
+ d->opts = defaultFormat().d->opts;
+ d->opts |= (newOpts & 0xffff);
+ d->opts &= ~(newOpts >> 16);
+}
+
+/*!
+ \internal
+*/
+void QPlatformWindowFormat::detach()
+{
+ if (d->ref != 1) {
+ QPlatformWindowFormatPrivate *newd = new QPlatformWindowFormatPrivate(d);
+ if (!d->ref.deref())
+ delete d;
+ d = newd;
+ }
+}
+
+/*!
+ Constructs a copy of \a other.
+*/
+
+QPlatformWindowFormat::QPlatformWindowFormat(const QPlatformWindowFormat &other)
+{
+ d = other.d;
+ d->ref.ref();
+}
+
+/*!
+ Assigns \a other to this object.
+*/
+
+QPlatformWindowFormat &QPlatformWindowFormat::operator=(const QPlatformWindowFormat &other)
+{
+ if (d != other.d) {
+ other.d->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = other.d;
+ }
+ return *this;
+}
+
+/*!
+ Destroys the QPlatformWindowFormat.
+*/
+QPlatformWindowFormat::~QPlatformWindowFormat()
+{
+ if (!d->ref.deref())
+ delete d;
+}
+
+/*!
+ \fn bool QPlatformWindowFormat::doubleBuffer() const
+
+ Returns true if double buffering is enabled; otherwise returns
+ false. Double buffering is enabled by default.
+
+ \sa setDoubleBuffer()
+*/
+
+/*!
+ If \a enable is true sets double buffering; otherwise sets single
+ buffering.
+
+ Double buffering is enabled by default.
+
+ Double buffering is a technique where graphics are rendered on an
+ off-screen buffer and not directly to the screen. When the drawing
+ has been completed, the program calls a swapBuffers() function to
+ exchange the screen contents with the buffer. The result is
+ flicker-free drawing and often better performance.
+
+ \sa doubleBuffer(), QGLContext::swapBuffers(),
+ QGLWidget::swapBuffers()
+*/
+
+void QPlatformWindowFormat::setDoubleBuffer(bool enable)
+{
+ setOption(enable ? QPlatformWindowFormat::DoubleBuffer : QPlatformWindowFormat::SingleBuffer);
+}
+
+
+/*!
+ \fn bool QPlatformWindowFormat::depth() const
+
+ Returns true if the depth buffer is enabled; otherwise returns
+ false. The depth buffer is enabled by default.
+
+ \sa setDepth(), setDepthBufferSize()
+*/
+
+/*!
+ If \a enable is true enables the depth buffer; otherwise disables
+ the depth buffer.
+
+ The depth buffer is enabled by default.
+
+ The purpose of a depth buffer (or Z-buffering) is to remove hidden
+ surfaces. Pixels are assigned Z values based on the distance to
+ the viewer. A pixel with a high Z value is closer to the viewer
+ than a pixel with a low Z value. This information is used to
+ decide whether to draw a pixel or not.
+
+ \sa depth(), setDepthBufferSize()
+*/
+
+void QPlatformWindowFormat::setDepth(bool enable)
+{
+ setOption(enable ? QPlatformWindowFormat::DepthBuffer : QPlatformWindowFormat::NoDepthBuffer);
+}
+
+
+/*!
+ \fn bool QPlatformWindowFormat::rgba() const
+
+ Returns true if RGBA color mode is set. Returns false if color
+ index mode is set. The default color mode is RGBA.
+
+ \sa setRgba()
+*/
+
+/*!
+ If \a enable is true sets RGBA mode. If \a enable is false sets
+ color index mode.
+
+ The default color mode is RGBA.
+
+ RGBA is the preferred mode for most OpenGL applications. In RGBA
+ color mode you specify colors as red + green + blue + alpha
+ quadruplets.
+
+ In color index mode you specify an index into a color lookup
+ table.
+
+ \sa rgba()
+*/
+
+void QPlatformWindowFormat::setRgba(bool enable)
+{
+ setOption(enable ? QPlatformWindowFormat::Rgba : QPlatformWindowFormat::ColorIndex);
+}
+
+
+/*!
+ \fn bool QPlatformWindowFormat::alpha() const
+
+ Returns true if the alpha buffer in the framebuffer is enabled;
+ otherwise returns false. The alpha buffer is disabled by default.
+
+ \sa setAlpha(), setAlphaBufferSize()
+*/
+
+/*!
+ If \a enable is true enables the alpha buffer; otherwise disables
+ the alpha buffer.
+
+ The alpha buffer is disabled by default.
+
+ The alpha buffer is typically used for implementing transparency
+ or translucency. The A in RGBA specifies the transparency of a
+ pixel.
+
+ \sa alpha(), setAlphaBufferSize()
+*/
+
+void QPlatformWindowFormat::setAlpha(bool enable)
+{
+ setOption(enable ? QPlatformWindowFormat::AlphaChannel : QPlatformWindowFormat::NoAlphaChannel);
+}
+
+
+/*!
+ \fn bool QPlatformWindowFormat::accum() const
+
+ Returns true if the accumulation buffer is enabled; otherwise
+ returns false. The accumulation buffer is disabled by default.
+
+ \sa setAccum(), setAccumBufferSize()
+*/
+
+/*!
+ If \a enable is true enables the accumulation buffer; otherwise
+ disables the accumulation buffer.
+
+ The accumulation buffer is disabled by default.
+
+ The accumulation buffer is used to create blur effects and
+ multiple exposures.
+
+ \sa accum(), setAccumBufferSize()
+*/
+
+void QPlatformWindowFormat::setAccum(bool enable)
+{
+ setOption(enable ? QPlatformWindowFormat::AccumBuffer : QPlatformWindowFormat::NoAccumBuffer);
+}
+
+
+/*!
+ \fn bool QPlatformWindowFormat::stencil() const
+
+ Returns true if the stencil buffer is enabled; otherwise returns
+ false. The stencil buffer is enabled by default.
+
+ \sa setStencil(), setStencilBufferSize()
+*/
+
+/*!
+ If \a enable is true enables the stencil buffer; otherwise
+ disables the stencil buffer.
+
+ The stencil buffer is enabled by default.
+
+ The stencil buffer masks certain parts of the drawing area so that
+ masked parts are not drawn on.
+
+ \sa stencil(), setStencilBufferSize()
+*/
+
+void QPlatformWindowFormat::setStencil(bool enable)
+{
+ setOption(enable ? QPlatformWindowFormat::StencilBuffer: QPlatformWindowFormat::NoStencilBuffer);
+}
+
+
+/*!
+ \fn bool QPlatformWindowFormat::stereo() const
+
+ Returns true if stereo buffering is enabled; otherwise returns
+ false. Stereo buffering is disabled by default.
+
+ \sa setStereo()
+*/
+
+/*!
+ If \a enable is true enables stereo buffering; otherwise disables
+ stereo buffering.
+
+ Stereo buffering is disabled by default.
+
+ Stereo buffering provides extra color buffers to generate left-eye
+ and right-eye images.
+
+ \sa stereo()
+*/
+
+void QPlatformWindowFormat::setStereo(bool enable)
+{
+ setOption(enable ? QPlatformWindowFormat::StereoBuffers : QPlatformWindowFormat::NoStereoBuffers);
+}
+
+
+/*!
+ \fn bool QPlatformWindowFormat::directRendering() const
+
+ Returns true if direct rendering is enabled; otherwise returns
+ false.
+
+ Direct rendering is enabled by default.
+
+ \sa setDirectRendering()
+*/
+
+/*!
+ If \a enable is true enables direct rendering; otherwise disables
+ direct rendering.
+
+ Direct rendering is enabled by default.
+
+ Enabling this option will make OpenGL bypass the underlying window
+ system and render directly from hardware to the screen, if this is
+ supported by the system.
+
+ \sa directRendering()
+*/
+
+void QPlatformWindowFormat::setDirectRendering(bool enable)
+{
+ setOption(enable ? QPlatformWindowFormat::DirectRendering : QPlatformWindowFormat::IndirectRendering);
+}
+
+/*!
+ \fn bool QPlatformWindowFormat::sampleBuffers() const
+
+ Returns true if multisample buffer support is enabled; otherwise
+ returns false.
+
+ The multisample buffer is disabled by default.
+
+ \sa setSampleBuffers()
+*/
+
+/*!
+ If \a enable is true, a GL context with multisample buffer support
+ is picked; otherwise ignored.
+
+ \sa sampleBuffers(), setSamples(), samples()
+*/
+void QPlatformWindowFormat::setSampleBuffers(bool enable)
+{
+ setOption(enable ? QPlatformWindowFormat::SampleBuffers : QPlatformWindowFormat::NoSampleBuffers);
+}
+
+void QPlatformWindowFormat::setUseDefaultSharedContext(bool enable)
+{
+ if (enable) {
+ setOption(QPlatformWindowFormat::UseDefaultSharedContext);
+ d->sharedContext = 0;
+ } else {
+ setOption(QPlatformWindowFormat::NoDefaultSharedContext);
+ }
+}
+
+/*!
+ Returns the number of samples per pixel when multisampling is
+ enabled. By default, the highest number of samples that is
+ available is used.
+
+ \sa setSampleBuffers(), sampleBuffers(), setSamples()
+*/
+int QPlatformWindowFormat::samples() const
+{
+ return d->numSamples;
+}
+
+/*!
+ Set the preferred number of samples per pixel when multisampling
+ is enabled to \a numSamples. By default, the highest number of
+ samples available is used.
+
+ \sa setSampleBuffers(), sampleBuffers(), samples()
+*/
+void QPlatformWindowFormat::setSamples(int numSamples)
+{
+ detach();
+ if (numSamples < 0) {
+ qWarning("QPlatformWindowFormat::setSamples: Cannot have negative number of samples per pixel %d", numSamples);
+ return;
+ }
+ d->numSamples = numSamples;
+ setSampleBuffers(numSamples > 0);
+}
+
+/*!
+ \since 4.2
+
+ Set the preferred swap interval. This can be used to sync the GL
+ drawing into a system window to the vertical refresh of the screen.
+ Setting an \a interval value of 0 will turn the vertical refresh syncing
+ off, any value higher than 0 will turn the vertical syncing on.
+
+ Under Windows and under X11, where the \c{WGL_EXT_swap_control}
+ and \c{GLX_SGI_video_sync} extensions are used, the \a interval
+ parameter can be used to set the minimum number of video frames
+ that are displayed before a buffer swap will occur. In effect,
+ setting the \a interval to 10, means there will be 10 vertical
+ retraces between every buffer swap.
+
+ Under Windows the \c{WGL_EXT_swap_control} extension has to be present,
+ and under X11 the \c{GLX_SGI_video_sync} extension has to be present.
+*/
+void QPlatformWindowFormat::setSwapInterval(int interval)
+{
+ detach();
+ d->swapInterval = interval;
+}
+
+/*!
+ \since 4.2
+
+ Returns the currently set swap interval. -1 is returned if setting
+ the swap interval isn't supported in the system GL implementation.
+*/
+int QPlatformWindowFormat::swapInterval() const
+{
+ return d->swapInterval;
+}
+
+void QPlatformWindowFormat::setWindowApi(QPlatformWindowFormat::WindowApi api)
+{
+ detach();
+ d->windowApi = api;
+}
+
+QPlatformWindowFormat::WindowApi QPlatformWindowFormat::windowApi() const
+{
+ return d->windowApi;
+}
+
+void QPlatformWindowFormat::setSharedContext(QPlatformGLContext *context)
+{
+ setUseDefaultSharedContext(false);
+ d->sharedContext = context;
+}
+
+QPlatformGLContext *QPlatformWindowFormat::sharedGLContext() const
+{
+ return d->sharedContext;
+}
+
+///*!
+// \fn bool QPlatformWindowFormat::hasOverlay() const
+
+// Returns true if overlay plane is enabled; otherwise returns false.
+
+// Overlay is disabled by default.
+
+// \sa setOverlay()
+//*/
+
+///*!
+// If \a enable is true enables an overlay plane; otherwise disables
+// the overlay plane.
+
+// Enabling the overlay plane will cause QGLWidget to create an
+// additional context in an overlay plane. See the QGLWidget
+// documentation for further information.
+
+// \sa hasOverlay()
+//*/
+
+//void QPlatformWindowFormat::setOverlay(bool enable)
+//{
+// setOption(enable ? QPlatformWindowFormat::HasOverlay : QPlatformWindowFormat::NoOverlay);
+//}
+
+/*!
+ Sets the format option to \a opt.
+
+ \sa testOption()
+*/
+
+void QPlatformWindowFormat::setOption(QPlatformWindowFormat::FormatOptions opt)
+{
+ detach();
+ if (opt & 0xffff)
+ d->opts |= opt;
+ else
+ d->opts &= ~(opt >> 16);
+}
+
+
+
+/*!
+ Returns true if format option \a opt is set; otherwise returns false.
+
+ \sa setOption()
+*/
+
+bool QPlatformWindowFormat::testOption(QPlatformWindowFormat::FormatOptions opt) const
+{
+ if (opt & 0xffff)
+ return (d->opts & opt) != 0;
+ else
+ return (d->opts & (opt >> 16)) == 0;
+}
+
+/*!
+ Set the minimum depth buffer size to \a size.
+
+ \sa depthBufferSize(), setDepth(), depth()
+*/
+void QPlatformWindowFormat::setDepthBufferSize(int size)
+{
+ detach();
+ if (size < 0) {
+ qWarning("QPlatformWindowFormat::setDepthBufferSize: Cannot set negative depth buffer size %d", size);
+ return;
+ }
+ d->depthSize = size;
+ setDepth(size > 0);
+}
+
+/*!
+ Returns the depth buffer size.
+
+ \sa depth(), setDepth(), setDepthBufferSize()
+*/
+int QPlatformWindowFormat::depthBufferSize() const
+{
+ return d->depthSize;
+}
+
+/*!
+ \since 4.2
+
+ Set the preferred red buffer size to \a size.
+
+ \sa setGreenBufferSize(), setBlueBufferSize(), setAlphaBufferSize()
+*/
+void QPlatformWindowFormat::setRedBufferSize(int size)
+{
+ detach();
+ if (size < 0) {
+ qWarning("QPlatformWindowFormat::setRedBufferSize: Cannot set negative red buffer size %d", size);
+ return;
+ }
+ d->redSize = size;
+}
+
+/*!
+ \since 4.2
+
+ Returns the red buffer size.
+
+ \sa setRedBufferSize()
+*/
+int QPlatformWindowFormat::redBufferSize() const
+{
+ return d->redSize;
+}
+
+/*!
+ \since 4.2
+
+ Set the preferred green buffer size to \a size.
+
+ \sa setRedBufferSize(), setBlueBufferSize(), setAlphaBufferSize()
+*/
+void QPlatformWindowFormat::setGreenBufferSize(int size)
+{
+ detach();
+ if (size < 0) {
+ qWarning("QPlatformWindowFormat::setGreenBufferSize: Cannot set negative green buffer size %d", size);
+ return;
+ }
+ d->greenSize = size;
+}
+
+/*!
+ \since 4.2
+
+ Returns the green buffer size.
+
+ \sa setGreenBufferSize()
+*/
+int QPlatformWindowFormat::greenBufferSize() const
+{
+ return d->greenSize;
+}
+
+/*!
+ \since 4.2
+
+ Set the preferred blue buffer size to \a size.
+
+ \sa setRedBufferSize(), setGreenBufferSize(), setAlphaBufferSize()
+*/
+void QPlatformWindowFormat::setBlueBufferSize(int size)
+{
+ detach();
+ if (size < 0) {
+ qWarning("QPlatformWindowFormat::setBlueBufferSize: Cannot set negative blue buffer size %d", size);
+ return;
+ }
+ d->blueSize = size;
+}
+
+/*!
+ \since 4.2
+
+ Returns the blue buffer size.
+
+ \sa setBlueBufferSize()
+*/
+int QPlatformWindowFormat::blueBufferSize() const
+{
+ return d->blueSize;
+}
+
+/*!
+ Set the preferred alpha buffer size to \a size.
+ This function implicitly enables the alpha channel.
+
+ \sa setRedBufferSize(), setGreenBufferSize(), alphaBufferSize()
+*/
+void QPlatformWindowFormat::setAlphaBufferSize(int size)
+{
+ detach();
+ if (size < 0) {
+ qWarning("QPlatformWindowFormat::setAlphaBufferSize: Cannot set negative alpha buffer size %d", size);
+ return;
+ }
+ d->alphaSize = size;
+ setAlpha(size > 0);
+}
+
+/*!
+ Returns the alpha buffer size.
+
+ \sa alpha(), setAlpha(), setAlphaBufferSize()
+*/
+int QPlatformWindowFormat::alphaBufferSize() const
+{
+ return d->alphaSize;
+}
+
+/*!
+ Set the preferred accumulation buffer size, where \a size is the
+ bit depth for each RGBA component.
+
+ \sa accum(), setAccum(), accumBufferSize()
+*/
+void QPlatformWindowFormat::setAccumBufferSize(int size)
+{
+ detach();
+ if (size < 0) {
+ qWarning("QPlatformWindowFormat::setAccumBufferSize: Cannot set negative accumulate buffer size %d", size);
+ return;
+ }
+ d->accumSize = size;
+ setAccum(size > 0);
+}
+
+/*!
+ Returns the accumulation buffer size.
+
+ \sa setAccumBufferSize(), accum(), setAccum()
+*/
+int QPlatformWindowFormat::accumBufferSize() const
+{
+ return d->accumSize;
+}
+
+/*!
+ Set the preferred stencil buffer size to \a size.
+
+ \sa stencilBufferSize(), setStencil(), stencil()
+*/
+void QPlatformWindowFormat::setStencilBufferSize(int size)
+{
+ detach();
+ if (size < 0) {
+ qWarning("QPlatformWindowFormat::setStencilBufferSize: Cannot set negative stencil buffer size %d", size);
+ return;
+ }
+ d->stencilSize = size;
+ setStencil(size > 0);
+}
+
+/*!
+ Returns the stencil buffer size.
+
+ \sa stencil(), setStencil(), setStencilBufferSize()
+*/
+int QPlatformWindowFormat::stencilBufferSize() const
+{
+ return d->stencilSize;
+}
+
+/*!
+ Returns the default QPlatformWindowFormat for the application. All QGLWidget
+ objects that are created use this format unless another format is
+ specified, e.g. when they are constructed.
+
+ If no special default format has been set using
+ setDefaultFormat(), the default format is the same as that created
+ with QPlatformWindowFormat().
+
+ \sa setDefaultFormat()
+*/
+
+QPlatformWindowFormat QPlatformWindowFormat::defaultFormat()
+{
+ return *q_platformwindow_default_format();
+}
+
+/*!
+ Sets a new default QPlatformWindowFormat for the application to \a f. For
+ example, to set single buffering as the default instead of double
+ buffering, your main() might contain code like this:
+ \snippet doc/src/snippets/code/src_opengl_qgl.cpp 4
+
+ \sa defaultFormat()
+*/
+
+void QPlatformWindowFormat::setDefaultFormat(const QPlatformWindowFormat &f)
+{
+ *q_platformwindow_default_format() = f;
+}
+
+
+/*!
+ Returns the default QPlatformWindowFormat for overlay contexts.
+
+ The default overlay format is:
+ \list
+ \i \link setDoubleBuffer() Double buffer:\endlink Disabled.
+ \i \link setDepth() Depth buffer:\endlink Disabled.
+ \i \link setRgba() RGBA:\endlink Disabled (i.e., color index enabled).
+ \i \link setAlpha() Alpha channel:\endlink Disabled.
+ \i \link setAccum() Accumulator buffer:\endlink Disabled.
+ \i \link setStencil() Stencil buffer:\endlink Disabled.
+ \i \link setStereo() Stereo:\endlink Disabled.
+ \i \link setDirectRendering() Direct rendering:\endlink Enabled.
+ \i \link setOverlay() Overlay:\endlink Disabled.
+ \i \link setSampleBuffers() Multisample buffers:\endlink Disabled.
+ \i \link setPlane() Plane:\endlink 1 (i.e., first overlay plane).
+ \endlist
+
+ \sa setDefaultFormat()
+*/
+
+//QPlatformWindowFormat QPlatformWindowFormat::defaultOverlayFormat()
+//{
+// return *defaultOverlayFormatInstance();
+//}
+
+///*!
+// Sets a new default QPlatformWindowFormat for overlay contexts to \a f. This
+// format is used whenever a QGLWidget is created with a format that
+// hasOverlay() enabled.
+
+// For example, to get a double buffered overlay context (if
+// available), use code like this:
+
+// \snippet doc/src/snippets/code/src_opengl_qgl.cpp 5
+
+// As usual, you can find out after widget creation whether the
+// underlying OpenGL system was able to provide the requested
+// specification:
+
+// \snippet doc/src/snippets/code/src_opengl_qgl.cpp 6
+
+// \sa defaultOverlayFormat()
+//*/
+
+//void QPlatformWindowFormat::setDefaultOverlayFormat(const QPlatformWindowFormat &f)
+//{
+// QPlatformWindowFormat *defaultFormat = defaultOverlayFormatInstance();
+// *defaultFormat = f;
+// // Make sure the user doesn't request that the overlays themselves
+// // have overlays, since it is unlikely that the system supports
+// // infinitely many planes...
+// defaultFormat->setOverlay(false);
+//}
+
+
+/*!
+ Returns true if all the options of the two QPlatformWindowFormat objects
+ \a a and \a b are equal; otherwise returns false.
+
+ \relates QPlatformWindowFormat
+*/
+
+bool operator==(const QPlatformWindowFormat& a, const QPlatformWindowFormat& b)
+{
+ return (a.d == b.d) || ((int) a.d->opts == (int) b.d->opts
+ && a.d->alphaSize == b.d->alphaSize
+ && a.d->accumSize == b.d->accumSize
+ && a.d->stencilSize == b.d->stencilSize
+ && a.d->depthSize == b.d->depthSize
+ && a.d->redSize == b.d->redSize
+ && a.d->greenSize == b.d->greenSize
+ && a.d->blueSize == b.d->blueSize
+ && a.d->numSamples == b.d->numSamples
+ && a.d->swapInterval == b.d->swapInterval
+ && a.d->windowApi == b.d->windowApi);
+}
+
+
+/*!
+ Returns false if all the options of the two QPlatformWindowFormat objects
+ \a a and \a b are equal; otherwise returns true.
+
+ \relates QPlatformWindowFormat
+*/
+
+bool operator!=(const QPlatformWindowFormat& a, const QPlatformWindowFormat& b)
+{
+ return !(a == b);
+}
+
+#ifndef QT_NO_DEBUG_STREAM
+QDebug operator<<(QDebug dbg, const QPlatformWindowFormat &f)
+{
+ const QPlatformWindowFormatPrivate * const d = f.d;
+
+ dbg.nospace() << "QGLFormat("
+ << "options " << d->opts
+ << ", depthBufferSize " << d->depthSize
+ << ", accumBufferSize " << d->accumSize
+ << ", stencilBufferSize " << d->stencilSize
+ << ", redBufferSize " << d->redSize
+ << ", greenBufferSize " << d->greenSize
+ << ", blueBufferSize " << d->blueSize
+ << ", alphaBufferSize " << d->alphaSize
+ << ", samples " << d->numSamples
+ << ", swapInterval " << d->swapInterval
+ << ')';
+
+ return dbg.space();
+}
+#endif
diff --git a/src/gui/kernel/qplatformwindowformat_qpa.h b/src/gui/kernel/qplatformwindowformat_qpa.h
new file mode 100644
index 0000000000..63df76add8
--- /dev/null
+++ b/src/gui/kernel/qplatformwindowformat_qpa.h
@@ -0,0 +1,241 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+#ifndef QPLATFORMWINDOWFORMAT_QPA_H
+#define QPLATFORMWINDOWFORMAT_QPA_H
+
+#include <QtGui/QPlatformWindow>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class QPlatformWindowFormatPrivate;
+
+class Q_GUI_EXPORT QPlatformWindowFormat
+{
+public:
+ enum FormatOption {
+ DoubleBuffer = 0x0001,
+ DepthBuffer = 0x0002,
+ Rgba = 0x0004,
+ AlphaChannel = 0x0008,
+ AccumBuffer = 0x0010,
+ StencilBuffer = 0x0020,
+ StereoBuffers = 0x0040,
+ DirectRendering = 0x0080,
+ HasOverlay = 0x0100,
+ SampleBuffers = 0x0200,
+ DeprecatedFunctions = 0x0400,
+ UseDefaultSharedContext = 0x0800,
+ SingleBuffer = DoubleBuffer << 16,
+ NoDepthBuffer = DepthBuffer << 16,
+ ColorIndex = Rgba << 16,
+ NoAlphaChannel = AlphaChannel << 16,
+ NoAccumBuffer = AccumBuffer << 16,
+ NoStencilBuffer = StencilBuffer << 16,
+ NoStereoBuffers = StereoBuffers << 16,
+ IndirectRendering = DirectRendering << 16,
+ NoOverlay = HasOverlay << 16,
+ NoSampleBuffers = SampleBuffers << 16,
+ NoDeprecatedFunctions = DeprecatedFunctions << 16,
+ NoDefaultSharedContext = UseDefaultSharedContext << 16
+
+ };
+ Q_DECLARE_FLAGS(FormatOptions, FormatOption)
+
+ enum WindowApi {
+ Raster,
+ OpenGL,
+ OpenVG
+ };
+
+ QPlatformWindowFormat();
+ QPlatformWindowFormat(FormatOptions options);
+ QPlatformWindowFormat(const QPlatformWindowFormat &other);
+ QPlatformWindowFormat &operator=(const QPlatformWindowFormat &other);
+ ~QPlatformWindowFormat();
+
+ void setDepthBufferSize(int size);
+ int depthBufferSize() const;
+
+ void setAccumBufferSize(int size);
+ int accumBufferSize() const;
+
+ void setRedBufferSize(int size);
+ int redBufferSize() const;
+
+ void setGreenBufferSize(int size);
+ int greenBufferSize() const;
+
+ void setBlueBufferSize(int size);
+ int blueBufferSize() const;
+
+ void setAlphaBufferSize(int size);
+ int alphaBufferSize() const;
+
+ void setStencilBufferSize(int size);
+ int stencilBufferSize() const;
+
+ void setSampleBuffers(bool enable);
+ bool sampleBuffers() const;
+
+ void setSamples(int numSamples);
+ int samples() const;
+
+ void setSwapInterval(int interval);
+ int swapInterval() const;
+
+ void setWindowApi(QPlatformWindowFormat::WindowApi api);
+ WindowApi windowApi() const;
+
+ void setSharedContext(QPlatformGLContext *context);
+ QPlatformGLContext *sharedGLContext() const;
+
+ bool doubleBuffer() const;
+ void setDoubleBuffer(bool enable);
+ bool depth() const;
+ void setDepth(bool enable);
+ bool rgba() const;
+ void setRgba(bool enable);
+ bool alpha() const;
+ void setAlpha(bool enable);
+ bool accum() const;
+ void setAccum(bool enable);
+ bool stencil() const;
+ void setStencil(bool enable);
+ bool stereo() const;
+ void setStereo(bool enable);
+ bool directRendering() const;
+ void setDirectRendering(bool enable);
+ bool useDefaultSharedContext() const;
+ void setUseDefaultSharedContext(bool enable);
+// bool hasOverlay() const;
+// void setOverlay(bool enable);
+
+ void setOption(QPlatformWindowFormat::FormatOptions opt);
+ bool testOption(QPlatformWindowFormat::FormatOptions opt) const;
+
+ static QPlatformWindowFormat defaultFormat();
+ static void setDefaultFormat(const QPlatformWindowFormat& f);
+
+private:
+ QPlatformWindowFormatPrivate *d;
+
+ void detach();
+
+ friend Q_GUI_EXPORT bool operator==(const QPlatformWindowFormat&, const QPlatformWindowFormat&);
+ friend Q_GUI_EXPORT bool operator!=(const QPlatformWindowFormat&, const QPlatformWindowFormat&);
+#ifndef QT_NO_DEBUG_STREAM
+ friend Q_GUI_EXPORT QDebug operator<<(QDebug, const QPlatformWindowFormat &);
+#endif
+};
+
+Q_GUI_EXPORT bool operator==(const QPlatformWindowFormat&, const QPlatformWindowFormat&);
+Q_GUI_EXPORT bool operator!=(const QPlatformWindowFormat&, const QPlatformWindowFormat&);
+
+#ifndef QT_NO_DEBUG_STREAM
+Q_OPENGL_EXPORT QDebug operator<<(QDebug, const QPlatformWindowFormat &);
+#endif
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(QPlatformWindowFormat::FormatOptions)
+
+inline bool QPlatformWindowFormat::doubleBuffer() const
+{
+ return testOption(QPlatformWindowFormat::DoubleBuffer);
+}
+
+inline bool QPlatformWindowFormat::depth() const
+{
+ return testOption(QPlatformWindowFormat::DepthBuffer);
+}
+
+inline bool QPlatformWindowFormat::rgba() const
+{
+ return testOption(QPlatformWindowFormat::Rgba);
+}
+
+inline bool QPlatformWindowFormat::alpha() const
+{
+ return testOption(QPlatformWindowFormat::AlphaChannel);
+}
+
+inline bool QPlatformWindowFormat::accum() const
+{
+ return testOption(QPlatformWindowFormat::AccumBuffer);
+}
+
+inline bool QPlatformWindowFormat::stencil() const
+{
+ return testOption(QPlatformWindowFormat::StencilBuffer);
+}
+
+inline bool QPlatformWindowFormat::stereo() const
+{
+ return testOption(QPlatformWindowFormat::StereoBuffers);
+}
+
+inline bool QPlatformWindowFormat::directRendering() const
+{
+ return testOption(QPlatformWindowFormat::DirectRendering);
+}
+
+//inline bool QPlatformWindowFormat::hasOverlay() const
+//{
+// return testOption(QPlatformWindowFormat::HasOverlay);
+//}
+
+inline bool QPlatformWindowFormat::sampleBuffers() const
+{
+ return testOption(QPlatformWindowFormat::SampleBuffers);
+}
+
+inline bool QPlatformWindowFormat::useDefaultSharedContext() const
+{
+ return testOption(QPlatformWindowFormat::UseDefaultSharedContext);
+}
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif //QPLATFORMWINDOWFORMAT_QPA_H
diff --git a/src/gui/kernel/qsizepolicy.qdoc b/src/gui/kernel/qsizepolicy.qdoc
index f6a350c40c..504821ea7d 100644
--- a/src/gui/kernel/qsizepolicy.qdoc
+++ b/src/gui/kernel/qsizepolicy.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/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/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_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm
index 2dd379172a..48d21e9999 100644
--- a/src/gui/kernel/qt_cocoa_helpers_mac.mm
+++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm
@@ -79,6 +79,7 @@
#include <qdesktopwidget.h>
#include <qevent.h>
#include <qpixmapcache.h>
+#include <qvarlengtharray.h>
#include <private/qevent_p.h>
#include <private/qt_cocoa_helpers_mac_p.h>
#include <private/qt_mac_p.h>
@@ -616,6 +617,27 @@ Qt::KeyboardModifiers qt_cocoaModifiers2QtModifiers(ulong modifierFlags)
return qtMods;
}
+NSString *qt_mac_removePrivateUnicode(NSString* string)
+{
+ int len = [string length];
+ if (len) {
+ QVarLengthArray <unichar, 10> characters(len);
+ bool changed = false;
+ for (int i = 0; i<len; i++) {
+ characters[i] = [string characterAtIndex:i];
+ // check if they belong to key codes in private unicode range
+ // currently we need to handle only the NSDeleteFunctionKey
+ if (characters[i] == NSDeleteFunctionKey) {
+ characters[i] = NSDeleteCharacter;
+ changed = true;
+ }
+ }
+ if (changed)
+ return [NSString stringWithCharacters:characters.data() length:len];
+ }
+ return string;
+}
+
Qt::KeyboardModifiers qt_cocoaDragOperation2QtModifiers(uint dragOperations)
{
Qt::KeyboardModifiers qtMods =Qt::NoModifier;
@@ -1365,11 +1387,11 @@ QString qt_mac_get_pasteboardString(OSPasteboardRef paste)
QMacCocoaAutoReleasePool pool;
NSPasteboard *pb = nil;
CFStringRef pbname;
- if (PasteboardCopyName (paste, &pbname)) {
- pb = [NSPasteboard generalPasteboard];
+ if (PasteboardCopyName(paste, &pbname) == noErr) {
+ pb = [NSPasteboard pasteboardWithName:const_cast<NSString *>(reinterpret_cast<const NSString *>(pbname))];
+ CFRelease(pbname);
} else {
- pb = [NSPasteboard pasteboardWithName:reinterpret_cast<const NSString *>(pbname)];
- CFRelease (pbname);
+ pb = [NSPasteboard generalPasteboard];
}
if (pb) {
NSString *text = [pb stringForType:NSStringPboardType];
@@ -1561,6 +1583,13 @@ void qt_cocoaStackChildWindowOnTopOfOtherChildren(QWidget *childWidget)
}
}
+void qt_mac_display(QWidget *widget)
+{
+ NSView *theNSView = qt_mac_nativeview_for(widget);
+ [theNSView display];
+ return;
+}
+
#endif // QT_MAC_USE_COCOA
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qt_cocoa_helpers_mac_p.h b/src/gui/kernel/qt_cocoa_helpers_mac_p.h
index 5c233928f4..04c2d062a6 100644
--- a/src/gui/kernel/qt_cocoa_helpers_mac_p.h
+++ b/src/gui/kernel/qt_cocoa_helpers_mac_p.h
@@ -227,6 +227,8 @@ void qt_cocoaPostMessage(id target, SEL selector, int argCount=0, id arg1=0, id
void qt_mac_post_retranslateAppMenu();
+void qt_mac_display(QWidget *widget);
+
QT_END_NAMESPACE
#endif // QT_COCOA_HELPERS_MAC_P_H
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 cffad1d4c6..cd1c9f0dd7 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"
@@ -75,6 +76,9 @@
# include "qpaintengine.h" // for PorterDuff
# include "private/qwindowsurface_qws_p.h"
#endif
+#if defined(Q_WS_QPA)
+#include "qplatformwindow_qpa.h"
+#endif
#include "qpainter.h"
#include "qtooltip.h"
#include "qwhatsthis.h"
@@ -235,6 +239,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)
@@ -273,6 +288,9 @@ QWidgetPrivate::QWidgetPrivate(int version)
, isMoved(0)
, isGLWidget(0)
, usesDoubleBufferedGLContext(0)
+#ifndef QT_NO_IM
+ , inheritsInputMethodHints(0)
+#endif
#if defined(Q_WS_X11)
, picture(0)
#elif defined(Q_WS_WIN)
@@ -285,6 +303,8 @@ QWidgetPrivate::QWidgetPrivate(int version)
, hasAlienChildren(0)
, window_event(0)
, qd_hd(0)
+#elif defined (Q_WS_QPA)
+ , screenNumber(0)
#endif
{
if (!qApp) {
@@ -301,6 +321,9 @@ QWidgetPrivate::QWidgetPrivate(int version)
drawRectOriginalAdded = false;
originalDrawMethod = true;
changeMethods = false;
+ hasOwnContext = false;
+ isInUnifiedToolbar = false;
+ unifiedSurface = 0;
#endif // QT_MAC_USE_COCOA
#ifdef QWIDGET_EXTRA_DEBUG
static int count = 0;
@@ -322,15 +345,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;
}
@@ -728,9 +763,9 @@ void QWidget::setAutoFillBackground(bool enabled)
\list
\i mouseMoveEvent() is called whenever the mouse moves while a mouse
button is held down. This can be useful during drag and drop
- operations. If you call setMouseTracking(true), you get mouse move
- events even when no buttons are held down. (See also the \l{Drag
- and Drop} guide.)
+ operations. If you call \l{setMouseTracking()}{setMouseTracking}(true),
+ you get mouse move events even when no buttons are held down.
+ (See also the \l{Drag and Drop} guide.)
\i keyReleaseEvent() is called whenever a key is released and while it
is held down (if the key is auto-repeating). In that case, the
widget will receive a pair of key release and key press event for
@@ -1240,6 +1275,12 @@ void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f)
// programmer specified desktop widget
xinfo = desktopWidget->d_func()->xinfo;
}
+#elif defined(Q_WS_QPA)
+ if (desktopWidget) {
+ int screen = desktopWidget->d_func()->screenNumber;
+ QPlatformIntegration *platform = QApplicationPrivate::platformIntegration();
+ platform->moveToScreen(q, screen);
+ }
#else
Q_UNUSED(desktopWidget);
#endif
@@ -1371,6 +1412,7 @@ void QWidget::create(WId window, bool initializeWindow, bool destroyOldWindow)
flags |= Qt::Window;
}
+#ifndef Q_WS_QPA
if (QWidget *parent = parentWidget()) {
#ifdef Q_WS_MAC
if (testAttribute(Qt::WA_NativeWindow) == false)
@@ -1391,6 +1433,7 @@ void QWidget::create(WId window, bool initializeWindow, bool destroyOldWindow)
return;
}
}
+#endif //Q_WS_QPA
#ifdef QT3_SUPPORT
if (flags & Qt::WStaticContents)
@@ -1549,13 +1592,13 @@ QWidget::~QWidget()
}
}
-#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11)|| defined(Q_WS_MAC)
else if (!internalWinId() && isVisible()) {
qApp->d_func()->sendSyntheticEnterLeave(this);
-#ifdef Q_WS_QWS
- } else if (isVisible()) {
+ }
+#elif defined(Q_WS_QWS) || defined(Q_WS_QPA)
+ else if (isVisible()) {
qApp->d_func()->sendSyntheticEnterLeave(this);
-#endif
}
#endif
@@ -1688,6 +1731,10 @@ void QWidgetPrivate::createTLExtra()
static int count = 0;
qDebug() << "tlextra" << ++count;
#endif
+#if defined(Q_WS_QPA)
+ x->platformWindow = 0;
+ x->platformWindowFormat = QPlatformWindowFormat::defaultFormat();
+#endif
}
}
@@ -2422,7 +2469,9 @@ WId QWidget::winId() const
qDebug() << "QWidget::winId: creating native window for" << this;
#endif
QWidget *that = const_cast<QWidget*>(this);
+#ifndef Q_WS_QPA
that->setAttribute(Qt::WA_NativeWindow);
+#endif
that->d_func()->createWinId();
return that->data->winid;
}
@@ -2439,6 +2488,7 @@ void QWidgetPrivate::createWinId(WId winid)
#endif
const bool forceNativeWindow = q->testAttribute(Qt::WA_NativeWindow);
if (!q->testAttribute(Qt::WA_WState_Created) || (forceNativeWindow && !q->internalWinId())) {
+#ifndef Q_WS_QPA
if (!q->isWindow()) {
QWidget *parent = q->parentWidget();
QWidgetPrivate *pd = parent->d_func();
@@ -2466,6 +2516,11 @@ void QWidgetPrivate::createWinId(WId winid)
} else {
q->create();
}
+#else
+ Q_UNUSED(winid);
+ q->create();
+#endif //Q_WS_QPA
+
}
}
@@ -2988,6 +3043,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())
@@ -3020,6 +3084,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();
}
@@ -3041,6 +3117,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();
}
@@ -5316,6 +5404,14 @@ void QWidgetPrivate::drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QP
if (rgn.isEmpty())
return;
+#if defined(Q_WS_MAC) && defined(QT_MAC_USE_COCOA)
+ // We disable the rendering of QToolBar in the backingStore if
+ // it's supposed to be in the unified toolbar on Mac OS X.
+ if (backingStore && isInUnifiedToolbar)
+ return;
+#endif // Q_WS_MAC && QT_MAC_USE_COCOA
+
+
Q_Q(QWidget);
#ifndef QT_NO_GRAPHICSEFFECT
if (graphicsEffect && graphicsEffect->isEnabled()) {
@@ -5378,6 +5474,7 @@ void QWidgetPrivate::drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QP
QPaintEngine *paintEngine = pdev->paintEngine();
if (paintEngine) {
setRedirected(pdev, -offset);
+
#ifdef Q_WS_MAC
// (Alien support) Special case for Mac when redirecting: If the paint device
// is of the Widget type we need to set WA_WState_InPaintEvent since painting
@@ -5420,7 +5517,7 @@ void QWidgetPrivate::drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QP
//actually send the paint event
QPaintEvent e(toBePainted);
QCoreApplication::sendSpontaneousEvent(q, &e);
-#if !defined(Q_WS_MAC) && !defined(Q_WS_QWS)
+#if !defined(Q_WS_QWS) && !defined(Q_WS_QPA)
if (backingStore && !onScreen && !asRoot && (q->internalWinId() || !q->nativeParentWidget()->isWindow()))
backingStore->markDirtyOnScreen(toBePainted, q, offset);
#endif
@@ -6956,7 +7053,11 @@ bool QWidget::restoreGeometry(const QByteArray &geometry)
if (maximized || fullScreen) {
// set geomerty before setting the window state to make
// sure the window is maximized to the right screen.
+ // Skip on windows: the window is restored into a broken
+ // half-maximized state.
+#ifndef Q_WS_WIN
setGeometry(restoredNormalGeometry);
+#endif
Qt::WindowStates ws = windowState();
if (maximized)
ws |= Qt::WindowMaximized;
@@ -7458,7 +7559,7 @@ void QWidgetPrivate::hide_helper()
// next bit tries to move the focus if the focus widget is now
// hidden.
if (wasVisible) {
-#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC) || defined(Q_WS_QPA)
qApp->d_func()->sendSyntheticEnterLeave(q);
#endif
@@ -7590,7 +7691,7 @@ void QWidget::setVisible(bool visible)
d->show_helper();
-#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC) || defined(Q_WS_QPA)
qApp->d_func()->sendSyntheticEnterLeave(this);
#endif
}
@@ -7722,7 +7823,7 @@ void QWidgetPrivate::hideChildren(bool spontaneous)
widget->d_func()->hide_sys();
}
}
-#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC) || defined(Q_WS_QPA)
qApp->d_func()->sendSyntheticEnterLeave(widget);
#endif
#ifndef QT_NO_ACCESSIBILITY
@@ -8653,8 +8754,8 @@ bool QWidget::event(QEvent *event)
/*!
This event handler can be reimplemented to handle state changes.
- The state being changed in this event can be retrieved through event \a
- event.
+ The state being changed in this event can be retrieved through the \a event
+ supplied.
Change events include: QEvent::ToolBarChange,
QEvent::ActivationChange, QEvent::EnabledChange, QEvent::FontChange,
@@ -9217,9 +9318,13 @@ QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const
*/
Qt::InputMethodHints QWidget::inputMethodHints() const
{
- Q_D(const QWidget);
#ifndef QT_NO_IM
- return d->imHints;
+ const QWidgetPrivate *priv = d_func();
+ while (priv->inheritsInputMethodHints) {
+ priv = priv->q_func()->parentWidget()->d_func();
+ Q_ASSERT(priv);
+ }
+ return priv->imHints;
#else //QT_NO_IM
return 0;
#endif //QT_NO_IM
@@ -9996,7 +10101,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;
@@ -10487,7 +10601,6 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on)
Q_ASSERT_X(sizeof(d->high_attributes)*8 >= (Qt::WA_AttributeCount - sizeof(uint)*8),
"QWidget::setAttribute(WidgetAttribute, bool)",
"QWidgetPrivate::high_attributes[] too small to contain all attributes in WidgetAttribute");
-
#ifdef Q_WS_WIN
// ### Don't use PaintOnScreen+paintEngine() to do native painting in 5.0
if (attribute == Qt::WA_PaintOnScreen && on && !inherits("QGLWidget")) {
diff --git a/src/gui/kernel/qwidget.h b/src/gui/kernel/qwidget.h
index 980f40f07d..eea7cca687 100644
--- a/src/gui/kernel/qwidget.h
+++ b/src/gui/kernel/qwidget.h
@@ -56,6 +56,10 @@
#include <QtGui/qcursor.h>
#include <QtGui/qkeysequence.h>
+#ifdef Q_WS_QPA //should this go somewhere else?
+#include <QtGui/qplatformwindowformat_qpa.h>
+#endif
+
#ifdef QT_INCLUDE_COMPAT
#include <QtGui/qevent.h>
#endif
@@ -94,9 +98,12 @@ class QHideEvent;
class QInputContext;
class QIcon;
class QWindowSurface;
+class QPlatformWindow;
class QLocale;
class QGraphicsProxyWidget;
class QGraphicsEffect;
+class QRasterWindowSurface;
+class QUnifiedToolbarSurface;
#if defined(Q_WS_X11)
class QX11Info;
#endif
@@ -627,6 +634,16 @@ public:
void setWindowSurface(QWindowSurface *surface);
QWindowSurface *windowSurface() const;
+#if defined(Q_WS_QPA)
+ void setPlatformWindow(QPlatformWindow *window);
+ QPlatformWindow *platformWindow() const;
+
+ void setPlatformWindowFormat(const QPlatformWindowFormat &format);
+ QPlatformWindowFormat platformWindowFormat() const;
+
+ friend class QDesktopScreenWidget;
+#endif
+
Q_SIGNALS:
void customContextMenuRequested(const QPoint &pos);
@@ -758,6 +775,8 @@ private:
friend OSViewRef qt_mac_nativeview_for(const QWidget *w);
friend void qt_event_request_window_change(QWidget *widget);
friend bool qt_mac_sendMacEventToWidget(QWidget *widget, EventRef ref);
+ friend class QRasterWindowSurface;
+ friend class QUnifiedToolbarSurface;
#endif
#ifdef Q_WS_QWS
friend class QWSBackingStore;
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index 5e41efa42e..fc94616c7b 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)];
+ }
}
}
}
@@ -3176,7 +3198,7 @@ void QWidgetPrivate::setWindowIcon_sys(bool forceReset)
if (iconButton == nil) {
QCFString string(q->windowTitle());
const NSString *tmpString = reinterpret_cast<const NSString *>((CFStringRef)string);
- [qt_mac_window_for(q) setRepresentedURL:[NSURL fileURLWithPath:tmpString]];
+ [qt_mac_window_for(q) setRepresentedURL:[NSURL fileURLWithPath:const_cast<NSString *>(tmpString)]];
iconButton = [qt_mac_window_for(q) standardWindowButton:NSWindowDocumentIconButton];
}
if (icon.isNull()) {
@@ -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 c943bd80a8..4b35238527 100644
--- a/src/gui/kernel/qwidget_p.h
+++ b/src/gui/kernel/qwidget_p.h
@@ -102,6 +102,9 @@ class QWSManager;
#if defined(Q_WS_MAC)
class QCoreGraphicsPaintEnginePrivate;
#endif
+#if defined(Q_WS_QPA)
+class QPlatformWindow;
+#endif
class QPaintEngine;
class QPixmap;
class QWidgetBackingStore;
@@ -122,6 +125,7 @@ public:
void registerWidget(QWidget *w);
void unregisterWidget(QWidget *w);
+ void unregisterWidgetSubtree(QWidget *w);
inline QWidgetBackingStore* data()
{
@@ -225,6 +229,9 @@ struct QTLWExtra {
#endif
#elif defined(Q_OS_SYMBIAN)
uint inExpose : 1; // Prevents drawing recursion
+#elif defined(Q_WS_QPA)
+ QPlatformWindow *platformWindow;
+ QPlatformWindowFormat platformWindowFormat;
#endif
};
@@ -749,6 +756,9 @@ public:
uint isMoved : 1;
uint isGLWidget : 1;
uint usesDoubleBufferedGLContext : 1;
+#ifndef QT_NO_IM
+ uint inheritsInputMethodHints : 1;
+#endif
// *************************** Platform specific ************************************
#if defined(Q_WS_X11) // <----------------------------------------------------------- X11
@@ -840,6 +850,13 @@ public:
bool originalDrawMethod;
// Do we need to change the methods?
bool changeMethods;
+ bool hasOwnContext;
+ CGContextRef cgContext;
+ QRegion ut_rg;
+ QPoint ut_pt;
+ bool isInUnifiedToolbar;
+ QWindowSurface *unifiedSurface;
+ QPoint toolbar_offset;
#endif
void determineWindowClass();
void transferChildren();
@@ -867,6 +884,14 @@ public:
void updateCursor() const;
#endif
QScreen* getScreen() const;
+#elif defined(Q_WS_QPA)
+ void setMaxWindowState_helper();
+ void setFullScreenSize_helper();
+
+ int screenNumber; // screen the widget should be displayed on
+#ifndef QT_NO_CURSOR
+ void updateCursor() const;
+#endif
#elif defined(Q_OS_SYMBIAN) // <--------------------------------------------------------- SYMBIAN
static QWidget *mouseGrabber;
static QWidget *keyboardGrabber;
diff --git a/src/gui/kernel/qwidget_qpa.cpp b/src/gui/kernel/qwidget_qpa.cpp
new file mode 100644
index 0000000000..ac8b37df31
--- /dev/null
+++ b/src/gui/kernel/qwidget_qpa.cpp
@@ -0,0 +1,895 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "QtGui/qwidget.h"
+#include "QtGui/qevent.h"
+#include "QtGui/qapplication.h"
+#include "QtGui/private/qbackingstore_p.h"
+#include "QtGui/private/qwidget_p.h"
+#include "QtGui/private/qgraphicssystem_p.h"
+#include "QtGui/private/qapplication_p.h"
+#include "QtGui/qdesktopwidget.h"
+#include "QtGui/qplatformwindow_qpa.h"
+
+#include <QtGui/QPlatformCursor>
+
+QT_BEGIN_NAMESPACE
+static QPlatformScreen *qt_screenForWidget(const QWidget *w);
+
+void q_createNativeChildrenAndSetParent(QPlatformWindow *parentWindow, const QWidget *parentWidget)
+{
+ QObjectList children = parentWidget->children();
+ for (int i = 0; i < children.size(); i++) {
+ if (children.at(i)->isWidgetType()) {
+ const QWidget *childWidget = qobject_cast<const QWidget *>(children.at(i));
+ if (childWidget) { // should not be necessary
+ if (childWidget->testAttribute(Qt::WA_NativeWindow)) {
+ if (!childWidget->platformWindow())
+ childWidget->winId();
+ }
+ if (childWidget->platformWindow()) {
+ childWidget->platformWindow()->setParent(parentWindow);
+ } else {
+ q_createNativeChildrenAndSetParent(parentWindow,childWidget);
+ }
+ }
+ }
+ }
+
+}
+
+void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyOldWindow)
+{
+ Q_Q(QWidget);
+
+ Q_UNUSED(window);
+ Q_UNUSED(initializeWindow);
+ Q_UNUSED(destroyOldWindow);
+
+ Qt::WindowFlags flags = data.window_flags;
+
+ if ((!q->testAttribute(Qt::WA_NativeWindow) && !q->isWindow()) || q->windowType() == Qt::Desktop )
+ return; // we only care about real toplevels
+
+ QWindowSurface *surface = q->windowSurface();
+ QPlatformWindow *platformWindow = q->platformWindow();
+
+ if (!platformWindow) {
+ platformWindow = QApplicationPrivate::platformIntegration()->createPlatformWindow(q);
+ }
+ Q_ASSERT(platformWindow);
+
+ if (!surface) {
+ surface = QApplicationPrivate::platformIntegration()->createWindowSurface(q,platformWindow->winId());
+ }
+
+ data.window_flags = q->platformWindow()->setWindowFlags(data.window_flags);
+
+ setWinId(q->platformWindow()->winId());
+
+ //first check children. and create them if necessary
+ q_createNativeChildrenAndSetParent(q->platformWindow(),q);
+
+ //if we we have a parent, then set correct parent;
+ if (!q->isWindow()) {
+ if (QWidget *nativeParent = q->nativeParentWidget()) {
+ if (nativeParent->platformWindow()) {
+ platformWindow->setParent(nativeParent->platformWindow());
+ }
+ }
+ }
+
+ QApplicationPrivate::platformIntegration()->moveToScreen(q, screenNumber);
+// qDebug() << "create_sys" << q << q->internalWinId();
+}
+
+void QWidget::destroy(bool destroyWindow, bool destroySubWindows)
+{
+ Q_D(QWidget);
+
+ if ((windowType() == Qt::Popup))
+ qApp->d_func()->closePopup(this);
+
+ //### we don't have proper focus event handling yet
+ if (this == QApplicationPrivate::active_window)
+ QApplication::setActiveWindow(0);
+
+ if (windowType() != Qt::Desktop) {
+ if (destroySubWindows) {
+ QObjectList childList(children());
+ for (int i = 0; i < childList.size(); i++) {
+ QWidget *widget = qobject_cast<QWidget *>(childList.at(i));
+ if (widget && widget->testAttribute(Qt::WA_NativeWindow)) {
+ if (widget->platformWindow()) {
+ widget->destroy();
+ }
+ }
+ }
+ }
+ if (destroyWindow) {
+ d->deleteTLSysExtra();
+ } else {
+ if (parentWidget() && parentWidget()->testAttribute(Qt::WA_WState_Created)) {
+ d->hide_sys();
+ }
+ }
+ }
+}
+
+void QWidgetPrivate::setParent_sys(QWidget *newparent, Qt::WindowFlags f)
+{
+ Q_Q(QWidget);
+
+ // QWidget *oldParent = q->parentWidget();
+ Qt::WindowFlags oldFlags = data.window_flags;
+
+ int targetScreen = -1;
+ // Handle a request to move the widget to a particular screen
+ if (newparent && newparent->windowType() == Qt::Desktop) {
+ // make sure the widget is created on the same screen as the
+ // programmer specified desktop widget
+
+ // get the desktop's screen number
+ targetScreen = newparent->d_func()->screenNumber;
+ newparent = 0;
+ }
+
+ if (parent != newparent) {
+ QObjectPrivate::setParent_helper(newparent); //### why does this have to be done in the _sys function???
+ if (q->platformWindow() && newparent) {
+ QWidget * parentWithWindow = newparent->platformWindow()? newparent : newparent->nativeParentWidget();
+ if (parentWithWindow && parentWithWindow->platformWindow()) {
+ q->platformWindow()->setParent(parentWithWindow->platformWindow());
+ }
+ }
+
+ }
+
+ if (!newparent) {
+ f |= Qt::Window;
+ if (targetScreen == -1) {
+ if (parent)
+ targetScreen = qobject_cast<QWidget *>(parent)->d_func()->screenNumber;
+ }
+ }
+
+ bool explicitlyHidden = q->testAttribute(Qt::WA_WState_Hidden) && q->testAttribute(Qt::WA_WState_ExplicitShowHide);
+
+ // Reparenting toplevel to child
+ if (!(f&Qt::Window) && (oldFlags&Qt::Window) && !q->testAttribute(Qt::WA_NativeWindow)) {
+ //qDebug() << "setParent_sys() change from toplevel";
+ q->destroy();
+ }
+
+ data.window_flags = f;
+ q->setAttribute(Qt::WA_WState_Created, false);
+ q->setAttribute(Qt::WA_WState_Visible, false);
+ q->setAttribute(Qt::WA_WState_Hidden, false);
+
+ if (f & Qt::Window) {
+ //qDebug() << "setParent_sys" << q << newparent << hex << f;
+ if (QPlatformWindow *window = q->platformWindow())
+ data.window_flags = window->setWindowFlags(data.window_flags);
+ }
+
+ // Reparenting child to toplevel
+ if ((f&Qt::Window) && !(oldFlags&Qt::Window)) {
+ //qDebug() << "setParent_sys() change to toplevel";
+ q->create(); //### too early: this ought to happen at show() time
+ }
+
+
+ if (q->isWindow() || (!newparent || newparent->isVisible()) || explicitlyHidden)
+ q->setAttribute(Qt::WA_WState_Hidden);
+ q->setAttribute(Qt::WA_WState_ExplicitShowHide, explicitlyHidden);
+
+ // move the window to the selected screen
+ if (!newparent && targetScreen != -1) {
+ screenNumber = targetScreen;
+ // only if it is already created
+ if (q->testAttribute(Qt::WA_WState_Created)) {
+ QPlatformIntegration *platform = QApplicationPrivate::platformIntegration();
+ platform->moveToScreen(q, targetScreen);
+ }
+ }
+}
+
+QPoint QWidget::mapToGlobal(const QPoint &pos) const
+{
+ int x=pos.x(), y=pos.y();
+ const QWidget* w = this;
+ while (w) {
+ x += w->data->crect.x();
+ y += w->data->crect.y();
+ w = w->isWindow() ? 0 : w->parentWidget();
+ }
+ return QPoint(x, y);
+}
+
+QPoint QWidget::mapFromGlobal(const QPoint &pos) const
+{
+ int x=pos.x(), y=pos.y();
+ const QWidget* w = this;
+ while (w) {
+ x -= w->data->crect.x();
+ y -= w->data->crect.y();
+ w = w->isWindow() ? 0 : w->parentWidget();
+ }
+ return QPoint(x, y);
+}
+
+void QWidgetPrivate::updateSystemBackground() {}
+
+#ifndef QT_NO_CURSOR
+void QWidgetPrivate::setCursor_sys(const QCursor &cursor)
+{
+ Q_UNUSED(cursor);
+ Q_Q(QWidget);
+ if (q->isVisible())
+ qt_qpa_set_cursor(q, false);
+}
+
+void QWidgetPrivate::unsetCursor_sys()
+{
+ Q_Q(QWidget);
+ if (q->isVisible())
+ qt_qpa_set_cursor(q, false);
+}
+
+void QWidgetPrivate::updateCursor() const
+{
+ // XXX
+}
+
+#endif //QT_NO_CURSOR
+
+void QWidgetPrivate::setWindowTitle_sys(const QString &caption)
+{
+ Q_Q(QWidget);
+ if (!q->isWindow())
+ return;
+
+ if (QPlatformWindow *window = q->platformWindow())
+ window->setWindowTitle(caption);
+
+}
+
+void QWidgetPrivate::setWindowIcon_sys(bool /*forceReset*/)
+{
+}
+
+void QWidgetPrivate::setWindowIconText_sys(const QString &iconText)
+{
+ Q_UNUSED(iconText);
+}
+
+QWidget *qt_pressGrab = 0;
+QWidget *qt_mouseGrb = 0;
+static QWidget *keyboardGrb = 0;
+
+void QWidget::grabMouse()
+{
+ if (qt_mouseGrb)
+ qt_mouseGrb->releaseMouse();
+
+ // XXX
+ //qwsDisplay()->grabMouse(this,true);
+
+ qt_mouseGrb = this;
+ qt_pressGrab = 0;
+}
+
+#ifndef QT_NO_CURSOR
+void QWidget::grabMouse(const QCursor &cursor)
+{
+ Q_UNUSED(cursor);
+
+ if (qt_mouseGrb)
+ qt_mouseGrb->releaseMouse();
+
+ // XXX
+ //qwsDisplay()->grabMouse(this,true);
+ //qwsDisplay()->selectCursor(this, cursor.handle());
+ qt_mouseGrb = this;
+ qt_pressGrab = 0;
+}
+#endif
+
+void QWidget::releaseMouse()
+{
+ if (qt_mouseGrb == this) {
+ // XXX
+ //qwsDisplay()->grabMouse(this,false);
+ qt_mouseGrb = 0;
+ }
+}
+
+void QWidget::grabKeyboard()
+{
+ if (keyboardGrb)
+ keyboardGrb->releaseKeyboard();
+ // XXX
+ //qwsDisplay()->grabKeyboard(this, true);
+ keyboardGrb = this;
+}
+
+void QWidget::releaseKeyboard()
+{
+ if (keyboardGrb == this) {
+ // XXX
+ //qwsDisplay()->grabKeyboard(this, false);
+ keyboardGrb = 0;
+ }
+}
+
+QWidget *QWidget::mouseGrabber()
+{
+ if (qt_mouseGrb)
+ return qt_mouseGrb;
+ return qt_pressGrab;
+}
+
+QWidget *QWidget::keyboardGrabber()
+{
+ return keyboardGrb;
+}
+
+void QWidget::activateWindow()
+{
+ // XXX
+// qDebug() << "QWidget::activateWindow" << this;
+ QApplication::setActiveWindow(this); //#####
+}
+
+void QWidgetPrivate::show_sys()
+{
+ Q_Q(QWidget);
+ q->setAttribute(Qt::WA_Mapped);
+ if (q->testAttribute(Qt::WA_DontShowOnScreen)) {
+ invalidateBuffer(q->rect());
+ return;
+ }
+
+ QApplication::postEvent(q, new QUpdateLaterEvent(q->rect()));
+
+ QPlatformWindow *window = q->platformWindow();
+ if (window) {
+ const QRect geomRect = q->geometry();
+ const QRect windowRect = window->geometry();
+ if (windowRect != geomRect) {
+ window->setGeometry(geomRect);
+ }
+ if (q->isWindow()) {
+ if (QWindowSurface *surface = q->windowSurface()) {
+ if (windowRect.size() != geomRect.size()) {
+ surface->resize(geomRect.size());
+ }
+ }
+
+ if (window)
+ window->setVisible(true);
+
+ if (q->windowType() != Qt::Popup && q->windowType() != Qt::ToolTip && !(q->windowFlags() & Qt::X11BypassWindowManagerHint))
+ q->activateWindow(); //###
+ }
+ }
+}
+
+
+void QWidgetPrivate::hide_sys()
+{
+ Q_Q(QWidget);
+ q->setAttribute(Qt::WA_Mapped, false);
+ if (!q->isWindow()) {
+ QWidget *p = q->parentWidget();
+ if (p &&p->isVisible()) {
+ invalidateBuffer(q->rect());
+ }
+ return;
+ }
+ if (QPlatformWindow *window = q->platformWindow()) {
+ window->setVisible(false);
+ }
+
+ //### we don't yet have proper focus event handling
+ if (q == QApplicationPrivate::active_window)
+ QApplication::setActiveWindow(0);
+
+}
+
+void QWidgetPrivate::setMaxWindowState_helper()
+{
+ setFullScreenSize_helper(); //### decoration size
+}
+
+void QWidgetPrivate::setFullScreenSize_helper()
+{
+ Q_Q(QWidget);
+
+ const uint old_state = data.in_set_window_state;
+ data.in_set_window_state = 1;
+
+ const QRect screen = qApp->desktop()->screenGeometry(qApp->desktop()->screenNumber(q));
+ q->move(screen.topLeft());
+ q->resize(screen.size());
+
+ data.in_set_window_state = old_state;
+}
+
+static Qt::WindowStates effectiveState(Qt::WindowStates state)
+ {
+ if (state & Qt::WindowMinimized)
+ return Qt::WindowMinimized;
+ else if (state & Qt::WindowFullScreen)
+ return Qt::WindowFullScreen;
+ else if (state & Qt::WindowMaximized)
+ return Qt::WindowMaximized;
+ return Qt::WindowNoState;
+ }
+
+void QWidget::setWindowState(Qt::WindowStates newstate)
+{
+ Q_D(QWidget);
+ Qt::WindowStates oldstate = windowState();
+ if (oldstate == newstate)
+ return;
+ if (isWindow() && !testAttribute(Qt::WA_WState_Created))
+ create();
+
+ data->window_state = newstate;
+ data->in_set_window_state = 1;
+ bool needShow = false;
+ Qt::WindowStates newEffectiveState = effectiveState(newstate);
+ Qt::WindowStates oldEffectiveState = effectiveState(oldstate);
+ if (isWindow() && newEffectiveState != oldEffectiveState) {
+ d->createTLExtra();
+ if (oldEffectiveState == Qt::WindowNoState) { //normal
+ d->topData()->normalGeometry = geometry();
+ } else if (oldEffectiveState == Qt::WindowFullScreen) {
+ setParent(0, d->topData()->savedFlags);
+ needShow = true;
+ } else if (oldEffectiveState == Qt::WindowMinimized) {
+ needShow = true;
+ }
+
+ if (newEffectiveState == Qt::WindowMinimized) {
+ //### not ideal...
+ hide();
+ needShow = false;
+ } else if (newEffectiveState == Qt::WindowFullScreen) {
+ d->topData()->savedFlags = windowFlags();
+ setParent(0, Qt::FramelessWindowHint | (windowFlags() & Qt::WindowStaysOnTopHint));
+ d->setFullScreenSize_helper();
+ raise();
+ needShow = true;
+ } else if (newEffectiveState == Qt::WindowMaximized) {
+ createWinId();
+ d->setMaxWindowState_helper();
+ } else { //normal
+ QRect r = d->topData()->normalGeometry;
+ if (r.width() >= 0) {
+ d->topData()->normalGeometry = QRect(0,0,-1,-1);
+ setGeometry(r);
+ }
+ }
+ }
+ data->in_set_window_state = 0;
+
+ if (needShow)
+ show();
+
+ if (newstate & Qt::WindowActive)
+ activateWindow();
+
+ QWindowStateChangeEvent e(oldstate);
+ QApplication::sendEvent(this, &e);
+}
+
+void QWidgetPrivate::setFocus_sys()
+{
+
+}
+
+void QWidgetPrivate::raise_sys()
+{
+ Q_Q(QWidget);
+ if (q->isWindow()) {
+ q->platformWindow()->raise();
+ }
+}
+
+void QWidgetPrivate::lower_sys()
+{
+ Q_Q(QWidget);
+ if (q->isWindow()) {
+ Q_ASSERT(q->testAttribute(Qt::WA_WState_Created));
+ q->platformWindow()->lower();
+ } else if (QWidget *p = q->parentWidget()) {
+ setDirtyOpaqueRegion();
+ p->d_func()->invalidateBuffer(effectiveRectFor(q->geometry()));
+ }
+}
+
+void QWidgetPrivate::stackUnder_sys(QWidget*)
+{
+ Q_Q(QWidget);
+ if (QWidget *p = q->parentWidget()) {
+ setDirtyOpaqueRegion();
+ p->d_func()->invalidateBuffer(effectiveRectFor(q->geometry()));
+ }
+}
+
+void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove)
+{
+ Q_Q(QWidget);
+ if (extra) { // any size restrictions?
+ w = qMin(w,extra->maxw);
+ h = qMin(h,extra->maxh);
+ w = qMax(w,extra->minw);
+ h = qMax(h,extra->minh);
+ }
+
+ QPoint oldp = q->geometry().topLeft();
+ QSize olds = q->size();
+ QRect r(x, y, w, h);
+
+ bool isResize = olds != r.size();
+ isMove = oldp != r.topLeft(); //### why do we have isMove as a parameter?
+
+
+ // We only care about stuff that changes the geometry, or may
+ // cause the window manager to change its state
+ if (r.size() == olds && oldp == r.topLeft())
+ return;
+
+ if (!data.in_set_window_state) {
+ q->data->window_state &= ~Qt::WindowMaximized;
+ q->data->window_state &= ~Qt::WindowFullScreen;
+ if (q->isWindow())
+ topData()->normalGeometry = QRect(0, 0, -1, -1);
+ }
+
+ QPoint oldPos = q->pos();
+ data.crect = r;
+
+ if (q->isVisible()) {
+ if (q->platformWindow()) {
+ if (q->isWindow()) {
+ q->platformWindow()->setGeometry(q->frameGeometry());
+ } else {
+ QPoint posInNativeParent = q->mapTo(q->nativeParentWidget(),QPoint());
+ q->platformWindow()->setGeometry(QRect(posInNativeParent,r.size()));
+ }
+ const QWidgetBackingStore *bs = maybeBackingStore();
+ if (bs->windowSurface) {
+ if (isResize)
+ bs->windowSurface->resize(r.size());
+ }
+ } else {
+ if (isMove && !isResize)
+ moveRect(QRect(oldPos, olds), x - oldPos.x(), y - oldPos.y());
+ else
+ invalidateBuffer_resizeHelper(oldPos, olds);
+ }
+
+ if (isMove) {
+ QMoveEvent e(q->pos(), oldPos);
+ QApplication::sendEvent(q, &e);
+ }
+ if (isResize) {
+ QResizeEvent e(r.size(), olds);
+ QApplication::sendEvent(q, &e);
+ if (q->platformWindow())
+ q->update();
+ }
+ } else { // not visible
+ if (isMove && q->pos() != oldPos)
+ q->setAttribute(Qt::WA_PendingMoveEvent, true);
+ if (isResize)
+ q->setAttribute(Qt::WA_PendingResizeEvent, true);
+ }
+
+}
+
+void QWidgetPrivate::setConstraints_sys()
+{
+}
+
+void QWidgetPrivate::scroll_sys(int dx, int dy)
+{
+ Q_Q(QWidget);
+ scrollChildren(dx, dy);
+ scrollRect(q->rect(), dx, dy);
+}
+
+void QWidgetPrivate::scroll_sys(int dx, int dy, const QRect &r)
+{
+ scrollRect(r, dx, dy);
+}
+
+static QPlatformScreen *qt_screenForWidget(const QWidget *w)
+{
+ if (!w)
+ return 0;
+ QRect frame = w->frameGeometry();
+ if (!w->isWindow())
+ frame.moveTopLeft(w->mapToGlobal(QPoint(0, 0)));
+ const QPoint p = (frame.topLeft() + frame.bottomRight()) / 2;
+
+ QPlatformIntegration *pi = QApplicationPrivate::platformIntegration();
+ QList<QPlatformScreen *> screens = pi->screens();
+
+ for (int i = 0; i < screens.size(); ++i) {
+ if (screens[i]->geometry().contains(p))
+ return screens[i];
+ }
+
+ // Assume screen zero if we have it.
+ if (!screens.isEmpty())
+ return screens[0];
+ else
+ qWarning("qt_screenForWidget: no screens");
+
+ return 0;
+}
+
+int QWidget::metric(PaintDeviceMetric m) const
+{
+ Q_D(const QWidget);
+
+ QPlatformScreen *screen = qt_screenForWidget(this);
+ if (!screen) {
+ if (m == PdmDpiX || m == PdmDpiY)
+ return 72;
+ return QPaintDevice::metric(m);
+ }
+ int val;
+ if (m == PdmWidth) {
+ val = data->crect.width();
+ } else if (m == PdmWidthMM) {
+ val = data->crect.width() * screen->physicalSize().width() / screen->geometry().width();
+ } else if (m == PdmHeight) {
+ val = data->crect.height();
+ } else if (m == PdmHeightMM) {
+ val = data->crect.height() * screen->physicalSize().height() / screen->geometry().height();
+ } else if (m == PdmDepth) {
+ return screen->depth();
+ } else if (m == PdmDpiX || m == PdmPhysicalDpiX) {
+ if (d->extra && d->extra->customDpiX)
+ return d->extra->customDpiX;
+ else if (d->parent)
+ return static_cast<QWidget *>(d->parent)->metric(m);
+ return qRound(screen->geometry().width() / double(screen->physicalSize().width() / 25.4));
+ } else if (m == PdmDpiY || m == PdmPhysicalDpiY) {
+ if (d->extra && d->extra->customDpiY)
+ return d->extra->customDpiY;
+ else if (d->parent)
+ return static_cast<QWidget *>(d->parent)->metric(m);
+ return qRound(screen->geometry().height() / double(screen->physicalSize().height() / 25.4));
+ } else {
+ val = QPaintDevice::metric(m);// XXX
+ }
+ return val;
+}
+
+/*!
+ \preliminary
+
+ Sets the window to be the \a window specified.
+ The QWidget takes ownership of the \a surface.
+*/
+void QWidget::setPlatformWindow(QPlatformWindow *window)
+{
+ Q_D(QWidget);
+
+ QTLWExtra *topData = d->topData();
+ if (topData->platformWindow == window)
+ return;
+
+ delete topData->platformWindow;
+ topData->platformWindow = window;
+}
+
+/*!
+ \preliminary
+
+ Returns the QPlatformWindow this widget will be drawn into.
+*/
+QPlatformWindow *QWidget::platformWindow() const
+{
+ Q_D(const QWidget);
+ QTLWExtra *extra = d->maybeTopData();
+ if (extra && extra->platformWindow)
+ return extra->platformWindow;
+
+ return 0;
+}
+
+void QWidget::setPlatformWindowFormat(const QPlatformWindowFormat &format)
+{
+ if (isWindow() || testAttribute(Qt::WA_NativeWindow)) {
+ Q_D(QWidget);
+ QTLWExtra *topData = d->topData();
+ topData->platformWindowFormat = format;
+ if (testAttribute(Qt::WA_WState_Created)) {
+ bool wasVisible = testAttribute(Qt::WA_WState_Visible);
+ destroy();
+ d->create_sys(0,true,true);
+ if (wasVisible)
+ topData->platformWindow->setVisible(true);
+ }
+ }
+}
+
+QPlatformWindowFormat QWidget::platformWindowFormat() const
+{
+ Q_D(const QWidget);
+
+ QTLWExtra *extra = d->maybeTopData();
+ if (extra){
+ return extra->platformWindowFormat;
+ } else {
+ return QPlatformWindowFormat::defaultFormat();
+ }
+}
+
+void QWidgetPrivate::createSysExtra()
+{
+}
+
+void QWidgetPrivate::deleteSysExtra()
+{
+
+}
+
+void QWidgetPrivate::createTLSysExtra()
+{
+}
+
+void QWidgetPrivate::deleteTLSysExtra()
+{
+ if (extra && extra->topextra) {
+ delete extra->topextra->platformWindow;
+ extra->topextra->platformWindow = 0;
+ extra->topextra->backingStore.destroy();
+ }
+}
+
+void QWidgetPrivate::registerDropSite(bool on)
+{
+ Q_UNUSED(on);
+}
+
+void QWidgetPrivate::setMask_sys(const QRegion &region)
+{
+ Q_UNUSED(region);
+ // XXX
+}
+
+void QWidgetPrivate::updateFrameStrut()
+{
+ // XXX
+}
+
+void QWidgetPrivate::setWindowOpacity_sys(qreal level)
+{
+ Q_Q(QWidget);
+ q->platformWindow()->setOpacity(level);
+}
+
+void QWidgetPrivate::setWSGeometry(bool dontShow, const QRect &oldRect)
+{
+ Q_UNUSED(dontShow);
+ Q_UNUSED(oldRect);
+ // XXX
+}
+
+QPaintEngine *QWidget::paintEngine() const
+{
+ qWarning("QWidget::paintEngine: Should no longer be called");
+ return 0; //##### @@@
+}
+
+QWindowSurface *QWidgetPrivate::createDefaultWindowSurface_sys()
+{
+ Q_Q(QWidget);
+ return QApplicationPrivate::platformIntegration()->createWindowSurface(q,0);
+}
+
+void QWidgetPrivate::setModal_sys()
+{
+}
+
+#ifndef QT_NO_CURSOR
+void qt_qpa_set_cursor(QWidget * w, bool force)
+{
+ static QCursor arrowCursor(Qt::ArrowCursor);
+ static QPointer<QWidget> lastUnderMouse = 0;
+
+ QCursor * override = QApplication::overrideCursor();
+
+ if (override && w != 0)
+ return;
+
+ QWidget *cursorWidget;
+ QCursor cursorCursor;
+
+ do {
+ if (w == 0) {
+ if (override) {
+ cursorCursor = *override;
+ cursorWidget = QApplication::topLevelAt(QCursor::pos());
+ break;
+ }
+ w = QApplication::widgetAt(QCursor::pos());
+ if (w == 0) // clear the override cursor while over empty space
+ w = QApplication::desktop();
+ } else if (force) {
+ lastUnderMouse = w;
+ } else if (w->testAttribute(Qt::WA_WState_Created) && lastUnderMouse
+ && lastUnderMouse->effectiveWinId() == w->effectiveWinId()) {
+ w = lastUnderMouse;
+ }
+ if (w == QApplication::desktop() && !override) {
+ cursorCursor = arrowCursor;
+ cursorWidget = w;
+ break;
+ }
+
+ QWidget * curWin = QApplication::activeWindow();
+ if (!curWin && w && w->internalWinId())
+ return;
+ QWidget* cW = w && !w->internalWinId() ? w : curWin;
+
+ if (!cW || cW->window() != w->window() ||
+ !cW->isVisible() || !cW->underMouse() || override)
+ return;
+
+ cursorCursor = w->cursor();
+ cursorWidget = w;
+ } while (0);
+ foreach (QWeakPointer<QPlatformCursor> cursor, QPlatformCursorPrivate::getInstances())
+ if (cursor)
+ cursor.data()->changeCursor(&cursorCursor, cursorWidget);
+}
+#endif //QT_NO_CURSOR
+
+QT_END_NAMESPACE
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 41ce11eb05..636b306e8b 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -548,7 +548,7 @@ void QWidgetPrivate::show_sys()
id->MakeVisible(true);
- if(q->isWindow())
+ if(q->isWindow()&&!q->testAttribute(Qt::WA_ShowWithoutActivating))
id->setFocusSafely(true);
}
@@ -581,7 +581,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
@@ -713,7 +713,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);
diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp
index 39ed7500f1..c358b9beb4 100644
--- a/src/gui/kernel/qwidget_win.cpp
+++ b/src/gui/kernel/qwidget_win.cpp
@@ -329,18 +329,11 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
if (topLevel) {
if ((type == Qt::Window || dialog || tool)) {
if (!(flags & Qt::FramelessWindowHint)) {
- if (!(flags & Qt::MSWindowsFixedSizeDialogHint)) {
+ style |= WS_POPUP;
+ if (!(flags & Qt::MSWindowsFixedSizeDialogHint))
style |= WS_THICKFRAME;
- if(!(flags &
- ( Qt::WindowSystemMenuHint
- | Qt::WindowTitleHint
- | Qt::WindowMinMaxButtonsHint
- | Qt::WindowCloseButtonHint
- | Qt::WindowContextHelpButtonHint)))
- style |= WS_POPUP;
- } else {
- style |= WS_POPUP | WS_DLGFRAME;
- }
+ else
+ style |= WS_DLGFRAME;
}
if (flags & Qt::WindowTitleHint)
style |= WS_CAPTION;
@@ -424,6 +417,14 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
if (!q->testAttribute(Qt::WA_Resized)) {
w = sw/2;
h = 4*sh/10;
+ if (extra) {
+ int dx = rect.right - rect.left;
+ int dy = rect.bottom - rect.top;
+ w = qMin(w, extra->maxw + dx);
+ h = qMin(h, extra->maxh + dy);
+ w = qMax(w, extra->minw + dx);
+ h = qMax(h, extra->minh + dy);
+ }
}
if (!wasMoved) {
x = sw/2 - w/2;
diff --git a/src/gui/kernel/qwindowdefs.h b/src/gui/kernel/qwindowdefs.h
index a721c7da98..1dc72036c0 100644
--- a/src/gui/kernel/qwindowdefs.h
+++ b/src/gui/kernel/qwindowdefs.h
@@ -131,6 +131,12 @@ QT_END_HEADER
#endif // Q_WS_QWS
+#if defined(Q_WS_QPA)
+
+typedef unsigned long WId;
+
+#endif // Q_WS_QPA
+
#if defined(Q_OS_SYMBIAN)
class CCoeControl;
typedef CCoeControl * WId;
diff --git a/src/gui/kernel/qwindowsysteminterface_qpa.cpp b/src/gui/kernel/qwindowsysteminterface_qpa.cpp
new file mode 100644
index 0000000000..bb29cbf228
--- /dev/null
+++ b/src/gui/kernel/qwindowsysteminterface_qpa.cpp
@@ -0,0 +1,255 @@
+/****************************************************************************
+**
+** 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 "qwindowsysteminterface_qpa.h"
+#include "qwindowsysteminterface_qpa_p.h"
+#include "qapplication_p.h"
+#include <QAbstractEventDispatcher>
+
+QT_BEGIN_NAMESPACE
+
+
+QTime QWindowSystemInterfacePrivate::eventTime;
+
+//------------------------------------------------------------
+//
+// Callback functions for plugins:
+//
+
+QList<QWindowSystemInterfacePrivate::WindowSystemEvent *> QWindowSystemInterfacePrivate::windowSystemEventQueue;
+QMutex QWindowSystemInterfacePrivate::queueMutex;
+
+extern QPointer<QWidget> qt_last_mouse_receiver;
+
+
+void QWindowSystemInterface::handleEnterEvent(QWidget *tlw)
+{
+ if (tlw) {
+ QWidgetData *data = qt_qwidget_data(tlw);
+ if (data->in_destructor)
+ return;
+
+ QWindowSystemInterfacePrivate::EnterEvent *e = new QWindowSystemInterfacePrivate::EnterEvent(tlw);
+ QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
+ }
+}
+
+void QWindowSystemInterface::handleLeaveEvent(QWidget *tlw)
+{
+ if (tlw) {
+ QWidgetData *data = qt_qwidget_data(tlw);
+ if (data->in_destructor)
+ return;
+ }
+ QWindowSystemInterfacePrivate::LeaveEvent *e = new QWindowSystemInterfacePrivate::LeaveEvent(tlw);
+ QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
+}
+
+void QWindowSystemInterface::handleGeometryChange(QWidget *tlw, const QRect &newRect)
+{
+ if (tlw) {
+ QWidgetData *data = qt_qwidget_data(tlw);
+ if (data->in_destructor)
+ return;
+ }
+ QWindowSystemInterfacePrivate::GeometryChangeEvent *e = new QWindowSystemInterfacePrivate::GeometryChangeEvent(tlw,newRect);
+ QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
+}
+
+
+void QWindowSystemInterface::handleCloseEvent(QWidget *tlw)
+{
+ if (tlw) {
+ QWindowSystemInterfacePrivate::CloseEvent *e =
+ new QWindowSystemInterfacePrivate::CloseEvent(tlw);
+ QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
+ }
+}
+
+/*!
+
+\a tlw == 0 means that \a ev is in global coords only
+
+
+*/
+void QWindowSystemInterface::handleMouseEvent(QWidget *w, const QPoint & local, const QPoint & global, Qt::MouseButtons b) {
+ unsigned long time = QWindowSystemInterfacePrivate::eventTime.elapsed();
+ handleMouseEvent(w, time, local, global, b);
+}
+
+void QWindowSystemInterface::handleMouseEvent(QWidget *tlw, ulong timestamp, const QPoint & local, const QPoint & global, Qt::MouseButtons b)
+{
+ if (tlw) {
+ QWidgetData *data = qt_qwidget_data(tlw);
+ if (data->in_destructor)
+ tlw = 0;
+ }
+ QWindowSystemInterfacePrivate::MouseEvent * e =
+ new QWindowSystemInterfacePrivate::MouseEvent(tlw, timestamp, local, global, b);
+ QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
+}
+
+void QWindowSystemInterface::handleKeyEvent(QWidget *w, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text, bool autorep, ushort count) {
+ unsigned long time = QWindowSystemInterfacePrivate::eventTime.elapsed();
+ handleKeyEvent(w, time, t, k, mods, text, autorep, count);
+}
+
+void QWindowSystemInterface::handleKeyEvent(QWidget *tlw, ulong timestamp, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text, bool autorep, ushort count)
+{
+ if (tlw) {
+ QWidgetData *data = qt_qwidget_data(tlw);
+ if (data->in_destructor)
+ tlw = 0;
+ }
+
+ QWindowSystemInterfacePrivate::KeyEvent * e =
+ new QWindowSystemInterfacePrivate::KeyEvent(tlw, timestamp, t, k, mods, text, autorep, count);
+ QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
+}
+
+void QWindowSystemInterface::handleWheelEvent(QWidget *w, const QPoint & local, const QPoint & global, int d, Qt::Orientation o) {
+ unsigned long time = QWindowSystemInterfacePrivate::eventTime.elapsed();
+ handleWheelEvent(w, time, local, global, d, o);
+}
+
+void QWindowSystemInterface::handleWheelEvent(QWidget *tlw, ulong timestamp, const QPoint & local, const QPoint & global, int d, Qt::Orientation o)
+{
+ if (tlw) {
+ QWidgetData *data = qt_qwidget_data(tlw);
+ if (data->in_destructor)
+ tlw = 0;
+ }
+
+ QWindowSystemInterfacePrivate::WheelEvent *e =
+ new QWindowSystemInterfacePrivate::WheelEvent(tlw, timestamp, local, global, d, o);
+ QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
+}
+
+int QWindowSystemInterfacePrivate::windowSystemEventsQueued()
+{
+ queueMutex.lock();
+ int ret = windowSystemEventQueue.count();
+ queueMutex.unlock();
+ return ret;
+}
+
+QWindowSystemInterfacePrivate::WindowSystemEvent * QWindowSystemInterfacePrivate::getWindowSystemEvent()
+{
+ queueMutex.lock();
+ QWindowSystemInterfacePrivate::WindowSystemEvent *ret;
+ if (windowSystemEventQueue.isEmpty())
+ ret = 0;
+ else
+ ret = windowSystemEventQueue.takeFirst();
+ queueMutex.unlock();
+ return ret;
+}
+
+void QWindowSystemInterfacePrivate::queueWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *ev)
+{
+ queueMutex.lock();
+ windowSystemEventQueue.append(ev);
+ queueMutex.unlock();
+
+ QAbstractEventDispatcher *dispatcher = QApplicationPrivate::qt_qpa_core_dispatcher();
+ if (dispatcher)
+ dispatcher->wakeUp();
+}
+
+void QWindowSystemInterface::handleTouchEvent(QWidget *w, QEvent::Type type, QTouchEvent::DeviceType devType, const QList<struct TouchPoint> &points) {
+ unsigned long time = QWindowSystemInterfacePrivate::eventTime.elapsed();
+ handleTouchEvent(w, time, type, devType, points);
+}
+
+void QWindowSystemInterface::handleTouchEvent(QWidget *tlw, ulong timestamp, QEvent::Type type, QTouchEvent::DeviceType devType, const QList<struct TouchPoint> &points)
+{
+ if (!points.size()) // Touch events must have at least one point
+ return;
+
+ QList<QTouchEvent::TouchPoint> touchPoints;
+ Qt::TouchPointStates states;
+ QTouchEvent::TouchPoint p;
+
+ QList<struct TouchPoint>::const_iterator point = points.constBegin();
+ QList<struct TouchPoint>::const_iterator end = points.constEnd();
+ while (point != end) {
+ p.setId(point->id);
+ p.setPressure(point->pressure);
+ states |= point->state;
+ Qt::TouchPointStates state = point->state;
+ if (point->isPrimary) {
+ state |= Qt::TouchPointPrimary;
+ }
+ p.setState(state);
+ p.setRect(point->area);
+ p.setScreenPos(point->area.center());
+ p.setNormalizedPos(point->normalPosition);
+
+ touchPoints.append(p);
+ ++point;
+ }
+
+ QWindowSystemInterfacePrivate::TouchEvent *e =
+ new QWindowSystemInterfacePrivate::TouchEvent(tlw, timestamp, type, devType, touchPoints);
+ QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
+}
+
+void QWindowSystemInterface::handleScreenGeometryChange(int screenIndex)
+{
+ QWindowSystemInterfacePrivate::ScreenGeometryEvent *e =
+ new QWindowSystemInterfacePrivate::ScreenGeometryEvent(screenIndex);
+ QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
+}
+
+void QWindowSystemInterface::handleScreenAvailableGeometryChange(int screenIndex)
+{
+ QWindowSystemInterfacePrivate::ScreenAvailableGeometryEvent *e =
+ new QWindowSystemInterfacePrivate::ScreenAvailableGeometryEvent(screenIndex);
+ QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
+}
+
+void QWindowSystemInterface::handleScreenCountChange(int count)
+{
+ QWindowSystemInterfacePrivate::ScreenCountEvent *e =
+ new QWindowSystemInterfacePrivate::ScreenCountEvent(count);
+ QWindowSystemInterfacePrivate::queueWindowSystemEvent(e);
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qwindowsysteminterface_qpa.h b/src/gui/kernel/qwindowsysteminterface_qpa.h
new file mode 100644
index 0000000000..1c79f2a257
--- /dev/null
+++ b/src/gui/kernel/qwindowsysteminterface_qpa.h
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+#ifndef QWINDOWSYSTEMINTERFACE_H
+#define QWINDOWSYSTEMINTERFACE_H
+
+#include <QtCore/QTime>
+#include <QtGui/qwindowdefs.h>
+#include <QtCore/QEvent>
+#include <QtGui/QWidget>
+#include <QtCore/QWeakPointer>
+#include <QtCore/QMutex>
+#include <QtGui/QTouchEvent>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class Q_GUI_EXPORT QWindowSystemInterface
+{
+public:
+ static void handleMouseEvent(QWidget *w, const QPoint & local, const QPoint & global, Qt::MouseButtons b);
+ static void handleMouseEvent(QWidget *w, ulong timestamp, const QPoint & local, const QPoint & global, Qt::MouseButtons b);
+
+ static void handleKeyEvent(QWidget *w, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text = QString(), bool autorep = false, ushort count = 1);
+ static void handleKeyEvent(QWidget *w, ulong timestamp, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text = QString(), bool autorep = false, ushort count = 1);
+
+ static void handleWheelEvent(QWidget *w, const QPoint & local, const QPoint & global, int d, Qt::Orientation o);
+ static void handleWheelEvent(QWidget *w, ulong timestamp, const QPoint & local, const QPoint & global, int d, Qt::Orientation o);
+
+ struct TouchPoint {
+ int id; // for application use
+ bool isPrimary; // for application use
+ QPointF normalPosition; // touch device coordinates, (0 to 1, 0 to 1)
+ QRectF area; // the touched area, centered at position in screen coordinates
+ qreal pressure; // 0 to 1
+ Qt::TouchPointState state; //Qt::TouchPoint{Pressed|Moved|Stationary|Released}
+ };
+
+ static void handleTouchEvent(QWidget *w, QEvent::Type type, QTouchEvent::DeviceType devType, const QList<struct TouchPoint> &points);
+ static void handleTouchEvent(QWidget *w, ulong timestamp, QEvent::Type type, QTouchEvent::DeviceType devType, const QList<struct TouchPoint> &points);
+
+ static void handleGeometryChange(QWidget *w, const QRect &newRect);
+ static void handleCloseEvent(QWidget *w);
+ static void handleEnterEvent(QWidget *w);
+ static void handleLeaveEvent(QWidget *w);
+
+ // Changes to the screen
+ static void handleScreenGeometryChange(int screenIndex);
+ static void handleScreenAvailableGeometryChange(int screenIndex);
+ static void handleScreenCountChange(int count);
+};
+
+QT_END_NAMESPACE
+QT_END_HEADER
+#endif // QWINDOWSYSTEMINTERFACE_H
diff --git a/src/gui/kernel/qwindowsysteminterface_qpa_p.h b/src/gui/kernel/qwindowsysteminterface_qpa_p.h
new file mode 100644
index 0000000000..78e1f33339
--- /dev/null
+++ b/src/gui/kernel/qwindowsysteminterface_qpa_p.h
@@ -0,0 +1,189 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+#ifndef QWINDOWSYSTEMINTERFACE_QPA_P_H
+#define QWINDOWSYSTEMINTERFACE_QPA_P_H
+
+#include "qwindowsysteminterface_qpa.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QWindowSystemInterfacePrivate {
+public:
+ enum EventType {
+ Close,
+ GeometryChange,
+ Enter,
+ Leave,
+ Mouse,
+ Wheel,
+ Key,
+ Touch,
+ ScreenGeometry,
+ ScreenAvailableGeometry,
+ ScreenCountChange
+ };
+
+ class WindowSystemEvent {
+ public:
+ WindowSystemEvent(EventType t)
+ : type(t) { }
+ EventType type;
+ };
+
+ class CloseEvent : public WindowSystemEvent {
+ public:
+ CloseEvent(QWidget *tlw)
+ : WindowSystemEvent(Close), topLevel(tlw) { }
+ QWeakPointer<QWidget> topLevel;
+ };
+
+ class GeometryChangeEvent : public WindowSystemEvent {
+ public:
+ GeometryChangeEvent(QWidget *tlw, const QRect &newGeometry)
+ : WindowSystemEvent(GeometryChange), tlw(tlw), newGeometry(newGeometry)
+ { }
+ QWeakPointer<QWidget> tlw;
+ QRect newGeometry;
+ };
+
+ class EnterEvent : public WindowSystemEvent {
+ public:
+ EnterEvent(QWidget *enter)
+ : WindowSystemEvent(Enter), enter(enter)
+ { }
+ QWeakPointer<QWidget> enter;
+ };
+
+ class LeaveEvent : public WindowSystemEvent {
+ public:
+ LeaveEvent(QWidget *leave)
+ : WindowSystemEvent(Leave), leave(leave)
+ { }
+ QWeakPointer<QWidget> leave;
+ };
+
+ class UserEvent : public WindowSystemEvent {
+ public:
+ UserEvent(QWidget * w, ulong time, EventType t)
+ : WindowSystemEvent(t), widget(w), timestamp(time) { }
+ QWeakPointer<QWidget> widget;
+ unsigned long timestamp;
+ };
+
+ class MouseEvent : public UserEvent {
+ public:
+ MouseEvent(QWidget * w, ulong time, const QPoint & local, const QPoint & global, Qt::MouseButtons b)
+ : UserEvent(w, time, Mouse), localPos(local), globalPos(global), buttons(b) { }
+ QPoint localPos;
+ QPoint globalPos;
+ Qt::MouseButtons buttons;
+ };
+
+ class WheelEvent : public UserEvent {
+ public:
+ WheelEvent(QWidget *w, ulong time, const QPoint & local, const QPoint & global, int d, Qt::Orientation o)
+ : UserEvent(w, time, Wheel), delta(d), localPos(local), globalPos(global), orient(o) { }
+ int delta;
+ QPoint localPos;
+ QPoint globalPos;
+ Qt::Orientation orient;
+ };
+
+ class KeyEvent : public UserEvent {
+ public:
+ KeyEvent(QWidget *w, ulong time, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString & text = QString(), bool autorep = false, ushort count = 1)
+ :UserEvent(w, time, Key), key(k), unicode(text), repeat(autorep),
+ repeatCount(count), modifiers(mods), keyType(t) { }
+ int key;
+ QString unicode;
+ bool repeat;
+ ushort repeatCount;
+ Qt::KeyboardModifiers modifiers;
+ QEvent::Type keyType;
+ };
+
+ class TouchEvent : public UserEvent {
+ public:
+ TouchEvent(QWidget *w, ulong time, QEvent::Type t, QTouchEvent::DeviceType d, const QList<QTouchEvent::TouchPoint> &p)
+ :UserEvent(w, time, Touch), devType(d), points(p), touchType(t) { }
+ QTouchEvent::DeviceType devType;
+ QList<QTouchEvent::TouchPoint> points;
+ QEvent::Type touchType;
+
+ };
+
+ class ScreenCountEvent : public WindowSystemEvent {
+ public:
+ ScreenCountEvent (int count)
+ : WindowSystemEvent(ScreenCountChange) , count(count) { }
+ int count;
+ };
+
+ class ScreenGeometryEvent : public WindowSystemEvent {
+ public:
+ ScreenGeometryEvent(int index)
+ : WindowSystemEvent(ScreenGeometry), index(index) { }
+ int index;
+ };
+
+ class ScreenAvailableGeometryEvent : public WindowSystemEvent {
+ public:
+ ScreenAvailableGeometryEvent(int index)
+ : WindowSystemEvent(ScreenAvailableGeometry), index(index) { }
+ int index;
+ };
+
+ static QList<WindowSystemEvent *> windowSystemEventQueue;
+ static QMutex queueMutex;
+
+ static int windowSystemEventsQueued();
+ static WindowSystemEvent * getWindowSystemEvent();
+ static void queueWindowSystemEvent(WindowSystemEvent *ev);
+
+ static QTime eventTime;
+};
+
+QT_END_HEADER
+QT_END_NAMESPACE
+
+#endif // QWINDOWSYSTEMINTERFACE_QPA_P_H
diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri
index 793d380f8e..099619c353 100644
--- a/src/gui/painting/painting.pri
+++ b/src/gui/painting/painting.pri
@@ -87,14 +87,18 @@ SOURCES += \
painting/qpaintengine_raster.cpp \
painting/qdrawhelper.cpp \
painting/qimagescale.cpp \
- painting/qgrayraster.c
+ painting/qgrayraster.c \
+ painting/qpaintengine_blitter.cpp \
+ painting/qblittable.cpp \
HEADERS += \
painting/qpaintengine_raster_p.h \
painting/qdrawhelper_p.h \
painting/qblendfunctions_p.h \
painting/qrasterdefs_p.h \
- painting/qgrayraster_p.h
+ painting/qgrayraster_p.h \
+ painting/qpaintengine_blitter_p.h \
+ painting/qblittable_p.h \
win32 {
HEADERS += painting/qprintengine_win_p.h
@@ -115,20 +119,20 @@ embedded {
SOURCES += \
painting/qgraphicssystem_qws.cpp \
-} else {
+} else: if(!qpa) {
HEADERS += \
painting/qgraphicssystem_raster_p.h \
painting/qgraphicssystem_runtime_p.h \
painting/qgraphicssystemfactory_p.h \
painting/qgraphicssystemplugin_p.h \
- painting/qwindowsurface_raster_p.h \
+ painting/qwindowsurface_raster_p.h
SOURCES += \
painting/qgraphicssystem_raster.cpp \
painting/qgraphicssystem_runtime.cpp \
painting/qgraphicssystemfactory.cpp \
painting/qgraphicssystemplugin.cpp \
- painting/qwindowsurface_raster.cpp \
+ painting/qwindowsurface_raster.cpp
}
unix:x11 {
@@ -141,7 +145,7 @@ unix:x11 {
painting/qpaintengine_x11.cpp
}
-!embedded:!x11:mac {
+!embedded:!qpa:!x11:mac {
HEADERS += \
painting/qpaintengine_mac_p.h \
painting/qgraphicssystem_mac_p.h \
@@ -157,14 +161,14 @@ unix:x11 {
painting/qprintengine_mac.mm \
}
-unix:!mac:!symbian {
+unix:!mac:!symbian|qpa {
HEADERS += \
painting/qprinterinfo_unix_p.h
SOURCES += \
painting/qprinterinfo_unix.cpp
}
-win32|x11|mac|embedded|symbian {
+win32|x11|mac|embedded|qpa|symbian {
SOURCES += painting/qbackingstore.cpp
HEADERS += painting/qbackingstore_p.h
}
@@ -181,6 +185,12 @@ embedded {
painting/qpaintdevice_qws.cpp
}
+qpa {
+ SOURCES += \
+ painting/qcolormap_qpa.cpp \
+ painting/qpaintdevice_qpa.cpp
+}
+
symbian {
SOURCES += \
painting/qpaintengine_s60.cpp \
@@ -191,7 +201,7 @@ symbian {
painting/qpaintengine_s60_p.h
}
-x11|embedded {
+x11|embedded|qpa {
contains(QT_CONFIG,qtopia) {
DEFINES += QT_NO_CUPS QT_NO_LPR
} else {
@@ -221,7 +231,7 @@ x11 {
SOURCES += painting/qwindowsurface_x11.cpp
}
-mac {
+!embedded:!qpa:mac {
HEADERS += painting/qwindowsurface_mac_p.h
SOURCES += painting/qwindowsurface_mac.cpp
}
@@ -234,19 +244,26 @@ 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
QMAKE_CXXFLAGS.ARMCC *= -O3
}
+mac {
+ HEADERS += painting/qunifiedtoolbarsurface_mac_p.h
+ SOURCES += painting/qunifiedtoolbarsurface_mac.cpp
+}
+
+
NEON_SOURCES += painting/qdrawhelper_neon.cpp
NEON_HEADERS += painting/qdrawhelper_neon_p.h
NEON_ASM += ../3rdparty/pixman/pixman-arm-neon-asm.S painting/qdrawhelper_neon_asm.S
diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp
index ac9b99438e..df1210fc34 100644
--- a/src/gui/painting/qbackingstore.cpp
+++ b/src/gui/painting/qbackingstore.cpp
@@ -98,6 +98,21 @@ static inline void qt_flush(QWidget *widget, const QRegion &region, QWindowSurfa
QWidgetBackingStore::showYellowThing(widget, region, flushUpdate * 10, false);
#endif
+ //The performance hit by doing this should be negligible. However, be aware that
+ //using this FPS when you have > 1 windowsurface can give you inaccurate FPS
+ static bool fpsDebug = qgetenv("QT_DEBUG_FPS").toInt();
+ if (fpsDebug) {
+ static QTime time = QTime::currentTime();
+ static int frames = 0;
+
+ frames++;
+
+ if(time.elapsed() > 5000) {
+ double fps = double(frames * 1000) /time.restart();
+ fprintf(stderr,"FPS: %.1f\n",fps);
+ frames = 0;
+ }
+ }
if (widget != tlw)
windowSurface->flush(widget, region, tlwOffset + widget->mapTo(tlw, QPoint()));
else
@@ -271,7 +286,11 @@ bool QWidgetBackingStore::bltRect(const QRect &rect, int dx, int dy, QWidget *wi
void QWidgetBackingStore::releaseBuffer()
{
if (windowSurface)
+#if defined(Q_WS_QPA)
+ windowSurface->resize(QSize());
+#else
windowSurface->setGeometry(QRect());
+#endif
#ifdef Q_BACKINGSTORE_SUBSURFACES
for (int i = 0; i < subSurfaces.size(); ++i)
subSurfaces.at(i)->setGeometry(QRect());
@@ -401,7 +420,11 @@ QRegion QWidgetBackingStore::dirtyRegion(QWidget *widget) const
{
const bool widgetDirty = widget && widget != tlw;
const QRect tlwRect(topLevelRect());
+#if defined(Q_WS_QPA)
+ const QRect surfaceGeometry(tlwRect.topLeft(), windowSurface->size());
+#else
const QRect surfaceGeometry(windowSurface->geometry());
+#endif
if (fullUpdatePending || (surfaceGeometry != tlwRect && surfaceGeometry.size() != tlwRect.size())) {
if (widgetDirty) {
const QRect dirtyTlwRect = QRect(QPoint(), tlwRect.size());
@@ -446,13 +469,17 @@ 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
{
if (!parent && tlw->testAttribute(Qt::WA_StaticContents)) {
+#if defined(Q_WS_QPA)
+ const QSize surfaceGeometry(windowSurface->size());
+#else
const QRect surfaceGeometry(windowSurface->geometry());
+#endif
QRect surfaceRect(0, 0, surfaceGeometry.width(), surfaceGeometry.height());
if (!withinClipRect.isEmpty())
surfaceRect &= withinClipRect;
@@ -720,9 +747,8 @@ void QWidgetBackingStore::markDirtyOnScreen(const QRegion &region, QWidget *widg
}
// Alien widgets.
- if (!widget->internalWinId()) {
- QWidget *nativeParent = widget->nativeParentWidget();
- // Alien widgets with the top-level as the native parent (common case).
+ if (!widget->internalWinId() && !widget->isWindow()) {
+ QWidget *nativeParent = widget->nativeParentWidget(); // Alien widgets with the top-level as the native parent (common case).
if (nativeParent == tlw) {
if (!widget->testAttribute(Qt::WA_WState_InPaintEvent))
dirtyOnScreen += region.translated(topLevelOffset);
@@ -1152,12 +1178,16 @@ void QWidgetBackingStore::sync()
return;
}
- const bool inTopLevelResize = tlwExtra->inTopLevelResize;
const bool updatesDisabled = !tlw->updatesEnabled();
- const QRect tlwRect(topLevelRect());
- const QRect surfaceGeometry(windowSurface->geometry());
bool repaintAllWidgets = false;
+ const bool inTopLevelResize = tlwExtra->inTopLevelResize;
+ const QRect tlwRect(topLevelRect());
+#ifdef Q_WS_QPA
+ const QRect surfaceGeometry(tlwRect.topLeft(), windowSurface->size());
+#else
+ const QRect surfaceGeometry(windowSurface->geometry());
+#endif
if ((fullUpdatePending || inTopLevelResize || surfaceGeometry.size() != tlwRect.size()) && !updatesDisabled) {
if (hasStaticContents()) {
// Repaint existing dirty area and newly visible area.
@@ -1177,8 +1207,13 @@ void QWidgetBackingStore::sync()
}
}
+#ifdef Q_WS_QPA
+ if (inTopLevelResize || surfaceGeometry.size() != tlwRect.size())
+ windowSurface->resize(tlwRect.size());
+#else
if (inTopLevelResize || surfaceGeometry != tlwRect)
windowSurface->setGeometry(tlwRect);
+#endif
if (updatesDisabled)
return;
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/qblittable.cpp b/src/gui/painting/qblittable.cpp
new file mode 100644
index 0000000000..f4b84a9142
--- /dev/null
+++ b/src/gui/painting/qblittable.cpp
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** 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 "qblittable_p.h"
+
+#ifndef QT_NO_BLITTABLE
+QT_BEGIN_NAMESPACE
+
+class QBlittablePrivate
+{
+public:
+ QBlittablePrivate(const QSize &size, QBlittable::Capabilities caps)
+ : caps(caps), m_size(size), locked(false), cachedImg(0)
+ {}
+ QBlittable::Capabilities caps;
+ QSize m_size;
+ bool locked;
+ QImage *cachedImg;
+};
+
+
+QBlittable::QBlittable(const QSize &size, Capabilities caps)
+ : d_ptr(new QBlittablePrivate(size,caps))
+{
+}
+
+QBlittable::~QBlittable()
+{
+ delete d_ptr;
+}
+
+
+QBlittable::Capabilities QBlittable::capabilities() const
+{
+ Q_D(const QBlittable);
+ return d->caps;
+}
+
+QSize QBlittable::size() const
+{
+ Q_D(const QBlittable);
+ return d->m_size;
+}
+
+QImage *QBlittable::lock()
+{
+ Q_D(QBlittable);
+ if (!d->locked) {
+ d->cachedImg = doLock();
+ d->locked = true;
+ }
+
+ return d->cachedImg;
+}
+
+void QBlittable::unlock()
+{
+ Q_D(QBlittable);
+ if (d->locked) {
+ doUnlock();
+ d->locked = false;
+ }
+}
+
+QT_END_NAMESPACE
+#endif //QT_NO_BLITTABLE
+
diff --git a/src/gui/painting/qblittable_p.h b/src/gui/painting/qblittable_p.h
new file mode 100644
index 0000000000..cb56cb2528
--- /dev/null
+++ b/src/gui/painting/qblittable_p.h
@@ -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 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$
+**
+****************************************************************************/
+
+#ifndef QBLITTABLE_P_H
+#define QBLITTABLE_P_H
+
+#include <QtCore/qsize.h>
+#include <QtGui/private/qpixmap_blitter_p.h>
+
+
+#ifndef QT_NO_BLITTABLE
+QT_BEGIN_NAMESPACE
+
+class QImage;
+class QBlittablePrivate;
+
+class Q_GUI_EXPORT QBlittable
+{
+ Q_DECLARE_PRIVATE(QBlittable);
+public:
+ enum Capability {
+
+ SolidRectCapability = 0x0001,
+ SourcePixmapCapability = 0x0002,
+ SourceOverPixmapCapability = 0x0004,
+ SourceOverScaledPixmapCapability = 0x0008,
+
+ // Internal ones
+ OutlineCapability = 0x0001000,
+ };
+ Q_DECLARE_FLAGS (Capabilities, Capability);
+
+ QBlittable(const QSize &size, Capabilities caps);
+ virtual ~QBlittable();
+
+ Capabilities capabilities() const;
+ QSize size() const;
+
+ virtual void fillRect(const QRectF &rect, const QColor &color) = 0;
+ virtual void drawPixmap(const QRectF &rect, const QPixmap &pixmap, const QRectF &subrect) = 0;
+
+ QImage *lock();
+ void unlock();
+
+protected:
+ virtual QImage *doLock() = 0;
+ virtual void doUnlock() = 0;
+ QBlittablePrivate *d_ptr;
+};
+
+QT_END_NAMESPACE
+#endif //QT_NO_BLITTABLE
+#endif //QBLITTABLE_P_H
diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp
index d0788c70dc..5b35fc5da3 100644
--- a/src/gui/painting/qbrush.cpp
+++ b/src/gui/painting/qbrush.cpp
@@ -635,6 +635,15 @@ QBrush &QBrush::operator=(const QBrush &b)
return *this;
}
+
+/*!
+ \fn void QBrush::swap(QBrush &other)
+ \since 4.8
+
+ Swaps brush \a other with this brush. This operation is very
+ fast and never fails.
+*/
+
/*!
Returns the brush as a QVariant
*/
diff --git a/src/gui/painting/qbrush.h b/src/gui/painting/qbrush.h
index efc720b12f..f9acdedb9a 100644
--- a/src/gui/painting/qbrush.h
+++ b/src/gui/painting/qbrush.h
@@ -96,6 +96,8 @@ public:
inline QBrush &operator=(QBrush &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QBrush &other) { qSwap(d, other.d); }
+
operator QVariant() const;
inline Qt::BrushStyle style() const;
diff --git a/src/gui/painting/qcolormap.qdoc b/src/gui/painting/qcolormap.qdoc
index ec3d2ba327..96fd6a00ae 100644
--- a/src/gui/painting/qcolormap.qdoc
+++ b/src/gui/painting/qcolormap.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/src/gui/painting/qcolormap_qpa.cpp b/src/gui/painting/qcolormap_qpa.cpp
new file mode 100644
index 0000000000..1f4fea8e41
--- /dev/null
+++ b/src/gui/painting/qcolormap_qpa.cpp
@@ -0,0 +1,231 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qcolormap.h"
+#include "qcolor.h"
+#include "qpaintdevice.h"
+#include "private/qapplication_p.h"
+#include "private/qgraphicssystem_p.h"
+
+QT_BEGIN_NAMESPACE
+
+class QColormapPrivate
+{
+public:
+ inline QColormapPrivate()
+ : ref(1), mode(QColormap::Direct), depth(0), numcolors(0)
+ { }
+
+ QAtomicInt ref;
+
+ QColormap::Mode mode;
+ int depth;
+ int numcolors;
+};
+
+static QColormapPrivate *screenMap = 0;
+
+void QColormap::initialize()
+{
+ screenMap = new QColormapPrivate;
+
+ QPlatformIntegration *pi = QApplicationPrivate::platformIntegration();
+ QList<QPlatformScreen*> screens = pi->screens();
+
+ screenMap->depth = screens[0]->depth();
+ if (screenMap->depth < 8) {
+ screenMap->mode = QColormap::Indexed;
+ screenMap->numcolors = 256;
+ } else {
+ screenMap->mode = QColormap::Direct;
+ screenMap->numcolors = -1;
+ }
+}
+
+void QColormap::cleanup()
+{
+ delete screenMap;
+ screenMap = 0;
+}
+
+QColormap QColormap::instance(int /*screen*/)
+{
+ return QColormap();
+}
+
+QColormap::QColormap()
+ : d(screenMap)
+{ d->ref.ref(); }
+
+QColormap::QColormap(const QColormap &colormap)
+ :d (colormap.d)
+{ d->ref.ref(); }
+
+QColormap::~QColormap()
+{
+ if (!d->ref.deref())
+ delete d;
+}
+
+QColormap::Mode QColormap::mode() const
+{ return d->mode; }
+
+
+int QColormap::depth() const
+{ return d->depth; }
+
+
+int QColormap::size() const
+{
+ return d->numcolors;
+}
+
+#ifndef QT_QWS_DEPTH16_RGB
+#define QT_QWS_DEPTH16_RGB 565
+#endif
+static const int qt_rbits = (QT_QWS_DEPTH16_RGB/100);
+static const int qt_gbits = (QT_QWS_DEPTH16_RGB/10%10);
+static const int qt_bbits = (QT_QWS_DEPTH16_RGB%10);
+static const int qt_red_shift = qt_bbits+qt_gbits-(8-qt_rbits);
+static const int qt_green_shift = qt_bbits-(8-qt_gbits);
+static const int qt_neg_blue_shift = 8-qt_bbits;
+static const int qt_blue_mask = (1<<qt_bbits)-1;
+static const int qt_green_mask = (1<<(qt_gbits+qt_bbits))-(1<<qt_bbits);
+static const int qt_red_mask = (1<<(qt_rbits+qt_gbits+qt_bbits))-(1<<(qt_gbits+qt_bbits));
+
+static const int qt_red_rounding_shift = qt_red_shift + qt_rbits;
+static const int qt_green_rounding_shift = qt_green_shift + qt_gbits;
+static const int qt_blue_rounding_shift = qt_bbits - qt_neg_blue_shift;
+
+inline ushort qt_convRgbTo16(QRgb c)
+{
+ const int tr = qRed(c) << qt_red_shift;
+ const int tg = qGreen(c) << qt_green_shift;
+ const int tb = qBlue(c) >> qt_neg_blue_shift;
+
+ return (tb & qt_blue_mask) | (tg & qt_green_mask) | (tr & qt_red_mask);
+}
+
+inline QRgb qt_conv16ToRgb(ushort c)
+{
+ const int r=(c & qt_red_mask);
+ const int g=(c & qt_green_mask);
+ const int b=(c & qt_blue_mask);
+ const int tr = r >> qt_red_shift | r >> qt_red_rounding_shift;
+ const int tg = g >> qt_green_shift | g >> qt_green_rounding_shift;
+ const int tb = b << qt_neg_blue_shift | b >> qt_blue_rounding_shift;
+
+ return qRgb(tr,tg,tb);
+}
+
+uint QColormap::pixel(const QColor &color) const
+{
+ QRgb rgb = color.rgba();
+ if (d->mode == QColormap::Direct) {
+ switch(d->depth) {
+ case 16:
+ return qt_convRgbTo16(rgb);
+ case 24:
+ case 32:
+ {
+ const int r = qRed(rgb);
+ const int g = qGreen(rgb);
+ const int b = qBlue(rgb);
+ const int red_shift = 16;
+ const int green_shift = 8;
+ const int red_mask = 0xff0000;
+ const int green_mask = 0x00ff00;
+ const int blue_mask = 0x0000ff;
+ const int tg = g << green_shift;
+#ifdef QT_QWS_DEPTH_32_BGR
+ if (qt_screen->pixelType() == QScreen::BGRPixel) {
+ const int tb = b << red_shift;
+ return 0xff000000 | (r & blue_mask) | (tg & green_mask) | (tb & red_mask);
+ }
+#endif
+ const int tr = r << red_shift;
+ return 0xff000000 | (b & blue_mask) | (tg & green_mask) | (tr & red_mask);
+ }
+ }
+ }
+ //XXX
+ //return qt_screen->alloc(qRed(rgb), qGreen(rgb), qBlue(rgb));
+ return 0;
+}
+
+const QColor QColormap::colorAt(uint pixel) const
+{
+ if (d->mode == Direct) {
+ if (d->depth == 16) {
+ pixel = qt_conv16ToRgb(pixel);
+ }
+ const int red_shift = 16;
+ const int green_shift = 8;
+ const int red_mask = 0xff0000;
+ const int green_mask = 0x00ff00;
+ const int blue_mask = 0x0000ff;
+#ifdef QT_QWS_DEPTH_32_BGR
+ if (qt_screen->pixelType() == QScreen::BGRPixel) {
+ return QColor((pixel & blue_mask),
+ (pixel & green_mask) >> green_shift,
+ (pixel & red_mask) >> red_shift);
+ }
+#endif
+ return QColor((pixel & red_mask) >> red_shift,
+ (pixel & green_mask) >> green_shift,
+ (pixel & blue_mask));
+ }
+#if 0 // XXX
+ Q_ASSERT_X(int(pixel) < qt_screen->numCols(), "QColormap::colorAt", "pixel out of bounds of palette");
+ return QColor(qt_screen->clut()[pixel]);
+#endif
+ return QColor();
+}
+
+const QVector<QColor> QColormap::colormap() const
+{
+ return QVector<QColor>();
+}
+
+QColormap &QColormap::operator=(const QColormap &colormap)
+{ qAtomicAssign(d, colormap.d); return *this; }
+
+QT_END_NAMESPACE
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_arm_simd_p.h b/src/gui/painting/qdrawhelper_arm_simd_p.h
new file mode 100644
index 0000000000..6c96a841a6
--- /dev/null
+++ b/src/gui/painting/qdrawhelper_arm_simd_p.h
@@ -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 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$
+**
+****************************************************************************/
+
+#ifndef QDRAWHELPER_ARM_SIMD_P_H
+#define QDRAWHELPER_ARM_SIMD_P_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 <private/qdrawhelper_p.h>
+
+QT_BEGIN_NAMESPACE
+
+#if defined(QT_HAVE_ARM_SIMD)
+
+void qt_blend_argb32_on_argb32_arm_simd(uchar *destPixels, int dbpl,
+ const uchar *srcPixels, int sbpl,
+ int w, int h,
+ int const_alpha);
+
+void qt_blend_rgb32_on_rgb32_arm_simd(uchar *destPixels, int dbpl,
+ const uchar *srcPixels, int sbpl,
+ int w, int h,
+ int const_alpha);
+
+#endif // QT_HAVE_ARM_SIMD
+
+QT_END_NAMESPACE
+
+#endif // QDRAWHELPER_ARM_SIMD_P_H
diff --git a/src/gui/painting/qdrawhelper_armv6_p.h b/src/gui/painting/qdrawhelper_armv6_p.h
deleted file mode 100644
index e58f8bbdc1..0000000000
--- a/src/gui/painting/qdrawhelper_armv6_p.h
+++ /dev/null
@@ -1,81 +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$
-**
-****************************************************************************/
-
-#ifndef QDRAWHELPER_ARMV6_P_H
-#define QDRAWHELPER_ARMV6_P_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 <private/qdrawhelper_p.h>
-
-QT_BEGIN_NAMESPACE
-
-#if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6)
-
-extern "C" void qt_blend_rgb32_on_rgb32_armv6(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,
- 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
-
-QT_END_NAMESPACE
-
-#endif // QDRAWHELPER_ARMV6_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.cpp b/src/gui/painting/qgraphicssystem.cpp
index f06e3096f0..f594136cac 100644
--- a/src/gui/painting/qgraphicssystem.cpp
+++ b/src/gui/painting/qgraphicssystem.cpp
@@ -50,6 +50,9 @@
#ifdef Q_WS_MAC
# include <private/qpixmap_mac_p.h>
#endif
+#ifdef Q_WS_QPA
+# include <QtGui/private/qapplication_p.h>
+#endif
#ifdef Q_OS_SYMBIAN
# include <private/qpixmap_s60_p.h>
#endif
@@ -71,8 +74,10 @@ QPixmapData *QGraphicsSystem::createDefaultPixmapData(QPixmapData::PixelType typ
return new QRasterPixmapData(type);
#elif defined(Q_WS_MAC)
return new QMacPixmapData(type);
+#elif defined(Q_WS_QPA)
+ return QApplicationPrivate::platformIntegration()->createPixmapData(type);
#elif defined(Q_OS_SYMBIAN)
- return new QS60PixmapData(type);
+ return new QS60PixmapData(type);
#elif !defined(Q_WS_QWS)
#error QGraphicsSystem::createDefaultPixmapData() not implemented
#endif
diff --git a/src/gui/painting/qgraphicssystem_p.h b/src/gui/painting/qgraphicssystem_p.h
index 1211505baa..a75ea61510 100644
--- a/src/gui/painting/qgraphicssystem_p.h
+++ b/src/gui/painting/qgraphicssystem_p.h
@@ -55,10 +55,14 @@
#include "private/qpixmapdata_p.h"
#include "private/qwindowsurface_p.h"
+#include "private/qpaintengine_blitter_p.h"
+
+#include <qdebug.h>
QT_BEGIN_NAMESPACE
class QPixmapFilter;
+class QBlittable;
class Q_GUI_EXPORT QGraphicsSystem
{
@@ -67,7 +71,7 @@ public:
virtual QPixmapData *createPixmapData(QPixmapData *origin);
virtual QWindowSurface *createWindowSurface(QWidget *widget) const = 0;
- virtual ~QGraphicsSystem() = 0;
+ virtual ~QGraphicsSystem();
//### Remove this & change qpixmap.cpp & qbitmap.cpp once every platform is gaurenteed
// to have a graphics system.
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/qgrayraster.c b/src/gui/painting/qgrayraster.c
index ec9ebeb71f..536f265f14 100644
--- a/src/gui/painting/qgrayraster.c
+++ b/src/gui/painting/qgrayraster.c
@@ -408,25 +408,31 @@
/* */
/* Record the current cell in the table. */
/* */
- static PCell
- gray_find_cell( RAS_ARG )
+ static void
+ gray_record_cell( RAS_ARG )
{
PCell *pcell, cell;
int x = ras.ex;
+ if ( ras.invalid || !( ras.area | ras.cover ) )
+ return;
if ( x > ras.max_ex )
x = ras.max_ex;
pcell = &ras.ycells[ras.ey];
+
for (;;)
{
cell = *pcell;
if ( cell == NULL || cell->x > x )
break;
- if ( cell->x == x )
- goto Exit;
+ if ( cell->x == x ) {
+ cell->area += ras.area;
+ cell->cover += ras.cover;
+ return;
+ }
pcell = &cell->next;
}
@@ -436,28 +442,11 @@
cell = ras.cells + ras.num_cells++;
cell->x = x;
- cell->area = 0;
- cell->cover = 0;
+ cell->area = ras.area;
+ cell->cover = ras.cover;
cell->next = *pcell;
*pcell = cell;
-
- Exit:
- return cell;
- }
-
-
- static void
- gray_record_cell( RAS_ARG )
- {
- if ( !ras.invalid && ( ras.area | ras.cover ) )
- {
- PCell cell = gray_find_cell( RAS_VAR );
-
-
- cell->area += ras.area;
- cell->cover += ras.cover;
- }
}
diff --git a/src/gui/painting/qgrayraster_p.h b/src/gui/painting/qgrayraster_p.h
index ad595b864a..d610a9a0db 100644
--- a/src/gui/painting/qgrayraster_p.h
+++ b/src/gui/painting/qgrayraster_p.h
@@ -91,7 +91,7 @@
/* Minimum buffer size for raster object, that accounts
for TWorker and TCell sizes.*/
-#define MINIMUM_POOL_SIZE 4096
+#define MINIMUM_POOL_SIZE 8192
QT_FT_EXPORT_VAR( const QT_FT_Raster_Funcs ) qt_ft_grays_raster;
diff --git a/src/gui/painting/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/qpaintdevice.cpp b/src/gui/painting/qpaintdevice.cpp
index 4169df03b4..cde7bfabb9 100644
--- a/src/gui/painting/qpaintdevice.cpp
+++ b/src/gui/painting/qpaintdevice.cpp
@@ -59,11 +59,13 @@ QPaintDevice::~QPaintDevice()
}
+#ifndef Q_WS_QPA
int QPaintDevice::metric(PaintDeviceMetric) const
{
qWarning("QPaintDevice::metrics: Device has no metric information");
return 0;
}
+#endif
Q_GUI_EXPORT int qt_paint_device_metric(const QPaintDevice *device, QPaintDevice::PaintDeviceMetric metric)
{
diff --git a/src/gui/painting/qpaintdevice.qdoc b/src/gui/painting/qpaintdevice.qdoc
index 38a15758c4..5290766c8e 100644
--- a/src/gui/painting/qpaintdevice.qdoc
+++ b/src/gui/painting/qpaintdevice.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/src/gui/painting/qpaintdevice_qpa.cpp b/src/gui/painting/qpaintdevice_qpa.cpp
new file mode 100644
index 0000000000..0d1ca92d45
--- /dev/null
+++ b/src/gui/painting/qpaintdevice_qpa.cpp
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qpaintdevice.h"
+#include "qpainter.h"
+#include "qwidget.h"
+#include "qbitmap.h"
+#include "qapplication.h"
+
+QT_BEGIN_NAMESPACE
+
+extern void qt_painter_removePaintDevice(QPaintDevice *); //qpainter.cpp
+
+int QPaintDevice::metric(PaintDeviceMetric m) const
+{
+ qWarning("QPaintDevice::metrics: Device has no metric information");
+ if (m == PdmDpiX) {
+ return 72;
+ } else if (m == PdmDpiY) {
+ return 72;
+ } else if (m == PdmNumColors) {
+ // FIXME: does this need to be a real value?
+ return 256;
+ } else {
+ qDebug("Unrecognised metric %d!",m);
+ return 0;
+ }
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/painting/qpaintengine.h b/src/gui/painting/qpaintengine.h
index b860012270..ee9b457943 100644
--- a/src/gui/painting/qpaintengine.h
+++ b/src/gui/painting/qpaintengine.h
@@ -213,6 +213,7 @@ public:
OpenVG,
OpenGL2,
PaintBuffer,
+ Blitter,
User = 50, // first user type id
MaxUser = 100 // last user type id
@@ -270,6 +271,9 @@ private:
friend class QtopiaPrintEnginePrivate;
friend class QProxyFontEngine;
#endif
+#ifdef Q_WS_QPA
+ friend class QFontEngineQPA;
+#endif
friend class QPainter;
friend class QPainterPrivate;
friend class QWidget;
diff --git a/src/gui/painting/qpaintengine_blitter.cpp b/src/gui/painting/qpaintengine_blitter.cpp
new file mode 100644
index 0000000000..2e8d9dd65e
--- /dev/null
+++ b/src/gui/painting/qpaintengine_blitter.cpp
@@ -0,0 +1,663 @@
+/****************************************************************************
+**
+** 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 "private/qpaintengine_blitter_p.h"
+
+#include "private/qblittable_p.h"
+#include "private/qpaintengine_raster_p.h"
+#include "private/qpainter_p.h"
+#include "private/qapplication_p.h"
+#include "private/qpixmap_blitter_p.h"
+
+#ifndef QT_NO_BLITTABLE
+QT_BEGIN_NAMESPACE
+
+#define STATE_XFORM_SCALE 0x00000001
+#define STATE_XFORM_COMPLEX 0x00000002
+
+#define STATE_BRUSH_PATTERN 0x00000010
+#define STATE_BRUSH_ALPHA 0x00000020
+
+#define STATE_PEN_ENABLED 0x00000100
+
+#define STATE_ANTIALIASING 0x00001000
+#define STATE_ALPHA 0x00002000
+#define STATE_BLENDING_COMPLEX 0x00004000
+
+#define STATE_CLIPSYS_COMPLEX 0x00010000
+#define STATE_CLIP_COMPLEX 0x00020000
+
+
+static inline void updateStateBits(uint *state, uint mask, bool on)
+{
+ *state = on ? (*state | mask) : (*state & ~mask);
+}
+
+static inline bool checkStateAgainstMask(uint state, uint mask)
+{
+ return !state || (state & mask && !(state & ~mask));
+}
+
+class CapabilitiesToStateMask
+{
+public:
+ CapabilitiesToStateMask(QBlittable::Capabilities capabilities)
+ : m_capabilities(capabilities),
+ fillRectMask(0),
+ drawRectMask(0),
+ drawPixmapMask(0),
+ capabillitiesState(0)
+ {
+ if (capabilities & QBlittable::SolidRectCapability) {
+ setFillRectMask();
+ }
+ if (capabilities & QBlittable::SourcePixmapCapability) {
+ setSourcePixmapMask();
+ }
+ if (capabilities & QBlittable::SourceOverPixmapCapability) {
+ setSourceOverPixmapMask();
+ }
+ if (capabilities & QBlittable::SourceOverScaledPixmapCapability) {
+ setSourceOverScaledPixmapMask();
+ }
+ }
+
+ inline bool canBlitterFillRect() const
+ {
+ return checkStateAgainstMask(capabillitiesState,fillRectMask);
+ }
+
+ inline bool canBlitterDrawRectMask() const
+ {
+ return checkStateAgainstMask(capabillitiesState,drawRectMask);
+ }
+
+ bool canBlitterDrawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) const
+ {
+ if (pm.pixmapData()->classId() != QPixmapData::BlitterClass)
+ return false;
+ if (checkStateAgainstMask(capabillitiesState,drawPixmapMask)) {
+ if (m_capabilities & (QBlittable::SourceOverPixmapCapability
+ | QBlittable::SourceOverScaledPixmapCapability)) {
+ if (r.size() != sr.size()) {
+ return m_capabilities & QBlittable::SourceOverScaledPixmapCapability;
+ } else {
+ return m_capabilities & QBlittable::SourceOverPixmapCapability;
+ }
+ }
+ if ((m_capabilities & QBlittable::SourcePixmapCapability) && r.size() == sr.size() && !pm.hasAlphaChannel()) {
+ return m_capabilities & QBlittable::SourcePixmapCapability;
+ }
+ }
+ return false;
+ }
+
+ inline void updateState(uint mask, bool on) {
+ updateStateBits(&capabillitiesState,mask,on);
+ }
+
+public:
+
+ void setFillRectMask() {
+ updateStateBits(&fillRectMask, STATE_XFORM_SCALE, false);
+ updateStateBits(&fillRectMask, STATE_XFORM_COMPLEX, false);
+
+ updateStateBits(&fillRectMask, STATE_BRUSH_PATTERN, false);
+ updateStateBits(&fillRectMask, STATE_BRUSH_ALPHA, false);
+
+ updateStateBits(&fillRectMask, STATE_PEN_ENABLED, true);
+
+ //Sub-pixel aliasing should not be sent to the blitter
+ updateStateBits(&fillRectMask, STATE_ANTIALIASING, true);
+ updateStateBits(&fillRectMask, STATE_ALPHA, false);
+ updateStateBits(&fillRectMask, STATE_BLENDING_COMPLEX, false);
+
+ updateStateBits(&fillRectMask, STATE_CLIPSYS_COMPLEX, false);
+ updateStateBits(&fillRectMask, STATE_CLIP_COMPLEX, false);
+ }
+
+ void setSourcePixmapMask() {
+ updateStateBits(&drawPixmapMask, STATE_XFORM_SCALE, true);
+ updateStateBits(&drawPixmapMask, STATE_XFORM_COMPLEX, false);
+
+ updateStateBits(&drawPixmapMask, STATE_BRUSH_PATTERN, true);
+ updateStateBits(&drawPixmapMask, STATE_BRUSH_ALPHA, false);
+
+ updateStateBits(&drawPixmapMask, STATE_PEN_ENABLED, true);
+
+ updateStateBits(&drawPixmapMask, STATE_ANTIALIASING, true);
+ updateStateBits(&drawPixmapMask, STATE_ALPHA, false);
+ updateStateBits(&drawPixmapMask, STATE_BLENDING_COMPLEX, false);
+
+ updateStateBits(&drawPixmapMask, STATE_CLIPSYS_COMPLEX, false);
+ updateStateBits(&drawPixmapMask, STATE_CLIP_COMPLEX, false);
+ }
+
+ void setSourceOverPixmapMask() {
+ setSourcePixmapMask();
+ }
+
+ void setSourceOverScaledPixmapMask() {
+ setSourceOverPixmapMask();
+ updateStateBits(&drawRectMask, STATE_XFORM_SCALE, true);
+ }
+
+ QBlittable::Capabilities m_capabilities;
+ uint fillRectMask;
+ uint drawRectMask;
+ uint drawPixmapMask;
+ uint capabillitiesState;
+};
+
+class QBlitterPaintEnginePrivate : public QPaintEngineExPrivate
+{
+ Q_DECLARE_PUBLIC(QBlitterPaintEngine);
+public:
+ QBlitterPaintEnginePrivate(QBlittablePixmapData *p)
+ : QPaintEngineExPrivate(),
+ pmData(p),
+ isBlitterLocked(false),
+ hasXForm(false)
+
+ {
+ raster = new QRasterPaintEngine(p->buffer());
+ capabillities = new CapabilitiesToStateMask(pmData->blittable()->capabilities());
+ }
+
+ inline void lock() {
+ if (!isBlitterLocked) {
+ raster->d_func()->rasterBuffer->prepare(pmData->blittable()->lock());
+ isBlitterLocked = true;
+ }
+ }
+
+ inline void unlock() {
+ if (isBlitterLocked) {
+ pmData->blittable()->unlock();
+ isBlitterLocked = false;
+ }
+ }
+
+ void fillRect(const QRectF &rect, const QColor &color) {
+ Q_Q(QBlitterPaintEngine);
+ pmData->unmarkRasterOverlay(rect);
+ QRectF targetRect = rect;
+ if (hasXForm) {
+ targetRect = q->state()->matrix.mapRect(rect);
+ }
+ const QClipData *clipData = q->clip();
+ if (clipData) {
+ if (clipData->hasRectClip) {
+ unlock();
+ pmData->blittable()->fillRect(targetRect & clipData->clipRect, color);
+ } else if (clipData->hasRegionClip) {
+ QVector<QRect> rects = clipData->clipRegion.rects();
+ for ( int i = 0; i < rects.size(); i++ ) {
+ QRect intersectRect = rects.at(i).intersected(targetRect.toRect());
+ if (!intersectRect.isEmpty()) {
+ unlock();
+ pmData->blittable()->fillRect(intersectRect,color);
+ }
+ }
+ }
+ } else {
+ if (targetRect.x() >= 0 && targetRect.y() >= 0
+ && targetRect.width() <= raster->paintDevice()->width()
+ && targetRect.height() <= raster->paintDevice()->height()) {
+ unlock();
+ pmData->blittable()->fillRect(targetRect,color);
+ } else {
+ QRectF deviceRect(0,0,raster->paintDevice()->width(), raster->paintDevice()->height());
+ unlock();
+ pmData->blittable()->fillRect(deviceRect&targetRect,color);
+ }
+ }
+ }
+
+ void clipAndDrawPixmap(const QRectF &clip, const QRectF &target, const QPixmap &pm, const QRectF &sr) {
+ QRectF intersectedRect = clip.intersected(target);
+ if (intersectedRect.isEmpty())
+ return;
+ QRectF source = sr;
+ if(intersectedRect.size() != target.size()) {
+ qreal deltaTop = target.top() - intersectedRect.top();
+ qreal deltaLeft = target.left() - intersectedRect.left();
+ qreal deltaBottom = target.bottom() - intersectedRect.bottom();
+ qreal deltaRight = target.right() - intersectedRect.right();
+ source.adjust(-deltaLeft,-deltaTop,-deltaRight,-deltaBottom);
+ }
+ pmData->unmarkRasterOverlay(intersectedRect);
+ pmData->blittable()->drawPixmap(intersectedRect, pm, source);
+ }
+
+ void updateClip() {
+ Q_Q(QBlitterPaintEngine);
+ const QClipData *clip = q->clip();
+ bool complex = clip && !(clip->hasRectClip || clip->hasRegionClip);
+ capabillities->updateState(STATE_CLIP_COMPLEX, complex);
+ }
+
+ void systemStateChanged() {
+ raster->d_func()->systemStateChanged();
+ }
+
+ QRasterPaintEngine *raster;
+
+ QBlittablePixmapData *pmData;
+ bool isBlitterLocked;
+
+ CapabilitiesToStateMask *capabillities;
+
+ uint hasXForm;
+};
+
+QBlitterPaintEngine::QBlitterPaintEngine(QBlittablePixmapData *p)
+ : QPaintEngineEx(*(new QBlitterPaintEnginePrivate(p)))
+{
+}
+
+QBlitterPaintEngine::~QBlitterPaintEngine()
+{
+}
+
+QPainterState *QBlitterPaintEngine::createState(QPainterState *orig) const
+{
+ Q_D(const QBlitterPaintEngine);
+ return d->raster->createState(orig);
+}
+
+bool QBlitterPaintEngine::begin(QPaintDevice *pdev)
+{
+ Q_D(QBlitterPaintEngine);
+
+ setActive(true);
+ bool ok = d->raster->begin(pdev);
+#ifdef QT_BLITTER_RASTEROVERLAY
+ d->pmData->unmergeOverlay();
+#endif
+ return ok;
+}
+
+
+bool QBlitterPaintEngine::end()
+{
+ Q_D(QBlitterPaintEngine);
+
+ setActive(false);
+#ifdef QT_BLITTER_RASTEROVERLAY
+ d->pmData->mergeOverlay();
+#endif
+ return d->raster->end();
+}
+
+
+void QBlitterPaintEngine::fill(const QVectorPath &path, const QBrush &brush)
+{
+ Q_D(QBlitterPaintEngine);
+ if (path.shape() == QVectorPath::RectangleHint) {
+ QRectF rect(((QPointF *) path.points())[0], ((QPointF *) path.points())[2]);
+ fillRect(rect, brush);
+ } else {
+ d->lock();
+ d->pmData->markRasterOverlay(path);
+ d->raster->fill(path, brush);
+ }
+}
+
+void QBlitterPaintEngine::fillRect(const QRectF &rect, const QColor &color)
+{
+ Q_D(QBlitterPaintEngine);
+ if (d->capabillities->canBlitterFillRect() && color.alpha() == 0xff) {
+ d->fillRect(rect, color);
+ } else {
+ d->lock();
+ d->pmData->markRasterOverlay(rect);
+ d->raster->fillRect(rect, color);
+ }
+}
+
+void QBlitterPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
+{
+ if(rect.size().isEmpty())
+ return;
+
+ Q_D(QBlitterPaintEngine);
+
+ if (qbrush_style(brush) == Qt::SolidPattern
+ && qbrush_color(brush).alpha() == 0xff
+ && d->capabillities->canBlitterFillRect())
+ {
+ d->fillRect(rect, qbrush_color(brush));
+ }else if (brush.style() == Qt::TexturePattern
+ && d->capabillities->canBlitterDrawPixmap(rect,brush.texture(),rect))
+ {
+ bool rectIsFilled = false;
+ QRectF transformedRect = state()->matrix.mapRect(rect);
+ qreal x = transformedRect.x();
+ qreal y = transformedRect.y();
+ QPixmap pm = brush.texture();
+ d->unlock();
+ int srcX = int(rect.x() - state()->brushOrigin.x()) % pm.width();
+ if (srcX < 0)
+ srcX = pm.width() + srcX;
+ const int startX = srcX;
+ int srcY = int(rect.y() - state()->brushOrigin.y()) % pm.height();
+ if (srcY < 0)
+ srcY = pm.height() + srcY;
+ while (!rectIsFilled) {
+ qreal blitWidth = (pm.width() ) - srcX;
+ qreal blitHeight = (pm.height() ) - srcY;
+ if (x + blitWidth > transformedRect.right())
+ blitWidth = transformedRect.right() -x;
+ if (y + blitHeight > transformedRect.bottom())
+ blitHeight = transformedRect.bottom() - y;
+ const QClipData *clipData = clip();
+ if (clipData->hasRectClip) {
+ QRect targetRect = QRect(x,y,blitWidth,blitHeight).intersected(clipData->clipRect);
+ if (targetRect.isValid()) {
+ int tmpSrcX = srcX + (targetRect.x() - x);
+ int tmpSrcY = srcY + (targetRect.y() - y);
+ QRect srcRect(tmpSrcX,tmpSrcY,targetRect.width(),targetRect.height());
+ d->pmData->blittable()->drawPixmap(targetRect,pm,srcRect);
+ }
+ } else if (clipData->hasRegionClip) {
+ QVector<QRect> clipRects = clipData->clipRegion.rects();
+ QRect unclippedTargetRect(x,y,blitWidth,blitHeight);
+ QRegion intersectedRects = clipData->clipRegion.intersected(unclippedTargetRect);
+
+ for ( int i = 0; i < intersectedRects.rects().size(); i++ ) {
+ QRect targetRect = intersectedRects.rects().at(i);
+ if (!targetRect.isValid() || targetRect.isEmpty())
+ continue;
+ int tmpSrcX = srcX + (targetRect.x() - x);
+ int tmpSrcY = srcY + (targetRect.y() - y);
+ QRect srcRect(tmpSrcX,tmpSrcY,targetRect.width(),targetRect.height());
+ d->pmData->blittable()->drawPixmap(targetRect,pm,srcRect);
+ }
+ }
+ x+=blitWidth;
+ if (x>=transformedRect.right()) {
+ x = transformedRect.x();
+ srcX = startX;
+ srcY = 0;
+ y+=blitHeight;
+ if (y>=transformedRect.bottom())
+ rectIsFilled = true;
+ } else
+ srcX = 0;
+ }
+ } else {
+ d->lock();
+ d->pmData->markRasterOverlay(rect);
+ d->raster->fillRect(rect, brush);
+ }
+
+}
+
+void QBlitterPaintEngine::stroke(const QVectorPath &path, const QPen &pen)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->pmData->markRasterOverlay(path);
+ d->raster->stroke(path, pen);
+}
+
+void QBlitterPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->clip(path, op);
+ d->updateClip();
+}
+void QBlitterPaintEngine::clip(const QRect &rect, Qt::ClipOperation op){
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->clip(rect,op);
+ d->updateClip();
+}
+void QBlitterPaintEngine::clip(const QRegion &region, Qt::ClipOperation op)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->clip(region,op);
+ d->updateClip();
+}
+
+void QBlitterPaintEngine::clipEnabledChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->clipEnabledChanged();
+}
+
+void QBlitterPaintEngine::penChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->penChanged();
+ d->capabillities->updateState(STATE_PEN_ENABLED,qpen_style(state()->pen) != Qt::NoPen);
+}
+
+void QBlitterPaintEngine::brushChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->brushChanged();
+
+ bool solid = qbrush_style(state()->brush) == Qt::SolidPattern;
+
+ d->capabillities->updateState(STATE_BRUSH_PATTERN, !solid);
+ d->capabillities->updateState(STATE_BRUSH_ALPHA,
+ qbrush_color(state()->brush).alpha() < 255);
+}
+
+void QBlitterPaintEngine::brushOriginChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->brushOriginChanged();
+}
+
+void QBlitterPaintEngine::opacityChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->opacityChanged();
+
+ bool translucent = state()->opacity < 1;
+ d->capabillities->updateState(STATE_ALPHA,translucent);
+}
+
+void QBlitterPaintEngine::compositionModeChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->compositionModeChanged();
+
+ bool nonTrivial = state()->composition_mode != QPainter::CompositionMode_SourceOver
+ && state()->composition_mode != QPainter::CompositionMode_Source;
+
+ d->capabillities->updateState(STATE_BLENDING_COMPLEX,nonTrivial);
+}
+
+void QBlitterPaintEngine::renderHintsChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->renderHintsChanged();
+
+ bool aa = state()->renderHints & QPainter::Antialiasing;
+ d->capabillities->updateState(STATE_ANTIALIASING, aa);
+
+}
+
+void QBlitterPaintEngine::transformChanged()
+{
+ Q_D(QBlitterPaintEngine);
+ d->raster->transformChanged();
+
+ QTransform::TransformationType type = state()->matrix.type();
+
+ d->capabillities->updateState(STATE_XFORM_COMPLEX, type > QTransform::TxScale);
+ d->capabillities->updateState(STATE_XFORM_SCALE, type > QTransform::TxTranslate);
+
+ d->hasXForm = type >= QTransform::TxTranslate;
+
+}
+
+void QBlitterPaintEngine::drawRects(const QRect *rects, int rectCount)
+{
+ Q_D(QBlitterPaintEngine);
+ if (d->capabillities->canBlitterDrawRectMask()) {
+ for (int i=0; i<rectCount; ++i) {
+ d->fillRect(rects[i], qbrush_color(state()->brush));
+ }
+ } else {
+ d->pmData->markRasterOverlay(rects,rectCount);
+ QPaintEngineEx::drawRects(rects, rectCount);
+ }
+}
+
+void QBlitterPaintEngine::drawRects(const QRectF *rects, int rectCount)
+{
+ Q_D(QBlitterPaintEngine);
+ if (d->capabillities->canBlitterDrawRectMask()) {
+ for (int i=0; i<rectCount; ++i) {
+ d->fillRect(rects[i], qbrush_color(state()->brush));
+ }
+ } else {
+ d->pmData->markRasterOverlay(rects,rectCount);
+ QPaintEngineEx::drawRects(rects, rectCount);
+ }
+}
+
+void QBlitterPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
+{
+ Q_D(QBlitterPaintEngine);
+ if (d->capabillities->canBlitterDrawPixmap(r,pm,sr)) {
+
+ d->unlock();
+ QRectF targetRect = r;
+ if (d->hasXForm) {
+ targetRect = state()->matrix.mapRect(r);
+ }
+ const QClipData *clipData = clip();
+ if (clipData) {
+ if (clipData->hasRectClip) {
+ d->clipAndDrawPixmap(clipData->clipRect,targetRect,pm,sr);
+ }else if (clipData->hasRegionClip) {
+ QVector<QRect>rects = clipData->clipRegion.rects();
+ for (int i = 0; i<rects.size(); i++) {
+ d->clipAndDrawPixmap(rects.at(i),targetRect,pm,sr);
+ }
+ }
+ } else {
+ QRectF deviceRect(0,0,d->raster->paintDevice()->width(), d->raster->paintDevice()->height());
+ d->clipAndDrawPixmap(deviceRect,targetRect,pm,sr);
+ }
+ }else {
+ d->lock();
+ d->pmData->markRasterOverlay(r);
+ d->raster->drawPixmap(r, pm, sr);
+ }
+}
+
+void QBlitterPaintEngine::drawImage(const QRectF &r, const QImage &pm, const QRectF &sr,
+ Qt::ImageConversionFlags flags)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->pmData->markRasterOverlay(r);
+ d->raster->drawImage(r, pm, sr, flags);
+}
+
+
+void QBlitterPaintEngine::drawTextItem(const QPointF &pos, const QTextItem &ti)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->drawTextItem(pos, ti);
+ d->pmData->markRasterOverlay(pos,ti);
+}
+
+void QBlitterPaintEngine::drawStaticTextItem(QStaticTextItem *sti)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->raster->drawStaticTextItem(sti);
+
+//#### d->pmData->markRasterOverlay(sti);
+ qWarning("not implemented: markRasterOverlay for QStaticTextItem");
+
+}
+
+
+void QBlitterPaintEngine::drawEllipse(const QRectF &r)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ d->pmData->markRasterOverlay(r);
+ d->raster->drawEllipse(r);
+}
+
+void QBlitterPaintEngine::setState(QPainterState *s)
+{
+ Q_D(QBlitterPaintEngine);
+ d->lock();
+ QPaintEngineEx::setState(s);
+ d->raster->setState(s);
+
+ clipEnabledChanged();
+ penChanged();
+ brushChanged();
+ brushOriginChanged();
+ opacityChanged();
+ compositionModeChanged();
+ renderHintsChanged();
+ transformChanged();
+
+ d->updateClip();
+}
+
+inline QRasterPaintEngine *QBlitterPaintEngine::raster() const
+{
+ Q_D(const QBlitterPaintEngine);
+ return d->raster;
+}
+
+QT_END_NAMESPACE
+#endif //QT_NO_BLITTABLE
+
diff --git a/src/gui/painting/qpaintengine_blitter_p.h b/src/gui/painting/qpaintengine_blitter_p.h
new file mode 100644
index 0000000000..c8aa536fcd
--- /dev/null
+++ b/src/gui/painting/qpaintengine_blitter_p.h
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef QPAINTENGINE_BLITTER_P_H
+#define QPAINTENGINE_BLITTER_P_H
+
+#include "private/qpaintengineex_p.h"
+#include "private/qpaintengine_raster_p.h"
+
+#ifndef QT_NO_BLITTABLE
+QT_BEGIN_NAMESPACE
+
+class QBlitterPaintEnginePrivate;
+class QBlittablePixmapData;
+class QBlittable;
+
+class Q_GUI_EXPORT QBlitterPaintEngine : public QPaintEngineEx
+{
+ Q_DECLARE_PRIVATE(QBlitterPaintEngine);
+public:
+ QBlitterPaintEngine(QBlittablePixmapData *p);
+ ~QBlitterPaintEngine();
+
+ virtual QPainterState *createState(QPainterState *orig) const;
+
+ virtual QPaintEngine::Type type() const { return Blitter; }
+
+ virtual bool begin(QPaintDevice *pdev);
+ virtual bool end();
+
+ virtual void fill(const QVectorPath &path, const QBrush &brush);
+ virtual void stroke(const QVectorPath &path, const QPen &pen);
+
+ virtual void clip(const QVectorPath &path, Qt::ClipOperation op);
+ virtual void clip(const QRect &rect, Qt::ClipOperation op);
+ virtual void clip(const QRegion &region, Qt::ClipOperation op);
+
+ virtual void clipEnabledChanged();
+ virtual void penChanged();
+ virtual void brushChanged();
+ virtual void brushOriginChanged();
+ virtual void opacityChanged();
+ virtual void compositionModeChanged();
+ virtual void renderHintsChanged();
+ virtual void transformChanged();
+
+ virtual void fillRect(const QRectF &rect, const QBrush &brush);
+ virtual void fillRect(const QRectF &rect, const QColor &color);
+
+ virtual void drawRects(const QRect *rects, int rectCount);
+ virtual void drawRects(const QRectF *rects, int rectCount);
+
+ virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr);
+
+ virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags);
+
+ virtual void drawTextItem(const QPointF &pos, const QTextItem &ti);
+ virtual void drawStaticTextItem(QStaticTextItem *);
+
+ virtual void drawEllipse(const QRectF &r);
+
+ virtual void setState(QPainterState *s);
+
+ inline QPainterState *state() { return raster()->state(); }
+ inline const QPainterState *state() const { const QPainterState *state = raster()->state(); return state;}
+ inline const QClipData *clip(){return raster()->d_func()->clip();}
+
+private:
+ QRasterPaintEngine *raster() const;
+};
+
+QT_END_NAMESPACE
+#endif //QT_NO_BLITTABLE
+#endif // QPAINTENGINE_BLITTER_P_H
+
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index dbf7b2697b..97dfddf9ca 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
@@ -95,6 +96,8 @@
# include <private/qabstractfontengine_p.h>
#elif defined(Q_OS_SYMBIAN) && defined(QT_NO_FREETYPE)
# include <private/qfontengine_s60_p.h>
+#elif defined(Q_WS_QPA)
+# include <private/qfontengine_ft_p.h>
#endif
#if defined(Q_WS_WIN64)
@@ -440,7 +443,7 @@ bool QRasterPaintEngine::begin(QPaintDevice *device)
if (device->devType() == QInternal::Pixmap) {
QPixmap *pixmap = static_cast<QPixmap *>(device);
QPixmapData *pd = pixmap->pixmapData();
- if (pd->classId() == QPixmapData::RasterClass)
+ if (pd->classId() == QPixmapData::RasterClass || pd->classId() == QPixmapData::BlitterClass)
d->device = pd->buffer();
} else {
d->device = device;
@@ -871,9 +874,10 @@ void QRasterPaintEngine::updateState()
if (s->dirty & DirtyTransform)
updateMatrix(s->matrix);
- if (s->dirty & (DirtyPen|DirtyCompositionMode)) {
+ if (s->dirty & (DirtyPen|DirtyCompositionMode|DirtyOpacity)) {
const QPainter::CompositionMode mode = s->composition_mode;
s->flags.fast_text = (s->penData.type == QSpanData::Solid)
+ && s->intOpacity == 256
&& (mode == QPainter::CompositionMode_Source
|| (mode == QPainter::CompositionMode_SourceOver
&& qAlpha(s->penData.solid.color) == 255));
@@ -897,6 +901,7 @@ void QRasterPaintEngine::opacityChanged()
s->fillFlags |= DirtyOpacity;
s->strokeFlags |= DirtyOpacity;
s->pixmapFlags |= DirtyOpacity;
+ s->dirty |= DirtyOpacity;
s->intOpacity = (int) (s->opacity * 256);
}
@@ -1099,7 +1104,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) {
@@ -2480,7 +2485,7 @@ void QRasterPaintEngine::drawImage(const QPointF &p, const QImage &img)
const QClipData *clip = d->clip();
QPointF pt(p.x() + s->matrix.dx(), p.y() + s->matrix.dy());
- if (s->flags.fast_images) {
+ if (d->canUseFastImageBlending(d->rasterBuffer->compositionMode, img)) {
SrcOverBlendFunc func = qBlendFunctions[d->rasterBuffer->format][img.format()];
if (func) {
if (!clip) {
@@ -2661,7 +2666,7 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
bool exceedsPrecision = targetBounds.width() > 0xffff
|| targetBounds.height() > 0xffff;
- if (s->flags.fast_images && !exceedsPrecision) {
+ if (!exceedsPrecision && d->canUseFastImageBlending(d->rasterBuffer->compositionMode, img)) {
if (s->matrix.type() > QTransform::TxScale) {
SrcOverTransformFunc func = qTransformFunctions[d->rasterBuffer->format][img.format()];
if (func && (!clip || clip->hasRectClip)) {
@@ -2733,8 +2738,7 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
fillPath(path, &d->image_filler_xform);
s->matrix = m;
} else {
-
- if (s->flags.fast_images) {
+ if (d->canUseFastImageBlending(d->rasterBuffer->compositionMode, img)) {
SrcOverBlendFunc func = qBlendFunctions[d->rasterBuffer->format][img.format()];
if (func) {
QPointF pt(r.x() + s->matrix.dx(), r.y() + s->matrix.dy());
@@ -3153,10 +3157,8 @@ void QRasterPaintEngine::drawGlyphsS60(const QPointF &p, const QTextItemInt &ti)
const TUint8 *glyphBitmapBytes;
TSize glyphBitmapSize;
fe->getCharacterData(glyphs[i], tmetrics, glyphBitmapBytes, glyphBitmapSize);
- const glyph_metrics_t metrics = ti.fontEngine->boundingBox(glyphs[i]);
- const int x = qFloor(positions[i].x + metrics.x);
- const int y = qFloor(positions[i].y + metrics.y);
-
+ const int x = qFloor(positions[i].x + tmetrics.HorizBearingX());
+ const int y = qFloor(positions[i].y - tmetrics.HorizBearingY());
alphaPenBlt(glyphBitmapBytes, glyphBitmapSize.iWidth, 8, x, y, glyphBitmapSize.iWidth, glyphBitmapSize.iHeight);
}
@@ -3291,7 +3293,7 @@ void QRasterPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
ensureState();
drawCachedGlyphs(textItem->numGlyphs, textItem->glyphs, textItem->glyphPositions,
- textItem->fontEngine);
+ textItem->fontEngine());
}
/*!
@@ -3383,6 +3385,33 @@ void QRasterPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textIte
}
#endif // Q_WS_QWS
+#ifdef Q_WS_QPA
+ if (s->matrix.type() < QTransform::TxScale) {
+
+ QVarLengthArray<QFixedPoint> positions;
+ QVarLengthArray<glyph_t> glyphs;
+ QTransform matrix = state()->transform();
+
+ qreal _x = qFloor(p.x());
+ qreal _y = qFloor(p.y());
+ matrix.translate(_x, _y);
+
+ fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags, glyphs, positions);
+ if (glyphs.size() == 0)
+ return;
+
+ for(int i = 0; i < glyphs.size(); i++) {
+ QImage img = fontEngine->alphaMapForGlyph(glyphs[i]);
+ glyph_metrics_t metrics = fontEngine->boundingBox(glyphs[i]);
+ alphaPenBlt(img.bits(), img.bytesPerLine(), img.depth(),
+ qRound(positions[i].x + metrics.x),
+ qRound(positions[i].y + metrics.y),
+ img.width(), img.height());
+ }
+ return;
+ }
+#endif //Q_WS_QPA
+
#if (defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)) && !defined(QT_NO_FREETYPE)
#if defined(Q_WS_QWS) && !defined(QT_NO_QWS_QPF2)
@@ -4263,11 +4292,19 @@ void QRasterPaintEnginePrivate::recalculateFastImages()
QRasterPaintEngineState *s = q->state();
s->flags.fast_images = !(s->renderHints & QPainter::SmoothPixmapTransform)
- && rasterBuffer->compositionMode == QPainter::CompositionMode_SourceOver
&& s->matrix.type() <= QTransform::TxShear;
}
+bool QRasterPaintEnginePrivate::canUseFastImageBlending(QPainter::CompositionMode mode, const QImage &image) const
+{
+ Q_Q(const QRasterPaintEngine);
+ const QRasterPaintEngineState *s = q->state();
+ return s->flags.fast_images
+ && (mode == QPainter::CompositionMode_SourceOver
+ || (mode == QPainter::CompositionMode_Source
+ && !image.hasAlphaChannel()));
+}
QImage QRasterBuffer::colorizeBitmap(const QImage &image, const QColor &color)
{
@@ -4594,38 +4631,40 @@ void QClipData::fixup()
return;
}
-// qDebug("QClipData::fixup: count=%d",count);
int y = -1;
ymin = m_spans[0].y;
ymax = m_spans[count-1].y + 1;
xmin = INT_MAX;
xmax = 0;
+ const int firstLeft = m_spans[0].x;
+ const int firstRight = m_spans[0].x + m_spans[0].len;
bool isRect = true;
- int left = m_spans[0].x;
- int right = m_spans[0].x + m_spans[0].len;
for (int i = 0; i < count; ++i) {
- if (m_spans[i].y != y) {
- if (m_spans[i].y != y + 1 && y != -1) {
+ QT_FT_Span_& span = m_spans[i];
+
+ if (span.y != y) {
+ if (span.y != y + 1 && y != -1)
isRect = false;
- }
- y = m_spans[i].y;
- m_clipLines[y].spans = m_spans+i;
- m_clipLines[y].count = 0;
-// qDebug() << " new line: y=" << y;
- }
- ++m_clipLines[y].count;
- int sl = (int) m_spans[i].x;
- int sr = sl + m_spans[i].len;
+ y = span.y;
+ m_clipLines[y].spans = &span;
+ m_clipLines[y].count = 1;
+ } else
+ ++m_clipLines[y].count;
+
+ const int spanLeft = span.x;
+ const int spanRight = spanLeft + span.len;
+
+ if (spanLeft < xmin)
+ xmin = spanLeft;
- xmin = qMin(xmin, (int)m_spans[i].x);
- xmax = qMax(xmax, (int)m_spans[i].x + m_spans[i].len);
+ if (spanRight > xmax)
+ xmax = spanRight;
- if (sl != left || sr != right)
+ if (spanLeft != firstLeft || spanRight != firstRight)
isRect = false;
}
-// qDebug("xmin=%d,xmax=%d,ymin=%d,ymax=%d %s", xmin, xmax, ymin, ymax, isRect ? "rectangular" : "");
if (isRect) {
hasRectClip = true;
@@ -4936,6 +4975,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())
@@ -4960,8 +5000,8 @@ protected:
int size, int opacity) const;
uint *addCacheElement(quint64 hash_val, const QGradient &gradient, int opacity) {
if (cache.size() == maxCacheSize()) {
- int elem_to_remove = qrand() % maxCacheSize();
- cache.remove(cache.keys()[elem_to_remove]); // may remove more than 1, but OK
+ // may remove more than 1, but OK
+ cache.erase(cache.begin() + (qrand() % maxCacheSize()));
}
CacheInfo cache_entry(gradient.stops(), opacity, gradient.interpolationMode());
generateGradientColorTable(gradient, cache_entry.buffer, paletteSize(), opacity);
@@ -4969,6 +5009,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/qpaintengine_raster_p.h b/src/gui/painting/qpaintengine_raster_p.h
index 1016f8d701..404528c712 100644
--- a/src/gui/painting/qpaintengine_raster_p.h
+++ b/src/gui/painting/qpaintengine_raster_p.h
@@ -254,6 +254,8 @@ protected:
QRasterPaintEngine(QRasterPaintEnginePrivate &d, QPaintDevice *);
private:
friend struct QSpanData;
+ friend class QBlitterPaintEngine;
+ friend class QBlitterPaintEnginePrivate;
void init();
void fillRect(const QRectF &rect, QSpanData *data);
@@ -338,6 +340,7 @@ public:
void initializeRasterizer(QSpanData *data);
void recalculateFastImages();
+ bool canUseFastImageBlending(QPainter::CompositionMode mode, const QImage &image) const;
QPaintDevice *device;
QScopedPointer<QOutlineMapper> outlineMapper;
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index b0ca6ed4c1..546861afba 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -5857,7 +5857,7 @@ void QPainterPrivate::drawGlyphs(quint32 *glyphArray, QFixedPoint *positions, in
QStaticTextItem staticTextItem;
staticTextItem.color = state->pen.color();
staticTextItem.font = state->font;
- staticTextItem.fontEngine = fontEngine;
+ staticTextItem.setFontEngine(fontEngine);
staticTextItem.numGlyphs = glyphCount;
staticTextItem.glyphs = reinterpret_cast<glyph_t *>(const_cast<glyph_t *>(glyphArray));
staticTextItem.glyphPositions = positions;
@@ -6064,7 +6064,7 @@ void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText
d->extended->drawStaticTextItem(item);
drawDecorationForGlyphs(this, item->glyphs, item->glyphPositions,
- item->numGlyphs, item->fontEngine, staticText_d->font,
+ item->numGlyphs, item->fontEngine(), staticText_d->font,
QTextCharFormat());
}
if (currentColor != oldPen.color())
diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp
index ffd0d5ce86..7d6ea12532 100644
--- a/src/gui/painting/qpainterpath.cpp
+++ b/src/gui/painting/qpainterpath.cpp
@@ -576,6 +576,14 @@ QPainterPath &QPainterPath::operator=(const QPainterPath &other)
}
/*!
+ \fn void QPainterPath::swap(QPainterPath &other)
+ \since 4.8
+
+ Swaps painter path \a other with this painter path. This operation is very
+ fast and never fails.
+*/
+
+/*!
Destroys this QPainterPath object.
*/
QPainterPath::~QPainterPath()
diff --git a/src/gui/painting/qpainterpath.h b/src/gui/painting/qpainterpath.h
index 9a7b60a3b2..82facf88d6 100644
--- a/src/gui/painting/qpainterpath.h
+++ b/src/gui/painting/qpainterpath.h
@@ -100,6 +100,7 @@ public:
{ qSwap(d_ptr, other.d_ptr); return *this; }
#endif
~QPainterPath();
+ inline void swap(QPainterPath &other) { d_ptr.swap(other.d_ptr); }
void closeSubpath();
diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
index ba5d164c9d..45af03a4c2 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -915,7 +915,6 @@ const char *QPdf::paperSizeToString(QPrinter::PaperSize paperSize)
return psToStr[paperSize];
}
-
// -------------------------- base engine, shared code between PS and PDF -----------------------
QPdfBaseEngine::QPdfBaseEngine(QPdfBaseEnginePrivate &dd, PaintEngineFeatures f)
diff --git a/src/gui/painting/qpen.cpp b/src/gui/painting/qpen.cpp
index 2e43984a4f..01377639bb 100644
--- a/src/gui/painting/qpen.cpp
+++ b/src/gui/painting/qpen.cpp
@@ -383,6 +383,14 @@ QPen &QPen::operator=(const QPen &p)
}
/*!
+ \fn void QPen::swap(QPen &other)
+ \since 4.8
+
+ Swaps pen \a other with this pen. This operation is very
+ fast and never fails.
+*/
+
+/*!
Returns the pen as a QVariant.
*/
QPen::operator QVariant() const
diff --git a/src/gui/painting/qpen.h b/src/gui/painting/qpen.h
index 4006112dd7..a7b946c769 100644
--- a/src/gui/painting/qpen.h
+++ b/src/gui/painting/qpen.h
@@ -78,6 +78,7 @@ public:
inline QPen &operator=(QPen &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QPen &other) { qSwap(d, other.d); }
Qt::PenStyle style() const;
void setStyle(Qt::PenStyle);
diff --git a/src/gui/painting/qpolygon.cpp b/src/gui/painting/qpolygon.cpp
index 2fb52b5ef5..83323d0ae8 100644
--- a/src/gui/painting/qpolygon.cpp
+++ b/src/gui/painting/qpolygon.cpp
@@ -700,6 +700,22 @@ QPolygon QPolygonF::toPolygon() const
}
/*!
+ \fn void QPolygon::swap(QPolygon &other)
+ \since 4.8
+
+ Swaps polygon \a other with this polygon. This operation is very
+ fast and never fails.
+*/
+
+/*!
+ \fn void QPolygonF::swap(QPolygonF &other)
+ \since 4.8
+
+ Swaps polygon \a other with this polygon. This operation is very
+ fast and never fails.
+*/
+
+/*!
Returns the polygon as a QVariant
*/
QPolygon::operator QVariant() const
diff --git a/src/gui/painting/qpolygon.h b/src/gui/painting/qpolygon.h
index 7a49e2950a..5baffc8fc5 100644
--- a/src/gui/painting/qpolygon.h
+++ b/src/gui/painting/qpolygon.h
@@ -67,6 +67,8 @@ public:
inline QPolygon(const QVector<QPoint> &v) : QVector<QPoint>(v) {}
QPolygon(const QRect &r, bool closed=false);
QPolygon(int nPoints, const int *points);
+ inline void swap(QPolygon &other) { QVector<QPoint>::swap(other); } // prevent QVector<QPoint><->QPolygon swaps
+
operator QVariant() const;
void translate(int dx, int dy);
@@ -139,6 +141,7 @@ public:
inline QPolygonF(const QVector<QPointF> &v) : QVector<QPointF>(v) {}
QPolygonF(const QRectF &r);
QPolygonF(const QPolygon &a);
+ inline void swap(QPolygonF &other) { QVector<QPointF>::swap(other); } // prevent QVector<QPointF><->QPolygonF swaps
inline void translate(qreal dx, qreal dy);
void translate(const QPointF &offset);
diff --git a/src/gui/painting/qprinterinfo.qdoc b/src/gui/painting/qprinterinfo.qdoc
index 7374675126..9193213bb9 100644
--- a/src/gui/painting/qprinterinfo.qdoc
+++ b/src/gui/painting/qprinterinfo.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/src/gui/painting/qregion.cpp b/src/gui/painting/qregion.cpp
index 3412f9b21a..cd997f4ead 100644
--- a/src/gui/painting/qregion.cpp
+++ b/src/gui/painting/qregion.cpp
@@ -391,6 +391,14 @@ void QRegion::exec(const QByteArray &buffer, int ver, QDataStream::ByteOrder byt
*/
/*!
+ \fn void QRegion::swap(QRegion &other)
+ \since 4.8
+
+ Swaps region \a other with this region. This operation is very
+ fast and never fails.
+*/
+
+/*!
\relates QRegion
Writes the region \a r to the stream \a s and returns a reference
@@ -1620,7 +1628,7 @@ QT_END_INCLUDE_NAMESPACE
QT_BEGIN_INCLUDE_NAMESPACE
# include "qregion_win.cpp"
QT_END_INCLUDE_NAMESPACE
-#elif defined(Q_WS_QWS)
+#elif defined(Q_WS_QWS) || defined(Q_WS_QPA)
static QRegionPrivate qrp;
QRegion::QRegionData QRegion::shared_empty = {Q_BASIC_ATOMIC_INITIALIZER(1), &qrp};
#endif
@@ -4231,7 +4239,7 @@ QRect QRegion::boundingRect() const
Returns true if \a rect is guaranteed to be fully contained in \a region.
A false return value does not guarantee the opposite.
*/
-#ifdef Q_WS_QWS
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA)
Q_GUI_EXPORT
#endif
bool qt_region_strictContains(const QRegion &region, const QRect &rect)
diff --git a/src/gui/painting/qregion.h b/src/gui/painting/qregion.h
index 2e4284444b..50052b3112 100644
--- a/src/gui/painting/qregion.h
+++ b/src/gui/painting/qregion.h
@@ -59,7 +59,7 @@ QT_MODULE(Gui)
template <class T> class QVector;
class QVariant;
-#if defined(Q_WS_QWS) || defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_WIN) || defined(Q_OS_SYMBIAN)
struct QRegionPrivate;
#endif
@@ -85,6 +85,7 @@ public:
inline QRegion &operator=(QRegion &&other)
{ qSwap(d, other.d); return *this; }
#endif
+ inline void swap(QRegion &other) { qSwap(d, other.d); }
#ifdef QT3_SUPPORT
inline QT3_SUPPORT bool isNull() const { return isEmpty(); }
#endif
@@ -166,7 +167,7 @@ public:
#endif
HIMutableShapeRef toHIMutableShape() const;
static QRegion fromHIShapeRef(HIShapeRef shape);
-#elif defined(Q_WS_QWS)
+#elif defined(Q_WS_QWS) || defined(Q_WS_QPA)
inline void *handle() const { return d->qt_rgn; }
#endif
#endif
@@ -204,9 +205,9 @@ 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)
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_WIN) || defined(Q_OS_SYMBIAN)
QRegionPrivate *qt_rgn;
#endif
};
diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp
index 92198765f1..4a6c03f09f 100644
--- a/src/gui/painting/qtextureglyphcache.cpp
+++ b/src/gui/painting/qtextureglyphcache.cpp
@@ -143,6 +143,13 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const
QHash<GlyphAndSubPixelPosition, Coord> listItemCoordinates;
int rowHeight = 0;
+ QFontEngine::GlyphFormat format;
+ switch (m_type) {
+ case Raster_A8: format = QFontEngine::Format_A8; break;
+ case Raster_RGBMask: format = QFontEngine::Format_A32; break;
+ default: format = QFontEngine::Format_Mono; break;
+ }
+
// check each glyph for its metrics and get the required rowHeight.
for (int i=0; i < numGlyphs; ++i) {
const glyph_t glyph = glyphs[i];
@@ -157,7 +164,7 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const
continue;
if (listItemCoordinates.contains(GlyphAndSubPixelPosition(glyph, subPixelPosition)))
continue;
- glyph_metrics_t metrics = fontEngine->boundingBox(glyph, m_transform);
+ glyph_metrics_t metrics = fontEngine->alphaMapBoundingBox(glyph, m_transform, format);
#ifdef CACHE_DEBUG
printf("(%4x): w=%.2f, h=%.2f, xoff=%.2f, yoff=%.2f, x=%.2f, y=%.2f\n",
@@ -305,7 +312,7 @@ QImage QTextureGlyphCache::textureMapForGlyph(glyph_t g, QFixed subPixelPosition
if (m_type == QFontEngineGlyphCache::Raster_RGBMask)
return m_current_fontengine->alphaRGBMapForGlyph(g, subPixelPosition, glyphMargin(), m_transform);
else
- return m_current_fontengine->alphaMapForGlyph(g, m_transform);
+ return m_current_fontengine->alphaMapForGlyph(g, subPixelPosition, m_transform);
return QImage();
}
diff --git a/src/gui/painting/qunifiedtoolbarsurface_mac.cpp b/src/gui/painting/qunifiedtoolbarsurface_mac.cpp
new file mode 100644
index 0000000000..b25757b739
--- /dev/null
+++ b/src/gui/painting/qunifiedtoolbarsurface_mac.cpp
@@ -0,0 +1,257 @@
+/****************************************************************************
+**
+** 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 "qunifiedtoolbarsurface_mac_p.h"
+#include <private/qt_cocoa_helpers_mac_p.h>
+#include <private/qbackingstore_p.h>
+#include <private/qmainwindowlayout_p.h>
+
+#include <QDebug>
+
+#ifdef QT_MAC_USE_COCOA
+
+QT_BEGIN_NAMESPACE
+
+QUnifiedToolbarSurface::QUnifiedToolbarSurface(QWidget *widget)
+ : QRasterWindowSurface(widget, false), d_ptr(new QUnifiedToolbarSurfacePrivate)
+{
+ d_ptr->image = 0;
+ d_ptr->inSetGeometry = false;
+ setStaticContentsSupport(true);
+
+ setGeometry(QRect(QPoint(0, 0), QSize(widget->width(), 100))); // FIXME: Fix height.
+}
+
+QUnifiedToolbarSurface::~QUnifiedToolbarSurface()
+{
+ if (d_ptr->image)
+ delete d_ptr->image;
+}
+
+QPaintDevice *QUnifiedToolbarSurface::paintDevice()
+{
+ return &d_ptr->image->image;
+}
+
+void QUnifiedToolbarSurface::recursiveRedirect(QObject *object, const QPoint &offset)
+{
+ if (object != 0) {
+ if (object->isWidgetType()) {
+ QWidget *widget = qobject_cast<QWidget *>(object);
+
+ // We redirect the painting only if the widget is in the same window
+ // and is not a window in itself.
+ if (!(widget->windowType() & Qt::Window)) {
+ widget->d_func()->unifiedSurface = this;
+ widget->d_func()->isInUnifiedToolbar = true;
+ widget->d_func()->toolbar_offset = offset;
+ }
+ }
+
+ for (int i = 0; i < object->children().size(); ++i) {
+ recursiveRedirect(object->children().at(i), offset);
+ }
+ }
+}
+
+void QUnifiedToolbarSurface::insertToolbar(QWidget *toolbar, const QPoint &offset)
+{
+ setGeometry(QRect(QPoint(0, 0), QSize(offset.x() + toolbar->width(), 100))); // FIXME
+ recursiveRedirect(toolbar, offset);
+}
+
+void QUnifiedToolbarSurface::setGeometry(const QRect &rect)
+{
+ QWindowSurface::setGeometry(rect);
+ Q_D(QUnifiedToolbarSurface);
+ d->inSetGeometry = true;
+ if (d->image == 0 || d->image->width() < rect.width() || d->image->height() < rect.height())
+ prepareBuffer(QImage::Format_ARGB32_Premultiplied, window());
+ d->inSetGeometry = false;
+
+ // FIXME: set unified toolbar height.
+}
+
+void QUnifiedToolbarSurface::beginPaint(const QRegion &rgn)
+{
+ QPainter p(&d_ptr->image->image);
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ const QVector<QRect> rects = rgn.rects();
+ const QColor blank = Qt::transparent;
+ for (QVector<QRect>::const_iterator it = rects.begin(); it != rects.end(); ++it) {
+ p.fillRect(*it, blank);
+ }
+}
+
+void QUnifiedToolbarSurface::updateToolbarOffset(QWidget *widget)
+{
+ QMainWindowLayout *mlayout = qobject_cast<QMainWindowLayout*> (widget->window()->layout());
+ mlayout->updateUnifiedToolbarOffset();
+}
+
+void QUnifiedToolbarSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint &offset)
+{
+ Q_D(QUnifiedToolbarSurface);
+
+ QRegion flushingRegion(widget->rect());
+
+ if (!d->image || rgn.rectCount() == 0) {
+ return;
+ }
+
+ Q_UNUSED(offset);
+
+ // Get a context for the widget.
+ CGContextRef context;
+ if (!(widget->d_func()->hasOwnContext)) {
+ widget->d_func()->ut_rg = rgn;
+ widget->d_func()->ut_pt = offset;
+ qt_mac_display(widget);
+ return;
+ } else {
+ // We render the content of the toolbar in the surface.
+ updateToolbarOffset(widget);
+ QRect beginPaintRect(widget->d_func()->toolbar_offset.x(), widget->d_func()->toolbar_offset.y(), widget->geometry().width(), widget->geometry().height());
+ QRegion beginPaintRegion(beginPaintRect);
+
+ context = widget->d_func()->cgContext;
+ beginPaint(beginPaintRegion);
+ widget->render(widget->d_func()->unifiedSurface->paintDevice(), widget->d_func()->toolbar_offset, QRegion(), QWidget::DrawChildren);
+ }
+
+ CGContextSaveGState(context);
+
+ int areaX = widget->d_func()->toolbar_offset.x();
+ int areaY = widget->d_func()->toolbar_offset.y();
+ int areaWidth = widget->geometry().width();
+ int areaHeight = widget->geometry().height();
+ const CGRect area = CGRectMake(areaX, areaY, areaWidth, areaHeight);
+
+ // Clip to region.
+ const QVector<QRect> &rects = flushingRegion.rects();
+ for (int i = 0; i < rects.size(); ++i) {
+ const QRect &rect = rects.at(i);
+ CGContextAddRect(context, CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()));
+ }
+ CGContextAddRect(context, area);
+ CGContextClip(context);
+
+
+ CGImageRef image = CGBitmapContextCreateImage(d->image->cg);
+ CGImageRef subImage = CGImageCreateWithImageInRect(image, area);
+
+ const CGRect drawingArea = CGRectMake(0, 0, areaWidth, areaHeight);
+ qt_mac_drawCGImage(context, &drawingArea, subImage);
+
+ CGImageRelease(subImage);
+ CGImageRelease(image);
+
+ CGContextFlush(context);
+
+ // Restore context.
+ CGContextRestoreGState(context);
+ widget->d_func()->hasOwnContext = false;
+}
+
+void QUnifiedToolbarSurface::prepareBuffer(QImage::Format format, QWidget *widget)
+{
+ Q_D(QUnifiedToolbarSurface);
+
+ int width = geometry().width();
+ int height = geometry().height();
+ if (d->image) {
+ width = qMax(d->image->width(), width);
+ height = qMax(d->image->height(), height);
+ }
+
+ if (width == 0 || height == 0) {
+ delete d->image;
+ d->image = 0;
+ return;
+ }
+
+ QNativeImage *oldImage = d->image;
+
+ d->image = new QNativeImage(width, height, format, false, widget);
+
+ if (oldImage && d->inSetGeometry && hasStaticContents()) {
+ // Make sure we use the const version of bits() (no detach).
+ const uchar *src = const_cast<const QImage &>(oldImage->image).bits();
+ uchar *dst = d->image->image.bits();
+
+ const int srcBytesPerLine = oldImage->image.bytesPerLine();
+ const int dstBytesPerLine = d->image->image.bytesPerLine();
+ const int bytesPerPixel = oldImage->image.depth() >> 3;
+
+ QRegion staticRegion(staticContents());
+ // Make sure we're inside the boundaries of the old image.
+ staticRegion &= QRect(0, 0, oldImage->image.width(), oldImage->image.height());
+ const QVector<QRect> &rects = staticRegion.rects();
+ const QRect *srcRect = rects.constData();
+
+ // Copy the static content of the old image into the new one.
+ int numRectsLeft = rects.size();
+ do {
+ const int bytesOffset = srcRect->x() * bytesPerPixel;
+ const int dy = srcRect->y();
+
+ // Adjust src and dst to point to the right offset.
+ const uchar *s = src + dy * srcBytesPerLine + bytesOffset;
+ uchar *d = dst + dy * dstBytesPerLine + bytesOffset;
+ const int numBytes = srcRect->width() * bytesPerPixel;
+
+ int numScanLinesLeft = srcRect->height();
+ do {
+ ::memcpy(d, s, numBytes);
+ d += dstBytesPerLine;
+ s += srcBytesPerLine;
+ } while (--numScanLinesLeft);
+
+ ++srcRect;
+ } while (--numRectsLeft);
+ }
+
+ delete oldImage;
+}
+
+QT_END_NAMESPACE
+
+#endif // QT_MAC_USE_COCOA
diff --git a/src/gui/painting/qunifiedtoolbarsurface_mac_p.h b/src/gui/painting/qunifiedtoolbarsurface_mac_p.h
new file mode 100644
index 0000000000..3bc040464e
--- /dev/null
+++ b/src/gui/painting/qunifiedtoolbarsurface_mac_p.h
@@ -0,0 +1,100 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef QUNIFIEDTOOLBARSURFACE_MAC_P_H
+#define QUNIFIEDTOOLBARSURFACE_MAC_P_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 <private/qwindowsurface_raster_p.h>
+#include <QWidget>
+#include <private/qwidget_p.h>
+#include <private/qnativeimage_p.h>
+
+#ifdef QT_MAC_USE_COCOA
+
+QT_BEGIN_NAMESPACE
+
+class QNativeImage;
+
+
+class QUnifiedToolbarSurfacePrivate
+{
+public:
+ QNativeImage *image;
+ uint inSetGeometry : 1;
+};
+
+class Q_GUI_EXPORT QUnifiedToolbarSurface : public QRasterWindowSurface
+{
+public:
+ QUnifiedToolbarSurface(QWidget *widget);
+ ~QUnifiedToolbarSurface();
+
+ void flush(QWidget *widget, const QRegion &region, const QPoint &offset);
+ void setGeometry(const QRect &rect);
+ void beginPaint(const QRegion &rgn);
+ void insertToolbar(QWidget *toolbar, const QPoint &offset);
+
+private:
+ QPaintDevice *paintDevice();
+ void updateToolbarOffset(QWidget *widget);
+ void prepareBuffer(QImage::Format format, QWidget *widget);
+ void recursiveRedirect(QObject *widget, const QPoint &offset);
+
+ Q_DECLARE_PRIVATE(QUnifiedToolbarSurface)
+ QScopedPointer<QUnifiedToolbarSurfacePrivate> d_ptr;
+};
+
+QT_END_NAMESPACE
+
+#endif // QT_MAC_USE_COCOA
+
+#endif // QUNIFIEDTOOLBARSURFACE_MAC_P_H
diff --git a/src/gui/painting/qwindowsurface.cpp b/src/gui/painting/qwindowsurface.cpp
index 02a8b804d2..e9eb9c5d37 100644
--- a/src/gui/painting/qwindowsurface.cpp
+++ b/src/gui/painting/qwindowsurface.cpp
@@ -58,7 +58,11 @@ public:
}
QWidget *window;
+#if !defined(Q_WS_QPA)
QRect geometry;
+#else
+ QSize size;
+#endif //Q_WS_QPA
QRegion staticContents;
QList<QImage*> bufferImages;
uint staticContentsSupport : 1;
@@ -114,11 +118,11 @@ public:
/*!
Constructs an empty surface for the given top-level \a window.
*/
-QWindowSurface::QWindowSurface(QWidget *window)
+QWindowSurface::QWindowSurface(QWidget *window, bool setDefaultSurface)
: d_ptr(new QWindowSurfacePrivate(window))
{
if (!QApplicationPrivate::runtime_graphics_system) {
- if(window)
+ if(setDefaultSurface && window)
window->setWindowSurface(this);
}
}
@@ -153,6 +157,7 @@ void QWindowSurface::endPaint(const QRegion &)
d_ptr->bufferImages.clear();
}
+#if !defined(Q_WS_QPA)
/*!
Sets the currently allocated area to be the given \a rect.
@@ -173,6 +178,17 @@ QRect QWindowSurface::geometry() const
{
return d_ptr->geometry;
}
+#else
+void QWindowSurface::resize(const QSize &size)
+{
+ d_ptr->size = size;
+}
+
+QSize QWindowSurface::size() const
+{
+ return d_ptr->size;
+}
+#endif //Q_WS_QPA
/*!
Scrolls the given \a area \a dx pixels to the right and \a dy
@@ -329,7 +345,13 @@ void QWindowSurface::setPartialUpdateSupport(bool enable)
d_ptr->partialUpdateSupport = enable;
}
-void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset)
+#ifdef Q_WS_QPA
+#define Q_EXPORT_SCROLLRECT Q_GUI_EXPORT
+#else
+#define Q_EXPORT_SCROLLRECT
+#endif
+
+void Q_EXPORT_SCROLLRECT 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());
diff --git a/src/gui/painting/qwindowsurface_p.h b/src/gui/painting/qwindowsurface_p.h
index 6171ae8547..82100c30ff 100644
--- a/src/gui/painting/qwindowsurface_p.h
+++ b/src/gui/painting/qwindowsurface_p.h
@@ -63,11 +63,12 @@ class QRect;
class QPoint;
class QImage;
class QWindowSurfacePrivate;
+class QPlatformWindow;
class Q_GUI_EXPORT QWindowSurface
{
public:
- QWindowSurface(QWidget *window);
+ QWindowSurface(QWidget *window, bool setDefaultSurface = true);
virtual ~QWindowSurface();
QWidget *window() const;
@@ -79,8 +80,14 @@ public:
// can be larger than just the offset from the top-level widget as there may also be window
// decorations which are painted into the window surface.
virtual void flush(QWidget *widget, const QRegion &region, const QPoint &offset) = 0;
+#if !defined(Q_WS_QPA)
virtual void setGeometry(const QRect &rect);
QRect geometry() const;
+#else
+ virtual void resize(const QSize &size);
+ QSize size() const;
+ inline QRect geometry() const { return QRect(QPoint(), size()); } //### cleanup before Qt 5
+#endif
virtual bool scroll(const QRegion &area, int dx, int dy);
diff --git a/src/gui/painting/qwindowsurface_raster.cpp b/src/gui/painting/qwindowsurface_raster.cpp
index 6a2cb1e605..ae73d7d631 100644
--- a/src/gui/painting/qwindowsurface_raster.cpp
+++ b/src/gui/painting/qwindowsurface_raster.cpp
@@ -64,6 +64,9 @@
#ifdef Q_WS_MAC
#include <private/qt_cocoa_helpers_mac_p.h>
+#include <QMainWindow>
+#include <private/qmainwindowlayout_p.h>
+#include <QToolBar>
#endif
QT_BEGIN_NAMESPACE
@@ -82,8 +85,8 @@ public:
uint inSetGeometry : 1;
};
-QRasterWindowSurface::QRasterWindowSurface(QWidget *window)
- : QWindowSurface(window), d_ptr(new QRasterWindowSurfacePrivate)
+QRasterWindowSurface::QRasterWindowSurface(QWidget *window, bool setDefaultSurface)
+ : QWindowSurface(window, setDefaultSurface), d_ptr(new QRasterWindowSurfacePrivate)
{
#ifdef Q_WS_X11
d_ptr->gc = XCreateGC(X11->display, window->handle(), 0, 0);
@@ -248,6 +251,30 @@ void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoi
#ifdef Q_WS_MAC
+ // This is mainly done for native components like native "open file" dialog.
+ if (widget->testAttribute(Qt::WA_DontShowOnScreen)) {
+ return;
+ }
+
+#ifdef QT_MAC_USE_COCOA
+ // Unified toolbar hack.
+ QMainWindow* mWindow = qobject_cast<QMainWindow*>(widget->window());
+ if (mWindow) {
+ QMainWindowLayout *mLayout = qobject_cast<QMainWindowLayout*>(mWindow->layout());
+ QList<QToolBar *> toolbarList = mLayout->qtoolbarsInUnifiedToolbarList;
+
+ for (int i = 0; i < toolbarList.size(); ++i) {
+ QToolBar* toolbar = toolbarList.at(i);
+ if (mLayout->toolBarArea(toolbar) == Qt::TopToolBarArea) {
+ QWidget* tbWidget = (QWidget*) toolbar;
+ if (tbWidget->d_func()->unifiedSurface) {
+ tbWidget->d_func()->unifiedSurface->flush(tbWidget, rgn, offset);
+ }
+ }
+ }
+ }
+#endif // QT_MAC_USE_COCOA
+
Q_UNUSED(offset);
// Get a context for the widget.
#ifndef QT_MAC_USE_COCOA
@@ -318,6 +345,25 @@ void QRasterWindowSurface::setGeometry(const QRect &rect)
prepareBuffer(QNativeImage::systemFormat(), window());
}
d->inSetGeometry = false;
+
+#if defined(Q_WS_MAC) && defined(QT_MAC_USE_COCOA)
+ QMainWindow* mWindow = qobject_cast<QMainWindow*>(window());
+ if (mWindow) {
+ QMainWindowLayout *mLayout = qobject_cast<QMainWindowLayout*>(mWindow->layout());
+ QList<QToolBar *> toolbarList = mLayout->qtoolbarsInUnifiedToolbarList;
+
+ for (int i = 0; i < toolbarList.size(); ++i) {
+ QToolBar* toolbar = toolbarList.at(i);
+ if (mLayout->toolBarArea(toolbar) == Qt::TopToolBarArea) {
+ QWidget* tbWidget = (QWidget*) toolbar;
+ if (tbWidget->d_func()->unifiedSurface) {
+ tbWidget->d_func()->unifiedSurface->setGeometry(rect);
+ }
+ }
+ }
+ }
+#endif // Q_WS_MAC && QT_MAC_USE_COCOA
+
}
// from qwindowsurface.cpp
diff --git a/src/gui/painting/qwindowsurface_raster_p.h b/src/gui/painting/qwindowsurface_raster_p.h
index 2b932a9d11..a7c3b9f45d 100644
--- a/src/gui/painting/qwindowsurface_raster_p.h
+++ b/src/gui/painting/qwindowsurface_raster_p.h
@@ -97,7 +97,7 @@ class QNativeImage;
class Q_GUI_EXPORT QRasterWindowSurface : public QWindowSurface
{
public:
- QRasterWindowSurface(QWidget *widget);
+ QRasterWindowSurface(QWidget *widget, bool setDefaultSurface = true);
~QRasterWindowSurface();
QPaintDevice *paintDevice();
diff --git a/src/gui/painting/qwindowsurface_s60.cpp b/src/gui/painting/qwindowsurface_s60.cpp
index d4dcf7dd07..eb9eff224f 100644
--- a/src/gui/painting/qwindowsurface_s60.cpp
+++ b/src/gui/painting/qwindowsurface_s60.cpp
@@ -102,9 +102,11 @@ QS60WindowSurface::~QS60WindowSurface()
// Issue empty redraw to clear the UI surface
QWidget *w = window();
- RWindow *const window = static_cast<RWindow *>(w->winId()->DrawableWindow());
- window->BeginRedraw();
- window->EndRedraw();
+ if (w->testAttribute(Qt::WA_WState_Created)) {
+ RWindow *const window = static_cast<RWindow *>(w->winId()->DrawableWindow());
+ window->BeginRedraw();
+ window->EndRedraw();
+ }
}
}
#endif
diff --git a/src/gui/painting/qwindowsurface_x11.cpp b/src/gui/painting/qwindowsurface_x11.cpp
index cadf264906..d7f54eab0f 100644
--- a/src/gui/painting/qwindowsurface_x11.cpp
+++ b/src/gui/painting/qwindowsurface_x11.cpp
@@ -149,6 +149,8 @@ void QX11WindowSurface::setGeometry(const QRect &rect)
return;
#ifndef QT_NO_XRENDER
if (d_ptr->translucentBackground) {
+ QPixmap::x11SetDefaultScreen(d_ptr->widget->x11Info().screen());
+
QX11PixmapData *data = new QX11PixmapData(QPixmapData::PixmapType);
data->xinfo = d_ptr->widget->x11Info();
data->resize(size.width(), size.height());
diff --git a/src/gui/s60framework/qs60mainapplication.cpp b/src/gui/s60framework/qs60mainapplication.cpp
index 74432af626..24d2496367 100644
--- a/src/gui/s60framework/qs60mainapplication.cpp
+++ b/src/gui/s60framework/qs60mainapplication.cpp
@@ -47,6 +47,9 @@
#include "qs60mainapplication.h"
#include <bautils.h>
#include <coemain.h>
+#ifndef Q_WS_S60
+# include <eikserverapp.h>
+#endif
QT_BEGIN_NAMESPACE
@@ -152,7 +155,11 @@ CDictionaryStore *QS60MainApplication::OpenIniFileLC(RFs &aFs) const
*/
void QS60MainApplication::NewAppServerL(CApaAppServer *&aAppServer)
{
+#ifdef Q_WS_S60
QS60MainApplicationBase::NewAppServerL(aAppServer);
+#else
+ aAppServer = new(ELeave) CEikAppServer;
+#endif
}
QT_END_NAMESPACE
diff --git a/src/gui/styles/qmacstyle.qdoc b/src/gui/styles/qmacstyle.qdoc
index a86f2ed604..3efabe1c24 100644
--- a/src/gui/styles/qmacstyle.qdoc
+++ b/src/gui/styles/qmacstyle.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/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm
index 3a05f40ba7..a05ec6bd24 100644
--- a/src/gui/styles/qmacstyle_mac.mm
+++ b/src/gui/styles/qmacstyle_mac.mm
@@ -1948,10 +1948,9 @@ void QMacStyle::unpolish(QWidget* w)
rubber->setAttribute(Qt::WA_NoSystemBackground, true);
}
- if (QFocusFrame *frame = qobject_cast<QFocusFrame *>(w)) {
+ if (QFocusFrame *frame = qobject_cast<QFocusFrame *>(w))
frame->setAttribute(Qt::WA_NoSystemBackground, true);
- frame->setAutoFillBackground(true);
- }
+
QWindowsStyle::unpolish(w);
}
diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 89f54bc297..087907fdd9 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));
@@ -2524,9 +2514,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;
@@ -2620,6 +2610,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 +3417,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/src/gui/styles/qs60style_feedbackinterface_p.h b/src/gui/styles/qs60style_feedbackinterface_p.h
new file mode 100644
index 0000000000..81fcdc357c
--- /dev/null
+++ b/src/gui/styles/qs60style_feedbackinterface_p.h
@@ -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 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 <QObject>
+
+class TactileFeedbackInterface : public QObject
+{
+ public:
+ virtual void touchFeedback(QEvent *event, const QWidget *widget) = 0;
+};
+
+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..7b75d40e5e 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,76 @@ bool QS60StylePrivate::isSingleClickUi()
return (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0);
}
+void QS60StylePrivate::deleteStoredSettings()
+{
+ QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
+ settings.beginGroup(QLatin1String("QS60Style"));
+ settings.remove("");
+ settings.endGroup();
+}
+
+// Since S60Style has 'button' as a graphic, we don't have any native color which to use
+// for QPalette::Button. Therefore S60Style needs to guesstimate palette color by calculating
+// average rgb values for button pixels.
+// Returns Qt::black if there is an issue with the graphics (image is NULL, or no constBits() found).
+QColor QS60StylePrivate::colorFromFrameGraphics(SkinFrameElements frame) const
+{
+#ifndef QT_NO_SETTINGS
+ TInt themeID = 0;
+ //First we need to fetch active theme ID. We need to store the themeID at the same time
+ //as color, so that we can later check if the stored color is still from the same theme.
+ //Native side stores active theme UID/Timestamp into central repository.
+ int error = 0;
+ QT_TRAP_THROWING(
+ CRepository *themeRepository = CRepository::NewLC(personalisationUID);
+ if (themeRepository) {
+ static const TInt KThemePkgIDDesSize = 23; //size of the stored theme package ID
+ TBuf<32> value; //themeID is currently max of 8 + 1 + 8 characters, but lets have some extra space
+ const TUint32 key = 0x00000002; //active theme key in the repository
+ error = themeRepository->Get(key, value);
+ if (error == KErrNone) {
+ TLex lex(value);
+ TPtrC numberToken(lex.NextToken());
+ if (numberToken.Length())
+ error = TLex(numberToken).Val(themeID);
+ else
+ error = KErrArgument;
+ }
+ }
+ CleanupStack::PopAndDestroy(themeRepository);
+ );
+
+ QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
+ settings.beginGroup(QLatin1String("QS60Style"));
+ if (themeID != 0) {
+ QVariant buttonColor = settings.value(QLatin1String("ButtonColor"));
+ if (!buttonColor.isNull()) {
+ //there is a stored color value, lets see if the theme ID matches
+ if (error == KErrNone) {
+ QVariant themeUID = settings.value(QLatin1String("ThemeUID"));
+ if (!themeUID.isNull() && themeUID.toInt() == themeID) {
+ QColor storedColor(buttonColor.value<QColor>());
+ if (storedColor.isValid())
+ return storedColor;
+ }
+ }
+ settings.remove(""); //if color was invalid, or theme has been changed, just delete all stored settings
+ }
+ }
+#endif
+
+ QColor color = calculatedColor(frame);
+
+#ifndef QT_NO_SETTINGS
+ settings.setValue(QLatin1String("ThemeUID"), QVariant(themeID));
+ if (frame == SF_ButtonNormal) //other colors are not currently calculated from graphics
+ settings.setValue(QLatin1String("ButtonColor"), QVariant(color));
+ settings.endGroup();
+#endif
+
+ return color;
+}
+
QPoint qt_s60_fill_background_offset(const QWidget *targetWidget)
{
CCoeControl *control = targetWidget->effectiveWinId();
@@ -1143,13 +1222,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 +1530,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..3ebfab2a2e 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
diff --git a/src/gui/styles/qstylesheetstyle.cpp b/src/gui/styles/qstylesheetstyle.cpp
index 4be439d6d0..fb6fc23200 100644
--- a/src/gui/styles/qstylesheetstyle.cpp
+++ b/src/gui/styles/qstylesheetstyle.cpp
@@ -99,14 +99,7 @@ public:
};
-static QHash<const QWidget *, QVector<StyleRule> > *styleRulesCache = 0;
-static QHash<const QWidget *, QHash<int, bool> > *hasStyleRuleCache = 0;
-typedef QHash<int, QHash<quint64, QRenderRule> > QRenderRules;
-static QHash<const QWidget *, QRenderRules> *renderRulesCache = 0;
-static QHash<const QWidget *, QPalette> *customPaletteWidgets = 0; // widgets whose palette we tampered
-static QHash<const void *, StyleSheet> *styleSheetCache = 0; // parsed style sheets
-static QSet<const QWidget *> *autoFillDisabledWidgets = 0;
-
+static QStyleSheetStyleCaches *styleSheetCaches = 0;
/* RECURSION_GUARD:
* the QStyleSheetStyle is a proxy. If used with others proxy style, we may end up with something like:
@@ -1525,8 +1518,8 @@ private:
QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
{
- QHash<const QWidget *, QVector<StyleRule> >::const_iterator cacheIt = styleRulesCache->constFind(w);
- if (cacheIt != styleRulesCache->constEnd())
+ QHash<const QWidget *, QVector<StyleRule> >::const_iterator cacheIt = styleSheetCaches->styleRulesCache.constFind(w);
+ if (cacheIt != styleSheetCaches->styleRulesCache.constEnd())
return cacheIt.value();
if (!initWidget(w)) {
@@ -1536,12 +1529,12 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
QStyleSheetStyleSelector styleSelector;
StyleSheet defaultSs;
- QHash<const void *, StyleSheet>::const_iterator defaultCacheIt = styleSheetCache->constFind(baseStyle());
- if (defaultCacheIt == styleSheetCache->constEnd()) {
+ QHash<const void *, StyleSheet>::const_iterator defaultCacheIt = styleSheetCaches->styleSheetCache.constFind(baseStyle());
+ if (defaultCacheIt == styleSheetCaches->styleSheetCache.constEnd()) {
defaultSs = getDefaultStyleSheet();
QStyle *bs = baseStyle();
- styleSheetCache->insert(bs, defaultSs);
- QObject::connect(bs, SIGNAL(destroyed(QObject*)), this, SLOT(styleDestroyed(QObject*)), Qt::UniqueConnection);
+ styleSheetCaches->styleSheetCache.insert(bs, defaultSs);
+ QObject::connect(bs, SIGNAL(destroyed(QObject*)), styleSheetCaches, SLOT(styleDestroyed(QObject*)), Qt::UniqueConnection);
} else {
defaultSs = defaultCacheIt.value();
}
@@ -1549,8 +1542,8 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
if (!qApp->styleSheet().isEmpty()) {
StyleSheet appSs;
- QHash<const void *, StyleSheet>::const_iterator appCacheIt = styleSheetCache->constFind(qApp);
- if (appCacheIt == styleSheetCache->constEnd()) {
+ QHash<const void *, StyleSheet>::const_iterator appCacheIt = styleSheetCaches->styleSheetCache.constFind(qApp);
+ if (appCacheIt == styleSheetCaches->styleSheetCache.constEnd()) {
QString ss = qApp->styleSheet();
if (ss.startsWith(QLatin1String("file:///")))
ss.remove(0, 8);
@@ -1559,7 +1552,7 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
qWarning("Could not parse application stylesheet");
appSs.origin = StyleSheetOrigin_Inline;
appSs.depth = 1;
- styleSheetCache->insert(qApp, appSs);
+ styleSheetCaches->styleSheetCache.insert(qApp, appSs);
} else {
appSs = appCacheIt.value();
}
@@ -1571,8 +1564,8 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
if (wid->styleSheet().isEmpty())
continue;
StyleSheet ss;
- QHash<const void *, StyleSheet>::const_iterator widCacheIt = styleSheetCache->constFind(wid);
- if (widCacheIt == styleSheetCache->constEnd()) {
+ QHash<const void *, StyleSheet>::const_iterator widCacheIt = styleSheetCaches->styleSheetCache.constFind(wid);
+ if (widCacheIt == styleSheetCaches->styleSheetCache.constEnd()) {
parser.init(wid->styleSheet());
if (!parser.parse(&ss)) {
parser.init(QLatin1String("* {") + wid->styleSheet() + QLatin1Char('}'));
@@ -1580,7 +1573,7 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
qWarning("Could not parse stylesheet of widget %p", wid);
}
ss.origin = StyleSheetOrigin_Inline;
- styleSheetCache->insert(wid, ss);
+ styleSheetCaches->styleSheetCache.insert(wid, ss);
} else {
ss = widCacheIt.value();
}
@@ -1595,7 +1588,7 @@ QVector<QCss::StyleRule> QStyleSheetStyle::styleRules(const QWidget *w) const
StyleSelector::NodePtr n;
n.ptr = (void *)w;
QVector<QCss::StyleRule> rules = styleSelector.styleRulesForNode(n);
- styleRulesCache->insert(w, rules);
+ styleSheetCaches->styleRulesCache.insert(w, rules);
return rules;
}
@@ -1724,7 +1717,7 @@ static void qt_check_if_internal_widget(const QWidget **w, int *element)
QRenderRule QStyleSheetStyle::renderRule(const QWidget *w, int element, quint64 state) const
{
qt_check_if_internal_widget(&w, &element);
- QHash<quint64, QRenderRule> &cache = (*renderRulesCache)[w][element];
+ QHash<quint64, QRenderRule> &cache = styleSheetCaches->renderRulesCache[w][element];
QHash<quint64, QRenderRule>::const_iterator cacheIt = cache.constFind(state);
if (cacheIt != cache.constEnd())
return cacheIt.value();
@@ -2035,7 +2028,7 @@ QRenderRule QStyleSheetStyle::renderRule(const QWidget *w, const QStyleOption *o
bool QStyleSheetStyle::hasStyleRule(const QWidget *w, int part) const
{
- QHash<int, bool> &cache = (*hasStyleRuleCache)[w];
+ QHash<int, bool> &cache = styleSheetCaches->hasStyleRuleCache[w];
QHash<int, bool>::const_iterator cacheIt = cache.constFind(part);
if (cacheIt != cache.constEnd())
return cacheIt.value();
@@ -2565,7 +2558,7 @@ void QStyleSheetStyle::setPalette(QWidget *w)
rule.configurePalette(&p, map[i].group, ew, ew != w);
}
- customPaletteWidgets->insert(w, w->palette());
+ styleSheetCaches->customPaletteWidgets.insert(w, w->palette());
w->setPalette(p);
if (ew != w)
ew->setPalette(p);
@@ -2573,32 +2566,32 @@ void QStyleSheetStyle::setPalette(QWidget *w)
void QStyleSheetStyle::unsetPalette(QWidget *w)
{
- if (customPaletteWidgets->contains(w)) {
- QPalette p = customPaletteWidgets->value(w);
+ if (styleSheetCaches->customPaletteWidgets.contains(w)) {
+ QPalette p = styleSheetCaches->customPaletteWidgets.value(w);
w->setPalette(p);
QWidget *ew = embeddedWidget(w);
if (ew != w)
ew->setPalette(p);
- customPaletteWidgets->remove(w);
+ styleSheetCaches->customPaletteWidgets.remove(w);
}
QVariant oldFont = w->property("_q_styleSheetWidgetFont");
if (oldFont.isValid()) {
w->setFont(qvariant_cast<QFont>(oldFont));
}
- if (autoFillDisabledWidgets->contains(w)) {
+ if (styleSheetCaches->autoFillDisabledWidgets.contains(w)) {
embeddedWidget(w)->setAutoFillBackground(true);
- autoFillDisabledWidgets->remove(w);
+ styleSheetCaches->autoFillDisabledWidgets.remove(w);
}
}
static void updateWidgets(const QList<const QWidget *>& widgets)
{
- if (!styleRulesCache->isEmpty() || !hasStyleRuleCache->isEmpty() || !renderRulesCache->isEmpty()) {
+ if (!styleSheetCaches->styleRulesCache.isEmpty() || !styleSheetCaches->hasStyleRuleCache.isEmpty() || !styleSheetCaches->renderRulesCache.isEmpty()) {
for (int i = 0; i < widgets.size(); ++i) {
const QWidget *widget = widgets.at(i);
- styleRulesCache->remove(widget);
- hasStyleRuleCache->remove(widget);
- renderRulesCache->remove(widget);
+ styleSheetCaches->styleRulesCache.remove(widget);
+ styleSheetCaches->hasStyleRuleCache.remove(widget);
+ styleSheetCaches->renderRulesCache.remove(widget);
}
}
for (int i = 0; i < widgets.size(); ++i) {
@@ -2622,12 +2615,7 @@ QStyleSheetStyle::QStyleSheetStyle(QStyle *base)
{
++numinstances;
if (numinstances == 1) {
- styleRulesCache = new QHash<const QWidget *, QVector<StyleRule> >;
- hasStyleRuleCache = new QHash<const QWidget *, QHash<int, bool> >;
- renderRulesCache = new QHash<const QWidget *, QRenderRules>;
- customPaletteWidgets = new QHash<const QWidget *, QPalette>;
- styleSheetCache = new QHash<const void *, StyleSheet>;
- autoFillDisabledWidgets = new QSet<const QWidget *>;
+ styleSheetCaches = new QStyleSheetStyleCaches;
}
}
@@ -2635,18 +2623,7 @@ QStyleSheetStyle::~QStyleSheetStyle()
{
--numinstances;
if (numinstances == 0) {
- delete styleRulesCache;
- styleRulesCache = 0;
- delete hasStyleRuleCache;
- hasStyleRuleCache = 0;
- delete renderRulesCache;
- renderRulesCache = 0;
- delete customPaletteWidgets;
- customPaletteWidgets = 0;
- delete styleSheetCache;
- styleSheetCache = 0;
- delete autoFillDisabledWidgets;
- autoFillDisabledWidgets = 0;
+ delete styleSheetCaches;
}
}
QStyle *QStyleSheetStyle::baseStyle() const
@@ -2658,19 +2635,19 @@ QStyle *QStyleSheetStyle::baseStyle() const
return QApplication::style();
}
-void QStyleSheetStyle::widgetDestroyed(QObject *o)
+void QStyleSheetStyleCaches::widgetDestroyed(QObject *o)
{
- styleRulesCache->remove((const QWidget *)o);
- hasStyleRuleCache->remove((const QWidget *)o);
- renderRulesCache->remove((const QWidget *)o);
- customPaletteWidgets->remove((const QWidget *)o);
- styleSheetCache->remove((const QWidget *)o);
- autoFillDisabledWidgets->remove((const QWidget *)o);
+ styleRulesCache.remove((const QWidget *)o);
+ hasStyleRuleCache.remove((const QWidget *)o);
+ renderRulesCache.remove((const QWidget *)o);
+ customPaletteWidgets.remove((const QWidget *)o);
+ styleSheetCache.remove((const QWidget *)o);
+ autoFillDisabledWidgets.remove((const QWidget *)o);
}
-void QStyleSheetStyle::styleDestroyed(QObject *o)
+void QStyleSheetStyleCaches::styleDestroyed(QObject *o)
{
- styleSheetCache->remove(o);
+ styleSheetCache.remove(o);
}
/*!
@@ -2688,7 +2665,7 @@ bool QStyleSheetStyle::initWidget(const QWidget *w) const
return false;
const_cast<QWidget *>(w)->setAttribute(Qt::WA_StyleSheet, true);
- QObject::connect(w, SIGNAL(destroyed(QObject*)), this, SLOT(widgetDestroyed(QObject*)));
+ QObject::connect(w, SIGNAL(destroyed(QObject*)), styleSheetCaches, SLOT(widgetDestroyed(QObject*)), Qt::UniqueConnection);
return true;
}
@@ -2700,12 +2677,12 @@ void QStyleSheetStyle::polish(QWidget *w)
if (!initWidget(w))
return;
- if (styleRulesCache->contains(w)) {
+ if (styleSheetCaches->styleRulesCache.contains(w)) {
// the widget accessed its style pointer before polish (or repolish)
// (exemple: the QAbstractSpinBox constructor ask for the stylehint)
- styleRulesCache->remove(w);
- hasStyleRuleCache->remove(w);
- renderRulesCache->remove(w);
+ styleSheetCaches->styleRulesCache.remove(w);
+ styleSheetCaches->hasStyleRuleCache.remove(w);
+ styleSheetCaches->renderRulesCache.remove(w);
}
setGeometry(w);
setProperties(w);
@@ -2771,7 +2748,7 @@ void QStyleSheetStyle::polish(QWidget *w)
QWidget *ew = embeddedWidget(w);
if (ew->autoFillBackground()) {
ew->setAutoFillBackground(false);
- autoFillDisabledWidgets->insert(w);
+ styleSheetCaches->autoFillDisabledWidgets.insert(w);
if (ew != w) { //eg. viewport of a scrollarea
//(in order to draw the background anyway in case we don't.)
ew->setAttribute(Qt::WA_StyledBackground, true);
@@ -2797,18 +2774,18 @@ void QStyleSheetStyle::repolish(QWidget *w)
{
QList<const QWidget *> children = w->findChildren<const QWidget *>(QString());
children.append(w);
- styleSheetCache->remove(w);
+ styleSheetCaches->styleSheetCache.remove(w);
updateWidgets(children);
}
void QStyleSheetStyle::repolish(QApplication *app)
{
Q_UNUSED(app);
- const QList<const QWidget*> allWidgets = styleRulesCache->keys();
- styleSheetCache->remove(qApp);
- styleRulesCache->clear();
- hasStyleRuleCache->clear();
- renderRulesCache->clear();
+ const QList<const QWidget*> allWidgets = styleSheetCaches->styleRulesCache.keys();
+ styleSheetCaches->styleSheetCache.remove(qApp);
+ styleSheetCaches->styleRulesCache.clear();
+ styleSheetCaches->hasStyleRuleCache.clear();
+ styleSheetCaches->renderRulesCache.clear();
updateWidgets(allWidgets);
}
@@ -2819,10 +2796,10 @@ void QStyleSheetStyle::unpolish(QWidget *w)
return;
}
- styleRulesCache->remove(w);
- hasStyleRuleCache->remove(w);
- renderRulesCache->remove(w);
- styleSheetCache->remove(w);
+ styleSheetCaches->styleRulesCache.remove(w);
+ styleSheetCaches->hasStyleRuleCache.remove(w);
+ styleSheetCaches->renderRulesCache.remove(w);
+ styleSheetCaches->styleSheetCache.remove(w);
unsetPalette(w);
w->setProperty("_q_stylesheet_minw", QVariant());
w->setProperty("_q_stylesheet_minh", QVariant());
@@ -2849,10 +2826,10 @@ void QStyleSheetStyle::unpolish(QApplication *app)
{
baseStyle()->unpolish(app);
RECURSION_GUARD(return)
- styleRulesCache->clear();
- hasStyleRuleCache->clear();
- renderRulesCache->clear();
- styleSheetCache->remove(qApp);
+ styleSheetCaches->styleRulesCache.clear();
+ styleSheetCaches->hasStyleRuleCache.clear();
+ styleSheetCaches->renderRulesCache.clear();
+ styleSheetCaches->styleSheetCache.remove(qApp);
}
#ifndef QT_NO_TABBAR
@@ -4157,6 +4134,10 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
pseudoElement = PseudoElement_DownArrow;
break;
+ case PE_IndicatorArrowUp:
+ pseudoElement = PseudoElement_UpArrow;
+ break;
+
case PE_IndicatorRadioButton:
pseudoElement = PseudoElement_ExclusiveIndicator;
break;
@@ -4257,7 +4238,7 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
case PE_Widget:
if (!rule.hasDrawable()) {
QWidget *container = containerWidget(w);
- if (autoFillDisabledWidgets->contains(container)
+ if (styleSheetCaches->autoFillDisabledWidgets.contains(container)
&& (container == w || !renderRule(container, opt).hasBackground())) {
//we do not have a background, but we disabled the autofillbackground anyway. so fill the background now.
// (this may happen if we have rules like :focus)
diff --git a/src/gui/styles/qstylesheetstyle_p.h b/src/gui/styles/qstylesheetstyle_p.h
index fd81437b7a..45649507b7 100644
--- a/src/gui/styles/qstylesheetstyle_p.h
+++ b/src/gui/styles/qstylesheetstyle_p.h
@@ -145,10 +145,6 @@ protected Q_SLOTS:
protected:
bool event(QEvent *e);
-private Q_SLOTS:
- void widgetDestroyed(QObject *);
- void styleDestroyed(QObject *);
-
private:
int refcount;
@@ -186,6 +182,22 @@ private:
Q_DECLARE_PRIVATE(QStyleSheetStyle)
};
+class QStyleSheetStyleCaches : public QObject
+{
+ Q_OBJECT
+public Q_SLOTS:
+ void widgetDestroyed(QObject *);
+ void styleDestroyed(QObject *);
+public:
+ QHash<const QWidget *, QVector<QCss::StyleRule> > styleRulesCache;
+ QHash<const QWidget *, QHash<int, bool> > hasStyleRuleCache;
+ typedef QHash<int, QHash<quint64, QRenderRule> > QRenderRules;
+ QHash<const QWidget *, QRenderRules> renderRulesCache;
+ QHash<const QWidget *, QPalette> customPaletteWidgets; // widgets whose palette we tampered
+ QHash<const void *, QCss::StyleSheet> styleSheetCache; // parsed style sheets
+ QSet<const QWidget *> autoFillDisabledWidgets;
+};
+
QT_END_NAMESPACE
#endif // QT_NO_STYLE_STYLESHEET
diff --git a/src/gui/styles/qwindowsxpstyle.cpp b/src/gui/styles/qwindowsxpstyle.cpp
index f185c0ddd9..6ded2808f2 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/styles/styles.pri b/src/gui/styles/styles.pri
index b22a908fdf..b6eeec9af8 100644
--- a/src/gui/styles/styles.pri
+++ b/src/gui/styles/styles.pri
@@ -35,7 +35,7 @@ contains( styles, all ) {
styles = mac windows windowsxp windowsvista
}
-x11|embedded|!macx-*:styles -= mac
+x11|embedded|qpa|!macx-*:styles -= mac
x11{
QMAKE_CXXFLAGS += $$QT_CFLAGS_QGTKSTYLE
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
index 3fe98e102f..bdba10df16 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -75,6 +75,10 @@
#ifdef Q_OS_SYMBIAN
#include <private/qt_s60_p.h>
#endif
+#ifdef Q_WS_QPA
+#include <QtGui/qplatformscreen_qpa.h>
+#include <QtGui/private/qapplication_p.h>
+#endif
#include <QMutexLocker>
@@ -172,6 +176,17 @@ Q_GUI_EXPORT int qt_defaultDpiX()
if (!subScreens.isEmpty())
screen = subScreens.at(0);
dpi = qRound(screen->width() / (screen->physicalWidth() / qreal(25.4)));
+#elif defined(Q_WS_QPA)
+ QPlatformIntegration *pi = QApplicationPrivate::platformIntegration();
+ if (pi) {
+ QPlatformScreen *screen = QApplicationPrivate::platformIntegration()->screens().at(0);
+ const QSize screenSize = screen->geometry().size();
+ const QSize physicalSize = screen->physicalSize();
+ dpi = qRound(screenSize.width() / (physicalSize.width() / qreal(25.4)));
+ } else {
+ //PI has not been initialised, or it is being initialised. Give a default dpi
+ dpi = 100;
+ }
#elif defined(Q_OS_SYMBIAN)
dpi = S60->defaultDpiX;
#endif // Q_WS_X11
@@ -200,6 +215,17 @@ Q_GUI_EXPORT int qt_defaultDpiY()
if (!subScreens.isEmpty())
screen = subScreens.at(0);
dpi = qRound(screen->height() / (screen->physicalHeight() / qreal(25.4)));
+#elif defined(Q_WS_QPA)
+ QPlatformIntegration *pi = QApplicationPrivate::platformIntegration();
+ if (pi) {
+ QPlatformScreen *screen = QApplicationPrivate::platformIntegration()->screens().at(0);
+ const QSize screenSize = screen->geometry().size();
+ const QSize physicalSize = screen->physicalSize();
+ dpi = qRound(screenSize.height() / (physicalSize.height() / qreal(25.4)));
+ } else {
+ //PI has not been initialised, or it is being initialised. Give a default dpi
+ dpi = 100;
+ }
#elif defined(Q_OS_SYMBIAN)
dpi = S60->defaultDpiY;
#endif // Q_WS_X11
diff --git a/src/gui/text/qfont_qpa.cpp b/src/gui/text/qfont_qpa.cpp
new file mode 100644
index 0000000000..5fed18bc5e
--- /dev/null
+++ b/src/gui/text/qfont_qpa.cpp
@@ -0,0 +1,114 @@
+/****************************************************************************
+**
+** 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 <QtGui/private/qapplication_p.h>
+#include <QtGui/QPlatformFontDatabase>
+
+QT_BEGIN_NAMESPACE
+
+void QFont::initialize()
+{
+ QApplicationPrivate::platformIntegration()->fontDatabase()->populateFontDatabase();
+}
+
+void QFont::cleanup()
+{
+ QFontCache::cleanup();
+}
+
+
+/*****************************************************************************
+ QFont member functions
+ *****************************************************************************/
+
+Qt::HANDLE QFont::handle() const
+{
+ return 0;
+}
+
+QString QFont::rawName() const
+{
+ return QLatin1String("unknown");
+}
+
+void QFont::setRawName(const QString &)
+{
+}
+
+QString QFont::defaultFamily() const
+{
+ QString familyName;
+ switch(d->request.styleHint) {
+ case QFont::Times:
+ familyName = QString::fromLatin1("times");
+ case QFont::Courier:
+ case QFont::Monospace:
+ familyName = QString::fromLatin1("monospace");
+ case QFont::Decorative:
+ familyName = QString::fromLatin1("old english");
+ case QFont::Helvetica:
+ case QFont::System:
+ default:
+ familyName = QString::fromLatin1("helvetica");
+ }
+
+ QStringList list = QApplicationPrivate::platformIntegration()->fontDatabase()->fallbacksForFamily(familyName,QFont::StyleNormal,QUnicodeTables::Common);
+ if (list.size()) {
+ familyName = list.at(0);
+ }
+ return familyName;
+}
+
+QString QFont::lastResortFamily() const
+{
+ return QString::fromLatin1("helvetica");
+}
+
+QString QFont::lastResortFont() const
+{
+ qFatal("QFont::lastResortFont: Cannot find any reasonable font");
+ // Shut compiler up
+ return QString();
+}
+
+
+QT_END_NAMESPACE
+
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index 2b2663849e..bae2a209a6 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -50,13 +50,19 @@
#include "private/qunicodetables_p.h"
#include "qfontengine_p.h"
+#ifdef Q_WS_QPA
+#include <QtGui/private/qapplication_p.h>
+#include <QtGui/qplatformfontdatabase_qpa.h>
+#include "qabstractfileengine.h"
+#endif
+
#ifdef Q_WS_X11
#include <locale.h>
#endif
#include <stdlib.h>
#include <limits.h>
-#if (defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)) && !defined(QT_NO_FREETYPE)
+#if (defined(Q_WS_QWS)|| defined(Q_OS_SYMBIAN)) && !defined(QT_NO_FREETYPE)
# include <ft2build.h>
# include FT_TRUETYPE_TABLES_H
#endif
@@ -139,7 +145,7 @@ struct QtFontEncoding
uchar pitch : 8;
};
-struct QtFontSize
+struct QtFontSize
{
#ifdef Q_WS_X11
QtFontEncoding *encodings;
@@ -147,10 +153,14 @@ struct QtFontSize
uint yres = 0, uint avgwidth = 0, bool add = false);
unsigned short count : 16;
#endif // Q_WS_X11
+
#if defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
QByteArray fileName;
int fileIndex;
-#endif // defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
+#endif // defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_SYMBIAN)
+#if defined(Q_WS_QPA)
+ void *handle;
+#endif
unsigned short pixelSize : 16;
};
@@ -226,7 +236,7 @@ struct QtFontStyle
delete [] weightName;
delete [] setwidthName;
#endif
-#if defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
+#if defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_SYMBIAN)
while (count) {
// bitfield count-- in while condition does not work correctly in mwccsym2
count--;
@@ -236,6 +246,12 @@ struct QtFontStyle
#if defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
pixelSizes[count].fileName.~QByteArray();
#endif
+#if defined (Q_WS_QPA)
+ QPlatformIntegration *integration = QApplicationPrivate::platformIntegration();
+ if (integration) { //on shut down there will be some that we don't release.
+ integration->fontDatabase()->releaseHandle(pixelSizes[count].handle);
+ }
+#endif
}
#endif
free(pixelSizes);
@@ -251,7 +267,7 @@ struct QtFontStyle
const char *weightName;
const char *setwidthName;
#endif // Q_WS_X11
-#if defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_SYMBIAN)
bool antialiased;
#endif
@@ -301,6 +317,9 @@ QtFontSize *QtFontStyle::pixelSize(unsigned short size, bool add)
new (&pixelSizes[count].fileName) QByteArray;
pixelSizes[count].fileIndex = 0;
#endif
+#if defined(Q_WS_QPA)
+ pixelSizes[count].handle = 0;
+#endif
return pixelSizes + (count++);
}
@@ -357,7 +376,7 @@ QtFontStyle *QtFontFoundry::style(const QtFontStyle::Key &key, bool create)
}
-struct QtFontFamily
+struct QtFontFamily
{
enum WritingSystemStatus {
Unknown = 0,
@@ -383,9 +402,12 @@ struct QtFontFamily
fixedPitchComputed(false),
#endif
name(n), count(0), foundries(0)
-#if defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN) && !defined(QT_NO_FREETYPE)
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_SYMBIAN) && !defined(QT_NO_FREETYPE)
, bogusWritingSystems(false)
#endif
+#if defined(Q_WS_QPA)
+ , askedForFallback(false)
+#endif
{
memset(writingSystems, 0, sizeof(writingSystems));
}
@@ -423,10 +445,13 @@ struct QtFontFamily
int count;
QtFontFoundry **foundries;
-#if defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN) && !defined(QT_NO_FREETYPE)
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_SYMBIAN) && !defined(QT_NO_FREETYPE)
bool bogusWritingSystems;
QStringList fallbackFamilies;
#endif
+#if defined (Q_WS_QPA)
+ bool askedForFallback;
+#endif
unsigned char writingSystems[QFontDatabase::WritingSystemsCount];
QtFontFoundry *foundry(const QString &f, bool = false);
@@ -471,6 +496,7 @@ QtFontFoundry *QtFontFamily::foundry(const QString &f, bool create)
// ### copied to tools/makeqpf/qpf2.cpp
#if (defined(Q_WS_QWS) && !defined(QT_NO_FREETYPE)) || defined(Q_WS_WIN) || defined(Q_OS_SYMBIAN) || (defined(Q_WS_MAC) && !defined(QT_MAC_USE_COCOA))
+
// see the Unicode subset bitfields in the MSDN docs
static int requiredUnicodeBits[QFontDatabase::WritingSystemsCount][2] = {
// Any,
@@ -663,7 +689,7 @@ public:
bool loadFromCache(const QString &fontPath);
void addQPF2File(const QByteArray &file);
#endif // Q_WS_QWS
-#if defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN) && !defined(QT_NO_FREETYPE)
+#if defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN) && !defined(QT_NO_FREETYPE)
void addFont(const QString &familyname, const char *foundryname, int weight,
bool italic, int pixelSize, const QByteArray &file, int fileIndex,
bool antialiased,
@@ -674,10 +700,12 @@ public:
#endif
#if defined(Q_WS_QWS)
QDataStream *stream;
- QStringList fallbackFamilies;
#elif defined(Q_OS_SYMBIAN) && defined(QT_NO_FREETYPE)
const QSymbianFontDatabaseExtras *symbianExtras;
#endif
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA)
+ QStringList fallbackFamilies;
+#endif
};
void QFontDatabasePrivate::invalidate()
@@ -726,7 +754,7 @@ QtFontFamily *QFontDatabasePrivate::family(const QString &f, bool create)
return families[pos];
}
-#if defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN) && !defined(QT_NO_FREETYPE)
+#if defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN) && !defined(QT_NO_FREETYPE)
void QFontDatabasePrivate::addFont(const QString &familyname, const char *foundryname, int weight, bool italic, int pixelSize,
const QByteArray &file, int fileIndex, bool antialiased,
const QList<QFontDatabase::WritingSystem> &writingSystems)
@@ -959,7 +987,7 @@ static void match(int script, const QFontDef &request,
const QString &family_name, const QString &foundry_name, int force_encoding_id,
QtFontDesc *desc, const QList<int> &blacklistedFamilies = QList<int>(), bool forceXLFD=false);
-#if defined(Q_WS_X11) || defined(Q_WS_QWS)
+#if defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_WS_QPA)
static void initFontDef(const QtFontDesc &desc, const QFontDef &request, QFontDef *fontDef)
{
fontDef->family = desc.family->name;
@@ -988,7 +1016,7 @@ static void initFontDef(const QtFontDesc &desc, const QFontDef &request, QFontDe
#endif
#endif
-#if defined(Q_WS_X11) || defined(Q_WS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_WS_X11) || defined(Q_WS_WIN) || defined(Q_OS_SYMBIAN) || defined(Q_WS_QPA)
static void getEngineData(const QFontPrivate *d, const QFontCache::Key &key)
{
// look for the requested font in the engine data cache
@@ -1049,6 +1077,8 @@ QT_BEGIN_INCLUDE_NAMESPACE
# include "qfontdatabase_win.cpp"
#elif defined(Q_WS_QWS)
# include "qfontdatabase_qws.cpp"
+#elif defined(Q_WS_QPA)
+# include "qfontdatabase_qpa.cpp"
#elif defined(Q_OS_SYMBIAN)
# include "qfontdatabase_s60.cpp"
#endif
@@ -1334,6 +1364,7 @@ static void match(int script, const QFontDef &request,
styleKey.stretch = request.stretch;
char pitch = request.ignorePitch ? '*' : request.fixedPitch ? 'm' : 'p';
+
FM_DEBUG("QFontDatabase::match\n"
" request:\n"
" family: %s [%s], script: %d\n"
@@ -2423,10 +2454,12 @@ QString QFontDatabase::writingSystemSample(WritingSystem writingSystem)
sample += QChar(0x4f8b);
break;
case Japanese:
- sample += QChar(0x3050);
- sample += QChar(0x3060);
- sample += QChar(0x30b0);
- sample += QChar(0x30c0);
+ sample += QChar(0x30b5);
+ sample += QChar(0x30f3);
+ sample += QChar(0x30d7);
+ sample += QChar(0x30eb);
+ sample += QChar(0x3067);
+ sample += QChar(0x3059);
break;
case Korean:
sample += QChar(0xac00);
@@ -2479,7 +2512,7 @@ void QFontDatabase::createDatabase()
{ initializeDb(); }
// used from qfontengine_ft.cpp
-QByteArray qt_fontdata_from_index(int index)
+Q_GUI_EXPORT QByteArray qt_fontdata_from_index(int index)
{
QMutexLocker locker(fontDatabaseMutex());
return privateDb()->applicationFonts.value(index).data;
diff --git a/src/gui/text/qfontdatabase.h b/src/gui/text/qfontdatabase.h
index 719242cb60..f31c19ce19 100644
--- a/src/gui/text/qfontdatabase.h
+++ b/src/gui/text/qfontdatabase.h
@@ -152,7 +152,7 @@ public:
private:
static void createDatabase();
static void parseFontName(const QString &name, QString &foundry, QString &family);
-#if defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_SYMBIAN)
static QFontEngine *findFont(int script, const QFontPrivate *fp, const QFontDef &request);
#endif
static void load(const QFontPrivate *d, int script);
@@ -167,6 +167,7 @@ private:
friend class QFontEngineMultiXLFD;
friend class QFontEngineMultiQWS;
friend class QFontEngineMultiS60;
+ friend class QFontEngineMultiQPA;
QFontDatabasePrivate *d;
};
diff --git a/src/gui/text/qfontdatabase_qpa.cpp b/src/gui/text/qfontdatabase_qpa.cpp
new file mode 100644
index 0000000000..19ce1be76d
--- /dev/null
+++ b/src/gui/text/qfontdatabase_qpa.cpp
@@ -0,0 +1,393 @@
+/****************************************************************************
+**
+** 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 "qlibraryinfo.h"
+#include <QtCore/qsettings.h>
+
+#include "qfontengine_qpa_p.h"
+#include "qplatformdefs.h"
+
+#include <QtGui/private/qapplication_p.h>
+#include <QtGui/qplatformfontdatabase_qpa.h>
+
+#include <QtCore/qmath.h>
+
+QT_BEGIN_NAMESPACE
+
+Q_GUI_EXPORT void qt_registerFont(const QString &familyName, const QString &foundryname, int weight,
+ QFont::Style style, int stretch, bool antialiased, bool scalable, int pixelSize,
+ const QSupportedWritingSystems &writingSystems, void *handle)
+{
+ QFontDatabasePrivate *d = privateDb();
+ // qDebug() << "Adding font" << familyname << weight << italic << pixelSize << file << fileIndex << antialiased;
+ QtFontStyle::Key styleKey;
+ styleKey.style = style;
+ styleKey.weight = weight;
+ styleKey.stretch = stretch;
+ QtFontFamily *f = d->family(familyName, true);
+
+ for (int i = 0; i < QFontDatabase::WritingSystemsCount; ++i) {
+ if (writingSystems.supported(QFontDatabase::WritingSystem(i))) {
+ f->writingSystems[i] = QtFontFamily::Supported;
+ } else {
+ f->writingSystems[i] = QtFontFamily::Unsupported;
+ }
+ }
+
+ QtFontFoundry *foundry = f->foundry(foundryname, true);
+ QtFontStyle *fontStyle = foundry->style(styleKey, true);
+ fontStyle->smoothScalable = scalable;
+ fontStyle->antialiased = antialiased;
+ QtFontSize *size = fontStyle->pixelSize(pixelSize?pixelSize:SMOOTH_SCALABLE, true);
+ size->handle = handle;
+}
+
+static QStringList fallbackFamilies(const QString &family, const QFont::Style &style, const QUnicodeTables::Script &script)
+{
+ QStringList retList = QApplicationPrivate::platformIntegration()->fontDatabase()->fallbacksForFamily(family,style,script);
+ QFontDatabasePrivate *db = privateDb();
+
+ QStringList::iterator i;
+ for (i = retList.begin(); i != retList.end(); ++i) {
+ bool contains = false;
+ for (int j = 0; j < db->count; j++) {
+ QtFontFamily *qtFamily = db->families[j];
+ if (!(i->compare(qtFamily->name,Qt::CaseInsensitive))) {
+ contains = true;
+ break;
+ }
+ }
+ if (!contains) {
+ i = retList.erase(i);
+ i--;
+ }
+ }
+ return retList;
+}
+
+static void initializeDb()
+{
+ static int initialized = false;
+
+ if (!initialized) {
+ //init by asking for the platformfontdb for the first time :)
+ QApplicationPrivate::platformIntegration()->fontDatabase()->populateFontDatabase();
+ initialized = true;
+ }
+}
+
+#ifndef QT_NO_SETTINGS
+// called from qapplication_qws.cpp
+void qt_applyFontDatabaseSettings(const QSettings &settings)
+{
+ initializeDb();
+ QFontDatabasePrivate *db = privateDb();
+ for (int i = 0; i < db->count; ++i) {
+ QtFontFamily *family = db->families[i];
+ if (settings.contains(family->name))
+ family->fallbackFamilies = settings.value(family->name).toStringList();
+ }
+
+ if (settings.contains(QLatin1String("Global Fallbacks")))
+ db->fallbackFamilies = settings.value(QLatin1String("Global Fallbacks")).toStringList();
+}
+#endif // QT_NO_SETTINGS
+
+static inline void load(const QString & = QString(), int = -1)
+{
+ initializeDb();
+}
+
+static
+QFontEngine *loadSingleEngine(int script,
+ const QFontDef &request,
+ QtFontFoundry *foundry,
+ QtFontStyle *style, QtFontSize *size)
+{
+ Q_UNUSED(foundry);
+
+ Q_ASSERT(size);
+ int pixelSize = size->pixelSize;
+ if (!pixelSize || (style->smoothScalable && pixelSize == SMOOTH_SCALABLE))
+ pixelSize = request.pixelSize;
+
+ QFontDef def = request;
+ def.pixelSize = pixelSize;
+
+ QFontCache::Key key(def,script);
+ QFontEngine *engine = QFontCache::instance()->findEngine(key);
+ if (!engine) {
+ QPlatformFontDatabase *pfdb = QApplicationPrivate::platformIntegration()->fontDatabase();
+ if (size->handle) {
+ engine = pfdb->fontEngine(def,QUnicodeTables::Script(script),size->handle);
+ if (engine) {
+ QFontCache::Key key(def,script);
+ QFontCache::instance()->instance()->insertEngine(key,engine);
+ }
+ }
+
+ }
+ return engine;
+}
+
+static
+QFontEngine *loadEngine(int script, const QFontDef &request,
+ QtFontFamily *family, QtFontFoundry *foundry,
+ QtFontStyle *style, QtFontSize *size)
+{
+
+ QFontEngine *engine = loadSingleEngine(script, request, foundry, style, size);
+ //make sure that the db has all fallback families
+ if (engine
+ && !(request.styleStrategy & QFont::NoFontMerging) && !engine->symbol ) {
+
+ if (family && !family->askedForFallback) {
+ family->fallbackFamilies = fallbackFamilies(family->name,QFont::Style(style->key.style),QUnicodeTables::Script(script));
+
+ family->askedForFallback = true;
+ }
+
+ QStringList fallbacks = privateDb()->fallbackFamilies;
+ if (family && !family->fallbackFamilies.isEmpty())
+ fallbacks = family->fallbackFamilies;
+
+ engine = new QFontEngineMultiQPA(engine, script, fallbacks);
+ }
+
+ return engine;
+}
+
+static void registerFont(QFontDatabasePrivate::ApplicationFont *fnt)
+{
+ QFontDatabasePrivate *db = privateDb();
+
+ fnt->families = QApplicationPrivate::platformIntegration()->fontDatabase()->addApplicationFont(fnt->data,fnt->fileName);
+
+ db->reregisterAppFonts = true;
+}
+
+bool QFontDatabase::removeApplicationFont(int handle)
+{
+ QMutexLocker locker(fontDatabaseMutex());
+
+ QFontDatabasePrivate *db = privateDb();
+ if (handle < 0 || handle >= db->applicationFonts.count())
+ return false;
+
+ db->applicationFonts[handle] = QFontDatabasePrivate::ApplicationFont();
+
+ db->reregisterAppFonts = true;
+ db->invalidate();
+ return true;
+}
+
+bool QFontDatabase::removeAllApplicationFonts()
+{
+ QMutexLocker locker(fontDatabaseMutex());
+
+ QFontDatabasePrivate *db = privateDb();
+ if (db->applicationFonts.isEmpty())
+ return false;
+
+ db->applicationFonts.clear();
+ db->invalidate();
+ return true;
+}
+
+bool QFontDatabase::supportsThreadedFontRendering()
+{
+ return true;
+}
+
+/*!
+ \internal
+*/
+QFontEngine *
+QFontDatabase::findFont(int script, const QFontPrivate *fp,
+ const QFontDef &request)
+{
+ QMutexLocker locker(fontDatabaseMutex());
+
+ const int force_encoding_id = -1;
+
+ if (!privateDb()->count)
+ initializeDb();
+
+ QFontEngine *engine;
+ QFontCache::Key key(request, script);
+ engine = QFontCache::instance()->findEngine(key);
+ if (engine) {
+ qDebug() << "Cache hit level 1";
+ return engine;
+ }
+
+ QString family_name, foundry_name;
+
+ parseFontName(request.family, foundry_name, family_name);
+
+ if (qt_enable_test_font && request.family == QLatin1String("__Qt__Box__Engine__")) {
+ engine =new QTestFontEngine(request.pixelSize);
+ engine->fontDef = request;
+ }
+
+ QtFontDesc desc;
+ match(script, request, family_name, foundry_name, force_encoding_id, &desc);
+ if (desc.family != 0 && desc.foundry != 0 && desc.style != 0) {
+ engine = loadEngine(script, request, desc.family, desc.foundry, desc.style, desc.size);
+ } else {
+ FM_DEBUG(" NO MATCH FOUND\n");
+ }
+
+ if (engine) {
+ initFontDef(desc, request, &engine->fontDef);
+
+ if (fp) {
+ QFontDef def = request;
+ if (def.family.isEmpty()) {
+ def.family = fp->request.family;
+ def.family = def.family.left(def.family.indexOf(QLatin1Char(',')));
+ }
+ }
+ }
+
+ if (!engine) {
+ if (!request.family.isEmpty()) {
+ QStringList fallbacks = fallbackFamilies(request.family,QFont::Style(request.style),QUnicodeTables::Script(script));
+ for (int i = 0; i < fallbacks.size(); i++) {
+ QFontDef def = request;
+ def.family = fallbacks.at(i);
+ QFontCache::Key key(def,script);
+ engine = QFontCache::instance()->findEngine(key);
+ if (!engine) {
+ QtFontDesc desc;
+ match(script, def, def.family, QLatin1String(""), 0, &desc);
+ if (desc.family == 0 && desc.foundry == 0 && desc.style == 0) {
+ continue;
+ }
+ engine = loadEngine(script, def, desc.family, desc.foundry, desc.style, desc.size);
+ if (engine) {
+ initFontDef(desc, def, &engine->fontDef);
+ break;
+ }
+ }
+ }
+ }
+
+ if (!engine)
+ engine = new QFontEngineBox(request.pixelSize);
+
+ FM_DEBUG("returning box engine");
+ }
+
+ if (fp && fp->dpi > 0) {
+ engine->fontDef.pointSize = qreal(double((engine->fontDef.pixelSize * 72) / fp->dpi));
+ } else {
+ engine->fontDef.pointSize = request.pointSize;
+ }
+
+ return engine;
+}
+
+void QFontDatabase::load(const QFontPrivate *d, int script)
+{
+ QFontDef req = d->request;
+
+ if (req.pixelSize == -1) {
+ req.pixelSize = floor(((req.pointSize * d->dpi) / 72) * 100 + 0.5) / 100;
+ req.pixelSize = qRound(req.pixelSize);
+ }
+ if (req.pointSize < 0)
+ req.pointSize = req.pixelSize*72.0/d->dpi;
+ if (req.weight == 0)
+ req.weight = QFont::Normal;
+ if (req.stretch == 0)
+ req.stretch = 100;
+
+ QFontCache::Key key(req, script);
+
+ if (!d->engineData)
+ getEngineData(d, key);
+
+ // the cached engineData could have already loaded the engine we want
+ if (d->engineData->engines[script])
+ return;
+
+ QFontEngine *fe = QFontCache::instance()->findEngine(key);
+
+ // list of families to try
+ QStringList family_list;
+
+ if (!req.family.isEmpty()) {
+ family_list = familyList(req);
+
+ // add the default family
+ QString defaultFamily = QApplication::font().family();
+ if (! family_list.contains(defaultFamily))
+ family_list << defaultFamily;
+
+ }
+
+ // null family means find the first font matching the specified script
+ family_list << QString();
+
+ QStringList::ConstIterator it = family_list.constBegin(), end = family_list.constEnd();
+ for (; !fe && it != end; ++it) {
+ req.family = *it;
+
+ fe = QFontDatabase::findFont(script, d, req);
+ if (fe && (fe->type()==QFontEngine::Box) && !req.family.isEmpty())
+ fe = 0;
+ }
+
+ if (fe->symbol || (d->request.styleStrategy & QFont::NoFontMerging)) {
+ for (int i = 0; i < QUnicodeTables::ScriptCount; ++i) {
+ if (!d->engineData->engines[i]) {
+ d->engineData->engines[i] = fe;
+ fe->ref.ref();
+ }
+ }
+ } else {
+ d->engineData->engines[script] = fe;
+ fe->ref.ref();
+ }
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/text/qfontdatabase_qws.cpp b/src/gui/text/qfontdatabase_qws.cpp
index a3d8d65663..09fb07c5bc 100644
--- a/src/gui/text/qfontdatabase_qws.cpp
+++ b/src/gui/text/qfontdatabase_qws.cpp
@@ -40,8 +40,10 @@
****************************************************************************/
#include "qdir.h"
+#if defined(Q_WS_QWS)
#include "qscreen_qws.h" //so we can check for rotation
#include "qwindowsystem_qws.h"
+#endif
#include "qlibraryinfo.h"
#include "qabstractfileengine.h"
#include <QtCore/qsettings.h>
@@ -153,7 +155,11 @@ extern QString qws_fontCacheDir();
#ifndef QT_FONTS_ARE_RESOURCES
bool QFontDatabasePrivate::loadFromCache(const QString &fontPath)
{
+#ifdef Q_WS_QWS
const bool weAreTheServer = QWSServer::instance();
+#else
+ const bool weAreTheServer = true; // assume single-process
+#endif
QString fontDirFile = fontPath + QLatin1String("/fontdir");
@@ -382,12 +388,14 @@ static void initializeDb()
}
#endif
+#ifndef QT_NO_QWS_QPF2
QDir dir(fontpath, QLatin1String("*.qpf2"));
for (int i = 0; i < int(dir.count()); ++i) {
const QByteArray file = QFile::encodeName(dir.absoluteFilePath(dir[i]));
//qDebug() << "looking at" << file;
db->addQPF2File(file);
}
+#endif
#endif //QT_FONTS_ARE_RESOURCES
@@ -688,6 +696,7 @@ QFontEngine *loadEngine(int script, const QFontPrivate *fp,
{
QScopedPointer<QFontEngine> engine(loadSingleEngine(script, fp, request, family, foundry,
style, size));
+#ifndef QT_NO_QWS_QPF
if (!engine.isNull()
&& script == QUnicodeTables::Common
&& !(request.styleStrategy & QFont::NoFontMerging) && !engine->symbol) {
@@ -701,6 +710,7 @@ QFontEngine *loadEngine(int script, const QFontPrivate *fp,
engine.take();
engine.reset(fe);
}
+#endif
return engine.take();
}
diff --git a/src/gui/text/qfontdatabase_x11.cpp b/src/gui/text/qfontdatabase_x11.cpp
index a7aa2ce282..635d2cf731 100644
--- a/src/gui/text/qfontdatabase_x11.cpp
+++ b/src/gui/text/qfontdatabase_x11.cpp
@@ -1455,6 +1455,7 @@ void qt_addPatternProps(FcPattern *pattern, int screen, int script, const QFontD
weight_value = FC_WEIGHT_DEMIBOLD;
else if (request.weight < (QFont::Bold + QFont::Black) / 2)
weight_value = FC_WEIGHT_BOLD;
+ FcPatternDel(pattern, FC_WEIGHT);
FcPatternAddInteger(pattern, FC_WEIGHT, weight_value);
int slant_value = FC_SLANT_ROMAN;
@@ -1462,20 +1463,25 @@ void qt_addPatternProps(FcPattern *pattern, int screen, int script, const QFontD
slant_value = FC_SLANT_ITALIC;
else if (request.style == QFont::StyleOblique)
slant_value = FC_SLANT_OBLIQUE;
+ FcPatternDel(pattern, FC_SLANT);
FcPatternAddInteger(pattern, FC_SLANT, slant_value);
double size_value = qMax(qreal(1.), request.pixelSize);
+ FcPatternDel(pattern, FC_PIXEL_SIZE);
FcPatternAddDouble(pattern, FC_PIXEL_SIZE, size_value);
int stretch = request.stretch;
if (!stretch)
stretch = 100;
+ FcPatternDel(pattern, FC_WIDTH);
FcPatternAddInteger(pattern, FC_WIDTH, stretch);
if (X11->display && QX11Info::appDepth(screen) <= 8) {
+ FcPatternDel(pattern, FC_ANTIALIAS);
// can't do antialiasing on 8bpp
FcPatternAddBool(pattern, FC_ANTIALIAS, false);
} else if (request.styleStrategy & (QFont::PreferAntialias|QFont::NoAntialias)) {
+ FcPatternDel(pattern, FC_ANTIALIAS);
FcPatternAddBool(pattern, FC_ANTIALIAS,
!(request.styleStrategy & QFont::NoAntialias));
}
@@ -1484,6 +1490,7 @@ void qt_addPatternProps(FcPattern *pattern, int screen, int script, const QFontD
Q_ASSERT(script < QUnicodeTables::ScriptCount);
FcLangSet *ls = FcLangSetCreate();
FcLangSetAdd(ls, (const FcChar8*)specialLanguages[script]);
+ FcPatternDel(pattern, FC_LANG);
FcPatternAddLangSet(pattern, FC_LANG, ls);
FcLangSetDestroy(ls);
}
@@ -1891,6 +1898,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 +1921,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 +1965,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 +2013,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.cpp b/src/gui/text/qfontengine.cpp
index be346e9975..24c466427c 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -494,7 +494,7 @@ static void collectSingleContour(qreal x0, qreal y0, uint *grid, int x, int y, i
path->closeSubpath();
}
-void qt_addBitmapToPath(qreal x0, qreal y0, const uchar *image_data, int bpl, int w, int h, QPainterPath *path)
+Q_GUI_EXPORT void qt_addBitmapToPath(qreal x0, qreal y0, const uchar *image_data, int bpl, int w, int h, QPainterPath *path)
{
uint *grid = new uint[(w+1)*(h+1)];
// set up edges
@@ -605,6 +605,12 @@ void QFontEngine::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int n
addBitmapFontToPath(x, y, g, path, flags);
}
+QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed /*subPixelPosition*/)
+{
+ // For font engines don't support subpixel positioning
+ return alphaMapForGlyph(glyph);
+}
+
QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &t)
{
QImage i = alphaMapForGlyph(glyph);
@@ -615,6 +621,19 @@ QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &t)
return i;
}
+QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition, const QTransform &t)
+{
+ if (! supportsSubPixelPositions())
+ return alphaMapForGlyph(glyph, t);
+
+ QImage i = alphaMapForGlyph(glyph, subPixelPosition);
+ if (t.type() > QTransform::TxTranslate)
+ i = i.transformed(t).convertToFormat(QImage::Format_Indexed8);
+ Q_ASSERT(i.depth() <= 8); // To verify that transformed didn't change the format...
+
+ return i;
+}
+
QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed /*subPixelPosition*/, int /* margin */, const QTransform &t)
{
QImage alphaMask = alphaMapForGlyph(glyph, t);
@@ -753,7 +772,7 @@ QFontEngineGlyphCache *QFontEngine::glyphCache(void *key, QFontEngineGlyphCache:
return 0;
}
-#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_SYMBIAN)
static inline QFixed kerning(int left, int right, const QFontEngine::KernPair *pairs, int numPairs)
{
uint left_right = (left << 16) + right;
@@ -1197,7 +1216,7 @@ glyph_metrics_t QFontEngineBox::boundingBox(const QGlyphLayout &glyphs)
return overall;
}
-#if defined(Q_WS_QWS)
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA)
void QFontEngineBox::draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &ti)
{
if (!ti.glyphs.numGlyphs)
diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp
index 512afc87bb..81e2594504 100644
--- a/src/gui/text/qfontengine_ft.cpp
+++ b/src/gui/text/qfontengine_ft.cpp
@@ -723,7 +723,7 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format)
metrics = face->size->metrics;
-#if defined(Q_WS_QWS)
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA)
/*
TrueType fonts with embedded bitmaps may have a bitmap font specific
ascent/descent in the EBLC table. There is no direct public API
@@ -755,10 +755,15 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format)
return true;
}
-QFontEngineFT::Glyph *QFontEngineFT::loadGlyphMetrics(QGlyphSet *set, uint glyph) const
+void QFontEngineFT::setDefaultHintStyle(HintStyle style)
+{
+ default_hint_style = style;
+}
+
+QFontEngineFT::Glyph *QFontEngineFT::loadGlyphMetrics(QGlyphSet *set, uint glyph, GlyphFormat format) const
{
Glyph *g = set->getGlyph(glyph);
- if (g)
+ if (g && g->format == format)
return g;
int load_flags = FT_LOAD_DEFAULT | default_load_flags;
@@ -766,6 +771,18 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyphMetrics(QGlyphSet *set, uint glyph
? FT_LOAD_TARGET_LIGHT
: FT_LOAD_TARGET_NORMAL;
+ if (format == Format_Mono) {
+ load_target = FT_LOAD_TARGET_MONO;
+ } else if (format == Format_A32) {
+ if (subpixelType == QFontEngineFT::Subpixel_RGB || subpixelType == QFontEngineFT::Subpixel_BGR) {
+ if (default_hint_style == HintFull)
+ load_target = FT_LOAD_TARGET_LCD;
+ } else if (subpixelType == QFontEngineFT::Subpixel_VRGB || subpixelType == QFontEngineFT::Subpixel_VBGR) {
+ if (default_hint_style == HintFull)
+ load_target = FT_LOAD_TARGET_LCD_V;
+ }
+ }
+
if (set->outline_drawing)
load_flags = FT_LOAD_NO_BITMAP;
@@ -1767,6 +1784,11 @@ glyph_metrics_t QFontEngineFT::boundingBox(glyph_t glyph)
glyph_metrics_t QFontEngineFT::boundingBox(glyph_t glyph, const QTransform &matrix)
{
+ return alphaMapBoundingBox(glyph, matrix, QFontEngine::Format_None);
+}
+
+glyph_metrics_t QFontEngineFT::alphaMapBoundingBox(glyph_t glyph, const QTransform &matrix, QFontEngine::GlyphFormat format)
+{
FT_Face face = 0;
glyph_metrics_t overall;
QGlyphSet *glyphSet = 0;
@@ -1810,9 +1832,9 @@ glyph_metrics_t QFontEngineFT::boundingBox(glyph_t glyph, const QTransform &matr
glyphSet = &defaultGlyphSet;
}
Glyph * g = glyphSet->getGlyph(glyph);
- if (!g) {
+ if (!g || g->format != format) {
face = lockFace();
- g = loadGlyphMetrics(glyphSet, glyph);
+ g = loadGlyphMetrics(glyphSet, glyph, format);
}
if (g) {
diff --git a/src/gui/text/qfontengine_ft_p.h b/src/gui/text/qfontengine_ft_p.h
index 72f7d9f855..f0f7153a0c 100644
--- a/src/gui/text/qfontengine_ft_p.h
+++ b/src/gui/text/qfontengine_ft_p.h
@@ -130,13 +130,6 @@ private:
class Q_GUI_EXPORT QFontEngineFT : public QFontEngine
{
public:
- enum GlyphFormat {
- Format_None,
- Format_Render = Format_None,
- Format_Mono,
- Format_A8,
- Format_A32
- };
/* we don't cache glyphs that are too large anyway, so we can make this struct rather small */
struct Glyph {
@@ -242,6 +235,8 @@ private:
virtual void recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const;
virtual QImage alphaMapForGlyph(glyph_t);
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
+ virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QTransform &matrix,
+ QFontEngine::GlyphFormat format);
virtual void removeGlyphFromCache(glyph_t glyph);
virtual int glyphCount() const;
@@ -282,6 +277,14 @@ private:
virtual HB_Error getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints);
+ enum HintStyle {
+ HintNone,
+ HintLight,
+ HintMedium,
+ HintFull
+ };
+
+ void setDefaultHintStyle(HintStyle style);
protected:
void freeGlyphSets();
@@ -293,12 +296,6 @@ protected:
QFreetypeFace *freetype;
int default_load_flags;
- enum HintStyle {
- HintNone,
- HintLight,
- HintMedium,
- HintFull
- };
HintStyle default_hint_style;
@@ -311,7 +308,7 @@ protected:
bool embeddedbitmap;
private:
- QFontEngineFT::Glyph *loadGlyphMetrics(QGlyphSet *set, uint glyph) const;
+ QFontEngineFT::Glyph *loadGlyphMetrics(QGlyphSet *set, uint glyph, GlyphFormat format) const;
GlyphFormat defaultFormat;
FT_Matrix matrix;
diff --git a/src/gui/text/qfontengine_mac.mm b/src/gui/text/qfontengine_mac.mm
index ebc1f6dbaa..3c6f3b28e3 100644
--- a/src/gui/text/qfontengine_mac.mm
+++ b/src/gui/text/qfontengine_mac.mm
@@ -252,6 +252,11 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay
continue;
Q_ASSERT((CTRunGetStatus(run) & kCTRunStatusRightToLeft) == rtl);
+ CFRange stringRange = CTRunGetStringRange(run);
+ UniChar endGlyph = CFStringGetCharacterAtIndex(cfstring, stringRange.location + stringRange.length - 1);
+ bool endWithPDF = QChar::direction(endGlyph) == QChar::DirPDF;
+ if (endWithPDF)
+ glyphCount++;
if (!outOBounds && outGlyphs + glyphCount - initialGlyph > *nglyphs) {
outOBounds = true;
@@ -264,6 +269,9 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay
CTFontRef runFont = static_cast<CTFontRef>(CFDictionaryGetValue(runAttribs, NSFontAttributeName));
const uint fontIndex = (fontIndexForFont(runFont) << 24);
//NSLog(@"Run Font Name = %@", CTFontCopyFamilyName(runFont));
+ if (endWithPDF)
+ glyphCount--;
+
QVarLengthArray<CGGlyph, 512> cgglyphs(0);
const CGGlyph *tmpGlyphs = CTRunGetGlyphsPtr(run);
if (!tmpGlyphs) {
@@ -331,6 +339,16 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay
(fontDef.styleStrategy & QFont::ForceIntegerMetrics)
? QFixed::fromReal(lastGlyphAdvance.width).round()
: QFixed::fromReal(lastGlyphAdvance.width);
+
+ if (endWithPDF) {
+ logClusters[stringRange.location + stringRange.length - 1] = glyphCount;
+ outGlyphs[glyphCount] = 0xFFFF;
+ outAdvances_x[glyphCount] = 0;
+ outAdvances_y[glyphCount] = 0;
+ outAttributes[glyphCount].clusterStart = true;
+ outAttributes[glyphCount].dontPrint = true;
+ glyphCount++;
+ }
}
outGlyphs += glyphCount;
outAttributes += glyphCount;
@@ -694,7 +712,7 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition
CGContextSetFont(ctx, cgFont);
qreal pos_x = -br.x.toReal() + subPixelPosition.toReal();
- qreal pos_y = im.height()+br.y.toReal();
+ qreal pos_y = im.height() + br.y.toReal() - 1;
CGContextSetTextPosition(ctx, pos_x, pos_y);
CGSize advance;
@@ -713,9 +731,9 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition
return im;
}
-QImage QCoreTextFontEngine::alphaMapForGlyph(glyph_t glyph)
+QImage QCoreTextFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition)
{
- QImage im = imageForGlyph(glyph, QFixed(), 0, false);
+ QImage im = imageForGlyph(glyph, subPixelPosition, 0, false);
QImage indexed(im.width(), im.height(), QImage::Format_Indexed8);
QVector<QRgb> colors(256);
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index d07c8c9cba..be9f48de48 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -120,6 +120,14 @@ public:
TestFontEngine = 0x1000
};
+ enum GlyphFormat {
+ Format_None,
+ Format_Render = Format_None,
+ Format_Mono,
+ Format_A8,
+ Format_A32
+ };
+
QFontEngine();
virtual ~QFontEngine();
@@ -159,7 +167,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;
/**
@@ -169,7 +177,7 @@ public:
virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const {}
virtual void doKerning(QGlyphLayout *, QTextEngine::ShaperFlags) const;
-#if !defined(Q_WS_X11) && !defined(Q_WS_WIN) && !defined(Q_WS_MAC) && !defined(Q_OS_SYMBIAN)
+#if !defined(Q_WS_X11) && !defined(Q_WS_WIN) && !defined(Q_WS_MAC) && !defined(Q_OS_SYMBIAN) && !defined(Q_WS_QPA)
virtual void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si) = 0;
#endif
virtual void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs,
@@ -188,9 +196,16 @@ public:
* Returns an image indexed_8 with index values ranging from 0=fully transparant to 255=opaque
*/
virtual QImage alphaMapForGlyph(glyph_t);
+ virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition);
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
+ virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
+ virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QTransform &matrix, GlyphFormat /*format*/)
+ {
+ return boundingBox(glyph, matrix);
+ }
+
virtual void removeGlyphFromCache(glyph_t);
virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) = 0;
@@ -242,7 +257,7 @@ public:
bool symbol;
mutable HB_FontRec hbFont;
mutable HB_Face hbFace;
-#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_SYMBIAN)
struct KernPair {
uint left_right;
QFixed adjust;
@@ -460,7 +475,7 @@ public:
virtual FaceId faceId() const;
virtual bool getSfntTableData(uint /*tag*/, uchar * /*buffer*/, uint * /*length*/) const;
virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics);
- virtual QImage alphaMapForGlyph(glyph_t);
+ virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition);
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
virtual qreal minRightBearing() const;
virtual qreal minLeftBearing() const;
diff --git a/src/gui/text/qfontengine_qpa.cpp b/src/gui/text/qfontengine_qpa.cpp
new file mode 100644
index 0000000000..cccbc92fc4
--- /dev/null
+++ b/src/gui/text/qfontengine_qpa.cpp
@@ -0,0 +1,691 @@
+/****************************************************************************
+**
+** 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 "qfontengine_qpa_p.h"
+
+#include <QtCore/QFile>
+#include <QtCore/QFileInfo>
+#include <QtCore/QDir>
+#include <QtCore/QBuffer>
+
+#include <QtGui/private/qapplication_p.h>
+#include <QtGui/QPlatformFontDatabase>
+#include <QtGui/private/qpaintengine_raster_p.h>
+
+QT_BEGIN_NAMESPACE
+
+//#define DEBUG_HEADER
+//#define DEBUG_FONTENGINE
+
+static QFontEngineQPA::TagType tagTypes[QFontEngineQPA::NumTags] = {
+ QFontEngineQPA::StringType, // FontName
+ QFontEngineQPA::StringType, // FileName
+ QFontEngineQPA::UInt32Type, // FileIndex
+ QFontEngineQPA::UInt32Type, // FontRevision
+ QFontEngineQPA::StringType, // FreeText
+ QFontEngineQPA::FixedType, // Ascent
+ QFontEngineQPA::FixedType, // Descent
+ QFontEngineQPA::FixedType, // Leading
+ QFontEngineQPA::FixedType, // XHeight
+ QFontEngineQPA::FixedType, // AverageCharWidth
+ QFontEngineQPA::FixedType, // MaxCharWidth
+ QFontEngineQPA::FixedType, // LineThickness
+ QFontEngineQPA::FixedType, // MinLeftBearing
+ QFontEngineQPA::FixedType, // MinRightBearing
+ QFontEngineQPA::FixedType, // UnderlinePosition
+ QFontEngineQPA::UInt8Type, // GlyphFormat
+ QFontEngineQPA::UInt8Type, // PixelSize
+ QFontEngineQPA::UInt8Type, // Weight
+ QFontEngineQPA::UInt8Type, // Style
+ QFontEngineQPA::StringType, // EndOfHeader
+ QFontEngineQPA::BitFieldType// WritingSystems
+};
+
+
+#if defined(DEBUG_HEADER)
+# define DEBUG_VERIFY qDebug
+#else
+# define DEBUG_VERIFY if (0) qDebug
+#endif
+
+#define READ_VERIFY(type, variable) \
+ if (tagPtr + sizeof(type) > endPtr) { \
+ DEBUG_VERIFY() << "read verify failed in line" << __LINE__; \
+ return 0; \
+ } \
+ variable = qFromBigEndian<type>(tagPtr); \
+ DEBUG_VERIFY() << "read value" << variable << "of type " #type; \
+ tagPtr += sizeof(type)
+
+template <typename T>
+T readValue(const uchar *&data)
+{
+ T value = qFromBigEndian<T>(data);
+ data += sizeof(T);
+ return value;
+}
+
+#define VERIFY(condition) \
+ if (!(condition)) { \
+ DEBUG_VERIFY() << "condition " #condition " failed in line" << __LINE__; \
+ return 0; \
+ }
+
+#define VERIFY_TAG(condition) \
+ if (!(condition)) { \
+ DEBUG_VERIFY() << "verifying tag condition " #condition " failed in line" << __LINE__ << "with tag" << tag; \
+ return 0; \
+ }
+
+static inline const uchar *verifyTag(const uchar *tagPtr, const uchar *endPtr)
+{
+ quint16 tag, length;
+ READ_VERIFY(quint16, tag);
+ READ_VERIFY(quint16, length);
+ if (tag == QFontEngineQPA::Tag_EndOfHeader)
+ return endPtr;
+ if (tag < QFontEngineQPA::NumTags) {
+ switch (tagTypes[tag]) {
+ case QFontEngineQPA::BitFieldType:
+ case QFontEngineQPA::StringType:
+ // can't do anything...
+ break;
+ case QFontEngineQPA::UInt32Type:
+ VERIFY_TAG(length == sizeof(quint32));
+ break;
+ case QFontEngineQPA::FixedType:
+ VERIFY_TAG(length == sizeof(quint32));
+ break;
+ case QFontEngineQPA::UInt8Type:
+ VERIFY_TAG(length == sizeof(quint8));
+ break;
+ }
+#if defined(DEBUG_HEADER)
+ if (length == 1)
+ qDebug() << "tag data" << hex << *tagPtr;
+ else if (length == 4)
+ qDebug() << "tag data" << hex << tagPtr[0] << tagPtr[1] << tagPtr[2] << tagPtr[3];
+#endif
+ }
+ return tagPtr + length;
+}
+
+const QFontEngineQPA::Glyph *QFontEngineQPA::findGlyph(glyph_t g) const
+{
+ if (!g || g >= glyphMapEntries)
+ return 0;
+ const quint32 *gmapPtr = reinterpret_cast<const quint32 *>(fontData + glyphMapOffset);
+ quint32 glyphPos = qFromBigEndian<quint32>(gmapPtr[g]);
+ if (glyphPos > glyphDataSize) {
+ if (glyphPos == 0xffffffff)
+ return 0;
+#if defined(DEBUG_FONTENGINE)
+ qDebug() << "glyph" << g << "outside of glyphData, remapping font file";
+#endif
+ if (glyphPos > glyphDataSize)
+ return 0;
+ }
+ return reinterpret_cast<const Glyph *>(fontData + glyphDataOffset + glyphPos);
+}
+
+bool QFontEngineQPA::verifyHeader(const uchar *data, int size)
+{
+ VERIFY(size >= int(sizeof(Header)));
+ const Header *header = reinterpret_cast<const Header *>(data);
+ if (header->magic[0] != 'Q'
+ || header->magic[1] != 'P'
+ || header->magic[2] != 'F'
+ || header->magic[3] != '2')
+ return false;
+
+ VERIFY(header->majorVersion <= CurrentMajorVersion);
+ const quint16 dataSize = qFromBigEndian<quint16>(header->dataSize);
+ VERIFY(size >= int(sizeof(Header)) + dataSize);
+
+ const uchar *tagPtr = data + sizeof(Header);
+ const uchar *tagEndPtr = tagPtr + dataSize;
+ while (tagPtr < tagEndPtr - 3) {
+ tagPtr = verifyTag(tagPtr, tagEndPtr);
+ VERIFY(tagPtr);
+ }
+
+ VERIFY(tagPtr <= tagEndPtr);
+ return true;
+}
+
+QVariant QFontEngineQPA::extractHeaderField(const uchar *data, HeaderTag requestedTag)
+{
+ const Header *header = reinterpret_cast<const Header *>(data);
+ const uchar *tagPtr = data + sizeof(Header);
+ const uchar *endPtr = tagPtr + qFromBigEndian<quint16>(header->dataSize);
+ while (tagPtr < endPtr - 3) {
+ quint16 tag = readValue<quint16>(tagPtr);
+ quint16 length = readValue<quint16>(tagPtr);
+ if (tag == requestedTag) {
+ switch (tagTypes[requestedTag]) {
+ case StringType:
+ return QVariant(QString::fromUtf8(reinterpret_cast<const char *>(tagPtr), length));
+ case UInt32Type:
+ return QVariant(readValue<quint32>(tagPtr));
+ case UInt8Type:
+ return QVariant(uint(*tagPtr));
+ case FixedType:
+ return QVariant(QFixed::fromFixed(readValue<quint32>(tagPtr)).toReal());
+ case BitFieldType:
+ return QVariant(QByteArray(reinterpret_cast<const char *>(tagPtr), length));
+ }
+ return QVariant();
+ } else if (tag == Tag_EndOfHeader) {
+ break;
+ }
+ tagPtr += length;
+ }
+
+ return QVariant();
+}
+
+
+
+static inline unsigned int getChar(const QChar *str, int &i, const int len)
+{
+ unsigned int uc = str[i].unicode();
+ if (uc >= 0xd800 && uc < 0xdc00 && i < len-1) {
+ uint low = str[i+1].unicode();
+ if (low >= 0xdc00 && low < 0xe000) {
+ uc = (uc - 0xd800)*0x400 + (low - 0xdc00) + 0x10000;
+ ++i;
+ }
+ }
+ return uc;
+}
+
+QFontEngineQPA::QFontEngineQPA(const QFontDef &def, const QByteArray &data)
+ : fontData(reinterpret_cast<const uchar *>(data.constData())), dataSize(data.size())
+{
+ fontDef = def;
+ cache_cost = 100;
+ externalCMap = 0;
+ cmapOffset = 0;
+ cmapSize = 0;
+ glyphMapOffset = 0;
+ glyphMapEntries = 0;
+ glyphDataOffset = 0;
+ glyphDataSize = 0;
+ kerning_pairs_loaded = false;
+ readOnly = true;
+
+#if defined(DEBUG_FONTENGINE)
+ qDebug() << "QFontEngineQPA::QFontEngineQPA( fd =" << fd << ", renderingFontEngine =" << renderingFontEngine << ')';
+#endif
+
+ if (!verifyHeader(fontData, dataSize)) {
+#if defined(DEBUG_FONTENGINE)
+ qDebug() << "verifyHeader failed!";
+#endif
+ return;
+ }
+
+ const Header *header = reinterpret_cast<const Header *>(fontData);
+
+ readOnly = (header->lock == 0xffffffff);
+
+ const uchar *imgData = fontData + sizeof(Header) + qFromBigEndian<quint16>(header->dataSize);
+ const uchar *endPtr = fontData + dataSize;
+ while (imgData <= endPtr - 8) {
+ quint16 blockTag = readValue<quint16>(imgData);
+ imgData += 2; // skip padding
+ quint32 blockSize = readValue<quint32>(imgData);
+
+ if (blockTag == CMapBlock) {
+ cmapOffset = imgData - fontData;
+ cmapSize = blockSize;
+ } else if (blockTag == GMapBlock) {
+ glyphMapOffset = imgData - fontData;
+ glyphMapEntries = blockSize / 4;
+ } else if (blockTag == GlyphBlock) {
+ glyphDataOffset = imgData - fontData;
+ glyphDataSize = blockSize;
+ }
+
+ imgData += blockSize;
+ }
+
+ face_id.filename = QFile::encodeName(extractHeaderField(fontData, Tag_FileName).toString());
+ face_id.index = extractHeaderField(fontData, Tag_FileIndex).toInt();
+
+ // get the real cmap
+ if (cmapOffset) {
+ int tableSize = cmapSize;
+ const uchar *cmapPtr = getCMap(fontData + cmapOffset, tableSize, &symbol, &cmapSize);
+ if (cmapPtr)
+ cmapOffset = cmapPtr - fontData;
+ else
+ cmapOffset = 0;
+ } else if (externalCMap) {
+ int tableSize = cmapSize;
+ externalCMap = getCMap(externalCMap, tableSize, &symbol, &cmapSize);
+ }
+
+ // verify all the positions in the glyphMap
+ if (glyphMapOffset) {
+ const quint32 *gmapPtr = reinterpret_cast<const quint32 *>(fontData + glyphMapOffset);
+ for (uint i = 0; i < glyphMapEntries; ++i) {
+ quint32 glyphDataPos = qFromBigEndian<quint32>(gmapPtr[i]);
+ if (glyphDataPos == 0xffffffff)
+ continue;
+ if (glyphDataPos >= glyphDataSize) {
+ // error
+ glyphMapOffset = 0;
+ glyphMapEntries = 0;
+ break;
+ }
+ }
+ }
+
+#if defined(DEBUG_FONTENGINE)
+ if (!isValid())
+ qDebug() << "fontData" << fontData << "dataSize" << dataSize
+ << "externalCMap" << externalCMap << "cmapOffset" << cmapOffset
+ << "glyphMapOffset" << glyphMapOffset << "glyphDataOffset" << glyphDataOffset
+ << "fd" << fd << "glyphDataSize" << glyphDataSize;
+#endif
+}
+
+QFontEngineQPA::~QFontEngineQPA()
+{
+}
+
+bool QFontEngineQPA::getSfntTableData(uint tag, uchar *buffer, uint *length) const
+{
+ Q_UNUSED(tag);
+ Q_UNUSED(buffer);
+ *length = 0;
+ return false;
+}
+
+bool QFontEngineQPA::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const
+{
+ if (*nglyphs < len) {
+ *nglyphs = len;
+ return false;
+ }
+
+#if defined(DEBUG_FONTENGINE)
+ QSet<QChar> seenGlyphs;
+#endif
+
+ const uchar *cmap = externalCMap ? externalCMap : (fontData + cmapOffset);
+
+ bool mirrored = flags & QTextEngine::RightToLeft;
+ int glyph_pos = 0;
+ if (symbol) {
+ for (int i = 0; i < len; ++i) {
+ unsigned int uc = getChar(str, i, len);
+ if (mirrored)
+ uc = QChar::mirroredChar(uc);
+ glyphs->glyphs[glyph_pos] = getTrueTypeGlyphIndex(cmap, uc);
+ if(!glyphs->glyphs[glyph_pos] && uc < 0x100)
+ glyphs->glyphs[glyph_pos] = getTrueTypeGlyphIndex(cmap, uc + 0xf000);
+ ++glyph_pos;
+ }
+ } else {
+ for (int i = 0; i < len; ++i) {
+ unsigned int uc = getChar(str, i, len);
+ if (mirrored)
+ uc = QChar::mirroredChar(uc);
+ glyphs->glyphs[glyph_pos] = getTrueTypeGlyphIndex(cmap, uc);
+#if 0 && defined(DEBUG_FONTENGINE)
+ QChar c(uc);
+ if (!findGlyph(glyphs[glyph_pos].glyph) && !seenGlyphs.contains(c))
+ qDebug() << "glyph for character" << c << '/' << hex << uc << "is" << dec << glyphs[glyph_pos].glyph;
+
+ seenGlyphs.insert(c);
+#endif
+ ++glyph_pos;
+ }
+ }
+
+ *nglyphs = glyph_pos;
+ glyphs->numGlyphs = glyph_pos;
+ recalcAdvances(glyphs, flags);
+ return true;
+}
+
+void QFontEngineQPA::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags) const
+{
+ for (int i = 0; i < glyphs->numGlyphs; ++i) {
+ const Glyph *g = findGlyph(glyphs->glyphs[i]);
+ if (!g) {
+ glyphs->glyphs[i] = 0;
+ continue;
+ }
+ glyphs->advances_x[i] = g->advance;
+ glyphs->advances_y[i] = 0;
+ }
+}
+
+QImage QFontEngineQPA::alphaMapForGlyph(glyph_t g)
+{
+ const Glyph *glyph = findGlyph(g);
+ if (!glyph)
+ return QImage();
+
+ const uchar *bits = ((const uchar *) glyph) + sizeof(Glyph);
+
+ QImage image(bits,glyph->width, glyph->height, glyph->bytesPerLine, QImage::Format_Indexed8);
+
+ return image;
+}
+
+void QFontEngineQPA::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags)
+{
+ addBitmapFontToPath(x, y, glyphs, path, flags);
+}
+
+glyph_metrics_t QFontEngineQPA::boundingBox(const QGlyphLayout &glyphs)
+{
+ glyph_metrics_t overall;
+ // initialize with line height, we get the same behaviour on all platforms
+ overall.y = -ascent();
+ overall.height = ascent() + descent() + 1;
+
+ QFixed ymax = 0;
+ QFixed xmax = 0;
+ for (int i = 0; i < glyphs.numGlyphs; i++) {
+ const Glyph *g = findGlyph(glyphs.glyphs[i]);
+ if (!g)
+ continue;
+
+ QFixed x = overall.xoff + glyphs.offsets[i].x + g->x;
+ QFixed y = overall.yoff + glyphs.offsets[i].y + g->y;
+ overall.x = qMin(overall.x, x);
+ overall.y = qMin(overall.y, y);
+ xmax = qMax(xmax, x + g->width);
+ ymax = qMax(ymax, y + g->height);
+ overall.xoff += g->advance;
+ }
+ overall.height = qMax(overall.height, ymax - overall.y);
+ overall.width = xmax - overall.x;
+
+ return overall;
+}
+
+glyph_metrics_t QFontEngineQPA::boundingBox(glyph_t glyph)
+{
+ glyph_metrics_t overall;
+ const Glyph *g = findGlyph(glyph);
+ if (!g)
+ return overall;
+ overall.x = g->x;
+ overall.y = g->y;
+ overall.width = g->width;
+ overall.height = g->height;
+ overall.xoff = g->advance;
+ return overall;
+}
+
+QFixed QFontEngineQPA::ascent() const
+{
+ return QFixed::fromReal(extractHeaderField(fontData, Tag_Ascent).value<qreal>());
+}
+
+QFixed QFontEngineQPA::descent() const
+{
+ return QFixed::fromReal(extractHeaderField(fontData, Tag_Descent).value<qreal>());
+}
+
+QFixed QFontEngineQPA::leading() const
+{
+ return QFixed::fromReal(extractHeaderField(fontData, Tag_Leading).value<qreal>());
+}
+
+qreal QFontEngineQPA::maxCharWidth() const
+{
+ return extractHeaderField(fontData, Tag_MaxCharWidth).value<qreal>();
+}
+
+qreal QFontEngineQPA::minLeftBearing() const
+{
+ return extractHeaderField(fontData, Tag_MinLeftBearing).value<qreal>();
+}
+
+qreal QFontEngineQPA::minRightBearing() const
+{
+ return extractHeaderField(fontData, Tag_MinRightBearing).value<qreal>();
+}
+
+QFixed QFontEngineQPA::underlinePosition() const
+{
+ return QFixed::fromReal(extractHeaderField(fontData, Tag_UnderlinePosition).value<qreal>());
+}
+
+QFixed QFontEngineQPA::lineThickness() const
+{
+ return QFixed::fromReal(extractHeaderField(fontData, Tag_LineThickness).value<qreal>());
+}
+
+QFontEngine::Type QFontEngineQPA::type() const
+{
+ return QFontEngine::QPF2;
+}
+
+bool QFontEngineQPA::canRender(const QChar *string, int len)
+{
+ const uchar *cmap = externalCMap ? externalCMap : (fontData + cmapOffset);
+
+ if (symbol) {
+ for (int i = 0; i < len; ++i) {
+ unsigned int uc = getChar(string, i, len);
+ glyph_t g = getTrueTypeGlyphIndex(cmap, uc);
+ if(!g && uc < 0x100)
+ g = getTrueTypeGlyphIndex(cmap, uc + 0xf000);
+ if (!g)
+ return false;
+ }
+ } else {
+ for (int i = 0; i < len; ++i) {
+ unsigned int uc = getChar(string, i, len);
+ if (!getTrueTypeGlyphIndex(cmap, uc))
+ return false;
+ }
+ }
+ return true;
+}
+
+bool QFontEngineQPA::isValid() const
+{
+ return fontData && dataSize && (cmapOffset || externalCMap)
+ && glyphMapOffset && glyphDataOffset && glyphDataSize > 0;
+}
+
+void QPAGenerator::generate()
+{
+ writeHeader();
+ writeGMap();
+ writeBlock(QFontEngineQPA::GlyphBlock, QByteArray());
+
+ dev->seek(4); // position of header.lock
+ writeUInt32(0);
+}
+
+void QPAGenerator::writeHeader()
+{
+ QFontEngineQPA::Header header;
+
+ header.magic[0] = 'Q';
+ header.magic[1] = 'P';
+ header.magic[2] = 'F';
+ header.magic[3] = '2';
+ header.lock = 1;
+ header.majorVersion = QFontEngineQPA::CurrentMajorVersion;
+ header.minorVersion = QFontEngineQPA::CurrentMinorVersion;
+ header.dataSize = 0;
+ dev->write((const char *)&header, sizeof(header));
+
+ writeTaggedString(QFontEngineQPA::Tag_FontName, fe->fontDef.family.toUtf8());
+
+ QFontEngine::FaceId face = fe->faceId();
+ writeTaggedString(QFontEngineQPA::Tag_FileName, face.filename);
+ writeTaggedUInt32(QFontEngineQPA::Tag_FileIndex, face.index);
+
+ {
+ uchar data[4];
+ uint len = 4;
+ bool ok = fe->getSfntTableData(MAKE_TAG('h', 'e', 'a', 'd'), data, &len);
+ if (ok) {
+ const quint32 revision = qFromBigEndian<quint32>(data);
+ writeTaggedUInt32(QFontEngineQPA::Tag_FontRevision, revision);
+ }
+ }
+
+ writeTaggedQFixed(QFontEngineQPA::Tag_Ascent, fe->ascent());
+ writeTaggedQFixed(QFontEngineQPA::Tag_Descent, fe->descent());
+ writeTaggedQFixed(QFontEngineQPA::Tag_Leading, fe->leading());
+ writeTaggedQFixed(QFontEngineQPA::Tag_XHeight, fe->xHeight());
+ writeTaggedQFixed(QFontEngineQPA::Tag_AverageCharWidth, fe->averageCharWidth());
+ writeTaggedQFixed(QFontEngineQPA::Tag_MaxCharWidth, QFixed::fromReal(fe->maxCharWidth()));
+ writeTaggedQFixed(QFontEngineQPA::Tag_LineThickness, fe->lineThickness());
+ writeTaggedQFixed(QFontEngineQPA::Tag_MinLeftBearing, QFixed::fromReal(fe->minLeftBearing()));
+ writeTaggedQFixed(QFontEngineQPA::Tag_MinRightBearing, QFixed::fromReal(fe->minRightBearing()));
+ writeTaggedQFixed(QFontEngineQPA::Tag_UnderlinePosition, fe->underlinePosition());
+ writeTaggedUInt8(QFontEngineQPA::Tag_PixelSize, fe->fontDef.pixelSize);
+ writeTaggedUInt8(QFontEngineQPA::Tag_Weight, fe->fontDef.weight);
+ writeTaggedUInt8(QFontEngineQPA::Tag_Style, fe->fontDef.style);
+
+ writeTaggedUInt8(QFontEngineQPA::Tag_GlyphFormat, QFontEngineQPA::AlphamapGlyphs);
+
+ writeTaggedString(QFontEngineQPA::Tag_EndOfHeader, QByteArray());
+ align4();
+
+ const quint64 size = dev->pos();
+ header.dataSize = qToBigEndian<quint16>(size - sizeof(header));
+ dev->seek(0);
+ dev->write((const char *)&header, sizeof(header));
+ dev->seek(size);
+}
+
+void QPAGenerator::writeGMap()
+{
+ const quint16 glyphCount = fe->glyphCount();
+
+ writeUInt16(QFontEngineQPA::GMapBlock);
+ writeUInt16(0); // padding
+ writeUInt32(glyphCount * 4);
+
+ QByteArray &buffer = dev->buffer();
+ const int numBytes = glyphCount * sizeof(quint32);
+ qint64 pos = buffer.size();
+ buffer.resize(pos + numBytes);
+ qMemSet(buffer.data() + pos, 0xff, numBytes);
+ dev->seek(pos + numBytes);
+}
+
+void QPAGenerator::writeBlock(QFontEngineQPA::BlockTag tag, const QByteArray &data)
+{
+ writeUInt16(tag);
+ writeUInt16(0); // padding
+ const int padSize = ((data.size() + 3) / 4) * 4 - data.size();
+ writeUInt32(data.size() + padSize);
+ dev->write(data);
+ for (int i = 0; i < padSize; ++i)
+ writeUInt8(0);
+}
+
+void QPAGenerator::writeTaggedString(QFontEngineQPA::HeaderTag tag, const QByteArray &string)
+{
+ writeUInt16(tag);
+ writeUInt16(string.length());
+ dev->write(string);
+}
+
+void QPAGenerator::writeTaggedUInt32(QFontEngineQPA::HeaderTag tag, quint32 value)
+{
+ writeUInt16(tag);
+ writeUInt16(sizeof(value));
+ writeUInt32(value);
+}
+
+void QPAGenerator::writeTaggedUInt8(QFontEngineQPA::HeaderTag tag, quint8 value)
+{
+ writeUInt16(tag);
+ writeUInt16(sizeof(value));
+ writeUInt8(value);
+}
+
+void QPAGenerator::writeTaggedQFixed(QFontEngineQPA::HeaderTag tag, QFixed value)
+{
+ writeUInt16(tag);
+ writeUInt16(sizeof(quint32));
+ writeUInt32(value.value());
+}
+
+
+/*
+ Creates a new multi QPA engine.
+
+ This function takes ownership of the QFontEngine, increasing it's refcount.
+*/
+QFontEngineMultiQPA::QFontEngineMultiQPA(QFontEngine *fe, int _script, const QStringList &fallbacks)
+ : QFontEngineMulti(fallbacks.size() + 1),
+ fallbackFamilies(fallbacks), script(_script)
+{
+ engines[0] = fe;
+ fe->ref.ref();
+ fontDef = engines[0]->fontDef;
+}
+
+void QFontEngineMultiQPA::loadEngine(int at)
+{
+ Q_ASSERT(at < engines.size());
+ Q_ASSERT(engines.at(at) == 0);
+
+ QFontDef request = fontDef;
+ request.styleStrategy |= QFont::NoFontMerging;
+ request.family = fallbackFamilies.at(at-1);
+ engines[at] = QFontDatabase::findFont(script,
+ /*fontprivate*/0,
+ request);
+ Q_ASSERT(engines[at]);
+ engines[at]->ref.ref();
+ engines[at]->fontDef = request;
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/text/qfontengine_qpa_p.h b/src/gui/text/qfontengine_qpa_p.h
new file mode 100644
index 0000000000..467fca617e
--- /dev/null
+++ b/src/gui/text/qfontengine_qpa_p.h
@@ -0,0 +1,262 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef QFONTENGINE_QPA_P_H
+#define QFONTENGINE_QPA_P_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/qconfig.h>
+#include <QtCore/qglobal.h>
+#include <QtCore/qendian.h>
+#include <QtCore/QBuffer>
+
+#include "qfontengine_p.h"
+
+#include <QtCore/QFile>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QFontEngine;
+class QFreetypeFace;
+class QBuffer;
+
+class Q_GUI_EXPORT QFontEngineQPA : public QFontEngine
+{
+public:
+ // if you add new tags please make sure to update the tables in
+ // qpfutil.cpp and tools/makeqpf/qpf2.cpp
+ enum HeaderTag {
+ Tag_FontName, // 0 string
+ Tag_FileName, // 1 string
+ Tag_FileIndex, // 2 quint32
+ Tag_FontRevision, // 3 quint32
+ Tag_FreeText, // 4 string
+ Tag_Ascent, // 5 QFixed
+ Tag_Descent, // 6 QFixed
+ Tag_Leading, // 7 QFixed
+ Tag_XHeight, // 8 QFixed
+ Tag_AverageCharWidth, // 9 QFixed
+ Tag_MaxCharWidth, // 10 QFixed
+ Tag_LineThickness, // 11 QFixed
+ Tag_MinLeftBearing, // 12 QFixed
+ Tag_MinRightBearing, // 13 QFixed
+ Tag_UnderlinePosition, // 14 QFixed
+ Tag_GlyphFormat, // 15 quint8
+ Tag_PixelSize, // 16 quint8
+ Tag_Weight, // 17 quint8
+ Tag_Style, // 18 quint8
+ Tag_EndOfHeader, // 19 string
+ Tag_WritingSystems, // 20 bitfield
+
+ NumTags
+ };
+
+ enum TagType {
+ StringType,
+ FixedType,
+ UInt8Type,
+ UInt32Type,
+ BitFieldType
+ };
+
+ struct Tag
+ {
+ quint16 tag;
+ quint16 size;
+ };
+
+ enum GlyphFormat {
+ BitmapGlyphs = 1,
+ AlphamapGlyphs = 8
+ };
+
+ enum {
+ CurrentMajorVersion = 2,
+ CurrentMinorVersion = 0
+ };
+
+ // The CMap is identical to the TrueType CMap table format
+ // The GMap table is a normal array with the total number of
+ // covered glyphs in the TrueType font
+ enum BlockTag {
+ CMapBlock,
+ GMapBlock,
+ GlyphBlock
+ };
+
+ struct Q_PACKED Header
+ {
+ char magic[4]; // 'QPF2'
+ quint32 lock; // values: 0 = unlocked, 0xffffffff = read-only, otherwise qws client id of locking process
+ quint8 majorVersion;
+ quint8 minorVersion;
+ quint16 dataSize;
+ };
+
+ struct Q_PACKED Block
+ {
+ quint16 tag;
+ quint16 pad;
+ quint32 dataSize;
+ };
+
+ struct Q_PACKED Glyph
+ {
+ quint8 width;
+ quint8 height;
+ quint8 bytesPerLine;
+ qint8 x;
+ qint8 y;
+ qint8 advance;
+ };
+
+ QFontEngineQPA(const QFontDef &def, const QByteArray &data);
+ ~QFontEngineQPA();
+
+ FaceId faceId() const { return face_id; }
+ bool getSfntTableData(uint tag, uchar *buffer, uint *length) const;
+
+ bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const;
+ void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const;
+
+ void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags);
+ QImage alphaMapForGlyph(glyph_t t);
+
+ glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
+ glyph_metrics_t boundingBox(glyph_t glyph);
+
+ QFixed ascent() const;
+ QFixed descent() const;
+ QFixed leading() const;
+ qreal maxCharWidth() const;
+ qreal minLeftBearing() const;
+ qreal minRightBearing() const;
+ QFixed underlinePosition() const;
+ QFixed lineThickness() const;
+
+ Type type() const;
+
+ bool canRender(const QChar *string, int len);
+ inline const char *name() const { return "QPF2"; }
+
+ virtual int glyphCount() const { return glyphMapEntries; }
+
+ bool isValid() const;
+
+ const Glyph *findGlyph(glyph_t g) const;
+
+ static bool verifyHeader(const uchar *data, int size);
+ static QVariant extractHeaderField(const uchar *data, HeaderTag tag);
+
+private:
+
+ const uchar *fontData;
+ int dataSize;
+ const uchar *externalCMap;
+ quint32 cmapOffset;
+ int cmapSize;
+ quint32 glyphMapOffset;
+ quint32 glyphMapEntries;
+ quint32 glyphDataOffset;
+ quint32 glyphDataSize;
+ QString internalFileName;
+ QString encodedFileName;
+ bool readOnly;
+
+ FaceId face_id;
+ QByteArray freetypeCMapTable;
+ mutable bool kerning_pairs_loaded;
+};
+
+struct QPAGenerator
+{
+ QPAGenerator(QBuffer *device, QFontEngine *engine)
+ : dev(device), fe(engine) {}
+
+ void generate();
+ void writeHeader();
+ void writeGMap();
+ void writeBlock(QFontEngineQPA::BlockTag tag, const QByteArray &data);
+
+ void writeTaggedString(QFontEngineQPA::HeaderTag tag, const QByteArray &string);
+ void writeTaggedUInt32(QFontEngineQPA::HeaderTag tag, quint32 value);
+ void writeTaggedUInt8(QFontEngineQPA::HeaderTag tag, quint8 value);
+ void writeTaggedQFixed(QFontEngineQPA::HeaderTag tag, QFixed value);
+
+ void writeUInt16(quint16 value) { value = qToBigEndian(value); dev->write((const char *)&value, sizeof(value)); }
+ void writeUInt32(quint32 value) { value = qToBigEndian(value); dev->write((const char *)&value, sizeof(value)); }
+ void writeUInt8(quint8 value) { dev->write((const char *)&value, sizeof(value)); }
+ void writeInt8(qint8 value) { dev->write((const char *)&value, sizeof(value)); }
+
+ void align4() { while (dev->pos() & 3) { dev->putChar('\0'); } }
+
+ QBuffer *dev;
+ QFontEngine *fe;
+};
+
+class QFontEngineMultiQPA : public QFontEngineMulti
+{
+public:
+ QFontEngineMultiQPA(QFontEngine *fe, int script, const QStringList &fallbacks);
+
+ void loadEngine(int at);
+
+private:
+ QStringList fallbackFamilies;
+ int script;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QFONTENGINE_QPA_P_H
diff --git a/src/gui/text/qfontengine_s60.cpp b/src/gui/text/qfontengine_s60.cpp
index e9dcfa077c..134c1edfcb 100644
--- a/src/gui/text/qfontengine_s60.cpp
+++ b/src/gui/text/qfontengine_s60.cpp
@@ -41,6 +41,7 @@
#include "qfontengine_s60_p.h"
#include "qtextengine_p.h"
+#include "qendian.h"
#include "qglobal.h"
#include <private/qapplication_p.h>
#include "qimage.h"
@@ -177,6 +178,24 @@ CFont *QSymbianTypeFaceExtras::fontOwner() const
return m_cFont;
}
+QFixed QSymbianTypeFaceExtras::unitsPerEm() const
+{
+ if (m_unitsPerEm.value() != 0)
+ return m_unitsPerEm;
+ const QByteArray head = getSfntTable(MAKE_TAG('h', 'e', 'a', 'd'));
+ const int unitsPerEmOffset = 18;
+ if (head.size() > unitsPerEmOffset + sizeof(quint16)) {
+ const uchar* tableData = reinterpret_cast<const uchar*>(head.constData());
+ const uchar* unitsPerEm = tableData + unitsPerEmOffset;
+ m_unitsPerEm = qFromBigEndian<quint16>(unitsPerEm);
+ } else {
+ // Bitmap font? Corrupt font?
+ // We return -1 and let the QFontEngineS60 return the pixel size.
+ m_unitsPerEm = -1;
+ }
+ return m_unitsPerEm;
+}
+
// duplicated from qfontengine_xyz.cpp
static inline unsigned int getChar(const QChar *str, int &i, const int len)
{
@@ -249,6 +268,13 @@ QFontEngineS60::~QFontEngineS60()
releaseFont(m_scaledFont);
}
+QFixed QFontEngineS60::emSquareSize() const
+{
+ const QFixed unitsPerEm = m_extras->unitsPerEm();
+ return unitsPerEm.toInt() == -1 ?
+ QFixed::fromReal(m_originalFontSizeInPixels) : unitsPerEm;
+}
+
bool QFontEngineS60::stringToCMap(const QChar *characters, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const
{
if (*nglyphs < len) {
@@ -278,10 +304,13 @@ bool QFontEngineS60::stringToCMap(const QChar *characters, int len, QGlyphLayout
void QFontEngineS60::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const
{
Q_UNUSED(flags);
+ TOpenFontCharMetrics metrics;
+ const TUint8 *glyphBitmapBytes;
+ TSize glyphBitmapSize;
for (int i = 0; i < glyphs->numGlyphs; i++) {
- const glyph_metrics_t bbox = boundingBox_const(glyphs->glyphs[i]);
- glyphs->advances_x[i] = bbox.xoff;
- glyphs->advances_y[i] = bbox.yoff;
+ getCharacterData(glyphs->glyphs[i], metrics, glyphBitmapBytes, glyphBitmapSize);
+ glyphs->advances_x[i] = metrics.HorizAdvance();
+ glyphs->advances_y[i] = 0;
}
}
@@ -309,6 +338,7 @@ void QFontEngineS60::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions,
parseGlyphPathData(outlineChar, outlineEnd, *path, fontSizeInPixels,
positions[count++].toPointF(), false);
} while(KErrNone == iterator.Next() && count <= nglyphs);
+ iterator.Close();
#else // Q_SYMBIAN_HAS_GLYPHOUTLINE_API
QFontEngine::addGlyphsToPath(glyphs, positions, nglyphs, path, flags);
#endif //Q_SYMBIAN_HAS_GLYPHOUTLINE_API
@@ -316,29 +346,17 @@ void QFontEngineS60::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions,
QImage QFontEngineS60::alphaMapForGlyph(glyph_t glyph)
{
+ // Note: On some Symbian versions (apparently <= Symbian^1), this
+ // function will return gray values 0x00, 0x10 ... 0xe0, 0xf0 due
+ // to a bug. The glyphs are nowhere perfectly opaque.
+ // This has been fixed for Symbian^3.
+
TOpenFontCharMetrics metrics;
const TUint8 *glyphBitmapBytes;
TSize glyphBitmapSize;
getCharacterData(glyph, metrics, glyphBitmapBytes, glyphBitmapSize);
QImage result(glyphBitmapBytes, glyphBitmapSize.iWidth, glyphBitmapSize.iHeight, glyphBitmapSize.iWidth, QImage::Format_Indexed8);
result.setColorTable(grayPalette());
-
- // The above setColorTable() call detached the image data anyway, so why not shape tha data a bit, while we can.
- // CFont::GetCharacterData() returns 8-bit data that obviously was 4-bit data before, and converted to 8-bit incorrectly.
- // The data values are 0x00, 0x10 ... 0xe0, 0xf0. So, a real opaque 0xff is never reached, which we get punished
- // for every time we want to blit this glyph in the raster paint engine.
- // "Fix" is to convert all 0xf0 to 0xff. Is fine, quality wise, and I assume faster than correcting all values.
- // Blitting is however, evidentially faster now.
- const int bpl = result.bytesPerLine();
- for (int row = 0; row < result.height(); ++row) {
- uchar *scanLine = result.scanLine(row);
- for (int column = 0; column < bpl; ++column) {
- if (*scanLine == 0xf0)
- *scanLine = 0xff;
- scanLine++;
- }
- }
-
return result;
}
@@ -360,13 +378,11 @@ glyph_metrics_t QFontEngineS60::boundingBox_const(glyph_t glyph) const
const TUint8 *glyphBitmapBytes;
TSize glyphBitmapSize;
getCharacterData(glyph, metrics, glyphBitmapBytes, glyphBitmapSize);
- TRect glyphBounds;
- metrics.GetHorizBounds(glyphBounds);
const glyph_metrics_t result(
- glyphBounds.iTl.iX,
- glyphBounds.iTl.iY,
- glyphBounds.Width(),
- glyphBounds.Height(),
+ metrics.HorizBearingX(),
+ -metrics.HorizBearingY(),
+ metrics.Width(),
+ metrics.Height(),
metrics.HorizAdvance(),
0
);
diff --git a/src/gui/text/qfontengine_s60_p.h b/src/gui/text/qfontengine_s60_p.h
index d05c23c4e0..c65ce55f1b 100644
--- a/src/gui/text/qfontengine_s60_p.h
+++ b/src/gui/text/qfontengine_s60_p.h
@@ -82,11 +82,13 @@ public:
const uchar *cmap() const;
CFont *fontOwner() const;
bool isSymbolCMap() const;
+ QFixed unitsPerEm() const;
private:
CFont* m_cFont;
mutable bool m_symbolCMap;
mutable QByteArray m_cmapTable;
+ mutable QFixed m_unitsPerEm;
#ifndef Q_SYMBIAN_HAS_FONTTABLE_API
COpenFont *m_openFont;
mutable MOpenFontTrueTypeExtension *m_trueTypeExtension;
@@ -99,6 +101,7 @@ public:
QFontEngineS60(const QFontDef &fontDef, const QSymbianTypeFaceExtras *extras);
~QFontEngineS60();
+ QFixed emSquareSize() const;
bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const;
void recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const;
diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp
index a941dabb2a..cf4fbdad43 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/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/qplatformfontdatabase_qpa.cpp b/src/gui/text/qplatformfontdatabase_qpa.cpp
new file mode 100644
index 0000000000..370c9212bb
--- /dev/null
+++ b/src/gui/text/qplatformfontdatabase_qpa.cpp
@@ -0,0 +1,241 @@
+/****************************************************************************
+**
+** 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 "qplatformfontdatabase_qpa.h"
+#include <QtGui/private/qfontengine_p.h>
+#include <QtGui/private/qfontengine_qpa_p.h>
+#include <QtCore/QLibraryInfo>
+#include <QtCore/QDir>
+
+QT_BEGIN_NAMESPACE
+
+extern void qt_registerFont(const QString &familyname, const QString &foundryname, int weight,
+ QFont::Style style, int stretch, bool antialiased,bool scalable, int pixelSize,
+ const QSupportedWritingSystems &writingSystems, void *hanlde);
+
+void QPlatformFontDatabase::registerQPF2Font(const QByteArray &dataArray, void *handle)
+{
+ if (dataArray.size() == 0)
+ return;
+
+ const uchar *data = reinterpret_cast<const uchar *>(dataArray.constData());
+ if (QFontEngineQPA::verifyHeader(data, dataArray.size())) {
+ QString fontName = QFontEngineQPA::extractHeaderField(data, QFontEngineQPA::Tag_FontName).toString();
+ int pixelSize = QFontEngineQPA::extractHeaderField(data, QFontEngineQPA::Tag_PixelSize).toInt();
+ QVariant weight = QFontEngineQPA::extractHeaderField(data, QFontEngineQPA::Tag_Weight);
+ QVariant style = QFontEngineQPA::extractHeaderField(data, QFontEngineQPA::Tag_Style);
+ QByteArray writingSystemBits = QFontEngineQPA::extractHeaderField(data, QFontEngineQPA::Tag_WritingSystems).toByteArray();
+
+ if (!fontName.isEmpty() && pixelSize) {
+ int fontWeight = 50;
+ if (weight.type() == QVariant::Int || weight.type() == QVariant::UInt)
+ fontWeight = weight.toInt();
+
+ QFont::Style fontStyle = static_cast<QFont::Style>(style.toInt());
+
+ QSupportedWritingSystems writingSystems;
+ for (int i = 0; i < writingSystemBits.count(); ++i) {
+ uchar currentByte = writingSystemBits.at(i);
+ for (int j = 0; j < 8; ++j) {
+ if (currentByte & 1)
+ writingSystems.setSupported(QFontDatabase::WritingSystem(i * 8 + j));
+ currentByte >>= 1;
+ }
+ }
+
+ registerFont(fontName,QString(),fontWeight,fontStyle,100,true,false,pixelSize,writingSystems,handle);
+ }
+ } else {
+ qDebug() << "header verification of QPF2 font failed. maybe it is corrupt?";
+ }
+}
+
+void QPlatformFontDatabase::registerFont(const QString &familyname, const QString &foundryname, int weight,
+ QFont::Style style, int stretch, bool antialiased, bool scalable, int pixelSize,
+ const QSupportedWritingSystems &writingSystems, void *usrPtr)
+{
+ if (scalable)
+ pixelSize = 0;
+ qt_registerFont(familyname,foundryname,weight,style,stretch,antialiased,scalable,pixelSize,writingSystems,usrPtr);
+}
+
+class QWritingSystemsPrivate
+{
+public:
+ QWritingSystemsPrivate()
+ : ref(1)
+ , vector(QFontDatabase::WritingSystemsCount,false)
+ {
+ }
+
+ QWritingSystemsPrivate(const QWritingSystemsPrivate *other)
+ : ref(1)
+ , vector(other->vector)
+ {
+ }
+
+ QAtomicInt ref;
+ QVector<bool> vector;
+};
+
+QSupportedWritingSystems::QSupportedWritingSystems()
+{
+ d = new QWritingSystemsPrivate;
+}
+
+QSupportedWritingSystems::QSupportedWritingSystems(const QSupportedWritingSystems &other)
+{
+ d = other.d;
+ d->ref.ref();
+}
+
+QSupportedWritingSystems &QSupportedWritingSystems::operator=(const QSupportedWritingSystems &other)
+{
+ if (d != other.d) {
+ other.d->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = other.d;
+ }
+ return *this;
+}
+
+QSupportedWritingSystems::~QSupportedWritingSystems()
+{
+ if (!d->ref.deref())
+ delete d;
+}
+
+void QSupportedWritingSystems::detach()
+{
+ if (d->ref != 1) {
+ QWritingSystemsPrivate *newd = new QWritingSystemsPrivate(d);
+ if (!d->ref.deref())
+ delete d;
+ d = newd;
+ }
+}
+
+void QSupportedWritingSystems::setSupported(QFontDatabase::WritingSystem writingSystem, bool support)
+{
+ detach();
+ d->vector[writingSystem] = support;
+}
+
+bool QSupportedWritingSystems::supported(QFontDatabase::WritingSystem writingSystem) const
+{
+ return d->vector.at(writingSystem);
+}
+
+void QPlatformFontDatabase::populateFontDatabase()
+{
+ QString fontpath = fontDir();
+
+ if(!QFile::exists(fontpath)) {
+ qFatal("QFontDatabase: Cannot find font directory %s - is Qt installed correctly?",
+ qPrintable(fontpath));
+ }
+
+ QDir dir(fontpath);
+ dir.setNameFilters(QStringList() << QLatin1String("*.qpf2"));
+ dir.refresh();
+ for (int i = 0; i < int(dir.count()); ++i) {
+ const QByteArray fileName = QFile::encodeName(dir.absoluteFilePath(dir[i]));
+ QFile file(QString::fromLocal8Bit(fileName));
+ if (file.open(QFile::ReadOnly)) {
+ const QByteArray fileData = file.readAll();
+ QByteArray *fileDataPtr = new QByteArray(fileData);
+ registerQPF2Font(fileData, fileDataPtr);
+ }
+ }
+}
+
+QFontEngine *QPlatformFontDatabase::fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle)
+{
+ Q_UNUSED(script);
+ Q_UNUSED(handle);
+ QByteArray *fileDataPtr = static_cast<QByteArray *>(handle);
+ QFontEngineQPA *engine = new QFontEngineQPA(fontDef,*fileDataPtr);
+ qDebug() << fontDef.pixelSize << fontDef.weight << fontDef.style << fontDef.stretch << fontDef.styleHint << fontDef.styleStrategy << fontDef.family << script;
+ return engine;
+}
+
+QStringList QPlatformFontDatabase::fallbacksForFamily(const QString family, const QFont::Style &style, const QUnicodeTables::Script &script) const
+{
+ Q_UNUSED(family);
+ Q_UNUSED(style);
+ Q_UNUSED(script);
+ return QStringList();
+}
+
+/*!
+ Adds an application font. Returns a list of family names, or an empty list if the font could
+ not be added
+*/
+QStringList QPlatformFontDatabase::addApplicationFont(const QByteArray &fontData, const QString &fileName)
+{
+ Q_UNUSED(fontData);
+ Q_UNUSED(fileName);
+
+ qWarning("This plugin does not support application fonts");
+ return QStringList();
+}
+
+void QPlatformFontDatabase::releaseHandle(void *handle)
+{
+ QByteArray *fileDataPtr = static_cast<QByteArray *>(handle);
+ delete fileDataPtr;
+}
+
+QString QPlatformFontDatabase::fontDir() const
+{
+ QString fontpath = QString::fromLocal8Bit(qgetenv("QT_QPA_FONTDIR"));
+ if (fontpath.isEmpty()) {
+#ifndef QT_NO_SETTINGS
+ fontpath = QLibraryInfo::location(QLibraryInfo::LibrariesPath);
+ fontpath += QLatin1String("/fonts");
+#endif
+ }
+
+ return fontpath;
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/text/qplatformfontdatabase_qpa.h b/src/gui/text/qplatformfontdatabase_qpa.h
new file mode 100644
index 0000000000..75b0a185c3
--- /dev/null
+++ b/src/gui/text/qplatformfontdatabase_qpa.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 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$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMFONTDATABASE_QPA_H
+#define QPLATFORMFONTDATABASE_QPA_H
+
+#include <QtCore/qconfig.h>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+#include <QtCore/QList>
+#include <QtGui/QFontDatabase>
+#include <QtGui/private/qfont_p.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class QWritingSystemsPrivate;
+
+class Q_GUI_EXPORT QSupportedWritingSystems
+{
+public:
+
+ QSupportedWritingSystems();
+ QSupportedWritingSystems(const QSupportedWritingSystems &other);
+ QSupportedWritingSystems &operator=(const QSupportedWritingSystems &other);
+ ~QSupportedWritingSystems();
+
+ void setSupported(QFontDatabase::WritingSystem, bool supported = true);
+ bool supported(QFontDatabase::WritingSystem) const;
+
+private:
+ void detach();
+
+ QWritingSystemsPrivate *d;
+
+ friend Q_GUI_EXPORT bool operator==(const QSupportedWritingSystems &, const QSupportedWritingSystems &);
+ friend Q_GUI_EXPORT bool operator!=(const QSupportedWritingSystems &, const QSupportedWritingSystems &);
+};
+
+Q_GUI_EXPORT bool operator==(const QSupportedWritingSystems &, const QSupportedWritingSystems &);
+Q_GUI_EXPORT bool operator!=(const QSupportedWritingSystems &, const QSupportedWritingSystems &);
+
+class QFontRequestPrivate;
+
+class Q_GUI_EXPORT QPlatformFontDatabase
+{
+public:
+ virtual void populateFontDatabase();
+ virtual QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle);
+ virtual QStringList fallbacksForFamily(const QString family, const QFont::Style &style, const QUnicodeTables::Script &script) const;
+ virtual QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName);
+ virtual void releaseHandle(void *handle);
+
+ virtual QString fontDir() const;
+
+ //callback
+ static void registerQPF2Font(const QByteArray &dataArray, void *handle);
+ static void registerFont(const QString &familyname, const QString &foundryname, int weight,
+ QFont::Style style, int stetch, bool antialiased, bool scalable, int pixelSize,
+ const QSupportedWritingSystems &writingSystems, void *handle);
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QPLATFORMFONTDATABASE_QPA_H
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/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp
index d0f71ae7d2..334246b9bd 100644
--- a/src/gui/text/qtextcontrol.cpp
+++ b/src/gui/text/qtextcontrol.cpp
@@ -64,6 +64,7 @@
#include "qgraphicssceneevent.h"
#include "qprinter.h"
#include "qtextdocumentwriter.h"
+#include "private/qtextcursor_p.h"
#include <qtextformat.h>
#include <qdatetime.h>
@@ -1904,6 +1905,8 @@ void QTextControlPrivate::inputMethodEvent(QInputMethodEvent *e)
}
layout->setAdditionalFormats(overrides);
cursor.endEditBlock();
+ if (cursor.d)
+ cursor.d->setX();
}
QVariant QTextControl::inputMethodQuery(Qt::InputMethodQuery property) const
diff --git a/src/gui/text/qtextcursor.h b/src/gui/text/qtextcursor.h
index 251cb3331b..d34ee4ece8 100644
--- a/src/gui/text/qtextcursor.h
+++ b/src/gui/text/qtextcursor.h
@@ -230,6 +230,7 @@ private:
QSharedDataPointer<QTextCursorPrivate> d;
friend class QTextDocumentFragmentPrivate;
friend class QTextCopyHelper;
+ friend class QTextControlPrivate;
};
QT_END_NAMESPACE
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index 3aa6795755..496accdb95 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -2612,8 +2612,8 @@ void QTextHtmlExporter::emitBlock(const QTextBlock &block)
if (format.hasProperty(QTextFormat::ListNumberPrefix)) {
QString numberPrefix = format.numberPrefix();
- numberPrefix.replace('"', "\\22");
- numberPrefix.replace('\'', "\\27"); // FIXME: There's a problem in the CSS parser the prevents this from being correctly restored
+ numberPrefix.replace(QLatin1Char('"'), QLatin1String("\\22"));
+ numberPrefix.replace(QLatin1Char('\''), QLatin1String("\\27")); // FIXME: There's a problem in the CSS parser the prevents this from being correctly restored
styleString += QLatin1String(" -qt-list-number-prefix: ");
styleString += QLatin1Char('\'');
styleString += numberPrefix;
@@ -2624,8 +2624,8 @@ void QTextHtmlExporter::emitBlock(const QTextBlock &block)
if (format.hasProperty(QTextFormat::ListNumberSuffix)) {
if (format.numberSuffix() != QLatin1String(".")) { // this is our default
QString numberSuffix = format.numberSuffix();
- numberSuffix.replace('"', "\\22");
- numberSuffix.replace('\'', "\\27"); // see above
+ numberSuffix.replace(QLatin1Char('"'), QLatin1String("\\22"));
+ numberSuffix.replace(QLatin1Char('\''), QLatin1String("\\27")); // see above
styleString += QLatin1String(" -qt-list-number-suffix: ");
styleString += QLatin1Char('\'');
styleString += numberSuffix;
diff --git a/src/gui/text/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/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 34d9fa6b9a..06eed557cb 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -612,7 +612,7 @@ static bool bidiItemize(QTextEngine *engine, QScriptAnalysis *analysis, QBidiCon
} else {
eor = current;
}
- dir = QChar::DirON; status.eor = QChar::DirAN;
+ dir = QChar::DirAN; status.eor = QChar::DirAN;
break;
case QChar::DirCS:
if(status.eor == QChar::DirAN) {
@@ -1976,9 +1976,11 @@ void QTextEngine::justify(const QScriptLine &line)
if (kashida_pos >= 0) {
// qDebug("kashida position at %d in word", kashida_pos);
set(&justificationPoints[nPoints], kashida_type, g.mid(kashida_pos), fontEngine(si));
- minKashida = qMin(minKashida, justificationPoints[nPoints].kashidaWidth);
- maxJustify = qMax(maxJustify, justificationPoints[nPoints].type);
- ++nPoints;
+ if (justificationPoints[nPoints].kashidaWidth > 0) {
+ minKashida = qMin(minKashida, justificationPoints[nPoints].kashidaWidth);
+ maxJustify = qMax(maxJustify, justificationPoints[nPoints].type);
+ ++nPoints;
+ }
}
kashida_pos = -1;
kashida_type = HB_Arabic_Normal;
@@ -2002,9 +2004,11 @@ void QTextEngine::justify(const QScriptLine &line)
}
if (kashida_pos >= 0) {
set(&justificationPoints[nPoints], kashida_type, g.mid(kashida_pos), fontEngine(si));
- minKashida = qMin(minKashida, justificationPoints[nPoints].kashidaWidth);
- maxJustify = qMax(maxJustify, justificationPoints[nPoints].type);
- ++nPoints;
+ if (justificationPoints[nPoints].kashidaWidth > 0) {
+ minKashida = qMin(minKashida, justificationPoints[nPoints].kashidaWidth);
+ maxJustify = qMax(maxJustify, justificationPoints[nPoints].type);
+ ++nPoints;
+ }
}
}
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index fad6c3b2fe..dad53711ad 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1687,7 +1687,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/text/text.pri b/src/gui/text/text.pri
index 102df4d41d..0040b54161 100644
--- a/src/gui/text/text.pri
+++ b/src/gui/text/text.pri
@@ -25,7 +25,7 @@ HEADERS += \
text/qabstracttextdocumentlayout.h \
text/qtextdocumentlayout_p.h \
text/qtextcursor.h \
- text/qtextcursor_p.h \
+ text/qtextcursor_p.h \
text/qtextdocumentfragment.h \
text/qtextdocumentfragment_p.h \
text/qtextimagehandler_p.h \
@@ -92,7 +92,7 @@ unix:x11 {
text/qfontengine_ft.cpp
}
-!embedded:!x11:mac {
+!embedded:!qpa:!x11:mac {
SOURCES += \
text/qfont_mac.cpp
OBJECTIVE_SOURCES += text/qfontengine_mac.mm
@@ -113,6 +113,19 @@ embedded {
DEFINES += QT_NO_FONTCONFIG
}
+qpa {
+ SOURCES += \
+ text/qfont_qpa.cpp \
+ text/qfontengine_qpa.cpp \
+ text/qplatformfontdatabase_qpa.cpp
+
+ HEADERS += \
+ text/qplatformfontdatabase_qpa.h
+
+ DEFINES += QT_NO_FONTCONFIG
+ DEFINES += QT_NO_FREETYPE
+}
+
symbian {
SOURCES += \
text/qfont_s60.cpp
@@ -132,6 +145,7 @@ symbian {
}
}
+!qpa {
contains(QT_CONFIG, freetype) {
SOURCES += \
../3rdparty/freetype/src/base/ftbase.c \
@@ -205,6 +219,7 @@ contains(QT_CONFIG, freetype) {
contains(QT_CONFIG, fontconfig) {
CONFIG += opentype
}
+}#!qpa
DEFINES += QT_NO_OPENTYPE
INCLUDEPATH += ../3rdparty/harfbuzz/src
diff --git a/src/gui/util/qcompleter.cpp b/src/gui/util/qcompleter.cpp
index e71821215b..71a01716a7 100644
--- a/src/gui/util/qcompleter.cpp
+++ b/src/gui/util/qcompleter.cpp
@@ -220,7 +220,7 @@ QModelIndex QCompletionModel::mapToSource(const QModelIndex& index) const
{
Q_D(const QCompletionModel);
if (!index.isValid())
- return QModelIndex();
+ return engine->curParent;
int row;
QModelIndex parent = engine->curParent;
@@ -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.cpp b/src/gui/util/qdesktopservices.cpp
index 8b36b32476..39a160e14e 100644
--- a/src/gui/util/qdesktopservices.cpp
+++ b/src/gui/util/qdesktopservices.cpp
@@ -45,7 +45,7 @@
#include <qdebug.h>
-#if defined(Q_WS_QWS)
+#if defined(Q_WS_QWS) || defined(Q_WS_QPA)
#include "qdesktopservices_qws.cpp"
#elif defined(Q_WS_X11)
#include "qdesktopservices_x11.cpp"
diff --git a/src/gui/util/util.pri b/src/gui/util/util.pri
index bea520e3b4..af6218ada5 100644
--- a/src/gui/util/util.pri
+++ b/src/gui/util/util.pri
@@ -33,12 +33,12 @@ unix:x11 {
util/qsystemtrayicon_x11.cpp
}
-embedded {
+embedded|qpa {
SOURCES += \
util/qsystemtrayicon_qws.cpp
}
-!embedded:!x11:mac {
+!embedded:!qpa:!x11:mac {
OBJECTIVE_SOURCES += util/qsystemtrayicon_mac.mm
}
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/qcocoamenu_mac.mm b/src/gui/widgets/qcocoamenu_mac.mm
index 15fae23c20..b670186790 100644
--- a/src/gui/widgets/qcocoamenu_mac.mm
+++ b/src/gui/widgets/qcocoamenu_mac.mm
@@ -156,10 +156,14 @@ QT_USE_NAMESPACE
// In every other case we return NO, which means that Cocoa can do as it pleases
// (i.e., fire the menu action).
NSMenuItem *whichItem;
+ // Change the private unicode keys to the ones used in setting the "Key Equivalents"
+ extern NSString *qt_mac_removePrivateUnicode(NSString* string);
+ NSString *characters = qt_mac_removePrivateUnicode([event characters]);
if ([self hasShortcut:menu
- forKey:[event characters]
- forModifiers:([event modifierFlags] & NSDeviceIndependentModifierFlagsMask)
- whichItem:&whichItem]) {
+ forKey:characters
+ // Interested only in Shift, Cmd, Ctrl & Alt Keys, so ignoring masks like, Caps lock, Num Lock ...
+ forModifiers:([event modifierFlags] & (NSShiftKeyMask | NSControlKeyMask | NSCommandKeyMask | NSAlternateKeyMask))
+ whichItem:&whichItem]) {
QWidget *widget = 0;
QAction *qaction = 0;
if (whichItem && [whichItem tag]) {
@@ -170,6 +174,9 @@ QT_USE_NAMESPACE
qApp->activePopupWidget()->focusWidget() : qApp->activePopupWidget());
else if (QApplicationPrivate::focus_widget)
widget = QApplicationPrivate::focus_widget;
+ // If we could not find any receivers, pass it to the active window
+ if (!widget)
+ widget = qApp->activeWindow();
if (qaction && widget) {
int key = qaction->shortcut();
QKeyEvent accel_ev(QEvent::ShortcutOverride, (key & (~Qt::KeyboardModifierMask)),
@@ -177,11 +184,10 @@ QT_USE_NAMESPACE
accel_ev.ignore();
qt_sendSpontaneousEvent(widget, &accel_ev);
if (accel_ev.isAccepted()) {
- if (qt_dispatchKeyEvent(event, widget)) {
- *target = nil;
- *action = nil;
- return YES;
- }
+ qt_dispatchKeyEvent(event, widget);
+ *target = nil;
+ *action = nil;
+ return YES;
}
}
}
diff --git a/src/gui/widgets/qcombobox.cpp b/src/gui/widgets/qcombobox.cpp
index b857e944ca..ced0d73ff0 100644
--- a/src/gui/widgets/qcombobox.cpp
+++ b/src/gui/widgets/qcombobox.cpp
@@ -2486,7 +2486,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 36a31478e7..f2e8fd29da 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/qlinecontrol.cpp b/src/gui/widgets/qlinecontrol.cpp
index f338f40d02..a283da688b 100644
--- a/src/gui/widgets/qlinecontrol.cpp
+++ b/src/gui/widgets/qlinecontrol.cpp
@@ -112,7 +112,7 @@ void QLineControl::updateDisplayText(bool forceUpdate)
Copies the currently selected text into the clipboard using the given
\a mode.
-
+
\note If the echo mode is set to a mode other than Normal then copy
will not work. This is to prevent using copy as a method of bypassing
password features of the line control.
@@ -486,7 +486,7 @@ void QLineControl::processInputMethodEvent(QInputMethodEvent *event)
/*!
\internal
- Draws the display text for the line control using the given
+ Draws the display text for the line control using the given
\a painter, \a clip, and \a offset. Which aspects of the display text
are drawn is specified by the given \a flags.
diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp
index caaef6866e..0a33220128 100644
--- a/src/gui/widgets/qlineedit.cpp
+++ b/src/gui/widgets/qlineedit.cpp
@@ -139,7 +139,10 @@ void QLineEdit::initStyleOption(QStyleOptionFrame *option) const
The length of the text can be constrained to maxLength(). The text
can be arbitrarily constrained using a validator() or an
- inputMask(), or both.
+ inputMask(), or both. When switching between a validator and an input mask
+ on the same line edit, it is best to clear the validator or input mask to
+ prevent undefined behavior.
+
A related class is QTextEdit which allows multi-line, rich text
editing.
diff --git a/src/gui/widgets/qmainwindow.cpp b/src/gui/widgets/qmainwindow.cpp
index 4ca11b039f..da902d5154 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.
@@ -1516,14 +1516,21 @@ void QMainWindow::setUnifiedTitleAndToolBarOnMac(bool set)
if (!isWindow() || d->useHIToolBar == set || QSysInfo::MacintoshVersion < QSysInfo::MV_10_3)
return;
- // ### Disable the unified toolbar when using anything but the native graphics system.
- // ### Disable when using alien widgets as well
- if (windowSurface() || testAttribute(Qt::WA_NativeWindow) == false)
+ // ### Disable when using alien widgets
+ if (testAttribute(Qt::WA_NativeWindow) == false) {
return;
+ }
d->useHIToolBar = set;
createWinId(); // We need the hiview for down below.
+#ifdef QT_MAC_USE_COCOA
+ // Activate the unified toolbar with the raster engine.
+ if (windowSurface()) {
+ d->layout->unifiedSurface = new QUnifiedToolbarSurface(this);
+ }
+#endif // QT_MAC_USE_COCOA
+
d->layout->updateHIToolBarStatus();
// Enabling the unified toolbar clears the opaque size grip setting, update it.
d->macUpdateOpaqueSizeGrip();
diff --git a/src/gui/widgets/qmainwindowlayout_mac.mm b/src/gui/widgets/qmainwindowlayout_mac.mm
index 1bfc746089..9e26423190 100644
--- a/src/gui/widgets/qmainwindowlayout_mac.mm
+++ b/src/gui/widgets/qmainwindowlayout_mac.mm
@@ -43,6 +43,7 @@
#include <qtoolbar.h>
#include <private/qtoolbarlayout_p.h>
#include <private/qt_cocoa_helpers_mac_p.h>
+#include <private/qtoolbar_p.h>
#ifndef QT_MAC_USE_COCOA
#include <Carbon/Carbon.h>
@@ -408,6 +409,7 @@ void QMainWindowLayout::insertIntoMacToolbar(QToolBar *before, QToolBar *toolbar
beforeIndex = qtoolbarsInUnifiedToolbarList.size();
int toolbarIndex = qtoolbarsInUnifiedToolbarList.indexOf(toolbar);
+
#ifndef QT_MAC_USE_COCOA
HIToolbarRef macToolbar = NULL;
if ((GetWindowToolbar(window, &macToolbar) == noErr) && !macToolbar) {
@@ -444,6 +446,18 @@ void QMainWindowLayout::insertIntoMacToolbar(QToolBar *before, QToolBar *toolbar
#endif
}
qtoolbarsInUnifiedToolbarList.insert(beforeIndex, toolbar);
+
+ // Adding to the unified toolbar surface for the raster engine.
+ if (layoutState.mainWindow->windowSurface()) {
+ QPoint offset(0, 0);
+ for (int i = 0; i < beforeIndex; ++i) {
+ offset.setX(offset.x() + qtoolbarsInUnifiedToolbarList.at(i)->size().width());
+ }
+#ifdef QT_MAC_USE_COCOA
+ unifiedSurface->insertToolbar(toolbar, offset);
+#endif // QT_MAC_USE_COCOA
+ }
+
#ifndef QT_MAC_USE_COCOA
QCFType<HIToolbarItemRef> outItem;
const QObject *stupidArray[] = { toolbar, this };
@@ -460,6 +474,19 @@ void QMainWindowLayout::insertIntoMacToolbar(QToolBar *before, QToolBar *toolbar
#endif
}
+#ifdef QT_MAC_USE_COCOA
+void QMainWindowLayout::updateUnifiedToolbarOffset()
+{
+ QPoint offset(0, 0);
+
+ for (int i = 1; i < qtoolbarsInUnifiedToolbarList.length(); ++i) {
+ offset.setX(offset.x() + qtoolbarsInUnifiedToolbarList.at(i - 1)->size().width());
+ qtoolbarsInUnifiedToolbarList.at(i)->d_func()->toolbar_offset = offset;
+ }
+}
+#endif // QT_MAC_USE_COCOA
+
+
void QMainWindowLayout::removeFromMacToolbar(QToolBar *toolbar)
{
QHash<void *, QToolBar *>::iterator it = unifiedToolbarHash.begin();
@@ -533,11 +560,11 @@ void QMainWindowLayout::fixSizeInUnifiedToolbar(QToolBar *tb) const
QMacCocoaAutoReleasePool pool;
QWidgetItem layoutItem(tb);
QSize size = layoutItem.maximumSize();
- NSSize nssize = NSMakeSize(size.width(), size.height() - 2);
+ NSSize nssize = NSMakeSize(size.width(), size.height());
[item setMaxSize:nssize];
size = layoutItem.minimumSize();
nssize.width = size.width();
- nssize.height = size.height() - 2;
+ nssize.height = size.height();
[item setMinSize:nssize];
}
#else
diff --git a/src/gui/widgets/qmainwindowlayout_p.h b/src/gui/widgets/qmainwindowlayout_p.h
index e1b981c1cd..661d49df2c 100644
--- a/src/gui/widgets/qmainwindowlayout_p.h
+++ b/src/gui/widgets/qmainwindowlayout_p.h
@@ -85,7 +85,11 @@ typedef HIObjectRef HIToolbarItemRef;
typedef const void * CFTypeRef;
typedef const struct __CFString * CFStringRef;
-#endif
+# ifdef QT_MAC_USE_COCOA
+#include <private/qunifiedtoolbarsurface_mac_p.h>
+# endif // QT_MAC_USE_COCOA
+
+#endif // Q_WS_MAC
QT_BEGIN_NAMESPACE
@@ -335,9 +339,16 @@ public:
void cleanUpMacToolbarItems();
void fixSizeInUnifiedToolbar(QToolBar *tb) const;
bool useHIToolBar;
+ bool activateUnifiedToolbarAfterFullScreen;
void syncUnifiedToolbarVisibility();
bool blockVisiblityCheck;
-#endif
+
+#ifdef QT_MAC_USE_COCOA
+ QUnifiedToolbarSurface *unifiedSurface;
+ void updateUnifiedToolbarOffset();
+#endif // QT_MAC_USE_COCOA
+
+#endif // Q_WS_MAC
};
QT_END_NAMESPACE
diff --git a/src/gui/widgets/qmenu.h b/src/gui/widgets/qmenu.h
index 7708e05f7a..77f3b1a63d 100644
--- a/src/gui/widgets/qmenu.h
+++ b/src/gui/widgets/qmenu.h
@@ -51,6 +51,10 @@
#include <QtGui/qpixmap.h>
#endif
+#ifdef Q_WS_WINCE
+#include <windef.h> // for HMENU
+#endif
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
diff --git a/src/gui/widgets/qmenubar.cpp b/src/gui/widgets/qmenubar.cpp
index df16f7f83a..ae56fa53f4 100644
--- a/src/gui/widgets/qmenubar.cpp
+++ b/src/gui/widgets/qmenubar.cpp
@@ -1628,10 +1628,10 @@ bool QMenuBar::eventFilter(QObject *object, QEvent *event)
}
/*!
- \internal
+ Returns the QAction at \a pt. Returns 0 if there is no action at \a pt or if
+the location has a separator.
- Return the item at \a pt, or 0 if there is no item there or if it is
- a separator item.
+ \sa addAction(), addSeparator()
*/
QAction *QMenuBar::actionAt(const QPoint &pt) const
{
@@ -1640,9 +1640,9 @@ QAction *QMenuBar::actionAt(const QPoint &pt) const
}
/*!
- \internal
+ Returns the geometry of action \a act as a QRect.
- Returns the geometry of action \a act.
+ \sa actionAt()
*/
QRect QMenuBar::actionGeometry(QAction *act) const
{
@@ -1836,10 +1836,17 @@ void QMenuBarPrivate::_q_updateLayout()
}
/*!
- \internal
+ \fn void QMenuBar::setCornerWidget(QWidget *widget, Qt::Corner corner)
- This sets widget \a w to be shown directly on the left of the first or
- the right of the last menu item, depending on \a corner.
+ This sets the given \a widget to be shown directly on the left of the first
+ menu item, or on the right of the last menu item, depending on \a corner.
+
+ The menu bar takes ownership of \a widget, reparenting it into the menu bar.
+ However, if the \a corner already contains a widget, this previous widget
+ will no longer be managed and will still be a visible child of the menu bar.
+
+ \note Using a corner other than Qt::TopRightCorner or Qt::TopLeftCorner
+ will result in a warning.
*/
void QMenuBar::setCornerWidget(QWidget *w, Qt::Corner corner)
{
@@ -1869,10 +1876,11 @@ void QMenuBar::setCornerWidget(QWidget *w, Qt::Corner corner)
}
/*!
- \internal
+ Returns the widget on the left of the first or on the right of the last menu
+ item, depending on \a corner.
- Returns the widget in the left of the first or the right of the last menu
- item, depending on \a corner.
+ \note Using a corner other than Qt::TopRightCorner or Qt::TopLeftCorner
+ will result in a warning.
*/
QWidget *QMenuBar::cornerWidget(Qt::Corner corner) const
{
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/gui/widgets/widgets.pri b/src/gui/widgets/widgets.pri
index 937b8d69ed..669b83830f 100644
--- a/src/gui/widgets/widgets.pri
+++ b/src/gui/widgets/widgets.pri
@@ -144,7 +144,7 @@ SOURCES += \
widgets/qplaintextedit.cpp \
widgets/qprintpreviewwidget.cpp
-!embedded:mac {
+!embedded:!qpa:mac {
HEADERS += widgets/qmacnativewidget_mac.h \
widgets/qmaccocoaviewcontainer_mac.h
OBJECTIVE_HEADERS += widgets/qcocoatoolbardelegate_mac_p.h \
diff --git a/src/imports/folderlistmodel/folderlistmodel.pro b/src/imports/folderlistmodel/folderlistmodel.pro
index b2e536093e..44764a91a2 100644
--- a/src/imports/folderlistmodel/folderlistmodel.pro
+++ b/src/imports/folderlistmodel/folderlistmodel.pro
@@ -15,10 +15,9 @@ 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
+ isEmpty(DESTDIR):importFiles.files = qmlfolderlistmodelplugin$${QT_LIBINFIX}.dll qmldir
+ else:importFiles.files = $$DESTDIR/qmlfolderlistmodelplugin$${QT_LIBINFIX}.dll qmldir
importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH
DEPLOYMENT = importFiles
diff --git a/src/imports/gestures/gestures.pro b/src/imports/gestures/gestures.pro
index 18ffcb9345..ad872bae3f 100644
--- a/src/imports/gestures/gestures.pro
+++ b/src/imports/gestures/gestures.pro
@@ -15,10 +15,9 @@ 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
+ isEmpty(DESTDIR):importFiles.files = qmlgesturesplugin$${QT_LIBINFIX}.dll qmldir
+ else:importFiles.files = $$DESTDIR/qmlgesturesplugin$${QT_LIBINFIX}.dll qmldir
importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH
DEPLOYMENT = importFiles
diff --git a/src/imports/particles/particles.pro b/src/imports/particles/particles.pro
index a3eb0d1c2a..90b50e4659 100644
--- a/src/imports/particles/particles.pro
+++ b/src/imports/particles/particles.pro
@@ -19,10 +19,9 @@ 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
+ isEmpty(DESTDIR):importFiles.files = qmlparticlesplugin$${QT_LIBINFIX}.dll qmldir
+ else:importFiles.files = $$DESTDIR/qmlparticlesplugin$${QT_LIBINFIX}.dll qmldir
importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH
DEPLOYMENT = importFiles
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/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 2ab28c7178..a1c7cf11d2 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
@@ -122,6 +124,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)
@@ -258,6 +296,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) {
@@ -283,8 +328,6 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
Q_ASSERT(socket);
Q_ASSERT(reply);
- Q_Q(QHttpNetworkConnection);
-
resend = false;
//create the response header to be used with QAuthenticatorPrivate.
QList<QPair<QByteArray, QByteArray> > fields = reply->header();
@@ -297,10 +340,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())
@@ -309,46 +352,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();
@@ -357,15 +387,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
@@ -381,8 +405,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));
@@ -390,8 +415,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));
@@ -726,6 +753,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) {
@@ -776,17 +807,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)
{
@@ -835,33 +855,12 @@ QHttpNetworkReply* QHttpNetworkConnection::sendRequest(const QHttpNetworkRequest
return d->queueRequest(request);
}
-void QHttpNetworkConnection::enableEncryption()
-{
- Q_D(QHttpNetworkConnection);
- d->encrypt = true;
-}
-
bool QHttpNetworkConnection::isEncrypted() const
{
Q_D(const QHttpNetworkConnection);
return d->encrypt;
}
-void QHttpNetworkConnection::setProxyAuthentication(QAuthenticator *authenticator)
-{
- 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;
-}
-
#ifndef QT_NO_NETWORKPROXY
void QHttpNetworkConnection::setCacheProxy(const QNetworkProxy &networkProxy)
{
@@ -954,8 +953,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..8461426c44 100644
--- a/src/network/access/qhttpnetworkconnection_p.h
+++ b/src/network/access/qhttpnetworkconnection_p.h
@@ -108,43 +108,22 @@ public:
QNetworkProxy transparentProxy() const;
#endif
- //enable encryption
- void enableEncryption();
bool isEncrypted() const;
- //authentication parameters
- void setProxyAuthentication(QAuthenticator *authenticator);
- void setAuthentication(const QString &domain, QAuthenticator *authenticator);
-
#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 +139,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 +172,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 +190,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 617602d10b..fe5946a6d7 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -69,8 +69,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
@@ -103,12 +103,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*)),
@@ -179,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
@@ -298,7 +309,6 @@ bool QHttpNetworkConnectionChannel::sendRequest()
break;
}
case QHttpNetworkConnectionChannel::ReadingState:
- case QHttpNetworkConnectionChannel::Wait4AuthState:
// ignore _q_bytesWritten in these states
// fall through
default:
@@ -407,7 +417,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.
@@ -785,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:
@@ -962,7 +973,6 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
{
if (!socket)
return;
- bool send2Reply = false;
QNetworkReply::NetworkError errorCode = QNetworkReply::UnknownNetworkError;
switch (socketError) {
@@ -980,7 +990,6 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
closeAndResendCurrentRequest();
return;
} else {
- send2Reply = true;
errorCode = QNetworkReply::RemoteHostClosedError;
}
} else {
@@ -993,7 +1002,6 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
closeAndResendCurrentRequest();
return;
}
- send2Reply = true;
errorCode = QNetworkReply::TimeoutError;
break;
case QAbstractSocket::ProxyAuthenticationRequiredError:
@@ -1009,18 +1017,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();
}
@@ -1051,7 +1055,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 4f3a65c3eb..07bb4a69ed 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;
bool ssl;
@@ -109,8 +108,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
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 1c55482875..3e98dccab8 100644
--- a/src/network/access/qhttpnetworkreply.cpp
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -225,6 +225,11 @@ bool QHttpNetworkReply::isPipeliningUsed() const
return d_func()->pipeliningUsed;
}
+QHttpNetworkConnection* QHttpNetworkReply::connection()
+{
+ return d_func()->connection;
+}
+
QHttpNetworkReplyPrivate::QHttpNetworkReplyPrivate(const QUrl &newUrl)
: QHttpNetworkHeaderPrivate(newUrl)
diff --git a/src/network/access/qhttpnetworkreply_p.h b/src/network/access/qhttpnetworkreply_p.h
index 02ce248cde..65d1887660 100644
--- a/src/network/access/qhttpnetworkreply_p.h
+++ b/src/network/access/qhttpnetworkreply_p.h
@@ -136,6 +136,8 @@ public:
bool isPipeliningUsed() const;
+ QHttpNetworkConnection* connection();
+
#ifndef QT_NO_OPENSSL
QSslConfiguration sslConfiguration() const;
void setSslConfiguration(const QSslConfiguration &config);
@@ -154,7 +156,11 @@ Q_SIGNALS:
// FIXME we need to change this to qint64!
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 c3d765b750..d4ecf43b74 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(),
@@ -340,7 +328,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 9f8a01f864..b9a832eaff 100644
--- a/src/network/access/qnetworkaccessbackend_p.h
+++ b/src/network/access/qnetworkaccessbackend_p.h
@@ -115,7 +115,6 @@ public:
virtual bool start();
#endif
virtual void closeDownstreamChannel() = 0;
- virtual bool waitForDownstreamReadyRead(int msecs) = 0;
// slot-like:
virtual void downstreamReadyWrite();
diff --git a/src/network/access/qnetworkaccesscachebackend.cpp b/src/network/access/qnetworkaccesscachebackend.cpp
index 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/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 710c258466..cf4ce7cde0 100644
--- a/src/network/access/qnetworkaccessfilebackend.cpp
+++ b/src/network/access/qnetworkaccessfilebackend.cpp
@@ -208,12 +208,6 @@ void QNetworkAccessFileBackend::closeDownstreamChannel()
}
}
-bool QNetworkAccessFileBackend::waitForDownstreamReadyRead(int)
-{
- Q_ASSERT(operation() == QNetworkAccessManager::GetOperation);
- return readMoreFromFile();
-}
-
void QNetworkAccessFileBackend::downstreamReadyWrite()
{
Q_ASSERT_X(operation() == QNetworkAccessManager::GetOperation, "QNetworkAccessFileBackend",
diff --git a/src/network/access/qnetworkaccessfilebackend_p.h b/src/network/access/qnetworkaccessfilebackend_p.h
index 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 da336d0349..1567d980d0 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 8b9a99f31c..3c41d85d75 100644
--- a/src/network/access/qnetworkaccesshttpbackend.cpp
+++ b/src/network/access/qnetworkaccesshttpbackend.cpp
@@ -71,7 +71,7 @@ static QByteArray makeCacheKey(QNetworkAccessHttpBackend *backend, QNetworkProxy
QUrl copy = backend->url();
bool isEncrypted = copy.scheme().toLower() == QLatin1String("https");
copy.setPort(copy.port(isEncrypted ? DefaultHttpsPort : DefaultHttpPort));
- result = copy.toEncoded(QUrl::RemovePassword | QUrl::RemovePath |
+ result = copy.toEncoded(QUrl::RemoveUserInfo | QUrl::RemovePath |
QUrl::RemoveQuery | QUrl::RemoveFragment);
#ifndef QT_NO_NETWORKPROXY
@@ -338,24 +338,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
@@ -367,10 +349,12 @@ void QNetworkAccessHttpBackend::validateCache(QHttpNetworkRequest &httpRequest,
QNetworkRequest::CacheLoadControl CacheLoadControlAttribute =
(QNetworkRequest::CacheLoadControl)request().attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt();
if (CacheLoadControlAttribute == QNetworkRequest::AlwaysNetwork) {
- // forced reload from the network
- // tell any caching proxy servers to reload too
- httpRequest.setHeaderField("Cache-Control", "no-cache");
- httpRequest.setHeaderField("Pragma", "no-cache");
+ // If the request does not already specify preferred cache-control
+ // force reload from the network and tell any caching proxy servers to reload too
+ if (!request().rawHeaderList().contains("Cache-Control")) {
+ httpRequest.setHeaderField("Cache-Control", "no-cache");
+ httpRequest.setHeaderField("Pragma", "no-cache");
+ }
return;
}
@@ -596,12 +580,22 @@ void QNetworkAccessHttpBackend::postRequest()
if (pendingIgnoreAllSslErrors)
httpReply->ignoreSslErrors();
httpReply->ignoreSslErrors(pendingIgnoreSslErrorsList);
+ connect(httpReply, SIGNAL(sslErrors(QList<QSslError>)),
+ SLOT(sslErrors(QList<QSslError>)));
#endif
connect(httpReply, SIGNAL(finished()), SLOT(replyFinished()));
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()
@@ -676,7 +670,6 @@ void QNetworkAccessHttpBackend::open()
cache->addEntry(cacheKey, http);
}
- setupConnection();
postRequest();
}
@@ -685,26 +678,6 @@ void QNetworkAccessHttpBackend::closeDownstreamChannel()
// this indicates that the user closed the stream while the reply isn't finished yet
}
-bool QNetworkAccessHttpBackend::waitForDownstreamReadyRead(int msecs)
-{
- Q_ASSERT(http);
-
- if (httpReply->bytesAvailable()) {
- readFromHttp();
- return true;
- }
-
- if (msecs == 0) {
- // no bytes available in the socket and no waiting
- return false;
- }
-
- // ### FIXME
- qCritical("QNetworkAccess: HTTP backend does not support waitForReadyRead()");
- return false;
-}
-
-
void QNetworkAccessHttpBackend::downstreamReadyWrite()
{
readFromHttp();
@@ -906,29 +879,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();
}
diff --git a/src/network/access/qnetworkaccesshttpbackend_p.h b/src/network/access/qnetworkaccesshttpbackend_p.h
index fb127817d5..fd3b2ec0bc 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);
@@ -126,7 +125,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 8c17916169..97e79288e0 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -53,6 +53,7 @@
#include "qnetworkaccessftpbackend_p.h"
#include "qnetworkaccessfilebackend_p.h"
#include "qnetworkaccessdebugpipebackend_p.h"
+#include "qnetworkaccesscachebackend_p.h"
#include "qnetworkreplydataimpl_p.h"
#include "qnetworkreplyfileimpl_p.h"
@@ -960,6 +961,26 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
return new QNetworkReplyDataImpl(this, req, op);
}
+ // A request with QNetworkRequest::AlwaysCache does not need any bearer management
+ QNetworkRequest::CacheLoadControl mode =
+ static_cast<QNetworkRequest::CacheLoadControl>(
+ req.attribute(QNetworkRequest::CacheLoadControlAttribute,
+ QNetworkRequest::PreferNetwork).toInt());
+ if (mode == QNetworkRequest::AlwaysCache
+ && (op == QNetworkAccessManager::GetOperation
+ || op == QNetworkAccessManager::HeadOperation)) {
+ // FIXME Implement a QNetworkReplyCacheImpl instead, see QTBUG-15106
+ QNetworkReplyImpl *reply = new QNetworkReplyImpl(this);
+ QNetworkReplyImplPrivate *priv = reply->d_func();
+ priv->manager = this;
+ priv->backend = new QNetworkAccessCacheBackend();
+ priv->backend->manager = this->d_func();
+ priv->backend->setParent(reply);
+ priv->backend->reply = priv;
+ priv->setup(op, req, outgoingData);
+ return reply;
+ }
+
#ifndef QT_NO_BEARERMANAGEMENT
// Return a disabled network reply if network access is disabled.
// Except if the scheme is empty or file://.
@@ -1014,16 +1035,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);
@@ -1105,7 +1118,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);
@@ -1117,7 +1132,7 @@ void QNetworkAccessManagerPrivate::authenticationRequired(QNetworkAccessBackend
backend->reply->urlForLastAuthentication = url;
emit q->authenticationRequired(backend->reply->q_func(), authenticator);
- addCredentials(url, authenticator);
+ cacheCredentials(url, authenticator);
}
#ifndef QT_NO_NETWORKPROXY
@@ -1134,7 +1149,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);
@@ -1144,10 +1159,10 @@ void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(QNetworkAccessBac
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);
@@ -1184,7 +1199,7 @@ void QNetworkAccessManagerPrivate::addCredentials(const QNetworkProxy &p,
}
QNetworkAuthenticationCredential *
-QNetworkAccessManagerPrivate::fetchCachedCredentials(const QNetworkProxy &p,
+QNetworkAccessManagerPrivate::fetchCachedProxyCredentials(const QNetworkProxy &p,
const QAuthenticator *authenticator)
{
QNetworkProxy proxy = p;
@@ -1236,7 +1251,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 4c4815cd65..010e904b17 100644
--- a/src/network/access/qnetworkreplyimpl.cpp
+++ b/src/network/access/qnetworkreplyimpl.cpp
@@ -64,10 +64,10 @@ inline QNetworkReplyImplPrivate::QNetworkReplyImplPrivate()
bytesDownloaded(0), lastBytesDownloaded(-1), bytesUploaded(-1), preMigrationDownloaded(-1),
httpStatusCode(0),
state(Idle)
- , downloadBuffer(0)
, downloadBufferReadPosition(0)
, downloadBufferCurrentSize(0)
, downloadBufferMaximumSize(0)
+ , downloadBuffer(0)
{
}
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index 09ec4c2dd6..647eecb38e 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/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/bearer/qnetworksession.cpp b/src/network/bearer/qnetworksession.cpp
index 65de5397a4..226c3c5e67 100644
--- a/src/network/bearer/qnetworksession.cpp
+++ b/src/network/bearer/qnetworksession.cpp
@@ -489,15 +489,15 @@ QString QNetworkSession::errorString() const
configuration resolved to when \l open() was called; otherwise an empty string.
The purpose of this key is to determine the real QNetworkConfiguration that the
- session is using. This key is different to \i ActiveConfiguration in that
+ session is using. This key is different from \e ActiveConfiguration in that
this key may return an identifier for either a
\l {QNetworkConfiguration::ServiceNetwork}{service network} or a
- \l {QNetworkConfiguration::InternetAccessPoint}{Internet access points} configurations
- whereas \i ActiveConfiguration always returns identifiers to
+ \l {QNetworkConfiguration::InternetAccessPoint}{Internet access points} configurations,
+ whereas \e ActiveConfiguration always returns identifiers to
\l {QNetworkConfiguration::InternetAccessPoint}{Internet access points} configurations.
\row
\o ConnectInBackground
- \o Setting this property to \i true before calling \l open() implies that the connection attempt
+ \o Setting this property to \e true before calling \l open() implies that the connection attempt
is made but if no connection can be established, the user is not connsulted and asked to select
a suitable connection. This property is not set by default and support for it depends on the platform.
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 66cdffb26e..c638e2a94b 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1210,6 +1210,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.h b/src/network/socket/qabstractsocket.h
index f610db363e..df09b9275e 100644
--- a/src/network/socket/qabstractsocket.h
+++ b/src/network/socket/qabstractsocket.h
@@ -64,6 +64,7 @@ class QAuthenticator;
class Q_NETWORK_EXPORT QAbstractSocket : public QIODevice
{
Q_OBJECT
+ Q_ENUMS(SocketType NetworkLayerProtocol SocketError SocketState SocketOption)
public:
enum SocketType {
TcpSocket,
diff --git a/src/network/socket/qabstractsocket_p.h b/src/network/socket/qabstractsocket_p.h
index 6c333d31ca..8ca83fc65e 100644
--- a/src/network/socket/qabstractsocket_p.h
+++ b/src/network/socket/qabstractsocket_p.h
@@ -155,6 +155,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/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp
index f952cee574..dbf443eece 100644
--- a/src/network/socket/qnativesocketengine_win.cpp
+++ b/src/network/socket/qnativesocketengine_win.cpp
@@ -714,6 +714,8 @@ bool QNativeSocketEnginePrivate::nativeBind(const QHostAddress &a, quint16 port)
address = QHostAddress(QHostAddress::Any);
}
break;
+ default:
+ break;
}
struct sockaddr_in sockAddrIPv4;
@@ -799,7 +801,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/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp
index f8f67bba98..1760b5363a 100644
--- a/src/network/ssl/qsslconfiguration.cpp
+++ b/src/network/ssl/qsslconfiguration.cpp
@@ -485,9 +485,10 @@ void QSslConfiguration::setCiphers(const QList<QSslCipher> &ciphers)
/*!
Returns this connection's CA certificate database. The CA certificate
database is used by the socket during the handshake phase to
- validate the peer's certificate. It can be moodified prior to the
- handshake with addCaCertificate(), addCaCertificates(), and
- setCaCertificates().
+ validate the peer's certificate. It can be modified prior to the
+ handshake with setCaCertificates(), or with \l{QSslSocket}'s
+ \l{QSslSocket::}{addCaCertificate()} and
+ \l{QSslSocket::}{addCaCertificates()}.
\sa setCaCertificates()
*/
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..70ef7ba84b 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,7 +651,7 @@ 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()
@@ -658,7 +662,17 @@ void CSymbianCertificateRetriever::ConstructL()
void CSymbianCertificateRetriever::DoCancel()
{
- // We never cancel the sequence
+ switch(iState) {
+ case Initializing:
+ iCertStore->CancelInitialize();
+ break;
+ case Listing:
+ iCertStore->CancelList();
+ break;
+ case RetrievingCertificates:
+ iCertStore->CancelGetCert();
+ break;
+ }
}
TInt CSymbianCertificateRetriever::RunError(TInt aError)
@@ -671,37 +685,51 @@ TInt CSymbianCertificateRetriever::RunError(TInt aError)
void CSymbianCertificateRetriever::GetCertificateL()
{
- CCTCertInfo* certInfo = iCertInfos[iCurrentCertIndex];
- iCertificateData.resize(certInfo->Size());
- TPtr8 des((TUint8*)iCertificateData.data(), 0, iCertificateData.size());
- iCertStore->Retrieve(*certInfo, des, iStatus);
- iState = RetrievingCertificates;
- SetActive();
+ if (iCurrentCertIndex < iCertInfos.Count()) {
+ CCTCertInfo* certInfo = iCertInfos[iCurrentCertIndex++];
+ iCertificateData = QByteArray();
+ QT_TRYCATCH_LEAVING(iCertificateData.resize(certInfo->Size()));
+ iCertificatePtr.Set((TUint8*)iCertificateData.data(), 0, iCertificateData.size());
+#ifdef QSSLSOCKET_DEBUG
+ qDebug() << "getting " << qt_TDesC2QString(certInfo->Label()) << " size=" << certInfo->Size();
+ qDebug() << "format=" << certInfo->CertificateFormat();
+ qDebug() << "ownertype=" << certInfo->CertificateOwnerType();
+ qDebug() << "type=" << hex << certInfo->Type().iUid;
+#endif
+ iCertStore->Retrieve(*certInfo, iCertificatePtr, iStatus);
+ iState = RetrievingCertificates;
+ SetActive();
+ } else {
+ //reached end of list
+ CActiveScheduler::Stop();
+ }
}
void CSymbianCertificateRetriever::RunL()
{
+#ifdef QSSLSOCKET_DEBUG
+ qDebug() << "CSymbianCertificateRetriever::RunL status " << iStatus.Int() << " count " << iCertInfos.Count() << " index " << iCurrentCertIndex;
+#endif
switch (iState) {
case Initializing:
+ User::LeaveIfError(iStatus.Int()); // initialise fail means pointless to continue
iState = Listing;
iCertStore->List(iCertInfos, *iCertFilter, iStatus);
SetActive();
break;
case Listing:
+ User::LeaveIfError(iStatus.Int()); // listing fail means pointless to continue
iCurrentCertIndex = 0;
GetCertificateL();
break;
case RetrievingCertificates:
- iCertificates->append(iCertificateData);
- iCertificateData = QByteArray();
- iCurrentCertIndex++;
- if (iCurrentCertIndex < iCertInfos.Count())
- GetCertificateL();
+ if (iStatus.Int() == KErrNone)
+ iCertificates->append(iCertificateData);
else
- // Stop the scheduler to return to the thread entry function
- CActiveScheduler::Stop();
+ qWarning() << "CSymbianCertificateRetriever: failed to retreive a certificate, error " << iStatus.Int();
+ GetCertificateL();
break;
}
}
@@ -710,6 +738,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 +832,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 +841,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 +909,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 +972,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 +1050,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 +1060,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 +1155,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 +1331,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 e5ababff32..fa11dd72e7 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.
@@ -455,7 +455,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 025731d0f8..85e4eabac5 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);
@@ -872,6 +872,35 @@ void QGL2PaintEngineExPrivate::fill(const QVectorPath& path)
// Tag it for later so that if the same path is drawn twice, it is assumed to be static and thus cachable
path.makeCacheable();
+ if (!device->format().stencil()) {
+ // If there is no stencil buffer, triangulate the path instead.
+
+ QRectF bbox = path.controlPointRect();
+ // If the path doesn't fit within these limits, it is possible that the triangulation will fail.
+ bool withinLimits = (bbox.left() > -0x8000 * inverseScale)
+ && (bbox.right() < 0x8000 * inverseScale)
+ && (bbox.top() > -0x8000 * inverseScale)
+ && (bbox.bottom() < 0x8000 * inverseScale);
+ if (withinLimits) {
+ QTriangleSet polys = qTriangulate(path, QTransform().scale(1 / inverseScale, 1 / inverseScale));
+
+ QVarLengthArray<float> vertices(polys.vertices.size());
+ for (int i = 0; i < polys.vertices.size(); ++i)
+ vertices[i] = float(inverseScale * polys.vertices.at(i));
+
+ prepareForDraw(currentBrush.isOpaque());
+ setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, vertices.constData());
+ if (QGLExtensions::glExtensions() & QGLExtensions::ElementIndexUint)
+ glDrawElements(GL_TRIANGLES, polys.indices.size(), GL_UNSIGNED_INT, polys.indices.data());
+ else
+ glDrawElements(GL_TRIANGLES, polys.indices.size(), GL_UNSIGNED_SHORT, polys.indices.data());
+ } else {
+ // We can't handle big, concave painter paths with OpenGL without stencil buffer.
+ qWarning("Painter path exceeds +/-32767 pixels.");
+ }
+ return;
+ }
+
// The path is too complicated & needs the stencil technique
vertexCoordinateArray.clear();
vertexCoordinateArray.addPath(path, inverseScale, false);
@@ -1350,8 +1379,8 @@ void QGL2PaintEngineEx::drawStaticTextItem(QStaticTextItem *textItem)
ensureActive();
- QFontEngineGlyphCache::Type glyphType = textItem->fontEngine->glyphFormat >= 0
- ? QFontEngineGlyphCache::Type(textItem->fontEngine->glyphFormat)
+ QFontEngineGlyphCache::Type glyphType = textItem->fontEngine()->glyphFormat >= 0
+ ? QFontEngineGlyphCache::Type(textItem->fontEngine()->glyphFormat)
: d->glyphCacheType;
if (glyphType == QFontEngineGlyphCache::Raster_RGBMask) {
if (d->device->alphaRequested() || state()->matrix.type() > QTransform::TxTranslate
@@ -1430,7 +1459,7 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem
{
QStaticTextItem staticTextItem;
staticTextItem.chars = const_cast<QChar *>(ti.chars);
- staticTextItem.fontEngine = ti.fontEngine;
+ staticTextItem.setFontEngine(ti.fontEngine);
staticTextItem.glyphs = glyphs.data();
staticTextItem.numChars = ti.num_chars;
staticTextItem.numGlyphs = glyphs.size();
@@ -1476,18 +1505,19 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
void *cacheKey = const_cast<QGLContext *>(QGLContextPrivate::contextGroup(ctx)->context());
QGLTextureGlyphCache *cache =
- (QGLTextureGlyphCache *) staticTextItem->fontEngine->glyphCache(cacheKey, glyphType, QTransform());
- if (!cache || cache->cacheType() != glyphType) {
+ (QGLTextureGlyphCache *) staticTextItem->fontEngine()->glyphCache(cacheKey, glyphType, QTransform());
+ if (!cache || cache->cacheType() != glyphType || cache->context() == 0) {
cache = new QGLTextureGlyphCache(ctx, glyphType, QTransform());
- staticTextItem->fontEngine->setGlyphCache(cacheKey, cache);
+ staticTextItem->fontEngine()->setGlyphCache(cacheKey, cache);
+ cache->insert(ctx, cache);
}
bool recreateVertexArrays = false;
if (staticTextItem->userDataNeedsUpdate)
recreateVertexArrays = true;
- else if (staticTextItem->userData == 0)
+ else if (staticTextItem->userData() == 0)
recreateVertexArrays = true;
- else if (staticTextItem->userData->type != QStaticTextUserData::OpenGLUserData)
+ else if (staticTextItem->userData()->type != QStaticTextUserData::OpenGLUserData)
recreateVertexArrays = true;
// We only need to update the cache with new glyphs if we are actually going to recreate the vertex arrays.
@@ -1495,8 +1525,8 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
// cache so this text is performed before we test if the cache size has changed.
if (recreateVertexArrays) {
cache->setPaintEnginePrivate(this);
- cache->populate(staticTextItem->fontEngine, staticTextItem->numGlyphs, staticTextItem->glyphs,
- staticTextItem->glyphPositions);
+ cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs,
+ staticTextItem->glyphs, staticTextItem->glyphPositions);
cache->fillInPendingGlyphs();
}
@@ -1517,14 +1547,14 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
if (staticTextItem->useBackendOptimizations) {
QOpenGLStaticTextUserData *userData = 0;
- if (staticTextItem->userData == 0
- || staticTextItem->userData->type != QStaticTextUserData::OpenGLUserData) {
+ if (staticTextItem->userData() == 0
+ || staticTextItem->userData()->type != QStaticTextUserData::OpenGLUserData) {
userData = new QOpenGLStaticTextUserData();
staticTextItem->setUserData(userData);
} else {
- userData = static_cast<QOpenGLStaticTextUserData*>(staticTextItem->userData);
+ userData = static_cast<QOpenGLStaticTextUserData*>(staticTextItem->userData());
}
// Use cache if backend optimizations is turned on
@@ -1543,7 +1573,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
vertexCoordinates->clear();
textureCoordinates->clear();
- bool supportsSubPixelPositions = staticTextItem->fontEngine->supportsSubPixelPositions();
+ bool supportsSubPixelPositions = staticTextItem->fontEngine()->supportsSubPixelPositions();
for (int i=0; i<staticTextItem->numGlyphs; ++i) {
QFixed subPixelPosition;
if (supportsSubPixelPositions)
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
index b8576cb18f..7954d77f37 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
@@ -54,11 +54,11 @@ extern Q_GUI_EXPORT bool qt_cleartype_enabled;
#endif
QGLTextureGlyphCache::QGLTextureGlyphCache(const QGLContext *context, QFontEngineGlyphCache::Type type, const QTransform &matrix)
- : QImageTextureGlyphCache(type, matrix)
+ : QImageTextureGlyphCache(type, matrix), QGLContextGroupResourceBase()
, ctx(context)
, pex(0)
- , m_filterMode(Nearest)
, m_blitProgram(0)
+ , m_filterMode(Nearest)
{
#ifdef QT_GL_TEXTURE_GLYPH_CACHE_DEBUG
qDebug(" -> QGLTextureGlyphCache() %p for context %p.", this, ctx);
@@ -208,8 +208,8 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height)
{
QString source;
- source.append(qglslMainWithTexCoordsVertexShader);
- source.append(qglslUntransformedPositionVertexShader);
+ source.append(QLatin1String(qglslMainWithTexCoordsVertexShader));
+ source.append(QLatin1String(qglslUntransformedPositionVertexShader));
QGLShader *vertexShader = new QGLShader(QGLShader::Vertex, m_blitProgram);
vertexShader->compileSourceCode(source);
@@ -219,8 +219,8 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height)
{
QString source;
- source.append(qglslMainFragmentShader);
- source.append(qglslImageSrcFragmentShader);
+ source.append(QLatin1String(qglslMainFragmentShader));
+ source.append(QLatin1String(qglslImageSrcFragmentShader));
QGLShader *fragmentShader = new QGLShader(QGLShader::Fragment, m_blitProgram);
fragmentShader->compileSourceCode(source);
@@ -238,10 +238,10 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height)
glVertexAttribPointer(QT_TEXTURE_COORDS_ATTR, 2, GL_FLOAT, GL_FALSE, 0, m_textureCoordinateArray);
m_blitProgram->bind();
- QGLContextPrivate* ctx_d = const_cast<QGLContextPrivate *>(ctx->d_func());
- ctx_d->setVertexAttribArrayEnabled(QT_VERTEX_COORDS_ATTR, true);
- ctx_d->setVertexAttribArrayEnabled(QT_TEXTURE_COORDS_ATTR, true);
- ctx_d->setVertexAttribArrayEnabled(QT_OPACITY_ATTR, false);
+ m_blitProgram->enableAttributeArray(int(QT_VERTEX_COORDS_ATTR));
+ m_blitProgram->enableAttributeArray(int(QT_TEXTURE_COORDS_ATTR));
+ m_blitProgram->disableAttributeArray(int(QT_OPACITY_ATTR));
+
blitProgram = m_blitProgram;
} else {
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
index f75cf683af..572da82ef1 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
@@ -98,7 +98,7 @@ struct QGLGlyphTexture
int m_height;
};
-class Q_OPENGL_EXPORT QGLTextureGlyphCache : public QImageTextureGlyphCache
+class Q_OPENGL_EXPORT QGLTextureGlyphCache : public QImageTextureGlyphCache, public QGLContextGroupResourceBase
{
public:
QGLTextureGlyphCache(const QGLContext *context, QFontEngineGlyphCache::Type type, const QTransform &matrix);
@@ -140,6 +140,8 @@ public:
FilterMode filterMode() const { return m_filterMode; }
void setFilterMode(FilterMode m) { m_filterMode = m; }
+ void freeResource(void *) { ctx = 0; }
+
private:
QGLContextGroupResource<QGLGlyphTexture> m_textureResource;
diff --git a/src/opengl/gl2paintengineex/qtriangulator.cpp b/src/opengl/gl2paintengineex/qtriangulator.cpp
index b839b00ec9..85f604a4bf 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
@@ -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/opengl.pro b/src/opengl/opengl.pro
index c7ca4bc7d6..682e6200a7 100644
--- a/src/opengl/opengl.pro
+++ b/src/opengl/opengl.pro
@@ -11,7 +11,7 @@ unix:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui
include(../qbase.pri)
-!win32:!embedded:!mac:!symbian:CONFIG += x11
+!win32:!embedded:!mac:!symbian:!qpa:CONFIG += x11
contains(QT_CONFIG, opengl):CONFIG += opengl
contains(QT_CONFIG, opengles1):CONFIG += opengles1
contains(QT_CONFIG, opengles2):CONFIG += opengles2
@@ -79,6 +79,11 @@ SOURCES += qgl.cpp \
}
+qpa {
+ SOURCES += qgl_qpa.cpp \
+ qglpixelbuffer_stub.cpp
+}
+
x11 {
contains(QT_CONFIG, egl) {
SOURCES += qgl_x11egl.cpp \
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index cb3149190f..cf45239958 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -93,12 +93,15 @@
#include "qlibrary.h"
#include <qmutex.h>
+#ifdef QT_OPENGL_ES
+#include <EGL/egl.h>
+#endif
// #define QT_GL_CONTEXT_RESOURCE_DEBUG
QT_BEGIN_NAMESPACE
-#if defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
+#if defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_SYMBIAN)
QGLExtensionFuncs QGLContextPrivate::qt_extensionFuncs;
#endif
@@ -133,7 +136,12 @@ Q_GLOBAL_STATIC(QGLDefaultOverlayFormat, defaultOverlayFormatInstance)
Q_GLOBAL_STATIC(QGLSignalProxy, theSignalProxy)
QGLSignalProxy *QGLSignalProxy::instance()
{
- return theSignalProxy();
+ QGLSignalProxy *proxy = theSignalProxy();
+ if (proxy && proxy->thread() != qApp->thread()) {
+ if (proxy->thread() == QThread::currentThread())
+ proxy->moveToThread(qApp->thread());
+ }
+ return proxy;
}
@@ -1406,6 +1414,10 @@ QGLFormat::OpenGLVersionFlags QGLFormat::openGLVersionFlags()
}
}
+#ifdef Q_WS_QPA
+ hasOpenGL(); // ### I have no idea why this is needed here, but it makes things work for testlite
+#endif
+
QString versionString(QLatin1String(reinterpret_cast<const char*>(glGetString(GL_VERSION))));
OpenGLVersionFlags versionFlags = qOpenGLVersionFlagsFromString(versionString);
if (currentCtx) {
@@ -1643,12 +1655,23 @@ const QGLContext *qt_gl_transfer_context(const QGLContext *ctx)
return 0;
}
+QGLContextPrivate::QGLContextPrivate(QGLContext *context)
+ : internal_context(false)
+ , q_ptr(context)
+{
+ group = new QGLContextGroup(context);
+ texture_destroyer = new QGLTextureDestroyer;
+ texture_destroyer->moveToThread(qApp->thread());
+}
+
QGLContextPrivate::~QGLContextPrivate()
{
if (!group->m_refs.deref()) {
Q_ASSERT(group->context() == q_ptr);
delete group;
}
+
+ delete texture_destroyer;
}
void QGLContextPrivate::init(QPaintDevice *dev, const QGLFormat &format)
@@ -1678,7 +1701,10 @@ void QGLContextPrivate::init(QPaintDevice *dev, const QGLFormat &format)
# endif
vi = 0;
#endif
-#ifndef QT_NO_EGL
+#if defined(Q_WS_QPA)
+ platformContext = 0;
+#endif
+#if !defined(QT_NO_EGL)
ownsEglContext = false;
eglContext = 0;
eglSurface = EGL_NO_SURFACE;
@@ -2118,7 +2144,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();
@@ -2268,7 +2294,7 @@ static void convertToGLFormatHelper(QImage &dst, const QImage &img, GLenum textu
}
}
-#if defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
+#if defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_SYMBIAN)
QGLExtensionFuncs& QGLContextPrivate::extensionFuncs(const QGLContext *)
{
return qt_extensionFuncs;
@@ -4189,7 +4215,7 @@ void QGLWidget::resizeOverlayGL(int, int)
/*! \fn bool QGLWidget::event(QEvent *e)
\reimp
*/
-#if !defined(Q_OS_WINCE) && !defined(Q_WS_QWS)
+#if !defined(Q_OS_WINCE) && !defined(Q_WS_QWS) && !defined(Q_WS_QPA)
bool QGLWidget::event(QEvent *e)
{
Q_D(QGLWidget);
@@ -5325,8 +5351,6 @@ QGLExtensions::Extensions QGLExtensions::currentContextExtensions()
glExtensions |= FragmentShader;
if (extensions.match("GL_ARB_shader_objects"))
glExtensions |= FragmentShader;
- if (extensions.match("GL_ARB_ES2_compatibility"))
- glExtensions |= ES2Compatibility;
if (extensions.match("GL_ARB_texture_mirrored_repeat"))
glExtensions |= MirroredRepeat;
if (extensions.match("GL_EXT_framebuffer_object"))
@@ -5347,7 +5371,6 @@ QGLExtensions::Extensions QGLExtensions::currentContextExtensions()
glExtensions |= FramebufferObject;
glExtensions |= GenerateMipmap;
glExtensions |= FragmentShader;
- glExtensions |= ES2Compatibility;
#endif
#if defined(QT_OPENGL_ES_1)
if (extensions.match("GL_OES_framebuffer_object"))
@@ -5356,6 +5379,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.
@@ -5432,7 +5461,7 @@ void QGLWidgetPrivate::initContext(QGLContext *context, const QGLWidget* shareWi
glcx = new QGLContext(QGLFormat::defaultFormat(), q);
}
-#if defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_QWS)
+#if defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_QWS) || defined(Q_WS_QPA)
Q_GLOBAL_STATIC(QString, qt_gl_lib_name)
Q_OPENGL_EXPORT void qt_set_gl_library_name(const QString& name)
diff --git a/src/opengl/qgl.h b/src/opengl/qgl.h
index 2ac4cb6b9a..4f10e5c53a 100644
--- a/src/opengl/qgl.h
+++ b/src/opengl/qgl.h
@@ -425,6 +425,7 @@ private:
friend class QGLSharedResourceGuard;
friend class QGLPixmapBlurFilter;
friend class QGLExtensions;
+ friend class QGLTexture;
friend QGLFormat::OpenGLVersionFlags QGLFormat::openGLVersionFlags();
#ifdef Q_WS_MAC
public:
diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp
index 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 78f888ab27..8285f06379 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -68,6 +68,10 @@
#include <QtGui/private/qegl_p.h>
#endif
+#if defined(Q_WS_QPA)
+#include <QtGui/QPlatformGLContext>
+#endif
+
QT_BEGIN_NAMESPACE
class QGLContext;
@@ -161,7 +165,7 @@ class QGLWidgetPrivate : public QWidgetPrivate
public:
QGLWidgetPrivate() : QWidgetPrivate()
, disable_clear_on_painter_begin(false)
-#ifdef Q_WS_QWS
+#if defined(Q_WS_QWS)
, wsurf(0)
#endif
#if defined(Q_WS_X11) && !defined(QT_NO_EGL)
@@ -283,7 +287,8 @@ public:
ETC1TextureCompression = 0x00010000,
PVRTCTextureCompression = 0x00020000,
FragmentShader = 0x00040000,
- ES2Compatibility = 0x00080000
+ ElementIndexUint = 0x00080000,
+ Depth24 = 0x00100000
};
Q_DECLARE_FLAGS(Extensions, Extension)
@@ -314,6 +319,7 @@ private:
};
class QGLTexture;
+class QGLTextureDestroyer;
// This probably needs to grow to GL_MAX_VERTEX_ATTRIBS, but 3 is ok for now as that's
// all the GL2 engine uses:
@@ -325,7 +331,7 @@ class QGLContextPrivate
{
Q_DECLARE_PUBLIC(QGLContext)
public:
- explicit QGLContextPrivate(QGLContext *context) : internal_context(false), q_ptr(context) {group = new QGLContextGroup(context);}
+ explicit QGLContextPrivate(QGLContext *context);
~QGLContextPrivate();
QGLTexture *bindTexture(const QImage &image, GLenum target, GLint format,
QGLContext::BindOptions options);
@@ -342,7 +348,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();
@@ -359,11 +365,14 @@ public:
Qt::HANDLE threadId;
#endif
#ifndef QT_NO_EGL
- uint ownsEglContext : 1;
QEglContext *eglContext;
EGLSurface eglSurface;
void destroyEglSurfaceForDevice();
EGLSurface eglSurfaceForDevice() const;
+#endif
+
+#if defined(Q_WS_QPA)
+ QPlatformGLContext *platformContext;
#elif defined(Q_WS_X11) || defined(Q_WS_MAC)
void* cx;
#endif
@@ -405,6 +414,10 @@ public:
uint workaround_brokenTextureFromPixmap : 1;
uint workaround_brokenTextureFromPixmap_init : 1;
+#ifndef QT_NO_EGL
+ uint ownsEglContext : 1;
+#endif
+
QPaintDevice *paintDevice;
QColor transpColor;
QGLContext *q_ptr;
@@ -418,6 +431,7 @@ public:
GLuint default_fbo;
QPaintEngine *active_engine;
QHash<QGLContextResourceBase *, void *> m_resources;
+ QGLTextureDestroyer *texture_destroyer;
bool vertexAttributeArraysEnabledState[QT_GL_VERTEX_ARRAY_TRACKED_COUNT];
@@ -427,7 +441,7 @@ public:
static inline QGLExtensionFuncs& extensionFuncs(const QGLContext *ctx) { return ctx->d_ptr->group->extensionFuncs(); }
#endif
-#if defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN)
+#if defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_QWS) || defined(Q_WS_QPA) || defined(Q_OS_SYMBIAN)
static Q_OPENGL_EXPORT QGLExtensionFuncs qt_extensionFuncs;
static Q_OPENGL_EXPORT QGLExtensionFuncs& extensionFuncs(const QGLContext *);
#endif
@@ -435,20 +449,6 @@ public:
static void setCurrentContext(QGLContext *context);
};
-// ### make QGLContext a QObject in 5.0 and remove the proxy stuff
-class Q_OPENGL_EXPORT QGLSignalProxy : public QObject
-{
- Q_OBJECT
-public:
- QGLSignalProxy() : QObject() {}
- void emitAboutToDestroyContext(const QGLContext *context) {
- emit aboutToDestroyContext(context);
- }
- static QGLSignalProxy *instance();
-Q_SIGNALS:
- void aboutToDestroyContext(const QGLContext *context);
-};
-
Q_DECLARE_OPERATORS_FOR_FLAGS(QGLExtensions::Extensions)
// Temporarily make a context current if not already current or
@@ -491,6 +491,56 @@ private:
QGLContext *m_ctx;
};
+class QGLTextureDestroyer : public QObject
+{
+ Q_OBJECT
+public:
+ QGLTextureDestroyer() : QObject() {
+ qRegisterMetaType<GLuint>("GLuint");
+ connect(this, SIGNAL(freeTexture(QGLContext *, QPixmapData *, GLuint)),
+ this, SLOT(freeTexture_slot(QGLContext *, QPixmapData *, GLuint)));
+ }
+ void emitFreeTexture(QGLContext *context, QPixmapData *boundPixmap, GLuint id) {
+ emit freeTexture(context, boundPixmap, id);
+ }
+
+Q_SIGNALS:
+ void freeTexture(QGLContext *context, QPixmapData *boundPixmap, GLuint id);
+
+private slots:
+ void freeTexture_slot(QGLContext *context, QPixmapData *boundPixmap, GLuint id) {
+#if defined(Q_WS_X11)
+ if (boundPixmap) {
+ QGLContext *oldContext = const_cast<QGLContext *>(QGLContext::currentContext());
+ context->makeCurrent();
+ // Although glXReleaseTexImage is a glX call, it must be called while there
+ // is a current context - the context the pixmap was bound to a texture in.
+ // Otherwise the release doesn't do anything and you get BadDrawable errors
+ // when you come to delete the context.
+ QGLContextPrivate::unbindPixmapFromTexture(boundPixmap);
+ glDeleteTextures(1, &id);
+ oldContext->makeCurrent();
+ return;
+ }
+#endif
+ QGLShareContextScope scope(context);
+ glDeleteTextures(1, &id);
+ }
+};
+
+// ### make QGLContext a QObject in 5.0 and remove the proxy stuff
+class Q_OPENGL_EXPORT QGLSignalProxy : public QObject
+{
+ Q_OBJECT
+public:
+ void emitAboutToDestroyContext(const QGLContext *context) {
+ emit aboutToDestroyContext(context);
+ }
+ static QGLSignalProxy *instance();
+Q_SIGNALS:
+ void aboutToDestroyContext(const QGLContext *context);
+};
+
class QGLTexture {
public:
QGLTexture(QGLContext *ctx = 0, GLuint tx_id = 0, GLenum tx_target = GL_TEXTURE_2D,
@@ -507,16 +557,10 @@ public:
~QGLTexture() {
if (options & QGLContext::MemoryManagedBindOption) {
Q_ASSERT(context);
- QGLShareContextScope scope(context);
-#if defined(Q_WS_X11)
- // Although glXReleaseTexImage is a glX call, it must be called while there
- // is a current context - the context the pixmap was bound to a texture in.
- // Otherwise the release doesn't do anything and you get BadDrawable errors
- // when you come to delete the context.
- if (boundPixmap)
- QGLContextPrivate::unbindPixmapFromTexture(boundPixmap);
+#if !defined(Q_WS_X11)
+ QPixmapData *boundPixmap = 0;
#endif
- glDeleteTextures(1, &id);
+ context->d_ptr->texture_destroyer->emitFreeTexture(context, boundPixmap, id);
}
}
diff --git a/src/opengl/qgl_qpa.cpp b/src/opengl/qgl_qpa.cpp
new file mode 100644
index 0000000000..49c08609a9
--- /dev/null
+++ b/src/opengl/qgl_qpa.cpp
@@ -0,0 +1,345 @@
+/****************************************************************************
+**
+** 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 QtOpenGL 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 <QtGui/private/qapplication_p.h>
+#include <QPixmap>
+#include <QDebug>
+
+#include <QtGui/private/qapplication_p.h>
+#include <QtGui/QPlatformWindow>
+
+#include "qgl.h"
+#include "qgl_p.h"
+
+QT_BEGIN_NAMESPACE
+
+static QGLFormat qt_platformwindowformat_to_glformat(const QPlatformWindowFormat &format)
+{
+ QGLFormat retFormat;
+ retFormat.setAccum(format.accum());
+ if (format.accumBufferSize() >= 0)
+ retFormat.setAccumBufferSize(format.accumBufferSize());
+ retFormat.setAlpha(format.alpha());
+ if (format.alphaBufferSize() >= 0)
+ retFormat.setAlphaBufferSize(format.alphaBufferSize());
+ if (format.blueBufferSize() >= 0)
+ retFormat.setBlueBufferSize(format.blueBufferSize());
+ retFormat.setDepth(format.depth());
+ if (format.depthBufferSize() >= 0)
+ retFormat.setDepthBufferSize(format.depthBufferSize());
+ retFormat.setDirectRendering(format.directRendering());
+ retFormat.setDoubleBuffer(format.doubleBuffer());
+ if (format.greenBufferSize() >= 0)
+ retFormat.setGreenBufferSize(format.greenBufferSize());
+ if (format.redBufferSize() >= 0)
+ retFormat.setRedBufferSize(format.redBufferSize());
+ retFormat.setRgba(format.rgba());
+ retFormat.setSampleBuffers(format.sampleBuffers());
+ retFormat.setSamples(format.sampleBuffers());
+ retFormat.setStencil(format.stencil());
+ if (format.stencilBufferSize() >= 0)
+ retFormat.setStencilBufferSize(format.stencilBufferSize());
+ retFormat.setStereo(format.stereo());
+ retFormat.setSwapInterval(format.swapInterval());
+ return retFormat;
+}
+
+static QPlatformWindowFormat qt_glformat_to_platformwindowformat(const QGLFormat &format)
+{
+ QPlatformWindowFormat retFormat;
+ retFormat.setAccum(format.accum());
+ if (format.accumBufferSize() >= 0)
+ retFormat.setAccumBufferSize(format.accumBufferSize());
+ retFormat.setAlpha(format.alpha());
+ if (format.alphaBufferSize() >= 0)
+ retFormat.setAlphaBufferSize(format.alphaBufferSize());
+ if (format.blueBufferSize() >= 0)
+ retFormat.setBlueBufferSize(format.blueBufferSize());
+ retFormat.setDepth(format.depth());
+ if (format.depthBufferSize() >= 0)
+ retFormat.setDepthBufferSize(format.depthBufferSize());
+ retFormat.setDirectRendering(format.directRendering());
+ retFormat.setDoubleBuffer(format.doubleBuffer());
+ if (format.greenBufferSize() >= 0)
+ retFormat.setGreenBufferSize(format.greenBufferSize());
+ if (format.redBufferSize() >= 0)
+ retFormat.setRedBufferSize(format.redBufferSize());
+ retFormat.setRgba(format.rgba());
+ retFormat.setSampleBuffers(format.sampleBuffers());
+ if (format.samples() >= 0)
+ retFormat.setSamples(format.samples());
+ retFormat.setStencil(format.stencil());
+ if (format.stencilBufferSize() >= 0)
+ retFormat.setStencilBufferSize(format.stencilBufferSize());
+ retFormat.setStereo(format.stereo());
+ retFormat.setSwapInterval(format.swapInterval());
+ return retFormat;
+}
+
+bool QGLFormat::hasOpenGL()
+{
+ return QApplicationPrivate::platformIntegration()->hasOpenGL();
+}
+
+bool QGLContext::chooseContext(const QGLContext* shareContext)
+{
+ Q_D(QGLContext);
+ if (!d->paintDevice || d->paintDevice->devType() != QInternal::Widget) {
+ d->valid = false;
+ }else {
+ QWidget *widget = static_cast<QWidget *>(d->paintDevice);
+ if (!widget->platformWindow()){
+ QGLFormat glformat = format();
+ QPlatformWindowFormat winFormat = qt_glformat_to_platformwindowformat(glformat);
+ if (shareContext) {
+ winFormat.setSharedContext(shareContext->d_func()->platformContext);
+ }
+ winFormat.setWindowApi(QPlatformWindowFormat::OpenGL);
+ widget->setPlatformWindowFormat(winFormat);
+ widget->winId();//make window
+ }
+ d->platformContext = widget->platformWindow()->glContext();
+ Q_ASSERT(d->platformContext);
+ d->glFormat = qt_platformwindowformat_to_glformat(d->platformContext->platformWindowFormat());
+ d->valid =(bool) d->platformContext;
+ }
+
+ return d->valid;
+}
+
+void QGLContext::reset()
+{
+ Q_D(QGLContext);
+ if (!d->valid)
+ return;
+ d->cleanup();
+
+ d->crWin = false;
+ d->sharing = false;
+ d->valid = false;
+ d->transpColor = QColor();
+ d->initDone = false;
+ QGLContextGroup::removeShare(this);
+}
+
+void QGLContext::makeCurrent()
+{
+ Q_D(QGLContext);
+ d->platformContext->makeCurrent();
+ QGLContextPrivate::setCurrentContext(this);
+}
+
+void QGLContext::doneCurrent()
+{
+ Q_D(QGLContext);
+ d->platformContext->doneCurrent();
+ QGLContextPrivate::setCurrentContext(0);
+}
+
+void QGLContext::swapBuffers() const
+{
+ Q_D(const QGLContext);
+ d->platformContext->swapBuffers();
+}
+
+void *QGLContext::getProcAddress(const QString &procName) const
+{
+ Q_D(const QGLContext);
+ return d->platformContext->getProcAddress(procName);
+}
+
+void QGLWidget::setContext(QGLContext *context,
+ const QGLContext* shareContext,
+ bool deleteOldContext)
+{
+ Q_D(QGLWidget);
+ if (context == 0) {
+ qWarning("QGLWidget::setContext: Cannot set null context");
+ return;
+ }
+ if (!context->deviceIsPixmap() && context->device() != this) {
+ qWarning("QGLWidget::setContext: Context must refer to this widget");
+ return;
+ }
+
+ QGLContext* oldcx = d->glcx;
+ d->glcx = context;
+
+ if (!d->glcx->isValid())
+ d->glcx->create(shareContext ? shareContext : oldcx);
+
+ if (deleteOldContext)
+ delete oldcx;
+}
+
+void QGLWidgetPrivate::init(QGLContext *context, const QGLWidget *shareWidget)
+{
+ initContext(context, shareWidget);
+}
+
+bool QGLFormat::hasOpenGLOverlays()
+{
+ return false;
+}
+
+QColor QGLContext::overlayTransparentColor() const
+{
+ return QColor(); // Invalid color
+}
+
+uint QGLContext::colorIndex(const QColor&) const
+{
+ return 0;
+}
+
+void QGLContext::generateFontDisplayLists(const QFont & fnt, int listBase)
+{
+ Q_UNUSED(fnt);
+ Q_UNUSED(listBase);
+}
+
+/*
+ QGLTemporaryContext implementation
+*/
+class QGLTemporaryContextPrivate
+{
+public:
+ QWidget *widget;
+ QGLContext *context;
+};
+
+QGLTemporaryContext::QGLTemporaryContext(bool, QWidget *)
+ : d(new QGLTemporaryContextPrivate)
+{
+ d->context = const_cast<QGLContext *>(QGLContext::currentContext());
+ if (d->context)
+ d->context->doneCurrent();
+ d->widget = new QWidget;
+ d->widget->setGeometry(0,0,3,3);
+ QPlatformWindowFormat format = d->widget->platformWindowFormat();
+ format.setWindowApi(QPlatformWindowFormat::OpenGL);
+ d->widget->winId();
+
+
+ d->widget->platformWindow()->glContext()->makeCurrent();
+}
+
+QGLTemporaryContext::~QGLTemporaryContext()
+{
+ d->widget->platformWindow()->glContext()->doneCurrent();
+ if (d->context)
+ d->context->makeCurrent();
+ delete d->widget;
+}
+
+
+bool QGLWidgetPrivate::renderCxPm(QPixmap*)
+{
+ return false;
+}
+
+/*! \internal
+ Free up any allocated colormaps. This fn is only called for
+ top-level widgets.
+*/
+void QGLWidgetPrivate::cleanupColormaps()
+{
+}
+
+void QGLWidget::setMouseTracking(bool enable)
+{
+ Q_UNUSED(enable);
+}
+
+bool QGLWidget::event(QEvent *e)
+{
+ Q_D(QGLWidget);
+ if (e->type() == QEvent::WinIdChange) {
+ if (d->glcx->isValid()) {
+ if (QGLContext::currentContext() == d->glcx)
+ QGLContextPrivate::setCurrentContext(0); //Its not valid anymore
+ setContext(new QGLContext(d->glcx->requestedFormat(), this));
+
+ }
+ }
+ return QWidget::event(e);
+}
+
+void QGLWidget::resizeEvent(QResizeEvent *e)
+{
+ Q_D(QGLWidget);
+ if (!isValid())
+ return;
+ makeCurrent();
+ if (!d->glcx->initialized())
+ glInit();
+ resizeGL(width(), height());
+ return QWidget::resizeEvent(e);
+}
+
+
+const QGLContext* QGLWidget::overlayContext() const
+{
+ return 0;
+}
+
+void QGLWidget::makeOverlayCurrent()
+{
+}
+
+
+void QGLWidget::updateOverlayGL()
+{
+}
+
+const QGLColormap & QGLWidget::colormap() const
+{
+ Q_D(const QGLWidget);
+ return d->cmap;
+}
+
+void QGLWidget::setColormap(const QGLColormap & c)
+{
+ Q_UNUSED(c);
+}
+
+QT_END_NAMESPACE
diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp
index 1f7e60a3a9..21b1ab6dba 100644
--- a/src/opengl/qgl_x11egl.cpp
+++ b/src/opengl/qgl_x11egl.cpp
@@ -376,7 +376,7 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmap *pixmap, cons
checkedForEglImageTFP = true;
// We need to be able to create an EGLImage from a native pixmap, which was split
- // into a seperate EGL extension, EGL_KHR_image_pixmap. It is possible to have
+ // into a separate EGL extension, EGL_KHR_image_pixmap. It is possible to have
// eglCreateImageKHR & eglDestroyImageKHR without support for pixmaps, so we must
// check we have the EGLImage from pixmap functionality.
if (QEgl::hasExtension("EGL_KHR_image") || QEgl::hasExtension("EGL_KHR_image_pixmap")) {
diff --git a/src/opengl/qglextensions_p.h b/src/opengl/qglextensions_p.h
index bf1dbbcf4e..ffbc472fcd 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 Q_OPENGL_EXPORT qt_resolve_buffer_extensions(QGLContext *ctx);
diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp
index 5d78ac0e37..8915b5e4af 100644
--- a/src/opengl/qglframebufferobject.cpp
+++ b/src/opengl/qglframebufferobject.cpp
@@ -324,6 +324,10 @@ void QGLFBOGLPaintDevice::setFBO(QGLFramebufferObject* f,
fboFormat.setStencil(true);
} else if (attachment == QGLFramebufferObject::Depth) {
fboFormat.setDepth(true);
+ fboFormat.setStencil(false);
+ } else {
+ fboFormat.setDepth(false);
+ fboFormat.setStencil(false);
}
GLenum format = f->format().internalTextureFormat();
@@ -508,17 +512,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
@@ -1169,8 +1182,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 2ec345da57..261d567500 100644
--- a/src/opengl/qglpixelbuffer.cpp
+++ b/src/opengl/qglpixelbuffer.cpp
@@ -424,8 +424,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_p.h b/src/opengl/qglpixelbuffer_p.h
index 2a1f671aea..69678d0d41 100644
--- a/src/opengl/qglpixelbuffer_p.h
+++ b/src/opengl/qglpixelbuffer_p.h
@@ -197,6 +197,10 @@ public:
EGLSurface pbuf;
QEglContext *ctx;
int textureFormat;
+#elif defined(Q_WS_QPA)
+ //stubs
+ void *pbuf;
+ void *ctx;
#endif
};
diff --git a/src/opengl/qglpixelbuffer_stub.cpp b/src/opengl/qglpixelbuffer_stub.cpp
new file mode 100644
index 0000000000..2caef6ba55
--- /dev/null
+++ b/src/opengl/qglpixelbuffer_stub.cpp
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** 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 QtOpenGL 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 <qdebug.h>
+#include "qglpixelbuffer.h"
+#include "qglpixelbuffer_p.h"
+
+#include <qimage.h>
+#include <private/qgl_p.h>
+
+QT_BEGIN_NAMESPACE
+
+bool QGLPixelBufferPrivate::init(const QSize &size, const QGLFormat &f, QGLWidget *shareWidget)
+{
+ Q_UNUSED(size);
+ Q_UNUSED(f);
+ Q_UNUSED(shareWidget);
+ return false;
+}
+
+bool QGLPixelBufferPrivate::cleanup()
+{
+ return false;
+}
+
+bool QGLPixelBuffer::bindToDynamicTexture(GLuint texture_id)
+{
+ Q_UNUSED(texture_id);
+ return false;
+}
+
+void QGLPixelBuffer::releaseFromDynamicTexture()
+{
+}
+
+GLuint QGLPixelBuffer::generateDynamicTexture() const
+{
+ return 0;
+}
+
+bool QGLPixelBuffer::hasOpenGLPbuffers()
+{
+ return false;
+}
+
+QT_END_NAMESPACE
diff --git a/src/opengl/qglpixmapfilter.cpp b/src/opengl/qglpixmapfilter.cpp
index 68586c141c..73d698c33d 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
{
@@ -425,7 +425,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/qglshaderprogram.cpp b/src/opengl/qglshaderprogram.cpp
index bc1c0090df..74382b00f2 100644
--- a/src/opengl/qglshaderprogram.cpp
+++ b/src/opengl/qglshaderprogram.cpp
@@ -97,10 +97,6 @@ QT_BEGIN_NAMESPACE
to just features that are present in GLSL/ES, and avoid
standard variable names that only work on the desktop.
- If the \c{GL_ARB_ES2_compatibility} extension is present,
- then the above prefix is not added because the desktop OpenGL
- implementation supports precision qualifiers.
-
\section1 Simple shader example
\snippet doc/src/snippets/code/src_opengl_qglshaderprogram.cpp 1
@@ -398,10 +394,8 @@ bool QGLShader::compileSourceCode(const char *source)
srclen.append(GLint(headerLen));
}
#ifdef QGL_DEFINE_QUALIFIERS
- if (!(QGLExtensions::glExtensions() & QGLExtensions::ES2Compatibility)) {
- src.append(qualifierDefines);
- srclen.append(GLint(sizeof(qualifierDefines) - 1));
- }
+ src.append(qualifierDefines);
+ srclen.append(GLint(sizeof(qualifierDefines) - 1));
#endif
#ifdef QGL_REDEFINE_HIGHP
if (d->shaderType == Fragment) {
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..47f36dd5b9 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;
@@ -312,10 +314,11 @@ QPaintEngine *QGLWindowSurfaceGLPaintDevice::paintEngine() const
QGLWindowSurface::QGLWindowSurface(QWidget *window)
: QWindowSurface(window), d_ptr(new QGLWindowSurfacePrivate)
{
- Q_ASSERT(window->isTopLevel());
+// Q_ASSERT(window->isTopLevel());
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;
@@ -355,12 +358,12 @@ void QGLWindowSurface::deleted(QObject *object)
QWidgetPrivate *widgetPrivate = widget->d_func();
if (widgetPrivate->extraData()) {
- union { QGLContext **ctxPtr; void **voidPtr; };
- voidPtr = &widgetPrivate->extraData()->glContext;
- int index = d_ptr->contexts.indexOf(ctxPtr);
+ union { QGLContext **ctxPtrPtr; void **voidPtrPtr; };
+ voidPtrPtr = &widgetPrivate->extraData()->glContext;
+ int index = d_ptr->contexts.indexOf(ctxPtrPtr);
if (index != -1) {
- delete *ctxPtr;
- *ctxPtr = 0;
+ delete *ctxPtrPtr;
+ *ctxPtrPtr = 0;
d_ptr->contexts.removeAt(index);
}
}
@@ -394,16 +397,18 @@ void QGLWindowSurface::hijackWindow(QWidget *widget)
setPartialUpdateSupport(false); // Force full-screen updates
else
setPartialUpdateSupport(true);
+#else
+ setPartialUpdateSupport(false);
#endif
widgetPrivate->extraData()->glContext = ctx;
- union { QGLContext **ctxPtr; void **voidPtr; };
+ union { QGLContext **ctxPtrPtr; void **voidPtrPtr; };
connect(widget, SIGNAL(destroyed(QObject*)), this, SLOT(deleted(QObject*)));
- voidPtr = &widgetPrivate->extraData()->glContext;
- d_ptr->contexts << ctxPtr;
+ voidPtrPtr = &widgetPrivate->extraData()->glContext;
+ d_ptr->contexts << ctxPtrPtr;
qDebug() << "hijackWindow() context created for" << widget << d_ptr->contexts.size();
}
@@ -433,7 +438,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 +462,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.
@@ -473,8 +507,13 @@ void QGLWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint &
QWidget *parent = widget->internalWinId() ? widget : widget->nativeParentWidget();
Q_ASSERT(parent);
+#if !defined(Q_WS_QPA)
if (!geometry().isValid())
return;
+#else
+ if (!size().isValid())
+ return;
+#endif
// Needed to support native child-widgets...
hijackWindow(parent);
@@ -534,12 +573,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 +721,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
@@ -707,20 +735,31 @@ void QGLWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint &
}
+#if !defined(Q_WS_QPA)
void QGLWindowSurface::setGeometry(const QRect &rect)
{
QWindowSurface::setGeometry(rect);
d_ptr->geometry_updated = true;
}
-
+#else
+void QGLWindowSurface::resize(const QSize &size)
+{
+ QWindowSurface::resize(size);
+ d_ptr->geometry_updated = true;
+}
+#endif
void QGLWindowSurface::updateGeometry() {
if (!d_ptr->geometry_updated)
return;
d_ptr->geometry_updated = false;
+#ifdef Q_WS_QPA
+ QSize surfSize = size();
+#else
+ QSize surfSize = geometry().size();
+#endif
- QRect rect = geometry();
hijackWindow(window());
QGLContext *ctx = reinterpret_cast<QGLContext *>(window()->d_func()->extraData()->glContext);
@@ -730,21 +769,18 @@ void QGLWindowSurface::updateGeometry() {
const GLenum target = GL_TEXTURE_2D;
- if (rect.width() <= 0 || rect.height() <= 0)
+ if (surfSize.width() <= 0 || surfSize.height() <= 0)
return;
- if (d_ptr->size == rect.size())
+ if (d_ptr->size == surfSize)
return;
- d_ptr->size = rect.size();
+ d_ptr->size = surfSize;
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(surfSize);
#endif
return;
}
@@ -767,10 +803,10 @@ void QGLWindowSurface::updateGeometry() {
if (QGLExtensions::glExtensions() & QGLExtensions::FramebufferBlit)
format.setSamples(8);
- d_ptr->fbo = new QGLFramebufferObject(rect.size(), format);
+ d_ptr->fbo = new QGLFramebufferObject(surfSize, format);
if (d_ptr->fbo->isValid()) {
- qDebug() << "Created Window Surface FBO" << rect.size()
+ qDebug() << "Created Window Surface FBO" << surfSize
<< "with samples" << d_ptr->fbo->format().samples();
return;
} else {
@@ -791,7 +827,7 @@ void QGLWindowSurface::updateGeometry() {
delete d_ptr->pb;
- d_ptr->pb = new QGLPixelBuffer(rect.width(), rect.height(),
+ d_ptr->pb = new QGLPixelBuffer(surfSize.width(), surfSize.height(),
QGLFormat(QGL::SampleBuffers | QGL::StencilBuffer | QGL::DepthBuffer),
qt_gl_share_widget());
@@ -801,7 +837,7 @@ void QGLWindowSurface::updateGeometry() {
glGenTextures(1, &d_ptr->pb_tex_id);
glBindTexture(target, d_ptr->pb_tex_id);
- glTexImage2D(target, 0, GL_RGBA, rect.width(), rect.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+ glTexImage2D(target, 0, GL_RGBA, surfSize.width(), surfSize.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glTexParameterf(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
@@ -824,15 +860,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(surfSize);
#endif
qDebug() << "QGLWindowSurface: Using plain widget as window surface" << this;;
@@ -840,6 +869,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..4f4ec926ed 100644
--- a/src/opengl/qwindowsurface_gl_p.h
+++ b/src/opengl/qwindowsurface_gl_p.h
@@ -89,7 +89,13 @@ public:
QPaintDevice *paintDevice();
void flush(QWidget *widget, const QRegion &region, const QPoint &offset);
+
+#if !defined(Q_WS_QPA)
void setGeometry(const QRect &rect);
+#else
+ virtual void resize(const QSize &size);
+#endif
+
void updateGeometry();
bool scroll(const QRegion &area, int dx, int dy);
@@ -107,6 +113,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 f6d2435dfa..aea203f9c8 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -55,17 +55,14 @@
#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>
QT_BEGIN_NAMESPACE
-// vgDrawGlyphs() only exists in OpenVG 1.1 and higher.
-#if !defined(OPENVG_VERSION_1_1) && !defined(QVG_NO_DRAW_GLYPHS)
-#define QVG_NO_DRAW_GLYPHS 1
-#endif
-
// vgRenderToMask() only exists in OpenVG 1.1 and higher.
// Also, disable masking completely if we are using the scissor to clip.
#if !defined(OPENVG_VERSION_1_1) && !defined(QVG_NO_RENDER_TO_MASK)
@@ -75,11 +72,11 @@ QT_BEGIN_NAMESPACE
#define QVG_NO_RENDER_TO_MASK 1
#endif
-#if !defined(QVG_NO_DRAW_GLYPHS)
-
// use the same rounding as in qrasterizer.cpp (6 bit fixed point)
static const qreal aliasedCoordinateDelta = 0.5 - 0.015625;
+#if !defined(QVG_NO_DRAW_GLYPHS)
+
Q_DECL_IMPORT extern int qt_defaultDpiX();
Q_DECL_IMPORT extern int qt_defaultDpiY();
@@ -3065,6 +3062,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();
@@ -3079,9 +3091,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)
@@ -3098,9 +3119,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
@@ -3121,9 +3151,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);
}
@@ -3132,10 +3184,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);
}
@@ -3412,7 +3475,7 @@ void QVGPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
{
- drawCachedGlyphs(textItem->numGlyphs, textItem->glyphs, textItem->font, textItem->fontEngine,
+ drawCachedGlyphs(textItem->numGlyphs, textItem->glyphs, textItem->font, textItem->fontEngine(),
QPointF(0, 0), textItem->glyphPositions);
}
@@ -3615,6 +3678,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..509882bf8c 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 = 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_p.h b/src/openvg/qvg_p.h
index 51abbee645..94d1eaea9e 100644
--- a/src/openvg/qvg_p.h
+++ b/src/openvg/qvg_p.h
@@ -55,6 +55,11 @@
// We mean it.
//
+// vgDrawGlyphs() only exists in OpenVG 1.1 and higher.
+#if !defined(OPENVG_VERSION_1_1) && !defined(QVG_NO_DRAW_GLYPHS)
+#define QVG_NO_DRAW_GLYPHS 1
+#endif
+
#include <QtGui/qimage.h>
#if !defined(QT_NO_EGL)
diff --git a/src/openvg/qvg_symbian.cpp b/src/openvg/qvg_symbian.cpp
index e97ade89f9..e4edfcbc80 100644
--- a/src/openvg/qvg_symbian.cpp
+++ b/src/openvg/qvg_symbian.cpp
@@ -165,7 +165,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
@@ -186,10 +185,11 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
QImage::Format format = qt_TDisplayMode2Format(displayMode);
TSize size = bitmap->SizeInPixels();
+ int bytesPerLine = bitmap->ScanLineLength(size.iWidth, displayMode);
bitmap->BeginDataAccess();
uchar *bytes = (uchar*)bitmap->DataAddress();
- QImage img = QImage(bytes, size.iWidth, size.iHeight, format);
+ QImage img = QImage(bytes, size.iWidth, size.iHeight, bytesPerLine, format);
img = img.copy();
bitmap->EndDataAccess();
@@ -229,8 +229,7 @@ void* QVGPixmapData::toNativeType(NativeType type)
sgInfo.iSizeInPixels.SetSize(w, h);
sgInfo.iUsage = ESgUsageBitOpenVgImage | ESgUsageBitOpenVgSurface;
- RSgImage *sgImage = new RSgImage();
- Q_CHECK_PTR(sgImage);
+ QScopedPointer<RSgImage> sgImage(new RSgImage());
err = sgImage->Create(sgInfo, NULL, NULL);
if (err != KErrNone) {
driver.Close();
@@ -241,7 +240,7 @@ void* QVGPixmapData::toNativeType(NativeType type)
EGLImageKHR eglImage = QEgl::eglCreateImageKHR(QEgl::display(),
EGL_NO_CONTEXT,
EGL_NATIVE_PIXMAP_KHR,
- (EGLClientBuffer)sgImage,
+ (EGLClientBuffer)sgImage.data(),
(EGLint*)KEglImageAttribs);
if (!eglImage || eglGetError() != EGL_SUCCESS) {
sgImage->Close();
@@ -263,13 +262,14 @@ void* QVGPixmapData::toNativeType(NativeType type)
if (vgGetError() != VG_NO_ERROR) {
sgImage->Close();
- sgImage = 0;
+ sgImage.reset();
}
+
// release stuff
vgDestroyImage(dstVgImage);
QEgl::eglDestroyImageKHR(QEgl::display(), eglImage);
driver.Close();
- return reinterpret_cast<void*>(sgImage);
+ return reinterpret_cast<void*>(sgImage.take());
#endif
} else if (type == QPixmapData::FbsBitmap) {
CFbsBitmap *bitmap = new CFbsBitmap;
diff --git a/src/openvg/qvgfontglyphcache_p.h b/src/openvg/qvgfontglyphcache_p.h
index b32a87340b..8bcdcc70a3 100644
--- a/src/openvg/qvgfontglyphcache_p.h
+++ b/src/openvg/qvgfontglyphcache_p.h
@@ -56,10 +56,14 @@
#include <QtCore/qvarlengtharray.h>
#include <QtGui/private/qfontengine_p.h>
+#include <qvg_p.h>
+
QT_BEGIN_NAMESPACE
class QVGPaintEnginePrivate;
+#ifndef QVG_NO_DRAW_GLYPHS
+
class QVGFontGlyphCache
{
public:
@@ -90,6 +94,8 @@ public:
};
#endif
+#endif
+
QT_END_NAMESPACE
#endif // QVGFONTGLYPHCACHE_H
diff --git a/src/plugins/accessible/widgets/simplewidgets.cpp b/src/plugins/accessible/widgets/simplewidgets.cpp
index d8b57afa13..eb6a90975b 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..184ceb49b2 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)
@@ -791,62 +804,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 e94ae5ddc7..b66298eb4d 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);
}
}
@@ -338,7 +338,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 +353,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 +538,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 +569,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 +865,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 +1030,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..90078e9290 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) {
@@ -16,9 +16,10 @@ HEADERS += qcorewlanengine.h \
../qbearerengine_impl.h
SOURCES += main.cpp \
- qcorewlanengine.mm \
../qnetworksession_impl.cpp
+OBJECTIVE_SOURCES += qcorewlanengine.mm
+
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/bearer
target.path += $$[QT_INSTALL_PLUGINS]/bearer
INSTALLS += target
diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm
index 844e38b103..23dd14aa09 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;
}
@@ -850,10 +864,10 @@ quint64 QCoreWlanEngine::bytesReceived(const QString &id)
return getBytes(interfaceStr,true);
}
-quint64 QCoreWlanEngine::startTime(const QString &id)
+quint64 QCoreWlanEngine::startTime(const QString &identifier)
{
QMutexLocker locker(&mutex);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
quint64 timestamp = 0;
NSString *filePath = @"/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist";
@@ -884,8 +898,8 @@ 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])));
- if(ident == id) {
+ const QString ident = QString::number(qHash(QLatin1String("corewlan:") + qt_NSStringToQString(objects[i])));
+ if(ident == identifier) {
ok = true;
}
}
@@ -900,6 +914,7 @@ quint64 QCoreWlanEngine::startTime(const QString &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/platformdefs_win.h b/src/plugins/bearer/platformdefs_win.h
index 1a10ba7c95..68343cf875 100644
--- a/src/plugins/bearer/platformdefs_win.h
+++ b/src/plugins/bearer/platformdefs_win.h
@@ -53,6 +53,7 @@ QT_BEGIN_NAMESPACE
#define NS_NLA 15
+#ifndef NLA_NAMESPACE_GUID
enum NLA_BLOB_DATA_TYPE {
NLA_RAW_DATA = 0,
NLA_INTERFACE = 1,
@@ -115,6 +116,8 @@ struct NLA_BLOB {
} ICS;
} data;
};
+#endif // NLA_NAMESPACE_GUID
+
#endif
enum NDIS_MEDIUM {
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..33fa50852b 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();
+ }
}
}
@@ -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/generic/linuxinput/linuxinput.pro b/src/plugins/generic/linuxinput/linuxinput.pro
new file mode 100644
index 0000000000..ad9f6a9754
--- /dev/null
+++ b/src/plugins/generic/linuxinput/linuxinput.pro
@@ -0,0 +1,18 @@
+TARGET = qlinuxinputplugin
+include(../../qpluginbase.pri)
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/generic
+target.path = $$[QT_INSTALL_PLUGINS]/generic
+INSTALLS += target
+
+DEFINES += QT_QWS_KBD_LINUXINPUT
+
+HEADERS = qlinuxinput.h
+
+SOURCES = main.cpp \
+ qlinuxinput.cpp
+
+HEADERS += $$QT_SOURCE_TREE/src/gui/embedded/qkbd_qws.h \
+ $$QT_SOURCE_TREE/src/gui/embedded/qkbd_qws_p.h
+
+SOURCES += $$QT_SOURCE_TREE/src/gui/embedded/qkbd_qws.cpp
diff --git a/src/plugins/generic/linuxinput/main.cpp b/src/plugins/generic/linuxinput/main.cpp
new file mode 100644
index 0000000000..dc052547f5
--- /dev/null
+++ b/src/plugins/generic/linuxinput/main.cpp
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <qgenericplugin_qpa.h>
+#include "qlinuxinput.h"
+
+QT_BEGIN_NAMESPACE
+
+class QLinuxInputPlugin : public QGenericPlugin
+{
+public:
+ QLinuxInputPlugin();
+
+ QStringList keys() const;
+ QObject* create(const QString &key, const QString &specification);
+};
+
+QLinuxInputPlugin::QLinuxInputPlugin()
+ : QGenericPlugin()
+{
+}
+
+QStringList QLinuxInputPlugin::keys() const
+{
+ return (QStringList()
+ << QLatin1String("LinuxInputMouse")
+ << QLatin1String("LinuxInputKeyboard"));
+}
+
+QObject* QLinuxInputPlugin::create(const QString &key,
+ const QString &specification)
+{
+ if (!key.compare(QLatin1String("LinuxInputMouse"), Qt::CaseInsensitive))
+ return new QLinuxInputMouseHandler(key, specification);
+ if (!key.compare(QLatin1String("LinuxInputKeyboard"), Qt::CaseInsensitive))
+ return new QLinuxInputKeyboardHandler(key, specification);
+ return 0;
+ }
+
+Q_EXPORT_PLUGIN2(qlinuxinputplugin, QLinuxInputPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/generic/linuxinput/qlinuxinput.cpp b/src/plugins/generic/linuxinput/qlinuxinput.cpp
new file mode 100644
index 0000000000..c5bfd33468
--- /dev/null
+++ b/src/plugins/generic/linuxinput/qlinuxinput.cpp
@@ -0,0 +1,557 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qlinuxinput.h"
+
+
+#include <QSocketNotifier>
+#include <QStringList>
+#include <QPoint>
+#include <QWindowSystemInterface>
+
+#include <qkbd_qws.h>
+
+
+#include <qplatformdefs.h>
+#include <private/qcore_unix_p.h> // overrides QT_OPEN
+
+#include <errno.h>
+#include <termios.h>
+
+#include <linux/kd.h>
+#include <linux/input.h>
+
+#include <qdebug.h>
+
+QT_BEGIN_NAMESPACE
+
+
+//#define QT_QPA_EXPERIMENTAL_TOUCHEVENT
+
+#ifdef QT_QPA_EXPERIMENTAL_TOUCHEVENT
+class QLinuxInputMouseHandlerData
+{
+public:
+ QLinuxInputMouseHandlerData() :seenMT(false), state(QEvent::TouchBegin), currentIdx(0) {}
+
+ void ensureCurrentPoint() {
+ if (currentIdx >= touchPoints.size()) {
+ Q_ASSERT(currentIdx == touchPoints.size());
+ QWindowSystemInterface::TouchPoint tp;
+ tp.id = currentIdx;
+ tp.isPrimary = (currentIdx == 0);
+ tp.pressure = 1;
+ tp.area = QRectF(0,0,1,1);
+ tp.state = Qt::TouchPointReleased; // init in neutral state
+ touchPoints.append(tp);
+ }
+ }
+ void setCurrentPoint(int i) {
+ currentIdx = i;
+ if (currentIdx < touchPoints.size()) {
+ currentX = int(touchPoints[currentIdx].area.left());
+ currentY = int(touchPoints[currentIdx].area.top());
+ } else {
+ currentY = currentX = -999;
+ }
+ }
+ void advanceCurrentPoint() {
+ setCurrentPoint(currentIdx + 1);
+ }
+ int currentPoint() { return currentIdx; }
+ void setCurrentX(int value) {
+ ensureCurrentPoint();
+ touchPoints[currentIdx].area.moveLeft(value);
+ }
+ bool currentMoved() {
+ return currentX != touchPoints[currentIdx].area.left() || currentY != touchPoints[currentIdx].area.top();
+ }
+ void updateCurrentPos() {
+ ensureCurrentPoint();
+ touchPoints[currentIdx].area.moveTopLeft(QPointF(currentX, currentY));
+ }
+ void setCurrentState(Qt::TouchPointState state) {
+ ensureCurrentPoint();
+ touchPoints[currentIdx].state = state;
+ }
+ Qt::TouchPointState currentState() const {
+ if (currentIdx < touchPoints.size())
+ return touchPoints[currentIdx].state;
+ return Qt::TouchPointReleased;
+ }
+ QList<QWindowSystemInterface::TouchPoint> touchPoints;
+ int currentX;
+ int currentY;
+ bool seenMT;
+ QEvent::Type state;
+private:
+ int currentIdx;
+};
+#endif
+
+
+QLinuxInputMouseHandler::QLinuxInputMouseHandler(const QString &key,
+ const QString &specification)
+ : m_notify(0), m_x(0), m_y(0), m_prevx(0), m_prevy(0), m_xoffset(0), m_yoffset(0), m_buttons(0), d(0)
+{
+ qDebug() << "QLinuxInputMouseHandler" << key << specification;
+
+
+ setObjectName(QLatin1String("LinuxInputSubsystem Mouse Handler"));
+
+ QString dev = QLatin1String("/dev/input/event0");
+ m_compression = true;
+ m_smooth = false;
+ int jitterLimit = 0;
+
+ QStringList args = specification.split(QLatin1Char(':'));
+ foreach (const QString &arg, args) {
+ if (arg == "nocompress")
+ m_compression = false;
+ else if (arg.startsWith("dejitter="))
+ jitterLimit = arg.mid(9).toInt();
+ else if (arg.startsWith("xoffset="))
+ m_xoffset = arg.mid(8).toInt();
+ else if (arg.startsWith("yoffset="))
+ m_yoffset = arg.mid(8).toInt();
+ else if (arg.startsWith(QLatin1String("/dev/")))
+ dev = arg;
+ }
+ m_jitterLimitSquared = jitterLimit*jitterLimit;
+
+ m_fd = QT_OPEN(dev.toLocal8Bit().constData(), O_RDONLY | O_NDELAY, 0);
+ if (m_fd >= 0) {
+ m_notify = new QSocketNotifier(m_fd, QSocketNotifier::Read, this);
+ connect(m_notify, SIGNAL(activated(int)), this, SLOT(readMouseData()));
+ } else {
+ qWarning("Cannot open mouse input device '%s': %s", qPrintable(dev), strerror(errno));
+ return;
+ }
+#ifdef QT_QPA_EXPERIMENTAL_TOUCHEVENT
+ d = new QLinuxInputMouseHandlerData;
+#endif
+}
+
+
+QLinuxInputMouseHandler::~QLinuxInputMouseHandler()
+{
+ if (m_fd >= 0)
+ QT_CLOSE(m_fd);
+#ifdef QT_QPA_EXPERIMENTAL_TOUCHEVENT
+ delete d;
+#endif
+}
+
+void QLinuxInputMouseHandler::sendMouseEvent(int x, int y, Qt::MouseButtons buttons)
+{
+ QPoint pos(x+m_xoffset, y+m_yoffset);
+ QWindowSystemInterface::handleMouseEvent(0, pos, pos, m_buttons);
+ m_prevx = x;
+ m_prevy = y;
+}
+
+void QLinuxInputMouseHandler::readMouseData()
+{
+ struct ::input_event buffer[32];
+ int n = 0;
+ bool posChanged = false;
+ bool pendingMouseEvent = false;
+ int eventCompressCount = 0;
+ forever {
+ n = QT_READ(m_fd, reinterpret_cast<char *>(buffer) + n, sizeof(buffer) - n);
+
+ if (n == 0) {
+ qWarning("Got EOF from the input device.");
+ return;
+ } else if (n < 0 && (errno != EINTR && errno != EAGAIN)) {
+ qWarning("Could not read from input device: %s", strerror(errno));
+ return;
+ } else if (n % sizeof(buffer[0]) == 0) {
+ break;
+ }
+ }
+
+ n /= sizeof(buffer[0]);
+
+ for (int i = 0; i < n; ++i) {
+ struct ::input_event *data = &buffer[i];
+ //qDebug() << ">>" << hex << data->type << data->code << dec << data->value;
+ bool unknown = false;
+ if (data->type == EV_ABS) {
+ if (data->code == ABS_X && m_x != data->value) {
+ m_x = data->value;
+ posChanged = true;
+ } else if (data->code == ABS_Y && m_y != data->value) {
+ m_y = data->value;
+ posChanged = true;
+ } else if (data->code == ABS_PRESSURE) {
+ //ignore for now...
+ } else if (data->code == ABS_TOOL_WIDTH) {
+ //ignore for now...
+ } else if (data->code == ABS_HAT0X) {
+ //ignore for now...
+ } else if (data->code == ABS_HAT0Y) {
+ //ignore for now...
+#ifdef QT_QPA_EXPERIMENTAL_TOUCHEVENT
+ } else if (data->code == ABS_MT_POSITION_X) {
+ d->currentX = data->value;
+ d->seenMT = true;
+ } else if (data->code == ABS_MT_POSITION_Y) {
+ d->currentY = data->value;
+ d->seenMT = true;
+ } else if (data->code == ABS_MT_TOUCH_MAJOR) {
+ if (data->value == 0)
+ d->setCurrentState(Qt::TouchPointReleased);
+ //otherwise, ignore for now...
+ } else if (data->code == ABS_MT_TOUCH_MINOR) {
+ //ignore for now...
+#endif
+ } else {
+ unknown = true;
+ }
+ } else if (data->type == EV_REL) {
+ if (data->code == REL_X) {
+ m_x += data->value;
+ posChanged = true;
+ } else if (data->code == REL_Y) {
+ m_y += data->value;
+ posChanged = true;
+ } else if (data->code == ABS_WHEEL) { // vertical scroll
+ // data->value: 1 == up, -1 == down
+ int delta = 120 * data->value;
+ QWindowSystemInterface::handleWheelEvent(0, QPoint(m_x, m_y),
+ QPoint(m_x, m_y),
+ delta, Qt::Vertical);
+ } else if (data->code == ABS_THROTTLE) { // horizontal scroll
+ // data->value: 1 == right, -1 == left
+ int delta = 120 * -data->value;
+ QWindowSystemInterface::handleWheelEvent(0, QPoint(m_x, m_y),
+ QPoint(m_x, m_y),
+ delta, Qt::Horizontal);
+ } else {
+ unknown = true;
+ }
+ } else if (data->type == EV_KEY && data->code == BTN_TOUCH) {
+ m_buttons = data->value ? Qt::LeftButton : Qt::NoButton;
+
+ sendMouseEvent(m_x, m_y, m_buttons);
+ pendingMouseEvent = false;
+ } else if (data->type == EV_KEY && data->code >= BTN_LEFT && data->code <= BTN_MIDDLE) {
+ Qt::MouseButton button = Qt::NoButton;
+ switch (data->code) {
+ case BTN_LEFT: button = Qt::LeftButton; break;
+ case BTN_MIDDLE: button = Qt::MidButton; break;
+ case BTN_RIGHT: button = Qt::RightButton; break;
+ }
+ if (data->value)
+ m_buttons |= button;
+ else
+ m_buttons &= ~button;
+ sendMouseEvent(m_x, m_y, m_buttons);
+ pendingMouseEvent = false;
+ } else if (data->type == EV_SYN && data->code == SYN_REPORT) {
+ if (posChanged) {
+ posChanged = false;
+ if (m_compression) {
+ pendingMouseEvent = true;
+ eventCompressCount++;
+ } else {
+ sendMouseEvent(m_x, m_y, m_buttons);
+ }
+ }
+#ifdef QT_QPA_EXPERIMENTAL_TOUCHEVENT
+ if (d->state == QEvent::TouchBegin && !d->seenMT) {
+ //no multipoint-touch events to send
+ } else {
+ if (!d->seenMT)
+ d->state = QEvent::TouchEnd;
+
+ for (int i = d->currentPoint(); i < d->touchPoints.size(); ++i) {
+ d->touchPoints[i].pressure = 0;
+ d->touchPoints[i].state = Qt::TouchPointReleased;
+ }
+ //qDebug() << "handleTouchEvent" << d->state << d->touchPoints.size() << d->touchPoints[0].state;
+ QWindowSystemInterface::handleTouchEvent(0, d->state, QTouchEvent::TouchScreen, d->touchPoints);
+ if (d->seenMT) {
+ d->state = QEvent::TouchUpdate;
+ } else {
+ d->state = QEvent::TouchBegin;
+ d->touchPoints.clear();
+ }
+ d->setCurrentPoint(0);
+ d->seenMT = false;
+ }
+ } else if (data->type == EV_SYN && data->code == SYN_MT_REPORT) {
+ //store data for this touch point
+
+ if (!d->seenMT) {
+ d->setCurrentState(Qt::TouchPointReleased);
+ } else if (d->currentState() == Qt::TouchPointReleased) {
+ d->updateCurrentPos();
+ d->setCurrentState(Qt::TouchPointPressed);
+ } else if (d->currentMoved()) {
+ d->updateCurrentPos();
+ d->setCurrentState(Qt::TouchPointMoved);
+ } else {
+ d->setCurrentState(Qt::TouchPointStationary);
+ }
+ //qDebug() << "end of point" << d->currentPoint() << d->currentX << d->currentY << d->currentState();
+
+ //advance to next tp:
+ d->advanceCurrentPoint();
+#endif
+ } else if (data->type == EV_MSC && data->code == MSC_SCAN) {
+ // kernel encountered an unmapped key - just ignore it
+ continue;
+ } else {
+ unknown = true;
+ }
+#ifdef QLINUXINPUT_EXTRA_DEBUG
+ if (unknown) {
+ qWarning("unknown mouse event type=%x, code=%x, value=%x", data->type, data->code, data->value);
+ }
+#endif
+ }
+ if (m_compression && pendingMouseEvent) {
+ int distanceSquared = (m_x - m_prevx)*(m_x - m_prevx) + (m_y - m_prevy)*(m_y - m_prevy);
+ if (distanceSquared > m_jitterLimitSquared)
+ sendMouseEvent(m_x, m_y, m_buttons);
+ }
+}
+
+
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//Keyboard handler
+
+
+
+
+class QWSLinuxInputKeyboardHandler : public QWSKeyboardHandler
+{
+public:
+ QWSLinuxInputKeyboardHandler(const QString&);
+ ~QWSLinuxInputKeyboardHandler();
+
+ virtual bool filterInputEvent(quint16 &input_code, qint32 &input_value);
+
+//private:
+// QWSLinuxInputKbPrivate *d;
+};
+
+
+QWSLinuxInputKeyboardHandler::QWSLinuxInputKeyboardHandler(const QString &device)
+ : QWSKeyboardHandler(device)
+{
+}
+
+QWSLinuxInputKeyboardHandler::~QWSLinuxInputKeyboardHandler()
+{
+}
+
+bool QWSLinuxInputKeyboardHandler::filterInputEvent(quint16 &, qint32 &)
+{
+ return false;
+}
+
+
+QLinuxInputKeyboardHandler::QLinuxInputKeyboardHandler(const QString &key, const QString &specification)
+ : m_handler(0), m_fd(-1), m_tty_fd(-1), m_orig_kbmode(K_XLATE)
+{
+ setObjectName(QLatin1String("LinuxInputSubsystem Keyboard Handler"));
+
+ QString dev = QLatin1String("/dev/input/event1");
+ int repeat_delay = -1;
+ int repeat_rate = -1;
+
+ bool ttymode = false;
+
+ QStringList args = specification.split(QLatin1Char(':'));
+ foreach (const QString &arg, args) {
+ if (arg.startsWith(QLatin1String("repeat-delay=")))
+ repeat_delay = arg.mid(13).toInt();
+ else if (arg.startsWith(QLatin1String("repeat-rate=")))
+ repeat_rate = arg.mid(12).toInt();
+ else if (arg.startsWith(QLatin1String("ttymode")))
+ ttymode = true;
+ else if (arg.startsWith(QLatin1String("/dev/")))
+ dev = arg;
+ }
+
+ m_handler = new QWSLinuxInputKeyboardHandler(dev); //This is a hack to avoid copying all the QWS code
+
+ m_fd = QT_OPEN(dev.toLocal8Bit().constData(), O_RDWR, 0);
+ if (m_fd >= 0) {
+ if (repeat_delay > 0 && repeat_rate > 0) {
+ int kbdrep[2] = { repeat_delay, repeat_rate };
+ ::ioctl(m_fd, EVIOCSREP, kbdrep);
+ }
+
+ QSocketNotifier *notifier;
+ notifier = new QSocketNotifier(m_fd, QSocketNotifier::Read, this);
+ connect(notifier, SIGNAL(activated(int)), this, SLOT(readKeycode()));
+
+ if (ttymode) {
+ // play nice in case we are started from a shell (e.g. for debugging)
+ m_tty_fd = isatty(0) ? 0 : -1;
+
+ if (m_tty_fd >= 0) {
+ // save tty config for restore.
+ tcgetattr(m_tty_fd, &m_tty_attr);
+
+ struct ::termios termdata;
+ tcgetattr(m_tty_fd, &termdata);
+
+ // record the original mode so we can restore it again in the destructor.
+ ::ioctl(m_tty_fd, KDGKBMODE, &m_orig_kbmode);
+
+ // setting this translation mode is even needed in INPUT mode to prevent
+ // the shell from also interpreting codes, if the process has a tty
+ // attached: e.g. Ctrl+C wouldn't copy, but kill the application.
+ ::ioctl(m_tty_fd, KDSKBMODE, K_MEDIUMRAW);
+
+ // set the tty layer to pass-through
+ termdata.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
+ termdata.c_oflag = 0;
+ termdata.c_cflag = CREAD | CS8;
+ termdata.c_lflag = 0;
+ termdata.c_cc[VTIME]=0;
+ termdata.c_cc[VMIN]=1;
+ cfsetispeed(&termdata, 9600);
+ cfsetospeed(&termdata, 9600);
+ tcsetattr(m_tty_fd, TCSANOW, &termdata);
+ }
+ }
+ } else {
+ qWarning("Cannot open keyboard input device '%s': %s", qPrintable(dev), strerror(errno));
+ return;
+ }
+}
+
+QLinuxInputKeyboardHandler::~QLinuxInputKeyboardHandler()
+{
+ if (m_tty_fd >= 0) {
+ ::ioctl(m_tty_fd, KDSKBMODE, m_orig_kbmode);
+ tcsetattr(m_tty_fd, TCSANOW, &m_tty_attr);
+ }
+ if (m_fd >= 0)
+ QT_CLOSE(m_fd);
+ delete m_handler;
+}
+
+void QLinuxInputKeyboardHandler::switchLed(int led, bool state)
+{
+ struct ::input_event led_ie;
+ ::gettimeofday(&led_ie.time, 0);
+ led_ie.type = EV_LED;
+ led_ie.code = led;
+ led_ie.value = state;
+
+ QT_WRITE(m_fd, &led_ie, sizeof(led_ie));
+}
+
+
+
+void QLinuxInputKeyboardHandler::readKeycode()
+{
+ struct ::input_event buffer[32];
+ int n = 0;
+
+ forever {
+ n = QT_READ(m_fd, reinterpret_cast<char *>(buffer) + n, sizeof(buffer) - n);
+
+ if (n == 0) {
+ qWarning("Got EOF from the input device.");
+ return;
+ } else if (n < 0 && (errno != EINTR && errno != EAGAIN)) {
+ qWarning("Could not read from input device: %s", strerror(errno));
+ return;
+ } else if (n % sizeof(buffer[0]) == 0) {
+ break;
+ }
+ }
+
+ n /= sizeof(buffer[0]);
+
+ for (int i = 0; i < n; ++i) {
+ if (buffer[i].type != EV_KEY)
+ continue;
+
+ quint16 code = buffer[i].code;
+ qint32 value = buffer[i].value;
+
+ if (m_handler->filterInputEvent(code, value))
+ continue;
+
+ QWSKeyboardHandler::KeycodeAction ka;
+ ka = m_handler->processKeycode(code, value != 0, value == 2);
+
+ switch (ka) {
+ case QWSKeyboardHandler::CapsLockOn:
+ case QWSKeyboardHandler::CapsLockOff:
+ switchLed(LED_CAPSL, ka == QWSKeyboardHandler::CapsLockOn);
+ break;
+
+ case QWSKeyboardHandler::NumLockOn:
+ case QWSKeyboardHandler::NumLockOff:
+ switchLed(LED_NUML, ka == QWSKeyboardHandler::NumLockOn);
+ break;
+
+ case QWSKeyboardHandler::ScrollLockOn:
+ case QWSKeyboardHandler::ScrollLockOff:
+ switchLed(LED_SCROLLL, ka == QWSKeyboardHandler::ScrollLockOn);
+ break;
+
+ default:
+ // ignore console switching and reboot
+ break;
+ }
+ }
+}
+
+
+
+
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/generic/linuxinput/qlinuxinput.h b/src/plugins/generic/linuxinput/qlinuxinput.h
new file mode 100644
index 0000000000..c94c0f4fd1
--- /dev/null
+++ b/src/plugins/generic/linuxinput/qlinuxinput.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+#ifndef QLINUXINPUT_H
+#define QLINUXINPUT_H
+
+#include <qobject.h>
+#include <Qt>
+#include <termios.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QSocketNotifier;
+
+class QLinuxInputMouseHandlerData;
+
+class QLinuxInputMouseHandler : public QObject
+{
+ Q_OBJECT
+public:
+ QLinuxInputMouseHandler(const QString &key, const QString &specification);
+ ~QLinuxInputMouseHandler();
+
+private slots:
+ void readMouseData();
+
+private:
+ void sendMouseEvent(int x, int y, Qt::MouseButtons buttons);
+ QSocketNotifier * m_notify;
+ int m_fd;
+ int m_x, m_y;
+ int m_prevx, m_prevy;
+ int m_xoffset, m_yoffset;
+ int m_smoothx, m_smoothy;
+ Qt::MouseButtons m_buttons;
+ bool m_compression;
+ bool m_smooth;
+ int m_jitterLimitSquared;
+ QLinuxInputMouseHandlerData *d;
+};
+
+
+class QWSLinuxInputKeyboardHandler;
+
+class QLinuxInputKeyboardHandler : public QObject
+{
+ Q_OBJECT
+public:
+ QLinuxInputKeyboardHandler(const QString &key, const QString &specification);
+ ~QLinuxInputKeyboardHandler();
+
+
+private:
+ void switchLed(int, bool);
+
+private slots:
+ void readKeycode();
+
+private:
+ QWSLinuxInputKeyboardHandler *m_handler;
+ int m_fd;
+ int m_tty_fd;
+ struct termios m_tty_attr;
+ int m_orig_kbmode;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QLINUXINPUT_H
diff --git a/src/plugins/generic/tslib/main.cpp b/src/plugins/generic/tslib/main.cpp
new file mode 100644
index 0000000000..502c6a028e
--- /dev/null
+++ b/src/plugins/generic/tslib/main.cpp
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** 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 <qgenericplugin_qpa.h>
+#include "qtslib.h"
+
+QT_BEGIN_NAMESPACE
+
+class QTsLibPlugin : public QGenericPlugin
+{
+public:
+ QTsLibPlugin();
+
+ QStringList keys() const;
+ QObject* create(const QString &key, const QString &specification);
+};
+
+QTsLibPlugin::QTsLibPlugin()
+ : QGenericPlugin()
+{
+}
+
+QStringList QTsLibPlugin::keys() const
+{
+ return (QStringList()
+ << QLatin1String("Tslib")
+ << QLatin1String("TslibRaw"));
+}
+
+QObject* QTsLibPlugin::create(const QString &key,
+ const QString &specification)
+{
+ if (!key.compare(QLatin1String("Tslib"), Qt::CaseInsensitive) || !key.compare(QLatin1String("TslibRaw"), Qt::CaseInsensitive))
+ return new QTsLibMouseHandler(key, specification);
+ return 0;
+ }
+
+Q_EXPORT_PLUGIN2(qtslibplugin, QTsLibPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/generic/tslib/qtslib.cpp b/src/plugins/generic/tslib/qtslib.cpp
new file mode 100644
index 0000000000..12963a074d
--- /dev/null
+++ b/src/plugins/generic/tslib/qtslib.cpp
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** 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 "qtslib.h"
+
+
+#include <QSocketNotifier>
+#include <QStringList>
+#include <QPoint>
+#include <QWindowSystemInterface>
+
+#include <Qt>
+
+#include <errno.h>
+#include <tslib.h>
+
+#include <qdebug.h>
+
+QT_BEGIN_NAMESPACE
+
+QTsLibMouseHandler::QTsLibMouseHandler(const QString &key,
+ const QString &specification)
+ : m_notify(0), m_x(0), m_y(0), m_pressed(0), m_rawMode(false)
+{
+ qDebug() << "QTsLibMouseHandler" << key << specification;
+ setObjectName(QLatin1String("TSLib Mouse Handler"));
+
+ QByteArray device = "/dev/input/event1";
+ if (specification.startsWith("/dev/"))
+ device = specification.toLocal8Bit();
+
+ m_dev = ts_open(device.constData(), 1);
+
+ if (ts_config(m_dev)) {
+ perror("Error configuring\n");
+ }
+
+
+ m_rawMode = !key.compare(QLatin1String("TslibRaw"), Qt::CaseInsensitive);
+
+ int fd = ts_fd(m_dev);
+ if (fd >= 0) {
+ m_notify = new QSocketNotifier(fd, QSocketNotifier::Read, this);
+ connect(m_notify, SIGNAL(activated(int)), this, SLOT(readMouseData()));
+ } else {
+ qWarning("Cannot open mouse input device '%s': %s", device.constData(), strerror(errno));
+ return;
+ }
+}
+
+
+QTsLibMouseHandler::~QTsLibMouseHandler()
+{
+ if (m_dev)
+ ts_close(m_dev);
+}
+
+
+static bool get_sample(struct tsdev *dev, struct ts_sample *sample, bool rawMode)
+{
+ if (rawMode) {
+ return (ts_read_raw(dev, sample, 1) == 1);
+ } else {
+ int ret = ts_read(dev, sample, 1);
+ return ( ret == 1);
+ }
+}
+
+
+void QTsLibMouseHandler::readMouseData()
+{
+ ts_sample sample;
+ while (get_sample(m_dev, &sample, m_rawMode)) {
+
+ bool pressed = sample.pressure;
+ int x = sample.x;
+ int y = sample.y;
+
+
+ if (!m_rawMode) {
+ //filtering: ignore movements of 2 pixels or less
+ int dx = x - m_x;
+ int dy = y - m_y;
+ if (dx*dx <= 4 && dy*dy <= 4 && pressed == m_pressed)
+ continue;
+ } else {
+ // work around missing coordinates on mouse release in raw mode
+ if (sample.pressure == 0 && sample.x == 0 && sample.y == 0) {
+ x = m_x;
+ y = m_y;
+ }
+ }
+ QPoint pos(x, y);
+
+ //printf("handleMouseEvent %d %d %d %ld\n", m_x, m_y, pressed, sample.tv.tv_usec);
+
+ QWindowSystemInterface::handleMouseEvent(0, pos, pos, pressed ? Qt::LeftButton : Qt::NoButton);
+
+ m_x = x;
+ m_y = y;
+ m_pressed = pressed;
+ }
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/generic/tslib/qtslib.h b/src/plugins/generic/tslib/qtslib.h
new file mode 100644
index 0000000000..5eab8b9c13
--- /dev/null
+++ b/src/plugins/generic/tslib/qtslib.h
@@ -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 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$
+**
+****************************************************************************/
+
+#ifndef QTSLIB_H
+#define QTSLIB_H
+
+#include <qobject.h>
+//#include <Qt>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QSocketNotifier;
+struct tsdev;
+
+class QTsLibMouseHandler : public QObject
+{
+ Q_OBJECT
+public:
+ QTsLibMouseHandler(const QString &key, const QString &specification);
+ ~QTsLibMouseHandler();
+
+private slots:
+ void readMouseData();
+
+private:
+ QSocketNotifier * m_notify;
+ tsdev *m_dev;
+ int m_x, m_y;
+ bool m_pressed;
+ bool m_rawMode;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QTSLIB_H
diff --git a/src/plugins/generic/tslib/tslib.pro b/src/plugins/generic/tslib/tslib.pro
new file mode 100644
index 0000000000..74c7fd2b96
--- /dev/null
+++ b/src/plugins/generic/tslib/tslib.pro
@@ -0,0 +1,13 @@
+TARGET = qlinuxinputplugin
+include(../../qpluginbase.pri)
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/generic
+target.path = $$[QT_INSTALL_PLUGINS]/generic
+INSTALLS += target
+
+HEADERS = qtslib.h
+
+SOURCES = main.cpp \
+ qtslib.cpp
+
+LIBS += -lts
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..2eeee24b6a 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
@@ -380,11 +380,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/graphicssystems.pro b/src/plugins/graphicssystems/graphicssystems.pro
index 29a1f340ad..5c99291047 100644
--- a/src/plugins/graphicssystems/graphicssystems.pro
+++ b/src/plugins/graphicssystems/graphicssystems.pro
@@ -1,7 +1,9 @@
TEMPLATE = subdirs
SUBDIRS += trace
!wince*:contains(QT_CONFIG, opengl):SUBDIRS += opengl
-contains(QT_CONFIG, openvg):contains(QT_CONFIG, egl):SUBDIRS += openvg
+contains(QT_CONFIG, openvg):contains(QT_CONFIG, egl) {
+ SUBDIRS += openvg
+}
contains(QT_CONFIG, shivavg) {
# Only works under X11 at present
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..063af135e4 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
+ // unitialized paintDevice due to a Qt bug too complex to even
+ // explain here... not to mention fix without going crazy.
// MDK
QGLShareContextScope ctx(qt_gl_share_widget()->context());
-
+
return new QRasterPixmapData(type);
}
@@ -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/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h
new file mode 100644
index 0000000000..2c6854eb9a
--- /dev/null
+++ b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.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 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 MLIVEPIXMAPDATA_H
+#define MLIVEPIXMAPDATA_H
+
+#include <private/qpixmapdata_gl_p.h>
+#include "qmeegoextensions.h"
+
+class QMeeGoLivePixmapData : public QGLPixmapData
+{
+public:
+ QMeeGoLivePixmapData(int w, int h, QImage::Format format);
+ QMeeGoLivePixmapData(Qt::HANDLE h);
+ ~QMeeGoLivePixmapData();
+
+ QPixmapData *createCompatiblePixmapData() const;
+ bool scroll(int dx, int dy, const QRect &rect);
+
+ void initializeThroughEGLImage();
+
+ QImage* lock(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/src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.cpp b/src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.cpp
new file mode 100644
index 0000000000..b6a3727096
--- /dev/null
+++ b/src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.cpp
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmeegorasterpixmapdata.h"
+
+/* Public */
+
+QMeeGoRasterPixmapData::QMeeGoRasterPixmapData() : QRasterPixmapData(QPixmapData::PixmapType)
+{
+}
+
+QMeeGoRasterPixmapData::QMeeGoRasterPixmapData(QPixmapData::PixelType t) : QRasterPixmapData(t)
+{
+}
+
+void QMeeGoRasterPixmapData::copy(const QPixmapData *data, const QRect &rect)
+{
+ if (data->classId() == QPixmapData::OpenGLClass)
+ fromImage(data->toImage(rect).copy(), Qt::NoOpaqueDetection);
+ else
+ QRasterPixmapData::copy(data, rect);
+}
diff --git a/src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.h b/src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.h
new file mode 100644
index 0000000000..636b0e6fb6
--- /dev/null
+++ b/src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.h
@@ -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 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 MRASTERPIXMAPDATA_H
+#define MRASTERPIXMAPDATA_H
+
+#include <private/qpixmap_raster_p.h>
+
+class QMeeGoRasterPixmapData : public QRasterPixmapData
+{
+public:
+ QMeeGoRasterPixmapData();
+ QMeeGoRasterPixmapData(QPixmapData::PixelType t);
+ void copy(const QPixmapData *data, const QRect &rect);
+};
+
+#endif
diff --git a/src/plugins/graphicssystems/openvg/qgraphicssystem_vg.cpp b/src/plugins/graphicssystems/openvg/qgraphicssystem_vg.cpp
index 2c7c0b7b55..9674233c0c 100644
--- a/src/plugins/graphicssystems/openvg/qgraphicssystem_vg.cpp
+++ b/src/plugins/graphicssystems/openvg/qgraphicssystem_vg.cpp
@@ -42,6 +42,9 @@
#include "qgraphicssystem_vg_p.h"
#include <QtOpenVG/private/qpixmapdata_vg_p.h>
#include <QtOpenVG/private/qwindowsurface_vg_p.h>
+#if defined(Q_OS_SYMBIAN) && !defined(Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE)
+#include <QtGui/private/qwidget_p.h>
+#endif
QT_BEGIN_NAMESPACE
@@ -64,6 +67,11 @@ QPixmapData *QVGGraphicsSystem::createPixmapData(QPixmapData::PixelType type) co
QWindowSurface *QVGGraphicsSystem::createWindowSurface(QWidget *widget) const
{
+#if defined(Q_OS_SYMBIAN) && !defined(Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE)
+ QWidgetPrivate *d = qt_widget_private(widget);
+ if (!d->isOpaque && widget->testAttribute(Qt::WA_TranslucentBackground))
+ return d->createDefaultWindowSurface_sys();
+#endif
return new QVGWindowSurface(widget);
}
diff --git a/src/plugins/graphicssystems/trace/qgraphicssystem_trace.cpp b/src/plugins/graphicssystems/trace/qgraphicssystem_trace.cpp
index 6bf9d6b050..e2b9f99ba1 100644
--- a/src/plugins/graphicssystems/trace/qgraphicssystem_trace.cpp
+++ b/src/plugins/graphicssystems/trace/qgraphicssystem_trace.cpp
@@ -98,7 +98,11 @@ QPaintDevice *QTraceWindowSurface::paintDevice()
{
if (!buffer) {
buffer = new QPaintBuffer;
+#ifdef Q_WS_QPA
+ buffer->setBoundingRect(QRect(QPoint(), size()));
+#else
buffer->setBoundingRect(geometry());
+#endif
}
return buffer;
}
diff --git a/src/plugins/phonon/gstreamer/gstreamer.pro b/src/plugins/phonon/gstreamer/gstreamer.pro
index 1013205992..02e0848b96 100644
--- a/src/plugins/phonon/gstreamer/gstreamer.pro
+++ b/src/plugins/phonon/gstreamer/gstreamer.pro
@@ -58,7 +58,7 @@ SOURCES += $$PHONON_GSTREAMER_DIR/abstractrenderer.cpp \
$$PHONON_GSTREAMER_DIR/volumefadereffect.cpp \
$$PHONON_GSTREAMER_DIR/widgetrenderer.cpp
-!embedded {
+x11 {
HEADERS += $$PHONON_GSTREAMER_DIR/x11renderer.h
SOURCES += $$PHONON_GSTREAMER_DIR/x11renderer.cpp
}
diff --git a/src/plugins/phonon/mmf/mmf.pro b/src/plugins/phonon/mmf/mmf.pro
index ac111881bf..2188505a4a 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
@@ -125,7 +125,11 @@ symbian {
LIBS += -lmediaclientaudiostream # For CMdaAudioOutputStream
# These are for effects.
- LIBS += -lAudioEqualizerEffect -lBassBoostEffect -lDistanceAttenuationEffect -lDopplerBase -lEffectBase -lEnvironmentalReverbEffect -lListenerDopplerEffect -lListenerLocationEffect -lListenerOrientationEffect -lLocationBase -lLoudnessEffect -lOrientationBase -lSourceDopplerEffect -lSourceLocationEffect -lSourceOrientationEffect -lStereoWideningEffect
+ is_using_gnupoc {
+ LIBS += -laudioequalizereffect -lbassboosteffect -ldistanceattenuationeffect -ldopplerbase -leffectbase -lenvironmentalreverbeffect -llistenerdopplereffect -llistenerlocationeffect -llistenerorientationeffect -llocationbase -lloudnesseffect -lorientationbase -lsourcedopplereffect -lsourcelocationeffect -lsourceorientationeffect -lstereowideningeffect
+ } else {
+ LIBS += -lAudioEqualizerEffect -lBassBoostEffect -lDistanceAttenuationEffect -lDopplerBase -lEffectBase -lEnvironmentalReverbEffect -lListenerDopplerEffect -lListenerLocationEffect -lListenerOrientationEffect -lLocationBase -lLoudnessEffect -lOrientationBase -lSourceDopplerEffect -lSourceLocationEffect -lSourceOrientationEffect -lStereoWideningEffect
+ }
# This is needed for having the .qtplugin file properly created on Symbian.
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/phonon_backend
diff --git a/src/plugins/platforms/cocoa/cocoa.pro b/src/plugins/platforms/cocoa/cocoa.pro
new file mode 100644
index 0000000000..1633ee45c7
--- /dev/null
+++ b/src/plugins/platforms/cocoa/cocoa.pro
@@ -0,0 +1,29 @@
+TARGET = qcocoa
+include(../../qpluginbase.pri)
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
+
+OBJECTIVE_SOURCES = main.mm \
+ qcocoaintegration.mm \
+ qcocoawindowsurface.mm \
+ qcocoawindow.mm \
+ qnsview.mm \
+ qcocoaeventloopintegration.mm \
+ qcocoaautoreleasepool.mm \
+ qnswindowdelegate.mm
+
+OBJECTIVE_HEADERS = qcocoaintegration.h \
+ qcocoawindowsurface.h \
+ qcocoawindow.h \
+ qnsview.h \
+ qcocoaeventloopintegration.h \
+ qcocoaautoreleasepool.h \
+ qnswindowdelegate.h
+
+#add libz for freetype.
+LIBS += -lz
+LIBS += -framework cocoa
+
+include(../fontdatabases/coretext/coretext.pri)
+target.path += $$[QT_INSTALL_PLUGINS]/platforms
+INSTALLS += target
+
diff --git a/src/plugins/platforms/cocoa/main.mm b/src/plugins/platforms/cocoa/main.mm
new file mode 100644
index 0000000000..8be8883932
--- /dev/null
+++ b/src/plugins/platforms/cocoa/main.mm
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <Cocoa/Cocoa.h>
+
+#include <QtGui/QPlatformIntegrationPlugin>
+#include "qcocoaintegration.h"
+
+QT_BEGIN_NAMESPACE
+
+class QCocoaIntegrationPlugin : public QPlatformIntegrationPlugin
+{
+public:
+ QStringList keys() const;
+ QPlatformIntegration *create(const QString&, const QStringList&);
+};
+
+QStringList QCocoaIntegrationPlugin::keys() const
+{
+ QStringList list;
+ list << "Cocoa";
+ return list;
+}
+
+QPlatformIntegration * QCocoaIntegrationPlugin::create(const QString& system, const QStringList& paramList)
+{
+ Q_UNUSED(paramList);
+ if (system.toLower() == "cocoa")
+ return new QCocoaIntegration;
+
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(Cocoa, QCocoaIntegrationPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/cocoa/qcocoaautoreleasepool.h b/src/plugins/platforms/cocoa/qcocoaautoreleasepool.h
new file mode 100644
index 0000000000..47b94d18af
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoaautoreleasepool.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 QCOCOAAUTORELEASEPOOL_H
+#define QCOCOAAUTORELEASEPOOL_H
+
+#include <Cocoa/Cocoa.h>
+
+class QCocoaAutoReleasePool
+{
+public:
+ QCocoaAutoReleasePool();
+ ~QCocoaAutoReleasePool();
+
+private:
+ NSAutoreleasePool *pool;
+};
+
+#endif // QCOCOAAUTORELEASEPOOL_H
diff --git a/src/plugins/platforms/cocoa/qcocoaautoreleasepool.mm b/src/plugins/platforms/cocoa/qcocoaautoreleasepool.mm
new file mode 100644
index 0000000000..9a18fe2c38
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoaautoreleasepool.mm
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qcocoaautoreleasepool.h"
+
+QCocoaAutoReleasePool::QCocoaAutoReleasePool()
+{
+ pool = [[NSAutoreleasePool alloc] init];
+}
+
+QCocoaAutoReleasePool::~QCocoaAutoReleasePool()
+{
+ [pool release];
+}
diff --git a/src/plugins/platforms/cocoa/qcocoaeventloopintegration.h b/src/plugins/platforms/cocoa/qcocoaeventloopintegration.h
new file mode 100644
index 0000000000..8c219447f2
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoaeventloopintegration.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 QCOCAEVENTLOOPINTEGRATION_H
+#define QCOCAEVENTLOOPINTEGRATION_H
+
+#include <Cocoa/Cocoa.h>
+
+#include <QPlatformEventLoopIntegration>
+
+@interface OurApplication: NSApplication
+{
+ bool shouldKeepRunning;
+}
+
+- (void) run;
+- (void) processEvents: (int) msec;
+
+@end
+
+class QCocoaEventLoopIntegration : public QPlatformEventLoopIntegration
+{
+public:
+ QCocoaEventLoopIntegration();
+ void processEvents( qint64 msec );
+ void wakeup();
+
+ static int wakeupEventId;
+private:
+ OurApplication *app;
+};
+
+
+
+#endif // QCOCAEVENTLOOPINTEGRATION_H
+
diff --git a/src/plugins/platforms/cocoa/qcocoaeventloopintegration.mm b/src/plugins/platforms/cocoa/qcocoaeventloopintegration.mm
new file mode 100644
index 0000000000..b184f90c76
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoaeventloopintegration.mm
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qcocoaeventloopintegration.h"
+
+#import <Cocoa/Cocoa.h>
+
+#include "qcocoaautoreleasepool.h"
+
+#include <QtCore/QElapsedTimer>
+
+#include <QDebug>
+
+@implementation OurApplication
+
+- (void) run
+{
+ QCocoaAutoReleasePool pool;
+ [self finishLaunching];
+
+ shouldKeepRunning = YES;
+}
+
+- (void) processEvents : (int) msec
+{
+ QCocoaAutoReleasePool pool;
+ Q_UNUSED(pool);
+
+ QElapsedTimer timer;
+ timer.start();
+
+ NSTimeInterval seconds = NSTimeInterval(msec)/1000;
+ id untilDate = [NSDate dateWithTimeIntervalSinceNow:seconds];
+ bool continueLooping = true;
+ while ((timer.elapsed() < (msec-1)) && continueLooping) {
+ NSEvent *event =
+ [self nextEventMatchingMask:NSAnyEventMask
+ untilDate:untilDate
+ inMode:NSDefaultRunLoopMode
+ dequeue:YES];
+ if ([event type] == NSApplicationDefined
+ && [event subtype] == QCocoaEventLoopIntegration::wakeupEventId) {
+ continueLooping = false;
+ } else {
+ [self sendEvent:event];
+ }
+
+ }
+ [self updateWindows];
+}
+
+@end
+
+int QCocoaEventLoopIntegration::wakeupEventId = SHRT_MAX;
+
+QCocoaEventLoopIntegration::QCocoaEventLoopIntegration() :
+ QPlatformEventLoopIntegration()
+{
+ app = (OurApplication *)[OurApplication sharedApplication];
+ [app run];
+}
+
+void QCocoaEventLoopIntegration::processEvents(qint64 msec)
+{
+ [app processEvents:msec];
+}
+
+void QCocoaEventLoopIntegration::wakeup()
+{
+ QCocoaAutoReleasePool pool;
+ Q_UNUSED(pool);
+
+ NSPoint p = NSMakePoint(0,0);
+ NSWindow *nswin = [app keyWindow];
+ double timestamp = (double)(AbsoluteToDuration(UpTime())) / 1000.0;
+ NSEvent *event = [NSEvent
+ otherEventWithType:NSApplicationDefined
+ location:NSZeroPoint
+ modifierFlags:0
+ timestamp: timestamp
+ windowNumber:[nswin windowNumber]
+ context:0
+ subtype:QCocoaEventLoopIntegration::wakeupEventId
+ data1:0
+ data2:0
+ ];
+ [app postEvent:event atStart:NO];
+
+}
+
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.h b/src/plugins/platforms/cocoa/qcocoaintegration.h
new file mode 100644
index 0000000000..e7ecf2a65b
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 QPLATFORMINTEGRATION_COCOA_H
+#define QPLATFORMINTEGRATION_COCOA_H
+
+#include <Cocoa/Cocoa.h>
+
+#include "qcocoaautoreleasepool.h"
+
+#include <QtGui/QPlatformIntegration>
+
+QT_BEGIN_NAMESPACE
+
+class QCocoaScreen : public QPlatformScreen
+{
+public:
+ QCocoaScreen(int screenIndex);
+ ~QCocoaScreen();
+
+ QRect geometry() const { return m_geometry; }
+ int depth() const { return m_depth; }
+ QImage::Format format() const { return m_format; }
+ QSize physicalSize() const { return m_physicalSize; }
+
+public:
+ NSScreen *m_screen;
+ QRect m_geometry;
+ int m_depth;
+ QImage::Format m_format;
+ QSize m_physicalSize;
+};
+
+class QCocoaIntegration : public QPlatformIntegration
+{
+public:
+ QCocoaIntegration();
+ ~QCocoaIntegration();
+
+ QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
+ QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId = 0) const;
+ QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const;
+
+ QList<QPlatformScreen *> screens() const { return mScreens; }
+
+ QPlatformFontDatabase *fontDatabase() const;
+
+ QPlatformEventLoopIntegration *createEventLoopIntegration() const;
+
+private:
+ QList<QPlatformScreen *> mScreens;
+ QPlatformFontDatabase *mFontDb;
+
+ QCocoaAutoReleasePool *mPool;
+};
+
+QT_END_NAMESPACE
+
+#endif
+
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm
new file mode 100644
index 0000000000..79d5f51ee7
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm
@@ -0,0 +1,122 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qcocoaintegration.h"
+
+#include "qcocoawindow.h"
+#include "qcocoawindowsurface.h"
+#include "qcocoaeventloopintegration.h"
+
+#include "qcoretextfontdatabase.h"
+
+#include <QtGui/QApplication>
+
+#include <private/qpixmap_raster_p.h>
+
+QT_BEGIN_NAMESPACE
+
+QCocoaScreen::QCocoaScreen(int screenIndex)
+ :QPlatformScreen()
+{
+ m_screen = [[NSScreen screens] objectAtIndex:screenIndex];
+ NSRect rect = [m_screen frame];
+ m_geometry = QRect(rect.origin.x,rect.origin.y,rect.size.width,rect.size.height);
+
+ m_format = QImage::Format_ARGB32;
+
+ m_depth = NSBitsPerPixelFromDepth([m_screen depth]);
+
+ const int dpi = 72;
+ const qreal inch = 25.4;
+ m_physicalSize = QSize(qRound(m_geometry.width() * inch / dpi), qRound(m_geometry.height() *inch / dpi));
+}
+
+QCocoaScreen::~QCocoaScreen()
+{
+}
+
+QCocoaIntegration::QCocoaIntegration()
+ : mFontDb(new QCoreTextFontDatabase())
+{
+ mPool = new QCocoaAutoReleasePool;
+
+ //Make sure we have a nsapplication :)
+ [OurApplication sharedApplication];
+// [[OurApplication alloc] init];
+
+ NSArray *screens = [NSScreen screens];
+ for (uint i = 0; i < [screens count]; i++) {
+ QCocoaScreen *screen = new QCocoaScreen(i);
+ mScreens.append(screen);
+ }
+}
+
+QCocoaIntegration::~QCocoaIntegration()
+{
+ delete mPool;
+}
+
+QPixmapData *QCocoaIntegration::createPixmapData(QPixmapData::PixelType type) const
+{
+ return new QRasterPixmapData(type);
+}
+
+QPlatformWindow *QCocoaIntegration::createPlatformWindow(QWidget *widget, WId winId) const
+{
+ Q_UNUSED(winId);
+ return new QCocoaWindow(widget);
+}
+
+QWindowSurface *QCocoaIntegration::createWindowSurface(QWidget *widget, WId winId) const
+{
+ return new QCocoaWindowSurface(widget,winId);
+}
+
+QPlatformFontDatabase *QCocoaIntegration::fontDatabase() const
+{
+ return mFontDb;
+}
+
+QPlatformEventLoopIntegration *QCocoaIntegration::createEventLoopIntegration() const
+{
+ return new QCocoaEventLoopIntegration();
+}
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h
new file mode 100644
index 0000000000..660e9f8b7b
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoawindow.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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$
+**
+****************************************************************************/
+
+#ifndef QCOCOAWINDOW_H
+#define QCOCOAWINDOW_H
+
+#include <Cocoa/Cocoa.h>
+
+#include <QPlatformWindow>
+
+QT_BEGIN_NAMESPACE
+
+class QCocoaWindow : public QPlatformWindow
+{
+public:
+ QCocoaWindow(QWidget *tlw);
+ ~QCocoaWindow();
+
+ void setGeometry(const QRect &rect);
+
+ void setVisible(bool visible);
+
+ WId winId() const;
+
+ NSView *contentView() const;
+ void setContentView(NSView *contentView);
+
+ void windowDidResize();
+
+private:
+ NSWindow *m_nsWindow;
+};
+
+QT_END_NAMESPACE
+
+#endif // QCOCOAWINDOW_H
+
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
new file mode 100644
index 0000000000..f004cb8288
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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 "qcocoawindow.h"
+#include "qnswindowdelegate.h"
+#include "qcocoaautoreleasepool.h"
+
+#include <QWidget>
+
+#include <QtGui/QApplication>
+
+#include <QWindowSystemInterface>
+
+#include <QDebug>
+
+QCocoaWindow::QCocoaWindow(QWidget *tlw)
+ : QPlatformWindow(tlw)
+{
+ QCocoaAutoReleasePool pool;
+ const QRect geo = tlw->geometry();
+ NSRect frame = NSMakeRect(geo.x(), geo.y(), geo.width(), geo.height());
+
+ m_nsWindow = [[NSWindow alloc] initWithContentRect:frame
+ styleMask:NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask
+ backing:NSBackingStoreBuffered
+ defer:YES];
+
+ QNSWindowDelegate *delegate = [[QNSWindowDelegate alloc] initWithQCocoaWindow:this];
+ [m_nsWindow setDelegate:delegate];
+
+ [m_nsWindow makeKeyAndOrderFront:nil];
+ [m_nsWindow setAcceptsMouseMovedEvents:YES];
+}
+
+QCocoaWindow::~QCocoaWindow()
+{
+}
+
+void QCocoaWindow::setGeometry(const QRect &rect)
+{
+ QPlatformWindow::setGeometry(rect);
+
+ NSRect bounds = NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height());
+ [[m_nsWindow contentView]setFrameSize:bounds.size];
+}
+
+void QCocoaWindow::setVisible(bool visible)
+{
+ Q_UNUSED(visible);
+}
+
+WId QCocoaWindow::winId() const
+{
+ return WId([m_nsWindow windowNumber]);
+}
+
+NSView *QCocoaWindow::contentView() const
+{
+ return [m_nsWindow contentView];
+}
+
+void QCocoaWindow::setContentView(NSView *contentView)
+{
+ [m_nsWindow setContentView:contentView];
+}
+
+void QCocoaWindow::windowDidResize()
+{
+ //jlind: XXX This isn't ideal. Eventdispatcher does not run when resizing...
+ NSRect rect = [[m_nsWindow contentView]frame];
+ QRect geo(rect.origin.x,rect.origin.y,rect.size.width,rect.size.height);
+ if (geometry() != geo) {
+ widget()->setGeometry(geo);
+ QResizeEvent e(geo.size(), geometry().size());
+ setGeometry(geo);
+ QApplication::sendEvent(widget(), &e);
+ widget()->repaint();
+ }
+}
diff --git a/src/plugins/platforms/cocoa/qcocoawindowsurface.h b/src/plugins/platforms/cocoa/qcocoawindowsurface.h
new file mode 100644
index 0000000000..35f40642ab
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoawindowsurface.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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$
+**
+****************************************************************************/
+
+#ifndef QWINDOWSURFACE_COCOA_H
+#define QWINDOWSURFACE_COCOA_H
+
+#include <Cocoa/Cocoa.h>
+
+#include "qcocoawindow.h"
+#include "qnsview.h"
+
+#include <QtGui/private/qwindowsurface_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QCocoaWindowSurface : public QWindowSurface
+{
+public:
+ QCocoaWindowSurface(QWidget *window, WId wid);
+ ~QCocoaWindowSurface();
+
+ QPaintDevice *paintDevice();
+ void flush(QWidget *widget, const QRegion &region, const QPoint &offset);
+ void resize (const QSize &size);
+
+private:
+
+ QCocoaWindow *m_cocoaWindow;
+ QImage *m_image;
+ QNSView *m_contentView;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/cocoa/qcocoawindowsurface.mm b/src/plugins/platforms/cocoa/qcocoawindowsurface.mm
new file mode 100644
index 0000000000..443a48655e
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoawindowsurface.mm
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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 "qcocoawindowsurface.h"
+
+#include <QtCore/qdebug.h>
+
+#include <QtGui/QPainter>
+
+QT_BEGIN_NAMESPACE
+
+QRect flipedRect(const QRect &sourceRect,int height)
+{
+ if (!sourceRect.isValid())
+ return QRect();
+ QRect flippedRect = sourceRect;
+ flippedRect.moveTop(height - sourceRect.y());
+ return flippedRect;
+}
+
+QCocoaWindowSurface::QCocoaWindowSurface(QWidget *window, WId wId)
+ : QWindowSurface(window)
+{
+ m_cocoaWindow = static_cast<QCocoaWindow *>(window->platformWindow());
+
+ const QRect geo = window->geometry();
+ NSRect rect = NSMakeRect(geo.x(),geo.y(),geo.width(),geo.height());
+ m_contentView = [[QNSView alloc] initWithWidget:window];
+ m_cocoaWindow->setContentView(m_contentView);
+
+ m_image = new QImage(window->size(),QImage::Format_ARGB32);
+}
+
+QCocoaWindowSurface::~QCocoaWindowSurface()
+{
+ delete m_image;
+}
+
+QPaintDevice *QCocoaWindowSurface::paintDevice()
+{
+ return m_image;
+}
+
+void QCocoaWindowSurface::flush(QWidget *widget, const QRegion &region, const QPoint &offset)
+{
+ Q_UNUSED(widget);
+ Q_UNUSED(offset);
+
+ QRect geo = region.boundingRect();
+
+ NSRect rect = NSMakeRect(geo.x(), geo.y(), geo.width(), geo.height());
+ [m_contentView displayRect:rect];
+}
+
+void QCocoaWindowSurface::resize(const QSize &size)
+{
+ QWindowSurface::resize(size);
+ delete m_image;
+ m_image = new QImage(size,QImage::Format_ARGB32_Premultiplied);
+ NSSize newSize = NSMakeSize(size.width(),size.height());
+ [m_contentView setImage:m_image];
+
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h
new file mode 100644
index 0000000000..0523725c84
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qnsview.h
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 QNSVIEW_H
+#define QNSVIEW_H
+
+#include <Cocoa/Cocoa.h>
+
+#include <QtGui/QImage>
+
+@interface QNSView : NSView {
+ CGImageRef m_cgImage;
+ QWidget *m_widget;
+ Qt::MouseButtons m_buttons;
+}
+
+- (id)init;
+- (id)initWithWidget:(QWidget *)widget;
+
+- (void)setImage:(QImage *)image;
+- (void)drawRect:(NSRect)dirtyRect;
+
+- (BOOL)isFlipped;
+
+- (void)handleMouseEvent:(NSEvent *)theEvent;
+- (void)mouseDown:(NSEvent *)theEvent;
+- (void)mouseDragged:(NSEvent *)theEvent;
+- (void)mouseUp:(NSEvent *)theEvent;
+- (void)mouseMoved:(NSEvent *)theEvent;
+- (void)mouseEntered:(NSEvent *)theEvent;
+- (void)mouseExited:(NSEvent *)theEvent;
+- (void)rightMouseDown:(NSEvent *)theEvent;
+- (void)rightMouseDragged:(NSEvent *)theEvent;
+- (void)rightMouseUp:(NSEvent *)theEvent;
+- (void)otherMouseDown:(NSEvent *)theEvent;
+- (void)otherMouseDragged:(NSEvent *)theEvent;
+- (void)otherMouseUp:(NSEvent *)theEvent;
+
+@end
+
+#endif //QNSVIEW_H
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
new file mode 100644
index 0000000000..60de6ba56a
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -0,0 +1,211 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qnsview.h"
+
+#include <QtGui/QWindowSystemInterface>
+
+#include <QtCore/QDebug>
+
+@implementation QNSView
+
+- (id) init
+{
+ self = [super init];
+ if (self) {
+ m_cgImage = 0;
+ m_widget = 0;
+ m_buttons = Qt::NoButton;
+ }
+ return self;
+}
+
+- (id)initWithWidget:(QWidget *)widget {
+ self = [self init];
+ if (self) {
+ m_widget = widget;
+ }
+ return self;
+}
+
+- (void) setImage:(QImage *)image
+{
+ CGImageRelease(m_cgImage);
+
+ const uchar *imageData = image->bits();
+ int bitDepth = image->depth();
+ int colorBufferSize = 8;
+ int bytesPrLine = image->bytesPerLine();
+ int width = image->width();
+ int height = image->height();
+
+ CGColorSpaceRef cgColourSpaceRef = CGColorSpaceCreateDeviceRGB();
+
+ CGDataProviderRef cgDataProviderRef = CGDataProviderCreateWithData(
+ NULL,
+ imageData,
+ image->byteCount(),
+ NULL);
+
+ m_cgImage = CGImageCreate(width,
+ height,
+ colorBufferSize,
+ bitDepth,
+ bytesPrLine,
+ cgColourSpaceRef,
+ kCGImageAlphaNone,
+ cgDataProviderRef,
+ NULL,
+ false,
+ kCGRenderingIntentDefault);
+
+ CGColorSpaceRelease(cgColourSpaceRef);
+
+}
+
+- (void) drawRect:(NSRect)dirtyRect
+{
+ if (!m_cgImage)
+ return;
+
+ CGRect dirtyCGRect = NSRectToCGRect(dirtyRect);
+
+ NSGraphicsContext *nsGraphicsContext = [NSGraphicsContext currentContext];
+ CGContextRef cgContext = (CGContextRef) [nsGraphicsContext graphicsPort];
+
+ CGContextSaveGState( cgContext );
+ int dy = dirtyCGRect.origin.y + CGRectGetMaxY(dirtyCGRect);
+ CGContextTranslateCTM(cgContext, 0, dy);
+ CGContextScaleCTM(cgContext, 1, -1);
+
+ CGImageRef subImage = CGImageCreateWithImageInRect(m_cgImage, dirtyCGRect);
+ CGContextDrawImage(cgContext,dirtyCGRect,subImage);
+
+ CGContextRestoreGState(cgContext);
+
+ CGImageRelease(subImage);
+
+}
+
+- (BOOL) isFlipped
+{
+ return YES;
+}
+
+- (void)handleMouseEvent:(NSEvent *)theEvent;
+{
+ NSPoint point = [self convertPoint: [theEvent locationInWindow] fromView: nil];
+ QPoint qt_localPoint(point.x,point.y);
+
+ NSTimeInterval timestamp = [theEvent timestamp];
+ ulong qt_timestamp = timestamp * 1000;
+
+ QWindowSystemInterface::handleMouseEvent(m_widget,qt_timestamp,qt_localPoint,QPoint(),m_buttons);
+
+}
+ - (void)mouseDown:(NSEvent *)theEvent
+ {
+ m_buttons |= Qt::LeftButton;
+ [self handleMouseEvent:theEvent];
+ }
+ - (void)mouseDragged:(NSEvent *)theEvent
+ {
+ if (!(m_buttons & Qt::LeftButton))
+ qWarning("Internal Mousebutton tracking invalid(missing Qt::LeftButton");
+ [self handleMouseEvent:theEvent];
+ }
+ - (void)mouseUp:(NSEvent *)theEvent
+ {
+ m_buttons &= QFlag(~int(Qt::LeftButton));
+ [self handleMouseEvent:theEvent];
+ }
+
+- (void)mouseMoved:(NSEvent *)theEvent
+{
+ qDebug() << "mouseMove";
+ [self handleMouseEvent:theEvent];
+}
+- (void)mouseEntered:(NSEvent *)theEvent
+{
+ Q_UNUSED(theEvent);
+ QWindowSystemInterface::handleEnterEvent(m_widget);
+}
+- (void)mouseExited:(NSEvent *)theEvent
+{
+ Q_UNUSED(theEvent);
+ QWindowSystemInterface::handleLeaveEvent(m_widget);
+}
+- (void)rightMouseDown:(NSEvent *)theEvent
+{
+ m_buttons |= Qt::RightButton;
+ [self handleMouseEvent:theEvent];
+}
+- (void)rightMouseDragged:(NSEvent *)theEvent
+{
+ if (!(m_buttons & Qt::LeftButton))
+ qWarning("Internal Mousebutton tracking invalid(missing Qt::LeftButton");
+ [self handleMouseEvent:theEvent];
+}
+- (void)rightMouseUp:(NSEvent *)theEvent
+{
+ m_buttons &= QFlag(~int(Qt::RightButton));
+ [self handleMouseEvent:theEvent];
+}
+- (void)otherMouseDown:(NSEvent *)theEvent
+{
+ m_buttons |= Qt::RightButton;
+ [self handleMouseEvent:theEvent];
+}
+- (void)otherMouseDragged:(NSEvent *)theEvent
+{
+ if (!(m_buttons & Qt::LeftButton))
+ qWarning("Internal Mousebutton tracking invalid(missing Qt::LeftButton");
+ [self handleMouseEvent:theEvent];
+}
+- (void)otherMouseUp:(NSEvent *)theEvent
+{
+ m_buttons &= QFlag(~int(Qt::MiddleButton));
+ [self handleMouseEvent:theEvent];
+}
+
+
+
+@end
diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.h b/src/plugins/platforms/cocoa/qnswindowdelegate.h
new file mode 100644
index 0000000000..9fc1d63682
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qnswindowdelegate.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 QNSWINDOWDELEGATE_H
+#define QNSWINDOWDELEGATE_H
+
+#include <Cocoa/Cocoa.h>
+
+#include "qcocoawindow.h"
+
+@interface QNSWindowDelegate : NSObject <NSWindowDelegate>
+{
+ QCocoaWindow *m_cocoaWindow;
+}
+
+- (id)initWithQCocoaWindow: (QCocoaWindow *) cocoaWindow;
+
+- (void)windowDidResize:(NSNotification *)notification;
+- (void)windowWillClose:(NSNotification *)notification;
+
+@end
+
+#endif // QNSWINDOWDELEGATE_H
diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.mm b/src/plugins/platforms/cocoa/qnswindowdelegate.mm
new file mode 100644
index 0000000000..c04602b518
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qnswindowdelegate.mm
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qnswindowdelegate.h"
+
+#include <QDebug>
+#include <QWindowSystemInterface>
+
+@implementation QNSWindowDelegate
+
+- (id) initWithQCocoaWindow: (QCocoaWindow *) cocoaWindow
+{
+ self = [super init];
+
+ if (self) {
+ m_cocoaWindow = cocoaWindow;
+ }
+ return self;
+}
+
+- (void)windowDidResize:(NSNotification *)notification
+{
+ Q_UNUSED(notification);
+ if (m_cocoaWindow) {
+ m_cocoaWindow->windowDidResize();
+ }
+}
+
+- (void)windowWillClose:(NSNotification *)notification
+{
+ Q_UNUSED(notification);
+ QWindowSystemInterface::handleCloseEvent(m_cocoaWindow->widget());
+}
+
+@end
diff --git a/src/plugins/platforms/directfb/directfb.pro b/src/plugins/platforms/directfb/directfb.pro
new file mode 100644
index 0000000000..65c49e386f
--- /dev/null
+++ b/src/plugins/platforms/directfb/directfb.pro
@@ -0,0 +1,35 @@
+TARGET = qdirectfb
+include(../../qpluginbase.pri)
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
+
+isEmpty(DIRECTFB_LIBS) {
+ DIRECTFB_LIBS = -ldirectfb -lfusion -ldirect -lpthread
+}
+isEmpty(DIRECTFB_INCLUDEPATH) {
+ DIRECTFB_INCLUDEPATH = /usr/include/directfb
+}
+
+INCLUDEPATH += $$DIRECTFB_INCLUDEPATH
+LIBS += $$DIRECTFB_LIBS
+
+SOURCES = main.cpp \
+ qdirectfbintegration.cpp \
+ qdirectfbwindowsurface.cpp \
+ qdirectfbblitter.cpp \
+ qdirectfbconvenience.cpp \
+ qdirectfbinput.cpp \
+ qdirectfbcursor.cpp \
+ qdirectfbwindow.cpp \
+ qdirectfbglcontext.cpp
+HEADERS = qdirectfbintegration.h \
+ qdirectfbwindowsurface.h \
+ qdirectfbblitter.h \
+ qdirectfbconvenience.h \
+ qdirectfbinput.h \
+ qdirectfbcursor.h \
+ qdirectfbwindow.h \
+ qdirectfbglcontext.h
+
+include(../fontdatabases/genericunix/genericunix.pri)
+target.path += $$[QT_INSTALL_PLUGINS]/platforms
+INSTALLS += target
diff --git a/src/plugins/platforms/directfb/main.cpp b/src/plugins/platforms/directfb/main.cpp
new file mode 100644
index 0000000000..f4ece32818
--- /dev/null
+++ b/src/plugins/platforms/directfb/main.cpp
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <QtGui/QPlatformIntegrationPlugin>
+#include "qdirectfbintegration.h"
+
+QT_BEGIN_NAMESPACE
+
+class QDirectFbIntegrationPlugin : public QPlatformIntegrationPlugin
+{
+public:
+ QStringList keys() const;
+ QPlatformIntegration *create(const QString&, const QStringList&);
+};
+
+QStringList QDirectFbIntegrationPlugin::keys() const
+{
+ QStringList list;
+ list << "directfb";
+ return list;
+}
+
+QPlatformIntegration * QDirectFbIntegrationPlugin::create(const QString& system, const QStringList& paramList)
+{
+ Q_UNUSED(paramList);
+ if (system.toLower() == "directfb")
+ return new QDirectFbIntegration;
+
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(directfb, QDirectFbIntegrationPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/directfb/qdirectfbblitter.cpp b/src/plugins/platforms/directfb/qdirectfbblitter.cpp
new file mode 100644
index 0000000000..d379b651ca
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbblitter.cpp
@@ -0,0 +1,155 @@
+/****************************************************************************
+**
+** 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 "qdirectfbblitter.h"
+#include "qdirectfbconvenience.h"
+
+#include <QtGui/private/qpixmap_blitter_p.h>
+
+#include <QDebug>
+
+#include <directfb.h>
+
+QDirectFbBlitter::QDirectFbBlitter(const QSize &rect, IDirectFBSurface *surface)
+ : QBlittable(rect, QBlittable::Capabilities(QBlittable::SolidRectCapability
+ |QBlittable::SourcePixmapCapability
+ |QBlittable::SourceOverPixmapCapability
+ |QBlittable::SourceOverScaledPixmapCapability))
+{
+ if (surface) {
+ m_surface = surface;
+ } else {
+ DFBSurfaceDescription surfaceDesc;
+ memset(&surfaceDesc,0,sizeof(DFBSurfaceDescription));
+ surfaceDesc.width = rect.width();
+ surfaceDesc.height = rect.height();
+ surfaceDesc.caps = DSCAPS_PREMULTIPLIED;
+ surfaceDesc.pixelformat = DSPF_ARGB;
+ surfaceDesc.flags = DFBSurfaceDescriptionFlags(DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_CAPS | DSDESC_PIXELFORMAT);
+
+ IDirectFB *dfb = QDirectFbConvenience::dfbInterface();
+ dfb->CreateSurface(dfb,&surfaceDesc, &m_surface);
+ m_surface->Clear(m_surface,0,0,0,0);
+ }
+
+}
+
+QDirectFbBlitter::~QDirectFbBlitter()
+{
+ unlock();
+ m_surface->Release(m_surface);
+}
+
+void QDirectFbBlitter::fillRect(const QRectF &rect, const QColor &color)
+{
+ m_surface->SetColor(m_surface, color.red(), color.green(), color.blue(), color.alpha());
+// When the blitter api supports non opaque blits, also remember to change
+// qpixmap_blitter.cpp::fill
+// DFBSurfaceDrawingFlags drawingFlags = color.alpha() ? DSDRAW_BLEND : DSDRAW_NOFX;
+// m_surface->SetDrawingFlags(m_surface, drawingFlags);
+ m_surface->SetDrawingFlags(m_surface, DSDRAW_NOFX);
+ m_surface->FillRectangle(m_surface, rect.x(), rect.y(),
+ rect.width(), rect.height());
+}
+
+void QDirectFbBlitter::drawPixmap(const QRectF &rect, const QPixmap &pixmap, const QRectF &srcRect)
+{
+ QPixmapData *data = pixmap.pixmapData();
+ Q_ASSERT(data->width() && data->height());
+ Q_ASSERT(data->classId() == QPixmapData::BlitterClass);
+ QBlittablePixmapData *blitPm = static_cast<QBlittablePixmapData*>(data);
+ QDirectFbBlitter *dfbBlitter = static_cast<QDirectFbBlitter *>(blitPm->blittable());
+ dfbBlitter->unlock();
+
+ IDirectFBSurface *s = dfbBlitter->m_surface;
+
+ DFBSurfaceBlittingFlags blittingFlags = DSBLIT_NOFX;
+ DFBSurfacePorterDuffRule porterDuff = DSPD_SRC;
+ if (pixmap.hasAlpha()) {
+ blittingFlags = DSBLIT_BLEND_ALPHACHANNEL;
+ porterDuff = DSPD_SRC_OVER;
+ }
+
+ m_surface->SetBlittingFlags(m_surface, DFBSurfaceBlittingFlags(blittingFlags));
+ m_surface->SetPorterDuff(m_surface,porterDuff);
+ m_surface->SetDstBlendFunction(m_surface,DSBF_INVSRCALPHA);
+
+ const DFBRectangle sRect = { srcRect.x(), srcRect.y(), srcRect.width(), srcRect.height() };
+
+ DFBResult result;
+ if (rect.width() == srcRect.width() && rect.height() == srcRect.height())
+ result = m_surface->Blit(m_surface, s, &sRect, rect.x(), rect.y());
+ else {
+ const DFBRectangle dRect = { rect.x(), rect.y(), rect.width(), rect.height() };
+ result = m_surface->StretchBlit(m_surface, s, &sRect, &dRect);
+ }
+ if (result != DFB_OK)
+ DirectFBError("QDirectFBBlitter::drawPixmap()", result);
+}
+
+QImage *QDirectFbBlitter::doLock()
+{
+ Q_ASSERT(m_surface);
+ Q_ASSERT(size().isValid());
+
+ void *mem;
+ int bpl;
+ const DFBResult result = m_surface->Lock(m_surface, DFBSurfaceLockFlags(DSLF_WRITE|DSLF_READ), static_cast<void**>(&mem), &bpl);
+ if (result == DFB_OK) {
+ DFBSurfacePixelFormat dfbFormat;
+ DFBSurfaceCapabilities dfbCaps;
+ m_surface->GetPixelFormat(m_surface,&dfbFormat);
+ m_surface->GetCapabilities(m_surface,&dfbCaps);
+ QImage::Format format = QDirectFbConvenience::imageFormatFromSurfaceFormat(dfbFormat, dfbCaps);
+ int w, h;
+ m_surface->GetSize(m_surface,&w,&h);
+ m_image = QImage(static_cast<uchar *>(mem),w,h,bpl,format);
+ } else {
+ DirectFBError("Failed to lock image", result);
+ }
+
+ return &m_image;
+}
+
+void QDirectFbBlitter::doUnlock()
+{
+ m_surface->Unlock(m_surface);
+}
diff --git a/src/plugins/platforms/directfb/qdirectfbblitter.h b/src/plugins/platforms/directfb/qdirectfbblitter.h
new file mode 100644
index 0000000000..1e874ba3d1
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbblitter.h
@@ -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 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 QDIRECTFBBLITTER_H
+#define QDIRECTFBBLITTER_H
+
+#include "qdirectfbconvenience.h"
+
+#include <private/qblittable_p.h>
+
+#include <directfb.h>
+
+class QDirectFbBlitter : public QBlittable
+{
+public:
+ QDirectFbBlitter(const QSize &size, IDirectFBSurface *surface = 0);
+ virtual ~QDirectFbBlitter();
+
+ virtual void fillRect(const QRectF &rect, const QColor &color);
+ virtual void drawPixmap(const QRectF &rect, const QPixmap &pixmap, const QRectF &subrect);
+
+protected:
+ virtual QImage *doLock();
+ virtual void doUnlock();
+
+ IDirectFBSurface *m_surface;
+ QImage m_image;
+
+ friend class QDirectFbConvenience;
+};
+
+class QDirectFbBlitterPixmapData : public QBlittablePixmapData
+{
+public:
+ QBlittable *createBlittable(const QSize &size) const { return new QDirectFbBlitter(size); }
+};
+
+#endif // QDIRECTFBBLITTER_H
diff --git a/src/plugins/platforms/directfb/qdirectfbconvenience.cpp b/src/plugins/platforms/directfb/qdirectfbconvenience.cpp
new file mode 100644
index 0000000000..91a1b3a5fa
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbconvenience.cpp
@@ -0,0 +1,376 @@
+/****************************************************************************
+**
+** 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 "qdirectfbconvenience.h"
+#include "qdirectfbblitter.h"
+
+#include <private/qpixmap_blitter_p.h>
+
+IDirectFB *QDirectFbConvenience::dfbInterface()
+{
+ static IDirectFB *dfb = 0;
+ if (!dfb) {
+ DFBResult result = DirectFBCreate(&dfb);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBConvenience: error creating DirectFB interface",result);
+ return 0;
+ }
+ }
+ return dfb;
+}
+
+IDirectFBDisplayLayer *QDirectFbConvenience::dfbDisplayLayer(int display)
+{
+ IDirectFBDisplayLayer *layer;
+ DFBResult result = QDirectFbConvenience::dfbInterface()->GetDisplayLayer(QDirectFbConvenience::dfbInterface(),display,&layer);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFbConvenience: "
+ "Unable to get primary display layer!", result);
+ }
+ return layer;
+}
+
+QImage::Format QDirectFbConvenience::imageFormatFromSurfaceFormat(const DFBSurfacePixelFormat format, const DFBSurfaceCapabilities caps)
+{
+ switch (format) {
+ case DSPF_LUT8:
+ return QImage::Format_Indexed8;
+ case DSPF_RGB24:
+ return QImage::Format_RGB888;
+ case DSPF_ARGB4444:
+ return QImage::Format_ARGB4444_Premultiplied;
+ case DSPF_RGB444:
+ return QImage::Format_RGB444;
+ case DSPF_RGB555:
+ case DSPF_ARGB1555:
+ return QImage::Format_RGB555;
+ case DSPF_RGB16:
+ return QImage::Format_RGB16;
+ case DSPF_ARGB6666:
+ return QImage::Format_ARGB6666_Premultiplied;
+ case DSPF_RGB18:
+ return QImage::Format_RGB666;
+ case DSPF_RGB32:
+ return QImage::Format_RGB32;
+ case DSPF_ARGB: {
+ if (caps & DSCAPS_PREMULTIPLIED)
+ return QImage::Format_ARGB32_Premultiplied;
+ else return QImage::Format_ARGB32; }
+ default:
+ break;
+ }
+ return QImage::Format_Invalid;
+
+}
+
+int QDirectFbConvenience::colorDepthForSurface(const DFBSurfacePixelFormat format)
+{
+ return ((0x1f << 7) & format) >> 7;
+}
+
+IDirectFBSurface *QDirectFbConvenience::dfbSurfaceForPixmapData(QPixmapData *pixmapData)
+{
+ QBlittablePixmapData *blittablePmData = static_cast<QBlittablePixmapData *>(pixmapData);
+ if (blittablePmData) {
+ QBlittable *blittable = blittablePmData->blittable();
+ QDirectFbBlitter *dfbBlitter = static_cast<QDirectFbBlitter *>(blittable);
+ return dfbBlitter->m_surface;
+ }
+ return 0;
+}
+
+Qt::MouseButton QDirectFbConvenience::mouseButton(DFBInputDeviceButtonIdentifier identifier)
+{
+ switch (identifier){
+ case DIBI_LEFT:
+ return Qt::LeftButton;
+ case DIBI_MIDDLE:
+ return Qt::MidButton;
+ case DIBI_RIGHT:
+ return Qt::RightButton;
+ default:
+ return Qt::NoButton;
+ }
+}
+
+Qt::MouseButtons QDirectFbConvenience::mouseButtons(DFBInputDeviceButtonMask mask)
+{
+ Qt::MouseButtons buttons = Qt::NoButton;
+
+ if (mask & DIBM_LEFT) {
+ buttons |= Qt::LeftButton;
+ }
+ if (mask & DIBM_MIDDLE) {
+ buttons |= Qt::MidButton;
+ }
+ if (mask & DIBM_RIGHT) {
+ buttons |= Qt::RightButton;
+ }
+ return buttons;
+}
+
+Qt::KeyboardModifiers QDirectFbConvenience::keyboardModifiers(DFBInputDeviceModifierMask mask)
+{
+ Qt::KeyboardModifiers modifiers = Qt::NoModifier;
+
+ if (mask & DIMM_SHIFT) {
+ modifiers |= Qt::ShiftModifier;
+ }
+ if (mask & DIMM_ALT) {
+ modifiers |= Qt::AltModifier;
+ }
+ if (mask & DIMM_ALTGR) {
+ modifiers |= Qt::MetaModifier;
+ }
+ if (mask & DIMM_CONTROL) {
+ modifiers |= Qt::ControlModifier;
+ }
+ if (mask & DIMM_META) {
+ modifiers | Qt::MetaModifier;
+ }
+ return modifiers;
+}
+
+QEvent::Type QDirectFbConvenience::eventType(DFBWindowEventType type)
+{
+ switch(type) {
+ case DWET_BUTTONDOWN:
+ return QEvent::MouseButtonPress;
+ case DWET_BUTTONUP:
+ return QEvent::MouseButtonRelease;
+ case DWET_MOTION:
+ return QEvent::MouseMove;
+ case DWET_WHEEL:
+ return QEvent::Wheel;
+ case DWET_KEYDOWN:
+ return QEvent::KeyPress;
+ case DWET_KEYUP:
+ return QEvent::KeyRelease;
+ default:
+ return QEvent::None;
+ }
+}
+QDirectFbKeyMap *QDirectFbConvenience::dfbKeymap = 0;
+QDirectFbKeyMap *QDirectFbConvenience::keyMap()
+{
+ if (!dfbKeymap)
+ dfbKeymap = new QDirectFbKeyMap();
+ return dfbKeymap;
+}
+
+QDirectFbKeyMap::QDirectFbKeyMap()
+{
+ insert(DIKS_BACKSPACE , Qt::Key_Backspace);
+ insert(DIKS_TAB , Qt::Key_Tab);
+ insert(DIKS_RETURN , Qt::Key_Return);
+ insert(DIKS_ESCAPE , Qt::Key_Escape);
+ insert(DIKS_DELETE , Qt::Key_Delete);
+
+ insert(DIKS_CURSOR_LEFT , Qt::Key_Left);
+ insert(DIKS_CURSOR_RIGHT , Qt::Key_Right);
+ insert(DIKS_CURSOR_UP , Qt::Key_Up);
+ insert(DIKS_CURSOR_DOWN , Qt::Key_Down);
+ insert(DIKS_INSERT , Qt::Key_Insert);
+ insert(DIKS_HOME , Qt::Key_Home);
+ insert(DIKS_END , Qt::Key_End);
+ insert(DIKS_PAGE_UP , Qt::Key_PageUp);
+ insert(DIKS_PAGE_DOWN , Qt::Key_PageDown);
+ insert(DIKS_PRINT , Qt::Key_Print);
+ insert(DIKS_PAUSE , Qt::Key_Pause);
+ insert(DIKS_SELECT , Qt::Key_Select);
+ insert(DIKS_GOTO , Qt::Key_OpenUrl);
+ insert(DIKS_CLEAR , Qt::Key_Clear);
+ insert(DIKS_MENU , Qt::Key_Menu);
+ insert(DIKS_HELP , Qt::Key_Help);
+
+ insert(DIKS_INTERNET , Qt::Key_HomePage);
+ insert(DIKS_MAIL , Qt::Key_LaunchMail);
+ insert(DIKS_FAVORITES , Qt::Key_Favorites);
+
+ insert(DIKS_BACK , Qt::Key_Back);
+ insert(DIKS_FORWARD , Qt::Key_Forward);
+ insert(DIKS_VOLUME_UP , Qt::Key_VolumeUp);
+ insert(DIKS_VOLUME_DOWN , Qt::Key_VolumeDown);
+ insert(DIKS_MUTE , Qt::Key_VolumeMute);
+ insert(DIKS_PLAYPAUSE , Qt::Key_Pause);
+ insert(DIKS_PLAY , Qt::Key_MediaPlay);
+ insert(DIKS_STOP , Qt::Key_MediaStop);
+ insert(DIKS_RECORD , Qt::Key_MediaRecord);
+ insert(DIKS_PREVIOUS , Qt::Key_MediaPrevious);
+ insert(DIKS_NEXT , Qt::Key_MediaNext);
+
+ insert(DIKS_F1 , Qt::Key_F1);
+ insert(DIKS_F2 , Qt::Key_F2);
+ insert(DIKS_F3 , Qt::Key_F3);
+ insert(DIKS_F4 , Qt::Key_F4);
+ insert(DIKS_F5 , Qt::Key_F5);
+ insert(DIKS_F6 , Qt::Key_F6);
+ insert(DIKS_F7 , Qt::Key_F7);
+ insert(DIKS_F8 , Qt::Key_F8);
+ insert(DIKS_F9 , Qt::Key_F9);
+ insert(DIKS_F10 , Qt::Key_F10);
+ insert(DIKS_F11 , Qt::Key_F11);
+ insert(DIKS_F12 , Qt::Key_F12);
+
+ insert(DIKS_SHIFT , Qt::Key_Shift);
+ insert(DIKS_CONTROL , Qt::Key_Control);
+ insert(DIKS_ALT , Qt::Key_Alt);
+ insert(DIKS_ALTGR , Qt::Key_AltGr);
+
+ insert(DIKS_META , Qt::Key_Meta);
+ insert(DIKS_SUPER , Qt::Key_Super_L); // ???
+ insert(DIKS_HYPER , Qt::Key_Hyper_L); // ???
+
+ insert(DIKS_CAPS_LOCK , Qt::Key_CapsLock);
+ insert(DIKS_NUM_LOCK , Qt::Key_NumLock);
+ insert(DIKS_SCROLL_LOCK , Qt::Key_ScrollLock);
+
+ insert(DIKS_DEAD_ABOVEDOT , Qt::Key_Dead_Abovedot);
+ insert(DIKS_DEAD_ABOVERING , Qt::Key_Dead_Abovering);
+ insert(DIKS_DEAD_ACUTE , Qt::Key_Dead_Acute);
+ insert(DIKS_DEAD_BREVE , Qt::Key_Dead_Breve);
+ insert(DIKS_DEAD_CARON , Qt::Key_Dead_Caron);
+ insert(DIKS_DEAD_CEDILLA , Qt::Key_Dead_Cedilla);
+ insert(DIKS_DEAD_CIRCUMFLEX , Qt::Key_Dead_Circumflex);
+ insert(DIKS_DEAD_DIAERESIS , Qt::Key_Dead_Diaeresis);
+ insert(DIKS_DEAD_DOUBLEACUTE , Qt::Key_Dead_Doubleacute);
+ insert(DIKS_DEAD_GRAVE , Qt::Key_Dead_Grave);
+ insert(DIKS_DEAD_IOTA , Qt::Key_Dead_Iota);
+ insert(DIKS_DEAD_MACRON , Qt::Key_Dead_Macron);
+ insert(DIKS_DEAD_OGONEK , Qt::Key_Dead_Ogonek);
+ insert(DIKS_DEAD_SEMIVOICED_SOUND , Qt::Key_Dead_Semivoiced_Sound);
+ insert(DIKS_DEAD_TILDE , Qt::Key_Dead_Tilde);
+ insert(DIKS_DEAD_VOICED_SOUND , Qt::Key_Dead_Voiced_Sound);
+ insert(DIKS_SPACE , Qt::Key_Space);
+ insert(DIKS_EXCLAMATION_MARK , Qt::Key_Exclam);
+ insert(DIKS_QUOTATION , Qt::Key_QuoteDbl);
+ insert(DIKS_NUMBER_SIGN , Qt::Key_NumberSign);
+ insert(DIKS_DOLLAR_SIGN , Qt::Key_Dollar);
+ insert(DIKS_PERCENT_SIGN , Qt::Key_Percent);
+ insert(DIKS_AMPERSAND , Qt::Key_Ampersand);
+ insert(DIKS_APOSTROPHE , Qt::Key_Apostrophe);
+ insert(DIKS_PARENTHESIS_LEFT , Qt::Key_ParenLeft);
+ insert(DIKS_PARENTHESIS_RIGHT , Qt::Key_ParenRight);
+ insert(DIKS_ASTERISK , Qt::Key_Asterisk);
+ insert(DIKS_PLUS_SIGN , Qt::Key_Plus);
+ insert(DIKS_COMMA , Qt::Key_Comma);
+ insert(DIKS_MINUS_SIGN , Qt::Key_Minus);
+ insert(DIKS_PERIOD , Qt::Key_Period);
+ insert(DIKS_SLASH , Qt::Key_Slash);
+ insert(DIKS_0 , Qt::Key_0);
+ insert(DIKS_1 , Qt::Key_1);
+ insert(DIKS_2 , Qt::Key_2);
+ insert(DIKS_3 , Qt::Key_3);
+ insert(DIKS_4 , Qt::Key_4);
+ insert(DIKS_5 , Qt::Key_5);
+ insert(DIKS_6 , Qt::Key_6);
+ insert(DIKS_7 , Qt::Key_7);
+ insert(DIKS_8 , Qt::Key_8);
+ insert(DIKS_9 , Qt::Key_9);
+ insert(DIKS_COLON , Qt::Key_Colon);
+ insert(DIKS_SEMICOLON , Qt::Key_Semicolon);
+ insert(DIKS_LESS_THAN_SIGN , Qt::Key_Less);
+ insert(DIKS_EQUALS_SIGN , Qt::Key_Equal);
+ insert(DIKS_GREATER_THAN_SIGN , Qt::Key_Greater);
+ insert(DIKS_QUESTION_MARK , Qt::Key_Question);
+ insert(DIKS_AT , Qt::Key_At);
+ insert(DIKS_CAPITAL_A , Qt::Key_A);
+ insert(DIKS_CAPITAL_B , Qt::Key_B);
+ insert(DIKS_CAPITAL_C , Qt::Key_C);
+ insert(DIKS_CAPITAL_D , Qt::Key_D);
+ insert(DIKS_CAPITAL_E , Qt::Key_E);
+ insert(DIKS_CAPITAL_F , Qt::Key_F);
+ insert(DIKS_CAPITAL_G , Qt::Key_G);
+ insert(DIKS_CAPITAL_H , Qt::Key_H);
+ insert(DIKS_CAPITAL_I , Qt::Key_I);
+ insert(DIKS_CAPITAL_J , Qt::Key_J);
+ insert(DIKS_CAPITAL_K , Qt::Key_K);
+ insert(DIKS_CAPITAL_L , Qt::Key_L);
+ insert(DIKS_CAPITAL_M , Qt::Key_M);
+ insert(DIKS_CAPITAL_N , Qt::Key_N);
+ insert(DIKS_CAPITAL_O , Qt::Key_O);
+ insert(DIKS_CAPITAL_P , Qt::Key_P);
+ insert(DIKS_CAPITAL_Q , Qt::Key_Q);
+ insert(DIKS_CAPITAL_R , Qt::Key_R);
+ insert(DIKS_CAPITAL_S , Qt::Key_S);
+ insert(DIKS_CAPITAL_T , Qt::Key_T);
+ insert(DIKS_CAPITAL_U , Qt::Key_U);
+ insert(DIKS_CAPITAL_V , Qt::Key_V);
+ insert(DIKS_CAPITAL_W , Qt::Key_W);
+ insert(DIKS_CAPITAL_X , Qt::Key_X);
+ insert(DIKS_CAPITAL_Y , Qt::Key_Y);
+ insert(DIKS_CAPITAL_Z , Qt::Key_Z);
+ insert(DIKS_SQUARE_BRACKET_LEFT , Qt::Key_BracketLeft);
+ insert(DIKS_BACKSLASH , Qt::Key_Backslash);
+ insert(DIKS_SQUARE_BRACKET_RIGHT , Qt::Key_BracketRight);
+ insert(DIKS_CIRCUMFLEX_ACCENT , Qt::Key_AsciiCircum);
+ insert(DIKS_UNDERSCORE , Qt::Key_Underscore);
+ insert(DIKS_SMALL_A , Qt::Key_A);
+ insert(DIKS_SMALL_B , Qt::Key_B);
+ insert(DIKS_SMALL_C , Qt::Key_C);
+ insert(DIKS_SMALL_D , Qt::Key_D);
+ insert(DIKS_SMALL_E , Qt::Key_E);
+ insert(DIKS_SMALL_F , Qt::Key_F);
+ insert(DIKS_SMALL_G , Qt::Key_G);
+ insert(DIKS_SMALL_H , Qt::Key_H);
+ insert(DIKS_SMALL_I , Qt::Key_I);
+ insert(DIKS_SMALL_J , Qt::Key_J);
+ insert(DIKS_SMALL_K , Qt::Key_K);
+ insert(DIKS_SMALL_L , Qt::Key_L);
+ insert(DIKS_SMALL_M , Qt::Key_M);
+ insert(DIKS_SMALL_N , Qt::Key_N);
+ insert(DIKS_SMALL_O , Qt::Key_O);
+ insert(DIKS_SMALL_P , Qt::Key_P);
+ insert(DIKS_SMALL_Q , Qt::Key_Q);
+ insert(DIKS_SMALL_R , Qt::Key_R);
+ insert(DIKS_SMALL_S , Qt::Key_S);
+ insert(DIKS_SMALL_T , Qt::Key_T);
+ insert(DIKS_SMALL_U , Qt::Key_U);
+ insert(DIKS_SMALL_V , Qt::Key_V);
+ insert(DIKS_SMALL_W , Qt::Key_W);
+ insert(DIKS_SMALL_X , Qt::Key_X);
+ insert(DIKS_SMALL_Y , Qt::Key_Y);
+ insert(DIKS_SMALL_Z , Qt::Key_Z);
+ insert(DIKS_CURLY_BRACKET_LEFT , Qt::Key_BraceLeft);
+ insert(DIKS_VERTICAL_BAR , Qt::Key_Bar);
+ insert(DIKS_CURLY_BRACKET_RIGHT , Qt::Key_BraceRight);
+ insert(DIKS_TILDE , Qt::Key_AsciiTilde);
+}
diff --git a/src/plugins/platforms/directfb/qdirectfbconvenience.h b/src/plugins/platforms/directfb/qdirectfbconvenience.h
new file mode 100644
index 0000000000..3669159974
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbconvenience.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** 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 QDIRECTFBCONVENIENCE_H
+#define QDIRECTFBCONVENIENCE_H
+
+#include <QtGui/qimage.h>
+#include <QtCore/QHash>
+#include <QtCore/QEvent>
+#include <QtGui/QPixmap>
+
+#include <directfb.h>
+
+class QDirectFbKeyMap: public QHash<DFBInputDeviceKeySymbol, Qt::Key>
+{
+public:
+ QDirectFbKeyMap();
+};
+
+
+class QDirectFbConvenience
+{
+public:
+ static QImage::Format imageFormatFromSurfaceFormat(const DFBSurfacePixelFormat format, const DFBSurfaceCapabilities caps);
+ static bool pixelFomatHasAlpha(const DFBSurfacePixelFormat format) { return (1 << 16) & format; }
+ static int colorDepthForSurface(const DFBSurfacePixelFormat format);
+
+ //This is set by the graphicssystem constructor
+ static IDirectFB *dfbInterface();
+ static IDirectFBDisplayLayer *dfbDisplayLayer(int display = DLID_PRIMARY);
+
+ static IDirectFBSurface *dfbSurfaceForPixmapData(QPixmapData *);
+
+ static Qt::MouseButton mouseButton(DFBInputDeviceButtonIdentifier identifier);
+ static Qt::MouseButtons mouseButtons(DFBInputDeviceButtonMask mask);
+ static Qt::KeyboardModifiers keyboardModifiers(DFBInputDeviceModifierMask mask);
+ static QEvent::Type eventType(DFBWindowEventType type);
+
+ static QDirectFbKeyMap *keyMap();
+
+private:
+ static QDirectFbKeyMap *dfbKeymap;
+ friend class QDirectFbIntegration;
+};
+
+#endif // QDIRECTFBCONVENIENCE_H
diff --git a/src/plugins/platforms/directfb/qdirectfbcursor.cpp b/src/plugins/platforms/directfb/qdirectfbcursor.cpp
new file mode 100644
index 0000000000..51502f8d38
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbcursor.cpp
@@ -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 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 "qdirectfbcursor.h"
+#include "qdirectfbconvenience.h"
+
+
+QDirectFBCursor::QDirectFBCursor(QPlatformScreen* screen) :
+ QPlatformCursor(screen), surface(0)
+{
+ QDirectFbConvenience::dfbInterface()->GetDisplayLayer(QDirectFbConvenience::dfbInterface(),DLID_PRIMARY, &m_layer);
+ image = new QPlatformCursorImage(0, 0, 0, 0, 0, 0);
+}
+
+void QDirectFBCursor::changeCursor(QCursor * cursor, QWidget * widget)
+{
+ Q_UNUSED(widget);
+ int xSpot;
+ int ySpot;
+ QPixmap map;
+
+ if (cursor->shape() != Qt::BitmapCursor) {
+ image->set(cursor->shape());
+ xSpot = image->hotspot().x();
+ ySpot = image->hotspot().y();
+ QImage *i = image->image();
+ map = QPixmap::fromImage(*i);
+ } else {
+ QPoint point = cursor->hotSpot();
+ xSpot = point.x();
+ ySpot = point.y();
+ map = cursor->pixmap();
+ }
+
+ IDirectFBSurface *surface = QDirectFbConvenience::dfbSurfaceForPixmapData(map.pixmapData());
+
+ if (m_layer->SetCooperativeLevel(m_layer, DLSCL_ADMINISTRATIVE) != DFB_OK) {
+ return;
+ }
+ m_layer->SetCursorShape( m_layer, surface, xSpot, ySpot);
+ m_layer->SetCooperativeLevel(m_layer, DLSCL_SHARED);
+}
diff --git a/src/plugins/platforms/directfb/qdirectfbcursor.h b/src/plugins/platforms/directfb/qdirectfbcursor.h
new file mode 100644
index 0000000000..ea8b7b0499
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbcursor.h
@@ -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 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 QDIRECTFBCURSOR_H
+#define QDIRECTFBCURSOR_H
+
+#include <QPlatformCursor>
+#include <directfb.h>
+class QDirectFbScreen;
+class QDirectFbBlitter;
+
+class QDirectFBCursor : public QPlatformCursor
+{
+public:
+ QDirectFBCursor(QPlatformScreen *screem);
+ void changeCursor(QCursor * cursor, QWidget * widget);
+
+private:
+ IDirectFBDisplayLayer * m_layer;
+ IDirectFBSurface * surface;
+ QPlatformCursorImage * image;
+ QDirectFbBlitter *blitter;
+};
+
+#endif // QDIRECTFBCURSOR_H
diff --git a/src/plugins/platforms/directfb/qdirectfbglcontext.cpp b/src/plugins/platforms/directfb/qdirectfbglcontext.cpp
new file mode 100644
index 0000000000..033ff1e93f
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbglcontext.cpp
@@ -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 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 "qdirectfbglcontext.h"
+
+#include <directfb/directfbgl.h>
+
+#include <QDebug>
+
+QDirectFbGLContext::QDirectFbGLContext(IDirectFBGL *glContext)
+ : m_dfbGlContext(glContext)
+{
+ DFBResult result;
+ DFBGLAttributes glAttribs;
+ result = m_dfbGlContext->GetAttributes(glContext, &glAttribs);
+ if (result == DFB_OK) {
+ m_windowFormat.setDepthBufferSize(glAttribs.depth_size);
+ m_windowFormat.setStencilBufferSize(glAttribs.stencil_size);
+
+ m_windowFormat.setRedBufferSize(glAttribs.red_size);
+ m_windowFormat.setGreenBufferSize(glAttribs.green_size);
+ m_windowFormat.setBlueBufferSize(glAttribs.blue_size);
+ m_windowFormat.setAlphaBufferSize(glAttribs.alpha_size);
+
+ m_windowFormat.setAccumBufferSize(glAttribs.accum_red_size);
+ m_windowFormat.setAlpha(glAttribs.accum_alpha_size);
+
+ m_windowFormat.setDoubleBuffer(glAttribs.double_buffer);
+ m_windowFormat.setStereo(glAttribs.stereo);
+ }
+}
+
+void QDirectFbGLContext::makeCurrent()
+{
+ m_dfbGlContext->Lock(m_dfbGlContext);
+}
+
+void QDirectFbGLContext::doneCurrent()
+{
+ m_dfbGlContext->Unlock(m_dfbGlContext);
+}
+
+void *QDirectFbGLContext::getProcAddress(const QString &procName)
+{
+ void *proc;
+ DFBResult result = m_dfbGlContext->GetProcAddress(m_dfbGlContext,qPrintable(procName),&proc);
+ if (result == DFB_OK)
+ return proc;
+ return 0;
+}
+
+void QDirectFbGLContext::swapBuffers()
+{
+// m_dfbGlContext->Unlock(m_dfbGlContext); //maybe not in doneCurrent()
+ qDebug() << "Swap buffers";
+}
+
+QPlatformWindowFormat QDirectFbGLContext::platformWindowFormat() const
+{
+ return m_windowFormat;
+}
diff --git a/src/plugins/platforms/directfb/qdirectfbglcontext.h b/src/plugins/platforms/directfb/qdirectfbglcontext.h
new file mode 100644
index 0000000000..17856665bc
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbglcontext.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** 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 QDIRECTFBGLCONTEXT_H
+#define QDIRECTFBGLCONTEXT_H
+
+#include <QPlatformGLContext>
+
+#include "qdirectfbconvenience.h"
+
+class QDirectFbGLContext : public QPlatformGLContext
+{
+public:
+ explicit QDirectFbGLContext(IDirectFBGL *glContext);
+
+ void makeCurrent();
+ void doneCurrent();
+ void swapBuffers();
+ void *getProcAddress(const QString &procName);
+
+ QPlatformWindowFormat platformWindowFormat() const;
+
+
+private:
+ IDirectFBGL *m_dfbGlContext;
+
+ QPlatformWindowFormat m_windowFormat;
+
+};
+
+#endif // QDIRECTFBGLCONTEXT_H
diff --git a/src/plugins/platforms/directfb/qdirectfbinput.cpp b/src/plugins/platforms/directfb/qdirectfbinput.cpp
new file mode 100644
index 0000000000..9d2a8a8e3b
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbinput.cpp
@@ -0,0 +1,208 @@
+/****************************************************************************
+**
+** 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 "qdirectfbinput.h"
+#include "qdirectfbconvenience.h"
+
+#include <QThread>
+#include <QDebug>
+#include <QWindowSystemInterface>
+#include <QMouseEvent>
+#include <QEvent>
+#include <QApplication>
+
+#include <directfb.h>
+
+QDirectFbInput::QDirectFbInput(QObject *parent)
+ : QObject(parent), m_shouldStop(false)
+{
+ m_dfbInterface = QDirectFbConvenience::dfbInterface();
+
+ DFBResult ok = m_dfbInterface->CreateEventBuffer(m_dfbInterface,&m_eventBuffer);
+ if (ok != DFB_OK)
+ DirectFBError("Failed to initialise eventbuffer", ok);
+
+ m_dfbInterface->GetDisplayLayer(m_dfbInterface,DLID_PRIMARY, &m_dfbDisplayLayer);
+
+}
+
+void QDirectFbInput::runInputEventLoop()
+{
+ while (true) {
+ m_eventBuffer->WaitForEvent(m_eventBuffer);
+ if (m_shouldStop) {
+ m_waitStop.release();
+ break;
+ }
+ handleEvents();
+ }
+}
+
+void QDirectFbInput::stopInputEventLoop()
+{
+ m_shouldStop = true;
+ m_waitStop.acquire();
+}
+
+void QDirectFbInput::addWindow(DFBWindowID id, QWidget *tlw)
+{
+ m_tlwMap.insert(id,tlw);
+ IDirectFBWindow *window;
+ m_dfbDisplayLayer->GetWindow(m_dfbDisplayLayer,id,&window);
+
+ window->AttachEventBuffer(window,m_eventBuffer);
+}
+
+void QDirectFbInput::removeWindow(WId wId)
+{
+ IDirectFBWindow *window;
+ m_dfbDisplayLayer->GetWindow(m_dfbDisplayLayer,wId, &window);
+
+ window->DetachEventBuffer(window,m_eventBuffer);
+ m_tlwMap.remove(wId);
+}
+
+void QDirectFbInput::handleEvents()
+{
+ DFBResult hasEvent = m_eventBuffer->HasEvent(m_eventBuffer);
+ while(hasEvent == DFB_OK){
+ DFBEvent event;
+ DFBResult ok = m_eventBuffer->GetEvent(m_eventBuffer,&event);
+ if (ok != DFB_OK)
+ DirectFBError("Failed to get event",ok);
+ if (event.clazz == DFEC_WINDOW) {
+ switch (event.window.type) {
+ case DWET_BUTTONDOWN:
+ case DWET_BUTTONUP:
+ case DWET_MOTION:
+ handleMouseEvents(event);
+ break;
+ case DWET_WHEEL:
+ handleWheelEvent(event);
+ break;
+ case DWET_KEYDOWN:
+ case DWET_KEYUP:
+ handleKeyEvents(event);
+ break;
+ case DWET_ENTER:
+ case DWET_LEAVE:
+ handleEnterLeaveEvents(event);
+ default:
+ break;
+ }
+
+ }
+
+ hasEvent = m_eventBuffer->HasEvent(m_eventBuffer);
+ }
+}
+
+void QDirectFbInput::handleMouseEvents(const DFBEvent &event)
+{
+ QPoint p(event.window.x, event.window.y);
+ QPoint globalPos = globalPoint(event);
+ Qt::MouseButtons buttons = QDirectFbConvenience::mouseButtons(event.window.buttons);
+
+ IDirectFBDisplayLayer *layer = QDirectFbConvenience::dfbDisplayLayer();
+ IDirectFBWindow *window;
+ layer->GetWindow(layer,event.window.window_id,&window);
+
+ long timestamp = (event.window.timestamp.tv_sec*1000) + (event.window.timestamp.tv_usec/1000);
+
+ if (event.window.type == DWET_BUTTONDOWN) {
+ window->GrabPointer(window);
+ } else if (event.window.type == DWET_BUTTONUP) {
+ window->UngrabPointer(window);
+ }
+ QWidget *tlw = m_tlwMap.value(event.window.window_id);
+ QWindowSystemInterface::handleMouseEvent(tlw, timestamp, p, globalPos, buttons);
+}
+
+void QDirectFbInput::handleWheelEvent(const DFBEvent &event)
+{
+ QPoint p(event.window.cx, event.window.cy);
+ QPoint globalPos = globalPoint(event);
+ long timestamp = (event.window.timestamp.tv_sec*1000) + (event.window.timestamp.tv_usec/1000);
+ QWidget *tlw = m_tlwMap.value(event.window.window_id);
+ QWindowSystemInterface::handleWheelEvent(tlw, timestamp, p, globalPos,
+ event.window.step*120,
+ Qt::Vertical);
+}
+
+void QDirectFbInput::handleKeyEvents(const DFBEvent &event)
+{
+ QEvent::Type type = QDirectFbConvenience::eventType(event.window.type);
+ Qt::Key key = QDirectFbConvenience::keyMap()->value(event.window.key_symbol);
+ Qt::KeyboardModifiers modifiers = QDirectFbConvenience::keyboardModifiers(event.window.modifiers);
+
+ long timestamp = (event.window.timestamp.tv_sec*1000) + (event.window.timestamp.tv_usec/1000);
+
+ QChar character;
+ if (DFB_KEY_TYPE(event.window.key_symbol) == DIKT_UNICODE)
+ character = QChar(event.window.key_symbol);
+ QWidget *tlw = m_tlwMap.value(event.window.window_id);
+ QWindowSystemInterface::handleKeyEvent(tlw, timestamp, type, key, modifiers, character);
+}
+
+void QDirectFbInput::handleEnterLeaveEvents(const DFBEvent &event)
+{
+ QWidget *tlw = m_tlwMap.value(event.window.window_id);
+ switch (event.window.type) {
+ case DWET_ENTER:
+ QWindowSystemInterface::handleEnterEvent(tlw);
+ break;
+ case DWET_LEAVE:
+ QWindowSystemInterface::handleLeaveEvent(tlw);
+ break;
+ default:
+ break;
+ }
+}
+
+inline QPoint QDirectFbInput::globalPoint(const DFBEvent &event) const
+{
+ IDirectFBWindow *window;
+ m_dfbDisplayLayer->GetWindow(m_dfbDisplayLayer,event.window.window_id,&window);
+ int x,y;
+ window->GetPosition(window,&x,&y);
+ return QPoint(event.window.cx +x, event.window.cy + y);
+}
+
diff --git a/src/plugins/platforms/directfb/qdirectfbinput.h b/src/plugins/platforms/directfb/qdirectfbinput.h
new file mode 100644
index 0000000000..bca155f9fa
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbinput.h
@@ -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 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 QDIRECTFBINPUT_H
+#define QDIRECTFBINPUT_H
+
+#include <QSemaphore>
+#include <QObject>
+#include <QHash>
+#include <QPoint>
+#include <QEvent>
+
+#include <QtGui/qwindowdefs.h>
+
+#include <directfb.h>
+
+class QDirectFbInput : public QObject
+{
+ Q_OBJECT
+public:
+ QDirectFbInput(QObject *parent);
+ void addWindow(DFBWindowID id, QWidget *tlw);
+ void removeWindow(WId wId);
+
+public slots:
+ void runInputEventLoop();
+ void stopInputEventLoop();
+ void handleEvents();
+
+private:
+ void handleMouseEvents(const DFBEvent &event);
+ void handleWheelEvent(const DFBEvent &event);
+ void handleKeyEvents(const DFBEvent &event);
+ void handleEnterLeaveEvents(const DFBEvent &event);
+ inline QPoint globalPoint(const DFBEvent &event) const;
+
+
+ IDirectFB *m_dfbInterface;
+ IDirectFBDisplayLayer *m_dfbDisplayLayer;
+ IDirectFBEventBuffer *m_eventBuffer;
+
+ bool m_shouldStop;
+ QSemaphore m_waitStop;
+
+ QHash<DFBWindowID,QWidget *>m_tlwMap;
+};
+
+#endif // QDIRECTFBINPUT_H
diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.cpp b/src/plugins/platforms/directfb/qdirectfbintegration.cpp
new file mode 100644
index 0000000000..8639bdb63f
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbintegration.cpp
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** 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 "qdirectfbintegration.h"
+#include "qdirectfbwindowsurface.h"
+#include "qdirectfbblitter.h"
+#include "qdirectfbconvenience.h"
+#include "qdirectfbcursor.h"
+#include "qdirectfbwindow.h"
+
+#include "qgenericunixfontdatabase.h"
+
+#include <private/qwindowsurface_raster_p.h>
+#include <private/qpixmap_raster_p.h>
+
+#include <QtGui/private/qpixmap_blitter_p.h>
+#include <QtGui/private/qpixmapdata_p.h>
+#include <QtCore/QCoreApplication>
+#include <QtCore/QThread>
+
+QT_BEGIN_NAMESPACE
+
+QDirectFbScreen::QDirectFbScreen(int display)
+ :QPlatformScreen()
+{
+ m_layer = QDirectFbConvenience::dfbDisplayLayer(display);
+ m_layer->SetCooperativeLevel(m_layer,DLSCL_SHARED);
+
+ DFBDisplayLayerConfig config;
+ m_layer->GetConfiguration(m_layer, &config);
+
+ m_format = QDirectFbConvenience::imageFormatFromSurfaceFormat(config.pixelformat, config.surface_caps);
+ m_geometry = QRect(0,0,config.width,config.height);
+ const int dpi = 72;
+ const qreal inch = 25.4;
+ m_depth = QDirectFbConvenience::colorDepthForSurface(config.pixelformat);
+ m_physicalSize = QSize(qRound(config.width * inch / dpi), qRound(config.height *inch / dpi));
+
+ cursor = new QDirectFBCursor(this);
+}
+
+QDirectFbScreen::~QDirectFbScreen()
+{
+}
+
+QDirectFbIntegration::QDirectFbIntegration()
+ : mFontDb(new QGenericUnixFontDatabase())
+{
+ const QStringList args = QCoreApplication::arguments();
+ int argc = args.size();
+ char **argv = new char*[argc];
+
+ for (int i = 0; i < argc; ++i)
+ argv[i] = qstrdup(args.at(i).toLocal8Bit().constData());
+
+ DFBResult result = DirectFBInit(&argc, &argv);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreen: error initializing DirectFB",
+ result);
+ }
+ delete[] argv;
+
+
+ QDirectFbScreen *primaryScreen = new QDirectFbScreen(0);
+ mScreens.append(primaryScreen);
+
+ mInputRunner = new QThread;
+ mInput = new QDirectFbInput(0);
+ mInput->moveToThread(mInputRunner);
+ QObject::connect(mInputRunner,SIGNAL(started()),mInput,SLOT(runInputEventLoop()));
+ mInputRunner->start();
+}
+
+QDirectFbIntegration::~QDirectFbIntegration()
+{
+ mInput->stopInputEventLoop();
+ delete mInputRunner;
+ delete mInput;
+}
+
+QPixmapData *QDirectFbIntegration::createPixmapData(QPixmapData::PixelType type) const
+{
+ if (type == QPixmapData::BitmapType)
+ return new QRasterPixmapData(type);
+ else
+ return new QDirectFbBlitterPixmapData;
+}
+
+QPlatformWindow *QDirectFbIntegration::createPlatformWindow(QWidget *widget, WId winId) const
+{
+ Q_UNUSED(winId);
+ QDirectFbInput *input = const_cast<QDirectFbInput *>(mInput);//gah
+ return new QDirectFbWindow(widget,input);
+}
+
+QWindowSurface *QDirectFbIntegration::createWindowSurface(QWidget *widget, WId winId) const
+{
+ return new QDirectFbWindowSurface(widget,winId);
+}
+
+QPlatformFontDatabase *QDirectFbIntegration::fontDatabase() const
+{
+ return mFontDb;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.h b/src/plugins/platforms/directfb/qdirectfbintegration.h
new file mode 100644
index 0000000000..965bdd233d
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbintegration.h
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** 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 QPLATFORMINTEGRATION_DIRECTFB_H
+#define QPLATFORMINTEGRATION_DIRECTFB_H
+
+#include "qdirectfbinput.h"
+
+#include <QtGui/QPlatformIntegration>
+#include <directfb.h>
+#include <directfb_version.h>
+
+QT_BEGIN_NAMESPACE
+
+class QThread;
+class QDirectFBCursor;
+
+class QDirectFbScreen : public QPlatformScreen
+{
+Q_OBJECT
+public:
+ QDirectFbScreen(int display);
+ ~QDirectFbScreen();
+
+ QRect geometry() const { return m_geometry; }
+ int depth() const { return m_depth; }
+ QImage::Format format() const { return m_format; }
+ QSize physicalSize() const { return m_physicalSize; }
+
+public:
+ QRect m_geometry;
+ int m_depth;
+ QImage::Format m_format;
+ QSize m_physicalSize;
+
+ IDirectFBDisplayLayer *m_layer;
+
+private:
+ QDirectFBCursor * cursor;
+
+};
+
+class QDirectFbIntegration : public QPlatformIntegration
+{
+public:
+ QDirectFbIntegration();
+ ~QDirectFbIntegration();
+
+ QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
+ QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId = 0) const;
+ QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const;
+
+ QList<QPlatformScreen *> screens() const { return mScreens; }
+
+ QPlatformFontDatabase *fontDatabase() const;
+
+private:
+ QList<QPlatformScreen *> mScreens;
+ QDirectFbInput *mInput;
+ QThread *mInputRunner;
+ QPlatformFontDatabase *mFontDb;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/directfb/qdirectfbwindow.cpp b/src/plugins/platforms/directfb/qdirectfbwindow.cpp
new file mode 100644
index 0000000000..1cd23ad71d
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbwindow.cpp
@@ -0,0 +1,191 @@
+/****************************************************************************
+**
+** 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 "qdirectfbwindow.h"
+#include "qdirectfbinput.h"
+#include "qdirectfbglcontext.h"
+
+#include <QWidget>
+
+#include "qdirectfbwindowsurface.h"
+
+#include <directfb.h>
+
+QDirectFbWindow::QDirectFbWindow(QWidget *tlw, QDirectFbInput *inputhandler)
+ : QPlatformWindow(tlw), m_inputHandler(inputhandler), m_context(0)
+{
+ IDirectFBDisplayLayer *layer = QDirectFbConvenience::dfbDisplayLayer();
+ DFBDisplayLayerConfig layerConfig;
+ layer->GetConfiguration(layer,&layerConfig);
+
+ DFBWindowDescription description;
+ memset(&description,0,sizeof(DFBWindowDescription));
+ description.flags = DFBWindowDescriptionFlags(DWDESC_WIDTH|DWDESC_HEIGHT|DWDESC_POSX|DWDESC_POSY|DWDESC_SURFACE_CAPS
+#if DIRECTFB_MINOR_VERSION >= 1
+ |DWDESC_OPTIONS
+#endif
+ |DWDESC_CAPS);
+ description.width = tlw->rect().width();
+ description.height = tlw->rect().height();
+ description.posx = tlw->rect().x();
+ description.posy = tlw->rect().y();
+
+ if (layerConfig.surface_caps & DSCAPS_PREMULTIPLIED)
+ description.surface_caps = DSCAPS_PREMULTIPLIED;
+ description.pixelformat = layerConfig.pixelformat;
+
+#if DIRECTFB_MINOR_VERSION >= 1
+ description.options = DFBWindowOptions(DWOP_ALPHACHANNEL);
+#endif
+ description.caps = DFBWindowCapabilities(DWCAPS_DOUBLEBUFFER|DWCAPS_ALPHACHANNEL);
+ description.surface_caps = DSCAPS_PREMULTIPLIED;
+
+ DFBResult result = layer->CreateWindow(layer,&description,&m_dfbWindow);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFbGraphicsSystemScreen: failed to create window",result);
+ }
+
+ m_dfbWindow->SetOpacity(m_dfbWindow,0xff);
+
+ setVisible(widget()->isVisible());
+
+ DFBWindowID id;
+ m_dfbWindow->GetID(m_dfbWindow, &id);
+ m_inputHandler->addWindow(id,tlw);
+}
+
+QDirectFbWindow::~QDirectFbWindow()
+{
+ m_inputHandler->removeWindow(winId());
+ m_dfbWindow->Destroy(m_dfbWindow);
+}
+
+void QDirectFbWindow::setGeometry(const QRect &rect)
+{
+ bool isMoveOnly = (rect.topLeft() != geometry().topLeft()) && (rect.size() == geometry().size());
+ QPlatformWindow::setGeometry(rect);
+ if (widget()->isVisible() && !(widget()->testAttribute(Qt::WA_DontShowOnScreen))) {
+ m_dfbWindow->SetBounds(m_dfbWindow, rect.x(),rect.y(),
+ rect.width(), rect.height());
+
+ //Hack. When moving since the WindowSurface of a window becomes invalid when moved
+ if (isMoveOnly) { //if resize then windowsurface is updated.
+ widget()->windowSurface()->resize(rect.size());
+ widget()->update();
+ }
+ }
+}
+
+void QDirectFbWindow::setOpacity(qreal level)
+{
+ const quint8 windowOpacity = quint8(level * 0xff);
+ m_dfbWindow->SetOpacity(m_dfbWindow,windowOpacity);
+}
+
+void QDirectFbWindow::setVisible(bool visible)
+{
+ if (visible) {
+ int x = geometry().x();
+ int y = geometry().y();
+ m_dfbWindow->MoveTo(m_dfbWindow,x,y);
+ } else {
+ IDirectFBDisplayLayer *displayLayer;
+ QDirectFbConvenience::dfbInterface()->GetDisplayLayer(QDirectFbConvenience::dfbInterface(),DLID_PRIMARY,&displayLayer);
+
+ DFBDisplayLayerConfig config;
+ displayLayer->GetConfiguration(displayLayer,&config);
+ m_dfbWindow->MoveTo(m_dfbWindow,config.width+1,config.height + 1);
+ }
+}
+
+Qt::WindowFlags QDirectFbWindow::setWindowFlags(Qt::WindowFlags flags)
+{
+ switch (flags & Qt::WindowType_Mask) {
+ case Qt::ToolTip: {
+ DFBWindowOptions options;
+ m_dfbWindow->GetOptions(m_dfbWindow,&options);
+ options = DFBWindowOptions(options | DWOP_GHOST);
+ m_dfbWindow->SetOptions(m_dfbWindow,options);
+ break; }
+ default:
+ break;
+ }
+
+ m_dfbWindow->SetStackingClass(m_dfbWindow, flags & Qt::WindowStaysOnTopHint ? DWSC_UPPER : DWSC_MIDDLE);
+ return flags;
+}
+
+void QDirectFbWindow::raise()
+{
+ m_dfbWindow->RaiseToTop(m_dfbWindow);
+}
+
+void QDirectFbWindow::lower()
+{
+ m_dfbWindow->LowerToBottom(m_dfbWindow);
+}
+
+WId QDirectFbWindow::winId() const
+{
+ DFBWindowID id;
+ m_dfbWindow->GetID(m_dfbWindow, &id);
+ return WId(id);
+}
+
+QPlatformGLContext *QDirectFbWindow::glContext() const
+{
+ if (!m_context) {
+ IDirectFBSurface *surface;
+ DFBResult result = m_dfbWindow->GetSurface(m_dfbWindow,&surface);
+ if (result != DFB_OK) {
+ qWarning("could not retrieve surface in QDirectFbWindow::glContext()");
+ return 0;
+ }
+ IDirectFBGL *gl;
+ result = surface->GetGL(surface,&gl);
+ if (result != DFB_OK) {
+ qWarning("could not retrieve IDirectFBGL in QDirectFbWindow::glContext()");
+ return 0;
+ }
+ const_cast<QDirectFbWindow *>(this)->m_context = new QDirectFbGLContext(gl);
+ }
+ return m_context;
+}
diff --git a/src/plugins/platforms/directfb/qdirectfbwindow.h b/src/plugins/platforms/directfb/qdirectfbwindow.h
new file mode 100644
index 0000000000..19491c5fdb
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbwindow.h
@@ -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$
+**
+****************************************************************************/
+
+#ifndef QDIRECTFBWINDOW_H
+#define QDIRECTFBWINDOW_H
+
+#include <QPlatformWindow>
+
+#include "qdirectfbconvenience.h"
+#include "qdirectfbinput.h"
+
+QT_BEGIN_NAMESPACE
+
+class QDirectFbWindow : public QPlatformWindow
+{
+public:
+ QDirectFbWindow(QWidget *tlw, QDirectFbInput *inputhandler);
+ ~QDirectFbWindow();
+
+ void setGeometry(const QRect &rect);
+ void setOpacity(qreal level);
+
+ void setVisible(bool visible);
+
+ Qt::WindowFlags setWindowFlags(Qt::WindowFlags flags);
+ void raise();
+ void lower();
+ WId winId() const;
+
+ QPlatformGLContext *glContext() const;
+
+private:
+ IDirectFBWindow *m_dfbWindow;
+ QDirectFbInput *m_inputHandler;
+
+ QPlatformGLContext *m_context;
+};
+
+QT_END_NAMESPACE
+
+#endif // QDIRECTFBWINDOW_H
diff --git a/src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp b/src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp
new file mode 100644
index 0000000000..b1a8899628
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbwindowsurface.cpp
@@ -0,0 +1,141 @@
+/****************************************************************************
+**
+** 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 "qdirectfbwindowsurface.h"
+#include "qdirectfbintegration.h"
+#include "qdirectfbblitter.h"
+#include "qdirectfbconvenience.h"
+#include <private/qpixmap_blitter_p.h>
+
+#include <QtCore/qdebug.h>
+
+QT_BEGIN_NAMESPACE
+
+QDirectFbWindowSurface::QDirectFbWindowSurface(QWidget *window, WId wId)
+ : QWindowSurface(window), m_pixmap(0), m_pmdata(0), m_dfbSurface(0)
+{
+
+ IDirectFBDisplayLayer *layer = QDirectFbConvenience::dfbDisplayLayer();
+
+ DFBWindowID id(wId);
+ IDirectFBWindow *dfbWindow;
+
+ layer->GetWindow(layer,id,&dfbWindow);
+
+ dfbWindow->GetSurface(dfbWindow,&m_dfbSurface);
+//WRONGSIZE
+ QDirectFbBlitter *blitter = new QDirectFbBlitter(window->rect().size(), m_dfbSurface);
+ m_pmdata = new QDirectFbBlitterPixmapData;
+ m_pmdata->setBlittable(blitter);
+ m_pixmap = new QPixmap(m_pmdata);
+}
+
+QDirectFbWindowSurface::~QDirectFbWindowSurface()
+{
+ delete m_pixmap;
+}
+
+QPaintDevice *QDirectFbWindowSurface::paintDevice()
+{
+ return m_pixmap;
+}
+
+void QDirectFbWindowSurface::flush(QWidget *widget, const QRegion &region, const QPoint &offset)
+{
+ Q_UNUSED(widget);
+ m_pmdata->blittable()->unlock();
+
+ QVector<QRect> rects = region.rects();
+ for (int i = 0 ; i < rects.size(); i++) {
+ const QRect rect = rects.at(i);
+ DFBRegion dfbReg = { rect.x() + offset.x(),rect.y() + offset.y(),rect.right() + offset.x(),rect.bottom() + offset.y()};
+ m_dfbSurface->Flip(m_dfbSurface, &dfbReg, DFBSurfaceFlipFlags(DSFLIP_BLIT|DSFLIP_ONSYNC));
+ }
+}
+
+void QDirectFbWindowSurface::resize(const QSize &size)
+{
+ QWindowSurface::resize(size);
+
+ //Have to add 1 ref ass it will be removed by deleting the old blitter in setBlittable
+ m_dfbSurface->AddRef(m_dfbSurface);
+ QDirectFbBlitter *blitter = new QDirectFbBlitter(size,m_dfbSurface);
+ m_pmdata->setBlittable(blitter);
+}
+
+static inline void scrollSurface(IDirectFBSurface *surface, const QRect &r, int dx, int dy)
+{
+ const DFBRectangle rect = { r.x(), r.y(), r.width(), r.height() };
+ surface->Blit(surface, surface, &rect, r.x() + dx, r.y() + dy);
+ const DFBRegion region = { rect.x + dx, rect.y + dy, r.right() + dx, r.bottom() + dy };
+ surface->Flip(surface, &region, DFBSurfaceFlipFlags(DSFLIP_BLIT));
+}
+
+bool QDirectFbWindowSurface::scroll(const QRegion &area, int dx, int dy)
+{
+ m_pmdata->blittable()->unlock();
+
+ if (!m_dfbSurface || area.isEmpty())
+ return false;
+ m_dfbSurface->SetBlittingFlags(m_dfbSurface, DSBLIT_NOFX);
+ if (area.rectCount() == 1) {
+ scrollSurface(m_dfbSurface, area.boundingRect(), dx, dy);
+ } else {
+ const QVector<QRect> rects = area.rects();
+ const int n = rects.size();
+ for (int i=0; i<n; ++i) {
+ scrollSurface(m_dfbSurface, rects.at(i), dx, dy);
+ }
+ }
+ return true;
+}
+
+void QDirectFbWindowSurface::beginPaint(const QRegion &region)
+{
+ Q_UNUSED(region);
+}
+
+void QDirectFbWindowSurface::endPaint(const QRegion &region)
+{
+ Q_UNUSED(region);
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/directfb/qdirectfbwindowsurface.h b/src/plugins/platforms/directfb/qdirectfbwindowsurface.h
new file mode 100644
index 0000000000..aaa74d463f
--- /dev/null
+++ b/src/plugins/platforms/directfb/qdirectfbwindowsurface.h
@@ -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 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 QWINDOWSURFACE_DIRECTFB_H
+#define QWINDOWSURFACE_DIRECTFB_H
+
+#include <QtGui/private/qwindowsurface_p.h>
+#include <private/qpixmap_blitter_p.h>
+
+#include <directfb.h>
+
+QT_BEGIN_NAMESPACE
+
+class QDirectFbWindowSurface : public QWindowSurface
+{
+public:
+ QDirectFbWindowSurface(QWidget *window, WId wid);
+ ~QDirectFbWindowSurface();
+
+ QPaintDevice *paintDevice();
+ void flush(QWidget *widget, const QRegion &region, const QPoint &offset);
+ void resize (const QSize &size);
+ bool scroll(const QRegion &area, int dx, int dy);
+
+ void beginPaint(const QRegion &region);
+ void endPaint(const QRegion &region);
+
+private:
+ void lockSurfaceToImage();
+
+ QPixmap *m_pixmap;
+ QBlittablePixmapData *m_pmdata;
+
+ IDirectFBSurface *m_dfbSurface;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/eglconvenience/qeglconvenience.cpp b/src/plugins/platforms/eglconvenience/qeglconvenience.cpp
new file mode 100644
index 0000000000..b203fe81b1
--- /dev/null
+++ b/src/plugins/platforms/eglconvenience/qeglconvenience.cpp
@@ -0,0 +1,316 @@
+/****************************************************************************
+**
+** 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 "qeglconvenience.h"
+
+QT_BEGIN_NAMESPACE
+
+QVector<EGLint> q_createConfigAttributesFromFormat(const QPlatformWindowFormat &format)
+{
+ int redSize = format.redBufferSize();
+ int greenSize = format.greenBufferSize();
+ int blueSize = format.blueBufferSize();
+ int alphaSize = format.alphaBufferSize();
+ int depthSize = format.depthBufferSize();
+ int stencilSize = format.stencilBufferSize();
+ int sampleCount = format.samples();
+
+ // QPlatformWindowFormat uses a magic value of -1 to indicate "don't care", even when a buffer of that
+ // type has been requested. So we must check QPlatformWindowFormat's booleans too if size is -1:
+ if (format.alpha() && alphaSize <= 0)
+ alphaSize = 1;
+ if (format.depth() && depthSize <= 0)
+ depthSize = 1;
+ if (format.stencil() && stencilSize <= 0)
+ stencilSize = 1;
+ if (format.sampleBuffers() && sampleCount <= 0)
+ sampleCount = 1;
+
+ // We want to make sure 16-bit configs are chosen over 32-bit configs as they will provide
+ // the best performance. The EGL config selection algorithm is a bit stange in this regard:
+ // The selection criteria for EGL_BUFFER_SIZE is "AtLeast", so we can't use it to discard
+ // 32-bit configs completely from the selection. So it then comes to the sorting algorithm.
+ // The red/green/blue sizes have a sort priority of 3, so they are sorted by first. The sort
+ // order is special and described as "by larger _total_ number of color bits.". So EGL will
+ // put 32-bit configs in the list before the 16-bit configs. However, the spec also goes on
+ // to say "If the requested number of bits in attrib_list for a particular component is 0,
+ // then the number of bits for that component is not considered". This part of the spec also
+ // seems to imply that setting the red/green/blue bits to zero means none of the components
+ // are considered and EGL disregards the entire sorting rule. It then looks to the next
+ // highest priority rule, which is EGL_BUFFER_SIZE. Despite the selection criteria being
+ // "AtLeast" for EGL_BUFFER_SIZE, it's sort order is "smaller" meaning 16-bit configs are
+ // 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 QPlatformWindowFormat,
+ // they will probably get a 32-bit config, even when there's an RGB565 config available.
+
+ // Now normalize the values so -1 becomes 0
+ redSize = redSize > 0 ? redSize : 0;
+ greenSize = greenSize > 0 ? greenSize : 0;
+ blueSize = blueSize > 0 ? blueSize : 0;
+ alphaSize = alphaSize > 0 ? alphaSize : 0;
+ depthSize = depthSize > 0 ? depthSize : 0;
+ stencilSize = stencilSize > 0 ? stencilSize : 0;
+ sampleCount = sampleCount > 0 ? sampleCount : 0;
+
+ QVector<EGLint> configAttributes;
+
+ configAttributes.append(EGL_RED_SIZE);
+ configAttributes.append(redSize);
+
+ configAttributes.append(EGL_GREEN_SIZE);
+ configAttributes.append(greenSize);
+
+ configAttributes.append(EGL_BLUE_SIZE);
+ configAttributes.append(blueSize);
+
+ configAttributes.append(EGL_ALPHA_SIZE);
+ configAttributes.append(alphaSize);
+
+ configAttributes.append(EGL_DEPTH_SIZE);
+ configAttributes.append(depthSize);
+
+ configAttributes.append(EGL_STENCIL_SIZE);
+ configAttributes.append(stencilSize);
+
+ configAttributes.append(EGL_SAMPLES);
+ configAttributes.append(sampleCount);
+
+ configAttributes.append(EGL_SAMPLE_BUFFERS);
+ configAttributes.append(sampleCount? 1:0);
+
+ return configAttributes;
+}
+
+bool q_reduceConfigAttributes(QVector<EGLint> *configAttributes)
+{
+ int i = -1;
+ // Reduce the complexity of a configuration request to ask for less
+ // because the previous request did not result in success. Returns
+ // true if the complexity was reduced, or false if no further
+ // reductions in complexity are possible.
+
+ i = configAttributes->indexOf(EGL_SWAP_BEHAVIOR);
+ if (i >= 0) {
+ configAttributes->remove(i,2);
+ }
+
+#ifdef EGL_VG_ALPHA_FORMAT_PRE_BIT
+ // For OpenVG, we sometimes try to create a surface using a pre-multiplied format. If we can't
+ // find a config which supports pre-multiplied formats, remove the flag on the surface type:
+
+ i = configAttributes->indexOf(EGL_SURFACE_TYPE);
+ if (i >= 0) {
+ EGLint surfaceType = configAttributes->at(i +1);
+ if (surfaceType & EGL_VG_ALPHA_FORMAT_PRE_BIT) {
+ surfaceType ^= EGL_VG_ALPHA_FORMAT_PRE_BIT;
+ configAttributes->replace(i+1,surfaceType);
+ return true;
+ }
+ }
+#endif
+
+ // EGL chooses configs with the highest color depth over
+ // those with smaller (but faster) lower color depths. One
+ // way around this is to set EGL_BUFFER_SIZE to 16, which
+ // trumps the others. Of course, there may not be a 16-bit
+ // config available, so it's the first restraint we remove.
+ i = configAttributes->indexOf(EGL_BUFFER_SIZE);
+ if (i >= 0) {
+ if (configAttributes->at(i+1) == 16) {
+ configAttributes->remove(i,2);
+ return true;
+ }
+ }
+
+ i = configAttributes->indexOf(EGL_SAMPLE_BUFFERS);
+ if (i >= 0) {
+ configAttributes->remove(i,2);
+ i = configAttributes->indexOf(EGL_SAMPLES);
+ if (i >= 0) {
+ configAttributes->remove(i,2);
+ }
+ return true;
+ }
+
+ i = configAttributes->indexOf(EGL_ALPHA_SIZE);
+ if (i >= 0) {
+ configAttributes->remove(i,2);
+#if defined(EGL_BIND_TO_TEXTURE_RGBA) && defined(EGL_BIND_TO_TEXTURE_RGB)
+ i = configAttributes->indexOf(EGL_BIND_TO_TEXTURE_RGBA);
+ if (i >= 0) {
+ configAttributes->replace(i,EGL_BIND_TO_TEXTURE_RGB);
+ configAttributes->replace(i+1,TRUE);
+
+ }
+#endif
+ return true;
+ }
+
+ i = configAttributes->indexOf(EGL_STENCIL_SIZE);
+ if (i >= 0) {
+ configAttributes->remove(i,2);
+ return true;
+ }
+ i = configAttributes->indexOf(EGL_DEPTH_SIZE);
+ if (i >= 0) {
+ configAttributes->remove(i,2);
+ return true;
+ }
+#ifdef EGL_BIND_TO_TEXTURE_RGB
+ i = configAttributes->indexOf(EGL_BIND_TO_TEXTURE_RGB);
+ if (i >= 0) {
+ configAttributes->remove(i,2);
+ return true;
+ }
+#endif
+
+ return false;
+}
+
+EGLConfig q_configFromQPlatformWindowFormat(EGLDisplay display, const QPlatformWindowFormat &format)
+{
+ EGLConfig cfg = 0;
+ QVector<EGLint> configureAttributes = q_createConfigAttributesFromFormat(format);
+ configureAttributes.append(EGL_SURFACE_TYPE); //we only support eglconfigs for windows for now
+ configureAttributes.append(EGL_WINDOW_BIT);
+
+ configureAttributes.append(EGL_RENDERABLE_TYPE);
+ if (format.windowApi() == QPlatformWindowFormat::OpenVG) {
+ configureAttributes.append(EGL_OPENVG_BIT);
+ } else {
+ configureAttributes.append(EGL_OPENGL_ES2_BIT);
+ }
+ configureAttributes.append(EGL_NONE);
+
+ do {
+ // Get the number of matching configurations for this set of properties.
+ EGLint matching = 0;
+ if (!eglChooseConfig(display, configureAttributes.constData(), 0, 0, &matching) || !matching)
+ continue;
+
+// // If we want the best pixel format, then return the first
+// // matching configuration.
+// if (match == QEgl::BestPixelFormat) {
+// eglChooseConfig(display, props.properties(), &cfg, 1, &matching);
+// if (matching < 1)
+// continue;
+// return cfg;
+// }
+
+ // Fetch all of the matching configurations and find the
+ // first that matches the pixel format we wanted.
+ int i = configureAttributes.indexOf(EGL_RED_SIZE);
+ int confAttrRed = configureAttributes.at(i+1);
+ i = configureAttributes.indexOf(EGL_GREEN_SIZE);
+ int confAttrGreen = configureAttributes.at(i+1);
+ i = configureAttributes.indexOf(EGL_BLUE_SIZE);
+ int confAttrBlue = configureAttributes.at(i+1);
+ i = configureAttributes.indexOf(EGL_ALPHA_SIZE);
+ int confAttrAlpha = configureAttributes.at(i+1);
+
+ EGLint size = matching;
+ EGLConfig *configs = new EGLConfig [size];
+ eglChooseConfig(display, configureAttributes.constData(), configs, size, &matching);
+ for (EGLint index = 0; index < size; ++index) {
+ EGLint red, green, blue, alpha;
+ eglGetConfigAttrib(display, configs[index], EGL_RED_SIZE, &red);
+ eglGetConfigAttrib(display, configs[index], EGL_GREEN_SIZE, &green);
+ eglGetConfigAttrib(display, configs[index], EGL_BLUE_SIZE, &blue);
+ eglGetConfigAttrib(display, configs[index], EGL_ALPHA_SIZE, &alpha);
+ if (red == confAttrRed &&
+ green == confAttrGreen &&
+ blue == confAttrBlue &&
+ (confAttrAlpha == 0 ||
+ alpha == confAttrAlpha)) {
+ cfg = configs[index];
+ delete [] configs;
+ return cfg;
+ }
+ }
+ delete [] configs;
+ } while (q_reduceConfigAttributes(&configureAttributes));
+ qWarning("Cant find EGLConfig, returning null config");
+ return 0;
+}
+
+QPlatformWindowFormat qt_qPlatformWindowFormatFromConfig(EGLDisplay display, const EGLConfig config)
+{
+ QPlatformWindowFormat format;
+ EGLint redSize = 0;
+ EGLint greenSize = 0;
+ EGLint blueSize = 0;
+ EGLint alphaSize = 0;
+ EGLint depthSize = 0;
+ EGLint stencilSize = 0;
+ EGLint sampleCount = 0;
+ EGLint level = 0;
+
+ eglGetConfigAttrib(display, config, EGL_RED_SIZE, &redSize);
+ eglGetConfigAttrib(display, config, EGL_GREEN_SIZE, &greenSize);
+ eglGetConfigAttrib(display, config, EGL_BLUE_SIZE, &blueSize);
+ eglGetConfigAttrib(display, config, EGL_ALPHA_SIZE, &alphaSize);
+ eglGetConfigAttrib(display, config, EGL_DEPTH_SIZE, &depthSize);
+ eglGetConfigAttrib(display, config, EGL_STENCIL_SIZE, &stencilSize);
+ eglGetConfigAttrib(display, config, EGL_SAMPLES, &sampleCount);
+ eglGetConfigAttrib(display, config, EGL_LEVEL, &level);
+
+ format.setRedBufferSize(redSize);
+ format.setGreenBufferSize(greenSize);
+ format.setBlueBufferSize(blueSize);
+ format.setAlphaBufferSize(alphaSize);
+ format.setDepthBufferSize(depthSize);
+ format.setStencilBufferSize(stencilSize);
+ format.setSamples(sampleCount);
+ format.setDirectRendering(true); // All EGL contexts are direct-rendered
+ format.setRgba(true); // EGL doesn't support colour index rendering
+ format.setStereo(false); // EGL doesn't support stereo buffers
+ format.setAccumBufferSize(0); // EGL doesn't support accululation buffers
+
+ // Clear the EGL error state because some of the above may
+ // have errored out because the attribute is not applicable
+ // to the surface type. Such errors don't matter.
+ eglGetError();
+
+ return format;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglconvenience/qeglconvenience.h b/src/plugins/platforms/eglconvenience/qeglconvenience.h
new file mode 100644
index 0000000000..604262b2db
--- /dev/null
+++ b/src/plugins/platforms/eglconvenience/qeglconvenience.h
@@ -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 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 QEGLCONVENIENCE_H
+#define QEGLCONVENIENCE_H
+
+
+#include <QtGui/QPlatformWindowFormat>
+#include <QtCore/QVector>
+
+#include <EGL/egl.h>
+QT_BEGIN_NAMESPACE
+
+QVector<EGLint> q_createConfigAttributesFromFormat(const QPlatformWindowFormat &format);
+bool q_reduceConfigAttributes(QVector<EGLint> *configAttributes);
+EGLConfig q_configFromQPlatformWindowFormat(EGLDisplay display, const QPlatformWindowFormat &format);
+QPlatformWindowFormat qt_qPlatformWindowFormatFromConfig(EGLDisplay display, const EGLConfig config);
+
+QT_END_NAMESPACE
+
+#endif //QEGLCONVENIENCE_H
diff --git a/src/plugins/platforms/eglconvenience/qeglplatformcontext.cpp b/src/plugins/platforms/eglconvenience/qeglplatformcontext.cpp
new file mode 100644
index 0000000000..ae3b5394d2
--- /dev/null
+++ b/src/plugins/platforms/eglconvenience/qeglplatformcontext.cpp
@@ -0,0 +1,155 @@
+/****************************************************************************
+**
+** 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 "qeglplatformcontext.h"
+
+
+#include <QtGui/QPlatformWindow>
+
+#include "qeglconvenience.h"
+
+#include <EGL/egl.h>
+
+QEGLPlatformContext::QEGLPlatformContext(EGLDisplay display, EGLConfig config, EGLint contextAttrs[], EGLSurface surface, EGLenum eglApi)
+ : QPlatformGLContext()
+ , m_eglDisplay(display)
+ , m_eglSurface(surface)
+ , m_eglApi(eglApi)
+{
+ if (m_eglSurface == EGL_NO_SURFACE) {
+ qWarning("Createing QEGLPlatformContext with no surface");
+ }
+
+ eglBindAPI(m_eglApi);
+ m_eglContext = eglCreateContext(m_eglDisplay,config, 0,contextAttrs);
+ if (m_eglContext == EGL_NO_CONTEXT) {
+ qWarning("Could not create the egl context\n");
+ eglTerminate(m_eglDisplay);
+ qFatal("EGL error");
+ }
+
+ m_windowFormat = qt_qPlatformWindowFormatFromConfig(display,config);
+}
+
+QEGLPlatformContext::~QEGLPlatformContext()
+{
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglContext::~QEglContext(): %p\n",this);
+#endif
+ if (m_eglSurface != EGL_NO_SURFACE) {
+ doneCurrent();
+ eglDestroySurface(m_eglDisplay, m_eglSurface);
+ m_eglSurface = EGL_NO_SURFACE;
+ }
+
+ if (m_eglContext != EGL_NO_CONTEXT) {
+ eglDestroyContext(m_eglDisplay, m_eglContext);
+ m_eglContext = EGL_NO_CONTEXT;
+ }
+}
+
+void QEGLPlatformContext::makeCurrent()
+{
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglContext::makeCurrent: %p\n",this);
+#endif
+ eglBindAPI(m_eglApi);
+ bool ok = eglMakeCurrent(m_eglDisplay, m_eglSurface, m_eglSurface, m_eglContext);
+ if (!ok)
+ qWarning("QEGLPlatformContext::makeCurrent: eglError: %d, this: %p \n", eglGetError(), this);
+#ifdef QEGL_EXTRA_DEBUG
+ static bool showDebug = true;
+ if (showDebug) {
+ showDebug = false;
+ const char *str = (const char*)glGetString(GL_VENDOR);
+ qWarning("Vendor %s\n", str);
+ str = (const char*)glGetString(GL_RENDERER);
+ qWarning("Renderer %s\n", str);
+ str = (const char*)glGetString(GL_VERSION);
+ qWarning("Version %s\n", str);
+
+ str = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION);
+ qWarning("Extensions %s\n",str);
+
+ str = (const char*)glGetString(GL_EXTENSIONS);
+ qWarning("Extensions %s\n", str);
+
+ }
+#endif
+}
+void QEGLPlatformContext::doneCurrent()
+{
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglContext::doneCurrent:%p\n",this);
+#endif
+ eglBindAPI(m_eglApi);
+ bool ok = eglMakeCurrent(m_eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+ if (!ok)
+ qWarning("QEGLPlatformContext::doneCurrent(): eglError: %d, this: %p \n", eglGetError(), this);
+}
+void QEGLPlatformContext::swapBuffers()
+{
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglContext::swapBuffers:%p\n",this);
+#endif
+ eglBindAPI(m_eglApi);
+ bool ok = eglSwapBuffers(m_eglDisplay, m_eglSurface);
+ if (!ok)
+ qWarning("QEGLPlatformContext::swapBuffers(): eglError: %d, this: %p \n", eglGetError(), this);
+}
+void* QEGLPlatformContext::getProcAddress(const QString& procName)
+{
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglContext::getProcAddress%p\n",this);
+#endif
+ eglBindAPI(m_eglApi);
+ return (void *)eglGetProcAddress(qPrintable(procName));
+}
+
+void QEGLPlatformContext::makeDefaultSaredContext()
+{
+ setDefaultSharedContext(this);
+}
+
+QPlatformWindowFormat QEGLPlatformContext::platformWindowFormat() const
+{
+ return m_windowFormat;
+}
diff --git a/src/plugins/platforms/eglconvenience/qeglplatformcontext.h b/src/plugins/platforms/eglconvenience/qeglplatformcontext.h
new file mode 100644
index 0000000000..ae1a891c84
--- /dev/null
+++ b/src/plugins/platforms/eglconvenience/qeglplatformcontext.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 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 QOPENKODEGLINTEGRATION_H
+#define QOPENKODEGLINTEGRATION_H
+
+#include <QtGui/QPlatformGLContext>
+#include <EGL/egl.h>
+
+class QEGLPlatformContext : public QPlatformGLContext
+{
+public:
+ QEGLPlatformContext(EGLDisplay display, EGLConfig config, EGLint contextAttrs[], EGLSurface surface, EGLenum eglApi);
+ ~QEGLPlatformContext();
+
+ void makeCurrent();
+ void doneCurrent();
+ void swapBuffers();
+ void* getProcAddress(const QString& procName);
+
+ void makeDefaultSaredContext();
+
+ QPlatformWindowFormat platformWindowFormat() const;
+private:
+ EGLContext m_eglContext;
+ EGLDisplay m_eglDisplay;
+ EGLSurface m_eglSurface;
+ EGLenum m_eglApi;
+
+ QPlatformWindowFormat m_windowFormat;
+};
+
+#endif //QOPENKODEGLINTEGRATION_H
diff --git a/src/plugins/platforms/eglfs/eglfs.pro b/src/plugins/platforms/eglfs/eglfs.pro
new file mode 100644
index 0000000000..7ad8fd985b
--- /dev/null
+++ b/src/plugins/platforms/eglfs/eglfs.pro
@@ -0,0 +1,31 @@
+TARGET = qeglfs
+TEMPLATE = lib
+CONFIG += plugin
+
+QT += opengl
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
+
+#DEFINES += QEGL_EXTRA_DEBUG
+
+#DEFINES += Q_OPENKODE
+
+SOURCES = main.cpp \
+ qeglfsintegration.cpp \
+ ../eglconvenience/qeglconvenience.cpp \
+ ../eglconvenience/qeglplatformcontext.cpp \
+ qeglfswindow.cpp \
+ qeglfswindowsurface.cpp \
+ qeglfsscreen.cpp
+
+HEADERS = qeglfsintegration.h \
+ ../eglconvenience/qeglconvenience.h \
+ ../eglconvenience/qeglplatformcontext.h \
+ qeglfswindow.h \
+ qeglfswindowsurface.h \
+ qeglfsscreen.h
+
+include(../fontdatabases/genericunix/genericunix.pri)
+
+target.path += $$[QT_INSTALL_PLUGINS]/platforms
+INSTALLS += target
diff --git a/src/plugins/platforms/eglfs/main.cpp b/src/plugins/platforms/eglfs/main.cpp
new file mode 100644
index 0000000000..d0a82b7e3a
--- /dev/null
+++ b/src/plugins/platforms/eglfs/main.cpp
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** 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 <QtGui/QPlatformIntegrationPlugin>
+#include "qeglfsintegration.h"
+
+QT_BEGIN_NAMESPACE
+
+class QEglIntegrationPlugin : public QPlatformIntegrationPlugin
+{
+public:
+ QStringList keys() const;
+ QPlatformIntegration *create(const QString&, const QStringList&);
+};
+
+QStringList QEglIntegrationPlugin::keys() const
+{
+ QStringList list;
+ list << "EglFS";
+ return list;
+}
+
+QPlatformIntegration* QEglIntegrationPlugin::create(const QString& system, const QStringList& paramList)
+{
+ Q_UNUSED(paramList);
+ if (system.toLower() == "eglfs")
+ return new QEglFSIntegration;
+
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(eglintegration, QEglIntegrationPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
new file mode 100644
index 0000000000..a48fde8681
--- /dev/null
+++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
@@ -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$
+**
+****************************************************************************/
+
+#include "qeglfsintegration.h"
+
+#include "qeglfswindow.h"
+#include "qeglfswindowsurface.h"
+
+#include <QtGui/QPlatformWindow>
+#include <QtGui/QPlatformWindowFormat>
+#include <QtOpenGL/private/qpixmapdata_gl_p.h>
+
+#include "qgenericunixfontdatabase.h"
+
+#include <EGL/egl.h>
+
+QT_BEGIN_NAMESPACE
+
+QEglFSIntegration::QEglFSIntegration()
+ : mFontDb(new QGenericUnixFontDatabase())
+{
+ m_primaryScreen = new QEglFSScreen(EGL_DEFAULT_DISPLAY);
+
+ mScreens.append(m_primaryScreen);
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglIntegration\n");
+#endif
+}
+
+QPixmapData *QEglFSIntegration::createPixmapData(QPixmapData::PixelType type) const
+{
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglIntegration::createPixmapData %d\n", type);
+#endif
+ return new QGLPixmapData(type);
+}
+
+QPlatformWindow *QEglFSIntegration::createPlatformWindow(QWidget *widget, WId winId) const
+{
+ Q_UNUSED(winId);
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglIntegration::createPlatformWindow %p\n",widget);
+#endif
+ return new QEglFSWindow(widget, m_primaryScreen);
+}
+
+
+QWindowSurface *QEglFSIntegration::createWindowSurface(QWidget *widget, WId winId) const
+{
+ Q_UNUSED(winId);
+
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglIntegration::createWindowSurface %p\n",widget);
+#endif
+ return new QEglFSWindowSurface(m_primaryScreen,widget);
+}
+
+QPlatformFontDatabase *QEglFSIntegration::fontDatabase() const
+{
+ return mFontDb;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h
new file mode 100644
index 0000000000..0342539bb5
--- /dev/null
+++ b/src/plugins/platforms/eglfs/qeglfsintegration.h
@@ -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 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 EGLINTEGRATION_H
+#define EGLINTEGRATION_H
+
+#include "qeglfsscreen.h"
+
+#include <QtGui/QPlatformIntegration>
+#include <QtGui/QPlatformScreen>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QEglFSIntegration : public QPlatformIntegration
+{
+public:
+ QEglFSIntegration();
+
+ QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
+ QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId) const;
+ QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const;
+
+ QList<QPlatformScreen *> screens() const { return mScreens; }
+
+ QPlatformFontDatabase *fontDatabase() const;
+
+private:
+ QPlatformFontDatabase *mFontDb;
+ QList<QPlatformScreen *> mScreens;
+ QEglFSScreen *m_primaryScreen;
+};
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif
diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.cpp b/src/plugins/platforms/eglfs/qeglfsscreen.cpp
new file mode 100644
index 0000000000..9a40b86567
--- /dev/null
+++ b/src/plugins/platforms/eglfs/qeglfsscreen.cpp
@@ -0,0 +1,203 @@
+/****************************************************************************
+**
+** 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 "qeglfsscreen.h"
+
+#include "../eglconvenience/qeglconvenience.h"
+#include "../eglconvenience/qeglplatformcontext.h"
+
+#ifdef Q_OPENKODE
+#include <KD/kd.h>
+#include <KD/NV_initialize.h>
+#endif //Q_OPENKODE
+
+QT_BEGIN_NAMESPACE
+
+// #define QEGL_EXTRA_DEBUG
+
+#ifdef QEGL_EXTRA_DEBUG
+struct AttrInfo { EGLint attr; const char *name; };
+static struct AttrInfo attrs[] = {
+ {EGL_BUFFER_SIZE, "EGL_BUFFER_SIZE"},
+ {EGL_ALPHA_SIZE, "EGL_ALPHA_SIZE"},
+ {EGL_BLUE_SIZE, "EGL_BLUE_SIZE"},
+ {EGL_GREEN_SIZE, "EGL_GREEN_SIZE"},
+ {EGL_RED_SIZE, "EGL_RED_SIZE"},
+ {EGL_DEPTH_SIZE, "EGL_DEPTH_SIZE"},
+ {EGL_STENCIL_SIZE, "EGL_STENCIL_SIZE"},
+ {EGL_CONFIG_CAVEAT, "EGL_CONFIG_CAVEAT"},
+ {EGL_CONFIG_ID, "EGL_CONFIG_ID"},
+ {EGL_LEVEL, "EGL_LEVEL"},
+ {EGL_MAX_PBUFFER_HEIGHT, "EGL_MAX_PBUFFER_HEIGHT"},
+ {EGL_MAX_PBUFFER_PIXELS, "EGL_MAX_PBUFFER_PIXELS"},
+ {EGL_MAX_PBUFFER_WIDTH, "EGL_MAX_PBUFFER_WIDTH"},
+ {EGL_NATIVE_RENDERABLE, "EGL_NATIVE_RENDERABLE"},
+ {EGL_NATIVE_VISUAL_ID, "EGL_NATIVE_VISUAL_ID"},
+ {EGL_NATIVE_VISUAL_TYPE, "EGL_NATIVE_VISUAL_TYPE"},
+ {EGL_SAMPLES, "EGL_SAMPLES"},
+ {EGL_SAMPLE_BUFFERS, "EGL_SAMPLE_BUFFERS"},
+ {EGL_SURFACE_TYPE, "EGL_SURFACE_TYPE"},
+ {EGL_TRANSPARENT_TYPE, "EGL_TRANSPARENT_TYPE"},
+ {EGL_TRANSPARENT_BLUE_VALUE, "EGL_TRANSPARENT_BLUE_VALUE"},
+ {EGL_TRANSPARENT_GREEN_VALUE, "EGL_TRANSPARENT_GREEN_VALUE"},
+ {EGL_TRANSPARENT_RED_VALUE, "EGL_TRANSPARENT_RED_VALUE"},
+ {EGL_BIND_TO_TEXTURE_RGB, "EGL_BIND_TO_TEXTURE_RGB"},
+ {EGL_BIND_TO_TEXTURE_RGBA, "EGL_BIND_TO_TEXTURE_RGBA"},
+ {EGL_MIN_SWAP_INTERVAL, "EGL_MIN_SWAP_INTERVAL"},
+ {EGL_MAX_SWAP_INTERVAL, "EGL_MAX_SWAP_INTERVAL"},
+ {-1, 0}};
+#endif //QEGL_EXTRA_DEBUG
+
+QEglFSScreen::QEglFSScreen(EGLNativeDisplayType display)
+ : m_depth(32), m_format(QImage::Format_ARGB32_Premultiplied), m_platformContext(0)
+{
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglScreen %p\n", this);
+#endif
+
+ EGLint major, minor;
+#ifdef QEGL_EXTRA_DEBUG
+ EGLint index;
+#endif
+ if (!eglBindAPI(EGL_OPENGL_ES_API)) {
+ qWarning("Could not bind GL_ES API\n");
+ qFatal("EGL error");
+ }
+
+ m_dpy = eglGetDisplay(display);
+ if (m_dpy == EGL_NO_DISPLAY) {
+ qWarning("Could not open egl display\n");
+ qFatal("EGL error");
+ }
+ qWarning("Opened display %p\n", m_dpy);
+
+ if (!eglInitialize(m_dpy, &major, &minor)) {
+ qWarning("Could not initialize egl display\n");
+ qFatal("EGL error");
+ }
+
+ qWarning("Initialized display %d %d\n", major, minor);
+
+ QPlatformWindowFormat platformFormat;
+ platformFormat.setWindowApi(QPlatformWindowFormat::OpenGL);
+
+ QByteArray depthString = qgetenv("QT_QPA_EGLFS_DEPTH");
+ if (depthString.toInt() == 16) {
+ platformFormat.setDepth(16);
+ platformFormat.setRedBufferSize(5);
+ platformFormat.setGreenBufferSize(6);
+ platformFormat.setBlueBufferSize(5);
+ m_depth = 16;
+ m_format = QImage::Format_RGB16;
+ } else {
+ platformFormat.setDepth(32);
+ platformFormat.setRedBufferSize(8);
+ platformFormat.setGreenBufferSize(8);
+ platformFormat.setBlueBufferSize(8);
+ }
+
+ if (!qgetenv("QT_QPA_EGLFS_MULTISAMPLE").isEmpty()) {
+ platformFormat.setSampleBuffers(true);
+ }
+
+ int swapInterval = 1;
+ QByteArray swapIntervalString = qgetenv("QT_QPA_EGLFS_SWAPINTERVAL");
+ if (!swapIntervalString.isEmpty()) {
+ bool ok;
+ swapInterval = swapIntervalString.toInt(&ok);
+ if (!ok)
+ swapInterval = 1;
+ }
+
+ EGLConfig config = q_configFromQPlatformWindowFormat(m_dpy, platformFormat);
+ eglSwapInterval(display, swapInterval);
+
+ EGLNativeWindowType eglWindow = 0;
+#ifdef Q_OPENKODE
+ if (kdInitializeNV() == KD_ENOTINITIALIZED) {
+ qFatal("Did not manage to initialize openkode");
+ }
+ KDWindow *window = kdCreateWindow(m_dpy,config,0);
+
+ kdRealizeWindow(window,&eglWindow);
+#endif
+
+ m_surface = eglCreateWindowSurface(m_dpy, config, eglWindow, NULL);
+ if (m_surface == EGL_NO_SURFACE) {
+ qWarning("Could not create the egl surface: error = 0x%x\n", eglGetError());
+ eglTerminate(m_dpy);
+ qFatal("EGL error");
+ }
+ // qWarning("Created surface %dx%d\n", w, h);
+
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("Configuration %d matches requirements\n", (int)config);
+
+ for (index = 0; attrs[index].attr != -1; ++index) {
+ EGLint value;
+ if (eglGetConfigAttrib(m_dpy, config, attrs[index].attr, &value)) {
+ qWarning("\t%s: %d\n", attrs[index].name, (int)value);
+ }
+ }
+ qWarning("\n");
+#endif
+
+ EGLint temp;
+ EGLint attribList[32];
+
+ temp = 0;
+
+ attribList[temp++] = EGL_CONTEXT_CLIENT_VERSION;
+ attribList[temp++] = 2; // GLES version 2
+ attribList[temp++] = EGL_NONE;
+
+ m_platformContext = new QEGLPlatformContext(m_dpy,config,attribList,m_surface,EGL_OPENGL_ES_API);
+
+// qWarning("Created platformcontext");
+ EGLint w,h;
+
+ eglQuerySurface(m_dpy, m_surface, EGL_WIDTH, &w);
+ eglQuerySurface(m_dpy, m_surface, EGL_HEIGHT, &h);
+
+ m_geometry = QRect(0,0,w,h);
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.h b/src/plugins/platforms/eglfs/qeglfsscreen.h
new file mode 100644
index 0000000000..9ed1b04729
--- /dev/null
+++ b/src/plugins/platforms/eglfs/qeglfsscreen.h
@@ -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 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 QEGLSCREEN_H
+#define QEGLSCREEN_H
+
+#include <QPlatformScreen>
+
+
+#include <EGL/egl.h>
+
+QT_BEGIN_NAMESPACE
+
+class QPlatformGLContext;
+
+class QEglFSScreen : public QPlatformScreen //huh: FullScreenScreen ;) just to follow namespace
+{
+public:
+ QEglFSScreen(EGLNativeDisplayType display);
+ ~QEglFSScreen() {}
+
+ QRect geometry() const { return m_geometry; }
+ int depth() const { return m_depth; }
+ QImage::Format format() const { return m_format; }
+
+ QPlatformGLContext *platformContext() const { return m_platformContext; }
+
+private:
+ QRect m_geometry;
+ int m_depth;
+ QImage::Format m_format;
+ QPlatformGLContext *m_platformContext;
+ EGLDisplay m_dpy;
+ EGLSurface m_surface;
+};
+
+QT_END_NAMESPACE
+#endif // QEGLSCREEN_H
diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp
new file mode 100644
index 0000000000..d0e15d3adf
--- /dev/null
+++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** 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 "qeglfswindow.h"
+
+#include <QtGui/QWindowSystemInterface>
+
+QT_BEGIN_NAMESPACE
+
+QEglFSWindow::QEglFSWindow(QWidget *w, QEglFSScreen *screen)
+ : QPlatformWindow(w), m_screen(screen)
+{
+ static int serialNo = 0;
+ m_winid = ++serialNo;
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglWindow %p: %p %p 0x%x\n", this, w, screen, uint(m_winid));
+#endif
+}
+
+
+void QEglFSWindow::setGeometry(const QRect &)
+{
+ // We only support full-screen windows
+ QRect rect(m_screen->availableGeometry());
+ QWindowSystemInterface::handleGeometryChange(this->widget(), rect);
+
+ QPlatformWindow::setGeometry(rect);
+}
+
+WId QEglFSWindow::winId() const
+{
+ return m_winid;
+}
+
+
+
+QPlatformGLContext *QEglFSWindow::glContext() const
+{
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglWindow::glContext %p\n", m_screen->platformContext());
+#endif
+ Q_ASSERT(m_screen);
+ return m_screen->platformContext();
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/qeglfswindow.h b/src/plugins/platforms/eglfs/qeglfswindow.h
new file mode 100644
index 0000000000..43f185b26b
--- /dev/null
+++ b/src/plugins/platforms/eglfs/qeglfswindow.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 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 QEGLWINDOW_H
+#define QEGLWINDOW_H
+
+#include "qeglfsintegration.h"
+#include "qeglfsscreen.h"
+
+
+#include <QPlatformWindow>
+#include <QtGui/QWidget>
+
+#include <EGL/egl.h>
+
+QT_BEGIN_NAMESPACE
+
+class QEglFSWindow : public QPlatformWindow
+{
+public:
+ QEglFSWindow(QWidget *w, QEglFSScreen *screen);
+
+ void setGeometry(const QRect &);
+ WId winId() const;
+
+ QPlatformGLContext *glContext() const;
+
+private:
+ QEglFSScreen *m_screen;
+ WId m_winid;
+};
+QT_END_NAMESPACE
+#endif // QEGLWINDOW_H
diff --git a/src/plugins/platforms/eglfs/qeglfswindowsurface.cpp b/src/plugins/platforms/eglfs/qeglfswindowsurface.cpp
new file mode 100644
index 0000000000..fcea4d39ab
--- /dev/null
+++ b/src/plugins/platforms/eglfs/qeglfswindowsurface.cpp
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** 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 "qeglfswindowsurface.h"
+
+#include <QtGui/QPlatformGLContext>
+
+#include <QtOpenGL/private/qgl_p.h>
+#include <QtOpenGL/private/qglpaintdevice_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QEglFSPaintDevice : public QGLPaintDevice
+{
+public:
+ QEglFSPaintDevice(QEglFSScreen *screen, QWidget *widget)
+ :QGLPaintDevice(), m_screen(screen)
+ {
+ #ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglPaintDevice %p, %p, %p",this, screen, widget);
+ #endif
+ QGLFormat format;
+ m_context = new QGLContext(format, widget);
+ m_context->create();
+ }
+
+ QSize size() const { return m_screen->geometry().size(); }
+ QGLContext* context() const { return m_context;}
+
+ QPaintEngine *paintEngine() const { return qt_qgl_paint_engine(); }
+
+ void beginPaint(){
+ QGLPaintDevice::beginPaint();
+ }
+private:
+ QEglFSScreen *m_screen;
+ QGLContext *m_context;
+};
+
+
+QEglFSWindowSurface::QEglFSWindowSurface( QEglFSScreen *screen, QWidget *window )
+ :QWindowSurface(window)
+{
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglWindowSurface %p, %p", window, screen);
+#endif
+ m_paintDevice = new QEglFSPaintDevice(screen,window);
+}
+
+void QEglFSWindowSurface::flush(QWidget *widget, const QRegion &region, const QPoint &offset)
+{
+ Q_UNUSED(widget);
+ Q_UNUSED(region);
+ Q_UNUSED(offset);
+#ifdef QEGL_EXTRA_DEBUG
+ qWarning("QEglWindowSurface::flush %p",widget);
+#endif
+ widget->platformWindow()->glContext()->swapBuffers();
+}
+
+void QEglFSWindowSurface::resize(const QSize &size)
+{
+ Q_UNUSED(size);
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/qeglfswindowsurface.h b/src/plugins/platforms/eglfs/qeglfswindowsurface.h
new file mode 100644
index 0000000000..f8aca400ad
--- /dev/null
+++ b/src/plugins/platforms/eglfs/qeglfswindowsurface.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 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 QEGLWINDOWSURFACE_H
+#define QEGLWINDOWSURFACE_H
+
+#include "qeglfsintegration.h"
+#include "qeglfswindow.h"
+
+#include <QtGui/private/qwindowsurface_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QEglFSWindowSurface : public QWindowSurface
+{
+public:
+ QEglFSWindowSurface(QEglFSScreen *screen, QWidget *window);
+ ~QEglFSWindowSurface() {}
+
+ QPaintDevice *paintDevice() { return m_paintDevice; }
+ void flush(QWidget *widget, const QRegion &region, const QPoint &offset);
+ void resize(const QSize &size);
+private:
+ QPaintDevice *m_paintDevice;
+};
+
+QT_END_NAMESPACE
+
+#endif // QEGLWINDOWSURFACE_H
diff --git a/src/plugins/platforms/fb_base/fb_base.cpp b/src/plugins/platforms/fb_base/fb_base.cpp
new file mode 100644
index 0000000000..b000a18954
--- /dev/null
+++ b/src/plugins/platforms/fb_base/fb_base.cpp
@@ -0,0 +1,507 @@
+/****************************************************************************
+**
+** 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 "fb_base.h"
+#include <qpainter.h>
+#include <qdebug.h>
+#include <qbitmap.h>
+#include <QPlatformCursor>
+#include <QWindowSystemInterface>
+
+QPlatformSoftwareCursor::QPlatformSoftwareCursor(QPlatformScreen *scr)
+ : QPlatformCursor(scr), currentRect(QRect()), prevRect(QRect())
+{
+ graphic = new QPlatformCursorImage(0, 0, 0, 0, 0, 0);
+ setCursor(Qt::ArrowCursor);
+}
+
+QRect QPlatformSoftwareCursor::getCurrentRect()
+{
+ QRect rect = graphic->image()->rect().translated(-graphic->hotspot().x(),
+ -graphic->hotspot().y());
+ rect.translate(QCursor::pos());
+ QPoint screenOffset = screen->geometry().topLeft();
+ rect.translate(-screenOffset); // global to local translation
+ return rect;
+}
+
+
+void QPlatformSoftwareCursor::pointerEvent(const QMouseEvent & e)
+{
+ Q_UNUSED(e);
+ QPoint screenOffset = screen->geometry().topLeft();
+ currentRect = getCurrentRect();
+ // global to local translation
+ if (onScreen || screen->geometry().intersects(currentRect.translated(screenOffset))) {
+ setDirty();
+ }
+}
+
+QRect QPlatformSoftwareCursor::drawCursor(QPainter & painter)
+{
+ dirty = false;
+ if (currentRect.isNull())
+ return QRect();
+
+ // We need this because the cursor might be dirty due to moving off screen
+ QPoint screenOffset = screen->geometry().topLeft();
+ // global to local translation
+ if (!currentRect.translated(screenOffset).intersects(screen->geometry()))
+ return QRect();
+
+ prevRect = currentRect;
+ painter.drawImage(prevRect, *graphic->image());
+ onScreen = true;
+ return prevRect;
+}
+
+QRect QPlatformSoftwareCursor::dirtyRect()
+{
+ if (onScreen) {
+ onScreen = false;
+ return prevRect;
+ }
+ return QRect();
+}
+
+void QPlatformSoftwareCursor::setCursor(Qt::CursorShape shape)
+{
+ graphic->set(shape);
+}
+
+void QPlatformSoftwareCursor::setCursor(const QImage &image, int hotx, int hoty)
+{
+ graphic->set(image, hotx, hoty);
+}
+
+void QPlatformSoftwareCursor::setCursor(const uchar *data, const uchar *mask, int width, int height, int hotX, int hotY)
+{
+ graphic->set(data, mask, width, height, hotX, hotY);
+}
+
+void QPlatformSoftwareCursor::changeCursor(QCursor * widgetCursor, QWidget * widget)
+{
+ Q_UNUSED(widget);
+ Qt::CursorShape shape = widgetCursor->shape();
+
+ if (shape == Qt::BitmapCursor) {
+ // application supplied cursor
+ QPoint spot = widgetCursor->hotSpot();
+ setCursor(widgetCursor->pixmap().toImage(), spot.x(), spot.y());
+ } else {
+ // system cursor
+ setCursor(shape);
+ }
+ currentRect = getCurrentRect();
+ QPoint screenOffset = screen->geometry().topLeft(); // global to local translation
+ if (onScreen || screen->geometry().intersects(currentRect.translated(screenOffset)))
+ setDirty();
+}
+
+QFbScreen::QFbScreen() : cursor(0), mGeometry(), mDepth(16), mFormat(QImage::Format_RGB16), mScreenImage(0), compositePainter(0), isUpToDate(false)
+{
+ mScreenImage = new QImage(mGeometry.size(), mFormat);
+ redrawTimer.setSingleShot(true);
+ redrawTimer.setInterval(0);
+ QObject::connect(&redrawTimer, SIGNAL(timeout()), this, SLOT(doRedraw()));
+}
+
+void QFbScreen::setGeometry(QRect rect)
+{
+ delete mScreenImage;
+ mGeometry = rect;
+ mScreenImage = new QImage(mGeometry.size(), mFormat);
+ delete compositePainter;
+ compositePainter = 0;
+ invalidateRectCache();
+}
+
+void QFbScreen::setDepth(int depth)
+{
+ mDepth = depth;
+}
+
+void QFbScreen::setPhysicalSize(QSize size)
+{
+ mPhysicalSize = size;
+}
+
+void QFbScreen::setFormat(QImage::Format format)
+{
+ mFormat = format;
+ delete mScreenImage;
+ mScreenImage = new QImage(mGeometry.size(), mFormat);
+ delete compositePainter;
+ compositePainter = 0;
+}
+
+QFbScreen::~QFbScreen()
+{
+ delete compositePainter;
+ delete mScreenImage;
+}
+
+void QFbScreen::setDirty(const QRect &rect)
+{
+ QRect intersection = rect.intersected(mGeometry);
+ QPoint screenOffset = mGeometry.topLeft();
+ repaintRegion += intersection.translated(-screenOffset); // global to local translation
+ if (!redrawTimer.isActive()) {
+ redrawTimer.start();
+ }
+}
+
+void QFbScreen::generateRects()
+{
+ cachedRects.clear();
+ QPoint screenOffset = mGeometry.topLeft();
+ QRegion remainingScreen(mGeometry.translated(-screenOffset)); // global to local translation
+
+ for (int i = 0; i < windowStack.length(); i++) {
+ if (remainingScreen.isEmpty())
+ break;
+ if (!windowStack[i]->visible())
+ continue;
+ if (windowStack[i]->widget()->isMinimized())
+ continue;
+
+ if (!windowStack[i]->widget()->testAttribute(Qt::WA_TranslucentBackground)) {
+ QRect localGeometry = windowStack.at(i)->geometry().translated(-screenOffset); // global to local translation
+ remainingScreen -= localGeometry;
+ QRegion windowRegion(localGeometry);
+ windowRegion -= remainingScreen;
+ foreach(QRect rect, windowRegion.rects()) {
+ cachedRects += QPair<QRect, int>(rect, i);
+ }
+ }
+ }
+ foreach (QRect rect, remainingScreen.rects())
+ cachedRects += QPair<QRect, int>(rect, -1);
+ isUpToDate = true;
+ return;
+}
+
+
+
+QRegion QFbScreen::doRedraw()
+{
+ QPoint screenOffset = mGeometry.topLeft();
+
+ QRegion touchedRegion;
+ if (cursor && cursor->isDirty() && cursor->isOnScreen()) {
+ QRect lastCursor = cursor->dirtyRect();
+ repaintRegion += lastCursor;
+ }
+ if (repaintRegion.isEmpty() && (!cursor || !cursor->isDirty())) {
+ return touchedRegion;
+ }
+
+ QVector<QRect> rects = repaintRegion.rects();
+
+ if (!isUpToDate)
+ generateRects();
+
+ if (!compositePainter)
+ compositePainter = new QPainter(mScreenImage);
+ for (int rectIndex = 0; rectIndex < repaintRegion.numRects(); rectIndex++) {
+ QRegion rectRegion = rects[rectIndex];
+
+ for(int i = 0; i < cachedRects.length(); i++) {
+ QRect screenSubRect = cachedRects[i].first;
+ int layer = cachedRects[i].second;
+ QRegion intersect = rectRegion.intersected(screenSubRect);
+
+ if (intersect.isEmpty())
+ continue;
+
+ rectRegion -= intersect;
+
+ // we only expect one rectangle, but defensive coding...
+ foreach (QRect rect, intersect.rects()) {
+ bool firstLayer = true;
+ if (layer == -1) {
+ compositePainter->fillRect(rect, Qt::black);
+ firstLayer = false;
+ layer = windowStack.size() - 1;
+ }
+
+ for (int layerIndex = layer; layerIndex != -1; layerIndex--) {
+ if (!windowStack[layerIndex]->visible())
+ continue;
+ if (windowStack[layerIndex]->widget()->isMinimized())
+ continue;
+ QRect windowRect = windowStack[layerIndex]->geometry().translated(-screenOffset);
+ QRect windowIntersect = rect.translated(-windowRect.left(),
+ -windowRect.top());
+ compositePainter->drawImage(rect, windowStack[layerIndex]->surface->image(),
+ windowIntersect);
+ if (firstLayer) {
+ firstLayer = false;
+ }
+ }
+ }
+ }
+ }
+
+ QRect cursorRect;
+ if (cursor && (cursor->isDirty() || repaintRegion.intersects(cursor->lastPainted()))) {
+ cursorRect = cursor->drawCursor(*compositePainter);
+ touchedRegion += cursorRect;
+ }
+ touchedRegion += repaintRegion;
+ repaintRegion = QRegion();
+
+
+
+// qDebug() << "QFbScreen::doRedraw" << windowStack.size() << mScreenImage->size() << touchedRegion;
+
+
+ return touchedRegion;
+}
+
+void QFbScreen::addWindow(QFbWindow *surface)
+{
+ windowStack.prepend(surface);
+ surface->mScreens.append(this);
+ invalidateRectCache();
+ setDirty(surface->geometry());
+}
+
+void QFbScreen::removeWindow(QFbWindow * surface)
+{
+ windowStack.removeOne(surface);
+ surface->mScreens.removeOne(this);
+ invalidateRectCache();
+ setDirty(surface->geometry());
+}
+
+void QFbWindow::raise()
+{
+ QList<QFbScreen *>::const_iterator i = mScreens.constBegin();
+ QList<QFbScreen *>::const_iterator end = mScreens.constEnd();
+ while (i != end) {
+ (*i)->raise(this);
+ ++i;
+ }
+}
+
+void QFbScreen::raise(QPlatformWindow * surface)
+{
+ QFbWindow *s = static_cast<QFbWindow *>(surface);
+ int index = windowStack.indexOf(s);
+ if (index <= 0)
+ return;
+ windowStack.move(index, 0);
+ invalidateRectCache();
+ setDirty(s->geometry());
+}
+
+void QFbWindow::lower()
+{
+ QList<QFbScreen *>::const_iterator i = mScreens.constBegin();
+ QList<QFbScreen *>::const_iterator end = mScreens.constEnd();
+ while (i != end) {
+ (*i)->lower(this);
+ ++i;
+ }
+}
+
+void QFbScreen::lower(QPlatformWindow * surface)
+{
+ QFbWindow *s = static_cast<QFbWindow *>(surface);
+ int index = windowStack.indexOf(s);
+ if (index == -1 || index == (windowStack.size() - 1))
+ return;
+ windowStack.move(index, windowStack.size() - 1);
+ invalidateRectCache();
+ setDirty(s->geometry());
+}
+
+QWidget * QFbScreen::topLevelAt(const QPoint & p) const
+{
+ for(int i = 0; i < windowStack.size(); i++) {
+ if (windowStack[i]->geometry().contains(p, false) &&
+ windowStack[i]->visible() &&
+ !windowStack[i]->widget()->isMinimized()) {
+ return windowStack[i]->widget();
+ }
+ }
+ return 0;
+}
+
+QFbWindow::QFbWindow(QWidget *window)
+ :QPlatformWindow(window),
+ visibleFlag(false)
+{
+ static QAtomicInt winIdGenerator(1);
+ windowId = winIdGenerator.fetchAndAddRelaxed(1);
+}
+
+
+QFbWindow::~QFbWindow()
+{
+ QList<QFbScreen *>::const_iterator i = mScreens.constBegin();
+ QList<QFbScreen *>::const_iterator end = mScreens.constEnd();
+ while (i != end) {
+ (*i)->removeWindow(this);
+ ++i;
+ }
+}
+
+
+QFbWindowSurface::QFbWindowSurface(QFbScreen *screen, QWidget *window)
+ : QWindowSurface(window),
+ mScreen(screen)
+{
+ mImage = QImage(window->size(), mScreen->format());
+
+ platformWindow = static_cast<QFbWindow*>(window->platformWindow());
+ platformWindow->surface = this;
+}
+
+QFbWindowSurface::~QFbWindowSurface()
+{
+}
+
+void QFbWindowSurface::flush(QWidget *widget, const QRegion &region, const QPoint &offset)
+{
+ Q_UNUSED(widget);
+ Q_UNUSED(offset);
+
+
+// qDebug() << "QFbWindowSurface::flush" << region;
+
+
+ platformWindow->repaint(region);
+}
+
+
+void QFbWindow::repaint(const QRegion &region)
+{
+ QRect currentGeometry = geometry();
+
+ QRect dirtyClient = region.boundingRect();
+ QRect dirtyRegion(currentGeometry.left() + dirtyClient.left(),
+ currentGeometry.top() + dirtyClient.top(),
+ dirtyClient.width(),
+ dirtyClient.height());
+ QList<QFbScreen *>::const_iterator i = mScreens.constBegin();
+ QList<QFbScreen *>::const_iterator end = mScreens.constEnd();
+ QRect oldGeometryLocal = oldGeometry;
+ oldGeometry = currentGeometry;
+ while (i != end) {
+ // If this is a move, redraw the previous location
+ if (oldGeometryLocal != currentGeometry) {
+ (*i)->setDirty(oldGeometryLocal);
+ }
+ (*i)->setDirty(dirtyRegion);
+ ++i;
+ }
+}
+
+void QFbWindowSurface::resize(const QSize &size)
+{
+ // change the widget's QImage if this is a resize
+ if (mImage.size() != size)
+ mImage = QImage(size, mScreen->format());
+ QWindowSurface::resize(size);
+}
+
+void QFbWindow::setGeometry(const QRect &rect)
+{
+// store previous geometry for screen update
+ oldGeometry = geometry();
+
+
+ QList<QFbScreen *>::const_iterator i = mScreens.constBegin();
+ QList<QFbScreen *>::const_iterator end = mScreens.constEnd();
+ while (i != end) {
+ (*i)->invalidateRectCache();
+ ++i;
+ }
+//### QWindowSystemInterface::handleGeometryChange(window(), rect);
+
+ QPlatformWindow::setGeometry(rect);
+}
+
+bool QFbWindowSurface::scroll(const QRegion &area, int dx, int dy)
+{
+ return QWindowSurface::scroll(area, dx, dy);
+}
+
+void QFbWindowSurface::beginPaint(const QRegion &region)
+{
+ Q_UNUSED(region);
+}
+
+void QFbWindowSurface::endPaint(const QRegion &region)
+{
+ Q_UNUSED(region);
+}
+
+void QFbWindow::setVisible(bool visible)
+{
+ visibleFlag = visible;
+ QList<QFbScreen *>::const_iterator i = mScreens.constBegin();
+ QList<QFbScreen *>::const_iterator end = mScreens.constEnd();
+ while (i != end) {
+ (*i)->invalidateRectCache();
+ (*i)->setDirty(geometry());
+ ++i;
+ }
+}
+
+Qt::WindowFlags QFbWindow::setWindowFlags(Qt::WindowFlags type)
+{
+ flags = type;
+ QList<QFbScreen *>::const_iterator i = mScreens.constBegin();
+ QList<QFbScreen *>::const_iterator end = mScreens.constEnd();
+ while (i != end) {
+ (*i)->invalidateRectCache();
+ ++i;
+ }
+ return flags;
+}
+
+Qt::WindowFlags QFbWindow::windowFlags() const
+{
+ return flags;
+}
diff --git a/src/plugins/platforms/fb_base/fb_base.h b/src/plugins/platforms/fb_base/fb_base.h
new file mode 100644
index 0000000000..45a5663c5a
--- /dev/null
+++ b/src/plugins/platforms/fb_base/fb_base.h
@@ -0,0 +1,210 @@
+/****************************************************************************
+**
+** 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 QLIGHTHOUSEGRAPHICSSCREEN_H
+#define QLIGHTHOUSEGRAPHICSSCREEN_H
+
+#include <qrect.h>
+#include <qimage.h>
+#include <qtimer.h>
+#include <qpainter.h>
+#include <QPlatformCursor>
+#include <QPlatformScreen>
+#include <QPlatformWindow>
+#include <QtGui/private/qwindowsurface_p.h>
+
+class QMouseEvent;
+class QSize;
+class QPainter;
+
+class QFbScreen;
+
+class QPlatformSoftwareCursor : public QPlatformCursor
+{
+public:
+ QPlatformSoftwareCursor(QPlatformScreen * scr);
+
+ // output methods
+ QRect dirtyRect();
+ virtual QRect drawCursor(QPainter & painter);
+
+ // input methods
+ virtual void pointerEvent(const QMouseEvent & event);
+ virtual void changeCursor(QCursor * widgetCursor, QWidget * widget);
+
+ virtual void setDirty() { dirty = true; screen->setDirty(QRect()); }
+ virtual bool isDirty() { return dirty; }
+ virtual bool isOnScreen() { return onScreen; }
+ virtual QRect lastPainted() { return prevRect; }
+
+protected:
+ QPlatformCursorImage * graphic;
+
+private:
+ void setCursor(const uchar *data, const uchar *mask, int width, int height, int hotX, int hotY);
+ void setCursor(Qt::CursorShape shape);
+ void setCursor(const QImage &image, int hotx, int hoty);
+ QRect currentRect; // next place to draw the cursor
+ QRect prevRect; // last place the cursor was drawn
+ QRect getCurrentRect();
+ bool dirty;
+ bool onScreen;
+};
+
+class QFbWindow;
+
+class QFbWindowSurface : public QWindowSurface
+{
+public:
+ QFbWindowSurface(QFbScreen *screen, QWidget *window);
+ ~QFbWindowSurface();
+
+ virtual QPaintDevice *paintDevice() { return &mImage; }
+ virtual void flush(QWidget *widget, const QRegion &region, const QPoint &offset);
+ virtual bool scroll(const QRegion &area, int dx, int dy);
+
+ virtual void beginPaint(const QRegion &region);
+ virtual void endPaint(const QRegion &region);
+
+
+ const QImage image() { return mImage; }
+ void resize(const QSize &size);
+
+protected:
+ friend class QFbWindow;
+ QFbWindow *platformWindow;
+
+ QFbScreen *mScreen;
+ QImage mImage;
+};
+
+
+class QFbWindow : public QPlatformWindow
+{
+public:
+
+ QFbWindow(QWidget *window);
+ ~QFbWindow();
+
+
+ virtual void setVisible(bool visible);
+ virtual bool visible() { return visibleFlag; }
+
+ virtual void raise();
+ virtual void lower();
+
+ void setGeometry(const QRect &rect);
+
+ virtual Qt::WindowFlags setWindowFlags(Qt::WindowFlags type);
+ virtual Qt::WindowFlags windowFlags() const;
+
+ WId winId() const { return windowId; }
+
+ virtual void repaint(const QRegion&);
+
+protected:
+ friend class QFbWindowSurface;
+ friend class QFbScreen;
+ QFbWindowSurface *surface;
+ QList<QFbScreen *> mScreens;
+ QRect oldGeometry;
+ bool visibleFlag;
+ Qt::WindowFlags flags;
+
+ WId windowId;
+};
+
+class QFbScreen : public QPlatformScreen
+{
+ Q_OBJECT
+public:
+ QFbScreen();
+ ~QFbScreen();
+
+ virtual QRect geometry() const { return mGeometry; }
+ virtual int depth() const { return mDepth; }
+ virtual QImage::Format format() const { return mFormat; }
+ virtual QSize physicalSize() const { return mPhysicalSize; }
+
+ virtual void setGeometry(QRect rect);
+ virtual void setDepth(int depth);
+ virtual void setFormat(QImage::Format format);
+ virtual void setPhysicalSize(QSize size);
+
+ virtual void setDirty(const QRect &rect);
+
+ virtual void removeWindow(QFbWindow * surface);
+ virtual void addWindow(QFbWindow * surface);
+ virtual void raise(QPlatformWindow * surface);
+ virtual void lower(QPlatformWindow * surface);
+ virtual QWidget * topLevelAt(const QPoint & p) const;
+
+ QImage * image() const { return mScreenImage; }
+ QPaintDevice * paintDevice() const { return mScreenImage; }
+
+protected:
+ QList<QFbWindow *> windowStack;
+ QRegion repaintRegion;
+ QPlatformSoftwareCursor * cursor;
+ QTimer redrawTimer;
+
+protected slots:
+ virtual QRegion doRedraw();
+
+protected:
+ QRect mGeometry;
+ int mDepth;
+ QImage::Format mFormat;
+ QSize mPhysicalSize;
+ QImage *mScreenImage;
+
+private:
+ QPainter * compositePainter;
+ void generateRects();
+ QList<QPair<QRect, int> > cachedRects;
+
+ void invalidateRectCache() { isUpToDate = false; }
+ friend class QFbWindowSurface;
+ friend class QFbWindow;
+ bool isUpToDate;
+};
+
+#endif // QLIGHTHOUSEGRAPHICSSCREEN_H
diff --git a/src/plugins/platforms/fb_base/fb_base.pri b/src/plugins/platforms/fb_base/fb_base.pri
new file mode 100644
index 0000000000..41bd87fbca
--- /dev/null
+++ b/src/plugins/platforms/fb_base/fb_base.pri
@@ -0,0 +1,2 @@
+SOURCES += ../fb_base/fb_base.cpp
+HEADERS += ../fb_base/fb_base.h
diff --git a/src/plugins/platforms/fb_base/fb_base.pro b/src/plugins/platforms/fb_base/fb_base.pro
new file mode 100644
index 0000000000..e08c0c5571
--- /dev/null
+++ b/src/plugins/platforms/fb_base/fb_base.pro
@@ -0,0 +1,23 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2009-11-05T13:22:31
+#
+#-------------------------------------------------
+
+#QT -= core gui
+TARGET = fb_base
+#include(../../qpluginbase.pri)
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/graphicssystems
+
+TEMPLATE = lib
+
+#DEFINES += STATIC_LIBRARY
+CONFIG += staticlib
+
+SOURCES += fb_base.cpp
+
+HEADERS += fb_base.h
+
+target.path += $$[QT_INSTALL_PLUGINS]/graphicssystems
+INSTALLS += target
diff --git a/src/plugins/platforms/fontdatabases/basicunix/basicunix.pri b/src/plugins/platforms/fontdatabases/basicunix/basicunix.pri
new file mode 100644
index 0000000000..21aedba6ed
--- /dev/null
+++ b/src/plugins/platforms/fontdatabases/basicunix/basicunix.pri
@@ -0,0 +1,82 @@
+DEFINES += QT_NO_FONTCONFIG
+HEADERS += \
+ $$QT_SOURCE_TREE/src/plugins/platforms/fontdatabases/basicunix/qbasicunixfontdatabase.h \
+ $$QT_SOURCE_TREE/src/gui/text/qfontengine_ft_p.h
+
+SOURCES += \
+ $$QT_SOURCE_TREE/src/plugins/platforms/fontdatabases/basicunix/qbasicunixfontdatabase.cpp \
+ $$QT_SOURCE_TREE/src/gui/text/qfontengine_ft.cpp
+
+INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/harfbuzz/src
+
+INCLUDEPATH += $$QT_SOURCE_TREE/src/plugins/platforms/fontdatabases/basicunix
+
+CONFIG += opentype
+
+contains(QT_CONFIG, freetype) {
+ SOURCES += \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/base/ftbase.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/base/ftbbox.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/base/ftdebug.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/base/ftglyph.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/base/ftinit.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/base/ftmm.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/base/fttype1.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/base/ftsynth.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/base/ftbitmap.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/bdf/bdf.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/cache/ftcache.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/cff/cff.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/cid/type1cid.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/gzip/ftgzip.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/pcf/pcf.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/pfr/pfr.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/psaux/psaux.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/pshinter/pshinter.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/psnames/psmodule.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/raster/raster.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/sfnt/sfnt.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/smooth/smooth.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/truetype/truetype.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/type1/type1.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/type42/type42.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/winfonts/winfnt.c \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/lzw/ftlzw.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/otvalid/otvalid.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/otvalid/otvbase.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/otvalid/otvgdef.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/otvalid/otvjstf.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/otvalid/otvcommn.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/otvalid/otvgpos.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/otvalid/otvgsub.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/otvalid/otvmod.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/autofit/afangles.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/autofit/afglobal.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/autofit/aflatin.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/autofit/afmodule.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/autofit/afdummy.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/autofit/afhints.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/autofit/afloader.c\
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/autofit/autofit.c
+
+ symbian {
+ SOURCES += \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src/base/ftsystem.c
+ } else {
+ SOURCES += \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/builds/unix/ftsystem.c
+ INCLUDEPATH += \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/builds/unix
+ }
+
+ INCLUDEPATH += \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/src \
+ $$QT_SOURCE_TREE/src/3rdparty/freetype/include
+
+ DEFINES += FT2_BUILD_LIBRARY FT_CONFIG_OPTION_SYSTEM_ZLIB
+ } else:contains(QT_CONFIG, system-freetype) {
+ # pull in the proper freetype2 include directory
+ include($$QT_SOURCE_TREE/config.tests/unix/freetype/freetype.pri)
+ LIBS_PRIVATE += -lfreetype
+ }
+
diff --git a/src/plugins/platforms/fontdatabases/basicunix/qbasicunixfontdatabase.cpp b/src/plugins/platforms/fontdatabases/basicunix/qbasicunixfontdatabase.cpp
new file mode 100644
index 0000000000..4634477ae7
--- /dev/null
+++ b/src/plugins/platforms/fontdatabases/basicunix/qbasicunixfontdatabase.cpp
@@ -0,0 +1,326 @@
+/****************************************************************************
+**
+** 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 "qbasicunixfontdatabase.h"
+
+#include <QtGui/private/qapplication_p.h>
+#include <QtGui/QPlatformScreen>
+
+#include <QtCore/QFile>
+#include <QtCore/QLibraryInfo>
+#include <QtCore/QDir>
+
+#undef QT_NO_FREETYPE
+#include <QtGui/private/qfontengine_ft_p.h>
+#include <QtGui/private/qfontengine_p.h>
+
+#include <ft2build.h>
+#include FT_TRUETYPE_TABLES_H
+
+#define SimplifiedChineseCsbBit 18
+#define TraditionalChineseCsbBit 20
+#define JapaneseCsbBit 17
+#define KoreanCsbBit 21
+
+static int requiredUnicodeBits[QFontDatabase::WritingSystemsCount][2] = {
+ // Any,
+ { 127, 127 },
+ // Latin,
+ { 0, 127 },
+ // Greek,
+ { 7, 127 },
+ // Cyrillic,
+ { 9, 127 },
+ // Armenian,
+ { 10, 127 },
+ // Hebrew,
+ { 11, 127 },
+ // Arabic,
+ { 13, 127 },
+ // Syriac,
+ { 71, 127 },
+ //Thaana,
+ { 72, 127 },
+ //Devanagari,
+ { 15, 127 },
+ //Bengali,
+ { 16, 127 },
+ //Gurmukhi,
+ { 17, 127 },
+ //Gujarati,
+ { 18, 127 },
+ //Oriya,
+ { 19, 127 },
+ //Tamil,
+ { 20, 127 },
+ //Telugu,
+ { 21, 127 },
+ //Kannada,
+ { 22, 127 },
+ //Malayalam,
+ { 23, 127 },
+ //Sinhala,
+ { 73, 127 },
+ //Thai,
+ { 24, 127 },
+ //Lao,
+ { 25, 127 },
+ //Tibetan,
+ { 70, 127 },
+ //Myanmar,
+ { 74, 127 },
+ // Georgian,
+ { 26, 127 },
+ // Khmer,
+ { 80, 127 },
+ // SimplifiedChinese,
+ { 126, 127 },
+ // TraditionalChinese,
+ { 126, 127 },
+ // Japanese,
+ { 126, 127 },
+ // Korean,
+ { 56, 127 },
+ // Vietnamese,
+ { 0, 127 }, // same as latin1
+ // Other,
+ { 126, 127 },
+ // Ogham,
+ { 78, 127 },
+ // Runic,
+ { 79, 127 },
+ // Nko,
+ { 14, 127 },
+};
+
+static QSupportedWritingSystems determineWritingSystemsFromTrueTypeBits(quint32 unicodeRange[4], quint32 codePageRange[2])
+{
+ QSupportedWritingSystems writingSystems;
+ bool hasScript = false;
+
+ int i;
+ for(i = 0; i < QFontDatabase::WritingSystemsCount; i++) {
+ int bit = requiredUnicodeBits[i][0];
+ int index = bit/32;
+ int flag = 1 << (bit&31);
+ if (bit != 126 && unicodeRange[index] & flag) {
+ bit = requiredUnicodeBits[i][1];
+ index = bit/32;
+
+ flag = 1 << (bit&31);
+ if (bit == 127 || unicodeRange[index] & flag) {
+ writingSystems.setSupported(QFontDatabase::WritingSystem(i));
+ hasScript = true;
+ // qDebug("font %s: index=%d, flag=%8x supports script %d", familyName.latin1(), index, flag, i);
+ }
+ }
+ }
+ if(codePageRange[0] & (1 << SimplifiedChineseCsbBit)) {
+ writingSystems.setSupported(QFontDatabase::SimplifiedChinese);
+ hasScript = true;
+ //qDebug("font %s supports Simplified Chinese", familyName.latin1());
+ }
+ if(codePageRange[0] & (1 << TraditionalChineseCsbBit)) {
+ writingSystems.setSupported(QFontDatabase::TraditionalChinese);
+ hasScript = true;
+ //qDebug("font %s supports Traditional Chinese", familyName.latin1());
+ }
+ if(codePageRange[0] & (1 << JapaneseCsbBit)) {
+ writingSystems.setSupported(QFontDatabase::Japanese);
+ hasScript = true;
+ //qDebug("font %s supports Japanese", familyName.latin1());
+ }
+ if(codePageRange[0] & (1 << KoreanCsbBit)) {
+ writingSystems.setSupported(QFontDatabase::Korean);
+ hasScript = true;
+ //qDebug("font %s supports Korean", familyName.latin1());
+ }
+ if (!hasScript)
+ writingSystems.setSupported(QFontDatabase::Symbol);
+
+ return writingSystems;
+}
+
+static inline bool scriptRequiresOpenType(int script)
+{
+ return ((script >= QUnicodeTables::Syriac && script <= QUnicodeTables::Sinhala)
+ || script == QUnicodeTables::Khmer || script == QUnicodeTables::Nko);
+}
+
+void QBasicUnixFontDatabase::populateFontDatabase()
+{
+ QPlatformFontDatabase::populateFontDatabase();
+ QString fontpath = fontDir();
+
+ if(!QFile::exists(fontpath)) {
+ qFatal("QFontDatabase: Cannot find font directory %s - is Qt installed correctly?",
+ qPrintable(fontpath));
+ }
+
+ QDir dir(fontpath);
+ dir.setNameFilters(QStringList() << QLatin1String("*.ttf")
+ << QLatin1String("*.ttc") << QLatin1String("*.pfa")
+ << QLatin1String("*.pfb"));
+ dir.refresh();
+ for (int i = 0; i < int(dir.count()); ++i) {
+ const QByteArray file = QFile::encodeName(dir.absoluteFilePath(dir[i]));
+// qDebug() << "looking at" << file;
+ addTTFile(QByteArray(), file);
+ }
+}
+
+QFontEngine *QBasicUnixFontDatabase::fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *usrPtr)
+{
+ QFontEngineFT *engine;
+ FontFile *fontfile = static_cast<FontFile *> (usrPtr);
+ QFontEngine::FaceId fid;
+ fid.filename = fontfile->fileName.toLocal8Bit();
+ fid.index = fontfile->indexValue;
+ engine = new QFontEngineFT(fontDef);
+
+ bool antialias = !(fontDef.styleStrategy & QFont::NoAntialias);
+ QFontEngineFT::GlyphFormat format = antialias? QFontEngineFT::Format_A8 : QFontEngineFT::Format_Mono;
+ if (!engine->init(fid,antialias,format)) {
+ delete engine;
+ engine = 0;
+ return engine;
+ }
+ if (engine->invalid()) {
+ delete engine;
+ engine = 0;
+ } else if (scriptRequiresOpenType(script)) {
+ HB_Face hbFace = engine->harfbuzzFace();
+ if (!hbFace || !hbFace->supported_scripts[script]) {
+ delete engine;
+ engine = 0;
+ }
+ }
+
+ return engine;
+}
+
+QStringList QBasicUnixFontDatabase::fallbacksForFamily(const QString family, const QFont::Style &style, const QUnicodeTables::Script &script) const
+{
+ Q_UNUSED(family);
+ Q_UNUSED(style);
+ Q_UNUSED(script);
+ return QStringList();
+}
+
+QStringList QBasicUnixFontDatabase::addApplicationFont(const QByteArray &fontData, const QString &fileName)
+{
+ return addTTFile(fontData,fileName.toLocal8Bit());
+}
+
+void QBasicUnixFontDatabase::releaseHandle(void *handle)
+{
+ FontFile *file = static_cast<FontFile *>(handle);
+ delete file;
+}
+
+QStringList QBasicUnixFontDatabase::addTTFile(const QByteArray &fontData, const QByteArray &file)
+{
+ extern FT_Library qt_getFreetype();
+ FT_Library library = qt_getFreetype();
+
+ int index = 0;
+ int numFaces = 0;
+ QStringList families;
+ do {
+ FT_Face face;
+ FT_Error error;
+ if (!fontData.isEmpty()) {
+ error = FT_New_Memory_Face(library, (const FT_Byte *)fontData.constData(), fontData.size(), index, &face);
+ } else {
+ error = FT_New_Face(library, file.constData(), index, &face);
+ }
+ if (error != FT_Err_Ok) {
+ qDebug() << "FT_New_Face failed with index" << index << ":" << hex << error;
+ break;
+ }
+ numFaces = face->num_faces;
+
+ int weight = QFont::Normal;
+
+ QFont::Style style = QFont::StyleNormal;
+ if (face->style_flags & FT_STYLE_FLAG_ITALIC)
+ style = QFont::StyleItalic;
+
+ if (face->style_flags & FT_STYLE_FLAG_BOLD)
+ weight = QFont::Bold;
+
+ QSupportedWritingSystems writingSystems;
+ // detect symbol fonts
+ for (int i = 0; i < face->num_charmaps; ++i) {
+ FT_CharMap cm = face->charmaps[i];
+ if (cm->encoding == ft_encoding_adobe_custom
+ || cm->encoding == ft_encoding_symbol) {
+ writingSystems.setSupported(QFontDatabase::Symbol);
+ break;
+ }
+ }
+
+ TT_OS2 *os2 = (TT_OS2 *)FT_Get_Sfnt_Table(face, ft_sfnt_os2);
+ if (os2) {
+ quint32 unicodeRange[4] = {
+ os2->ulUnicodeRange1, os2->ulUnicodeRange2, os2->ulUnicodeRange3, os2->ulUnicodeRange4
+ };
+ quint32 codePageRange[2] = {
+ os2->ulCodePageRange1, os2->ulCodePageRange2
+ };
+
+ writingSystems = determineWritingSystemsFromTrueTypeBits(unicodeRange, codePageRange);
+ }
+
+ QString family = QString::fromAscii(face->family_name);
+ FontFile *fontFile = new FontFile;
+ fontFile->fileName = file;
+ fontFile->indexValue = index;
+
+ registerFont(family,"",weight,style,100,true,true,0,writingSystems,fontFile);
+
+ families.append(family);
+
+ FT_Done_Face(face);
+ ++index;
+ } while (index < numFaces);
+ return families;
+}
diff --git a/src/plugins/platforms/fontdatabases/basicunix/qbasicunixfontdatabase.h b/src/plugins/platforms/fontdatabases/basicunix/qbasicunixfontdatabase.h
new file mode 100644
index 0000000000..0af118de18
--- /dev/null
+++ b/src/plugins/platforms/fontdatabases/basicunix/qbasicunixfontdatabase.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 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 QBASICUNIXFONTDATABASE_H
+#define QBASICUNIXFONTDATABASE_H
+
+#include <QPlatformFontDatabase>
+#include <QtCore/QByteArray>
+#include <QtCore/QString>
+
+struct FontFile
+{
+ QString fileName;
+ int indexValue;
+};
+
+class QBasicUnixFontDatabase : public QPlatformFontDatabase
+{
+public:
+ void populateFontDatabase();
+ QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle);
+ QStringList fallbacksForFamily(const QString family, const QFont::Style &style, const QUnicodeTables::Script &script) const;
+ QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName);
+ void releaseHandle(void *handle);
+
+ static QStringList addTTFile(const QByteArray &fontData, const QByteArray &file);
+};
+
+#endif // QBASICUNIXFONTDATABASE_H
diff --git a/src/plugins/platforms/fontdatabases/fontconfig/fontconfig.pri b/src/plugins/platforms/fontdatabases/fontconfig/fontconfig.pri
new file mode 100644
index 0000000000..19c74ed089
--- /dev/null
+++ b/src/plugins/platforms/fontdatabases/fontconfig/fontconfig.pri
@@ -0,0 +1,12 @@
+include(../basicunix/basicunix.pri)
+
+HEADERS += \
+ $$QT_SOURCE_TREE/src/plugins/platforms/fontdatabases/fontconfig/qfontconfigdatabase.h
+
+SOURCES += \
+ $$QT_SOURCE_TREE/src/plugins/platforms/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+
+INCLUDEPATH += $$QT_SOURCE_TREE/src/plugins/platforms/fontdatabases/fontconfig
+LIBS_PRIVATE += -lfontconfig
+
+
diff --git a/src/plugins/platforms/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/plugins/platforms/fontdatabases/fontconfig/qfontconfigdatabase.cpp
new file mode 100644
index 0000000000..c9d1b7476c
--- /dev/null
+++ b/src/plugins/platforms/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -0,0 +1,572 @@
+/****************************************************************************
+**
+** 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 "qfontconfigdatabase.h"
+
+#include <QtCore/QList>
+#include <QtGui/private/qfont_p.h>
+
+#include <QtCore/QElapsedTimer>
+
+#include <QtGui/private/qapplication_p.h>
+#include <QtGui/QPlatformScreen>
+
+#include <QtGui/private/qfontengine_ft_p.h>
+#include <QtGui/private/qfontengine_p.h>
+
+
+
+#include <ft2build.h>
+#include FT_TRUETYPE_TABLES_H
+
+#include <fontconfig/fontconfig.h>
+
+#define SimplifiedChineseCsbBit 18
+#define TraditionalChineseCsbBit 20
+#define JapaneseCsbBit 17
+#define KoreanCsbBit 21
+
+static inline bool requiresOpenType(int writingSystem)
+{
+ return ((writingSystem >= QFontDatabase::Syriac && writingSystem <= QFontDatabase::Sinhala)
+ || writingSystem == QFontDatabase::Khmer || writingSystem == QFontDatabase::Nko);
+}
+static inline bool scriptRequiresOpenType(int script)
+{
+ return ((script >= QUnicodeTables::Syriac && script <= QUnicodeTables::Sinhala)
+ || script == QUnicodeTables::Khmer || script == QUnicodeTables::Nko);
+}
+
+static int getFCWeight(int fc_weight)
+{
+ int qtweight = QFont::Black;
+ if (fc_weight <= (FC_WEIGHT_LIGHT + FC_WEIGHT_MEDIUM) / 2)
+ qtweight = QFont::Light;
+ else if (fc_weight <= (FC_WEIGHT_MEDIUM + FC_WEIGHT_DEMIBOLD) / 2)
+ qtweight = QFont::Normal;
+ else if (fc_weight <= (FC_WEIGHT_DEMIBOLD + FC_WEIGHT_BOLD) / 2)
+ qtweight = QFont::DemiBold;
+ else if (fc_weight <= (FC_WEIGHT_BOLD + FC_WEIGHT_BLACK) / 2)
+ qtweight = QFont::Bold;
+
+ return qtweight;
+}
+
+static const char *specialLanguages[] = {
+ "en", // Common
+ "el", // Greek
+ "ru", // Cyrillic
+ "hy", // Armenian
+ "he", // Hebrew
+ "ar", // Arabic
+ "syr", // Syriac
+ "div", // Thaana
+ "hi", // Devanagari
+ "bn", // Bengali
+ "pa", // Gurmukhi
+ "gu", // Gujarati
+ "or", // Oriya
+ "ta", // Tamil
+ "te", // Telugu
+ "kn", // Kannada
+ "ml", // Malayalam
+ "si", // Sinhala
+ "th", // Thai
+ "lo", // Lao
+ "bo", // Tibetan
+ "my", // Myanmar
+ "ka", // Georgian
+ "ko", // Hangul
+ "", // Ogham
+ "", // Runic
+ "km", // Khmer
+ "" // N'Ko
+};
+enum { SpecialLanguageCount = sizeof(specialLanguages) / sizeof(const char *) };
+
+static const ushort specialChars[] = {
+ 0, // English
+ 0, // Greek
+ 0, // Cyrillic
+ 0, // Armenian
+ 0, // Hebrew
+ 0, // Arabic
+ 0, // Syriac
+ 0, // Thaana
+ 0, // Devanagari
+ 0, // Bengali
+ 0, // Gurmukhi
+ 0, // Gujarati
+ 0, // Oriya
+ 0, // Tamil
+ 0xc15, // Telugu
+ 0xc95, // Kannada
+ 0xd15, // Malayalam
+ 0xd9a, // Sinhala
+ 0, // Thai
+ 0, // Lao
+ 0, // Tibetan
+ 0x1000, // Myanmar
+ 0, // Georgian
+ 0, // Hangul
+ 0x1681, // Ogham
+ 0x16a0, // Runic
+ 0, // Khmer
+ 0x7ca // N'Ko
+};
+enum { SpecialCharCount = sizeof(specialChars) / sizeof(ushort) };
+
+// this could become a list of all languages used for each writing
+// system, instead of using the single most common language.
+static const char *languageForWritingSystem[] = {
+ 0, // Any
+ "en", // Latin
+ "el", // Greek
+ "ru", // Cyrillic
+ "hy", // Armenian
+ "he", // Hebrew
+ "ar", // Arabic
+ "syr", // Syriac
+ "div", // Thaana
+ "hi", // Devanagari
+ "bn", // Bengali
+ "pa", // Gurmukhi
+ "gu", // Gujarati
+ "or", // Oriya
+ "ta", // Tamil
+ "te", // Telugu
+ "kn", // Kannada
+ "ml", // Malayalam
+ "si", // Sinhala
+ "th", // Thai
+ "lo", // Lao
+ "bo", // Tibetan
+ "my", // Myanmar
+ "ka", // Georgian
+ "km", // Khmer
+ "zh-cn", // SimplifiedChinese
+ "zh-tw", // TraditionalChinese
+ "ja", // Japanese
+ "ko", // Korean
+ "vi", // Vietnamese
+ 0, // Symbol
+ 0, // Ogham
+ 0, // Runic
+ 0 // N'Ko
+};
+enum { LanguageCount = sizeof(languageForWritingSystem) / sizeof(const char *) };
+
+// Unfortunately FontConfig doesn't know about some languages. We have to test these through the
+// charset. The lists below contain the systems where we need to do this.
+static const ushort sampleCharForWritingSystem[] = {
+ 0, // Any
+ 0, // Latin
+ 0, // Greek
+ 0, // Cyrillic
+ 0, // Armenian
+ 0, // Hebrew
+ 0, // Arabic
+ 0, // Syriac
+ 0, // Thaana
+ 0, // Devanagari
+ 0, // Bengali
+ 0, // Gurmukhi
+ 0, // Gujarati
+ 0, // Oriya
+ 0, // Tamil
+ 0xc15, // Telugu
+ 0xc95, // Kannada
+ 0xd15, // Malayalam
+ 0xd9a, // Sinhala
+ 0, // Thai
+ 0, // Lao
+ 0, // Tibetan
+ 0x1000, // Myanmar
+ 0, // Georgian
+ 0, // Khmer
+ 0, // SimplifiedChinese
+ 0, // TraditionalChinese
+ 0, // Japanese
+ 0, // Korean
+ 0, // Vietnamese
+ 0, // Symbol
+ 0x1681, // Ogham
+ 0x16a0, // Runic
+ 0x7ca // N'Ko
+};
+enum { SampleCharCount = sizeof(sampleCharForWritingSystem) / sizeof(ushort) };
+
+// Newer FontConfig let's us sort out fonts that contain certain glyphs, but no
+// open type tables for is directly. Do this so we don't pick some strange
+// pseudo unicode font
+static const char *openType[] = {
+ 0, // Any
+ 0, // Latin
+ 0, // Greek
+ 0, // Cyrillic
+ 0, // Armenian
+ 0, // Hebrew
+ 0, // Arabic
+ "syrc", // Syriac
+ "thaa", // Thaana
+ "deva", // Devanagari
+ "beng", // Bengali
+ "guru", // Gurmukhi
+ "gurj", // Gujarati
+ "orya", // Oriya
+ "taml", // Tamil
+ "telu", // Telugu
+ "knda", // Kannada
+ "mlym", // Malayalam
+ "sinh", // Sinhala
+ 0, // Thai
+ 0, // Lao
+ "tibt", // Tibetan
+ "mymr", // Myanmar
+ 0, // Georgian
+ "khmr", // Khmer
+ 0, // SimplifiedChinese
+ 0, // TraditionalChinese
+ 0, // Japanese
+ 0, // Korean
+ 0, // Vietnamese
+ 0, // Symbol
+ 0, // Ogham
+ 0, // Runic
+ "nko " // N'Ko
+};
+
+void QFontconfigDatabase::populateFontDatabase()
+{
+ FcFontSet *fonts;
+
+ QString familyName;
+ FcChar8 *value = 0;
+ int weight_value;
+ int slant_value;
+ int spacing_value;
+ FcChar8 *file_value;
+ int indexValue;
+ FcChar8 *foundry_value;
+ FcBool scalable;
+ FcBool antialias;
+
+ {
+ FcObjectSet *os = FcObjectSetCreate();
+ FcPattern *pattern = FcPatternCreate();
+ const char *properties [] = {
+ FC_FAMILY, FC_WEIGHT, FC_SLANT,
+ FC_SPACING, FC_FILE, FC_INDEX,
+ FC_LANG, FC_CHARSET, FC_FOUNDRY, FC_SCALABLE, FC_PIXEL_SIZE, FC_WEIGHT,
+ FC_WIDTH,
+#if FC_VERSION >= 20297
+ FC_CAPABILITY,
+#endif
+ (const char *)0
+ };
+ const char **p = properties;
+ while (*p) {
+ FcObjectSetAdd(os, *p);
+ ++p;
+ }
+ fonts = FcFontList(0, pattern, os);
+ FcObjectSetDestroy(os);
+ FcPatternDestroy(pattern);
+ }
+
+ for (int i = 0; i < fonts->nfont; i++) {
+ if (FcPatternGetString(fonts->fonts[i], FC_FAMILY, 0, &value) != FcResultMatch)
+ continue;
+ // capitalize(value);
+ familyName = QString::fromUtf8((const char *)value);
+ slant_value = FC_SLANT_ROMAN;
+ weight_value = FC_WEIGHT_MEDIUM;
+ spacing_value = FC_PROPORTIONAL;
+ file_value = 0;
+ indexValue = 0;
+ scalable = FcTrue;
+
+
+ if (FcPatternGetInteger (fonts->fonts[i], FC_SLANT, 0, &slant_value) != FcResultMatch)
+ slant_value = FC_SLANT_ROMAN;
+ if (FcPatternGetInteger (fonts->fonts[i], FC_WEIGHT, 0, &weight_value) != FcResultMatch)
+ weight_value = FC_WEIGHT_MEDIUM;
+ if (FcPatternGetInteger (fonts->fonts[i], FC_SPACING, 0, &spacing_value) != FcResultMatch)
+ spacing_value = FC_PROPORTIONAL;
+ if (FcPatternGetString (fonts->fonts[i], FC_FILE, 0, &file_value) != FcResultMatch)
+ file_value = 0;
+ if (FcPatternGetInteger (fonts->fonts[i], FC_INDEX, 0, &indexValue) != FcResultMatch)
+ indexValue = 0;
+ if (FcPatternGetBool(fonts->fonts[i], FC_SCALABLE, 0, &scalable) != FcResultMatch)
+ scalable = FcTrue;
+ if (FcPatternGetString(fonts->fonts[i], FC_FOUNDRY, 0, &foundry_value) != FcResultMatch)
+ foundry_value = 0;
+ if(FcPatternGetBool(fonts->fonts[i],FC_ANTIALIAS,0,&antialias) != FcResultMatch)
+ antialias = true;
+
+ QSupportedWritingSystems writingSystems;
+ FcLangSet *langset = 0;
+ FcResult res = FcPatternGetLangSet(fonts->fonts[i], FC_LANG, 0, &langset);
+ if (res == FcResultMatch) {
+ for (int i = 1; i < LanguageCount; ++i) {
+ const FcChar8 *lang = (const FcChar8*) languageForWritingSystem[i];
+ if (lang) {
+ FcLangResult langRes = FcLangSetHasLang(langset, lang);
+ if (langRes != FcLangDifferentLang)
+ writingSystems.setSupported(QFontDatabase::WritingSystem(i));
+ }
+ }
+ } else {
+ // we set Other to supported for symbol fonts. It makes no
+ // sense to merge these with other ones, as they are
+ // special in a way.
+ writingSystems.setSupported(QFontDatabase::Other);
+ }
+
+ FcCharSet *cs = 0;
+ res = FcPatternGetCharSet(fonts->fonts[i], FC_CHARSET, 0, &cs);
+ if (res == FcResultMatch) {
+ // some languages are not supported by FontConfig, we rather check the
+ // charset to detect these
+ for (int i = 1; i < SampleCharCount; ++i) {
+ if (!sampleCharForWritingSystem[i])
+ continue;
+ if (FcCharSetHasChar(cs, sampleCharForWritingSystem[i]))
+ writingSystems.setSupported(QFontDatabase::WritingSystem(i));
+ }
+ }
+
+#if FC_VERSION >= 20297
+ for (int j = 1; j < LanguageCount; ++j) {
+ if (writingSystems.supported(QFontDatabase::WritingSystem(j))
+ && requiresOpenType(j) && openType[j]) {
+ FcChar8 *cap;
+ res = FcPatternGetString (fonts->fonts[i], FC_CAPABILITY, 0, &cap);
+ if (res != FcResultMatch || !strstr((const char *)cap, openType[j]))
+ writingSystems.setSupported(QFontDatabase::WritingSystem(j),false);
+ }
+ }
+#endif
+
+ FontFile *fontFile = new FontFile;
+ fontFile->fileName = QLatin1String((const char *)file_value);
+ fontFile->indexValue = indexValue;
+
+ QFont::Style style = (slant_value == FC_SLANT_ITALIC)
+ ? QFont::StyleItalic
+ : ((slant_value == FC_SLANT_OBLIQUE)
+ ? QFont::StyleOblique
+ : QFont::StyleNormal);
+ int weight = getFCWeight(weight_value);
+
+ double pixel_size = 0;
+ if (!scalable) {
+ int width = 100;
+ FcPatternGetInteger (fonts->fonts[i], FC_WIDTH, 0, &width);
+ FcPatternGetDouble (fonts->fonts[i], FC_PIXEL_SIZE, 0, &pixel_size);
+ }
+
+ QPlatformFontDatabase::registerFont(familyName,QLatin1String((const char *)foundry_value),weight,style,100,antialias,scalable,pixel_size,writingSystems,fontFile);
+// qDebug() << familyName << (const char *)foundry_value << weight << style << &writingSystems << scalable << true << pixel_size;
+ }
+
+ FcFontSetDestroy (fonts);
+
+ struct FcDefaultFont {
+ const char *qtname;
+ const char *rawname;
+ bool fixed;
+ };
+ const FcDefaultFont defaults[] = {
+ { "Serif", "serif", false },
+ { "Sans Serif", "sans-serif", false },
+ { "Monospace", "monospace", true },
+ { 0, 0, false }
+ };
+ const FcDefaultFont *f = defaults;
+ // aliases only make sense for 'common', not for any of the specials
+ QSupportedWritingSystems ws;
+ ws.setSupported(QFontDatabase::Latin);
+
+ while (f->qtname) {
+ registerFont(f->qtname,"",50,QFont::StyleNormal,100,true,true,0,ws,0);
+ registerFont(f->qtname,"",50,QFont::StyleItalic,100,true,true,0,ws,0);
+ registerFont(f->qtname,"",50,QFont::StyleOblique,100,true,true,0,ws,0);
+ ++f;
+ }
+
+ //Lighthouse has very lazy population of the font db. We want it to be initialized when
+ //QApplication is constructed, so that the population procedure can do something like this to
+ //set the default font
+// const FcDefaultFont *s = defaults;
+// QFont font("Sans Serif");
+// font.setPointSize(9);
+// QApplication::setFont(font);
+}
+
+QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables::Script script, void *usrPtr)
+{
+ QFontDef fontDef = f;
+
+ QFontEngineFT *engine;
+ FontFile *fontfile = static_cast<FontFile *> (usrPtr);
+ QFontEngine::FaceId fid;
+ fid.filename = fontfile->fileName.toLocal8Bit();
+ fid.index = fontfile->indexValue;
+
+ //try and get the pattern
+ FcPattern *pattern = FcPatternCreate();
+
+ bool antialias = !(fontDef.styleStrategy & QFont::NoAntialias);
+ QFontEngineFT::GlyphFormat format = antialias? QFontEngineFT::Format_A8 : QFontEngineFT::Format_Mono;
+
+ engine = new QFontEngineFT(fontDef);
+
+ FcValue value;
+ value.type = FcTypeString;
+ QByteArray cs = fontDef.family.toUtf8();
+ value.u.s = (const FcChar8 *)cs.data();
+ FcPatternAdd(pattern,FC_FAMILY,value,true);
+
+
+ value.u.s = (const FcChar8 *)fid.filename.data();
+ FcPatternAdd(pattern,FC_FILE,value,true);
+
+ value.type = FcTypeInteger;
+ value.u.i = fid.index;
+ FcPatternAdd(pattern,FC_INDEX,value,true);
+
+ QFontEngineFT::HintStyle default_hint_style;
+
+ if (FcConfigSubstitute(0,pattern,FcMatchPattern)) {
+
+ //hinting
+ int hint_style = 0;
+ if (FcPatternGetInteger (pattern, FC_HINT_STYLE, 0, &hint_style) == FcResultNoMatch)
+ hint_style = QFontEngineFT::HintFull;
+ switch (hint_style) {
+ case FC_HINT_NONE:
+ default_hint_style = QFontEngineFT::HintNone;
+ break;
+ case FC_HINT_SLIGHT:
+ default_hint_style = QFontEngineFT::HintLight;
+ break;
+ case FC_HINT_MEDIUM:
+ default_hint_style = QFontEngineFT::HintMedium;
+ break;
+ default:
+ default_hint_style = QFontEngineFT::HintFull;
+ break;
+ }
+ }
+
+ engine->setDefaultHintStyle(default_hint_style);
+ if (!engine->init(fid,antialias,format)) {
+ delete engine;
+ engine = 0;
+ return engine;
+ }
+ if (engine->invalid()) {
+ delete engine;
+ engine = 0;
+ } else if (scriptRequiresOpenType(script)) {
+ HB_Face hbFace = engine->harfbuzzFace();
+ if (!hbFace || !hbFace->supported_scripts[script]) {
+ delete engine;
+ engine = 0;
+ }
+ }
+
+ return engine;
+}
+
+QStringList QFontconfigDatabase::fallbacksForFamily(const QString family, const QFont::Style &style, const QUnicodeTables::Script &script) const
+{
+ QStringList fallbackFamilies;
+ FcPattern *pattern = FcPatternCreate();
+ if (!pattern)
+ return fallbackFamilies;
+
+ FcValue value;
+ value.type = FcTypeString;
+ QByteArray cs = family.toUtf8();
+ value.u.s = (const FcChar8 *)cs.data();
+ FcPatternAdd(pattern,FC_FAMILY,value,true);
+
+ int slant_value = FC_SLANT_ROMAN;
+ if (style == QFont::StyleItalic)
+ slant_value = FC_SLANT_ITALIC;
+ else if (style == QFont::StyleOblique)
+ slant_value = FC_SLANT_OBLIQUE;
+ FcPatternAddInteger(pattern, FC_SLANT, slant_value);
+
+ if (script != QUnicodeTables::Common && *specialLanguages[script] != '\0') {
+ Q_ASSERT(script < QUnicodeTables::ScriptCount);
+ FcLangSet *ls = FcLangSetCreate();
+ FcLangSetAdd(ls, (const FcChar8*)specialLanguages[script]);
+ FcPatternAddLangSet(pattern, FC_LANG, ls);
+ FcLangSetDestroy(ls);
+ }
+
+ FcConfigSubstitute(0, pattern, FcMatchPattern);
+ FcConfigSubstitute(0, pattern, FcMatchFont);
+
+ FcResult result = FcResultMatch;
+ FcFontSet *fontSet = FcFontSort(0,pattern,FcFalse,0,&result);
+
+ if (fontSet && result == FcResultMatch)
+ {
+ for (int i = 0; i < fontSet->nfont; i++) {
+ FcChar8 *value = 0;
+ if (FcPatternGetString(fontSet->fonts[i], FC_FAMILY, 0, &value) != FcResultMatch)
+ continue;
+ // capitalize(value);
+ QString familyName = QString::fromUtf8((const char *)value);
+ if (!fallbackFamilies.contains(familyName,Qt::CaseInsensitive)) {
+ fallbackFamilies << familyName;
+ }
+
+ }
+ }
+// qDebug() << "fallbackFamilies for:" << family << fallbackFamilies;
+
+ return fallbackFamilies;
+}
diff --git a/src/plugins/platforms/fontdatabases/fontconfig/qfontconfigdatabase.h b/src/plugins/platforms/fontdatabases/fontconfig/qfontconfigdatabase.h
new file mode 100644
index 0000000000..33382dc25b
--- /dev/null
+++ b/src/plugins/platforms/fontdatabases/fontconfig/qfontconfigdatabase.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 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 QFONTCONFIGDATABASE_H
+#define QFONTCONFIGDATABASE_H
+
+#include <QPlatformFontDatabase>
+#include "qbasicunixfontdatabase.h"
+
+class QFontconfigDatabase : public QBasicUnixFontDatabase
+{
+public:
+ void populateFontDatabase();
+ QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle);
+ QStringList fallbacksForFamily(const QString family, const QFont::Style &style, const QUnicodeTables::Script &script) const;
+};
+
+#endif // QFONTCONFIGDATABASE_H
diff --git a/src/plugins/platforms/fontdatabases/genericunix/genericunix.pri b/src/plugins/platforms/fontdatabases/genericunix/genericunix.pri
new file mode 100644
index 0000000000..dbcfbce384
--- /dev/null
+++ b/src/plugins/platforms/fontdatabases/genericunix/genericunix.pri
@@ -0,0 +1,10 @@
+contains(QT_CONFIG, fontconfig) {
+ include(../fontconfig/fontconfig.pri)
+ DEFINES += Q_FONTCONFIGDATABASE
+} else {
+ include(../basicunix/basicunix.pri)
+}
+
+INCLUDEPATH += $$QT_SOURCE_TREE/src/plugins/platforms/fontdatabases/genericunix
+HEADERS += \
+ $$QT_SOURCE_TREE/src/plugins/platforms/fontdatabases/genericunix/qgenericunixfontdatabase.h
diff --git a/src/plugins/platforms/fontdatabases/genericunix/qgenericunixfontdatabase.h b/src/plugins/platforms/fontdatabases/genericunix/qgenericunixfontdatabase.h
new file mode 100644
index 0000000000..327c8f5189
--- /dev/null
+++ b/src/plugins/platforms/fontdatabases/genericunix/qgenericunixfontdatabase.h
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** 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 QGENERICUNIXFONTDATABASE_H
+#define QGENERICUNIXFONTDATABASE_H
+
+#ifdef Q_FONTCONFIGDATABASE
+#include "qfontconfigdatabase.h"
+typedef QFontconfigDatabase QGenericUnixFontDatabase;
+#else
+#include "qbasicunixfontdatabase.h"
+typedef QBasicUnixFontDatabase QGenericUnixFontDatabase;
+#endif //Q_FONTCONFIGDATABASE
+
+#endif // QGENERICUNIXFONTDATABASE_H
diff --git a/src/plugins/platforms/linuxfb/linuxfb.pro b/src/plugins/platforms/linuxfb/linuxfb.pro
new file mode 100644
index 0000000000..216b899fdb
--- /dev/null
+++ b/src/plugins/platforms/linuxfb/linuxfb.pro
@@ -0,0 +1,13 @@
+TARGET = qlinuxfbgraphicssystem
+include(../../qpluginbase.pri)
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
+
+SOURCES = main.cpp qlinuxfbintegration.cpp
+HEADERS = qlinuxfbintegration.h
+
+include(../fb_base/fb_base.pri)
+include(../fontdatabases/genericunix/genericunix.pri)
+
+target.path += $$[QT_INSTALL_PLUGINS]/platforms
+INSTALLS += target
diff --git a/src/plugins/platforms/linuxfb/main.cpp b/src/plugins/platforms/linuxfb/main.cpp
new file mode 100644
index 0000000000..c5f7fe06e7
--- /dev/null
+++ b/src/plugins/platforms/linuxfb/main.cpp
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <QPlatformIntegrationPlugin>
+#include "qlinuxfbintegration.h"
+
+QT_BEGIN_NAMESPACE
+
+class QLinuxFbIntegrationPlugin : public QPlatformIntegrationPlugin
+{
+public:
+ QStringList keys() const;
+ QPlatformIntegration *create(const QString&, const QStringList&);
+};
+
+QStringList QLinuxFbIntegrationPlugin::keys() const
+{
+ QStringList list;
+ list << "LinuxFb";
+ return list;
+}
+
+QPlatformIntegration* QLinuxFbIntegrationPlugin::create(const QString& system, const QStringList& paramList)
+{
+ Q_UNUSED(paramList);
+ if (system.toLower() == "linuxfb")
+ return new QLinuxFbIntegration;
+
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(linuxfb, QLinuxFbIntegrationPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp b/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
new file mode 100644
index 0000000000..aa1d4019a5
--- /dev/null
+++ b/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
@@ -0,0 +1,866 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qlinuxfbintegration.h"
+#include "../fb_base/fb_base.h"
+#include "qgenericunixfontdatabase.h"
+#include <QtGui/private/qpixmap_raster_p.h>
+#include <private/qcore_unix_p.h> // overrides QT_OPEN
+#include <qimage.h>
+#include <qdebug.h>
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <sys/kd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <stdio.h>
+#include <limits.h>
+#include <signal.h>
+
+#if !defined(Q_OS_DARWIN) && !defined(Q_OS_FREEBSD)
+#include <linux/fb.h>
+
+#ifdef __i386__
+#include <asm/mtrr.h>
+#endif
+#endif
+
+QT_BEGIN_NAMESPACE
+
+class QLinuxFbIntegrationPrivate
+{
+public:
+ QLinuxFbIntegrationPrivate();
+ ~QLinuxFbIntegrationPrivate();
+
+ void openTty();
+ void closeTty();
+
+ int fd;
+ int startupw;
+ int startuph;
+ int startupd;
+ bool blank;
+
+ bool doGraphicsMode;
+#ifdef QT_QWS_DEPTH_GENERIC
+ bool doGenericColors;
+#endif
+ int ttyfd;
+ long oldKdMode;
+ QString ttyDevice;
+ QString displaySpec;
+};
+
+QLinuxFbIntegrationPrivate::QLinuxFbIntegrationPrivate()
+ : fd(-1), blank(true), doGraphicsMode(true),
+#ifdef QT_QWS_DEPTH_GENERIC
+ doGenericColors(false),
+#endif
+ ttyfd(-1), oldKdMode(KD_TEXT)
+{
+}
+
+QLinuxFbIntegrationPrivate::~QLinuxFbIntegrationPrivate()
+{
+ closeTty();
+}
+
+void QLinuxFbIntegrationPrivate::openTty()
+{
+ const char *const devs[] = {"/dev/tty0", "/dev/tty", "/dev/console", 0};
+
+ if (ttyDevice.isEmpty()) {
+ for (const char * const *dev = devs; *dev; ++dev) {
+ ttyfd = QT_OPEN(*dev, O_RDWR);
+ if (ttyfd != -1)
+ break;
+ }
+ } else {
+ ttyfd = QT_OPEN(ttyDevice.toAscii().constData(), O_RDWR);
+ }
+
+ if (ttyfd == -1)
+ return;
+
+ if (doGraphicsMode) {
+ ioctl(ttyfd, KDGETMODE, &oldKdMode);
+ if (oldKdMode != KD_GRAPHICS) {
+ int ret = ioctl(ttyfd, KDSETMODE, KD_GRAPHICS);
+ if (ret == -1)
+ doGraphicsMode = false;
+ }
+ }
+
+ // No blankin' screen, no blinkin' cursor!, no cursor!
+ const char termctl[] = "\033[9;0]\033[?33l\033[?25l\033[?1c";
+ QT_WRITE(ttyfd, termctl, sizeof(termctl));
+}
+
+void QLinuxFbIntegrationPrivate::closeTty()
+{
+ if (ttyfd == -1)
+ return;
+
+ if (doGraphicsMode)
+ ioctl(ttyfd, KDSETMODE, oldKdMode);
+
+ // Blankin' screen, blinkin' cursor!
+ const char termctl[] = "\033[9;15]\033[?33h\033[?25h\033[?0c";
+ QT_WRITE(ttyfd, termctl, sizeof(termctl));
+
+ QT_CLOSE(ttyfd);
+ ttyfd = -1;
+}
+
+QLinuxFbIntegration::QLinuxFbIntegration()
+ :fontDb(new QGenericUnixFontDatabase())
+{
+ d_ptr = new QLinuxFbIntegrationPrivate();
+
+ // XXX
+ QString displaySpec = QString::fromLatin1(qgetenv("QWS_DISPLAY"));
+
+ if (!connect(displaySpec))
+ qFatal("QLinuxFbIntegration: could not initialize screen");
+ initDevice();
+
+ // Create a QImage directly on the screen's framebuffer.
+ // This is the blit target for copying windows to the screen.
+ mPrimaryScreen = new QLinuxFbScreen(data, w, h, lstep,
+ screenFormat);
+ mPrimaryScreen->setPhysicalSize(QSize(physWidth, physHeight));
+ mScreens.append(mPrimaryScreen);
+}
+
+QLinuxFbIntegration::~QLinuxFbIntegration()
+{
+ delete mPrimaryScreen;
+ delete d_ptr;
+}
+
+bool QLinuxFbIntegration::connect(const QString &displaySpec)
+{
+ const QStringList args = displaySpec.split(QLatin1Char(':'));
+
+ if (args.contains(QLatin1String("nographicsmodeswitch")))
+ d_ptr->doGraphicsMode = false;
+
+#ifdef QT_QWS_DEPTH_GENERIC
+ if (args.contains(QLatin1String("genericcolors")))
+ d_ptr->doGenericColors = true;
+#endif
+
+ QRegExp ttyRegExp(QLatin1String("tty=(.*)"));
+ if (args.indexOf(ttyRegExp) != -1)
+ d_ptr->ttyDevice = ttyRegExp.cap(1);
+
+#if 0
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+#ifndef QT_QWS_FRAMEBUFFER_LITTLE_ENDIAN
+ if (args.contains(QLatin1String("littleendian")))
+#endif
+ QScreen::setFrameBufferLittleEndian(true);
+#endif
+#endif
+
+ // Check for explicitly specified device
+ const int len = 8; // "/dev/fbx"
+ int m = displaySpec.indexOf(QLatin1String("/dev/fb"));
+
+ QString dev;
+ if (m > 0)
+ dev = displaySpec.mid(m, len);
+ else
+ dev = QLatin1String("/dev/fb0");
+
+ if (access(dev.toLatin1().constData(), R_OK|W_OK) == 0)
+ d_ptr->fd = QT_OPEN(dev.toLatin1().constData(), O_RDWR);
+ if (d_ptr->fd == -1) {
+ if (access(dev.toLatin1().constData(), R_OK) == 0)
+ d_ptr->fd = QT_OPEN(dev.toLatin1().constData(), O_RDONLY);
+ if (d_ptr->fd == 1) {
+ qWarning("Error opening framebuffer device %s", qPrintable(dev));
+ return false;
+ }
+ }
+
+ fb_fix_screeninfo finfo;
+ fb_var_screeninfo vinfo;
+ //#######################
+ // Shut up Valgrind
+ memset(&vinfo, 0, sizeof(vinfo));
+ memset(&finfo, 0, sizeof(finfo));
+ //#######################
+
+ /* Get fixed screen information */
+ if (d_ptr->fd != -1 && ioctl(d_ptr->fd, FBIOGET_FSCREENINFO, &finfo)) {
+ perror("QLinuxFbIntegration::connect");
+ qWarning("Error reading fixed information");
+ return false;
+ }
+
+ if (finfo.type == FB_TYPE_VGA_PLANES) {
+ qWarning("VGA16 video mode not supported");
+ return false;
+ }
+
+ /* Get variable screen information */
+ if (d_ptr->fd != -1 && ioctl(d_ptr->fd, FBIOGET_VSCREENINFO, &vinfo)) {
+ perror("QLinuxFbIntegration::connect");
+ qWarning("Error reading variable information");
+ return false;
+ }
+
+ grayscale = vinfo.grayscale;
+ d = vinfo.bits_per_pixel;
+ if (d == 24) {
+ d = vinfo.red.length + vinfo.green.length + vinfo.blue.length;
+ if (d <= 0)
+ d = 24; // reset if color component lengths are not reported
+ } else if (d == 16) {
+ d = vinfo.red.length + vinfo.green.length + vinfo.blue.length;
+ if (d <= 0)
+ d = 16;
+ }
+ lstep = finfo.line_length;
+
+ int xoff = vinfo.xoffset;
+ int yoff = vinfo.yoffset;
+ const char* qwssize;
+ if((qwssize=::getenv("QWS_SIZE")) && sscanf(qwssize,"%dx%d",&w,&h)==2) {
+ if (d_ptr->fd != -1) {
+ if ((uint)w > vinfo.xres) w = vinfo.xres;
+ if ((uint)h > vinfo.yres) h = vinfo.yres;
+ }
+ dw=w;
+ dh=h;
+ int xxoff, yyoff;
+ if (sscanf(qwssize, "%*dx%*d+%d+%d", &xxoff, &yyoff) == 2) {
+ if (xxoff < 0 || xxoff + w > (int)(vinfo.xres))
+ xxoff = vinfo.xres - w;
+ if (yyoff < 0 || yyoff + h > (int)(vinfo.yres))
+ yyoff = vinfo.yres - h;
+ xoff += xxoff;
+ yoff += yyoff;
+ } else {
+ xoff += (vinfo.xres - w)/2;
+ yoff += (vinfo.yres - h)/2;
+ }
+ } else {
+ dw=w=vinfo.xres;
+ dh=h=vinfo.yres;
+ }
+
+ if (w == 0 || h == 0) {
+ qWarning("QLinuxFbIntegration::connect(): Unable to find screen geometry, "
+ "will use 320x240.");
+ dw = w = 320;
+ dh = h = 240;
+ }
+
+ setPixelFormat(vinfo);
+
+ // Handle display physical size spec.
+ QStringList displayArgs = displaySpec.split(QLatin1Char(':'));
+ QRegExp mmWidthRx(QLatin1String("mmWidth=?(\\d+)"));
+ int dimIdxW = displayArgs.indexOf(mmWidthRx);
+ QRegExp mmHeightRx(QLatin1String("mmHeight=?(\\d+)"));
+ int dimIdxH = displayArgs.indexOf(mmHeightRx);
+ if (dimIdxW >= 0) {
+ mmWidthRx.exactMatch(displayArgs.at(dimIdxW));
+ physWidth = mmWidthRx.cap(1).toInt();
+ if (dimIdxH < 0)
+ physHeight = dh*physWidth/dw;
+ }
+ if (dimIdxH >= 0) {
+ mmHeightRx.exactMatch(displayArgs.at(dimIdxH));
+ physHeight = mmHeightRx.cap(1).toInt();
+ if (dimIdxW < 0)
+ physWidth = dw*physHeight/dh;
+ }
+ if (dimIdxW < 0 && dimIdxH < 0) {
+ if (vinfo.width != 0 && vinfo.height != 0
+ && vinfo.width != UINT_MAX && vinfo.height != UINT_MAX) {
+ physWidth = vinfo.width;
+ physHeight = vinfo.height;
+ } else {
+ const int dpi = 72;
+ physWidth = qRound(dw * 25.4 / dpi);
+ physHeight = qRound(dh * 25.4 / dpi);
+ }
+ }
+
+ dataoffset = yoff * lstep + xoff * d / 8;
+ //qDebug("Using %dx%dx%d screen",w,h,d);
+
+ /* Figure out the size of the screen in bytes */
+ size = h * lstep;
+
+ mapsize = finfo.smem_len;
+
+ data = (unsigned char *)-1;
+ if (d_ptr->fd != -1)
+ data = (unsigned char *)mmap(0, mapsize, PROT_READ | PROT_WRITE,
+ MAP_SHARED, d_ptr->fd, 0);
+
+ if ((long)data == -1) {
+ perror("QLinuxFbIntegration::connect");
+ qWarning("Error: failed to map framebuffer device to memory.");
+ return false;
+ } else {
+ data += dataoffset;
+ }
+
+#if 0
+ canaccel = useOffscreen();
+ if(canaccel)
+ setupOffScreen();
+#endif
+ canaccel = false;
+
+ // Now read in palette
+ if((vinfo.bits_per_pixel==8) || (vinfo.bits_per_pixel==4)) {
+ screencols= (vinfo.bits_per_pixel==8) ? 256 : 16;
+ int loopc;
+ fb_cmap startcmap;
+ startcmap.start=0;
+ startcmap.len=screencols;
+ startcmap.red=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*screencols);
+ startcmap.green=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*screencols);
+ startcmap.blue=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*screencols);
+ startcmap.transp=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*screencols);
+ if (d_ptr->fd == -1 || ioctl(d_ptr->fd, FBIOGETCMAP, &startcmap)) {
+ perror("QLinuxFbIntegration::connect");
+ qWarning("Error reading palette from framebuffer, using default palette");
+ createPalette(startcmap, vinfo, finfo);
+ }
+ int bits_used = 0;
+ for(loopc=0;loopc<screencols;loopc++) {
+ screenclut[loopc]=qRgb(startcmap.red[loopc] >> 8,
+ startcmap.green[loopc] >> 8,
+ startcmap.blue[loopc] >> 8);
+ bits_used |= startcmap.red[loopc]
+ | startcmap.green[loopc]
+ | startcmap.blue[loopc];
+ }
+ // WORKAROUND: Some framebuffer drivers only return 8 bit
+ // color values, so we need to not bit shift them..
+ if ((bits_used & 0x00ff) && !(bits_used & 0xff00)) {
+ for(loopc=0;loopc<screencols;loopc++) {
+ screenclut[loopc] = qRgb(startcmap.red[loopc],
+ startcmap.green[loopc],
+ startcmap.blue[loopc]);
+ }
+ qWarning("8 bits cmap returned due to faulty FB driver, colors corrected");
+ }
+ free(startcmap.red);
+ free(startcmap.green);
+ free(startcmap.blue);
+ free(startcmap.transp);
+ } else {
+ screencols=0;
+ }
+
+ return true;
+}
+
+bool QLinuxFbIntegration::initDevice()
+{
+ d_ptr->openTty();
+
+ // Grab current mode so we can reset it
+ fb_var_screeninfo vinfo;
+ fb_fix_screeninfo finfo;
+ //#######################
+ // Shut up Valgrind
+ memset(&vinfo, 0, sizeof(vinfo));
+ memset(&finfo, 0, sizeof(finfo));
+ //#######################
+
+ if (ioctl(d_ptr->fd, FBIOGET_VSCREENINFO, &vinfo)) {
+ perror("QLinuxFbScreen::initDevice");
+ qFatal("Error reading variable information in card init");
+ return false;
+ }
+
+#ifdef DEBUG_VINFO
+ qDebug("Greyscale %d",vinfo.grayscale);
+ qDebug("Nonstd %d",vinfo.nonstd);
+ qDebug("Red %d %d %d",vinfo.red.offset,vinfo.red.length,
+ vinfo.red.msb_right);
+ qDebug("Green %d %d %d",vinfo.green.offset,vinfo.green.length,
+ vinfo.green.msb_right);
+ qDebug("Blue %d %d %d",vinfo.blue.offset,vinfo.blue.length,
+ vinfo.blue.msb_right);
+ qDebug("Transparent %d %d %d",vinfo.transp.offset,vinfo.transp.length,
+ vinfo.transp.msb_right);
+#endif
+
+ d_ptr->startupw=vinfo.xres;
+ d_ptr->startuph=vinfo.yres;
+ d_ptr->startupd=vinfo.bits_per_pixel;
+ grayscale = vinfo.grayscale;
+
+ if (ioctl(d_ptr->fd, FBIOGET_FSCREENINFO, &finfo)) {
+ perror("QLinuxFbScreen::initDevice");
+ qCritical("Error reading fixed information in card init");
+ // It's not an /error/ as such, though definitely a bad sign
+ // so we return true
+ return true;
+ }
+
+#ifdef __i386__
+ // Now init mtrr
+ if(!::getenv("QWS_NOMTRR")) {
+ int mfd=QT_OPEN("/proc/mtrr",O_WRONLY,0);
+ // MTRR entry goes away when file is closed - i.e.
+ // hopefully when QWS is killed
+ if(mfd != -1) {
+ mtrr_sentry sentry;
+ sentry.base=(unsigned long int)finfo.smem_start;
+ //qDebug("Physical framebuffer address %p",(void*)finfo.smem_start);
+ // Size needs to be in 4k chunks, but that's not always
+ // what we get thanks to graphics card registers. Write combining
+ // these is Not Good, so we write combine what we can
+ // (which is not much - 4 megs on an 8 meg card, it seems)
+ unsigned int size=finfo.smem_len;
+ size=size >> 22;
+ size=size << 22;
+ sentry.size=size;
+ sentry.type=MTRR_TYPE_WRCOMB;
+ if(ioctl(mfd,MTRRIOC_ADD_ENTRY,&sentry)==-1) {
+ //printf("Couldn't add mtrr entry for %lx %lx, %s\n",
+ //sentry.base,sentry.size,strerror(errno));
+ }
+ }
+
+ // Should we close mfd here?
+ //QT_CLOSE(mfd);
+ }
+#endif
+ if ((vinfo.bits_per_pixel==8) || (vinfo.bits_per_pixel==4) || (finfo.visual==FB_VISUAL_DIRECTCOLOR))
+ {
+ fb_cmap cmap;
+ createPalette(cmap, vinfo, finfo);
+ if (ioctl(d_ptr->fd, FBIOPUTCMAP, &cmap)) {
+ perror("QLinuxFbScreen::initDevice");
+ qWarning("Error writing palette to framebuffer");
+ }
+ free(cmap.red);
+ free(cmap.green);
+ free(cmap.blue);
+ free(cmap.transp);
+ }
+
+#if 0
+ if (canaccel) {
+ *entryp=0;
+ *lowest = mapsize;
+ insert_entry(*entryp, *lowest, *lowest); // dummy entry to mark start
+ }
+
+ shared->fifocount = 0;
+ shared->buffer_offset = 0xffffffff; // 0 would be a sensible offset (screen)
+ shared->linestep = 0;
+ shared->cliptop = 0xffffffff;
+ shared->clipleft = 0xffffffff;
+ shared->clipright = 0xffffffff;
+ shared->clipbottom = 0xffffffff;
+ shared->rop = 0xffffffff;
+#endif
+
+#ifdef QT_QWS_DEPTH_GENERIC
+ if (pixelFormat() == QImage::Format_Invalid && screencols == 0
+ && d_ptr->doGenericColors)
+ {
+ qt_set_generic_blit(this, vinfo.bits_per_pixel,
+ vinfo.red.length, vinfo.green.length,
+ vinfo.blue.length, vinfo.transp.length,
+ vinfo.red.offset, vinfo.green.offset,
+ vinfo.blue.offset, vinfo.transp.offset);
+ }
+#endif
+
+#if 0
+#ifndef QT_NO_QWS_CURSOR
+ QScreenCursor::initSoftwareCursor();
+#endif
+#endif
+ blank(false);
+
+ return true;
+}
+
+void QLinuxFbIntegration::setPixelFormat(struct fb_var_screeninfo info)
+{
+ const fb_bitfield rgba[4] = { info.red, info.green,
+ info.blue, info.transp };
+
+ QImage::Format format = QImage::Format_Invalid;
+
+ switch (d) {
+ case 32: {
+ const fb_bitfield argb8888[4] = {{16, 8, 0}, {8, 8, 0},
+ {0, 8, 0}, {24, 8, 0}};
+ const fb_bitfield abgr8888[4] = {{0, 8, 0}, {8, 8, 0},
+ {16, 8, 0}, {24, 8, 0}};
+ if (memcmp(rgba, argb8888, 4 * sizeof(fb_bitfield)) == 0) {
+ format = QImage::Format_ARGB32;
+ } else if (memcmp(rgba, argb8888, 3 * sizeof(fb_bitfield)) == 0) {
+ format = QImage::Format_RGB32;
+ } else if (memcmp(rgba, abgr8888, 3 * sizeof(fb_bitfield)) == 0) {
+ format = QImage::Format_RGB32;
+ pixeltype = BGRPixel;
+ }
+ break;
+ }
+ case 24: {
+ const fb_bitfield rgb888[4] = {{16, 8, 0}, {8, 8, 0},
+ {0, 8, 0}, {0, 0, 0}};
+ const fb_bitfield bgr888[4] = {{0, 8, 0}, {8, 8, 0},
+ {16, 8, 0}, {0, 0, 0}};
+ if (memcmp(rgba, rgb888, 3 * sizeof(fb_bitfield)) == 0) {
+ format = QImage::Format_RGB888;
+ } else if (memcmp(rgba, bgr888, 3 * sizeof(fb_bitfield)) == 0) {
+ format = QImage::Format_RGB888;
+ pixeltype = BGRPixel;
+ }
+ break;
+ }
+ case 18: {
+ const fb_bitfield rgb666[4] = {{12, 6, 0}, {6, 6, 0},
+ {0, 6, 0}, {0, 0, 0}};
+ if (memcmp(rgba, rgb666, 3 * sizeof(fb_bitfield)) == 0)
+ format = QImage::Format_RGB666;
+ break;
+ }
+ case 16: {
+ const fb_bitfield rgb565[4] = {{11, 5, 0}, {5, 6, 0},
+ {0, 5, 0}, {0, 0, 0}};
+ const fb_bitfield bgr565[4] = {{0, 5, 0}, {5, 6, 0},
+ {11, 5, 0}, {0, 0, 0}};
+ if (memcmp(rgba, rgb565, 3 * sizeof(fb_bitfield)) == 0) {
+ format = QImage::Format_RGB16;
+ } else if (memcmp(rgba, bgr565, 3 * sizeof(fb_bitfield)) == 0) {
+ format = QImage::Format_RGB16;
+ pixeltype = BGRPixel;
+ }
+ break;
+ }
+ case 15: {
+ const fb_bitfield rgb1555[4] = {{10, 5, 0}, {5, 5, 0},
+ {0, 5, 0}, {15, 1, 0}};
+ const fb_bitfield bgr1555[4] = {{0, 5, 0}, {5, 5, 0},
+ {10, 5, 0}, {15, 1, 0}};
+ if (memcmp(rgba, rgb1555, 3 * sizeof(fb_bitfield)) == 0) {
+ format = QImage::Format_RGB555;
+ } else if (memcmp(rgba, bgr1555, 3 * sizeof(fb_bitfield)) == 0) {
+ format = QImage::Format_RGB555;
+ pixeltype = BGRPixel;
+ }
+ break;
+ }
+ case 12: {
+ const fb_bitfield rgb444[4] = {{8, 4, 0}, {4, 4, 0},
+ {0, 4, 0}, {0, 0, 0}};
+ if (memcmp(rgba, rgb444, 3 * sizeof(fb_bitfield)) == 0)
+ format = QImage::Format_RGB444;
+ break;
+ }
+ case 8:
+ break;
+ case 1:
+ format = QImage::Format_Mono; //###: LSB???
+ break;
+ default:
+ break;
+ }
+
+ screenFormat = format;
+}
+
+void QLinuxFbIntegration::createPalette(fb_cmap &cmap, fb_var_screeninfo &vinfo, fb_fix_screeninfo &finfo)
+{
+ if((vinfo.bits_per_pixel==8) || (vinfo.bits_per_pixel==4)) {
+ screencols= (vinfo.bits_per_pixel==8) ? 256 : 16;
+ cmap.start=0;
+ cmap.len=screencols;
+ cmap.red=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*screencols);
+ cmap.green=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*screencols);
+ cmap.blue=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*screencols);
+ cmap.transp=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*screencols);
+
+ if (screencols==16) {
+ if (finfo.type == FB_TYPE_PACKED_PIXELS) {
+ // We'll setup a grayscale cmap for 4bpp linear
+ int val = 0;
+ for (int idx = 0; idx < 16; ++idx, val += 17) {
+ cmap.red[idx] = (val<<8)|val;
+ cmap.green[idx] = (val<<8)|val;
+ cmap.blue[idx] = (val<<8)|val;
+ screenclut[idx]=qRgb(val, val, val);
+ }
+ } else {
+ // Default 16 colour palette
+ // Green is now trolltech green so certain images look nicer
+ // black d_gray l_gray white red green blue cyan magenta yellow
+ unsigned char reds[16] = { 0x00, 0x7F, 0xBF, 0xFF, 0xFF, 0xA2, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x82 };
+ unsigned char greens[16] = { 0x00, 0x7F, 0xBF, 0xFF, 0x00, 0xC5, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F };
+ unsigned char blues[16] = { 0x00, 0x7F, 0xBF, 0xFF, 0x00, 0x11, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0x7F, 0x7F, 0x00, 0x00 };
+
+ for (int idx = 0; idx < 16; ++idx) {
+ cmap.red[idx] = ((reds[idx]) << 8)|reds[idx];
+ cmap.green[idx] = ((greens[idx]) << 8)|greens[idx];
+ cmap.blue[idx] = ((blues[idx]) << 8)|blues[idx];
+ cmap.transp[idx] = 0;
+ screenclut[idx]=qRgb(reds[idx], greens[idx], blues[idx]);
+ }
+ }
+ } else {
+ if (grayscale) {
+ // Build grayscale palette
+ int i;
+ for(i=0;i<screencols;++i) {
+ int bval = screencols == 256 ? i : (i << 4);
+ ushort val = (bval << 8) | bval;
+ cmap.red[i] = val;
+ cmap.green[i] = val;
+ cmap.blue[i] = val;
+ cmap.transp[i] = 0;
+ screenclut[i] = qRgb(bval,bval,bval);
+ }
+ } else {
+ // 6x6x6 216 color cube
+ int idx = 0;
+ for(int ir = 0x0; ir <= 0xff; ir+=0x33) {
+ for(int ig = 0x0; ig <= 0xff; ig+=0x33) {
+ for(int ib = 0x0; ib <= 0xff; ib+=0x33) {
+ cmap.red[idx] = (ir << 8)|ir;
+ cmap.green[idx] = (ig << 8)|ig;
+ cmap.blue[idx] = (ib << 8)|ib;
+ cmap.transp[idx] = 0;
+ screenclut[idx]=qRgb(ir, ig, ib);
+ ++idx;
+ }
+ }
+ }
+ // Fill in rest with 0
+ for (int loopc=0; loopc<40; ++loopc) {
+ screenclut[idx]=0;
+ ++idx;
+ }
+ screencols=idx;
+ }
+ }
+ } else if(finfo.visual==FB_VISUAL_DIRECTCOLOR) {
+ cmap.start=0;
+ int rbits=0,gbits=0,bbits=0;
+ switch (vinfo.bits_per_pixel) {
+ case 8:
+ rbits=vinfo.red.length;
+ gbits=vinfo.green.length;
+ bbits=vinfo.blue.length;
+ if(rbits==0 && gbits==0 && bbits==0) {
+ // cyber2000 driver bug hack
+ rbits=3;
+ gbits=3;
+ bbits=2;
+ }
+ break;
+ case 15:
+ rbits=5;
+ gbits=5;
+ bbits=5;
+ break;
+ case 16:
+ rbits=5;
+ gbits=6;
+ bbits=5;
+ break;
+ case 18:
+ case 19:
+ rbits=6;
+ gbits=6;
+ bbits=6;
+ break;
+ case 24: case 32:
+ rbits=gbits=bbits=8;
+ break;
+ }
+ screencols=cmap.len=1<<qMax(rbits,qMax(gbits,bbits));
+ cmap.red=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*256);
+ cmap.green=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*256);
+ cmap.blue=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*256);
+ cmap.transp=(unsigned short int *)
+ malloc(sizeof(unsigned short int)*256);
+ for(unsigned int i = 0x0; i < cmap.len; i++) {
+ cmap.red[i] = i*65535/((1<<rbits)-1);
+ cmap.green[i] = i*65535/((1<<gbits)-1);
+ cmap.blue[i] = i*65535/((1<<bbits)-1);
+ cmap.transp[i] = 0;
+ }
+ }
+}
+
+void QLinuxFbIntegration::blank(bool on)
+{
+ if (d_ptr->blank == on)
+ return;
+
+#if defined(QT_QWS_IPAQ)
+ if (on)
+ system("apm -suspend");
+#else
+ if (d_ptr->fd == -1)
+ return;
+// Some old kernel versions don't have this. These defines should go
+// away eventually
+#if defined(FBIOBLANK)
+#if defined(VESA_POWERDOWN) && defined(VESA_NO_BLANKING)
+ ioctl(d_ptr->fd, FBIOBLANK, on ? VESA_POWERDOWN : VESA_NO_BLANKING);
+#else
+ ioctl(d_ptr->fd, FBIOBLANK, on ? 1 : 0);
+#endif
+#endif
+#endif
+
+ d_ptr->blank = on;
+}
+
+QPixmapData *QLinuxFbIntegration::createPixmapData(QPixmapData::PixelType type) const
+{
+ return new QRasterPixmapData(type);
+}
+
+QWindowSurface *QLinuxFbIntegration::createWindowSurface(QWidget *widget, WId) const
+{
+ QFbWindowSurface * surface =
+ new QFbWindowSurface(mPrimaryScreen, widget);
+ return surface;
+}
+
+QPlatformWindow *QLinuxFbIntegration::createPlatformWindow(QWidget *widget, WId /*winId*/) const
+{
+ QFbWindow *w = new QFbWindow(widget);
+ mPrimaryScreen->addWindow(w);
+ return w;
+}
+
+QPlatformFontDatabase *QLinuxFbIntegration::fontDatabase() const
+{
+ return fontDb;
+}
+
+QLinuxFbScreen::QLinuxFbScreen(uchar * d, int w,
+ int h, int lstep, QImage::Format screenFormat) : compositePainter(0)
+{
+ data = d;
+ mGeometry = QRect(0,0,w,h);
+ bytesPerLine = lstep;
+ mFormat = screenFormat;
+ mDepth = 16;
+ mScreenImage = new QImage(mGeometry.width(), mGeometry.height(),
+ mFormat);
+ mFbScreenImage = new QImage(data, mGeometry.width(), mGeometry.height(),
+ bytesPerLine, mFormat);
+ cursor = new QPlatformSoftwareCursor(this);
+}
+
+void QLinuxFbScreen::setGeometry(QRect rect)
+{
+ mGeometry = rect;
+ delete mFbScreenImage;
+ mFbScreenImage = new QImage(data, mGeometry.width(), mGeometry.height(),
+ bytesPerLine, mFormat);
+ delete compositePainter;
+ compositePainter = 0;
+
+ delete mScreenImage;
+ mScreenImage = new QImage(mGeometry.width(), mGeometry.height(),
+ mFormat);
+}
+
+void QLinuxFbScreen::setFormat(QImage::Format format)
+{
+ mFormat = format;
+ delete mFbScreenImage;
+ mFbScreenImage = new QImage(data, mGeometry.width(), mGeometry.height(),
+ bytesPerLine, mFormat);
+ delete compositePainter;
+ compositePainter = 0;
+
+ delete mScreenImage;
+ mScreenImage = new QImage(mGeometry.width(), mGeometry.height(),
+ mFormat);
+}
+
+QRegion QLinuxFbScreen::doRedraw()
+{
+ QRegion touched;
+ touched = QFbScreen::doRedraw();
+
+ if (!compositePainter) {
+ compositePainter = new QPainter(mFbScreenImage);
+ }
+
+ QVector<QRect> rects = touched.rects();
+ for (int i = 0; i < rects.size(); i++)
+ compositePainter->drawImage(rects[i], *mScreenImage, rects[i]);
+ return touched;
+}
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/linuxfb/qlinuxfbintegration.h b/src/plugins/platforms/linuxfb/qlinuxfbintegration.h
new file mode 100644
index 0000000000..e93495c09b
--- /dev/null
+++ b/src/plugins/platforms/linuxfb/qlinuxfbintegration.h
@@ -0,0 +1,133 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 QGRAPHICSSYSTEM_LINUXFB_H
+#define QGRAPHICSSYSTEM_LINUXFB_H
+
+#include <QPlatformIntegration>
+#include "../fb_base/fb_base.h"
+
+QT_BEGIN_NAMESPACE
+
+class QLinuxFbScreen : public QFbScreen
+{
+ Q_OBJECT
+public:
+ QLinuxFbScreen(uchar * d, int w, int h, int lstep, QImage::Format screenFormat);
+ void setGeometry(QRect rect);
+ void setFormat(QImage::Format format);
+
+public slots:
+ QRegion doRedraw();
+
+private:
+ QImage * mFbScreenImage;
+ uchar * data;
+ int bytesPerLine;
+
+ QPainter *compositePainter;
+};
+
+class QLinuxFbIntegrationPrivate;
+struct fb_cmap;
+struct fb_var_screeninfo;
+struct fb_fix_screeninfo;
+
+class QLinuxFbIntegration : public QPlatformIntegration
+{
+public:
+ QLinuxFbIntegration();
+ ~QLinuxFbIntegration();
+
+ QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
+ QPlatformWindow *createPlatformWindow(QWidget *widget, WId WinId) const;
+ QWindowSurface *createWindowSurface(QWidget *widget, WId WinId) const;
+
+ QList<QPlatformScreen *> screens() const { return mScreens; }
+
+ QPlatformFontDatabase *fontDatabase() const;
+
+private:
+ QLinuxFbScreen *mPrimaryScreen;
+ QList<QPlatformScreen *> mScreens;
+ QLinuxFbIntegrationPrivate *d_ptr;
+
+ enum PixelType { NormalPixel, BGRPixel };
+
+ QRgb screenclut[256];
+ int screencols;
+
+ uchar * data;
+
+ QImage::Format screenFormat;
+ int w;
+ int lstep;
+ int h;
+ int d;
+ PixelType pixeltype;
+ bool grayscale;
+
+ int dw;
+ int dh;
+
+ int size; // Screen size
+ int mapsize; // Total mapped memory
+
+ int displayId;
+
+ int physWidth;
+ int physHeight;
+
+ bool canaccel;
+ int dataoffset;
+ int cacheStart;
+
+ bool connect(const QString &displaySpec);
+ bool initDevice();
+ void setPixelFormat(struct fb_var_screeninfo);
+ void createPalette(fb_cmap &cmap, fb_var_screeninfo &vinfo, fb_fix_screeninfo &finfo);
+ void blank(bool on);
+ QPlatformFontDatabase *fontDb;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/minimal/main.cpp b/src/plugins/platforms/minimal/main.cpp
new file mode 100644
index 0000000000..82c15c2592
--- /dev/null
+++ b/src/plugins/platforms/minimal/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 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 <QtGui/QPlatformIntegrationPlugin>
+#include "qminimalintegration.h"
+
+QT_BEGIN_NAMESPACE
+
+class QMinimalIntegrationPlugin : public QPlatformIntegrationPlugin
+{
+public:
+ QStringList keys() const;
+ QPlatformIntegration *create(const QString&, const QStringList&);
+};
+
+QStringList QMinimalIntegrationPlugin::keys() const
+{
+ QStringList list;
+ list << "Minimal";
+ return list;
+}
+
+QPlatformIntegration *QMinimalIntegrationPlugin::create(const QString& system, const QStringList& paramList)
+{
+ Q_UNUSED(paramList);
+ if (system.toLower() == "minimal")
+ return new QMinimalIntegration;
+
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(minimal, QMinimalIntegrationPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/minimal/minimal.pro b/src/plugins/platforms/minimal/minimal.pro
new file mode 100644
index 0000000000..438a88e95f
--- /dev/null
+++ b/src/plugins/platforms/minimal/minimal.pro
@@ -0,0 +1,13 @@
+TARGET = qminimal
+include(../../qpluginbase.pri)
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
+
+SOURCES = main.cpp \
+ qminimalintegration.cpp \
+ qminimalwindowsurface.cpp
+HEADERS = qminimalintegration.h \
+ qminimalwindowsurface.h
+
+target.path += $$[QT_INSTALL_PLUGINS]/platforms
+INSTALLS += target
diff --git a/src/plugins/platforms/minimal/qminimalintegration.cpp b/src/plugins/platforms/minimal/qminimalintegration.cpp
new file mode 100644
index 0000000000..c90e92ed87
--- /dev/null
+++ b/src/plugins/platforms/minimal/qminimalintegration.cpp
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** 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 "qminimalintegration.h"
+#include "qminimalwindowsurface.h"
+
+#include <QtGui/private/qpixmap_raster_p.h>
+#include <QtGui/QPlatformWindow>
+
+QMinimalIntegration::QMinimalIntegration()
+{
+ QMinimalScreen *mPrimaryScreen = new QMinimalScreen();
+
+ mPrimaryScreen->mGeometry = QRect(0, 0, 240, 320);
+ mPrimaryScreen->mDepth = 16;
+ mPrimaryScreen->mFormat = QImage::Format_RGB16;
+
+ mScreens.append(mPrimaryScreen);
+}
+
+QPixmapData *QMinimalIntegration::createPixmapData(QPixmapData::PixelType type) const
+{
+ return new QRasterPixmapData(type);
+}
+
+QPlatformWindow *QMinimalIntegration::createPlatformWindow(QWidget *widget, WId winId) const
+{
+ Q_UNUSED(winId);
+ return new QPlatformWindow(widget);
+}
+
+QWindowSurface *QMinimalIntegration::createWindowSurface(QWidget *widget, WId winId) const
+{
+ Q_UNUSED(winId);
+ return new QMinimalWindowSurface(widget);
+}
diff --git a/src/plugins/platforms/minimal/qminimalintegration.h b/src/plugins/platforms/minimal/qminimalintegration.h
new file mode 100644
index 0000000000..95b952ea9f
--- /dev/null
+++ b/src/plugins/platforms/minimal/qminimalintegration.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** 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 QPLATFORMINTEGRATION_MINIMAL_H
+#define QPLATFORMINTEGRATION_MINIMAL_H
+
+#include <QtGui/QPlatformIntegration>
+#include <QtGui/QPlatformScreen>
+
+QT_BEGIN_NAMESPACE
+
+class QMinimalScreen : public QPlatformScreen
+{
+public:
+ QMinimalScreen()
+ : mDepth(16), mFormat(QImage::Format_RGB16) {}
+
+ QRect geometry() const { return mGeometry; }
+ int depth() const { return mDepth; }
+ QImage::Format format() const { return mFormat; }
+
+public:
+ QRect mGeometry;
+ int mDepth;
+ QImage::Format mFormat;
+ QSize mPhysicalSize;
+};
+
+class QMinimalIntegration : public QPlatformIntegration
+{
+public:
+ QMinimalIntegration();
+
+ QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
+ QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId) const;
+ QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const;
+
+ QList<QPlatformScreen *> screens() const { return mScreens; }
+
+private:
+ QList<QPlatformScreen *> mScreens;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/minimal/qminimalwindowsurface.cpp b/src/plugins/platforms/minimal/qminimalwindowsurface.cpp
new file mode 100644
index 0000000000..acf0e6e410
--- /dev/null
+++ b/src/plugins/platforms/minimal/qminimalwindowsurface.cpp
@@ -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 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 "qminimalwindowsurface.h"
+#include <QtCore/qdebug.h>
+#include <QtGui/private/qapplication_p.h>
+
+QT_BEGIN_NAMESPACE
+
+QMinimalWindowSurface::QMinimalWindowSurface(QWidget *window)
+ : QWindowSurface(window)
+{
+ //qDebug() << "QMinimalWindowSurface::QMinimalWindowSurface:" << (long)this;
+}
+
+QMinimalWindowSurface::~QMinimalWindowSurface()
+{
+}
+
+QPaintDevice *QMinimalWindowSurface::paintDevice()
+{
+ //qDebug() << "QMinimalWindowSurface::paintDevice";
+ return &mImage;
+}
+
+void QMinimalWindowSurface::flush(QWidget *widget, const QRegion &region, const QPoint &offset)
+{
+ Q_UNUSED(widget);
+ Q_UNUSED(region);
+ Q_UNUSED(offset);
+
+ static int c = 0;
+ QString filename = QString("output%1.png").arg(c++, 4, 10, QLatin1Char('0'));
+ qDebug() << "QMinimalWindowSurface::flush() saving contents to" << filename.toLocal8Bit().constData();
+ mImage.save(filename);
+}
+
+void QMinimalWindowSurface::resize(const QSize &size)
+{
+ //qDebug() << "QMinimalWindowSurface::setGeometry:" << (long)this << rect;
+ QWindowSurface::resize(size);
+ QImage::Format format = QApplicationPrivate::platformIntegration()->screens().first()->format();
+ if (mImage.size() != size)
+ mImage = QImage(size, format);
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/minimal/qminimalwindowsurface.h b/src/plugins/platforms/minimal/qminimalwindowsurface.h
new file mode 100644
index 0000000000..98b26f6a90
--- /dev/null
+++ b/src/plugins/platforms/minimal/qminimalwindowsurface.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 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 QWINDOWSURFACE_MINIMAL_H
+#define QWINDOWSURFACE_MINIMAL_H
+
+#include <QtGui/private/qwindowsurface_p.h>
+
+#include <QtGui/QPlatformWindow>
+
+QT_BEGIN_NAMESPACE
+
+class QMinimalWindowSurface : public QWindowSurface
+{
+public:
+ QMinimalWindowSurface(QWidget *window);
+ ~QMinimalWindowSurface();
+
+ QPaintDevice *paintDevice();
+ void flush(QWidget *widget, const QRegion &region, const QPoint &offset);
+ void resize(const QSize &size);
+
+private:
+ QImage mImage;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/openkode/main.cpp b/src/plugins/platforms/openkode/main.cpp
new file mode 100644
index 0000000000..527747e102
--- /dev/null
+++ b/src/plugins/platforms/openkode/main.cpp
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** 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 <QtGui/QPlatformIntegrationPlugin>
+#include "qopenkodeintegration.h"
+
+QT_BEGIN_NAMESPACE
+
+class QOpenKODEPlugin : public QPlatformIntegrationPlugin
+{
+public:
+ QStringList keys() const;
+ QPlatformIntegration *create(const QString&, const QStringList&);
+};
+
+QStringList QOpenKODEPlugin::keys() const
+{
+ QStringList list;
+ list << "OpenKODE";
+ return list;
+}
+
+QPlatformIntegration * QOpenKODEPlugin::create(const QString& system, const QStringList& paramList)
+{
+ Q_UNUSED(paramList);
+ if (system.toLower() == "openkode")
+ return new QOpenKODEIntegration;
+
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(openkode, QOpenKODEPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/openkode/openkode.pro b/src/plugins/platforms/openkode/openkode.pro
new file mode 100644
index 0000000000..c8ae4154c3
--- /dev/null
+++ b/src/plugins/platforms/openkode/openkode.pro
@@ -0,0 +1,42 @@
+TARGET = qopenkodeintegration
+include(../../qpluginbase.pri)
+
+QT += opengl
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
+
+SOURCES = main.cpp \
+ qopenkodeintegration.cpp \
+ qopenkodewindow.cpp \
+ ../eglconvenience/qeglplatformcontext.cpp \
+ ../eglconvenience/qeglconvenience.cpp \
+ qopenkodeeventloopintegration.cpp
+
+HEADERS = qopenkodeintegration.h \
+ qopenkodewindow.h \
+ ../eglconvenience/qeglplatformcontext.h \
+ ../eglconvenience/qeglconvenience.h \
+ qopenkodeeventloopintegration.h \
+ openkodekeytranslator.h
+
+include (../fontdatabases/genericunix/genericunix.pri)
+
+RESOURCES = resources.qrc
+
+target.path += $$[QT_INSTALL_PLUGINS]/platforms
+INSTALLS += target
+
+LIBS += -lKD -lEGL
+!isEmpty(QMAKE_INCDIR_OPENGL_ES2){
+ INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES2
+}
+!isEmpty(QMAKE_LIBDIR_OPENGL_ES2){
+ for(p, QMAKE_LIBDIR_OPENGL_ES2) {
+ exists($$p):LIBS += -L$$p
+ }
+}
+!isEmpty(QMAKE_LIBS_OPENGL_ES2){
+ LIBS += $$QMAKE_LIBS_OPENGL_ES2
+} else {
+ LIBS += -lGLESv2
+}
diff --git a/src/plugins/platforms/openkode/openkodekeytranslator.h b/src/plugins/platforms/openkode/openkodekeytranslator.h
new file mode 100644
index 0000000000..0070edcbaa
--- /dev/null
+++ b/src/plugins/platforms/openkode/openkodekeytranslator.h
@@ -0,0 +1,244 @@
+/****************************************************************************
+**
+** 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 OPENKODEKEYTRANSLATOR_H
+#define OPENKODEKEYTRANSLATOR_H
+
+#ifdef KD_ATX_keyboard
+
+#include <KD/ATX_keyboard.h>
+
+QT_BEGIN_NAMESPACE
+
+Qt::Key keyTranslator( int key )
+{
+ switch (key) {
+// KD_KEY_ACCEPT_ATX:
+// KD_KEY_AGAIN_ATX:
+// KD_KEY_ALLCANDIDATES_ATX
+// KD_KEY_ALPHANUMERIC_ATX
+ case KD_KEY_ALT_ATX:
+ return Qt::Key_Alt;
+ case KD_KEY_ALTGRAPH_ATX:
+ return Qt::Key_AltGr;
+// KD_KEY_APPS_ATX
+// KD_KEY_ATTN_ATX
+// KD_KEY_BROWSERBACK_ATX
+// KD_KEY_BROWSERFAVORITES_ATX
+// KD_KEY_BROWSERFORWARD_ATX
+// KD_KEY_BROWSERHOME_ATX
+// KD_KEY_BROWSERREFRESH_ATX
+// KD_KEY_BROWSERSEARCH_ATX
+// KD_KEY_BROWSERSTOP_ATX
+ case KD_KEY_CAPSLOCK_ATX:
+ return Qt::Key_CapsLock;
+ case KD_KEY_CLEAR_ATX:
+ return Qt::Key_Clear;
+ case KD_KEY_CODEINPUT_ATX:
+ return Qt::Key_Codeinput;
+// KD_KEY_COMPOSE_ATX
+ case KD_KEY_CONTROL_ATX:
+ return Qt::Key_Control;
+// KD_KEY_CRSEL_ATX
+// KD_KEY_CONVERT_ATX
+ case KD_KEY_COPY_ATX:
+ return Qt::Key_Copy;
+ case KD_KEY_CUT_ATX:
+ return Qt::Key_Cut;
+ case KD_KEY_DOWN_ATX:
+ return Qt::Key_Down;
+ case KD_KEY_END_ATX:
+ return Qt::Key_End;
+ case KD_KEY_ENTER_ATX:
+ return Qt::Key_Enter;
+// KD_KEY_ERASEEOF_ATX
+// KD_KEY_EXECUTE_ATX
+// KD_KEY_EXSEL_ATX
+ case KD_KEY_F1_ATX:
+ return Qt::Key_F1;
+ case KD_KEY_F2_ATX:
+ return Qt::Key_F2;
+ case KD_KEY_F3_ATX:
+ return Qt::Key_F3;
+ case KD_KEY_F4_ATX:
+ return Qt::Key_F4;
+ case KD_KEY_F5_ATX:
+ return Qt::Key_F5;
+ case KD_KEY_F6_ATX:
+ return Qt::Key_F6;
+ case KD_KEY_F7_ATX:
+ return Qt::Key_F7;
+ case KD_KEY_F8_ATX:
+ return Qt::Key_F8;
+ case KD_KEY_F9_ATX:
+ return Qt::Key_F9;
+ case KD_KEY_F10_ATX:
+ return Qt::Key_F10;
+ case KD_KEY_F11_ATX:
+ return Qt::Key_F11;
+ case KD_KEY_F12_ATX:
+ return Qt::Key_F12;
+ case KD_KEY_F13_ATX:
+ return Qt::Key_F13;
+ case KD_KEY_F14_ATX:
+ return Qt::Key_F14;
+ case KD_KEY_F15_ATX:
+ return Qt::Key_F15;
+ case KD_KEY_F16_ATX:
+ return Qt::Key_F16;
+ case KD_KEY_F17_ATX:
+ return Qt::Key_F17;
+ case KD_KEY_F18_ATX:
+ return Qt::Key_F18;
+ case KD_KEY_F19_ATX:
+ return Qt::Key_F19;
+ case KD_KEY_F20_ATX:
+ return Qt::Key_F20;
+ case KD_KEY_F21_ATX:
+ return Qt::Key_F21;
+ case KD_KEY_F22_ATX:
+ return Qt::Key_F22;
+ case KD_KEY_F23_ATX:
+ return Qt::Key_F23;
+ case KD_KEY_F24_ATX:
+ return Qt::Key_F24;
+// KD_KEY_FINALMODE_ATX
+// KD_KEY_FIND_ATX
+// KD_KEY_FULLWIDTH_ATX
+// KD_KEY_HALFWIDTH_ATX
+ case KD_KEY_HANGULMODE_ATX:
+ return Qt::Key_Hangul;
+// KD_KEY_HANJAMODE_ATX
+ case KD_KEY_HELP_ATX:
+ return Qt::Key_Help;
+ case KD_KEY_HIRAGANA_ATX:
+ return Qt::Key_Hiragana;
+ case KD_KEY_HOME_ATX:
+ return Qt::Key_Home;
+ case KD_KEY_INSERT_ATX:
+ return Qt::Key_Insert;
+// KD_KEY_JAPANESEHIRAGANA_ATX:
+// KD_KEY_JAPANESEKATAKANA_ATX
+// KD_KEY_JAPANESEROMAJI_ATX
+// KD_KEY_JUNJAMODE_ATX
+ case KD_KEY_KANAMODE_ATX:
+ return Qt::Key_Kana_Lock; //?
+ case KD_KEY_KANJIMODE_ATX:
+ return Qt::Key_Kanji;
+// KD_KEY_KATAKANA_ATX
+// KD_KEY_LAUNCHAPPLICATION1_ATX
+// KD_KEY_LAUNCHAPPLICATION2_ATX
+ case KD_KEY_LAUNCHMAIL_ATX:
+ return Qt::Key_MailForward;
+ case KD_KEY_LEFT_ATX:
+ return Qt::Key_Left;
+ case KD_KEY_META_ATX:
+ return Qt::Key_Meta;
+ case KD_KEY_MEDIANEXTTRACK_ATX:
+ return Qt::Key_MediaNext;
+ case KD_KEY_MEDIAPLAYPAUSE_ATX:
+ return Qt::Key_MediaPause;
+ case KD_KEY_MEDIAPREVIOUSTRACK_ATX:
+ return Qt::Key_MediaPrevious;
+ case KD_KEY_MEDIASTOP_ATX:
+ return Qt::Key_MediaStop;
+ case KD_KEY_MODECHANGE_ATX:
+ return Qt::Key_Mode_switch;
+// KD_KEY_NONCONVERT_ATX
+ case KD_KEY_NUMLOCK_ATX:
+ return Qt::Key_NumLock;
+ case KD_KEY_PAGEDOWN_ATX:
+ return Qt::Key_PageDown;
+ case KD_KEY_PAGEUP_ATX:
+ return Qt::Key_PageUp;
+ case KD_KEY_PASTE_ATX:
+ return Qt::Key_Paste;
+ case KD_KEY_PAUSE_ATX:
+ return Qt::Key_Pause;
+ case KD_KEY_PLAY_ATX:
+ return Qt::Key_Play;
+// KD_KEY_PREVIOUSCANDIDATE_ATX
+ case KD_KEY_PRINTSCREEN_ATX:
+ return Qt::Key_Print;
+// case KD_KEY_PROCESS_ATX
+// case KD_KEY_PROPS_ATX
+ case KD_KEY_RIGHT_ATX:
+ return Qt::Key_Right;
+// KD_KEY_ROMANCHARACTERS_ATX
+ case KD_KEY_SCROLL_ATX:
+ return Qt::Key_ScrollLock;
+ case KD_KEY_SELECT_ATX:
+ return Qt::Key_Select;
+// KD_KEY_SELECTMEDIA_ATX
+ case KD_KEY_SHIFT_ATX:
+ return Qt::Key_Shift;
+ case KD_KEY_STOP_ATX:
+ return Qt::Key_Stop;
+ case KD_KEY_UP_ATX:
+ return Qt::Key_Up;
+// KD_KEY_UNDO_ATX
+ case KD_KEY_VOLUMEDOWN_ATX:
+ return Qt::Key_VolumeDown;
+ case KD_KEY_VOLUMEMUTE_ATX:
+ return Qt::Key_VolumeMute;
+ case KD_KEY_VOLUMEUP_ATX:
+ return Qt::Key_VolumeUp;
+ case KD_KEY_WIN_ATX:
+ return Qt::Key_Meta;
+ case KD_KEY_ZOOM_ATX:
+ return Qt::Key_Zoom;
+ case 0x8:
+ return Qt::Key_Backspace;
+ case 0x1b:
+ return Qt::Key_Escape;
+ case 0x9:
+ return Qt::Key_Tab;
+
+ default:
+ break;
+ }
+
+ return Qt::Key_Escape;
+}
+
+QT_END_NAMESPACE
+#endif //KD_ATX_keyboard
+#endif // OPENKODEKEYTRANSLATOR_H
diff --git a/src/plugins/platforms/openkode/qopenkodeeventloopintegration.cpp b/src/plugins/platforms/openkode/qopenkodeeventloopintegration.cpp
new file mode 100644
index 0000000000..73d874c97e
--- /dev/null
+++ b/src/plugins/platforms/openkode/qopenkodeeventloopintegration.cpp
@@ -0,0 +1,119 @@
+/****************************************************************************
+**
+** 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 "qopenkodeeventloopintegration.h"
+
+#include <QDebug>
+
+#include <KD/kd.h>
+#include <KD/ATX_keyboard.h>
+
+QT_BEGIN_NAMESPACE
+
+static const int QT_EVENT_WAKEUP_EVENTLOOP = KD_EVENT_USER + 1;
+
+void kdprocessevent( const KDEvent *event)
+{
+ switch (event->type) {
+ case KD_EVENT_INPUT:
+ qDebug() << "KD_EVENT_INPUT";
+ break;
+ case KD_EVENT_INPUT_POINTER:
+ qDebug() << "KD_EVENT_INPUT_POINTER";
+ break;
+ case KD_EVENT_WINDOW_CLOSE:
+ qDebug() << "KD_EVENT_WINDOW_CLOSE";
+ break;
+ case KD_EVENT_WINDOWPROPERTY_CHANGE:
+ qDebug() << "KD_EVENT_WINDOWPROPERTY_CHANGE";
+ qDebug() << event->data.windowproperty.pname;
+ break;
+ case KD_EVENT_WINDOW_FOCUS:
+ qDebug() << "KD_EVENT_WINDOW_FOCUS";
+ break;
+ case KD_EVENT_WINDOW_REDRAW:
+ qDebug() << "KD_EVENT_WINDOW_REDRAW";
+ break;
+ case KD_EVENT_USER:
+ qDebug() << "KD_EVENT_USER";
+ break;
+ case KD_EVENT_INPUT_KEY_ATX:
+ qDebug() << "KD_EVENT_INPUT_KEY_ATX";
+ break;
+ case QT_EVENT_WAKEUP_EVENTLOOP:
+// qDebug() << "QT_EVENT_WAKEUP_EVENTLOOP";
+ break;
+ default:
+ break;
+ }
+
+ kdDefaultEvent(event);
+
+}
+
+QOpenKODEEventLoopIntegration::QOpenKODEEventLoopIntegration()
+{
+ m_kdThread = kdThreadSelf();
+ kdInstallCallback(&kdprocessevent,QT_EVENT_WAKEUP_EVENTLOOP,this);
+}
+
+void QOpenKODEEventLoopIntegration::processEvents(qint64 msec)
+{
+ if (msec == 0)
+ msec = -1;
+ const KDEvent *event = kdWaitEvent(msec*1000);
+ if (event) {
+ kdDefaultEvent(event);
+ while ((event = kdWaitEvent(0)) != 0) {
+ kdDefaultEvent(event);
+ }
+ }
+}
+
+void QOpenKODEEventLoopIntegration::wakeup()
+{
+ KDEvent *event = kdCreateEvent();
+ event->type = QT_EVENT_WAKEUP_EVENTLOOP;
+ event->userptr = this;
+ kdPostThreadEvent(event,m_kdThread);
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/openkode/qopenkodeeventloopintegration.h b/src/plugins/platforms/openkode/qopenkodeeventloopintegration.h
new file mode 100644
index 0000000000..61bd444759
--- /dev/null
+++ b/src/plugins/platforms/openkode/qopenkodeeventloopintegration.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** 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 QOPENKODEEVENTLOOPINTEGRATION_H
+#define QOPENKODEEVENTLOOPINTEGRATION_H
+
+#include <QtGui/QPlatformEventLoopIntegration>
+
+class KDThread;
+class KDEvent;
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+class QOpenKODEEventLoopIntegration : public QPlatformEventLoopIntegration
+{
+public:
+ QOpenKODEEventLoopIntegration();
+ void processEvents(qint64 msec);
+ void wakeup();
+
+ void processInputEvent(const KDEvent *event);
+private:
+
+ KDThread *m_kdThread;
+};
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QOPENKODEEVENTLOOPINTEGRATION_H
diff --git a/src/plugins/platforms/openkode/qopenkodeintegration.cpp b/src/plugins/platforms/openkode/qopenkodeintegration.cpp
new file mode 100644
index 0000000000..60be897401
--- /dev/null
+++ b/src/plugins/platforms/openkode/qopenkodeintegration.cpp
@@ -0,0 +1,240 @@
+/****************************************************************************
+**
+** 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 "qopenkodeintegration.h"
+#include "qopenkodewindow.h"
+#include "qopenkodeeventloopintegration.h"
+
+#include <QtOpenGL/private/qpixmapdata_gl_p.h>
+#include <QtOpenGL/private/qwindowsurface_gl_p.h>
+
+#include <QtGui/private/qpixmap_raster_p.h>
+
+#include <QtCore/qdebug.h>
+#include <QtCore/qthread.h>
+#include <QtCore/qfile.h>
+
+#include "qgenericunixfontdatabase.h"
+
+#include <KD/kd.h>
+#include <KD/NV_display.h>
+#include <KD/NV_initialize.h>
+
+#include <EGL/egl.h>
+
+#include "GLES2/gl2ext.h"
+
+QT_BEGIN_NAMESPACE
+
+QOpenKODEScreen::QOpenKODEScreen(KDDisplayNV *kdDisplay, KDDesktopNV *kdDesktop)
+ : mIsFullScreen(false)
+{
+ qDebug() << "QOpenKODEScreen::QOpenKODEIntegrationScreen()";
+
+ KDboolean enabled = KD_TRUE;
+ kdSetDisplayPropertybvNV(kdDisplay,
+ KD_DISPLAYPROPERTY_ENABLED_NV,
+ &enabled);
+ KDboolean power = KD_DISPLAY_POWER_ON;
+ kdSetDisplayPropertyivNV(kdDisplay,
+ KD_DISPLAYPROPERTY_POWER_NV,
+ &power);
+
+ kdSetDisplayPropertycvNV(kdDisplay,
+ KD_DISPLAYPROPERTY_DESKTOP_NAME_NV,
+ KD_DEFAULT_DESKTOP_NV);
+
+ KDDisplayModeNV mode;
+ if (kdGetDisplayModeNV(kdDisplay, &mode)) {
+ qErrnoWarning(kdGetError(), "Could not get display mode");
+ return;
+ }
+
+ qDebug() << " - display mode " << mode.width << "x" << mode.height << " refresh " << mode.refresh;
+
+ KDint desktopSize[] = { mode.width, mode.height };
+
+ if (kdSetDesktopPropertyivNV(kdDesktop, KD_DESKTOPPROPERTY_SIZE_NV, desktopSize)) {
+ qErrnoWarning(kdGetError(), "Could not set desktop size");
+ return;
+ }
+
+ // Once we've set up the desktop and display we don't need them anymore
+ kdReleaseDisplayNV(kdDisplay);
+ kdReleaseDesktopNV(kdDesktop);
+
+ mEglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+ if (mEglDisplay == EGL_NO_DISPLAY) {
+ qErrnoWarning("EGL failed to obtain display");
+ }
+
+ /* Initialize EGL display */
+ EGLBoolean rvbool = eglInitialize(mEglDisplay, 0, 0);
+ if (!rvbool) {
+ qErrnoWarning("EGL failed to initialize display");
+ }
+
+// cursor = new QOpenKODECursor(this);
+
+ mGeometry = QRect(0, 0, mode.width, mode.height);
+ mDepth = 24;
+ mFormat = QImage::Format_RGB32;
+
+
+}
+
+QOpenKODEIntegration::QOpenKODEIntegration()
+ : mEventLoopIntegration(0), mFontDb(new QGenericUnixFontDatabase())
+{
+ if (kdInitializeNV() == KD_ENOTINITIALIZED) {
+ qFatal("Did not manage to initialize openkode");
+ }
+
+ KDDisplaySystemNV *kdDisplaySystem = kdCreateDisplaySystemSnapshotNV(this);
+ KDint32 displayCount = 0;
+ kdGetDisplaySystemPropertyivNV(kdDisplaySystem, KD_DISPLAYPROPERTY_COUNT_NV, 0, &displayCount);
+
+ for (int i = 0; i < displayCount; i++) {
+ KDchar *displayName = 0;
+ KDsize displayNameLength = 0;
+ kdGetDisplaySystemPropertycvNV(kdDisplaySystem,KD_DISPLAYPROPERTY_NAME_NV,i,0,&displayNameLength);
+ if (!displayNameLength)
+ continue;
+ displayName = new KDchar[displayNameLength];
+ kdGetDisplaySystemPropertycvNV(kdDisplaySystem,KD_DISPLAYPROPERTY_NAME_NV,i,displayName,&displayNameLength);
+
+ KDDisplayNV *display = kdGetDisplayNV(displayName,this);
+ if (!display || display == (void*)-1) {
+ qErrnoWarning(kdGetError(), "Could not obtain KDDisplayNV pointer");
+ return;
+ }
+ if (displayNameLength)
+ delete displayName;
+
+ KDchar *desktopName = 0;
+ KDsize desktopNameLength = 0;
+ bool openkodeImpDoesNotFail = false;
+ if (openkodeImpDoesNotFail) {
+ qDebug() << "printing desktopname";
+ kdGetDisplayPropertycvNV(display,KD_DISPLAYPROPERTY_DESKTOP_NAME_NV,desktopName,&desktopNameLength);
+ if (desktopNameLength) {
+ desktopName = new KDchar[desktopNameLength];
+ kdGetDisplayPropertycvNV(display,KD_DISPLAYPROPERTY_DESKTOP_NAME_NV,desktopName,&desktopNameLength);
+ } else {
+ desktopName = KD_DEFAULT_DESKTOP_NV;
+ }
+ } else {
+ desktopName = KD_DEFAULT_DESKTOP_NV;
+ }
+
+ KDDesktopNV *desktop = kdGetDesktopNV(desktopName,this);
+ if (!desktop || desktop == (void*)-1) {
+ qErrnoWarning(kdGetError(), "Could not obtain KDDesktopNV pointer");
+ kdReleaseDisplayNV(display);
+ return;
+ }
+ if (desktopNameLength)
+ delete desktopName;
+
+ QOpenKODEScreen *screen = new QOpenKODEScreen(display,desktop);
+ mScreens.append(screen);
+ }
+}
+
+QOpenKODEIntegration::~QOpenKODEIntegration()
+{
+ delete mEventLoopIntegration;
+ delete mFontDb;
+}
+
+QPixmapData *QOpenKODEIntegration::createPixmapData(QPixmapData::PixelType type) const
+{
+ return new QGLPixmapData(type);
+}
+
+QPlatformWindow *QOpenKODEIntegration::createPlatformWindow(QWidget *tlw, WId ) const
+{
+ return new QOpenKODEWindow(tlw);
+}
+
+QWindowSurface *QOpenKODEIntegration::createWindowSurface(QWidget *widget, WId) const
+{
+ QWindowSurface *returnSurface = 0;
+ switch (widget->platformWindowFormat().windowApi()) {
+
+ case QPlatformWindowFormat::Raster:
+ case QPlatformWindowFormat::OpenGL:
+ returnSurface = new QGLWindowSurface(widget);
+ break;
+
+ case QPlatformWindowFormat::OpenVG:
+// returnSurface = new QVGWindowSurface(widget);
+ break;
+
+ default:
+ returnSurface = new QGLWindowSurface(widget);
+ break;
+ }
+
+ return returnSurface;
+}
+
+bool QOpenKODEIntegration::hasOpenGL() const
+{
+ return true;
+}
+
+QPlatformEventLoopIntegration *QOpenKODEIntegration::createEventLoopIntegration() const
+{
+ if (!mEventLoopIntegration) {
+ QOpenKODEIntegration *that = const_cast<QOpenKODEIntegration *>(this);
+ that->mEventLoopIntegration = new QOpenKODEEventLoopIntegration;
+ }
+ return mEventLoopIntegration;
+}
+
+QPlatformFontDatabase *QOpenKODEIntegration::fontDatabase() const
+{
+ return mFontDb;
+}
+
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/openkode/qopenkodeintegration.h b/src/plugins/platforms/openkode/qopenkodeintegration.h
new file mode 100644
index 0000000000..a067491c0b
--- /dev/null
+++ b/src/plugins/platforms/openkode/qopenkodeintegration.h
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** 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 QGRAPHICSSYSTEM_OPENKODE_H
+#define QGRAPHICSSYSTEM_OPENKODE_H
+
+#include "qopenkodeeventloopintegration.h"
+
+#include <QtCore/qsemaphore.h>
+
+#include <QtGui/QPlatformIntegration>
+#include <QtGui/QPlatformScreen>
+#include <QtGui/QPlatformGLContext>
+#include <QtGui/QPlatformFontDatabase>
+
+#include <GLES2/gl2.h>
+#include <EGL/egl.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+struct KDDesktopNV;
+struct KDDisplayNV;
+class QOpenKODECursor;
+
+class QOpenKODEScreen : public QPlatformScreen
+{
+ Q_OBJECT
+public:
+ QOpenKODEScreen(KDDisplayNV *kdDisplay, KDDesktopNV *kdDesktop);
+ ~QOpenKODEScreen() {}
+
+ QRect geometry() const { return mGeometry; }
+ int depth() const { return mDepth; }
+ QImage::Format format() const { return mFormat; }
+
+ EGLDisplay eglDisplay() { return mEglDisplay; }
+
+ bool isFullScreen() const {return mIsFullScreen;}
+ void setFullScreen(bool fullscreen) { mIsFullScreen = fullscreen; }
+private:
+ QRect mGeometry;
+ int mDepth;
+ QImage::Format mFormat;
+ EGLDisplay mEglDisplay;
+ bool mIsFullScreen;
+};
+
+class QOpenKODEIntegration : public QPlatformIntegration
+{
+public:
+ QOpenKODEIntegration();
+ ~QOpenKODEIntegration();
+
+ QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
+ QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId = 0) const;
+ QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const;
+
+ bool hasOpenGL() const;
+
+ QPlatformEventLoopIntegration *createEventLoopIntegration() const;
+
+ QPlatformFontDatabase *fontDatabase() const;
+
+ virtual QList<QPlatformScreen *> screens() const { return mScreens; }
+
+ static GLuint blitterProgram();
+
+private:
+ QList<QPlatformScreen *> mScreens;
+ QOpenKODEEventLoopIntegration *mEventLoopIntegration;
+ QPlatformFontDatabase *mFontDb;
+};
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif
diff --git a/src/plugins/platforms/openkode/qopenkodewindow.cpp b/src/plugins/platforms/openkode/qopenkodewindow.cpp
new file mode 100644
index 0000000000..32517c6dfc
--- /dev/null
+++ b/src/plugins/platforms/openkode/qopenkodewindow.cpp
@@ -0,0 +1,316 @@
+/****************************************************************************
+**
+** 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 "qopenkodewindow.h"
+#include "qopenkodeintegration.h"
+#include "../eglconvenience/qeglplatformcontext.h"
+#include "../eglconvenience/qeglconvenience.h"
+
+#include <KD/kd.h>
+#include <KD/NV_display.h>
+#include <KD/kdplatform.h>
+#ifdef KD_ATX_keyboard
+#include "openkodekeytranslator.h"
+#endif
+
+#include <EGL/egl.h>
+
+#include <QtGui/qwidget.h>
+#include <QtGui/private/qwidget_p.h>
+#include <QtGui/private/qapplication_p.h>
+
+#include <QtCore/qvector.h>
+#include <QtCore/QDebug>
+
+QT_BEGIN_NAMESPACE
+
+void kdProcessMouseEvents( const KDEvent *event )
+{
+ QOpenKODEWindow *window = static_cast<QOpenKODEWindow *>(event->userptr);
+ window->processMouseEvents(event);
+}
+
+#ifdef KD_ATX_keyboard
+void kdProcessKeyEvents( const KDEvent *event )
+{
+ QOpenKODEWindow *window = static_cast<QOpenKODEWindow *>(event->userptr);
+ window->processKeyEvents(event);
+}
+#endif //KD_ATX_keyboard
+
+QOpenKODEWindow::QOpenKODEWindow(QWidget *tlw)
+ : QPlatformWindow(tlw), isFullScreen(false)
+{
+ if (tlw->platformWindowFormat().windowApi() == QPlatformWindowFormat::OpenVG) {
+ m_eglApi = EGL_OPENVG_API;
+ } else {
+ m_eglContextAttrs.append(EGL_CONTEXT_CLIENT_VERSION);
+ m_eglContextAttrs.append(2);
+
+ m_eglApi = EGL_OPENGL_ES_API;
+ }
+ eglBindAPI(m_eglApi);
+
+ m_eglContextAttrs.append(EGL_NONE);
+ m_eglWindowAttrs.append(EGL_NONE);
+
+ QList<QPlatformScreen *> screens = QApplicationPrivate::platformIntegration()->screens();
+ //XXXX: jl figure out how to pick the correct screen.
+// Q_ASSERT(screens.size() > tlw->d_func()->screenNumber);
+// QOpenKODEScreen *screen = qobject_cast<QOpenKODEScreen *>(screens.at(tlw->d_func()->screenNumber));
+ QOpenKODEScreen *screen = qobject_cast<QOpenKODEScreen *>(screens.at(0));
+ if (!screen) {
+ qErrnoWarning("Could not make QOpenKODEWindow without a screen");
+ }
+
+ QPlatformWindowFormat format = tlw->platformWindowFormat();
+ format.setRedBufferSize(5);
+ format.setGreenBufferSize(6);
+ format.setBlueBufferSize(5);
+
+ m_eglConfig = q_configFromQPlatformWindowFormat(screen->eglDisplay(),format);
+
+ m_kdWindow = kdCreateWindow(screen->eglDisplay(),
+ m_eglConfig,
+ this);
+ kdInstallCallback(kdProcessMouseEvents,KD_EVENT_INPUT_POINTER,this);
+#ifdef KD_ATX_keyboard
+ kdInstallCallback(kdProcessKeyEvents, KD_EVENT_INPUT_KEY_ATX,this);
+#endif //KD_ATX_keyboard
+
+ if (!m_kdWindow) {
+ qErrnoWarning(kdGetError(), "Error creating native window");
+ return;
+ }
+
+ KDboolean exclusive(false);
+ if (kdSetWindowPropertybv(m_kdWindow,KD_WINDOWPROPERTY_DESKTOP_EXCLUSIVE_NV, &exclusive)) {
+ isFullScreen = true;
+ }
+
+ if (isFullScreen) {
+ tlw->setGeometry(screen->geometry());
+ screen->setFullScreen(isFullScreen);
+ }else {
+ const KDint windowSize[2] = { tlw->width(), tlw->height() };
+ if (kdSetWindowPropertyiv(m_kdWindow, KD_WINDOWPROPERTY_SIZE, windowSize)) {
+ qErrnoWarning(kdGetError(), "Could not set native window size");
+ }
+ KDboolean visibillity(false);
+ if (kdSetWindowPropertybv(m_kdWindow, KD_WINDOWPROPERTY_VISIBILITY, &visibillity)) {
+ qErrnoWarning(kdGetError(), "Could not set visibillity to false");
+ }
+
+ const KDint windowPos[2] = { tlw->x(), tlw->y() };
+ if (kdSetWindowPropertyiv(m_kdWindow, KD_WINDOWPROPERTY_DESKTOP_OFFSET_NV, windowPos)) {
+ qErrnoWarning(kdGetError(), "Could not set native window position");
+ return;
+ }
+ }
+
+
+
+
+ if (!isFullScreen || (isFullScreen && !QPlatformGLContext::defaultSharedContext())) {
+ if (kdRealizeWindow(m_kdWindow, &m_eglWindow)) {
+ qErrnoWarning(kdGetError(), "Could not realize native window");
+ return;
+ }
+
+ EGLSurface surface = eglCreateWindowSurface(screen->eglDisplay(),m_eglConfig,m_eglWindow,m_eglWindowAttrs.constData());
+ m_platformGlContext = new QEGLPlatformContext(screen->eglDisplay(), m_eglConfig,
+ m_eglContextAttrs.data(), surface, m_eglApi);
+ m_platformGlContext->makeDefaultSaredContext();
+ } else {
+ m_platformGlContext = static_cast<QEGLPlatformContext *>(QPlatformGLContext::defaultSharedContext());
+ kdDestroyWindow(m_kdWindow);
+ m_kdWindow = 0;
+ }
+}
+
+
+QOpenKODEWindow::~QOpenKODEWindow()
+{
+ if (m_platformGlContext != QPlatformGLContext::defaultSharedContext()) {
+ delete m_platformGlContext;
+ }
+ if (m_kdWindow)
+ kdDestroyWindow(m_kdWindow);
+}
+void QOpenKODEWindow::setGeometry(const QRect &rect)
+{
+ if (isFullScreen) {
+ QList<QPlatformScreen *> screens = QApplicationPrivate::platformIntegration()->screens();
+ QOpenKODEScreen *screen = qobject_cast<QOpenKODEScreen *>(screens.at(0));
+ widget()->setGeometry(screen->geometry());
+ return;
+ }
+ bool needToDeleteContext = false;
+ if (!isFullScreen) {
+ const QRect geo = geometry();
+ if (geo.size() != rect.size()) {
+ const KDint windowSize[2] = { rect.width(), rect.height() };
+ if (kdSetWindowPropertyiv(m_kdWindow, KD_WINDOWPROPERTY_SIZE, windowSize)) {
+ qErrnoWarning(kdGetError(), "Could not set native window size");
+ //return;
+ } else {
+ needToDeleteContext = true;
+ }
+ }
+
+ if (geo.topLeft() != rect.topLeft()) {
+ const KDint windowPos[2] = { rect.x(), rect.y() };
+ if (kdSetWindowPropertyiv(m_kdWindow, KD_WINDOWPROPERTY_DESKTOP_OFFSET_NV, windowPos)) {
+ qErrnoWarning(kdGetError(), "Could not set native window position");
+ //return;
+ } else {
+ needToDeleteContext = true;
+ }
+ }
+ }
+
+ //need to recreate context
+ if (needToDeleteContext) {
+ qDebug() << "deleting context";
+ delete m_platformGlContext;
+
+ QList<QPlatformScreen *> screens = QApplicationPrivate::platformIntegration()->screens();
+ QOpenKODEScreen *screen = qobject_cast<QOpenKODEScreen *>(screens.at(0));
+ EGLSurface surface = eglCreateWindowSurface(screen->eglDisplay(),m_eglConfig,m_eglWindow,m_eglWindowAttrs.constData());
+ m_platformGlContext = new QEGLPlatformContext(screen->eglDisplay(),m_eglConfig,
+ m_eglContextAttrs.data(),surface,m_eglApi);
+ }
+}
+
+void QOpenKODEWindow::setVisible(bool visible)
+{
+ if (!m_kdWindow)
+ return;
+ KDboolean visibillity(visible);
+ if (kdSetWindowPropertybv(m_kdWindow, KD_WINDOWPROPERTY_VISIBILITY, &visibillity)) {
+ qErrnoWarning(kdGetError(), "Could not set visibillity property");
+ }
+}
+
+WId QOpenKODEWindow::winId() const
+{
+ static int i = 0;
+ return i++;
+}
+
+QPlatformGLContext *QOpenKODEWindow::glContext() const
+{
+ return m_platformGlContext;
+}
+
+void QOpenKODEWindow::raise()
+{
+ if (!m_kdWindow)
+ return;
+ KDboolean focus(true);
+ if (kdSetWindowPropertybv(m_kdWindow, KD_WINDOWPROPERTY_FOCUS, &focus)) {
+ qErrnoWarning(kdGetError(), "Could not set focus");
+ }
+}
+
+void QOpenKODEWindow::lower()
+{
+ if (!m_kdWindow)
+ return;
+ KDboolean focus(false);
+ if (kdSetWindowPropertybv(m_kdWindow, KD_WINDOWPROPERTY_FOCUS, &focus)) {
+ qErrnoWarning(kdGetError(), "Could not set focus");
+ }
+}
+
+void QOpenKODEWindow::processMouseEvents(const KDEvent *event)
+{
+ int x = event->data.inputpointer.x;
+ int y = event->data.inputpointer.y;
+ Qt::MouseButtons buttons;
+ switch(event->data.inputpointer.select) {
+ case 1:
+ buttons = Qt::LeftButton;
+ break;
+ default:
+ buttons = Qt::NoButton;
+ }
+ QPoint pos(x,y);
+ QWindowSystemInterface::handleMouseEvent(0,event->timestamp,pos,pos,buttons);
+}
+
+void QOpenKODEWindow::processKeyEvents(const KDEvent *event)
+{
+#ifdef KD_ATX_keyboard
+ //KD_KEY_PRESS_ATX 1
+ QEvent::Type keyPressed = QEvent::KeyRelease;
+ if (event->data.keyboardInputKey.flags)
+ keyPressed = QEvent::KeyPress;
+//KD_KEY_LOCATION_LEFT_ATX // dont care for now
+//KD_KEY_LOCATION_RIGHT_ATX
+//KD_KEY_LOCATION_NUMPAD_ATX
+ Qt::KeyboardModifiers mod = Qt::NoModifier;
+ int openkodeMods = event->data.keyboardInputKey.flags;
+ if (openkodeMods & KD_KEY_MODIFIER_SHIFT_ATX)
+ mod |= Qt::ShiftModifier;
+ if (openkodeMods & KD_KEY_MODIFIER_CTRL_ATX)
+ mod |= Qt::ControlModifier;
+ if (openkodeMods & KD_KEY_MODIFIER_ALT_ATX)
+ mod |= Qt::AltModifier;
+ if (openkodeMods & KD_KEY_MODIFIER_META_ATX)
+ mod |= Qt::MetaModifier;
+
+ Qt::Key qtKey;
+ QChar keyText;
+ int key = event->data.keyboardInputKey.keycode;
+ if (key >= 0x20 && key <= 0x0ff){ // 8 bit printable Latin1
+ qtKey = Qt::Key(key);
+ keyText = QChar(event->data.keyboardInputKeyChar.character);
+ if (!(mod & Qt::ShiftModifier))
+ keyText = keyText.toLower();
+ } else {
+ qtKey = keyTranslator(key);
+ }
+ QWindowSystemInterface::handleKeyEvent(0,event->timestamp,keyPressed,qtKey,mod,keyText);
+#endif
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/openkode/qopenkodewindow.h b/src/plugins/platforms/openkode/qopenkodewindow.h
new file mode 100644
index 0000000000..4992807adc
--- /dev/null
+++ b/src/plugins/platforms/openkode/qopenkodewindow.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** 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 QOPENKODEWINDOW_H
+#define QOPENKODEWINDOW_H
+
+#include <QtGui/QPlatformWindow>
+#include <QtCore/QVector>
+
+#include <KD/kd.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+class QEGLPlatformContext;
+class QPlatformEventLoopIntegration;
+
+class QOpenKODEWindow : public QPlatformWindow
+{
+public:
+ QOpenKODEWindow(QWidget *tlw);
+ ~QOpenKODEWindow();
+
+ void setGeometry(const QRect &rect);
+ void setVisible(bool visible);
+ WId winId() const;
+
+ QPlatformGLContext *glContext() const;
+
+ void raise();
+ void lower();
+
+ void processKeyEvents( const KDEvent *event );
+ void processMouseEvents( const KDEvent *event );
+
+private:
+ struct KDWindow *m_kdWindow;
+ EGLNativeWindowType m_eglWindow;
+ EGLConfig m_eglConfig;
+ QVector<EGLint> m_eglWindowAttrs;
+ QVector<EGLint> m_eglContextAttrs;
+ EGLenum m_eglApi;
+ QEGLPlatformContext *m_platformGlContext;
+
+ bool isFullScreen;
+};
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif //QOPENKODEWINDOW_H
diff --git a/src/plugins/platforms/openkode/resources.qrc b/src/plugins/platforms/openkode/resources.qrc
new file mode 100644
index 0000000000..dbb34199ff
--- /dev/null
+++ b/src/plugins/platforms/openkode/resources.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>shaders/vert.glslv</file>
+ <file>shaders/frag.glslf</file>
+</qresource>
+</RCC>
diff --git a/src/plugins/platforms/openkode/shaders/frag.glslf b/src/plugins/platforms/openkode/shaders/frag.glslf
new file mode 100644
index 0000000000..c768437d81
--- /dev/null
+++ b/src/plugins/platforms/openkode/shaders/frag.glslf
@@ -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 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$
+**
+****************************************************************************/
+
+uniform sampler2D tex_samp;
+
+varying vec2 texcoord_var;
+
+void main(void)
+{
+ gl_FragColor = texture2D(tex_samp, texcoord_var);
+}
diff --git a/src/plugins/platforms/openkode/shaders/vert.glslv b/src/plugins/platforms/openkode/shaders/vert.glslv
new file mode 100644
index 0000000000..8a64f4dd49
--- /dev/null
+++ b/src/plugins/platforms/openkode/shaders/vert.glslv
@@ -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 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$
+**
+****************************************************************************/
+
+uniform vec2 window; // window size
+
+// Per-vertex attributes]
+attribute vec2 pos_attr;
+attribute vec2 texcoord_attr;
+
+// Output vertex color
+varying vec2 texcoord_var;
+
+void main()
+{
+ gl_Position = vec4( (2.0 * pos_attr / window -1.0) * vec2(1.0, -1.0), 0.0, 1.0);
+ texcoord_var = texcoord_attr;
+}
diff --git a/src/plugins/platforms/openvglite/main.cpp b/src/plugins/platforms/openvglite/main.cpp
new file mode 100644
index 0000000000..dc0b4a8c08
--- /dev/null
+++ b/src/plugins/platforms/openvglite/main.cpp
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <private/qgraphicssystemplugin_p.h>
+#include "qgraphicssystem_vglite.h"
+
+QT_BEGIN_NAMESPACE
+
+class QVGGraphicsSystemPlugin : public QGraphicsSystemPlugin
+{
+public:
+ QStringList keys() const;
+ QGraphicsSystem *create(const QString&);
+};
+
+QStringList QVGGraphicsSystemPlugin::keys() const
+{
+ QStringList list;
+ list << "OpenVG";
+ return list;
+}
+
+QGraphicsSystem* QVGGraphicsSystemPlugin::create(const QString& system)
+{
+ if (system.toLower() == "openvg")
+ return new QVGLiteGraphicsSystem;
+
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(openvg, QVGGraphicsSystemPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/openvglite/openvglite.pro b/src/plugins/platforms/openvglite/openvglite.pro
new file mode 100644
index 0000000000..9d7860abe7
--- /dev/null
+++ b/src/plugins/platforms/openvglite/openvglite.pro
@@ -0,0 +1,12 @@
+TARGET = qvglitegraphicssystem
+include(../../qpluginbase.pri)
+
+QT += openvg
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/graphicssystems
+
+SOURCES = main.cpp qgraphicssystem_vglite.cpp qwindowsurface_vglite.cpp
+HEADERS = qgraphicssystem_vglite.h qwindowsurface_vglite.h
+
+target.path += $$[QT_INSTALL_PLUGINS]/graphicssystems
+INSTALLS += target
diff --git a/src/plugins/platforms/openvglite/qgraphicssystem_vglite.cpp b/src/plugins/platforms/openvglite/qgraphicssystem_vglite.cpp
new file mode 100644
index 0000000000..41b2303202
--- /dev/null
+++ b/src/plugins/platforms/openvglite/qgraphicssystem_vglite.cpp
@@ -0,0 +1,193 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qgraphicssystem_vglite.h"
+#include "qwindowsurface_vglite.h"
+#include <QtOpenVG/private/qpixmapdata_vg_p.h>
+#include <QtGui/private/qegl_p.h>
+#include <QtCore/qdebug.h>
+#ifdef OPENVG_USBHP_INIT
+extern "C" {
+#include <linuxusbhp.h>
+};
+#endif
+
+QT_BEGIN_NAMESPACE
+
+QVGLiteGraphicsSystem::QVGLiteGraphicsSystem()
+ : w(0), h(0), d(0), dw(0), dh(0), physWidth(0), physHeight(0),
+ surface(0), context(0), rootWindow(0),
+ screenFormat(QImage::Format_RGB16), preservedSwap(false)
+{
+#ifdef OPENVG_USBHP_INIT
+ initLibrary();
+#endif
+
+ // The graphics system is also the screen definition.
+ mScreens.append(this);
+
+ QString displaySpec = QString::fromLatin1(qgetenv("QWS_DISPLAY"));
+ QStringList displayArgs = displaySpec.split(QLatin1Char(':'));
+
+ // Initialize EGL and create the global EGL context.
+ context = qt_vg_create_context(0);
+ if (!context) {
+ qFatal("QVGLiteGraphicsSystem: could not initialize EGL");
+ return;
+ }
+
+ // Get the root window handle to use. Default to zero.
+ QRegExp winidRx(QLatin1String("winid=?(\\d+)"));
+ int winidIdx = displayArgs.indexOf(winidRx);
+ int handle = 0;
+ if (winidIdx >= 0) {
+ winidRx.exactMatch(displayArgs.at(winidIdx));
+ handle = winidRx.cap(1).toInt();
+ }
+
+ // Create a full-screen window based on the native handle.
+ // If the context is premultiplied, the window should be too.
+ QEglProperties props;
+#ifdef EGL_VG_ALPHA_FORMAT_PRE_BIT
+ EGLint surfaceType = 0;
+ if (context->configAttrib(EGL_SURFACE_TYPE, &surfaceType) &&
+ (surfaceType & EGL_VG_ALPHA_FORMAT_PRE_BIT) != 0)
+ props.setValue(EGL_VG_ALPHA_FORMAT, EGL_VG_ALPHA_FORMAT_PRE);
+#endif
+ rootWindow = eglCreateWindowSurface
+ (context->display(), context->config(),
+ (EGLNativeWindowType)handle, props.properties());
+ if (rootWindow == EGL_NO_SURFACE) {
+ delete context;
+ context = 0;
+ qFatal("QVGLiteGraphicsSystem: could not create full-screen window");
+ return;
+ }
+
+ // Try to turn on preserved swap behaviour on the root window.
+ // This will allow us to optimize compositing to focus on just
+ // the screen region that has changed. Otherwise we must
+ // re-composite the entire screen every frame.
+#if !defined(QVG_NO_PRESERVED_SWAP)
+ eglGetError(); // Clear error state first.
+ eglSurfaceAttrib(context->display(), rootWindow,
+ EGL_SWAP_BEHAVIOR, EGL_BUFFER_PRESERVED);
+ preservedSwap = (eglGetError() == EGL_SUCCESS);
+#else
+ preservedSwap = false;
+#endif
+
+ // Fetch the root window properties.
+ eglQuerySurface(context->display(), rootWindow, EGL_WIDTH, &w);
+ eglQuerySurface(context->display(), rootWindow, EGL_HEIGHT, &h);
+ screenFormat = qt_vg_config_to_image_format(context);
+ switch (screenFormat) {
+ case QImage::Format_ARGB32_Premultiplied:
+ case QImage::Format_ARGB32:
+ case QImage::Format_RGB32:
+ default:
+ d = 32;
+ break;
+ case QImage::Format_RGB16:
+ case QImage::Format_ARGB4444_Premultiplied:
+ d = 16;
+ break;
+ }
+ dw = w;
+ dh = h;
+ qDebug("screen size: %dx%dx%d", w, h, d);
+
+ // Handle display physical size spec. From qscreenlinuxfb_qws.cpp.
+ QRegExp mmWidthRx(QLatin1String("mmWidth=?(\\d+)"));
+ int dimIdxW = displayArgs.indexOf(mmWidthRx);
+ QRegExp mmHeightRx(QLatin1String("mmHeight=?(\\d+)"));
+ int dimIdxH = displayArgs.indexOf(mmHeightRx);
+ if (dimIdxW >= 0) {
+ mmWidthRx.exactMatch(displayArgs.at(dimIdxW));
+ physWidth = mmWidthRx.cap(1).toInt();
+ if (dimIdxH < 0)
+ physHeight = dh*physWidth/dw;
+ }
+ if (dimIdxH >= 0) {
+ mmHeightRx.exactMatch(displayArgs.at(dimIdxH));
+ physHeight = mmHeightRx.cap(1).toInt();
+ if (dimIdxW < 0)
+ physWidth = dw*physHeight/dh;
+ }
+ if (dimIdxW < 0 && dimIdxH < 0) {
+ const int dpi = 72;
+ physWidth = qRound(dw * 25.4 / dpi);
+ physHeight = qRound(dh * 25.4 / dpi);
+ }
+}
+
+QVGLiteGraphicsSystem::~QVGLiteGraphicsSystem()
+{
+}
+
+QPixmapData *QVGLiteGraphicsSystem::createPixmapData(QPixmapData::PixelType type) const
+{
+#if !defined(QVGLite_NO_SINGLE_CONTEXT) && !defined(QVGLite_NO_PIXMAP_DATA)
+ // Pixmaps can use QVGLitePixmapData; bitmaps must use raster.
+ if (type == QPixmapData::PixmapType)
+ return new QVGPixmapData(type);
+ else
+ return new QRasterPixmapData(type);
+#else
+ return new QRasterPixmapData(type);
+#endif
+}
+
+QWindowSurface *QVGLiteGraphicsSystem::createWindowSurface(QWidget *widget) const
+{
+ if (widget->windowType() == Qt::Desktop)
+ return 0; // Don't create an explicit window surface for the destkop.
+ if (surface) {
+ qWarning() << "QVGLiteGraphicsSystem: only one window surface "
+ "is supported at a time";
+ return 0;
+ }
+ surface = new QVGLiteWindowSurface
+ (const_cast<QVGLiteGraphicsSystem *>(this), widget);
+ return surface;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/openvglite/qgraphicssystem_vglite.h b/src/plugins/platforms/openvglite/qgraphicssystem_vglite.h
new file mode 100644
index 0000000000..512793d98d
--- /dev/null
+++ b/src/plugins/platforms/openvglite/qgraphicssystem_vglite.h
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 QGRAPHICSSYSTEM_VGLITE_H
+#define QGRAPHICSSYSTEM_VGLITE_H
+
+#include <QtGui/private/qgraphicssystem_p.h>
+#include <QtGui/private/qegl_p.h>
+#include <QtGui/qimage.h>
+
+QT_BEGIN_NAMESPACE
+
+class QVGLiteWindowSurface;
+
+class QVGLiteGraphicsSystem : public QGraphicsSystem,
+ public QGraphicsSystemScreen
+{
+public:
+ QVGLiteGraphicsSystem();
+ ~QVGLiteGraphicsSystem();
+
+ QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
+ QWindowSurface *createWindowSurface(QWidget *widget) const;
+ QList<QGraphicsSystemScreen *> screens() const { return mScreens; }
+
+ QRect geometry() const { return QRect(0, 0, w, h); }
+ int depth() const { return d; }
+ QImage::Format format() const { return screenFormat; }
+ QSize physicalSize() const { return QSize(physWidth, physHeight); }
+
+private:
+ friend class QVGLiteWindowSurface;
+
+ int w;
+ int h;
+ int d;
+
+ int dw;
+ int dh;
+
+ int physWidth;
+ int physHeight;
+
+ mutable QVGLiteWindowSurface *surface;
+ QEglContext *context;
+ EGLSurface rootWindow;
+ QImage::Format screenFormat;
+ bool preservedSwap;
+
+ QList<QGraphicsSystemScreen *> mScreens;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/openvglite/qwindowsurface_vglite.cpp b/src/plugins/platforms/openvglite/qwindowsurface_vglite.cpp
new file mode 100644
index 0000000000..c73e35ac63
--- /dev/null
+++ b/src/plugins/platforms/openvglite/qwindowsurface_vglite.cpp
@@ -0,0 +1,131 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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 "qwindowsurface_vglite.h"
+#include "qgraphicssystem_vglite.h"
+#include <QtOpenVG/qvg.h>
+#include <QtOpenVG/private/qvg_p.h>
+#include <QtOpenVG/private/qpaintengine_vg_p.h>
+
+QT_BEGIN_NAMESPACE
+
+QVGLiteWindowSurface::QVGLiteWindowSurface
+ (QVGLiteGraphicsSystem *gs, QWidget *window)
+ : QWindowSurface(window), graphicsSystem(gs),
+ isPaintingActive(false), engine(0)
+{
+}
+
+QVGLiteWindowSurface::~QVGLiteWindowSurface()
+{
+ graphicsSystem->surface = 0;
+ if (engine)
+ qt_vg_destroy_paint_engine(engine);
+}
+
+QPaintDevice *QVGLiteWindowSurface::paintDevice()
+{
+ qt_vg_make_current(graphicsSystem->context, graphicsSystem->rootWindow);
+ isPaintingActive = true;
+ // TODO: clear the parts of the back buffer that are not
+ // covered by the window surface to black.
+ return this;
+}
+
+void QVGLiteWindowSurface::flush(QWidget *widget, const QRegion &region, const QPoint &offset)
+{
+ Q_UNUSED(widget);
+ Q_UNUSED(region);
+ Q_UNUSED(offset);
+ QEglContext *context = graphicsSystem->context;
+ if (context) {
+ if (!isPaintingActive)
+ qt_vg_make_current(context, graphicsSystem->rootWindow);
+ context->swapBuffers();
+ qt_vg_done_current(context);
+ context->setSurface(EGL_NO_SURFACE);
+ isPaintingActive = false;
+ }
+}
+
+void QVGLiteWindowSurface::setGeometry(const QRect &rect)
+{
+ QWindowSurface::setGeometry(rect);
+}
+
+bool QVGLiteWindowSurface::scroll(const QRegion &area, int dx, int dy)
+{
+ return QWindowSurface::scroll(area, dx, dy);
+}
+
+void QVGLiteWindowSurface::beginPaint(const QRegion &region)
+{
+ Q_UNUSED(region);
+}
+
+void QVGLiteWindowSurface::endPaint(const QRegion &region)
+{
+ Q_UNUSED(region);
+}
+
+QPaintEngine *QVGLiteWindowSurface::paintEngine() const
+{
+ if (!engine)
+ engine = qt_vg_create_paint_engine();
+ return engine;
+}
+
+// We need to get access to QWidget::metric() from QVGLiteWindowSurface::metric,
+// but it is not a friend of QWidget. To get around this, we create a
+// fake QX11PaintEngine class, which is a friend.
+class QX11PaintEngine
+{
+public:
+ static int metric(const QWidget *widget, QPaintDevice::PaintDeviceMetric met)
+ {
+ return widget->metric(met);
+ }
+};
+
+int QVGLiteWindowSurface::metric(PaintDeviceMetric met) const
+{
+ return QX11PaintEngine::metric(window(), met);
+}
diff --git a/src/plugins/platforms/openvglite/qwindowsurface_vglite.h b/src/plugins/platforms/openvglite/qwindowsurface_vglite.h
new file mode 100644
index 0000000000..59faba8c7a
--- /dev/null
+++ b/src/plugins/platforms/openvglite/qwindowsurface_vglite.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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$
+**
+****************************************************************************/
+
+#ifndef QWINDOWSURFACE_VGLITE_H
+#define QWINDOWSURFACE_VGLITE_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 <QtGui/private/qwindowsurface_p.h>
+#include <QtGui/private/qegl_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QVGLiteGraphicsSystem;
+class QVGPaintEngine;
+
+class Q_OPENVG_EXPORT QVGLiteWindowSurface : public QWindowSurface, public QPaintDevice
+{
+public:
+ QVGLiteWindowSurface(QVGLiteGraphicsSystem *gs, QWidget *window);
+ ~QVGLiteWindowSurface();
+
+ QPaintDevice *paintDevice();
+ void flush(QWidget *widget, const QRegion &region, const QPoint &offset);
+ void setGeometry(const QRect &rect);
+ bool scroll(const QRegion &area, int dx, int dy);
+
+ void beginPaint(const QRegion &region);
+ void endPaint(const QRegion &region);
+
+ QPaintEngine *paintEngine() const;
+
+protected:
+ int metric(PaintDeviceMetric metric) const;
+
+private:
+ QVGLiteGraphicsSystem *graphicsSystem;
+ bool isPaintingActive;
+ mutable QVGPaintEngine *engine;
+};
+
+QT_END_NAMESPACE
+
+#endif // QWINDOWSURFACE_VGLITE_H
diff --git a/src/plugins/platforms/platforms.pro b/src/plugins/platforms/platforms.pro
new file mode 100644
index 0000000000..26ccd44eda
--- /dev/null
+++ b/src/plugins/platforms/platforms.pro
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+
+SUBDIRS += minimal
+
diff --git a/src/plugins/platforms/qvfb/main.cpp b/src/plugins/platforms/qvfb/main.cpp
new file mode 100644
index 0000000000..997e544baa
--- /dev/null
+++ b/src/plugins/platforms/qvfb/main.cpp
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <QPlatformIntegrationPlugin>
+#include "qvfbintegration.h"
+#include <qstringlist.h>
+
+QT_BEGIN_NAMESPACE
+
+class QVFbIntegrationPlugin : public QPlatformIntegrationPlugin
+{
+public:
+ QStringList keys() const;
+ QPlatformIntegration *create(const QString&, const QStringList&);
+};
+
+QStringList QVFbIntegrationPlugin::keys() const
+{
+ QStringList list;
+ list << "QVFb";
+ return list;
+}
+
+QPlatformIntegration* QVFbIntegrationPlugin::create(const QString& system, const QStringList& paramList)
+{
+ Q_UNUSED(paramList);
+ if (system.toLower() == "qvfb")
+ return new QVFbIntegration(paramList);
+
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(qvfb, QVFbIntegrationPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/qvfb/qvfb.pro b/src/plugins/platforms/qvfb/qvfb.pro
new file mode 100644
index 0000000000..d2b332a6d5
--- /dev/null
+++ b/src/plugins/platforms/qvfb/qvfb.pro
@@ -0,0 +1,13 @@
+TARGET = qvfbintegration
+include(../../qpluginbase.pri)
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
+
+
+SOURCES = main.cpp qvfbintegration.cpp qvfbwindowsurface.cpp
+HEADERS = qvfbintegration.h qvfbwindowsurface.h
+
+include(../fontdatabases/genericunix/genericunix.pri)
+
+target.path += $$[QT_INSTALL_PLUGINS]/platforms
+INSTALLS += target
diff --git a/src/plugins/platforms/qvfb/qvfbintegration.cpp b/src/plugins/platforms/qvfb/qvfbintegration.cpp
new file mode 100644
index 0000000000..0cc3938d17
--- /dev/null
+++ b/src/plugins/platforms/qvfb/qvfbintegration.cpp
@@ -0,0 +1,448 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <stdlib.h>
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <private/qcore_unix_p.h> // overrides QT_OPEN
+
+#include <qvfbhdr.h>
+#include <qsocketnotifier.h>
+
+#include "qvfbintegration.h"
+#include "qvfbwindowsurface.h"
+#include <QtGui/private/qpixmap_raster_p.h>
+#include <QtCore/qdebug.h>
+#include <QMouseEvent>
+
+#include <qsocketnotifier.h>
+#include <QApplication>
+#include <QWindowSystemInterface>
+
+#include "qgenericunixfontdatabase.h"
+
+QT_BEGIN_NAMESPACE
+
+
+class QVFbScreenKeyboardHandler : public QObject
+{
+ Q_OBJECT
+public:
+ QVFbScreenKeyboardHandler(int displayId);
+ ~QVFbScreenKeyboardHandler();
+
+private slots:
+ void readKeyboardData();
+
+private:
+ int kbdFD;
+ int kbdIdx;
+ int kbdBufferLen;
+ unsigned char *kbdBuffer;
+ QSocketNotifier *keyNotifier;
+};
+
+QVFbScreenKeyboardHandler::QVFbScreenKeyboardHandler(int displayId)
+{
+ const QString keyboardDev = QT_VFB_KEYBOARD_PIPE(displayId);
+
+
+ kbdFD = -1;
+ kbdIdx = 0;
+ kbdBufferLen = sizeof(QVFbKeyData) * 5;
+ kbdBuffer = new unsigned char [kbdBufferLen];
+
+ kbdFD = QT_OPEN(keyboardDev.toLatin1().constData(), O_RDWR | O_NDELAY);
+
+ if (kbdFD == -1) {
+ perror("QVFbScreenKeyboardHandler");
+ qWarning("QVFbScreenKeyboardHandler: Unable to open device %s",
+ qPrintable(keyboardDev));
+ return;
+ }
+
+ // Clear pending input
+ char buf[2];
+ while (QT_READ(kbdFD, buf, 1) > 0) { }
+
+ keyNotifier = new QSocketNotifier(kbdFD, QSocketNotifier::Read, this);
+ connect(keyNotifier, SIGNAL(activated(int)),this, SLOT(readKeyboardData()));
+
+}
+
+QVFbScreenKeyboardHandler::~QVFbScreenKeyboardHandler()
+{
+ if (kbdFD >= 0)
+ QT_CLOSE(kbdFD);
+ delete [] kbdBuffer;
+}
+
+
+void QVFbScreenKeyboardHandler::readKeyboardData()
+{
+ int n;
+ do {
+ n = QT_READ(kbdFD, kbdBuffer+kbdIdx, kbdBufferLen - kbdIdx);
+ if (n > 0)
+ kbdIdx += n;
+ } while (n > 0);
+
+ int idx = 0;
+ while (kbdIdx - idx >= (int)sizeof(QVFbKeyData)) {
+ QVFbKeyData *kd = (QVFbKeyData *)(kbdBuffer + idx);
+ if (kd->unicode == 0 && kd->keycode == 0 && kd->modifiers == 0 && kd->press) {
+ // magic exit key
+ qWarning("Instructed to quit by Virtual Keyboard");
+ qApp->quit();
+ }
+
+ //QWSServer::processKeyEvent(kd->unicode ? kd->unicode : 0xffff, kd->keycode, kd->modifiers, kd->press, kd->repeat);
+
+ QEvent::Type type = kd->press ? QEvent::KeyPress : QEvent::KeyRelease;
+
+ QString text;
+ if (kd->unicode && kd->unicode != 0xffff)
+ text += QChar(kd->unicode);
+
+// qDebug() << "readKeyboardData" << type << hex << kd->keycode << kd->modifiers << text;
+
+ QWindowSystemInterface::handleKeyEvent(0, type, kd->keycode, kd->modifiers, text, kd->repeat, int(text.length()));
+ idx += sizeof(QVFbKeyData);
+ }
+
+ int surplus = kbdIdx - idx;
+ for (int i = 0; i < surplus; i++)
+ kbdBuffer[i] = kbdBuffer[idx+i];
+ kbdIdx = surplus;
+}
+
+
+
+
+class QVFbScreenMouseHandler : public QObject
+{
+ Q_OBJECT
+public:
+ QVFbScreenMouseHandler(int displayId);
+ ~QVFbScreenMouseHandler();
+
+private slots:
+ void readMouseData();
+
+private:
+ int mouseFD;
+ int mouseIdx;
+ enum {mouseBufSize = 128};
+ uchar mouseBuf[mouseBufSize];
+ QSocketNotifier *mouseNotifier;
+
+ int oldButtonState;
+};
+
+QVFbScreenMouseHandler::QVFbScreenMouseHandler(int displayId)
+{
+ QString mouseDev = QT_VFB_MOUSE_PIPE(displayId);
+
+ mouseFD = QT_OPEN(mouseDev.toLatin1().constData(), O_RDWR | O_NDELAY);
+
+ if (mouseFD == -1) {
+ perror("QVFbMouseHandler::QVFbMouseHandler");
+ qWarning("QVFbMouseHander: Unable to open device %s",
+ qPrintable(mouseDev));
+ return;
+ }
+
+ // Clear pending input
+ char buf[2];
+ while (QT_READ(mouseFD, buf, 1) > 0) { }
+
+ mouseIdx = 0;
+ oldButtonState = 0;
+ mouseNotifier = new QSocketNotifier(mouseFD, QSocketNotifier::Read, this);
+ connect(mouseNotifier, SIGNAL(activated(int)),this, SLOT(readMouseData()));
+}
+
+
+QVFbScreenMouseHandler::~QVFbScreenMouseHandler()
+{
+ if (mouseFD >= 0)
+ QT_CLOSE(mouseFD);
+}
+
+void QVFbScreenMouseHandler::readMouseData()
+{
+ int n;
+ do {
+ n = QT_READ(mouseFD, mouseBuf+mouseIdx, mouseBufSize-mouseIdx);
+ if (n > 0)
+ mouseIdx += n;
+ } while (n > 0);
+
+ int idx = 0;
+ static const int packetsize = sizeof(QPoint) + 2*sizeof(int);
+ while (mouseIdx-idx >= packetsize) {
+ uchar *mb = mouseBuf+idx;
+ QPoint mousePos = *reinterpret_cast<QPoint *>(mb);
+ mb += sizeof(QPoint);
+ int bstate = *reinterpret_cast<int *>(mb);
+ mb += sizeof(int);
+ //int wheel = *reinterpret_cast<int *>(mb);
+
+ int button = bstate ^ oldButtonState;
+ QEvent::Type type = QEvent::MouseMove;
+
+ if (button) {
+ type = (button & bstate) ? QEvent::MouseButtonPress : QEvent::MouseButtonRelease;
+ }
+ QWindowSystemInterface::handleMouseEvent(0, mousePos, mousePos, Qt::MouseButtons(bstate));
+
+// qDebug() << "readMouseData" << mousePos << button << bstate << oldButtonState << type;
+
+ oldButtonState = bstate;
+
+ idx += packetsize;
+ }
+
+ int surplus = mouseIdx - idx;
+ for (int i = 0; i < surplus; i++)
+ mouseBuf[i] = mouseBuf[idx+i];
+ mouseIdx = surplus;
+
+}
+
+
+class QVFbScreenPrivate
+{
+public:
+ QVFbScreenPrivate(int id)
+ : shmrgn(0), hdr(0), data(0), mouseHandler(0), keyboardHandler(0)
+ {
+ displayId = id;
+ connect(displayId);
+ }
+
+ ~QVFbScreenPrivate() { disconnect(); }
+ void setDirty(const QRect &r);
+
+ bool connect(int displayId);
+ void disconnect();
+
+ QImage *screenImage() { return &img; }
+ QSize screenSize() { return img.size(); }
+
+ int depth() const { return img.depth(); }
+ QImage::Format format() const { return img.format(); }
+
+private:
+ unsigned char *shmrgn;
+ QVFbHeader *hdr;
+ uchar *data;
+ QVFbScreenMouseHandler *mouseHandler;
+ QVFbScreenKeyboardHandler *keyboardHandler;
+ int displayId;
+
+ QImage img;
+};
+
+
+void QVFbScreenPrivate::setDirty(const QRect &r)
+{
+ hdr->dirty = true;
+ hdr->update = hdr->update.united(r);
+}
+
+
+bool QVFbScreenPrivate::connect(int displayId)
+{
+ qDebug() << "QVFbScreenPrivate::connect" << displayId;
+ key_t key = ftok(QT_VFB_MOUSE_PIPE(displayId).toLatin1(), 'b');
+
+ if (key == -1)
+ return false;
+
+
+ int shmId = shmget(key, 0, 0);
+ if (shmId != -1)
+ shmrgn = (unsigned char *)shmat(shmId, 0, 0);
+ else
+ return false;
+
+ if ((long)shmrgn == -1 || shmrgn == 0) {
+ qDebug("No shmrgn %ld", (long)shmrgn);
+ return false;
+ }
+
+ hdr = (QVFbHeader *)shmrgn;
+ data = shmrgn + hdr->dataoffset;
+
+ int w = hdr->width;
+ int h = hdr->height;
+ int d = hdr->depth;
+ int lstep = hdr->linestep;
+
+ QImage::Format format = QImage::Format_Invalid;
+ if (d == 32)
+ format = QImage::Format_ARGB32_Premultiplied;
+ else if (d == 16)
+ format = QImage::Format_RGB16;
+
+
+ if (format == QImage::Format_Invalid) {
+ img = QImage();
+ return false;
+ }
+
+ img = QImage(data, w, h, lstep, format);
+
+ qDebug("connected %dx%d %d bpp", w, h, d);
+
+
+ mouseHandler = new QVFbScreenMouseHandler(displayId);
+ keyboardHandler = new QVFbScreenKeyboardHandler(displayId);
+ return true;
+}
+
+void QVFbScreenPrivate::disconnect()
+{
+ if ((long)shmrgn != -1 && shmrgn) {
+ shmdt((char*)shmrgn);
+ shmrgn = 0;
+ }
+ delete mouseHandler;
+ mouseHandler = 0;
+ delete keyboardHandler;
+ keyboardHandler = 0;
+}
+
+
+QVFbScreen::QVFbScreen(int id)
+{
+ d_ptr = new QVFbScreenPrivate(id);
+}
+
+
+QVFbScreen::~QVFbScreen()
+{
+ delete d_ptr;
+}
+
+void QVFbScreen::setDirty(const QRect &rect)
+{
+ d_ptr->setDirty(rect);
+}
+
+
+
+QRect QVFbScreen::geometry() const {
+ return QRect(QPoint(), d_ptr->screenSize());
+}
+
+
+int QVFbScreen::depth() const
+{
+ return d_ptr->depth();
+}
+
+QImage::Format QVFbScreen::format() const
+{
+ return d_ptr->format();
+}
+
+QSize QVFbScreen::physicalSize() const {
+ return (d_ptr->screenSize()*254)/720;
+}
+
+#if 0
+int QVFbScreen::linestep() const {
+ return d_ptr->screenImage() ? d_ptr->screenImage()->bytesPerLine() : 0;
+}
+
+uchar *QVFbScreen::base() const {
+ return d_ptr->screenImage() ? d_ptr->screenImage()->bits() : 0;
+}
+#endif
+
+QImage *QVFbScreen::screenImage()
+{
+ return d_ptr->screenImage();
+}
+
+QVFbIntegration::QVFbIntegration(const QStringList &paramList)
+ : mFontDb(new QGenericUnixFontDatabase())
+{
+ int displayId = 0;
+ if (paramList.length() > 0)
+ displayId = paramList.at(0).toInt();
+
+ mPrimaryScreen = new QVFbScreen(displayId);
+
+ mScreens.append(mPrimaryScreen);
+}
+
+QPixmapData *QVFbIntegration::createPixmapData(QPixmapData::PixelType type) const
+{
+ return new QRasterPixmapData(type);
+}
+
+QWindowSurface *QVFbIntegration::createWindowSurface(QWidget *widget, WId) const
+{
+ return new QVFbWindowSurface(mPrimaryScreen, widget);
+}
+
+
+QPlatformWindow *QVFbIntegration::createPlatformWindow(QWidget *widget, WId) const
+{
+ return new QVFbWindow(mPrimaryScreen, widget);
+}
+
+QPlatformFontDatabase *QVFbIntegration::fontDatabase() const
+{
+ return mFontDb;
+}
+
+QT_END_NAMESPACE
+
+#include "qvfbintegration.moc"
diff --git a/src/plugins/platforms/qvfb/qvfbintegration.h b/src/plugins/platforms/qvfb/qvfbintegration.h
new file mode 100644
index 0000000000..198a45cb27
--- /dev/null
+++ b/src/plugins/platforms/qvfb/qvfbintegration.h
@@ -0,0 +1,100 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 QGRAPHICSSYSTEM_QVFB_H
+#define QGRAPHICSSYSTEM_QVFB_H
+
+#include <QPlatformScreen>
+#include <QPlatformIntegration>
+
+QT_BEGIN_NAMESPACE
+
+
+class QVFbScreenPrivate;
+
+class QVFbScreen : public QPlatformScreen
+{
+public:
+ QVFbScreen(int id);
+ ~QVFbScreen();
+
+ QRect geometry() const;
+ int depth() const;
+ QImage::Format format() const;
+ QSize physicalSize() const;
+
+ QImage *screenImage();
+
+ void setDirty(const QRect &rect);
+
+public:
+
+ QVFbScreenPrivate *d_ptr;
+};
+
+class QVFbIntegrationPrivate;
+
+
+class QVFbIntegration : public QPlatformIntegration
+{
+public:
+ QVFbIntegration(const QStringList &paramList);
+
+ QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
+ QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId) const;
+ QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const;
+
+ QList<QPlatformScreen *> screens() const { return mScreens; }
+
+ QPlatformFontDatabase *fontDatabase() const;
+
+private:
+ QVFbScreen *mPrimaryScreen;
+ QList<QPlatformScreen *> mScreens;
+ QPlatformFontDatabase *mFontDb;
+};
+
+
+
+QT_END_NAMESPACE
+
+
+#endif
diff --git a/src/plugins/platforms/qvfb/qvfbwindowsurface.cpp b/src/plugins/platforms/qvfb/qvfbwindowsurface.cpp
new file mode 100644
index 0000000000..6699072b4d
--- /dev/null
+++ b/src/plugins/platforms/qvfb/qvfbwindowsurface.cpp
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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 "qvfbwindowsurface.h"
+#include "qvfbintegration.h"
+#include <QtCore/qdebug.h>
+#include <QtGui/qpainter.h>
+#include <private/qapplication_p.h>
+
+QT_BEGIN_NAMESPACE
+
+QVFbWindowSurface::QVFbWindowSurface(//QVFbIntegration *graphicsSystem,
+ QVFbScreen *screen, QWidget *window)
+ : QWindowSurface(window),
+ mScreen(screen)
+{
+}
+
+QVFbWindowSurface::~QVFbWindowSurface()
+{
+}
+
+QPaintDevice *QVFbWindowSurface::paintDevice()
+{
+ return mScreen->screenImage();
+}
+
+void QVFbWindowSurface::flush(QWidget *widget, const QRegion &region, const QPoint &offset)
+{
+ Q_UNUSED(widget);
+ Q_UNUSED(offset);
+
+// QRect rect = geometry();
+// QPoint topLeft = rect.topLeft();
+
+ mScreen->setDirty(region.boundingRect());
+}
+
+void QVFbWindowSurface::resize(const QSize&)
+{
+
+// any size you like as long as it's full-screen...
+
+ QRect rect(mScreen->availableGeometry());
+ QWindowSurface::resize(rect.size());
+}
+
+
+QVFbWindow::QVFbWindow(QVFbScreen *screen, QWidget *window)
+ : QPlatformWindow(window),
+ mScreen(screen)
+{
+}
+
+
+void QVFbWindow::setGeometry(const QRect &)
+{
+
+// any size you like as long as it's full-screen...
+
+ QRect rect(mScreen->availableGeometry());
+ QWindowSystemInterface::handleGeometryChange(this->widget(), rect);
+
+ QPlatformWindow::setGeometry(rect);
+}
+
+
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/qvfb/qvfbwindowsurface.h b/src/plugins/platforms/qvfb/qvfbwindowsurface.h
new file mode 100644
index 0000000000..9228189eaf
--- /dev/null
+++ b/src/plugins/platforms/qvfb/qvfbwindowsurface.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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$
+**
+****************************************************************************/
+
+#ifndef QWINDOWSURFACE_QVFB_H
+#define QWINDOWSURFACE_QVFB_H
+
+#include <QtGui/private/qwindowsurface_p.h>
+#include <QPlatformWindow>
+
+QT_BEGIN_NAMESPACE
+
+class QVFbIntegration;
+class QVFbScreen;
+
+class QVFbWindowSurface : public QWindowSurface
+{
+public:
+ QVFbWindowSurface(QVFbScreen *screen, QWidget *window);
+ ~QVFbWindowSurface();
+
+ QPaintDevice *paintDevice();
+ void flush(QWidget *widget, const QRegion &region, const QPoint &offset);
+ void resize(const QSize &size);
+
+private:
+ QVFbScreen *mScreen;
+};
+
+class QVFbWindow : public QPlatformWindow
+{
+public:
+ QVFbWindow(QVFbScreen *screen, QWidget *window);
+ void setGeometry(const QRect &rect);
+
+private:
+ QVFbScreen *mScreen;
+};
+
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/testlite/main.cpp b/src/plugins/platforms/testlite/main.cpp
new file mode 100644
index 0000000000..2f6aa8b348
--- /dev/null
+++ b/src/plugins/platforms/testlite/main.cpp
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <QtGui/QPlatformIntegrationPlugin>
+#include "qtestliteintegration.h"
+
+QT_BEGIN_NAMESPACE
+
+class QTestLiteIntegrationPlugin : public QPlatformIntegrationPlugin
+{
+public:
+ QStringList keys() const;
+ QPlatformIntegration *create(const QString&, const QStringList&);
+};
+
+QStringList QTestLiteIntegrationPlugin::keys() const
+{
+ QStringList list;
+ list << "TestLite";
+#ifndef QT_NO_OPENGL
+ list << "TestLiteGL";
+#endif
+ return list;
+}
+
+QPlatformIntegration* QTestLiteIntegrationPlugin::create(const QString& system, const QStringList& paramList)
+{
+ Q_UNUSED(paramList);
+ if (system.toLower() == "testlite")
+ return new QTestLiteIntegration;
+#ifndef QT_NO_OPENGL
+ if (system.toLower() == "testlitegl")
+ return new QTestLiteIntegration(true);
+#endif
+
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(testlite, QTestLiteIntegrationPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/testlite/qglxintegration.cpp b/src/plugins/platforms/testlite/qglxintegration.cpp
new file mode 100644
index 0000000000..e262d5b7a9
--- /dev/null
+++ b/src/plugins/platforms/testlite/qglxintegration.cpp
@@ -0,0 +1,370 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <QDebug>
+#include <QLibrary>
+#include <QGLFormat>
+
+#include "qtestlitewindow.h"
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <GL/glx.h>
+
+#include "qglxintegration.h"
+
+#if defined(Q_OS_LINUX) || defined(Q_OS_BSD4)
+#include <dlfcn.h>
+#endif
+
+QT_BEGIN_NAMESPACE
+
+QMutex QGLXGLContext::m_defaultSharedContextMutex(QMutex::Recursive);
+
+QVector<int> QGLXGLContext::buildSpec(const QPlatformWindowFormat &format)
+{
+ QVector<int> spec(48);
+ int i = 0;
+
+ spec[i++] = GLX_LEVEL;
+ spec[i++] = 0;
+ spec[i++] = GLX_DRAWABLE_TYPE; spec[i++] = GLX_WINDOW_BIT;
+
+ if (format.rgba()) {
+ spec[i++] = GLX_RENDER_TYPE; spec[i++] = GLX_RGBA_BIT;
+ spec[i++] = GLX_RED_SIZE; spec[i++] = (format.redBufferSize() == -1) ? 1 : format.redBufferSize();
+ spec[i++] = GLX_GREEN_SIZE; spec[i++] = (format.greenBufferSize() == -1) ? 1 : format.greenBufferSize();
+ spec[i++] = GLX_BLUE_SIZE; spec[i++] = (format.blueBufferSize() == -1) ? 1 : format.blueBufferSize();
+ if (format.alpha()) {
+ spec[i++] = GLX_ALPHA_SIZE; spec[i++] = (format.alphaBufferSize() == -1) ? 1 : format.alphaBufferSize();
+ }
+
+ spec[i++] = GLX_ACCUM_RED_SIZE; spec[i++] = (format.accumBufferSize() == -1) ? 1 : format.accumBufferSize();
+ spec[i++] = GLX_ACCUM_GREEN_SIZE; spec[i++] = (format.accumBufferSize() == -1) ? 1 : format.accumBufferSize();
+ spec[i++] = GLX_ACCUM_BLUE_SIZE; spec[i++] = (format.accumBufferSize() == -1) ? 1 : format.accumBufferSize();
+
+ if (format.alpha()) {
+ spec[i++] = GLX_ACCUM_ALPHA_SIZE; spec[i++] = (format.accumBufferSize() == -1) ? 1 : format.accumBufferSize();
+ }
+
+ } else {
+ spec[i++] = GLX_RENDER_TYPE; spec[i++] = GLX_COLOR_INDEX_BIT; //I'm really not sure if this works....
+ spec[i++] = GLX_BUFFER_SIZE; spec[i++] = 8;
+ }
+
+ spec[i++] = GLX_DOUBLEBUFFER; spec[i++] = format.doubleBuffer() ? True : False;
+ spec[i++] = GLX_STEREO; spec[i++] = format.stereo() ? True : False;
+
+ if (format.depth()) {
+ spec[i++] = GLX_DEPTH_SIZE; spec[i++] = (format.depthBufferSize() == -1) ? 1 : format.depthBufferSize();
+ }
+
+ if (format.stencil()) {
+ spec[i++] = GLX_STENCIL_SIZE; spec[i++] = (format.stencilBufferSize() == -1) ? 1 : format.stencilBufferSize();
+ }
+ if (format.sampleBuffers()) {
+ spec[i++] = GLX_SAMPLE_BUFFERS_ARB;
+ spec[i++] = 1;
+ spec[i++] = GLX_SAMPLES_ARB;
+ spec[i++] = format.samples() == -1 ? 4 : format.samples();
+ }
+
+ spec[i++] = XNone;
+ return spec;
+}
+
+GLXFBConfig QGLXGLContext::findConfig(const MyDisplay *xd, const QPlatformWindowFormat &format)
+{
+ bool reduced = true;
+ GLXFBConfig chosenConfig = 0;
+ QPlatformWindowFormat reducedFormat = format;
+ while (!chosenConfig && reduced) {
+ QVector<int> spec = buildSpec(reducedFormat);
+ int confcount = 0;
+ GLXFBConfig *configs;
+ configs = glXChooseFBConfig(xd->display,xd->screen,spec.constData(),&confcount);
+ if (confcount)
+ {
+ for (int i = 0; i < confcount; i++) {
+ chosenConfig = configs[i];
+ // Make sure we try to get an ARGB visual if the format asked for an alpha:
+ if (reducedFormat.alpha()) {
+ int alphaSize;
+ glXGetFBConfigAttrib(xd->display,configs[i],GLX_ALPHA_SIZE,&alphaSize);
+ if (alphaSize > 0)
+ break;
+ } else {
+ break; // Just choose the first in the list if there's no alpha requested
+ }
+ }
+
+ XFree(configs);
+ }
+ reducedFormat = reducePlatformWindowFormat(reducedFormat,&reduced);
+ }
+
+ if (!chosenConfig)
+ qWarning("Warning no context created");
+
+ return chosenConfig;
+}
+
+XVisualInfo *QGLXGLContext::findVisualInfo(const MyDisplay *xd, const QPlatformWindowFormat &format)
+{
+ GLXFBConfig config = QGLXGLContext::findConfig(xd,format);
+ XVisualInfo *visualInfo = glXGetVisualFromFBConfig(xd->display,config);
+ return visualInfo;
+}
+
+QPlatformWindowFormat QGLXGLContext::platformWindowFromGLXFBConfig(Display *display, GLXFBConfig config, GLXContext ctx)
+{
+ QPlatformWindowFormat format;
+ int redSize = 0;
+ int greenSize = 0;
+ int blueSize = 0;
+ int alphaSize = 0;
+ int depthSize = 0;
+ int stencilSize = 0;
+ int sampleBuffers = 0;
+ int sampleCount = 0;
+ int level = 0;
+ int rgba = 0;
+ int stereo = 0;
+ int accumSizeA = 0;
+ int accumSizeR = 0;
+ int accumSizeG = 0;
+ int accumSizeB = 0;
+
+ XVisualInfo *vi = glXGetVisualFromFBConfig(display,config);
+ glXGetConfig(display,vi,GLX_RGBA,&rgba);
+ XFree(vi);
+ glXGetFBConfigAttrib(display, config, GLX_RED_SIZE, &redSize);
+ glXGetFBConfigAttrib(display, config, GLX_GREEN_SIZE, &greenSize);
+ glXGetFBConfigAttrib(display, config, GLX_BLUE_SIZE, &blueSize);
+ glXGetFBConfigAttrib(display, config, GLX_ALPHA_SIZE, &alphaSize);
+ glXGetFBConfigAttrib(display, config, GLX_DEPTH_SIZE, &depthSize);
+ glXGetFBConfigAttrib(display, config, GLX_STENCIL_SIZE, &stencilSize);
+ glXGetFBConfigAttrib(display, config, GLX_SAMPLES, &sampleBuffers);
+ glXGetFBConfigAttrib(display, config, GLX_LEVEL, &level);
+ glXGetFBConfigAttrib(display, config, GLX_STEREO, &stereo);
+ glXGetFBConfigAttrib(display, config, GLX_ACCUM_ALPHA_SIZE, &accumSizeA);
+ glXGetFBConfigAttrib(display, config, GLX_ACCUM_RED_SIZE, &accumSizeR);
+ glXGetFBConfigAttrib(display, config, GLX_ACCUM_GREEN_SIZE, &accumSizeG);
+ glXGetFBConfigAttrib(display, config, GLX_ACCUM_BLUE_SIZE, &accumSizeB);
+
+ format.setRedBufferSize(redSize);
+ format.setGreenBufferSize(greenSize);
+ format.setBlueBufferSize(blueSize);
+ format.setAlphaBufferSize(alphaSize);
+ format.setDepthBufferSize(depthSize);
+ format.setStencilBufferSize(stencilSize);
+ format.setSampleBuffers(sampleBuffers);
+ if (format.sampleBuffers()) {
+ glXGetFBConfigAttrib(display, config, GLX_SAMPLES_ARB, &sampleCount);
+ format.setSamples(sampleCount);
+ }
+
+ format.setDirectRendering(glXIsDirect(display, ctx));
+ format.setRgba(rgba);
+ format.setStereo(stereo);
+ format.setAccumBufferSize(accumSizeB);
+
+ return format;
+}
+
+QPlatformWindowFormat QGLXGLContext::reducePlatformWindowFormat(const QPlatformWindowFormat &format, bool *reduced)
+{
+ QPlatformWindowFormat retFormat = format;
+ *reduced = true;
+
+ if (retFormat.sampleBuffers()) {
+ retFormat.setSampleBuffers(false);
+ } else if (retFormat.stereo()) {
+ retFormat.setStereo(false);
+ } else if (retFormat.accum()) {
+ retFormat.setAccum(false);
+ }else if (retFormat.stencil()) {
+ retFormat.setStencil(false);
+ }else if (retFormat.alpha()) {
+ retFormat.setAlpha(false);
+ }else if (retFormat.depth()) {
+ retFormat.setDepth(false);
+ }else if (retFormat.doubleBuffer()) {
+ retFormat.setDoubleBuffer(false);
+ }else{
+ *reduced = false;
+ }
+ return retFormat;
+}
+
+QGLXGLContext::QGLXGLContext(Window window, MyDisplay *xd, const QPlatformWindowFormat &format)
+ : QPlatformGLContext()
+ , m_xd(xd)
+ , m_drawable((Drawable)window)
+ , m_context(0)
+{
+
+ QPlatformGLContext *sharePlatformContext;
+ if (format.useDefaultSharedContext()) {
+ if (!QPlatformGLContext::defaultSharedContext()) {
+ if (m_defaultSharedContextMutex.tryLock()){
+ createDefaultSharedContex(xd);
+ m_defaultSharedContextMutex.unlock();
+ } else {
+ m_defaultSharedContextMutex.lock(); //wait to the the shared context is created
+ m_defaultSharedContextMutex.unlock();
+ }
+ }
+ sharePlatformContext = QPlatformGLContext::defaultSharedContext();
+ } else {
+ sharePlatformContext = format.sharedGLContext();
+ }
+ GLXContext shareGlxContext = 0;
+ if (sharePlatformContext)
+ shareGlxContext = static_cast<QGLXGLContext*>(sharePlatformContext)->glxContext();
+
+ GLXFBConfig config = findConfig(xd,format);
+ m_context = glXCreateNewContext(xd->display,config,GLX_RGBA_TYPE,shareGlxContext,TRUE);
+ m_windowFormat = QGLXGLContext::platformWindowFromGLXFBConfig(xd->display,config,m_context);
+
+#ifdef MYX11_DEBUG
+ qDebug() << "QGLXGLContext::create context" << m_context;
+#endif
+}
+
+QGLXGLContext::QGLXGLContext(MyDisplay *display, Drawable drawable, GLXContext context)
+ : QPlatformGLContext(), m_xd(display), m_drawable(drawable), m_context(context)
+{
+
+}
+
+QGLXGLContext::~QGLXGLContext()
+{
+ if (m_context) {
+ qDebug("Destroying GLX context 0x%p", m_context);
+ glXDestroyContext(m_xd->display, m_context);
+ }
+}
+
+void QGLXGLContext::createDefaultSharedContex(MyDisplay *xd)
+{
+ int x = 0;
+ int y = 0;
+ int w = 3;
+ int h = 3;
+
+ QPlatformWindowFormat format = QPlatformWindowFormat::defaultFormat();
+ GLXContext context;
+ GLXFBConfig config = findConfig(xd,format);
+ if (config) {
+ XVisualInfo *visualInfo = glXGetVisualFromFBConfig(xd->display,config);
+ Colormap cmap = XCreateColormap(xd->display,xd->rootWindow(),visualInfo->visual,AllocNone);
+ XSetWindowAttributes a;
+ a.colormap = cmap;
+ Window sharedWindow = XCreateWindow(xd->display, xd->rootWindow(),x, y, w, h,
+ 0, visualInfo->depth, InputOutput, visualInfo->visual,
+ CWColormap, &a);
+
+ context = glXCreateNewContext(xd->display,config,GLX_RGBA_TYPE,0,TRUE);
+ QPlatformGLContext *sharedContext = new QGLXGLContext(xd,sharedWindow,context);
+ QPlatformGLContext::setDefaultSharedContext(sharedContext);
+ } else {
+ qWarning("Warning no shared context created");
+ }
+}
+
+void QGLXGLContext::makeCurrent()
+{
+#ifdef MYX11_DEBUG
+ qDebug("QGLXGLContext::makeCurrent(window=0x%x, ctx=0x%x)", m_drawable, m_context);
+#endif
+ glXMakeCurrent(m_xd->display, m_drawable, m_context);
+}
+
+void QGLXGLContext::doneCurrent()
+{
+ glXMakeCurrent(m_xd->display, 0, 0);
+}
+
+void QGLXGLContext::swapBuffers()
+{
+ glXSwapBuffers(m_xd->display, m_drawable);
+}
+
+void* QGLXGLContext::getProcAddress(const QString& procName)
+{
+ typedef void *(*qt_glXGetProcAddressARB)(const GLubyte *);
+ static qt_glXGetProcAddressARB glXGetProcAddressARB = 0;
+ static bool resolved = false;
+
+ if (resolved && !glXGetProcAddressARB)
+ return 0;
+ if (!glXGetProcAddressARB) {
+ QList<QByteArray> glxExt = QByteArray(glXGetClientString(m_xd->display, GLX_EXTENSIONS)).split(' ');
+ if (glxExt.contains("GLX_ARB_get_proc_address")) {
+#if defined(Q_OS_LINUX) || defined(Q_OS_BSD4)
+ void *handle = dlopen(NULL, RTLD_LAZY);
+ if (handle) {
+ glXGetProcAddressARB = (qt_glXGetProcAddressARB) dlsym(handle, "glXGetProcAddressARB");
+ dlclose(handle);
+ }
+ if (!glXGetProcAddressARB)
+#endif
+ {
+ extern const QString qt_gl_library_name();
+// QLibrary lib(qt_gl_library_name());
+ QLibrary lib(QLatin1String("GL"));
+ glXGetProcAddressARB = (qt_glXGetProcAddressARB) lib.resolve("glXGetProcAddressARB");
+ }
+ }
+ resolved = true;
+ }
+ if (!glXGetProcAddressARB)
+ return 0;
+ return glXGetProcAddressARB(reinterpret_cast<const GLubyte *>(procName.toLatin1().data()));
+}
+
+QPlatformWindowFormat QGLXGLContext::platformWindowFormat() const
+{
+ return m_windowFormat;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/testlite/qglxintegration.h b/src/plugins/platforms/testlite/qglxintegration.h
new file mode 100644
index 0000000000..479be4b145
--- /dev/null
+++ b/src/plugins/platforms/testlite/qglxintegration.h
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 Q_GLX_CONTEXT_H
+#define Q_GLX_CONTEXT_H
+
+#include "qtestlitewindow.h"
+
+#include <QtGui/QPlatformGLContext>
+#include <QtGui/QPlatformWindowFormat>
+
+#include <QtCore/QMutex>
+
+#include <GL/glx.h>
+
+QT_BEGIN_NAMESPACE
+
+class MyDisplay;
+
+class QGLXGLContext : public QPlatformGLContext
+{
+public:
+ QGLXGLContext(Window window, MyDisplay *xd, const QPlatformWindowFormat &format);
+ ~QGLXGLContext();
+
+ virtual void makeCurrent();
+ virtual void doneCurrent();
+ virtual void swapBuffers();
+ virtual void* getProcAddress(const QString& procName);
+
+ GLXContext glxContext() {return m_context;}
+
+ QPlatformWindowFormat platformWindowFormat() const;
+
+ static XVisualInfo *findVisualInfo(const MyDisplay *xd, const QPlatformWindowFormat &format);
+private:
+ static GLXFBConfig findConfig(const MyDisplay *xd,const QPlatformWindowFormat &format);
+ static QVector<int> buildSpec(const QPlatformWindowFormat &format);
+ static QPlatformWindowFormat platformWindowFromGLXFBConfig(Display *display, GLXFBConfig config, GLXContext context);
+ static QPlatformWindowFormat reducePlatformWindowFormat(const QPlatformWindowFormat &format, bool *reduced);
+
+
+ MyDisplay *m_xd;
+ Drawable m_drawable;
+ GLXContext m_context;
+ QPlatformWindowFormat m_windowFormat;
+
+ QGLXGLContext (MyDisplay *display, Drawable drawable, GLXContext context);
+ static QMutex m_defaultSharedContextMutex;
+ static void createDefaultSharedContex(MyDisplay *xd);
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/testlite/qtestliteintegration.cpp b/src/plugins/platforms/testlite/qtestliteintegration.cpp
new file mode 100644
index 0000000000..68e9051118
--- /dev/null
+++ b/src/plugins/platforms/testlite/qtestliteintegration.cpp
@@ -0,0 +1,153 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qtestliteintegration.h"
+#include "qtestlitewindowsurface.h"
+#include <QtGui/private/qpixmap_raster_p.h>
+#include <QtCore/qdebug.h>
+
+#include <QPlatformCursor>
+
+#include "qtestlitewindow.h"
+#include "qgenericunixfontdatabase.h"
+
+#ifndef QT_NO_OPENGL
+#include <GL/glx.h>
+#include <private/qwindowsurface_gl_p.h>
+#include <private/qpixmapdata_gl_p.h>
+#endif //QT_NO_OPENGL
+
+QT_BEGIN_NAMESPACE
+
+class MyCursor : QPlatformCursor
+{
+public:
+ MyCursor(QPlatformScreen *screen) : QPlatformCursor(screen) {}
+
+ void changeCursor(QCursor * cursor, QWidget * widget) {
+ QTestLiteWindow *w = 0;
+ if (widget) {
+ QWidget *window = widget->window();
+ w = static_cast<QTestLiteWindow*>(window->platformWindow());
+ } else {
+ // No X11 cursor control when there is no widget under the cursor
+ return;
+ }
+
+ //qDebug() << "changeCursor" << widget << ws;
+ if (!w)
+ return;
+
+ w->setCursor(cursor);
+ }
+};
+
+
+QTestLiteIntegration::QTestLiteIntegration(bool useOpenGL)
+ : mUseOpenGL(useOpenGL)
+ , mFontDb(new QGenericUnixFontDatabase())
+{
+ xd = new MyDisplay;
+
+ mPrimaryScreen = new QTestLiteScreen();
+
+ mPrimaryScreen->mGeometry = QRect
+ (0, 0, xd->width, xd->height);
+ mPrimaryScreen->mDepth = 32;
+ mPrimaryScreen->mFormat = QImage::Format_RGB32;
+ mPrimaryScreen->mPhysicalSize =
+ QSize(xd->physicalWidth, xd->physicalHeight);
+
+ mScreens.append(mPrimaryScreen);
+
+
+ (void)new MyCursor(mPrimaryScreen);
+
+}
+
+QPixmapData *QTestLiteIntegration::createPixmapData(QPixmapData::PixelType type) const
+{
+#ifndef QT_NO_OPENGL
+ if (mUseOpenGL)
+ return new QGLPixmapData(type);
+#endif
+ return new QRasterPixmapData(type);
+}
+
+QWindowSurface *QTestLiteIntegration::createWindowSurface(QWidget *widget, WId) const
+{
+#ifndef QT_NO_OPENGL
+ if (mUseOpenGL)
+ return new QGLWindowSurface(widget);
+#endif
+ return new QTestLiteWindowSurface(mPrimaryScreen, widget);
+}
+
+
+QPlatformWindow *QTestLiteIntegration::createPlatformWindow(QWidget *widget, WId /*winId*/) const
+{
+ return new QTestLiteWindow(this, mPrimaryScreen, widget);
+}
+
+
+
+QPixmap QTestLiteIntegration::grabWindow(WId window, int x, int y, int width, int height) const
+{
+ QImage img = xd->grabWindow(window, x, y, width, height);
+ return QPixmap::fromImage(img);
+}
+
+QPlatformFontDatabase *QTestLiteIntegration::fontDatabase() const
+{
+ return mFontDb;
+}
+
+bool QTestLiteIntegration::hasOpenGL() const
+{
+#ifndef QT_NO_OPENGL
+ return glXQueryExtension(xd->display, 0, 0) != 0;
+#endif
+ return false;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/testlite/qtestliteintegration.h b/src/plugins/platforms/testlite/qtestliteintegration.h
new file mode 100644
index 0000000000..8286ef01d8
--- /dev/null
+++ b/src/plugins/platforms/testlite/qtestliteintegration.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 QGRAPHICSSYSTEM_TESTLITE_H
+#define QGRAPHICSSYSTEM_TESTLITE_H
+
+#include <QtGui/QPlatformIntegration>
+#include <QtGui/QPlatformScreen>
+
+//make sure textstream is included before any X11 headers
+#include <QtCore/QTextStream>
+
+QT_BEGIN_NAMESPACE
+
+class MyDisplay;
+
+class QTestLiteScreen : public QPlatformScreen
+{
+public:
+ QTestLiteScreen()
+ : mDepth(16), mFormat(QImage::Format_RGB16) {}
+ ~QTestLiteScreen() {}
+
+ QRect geometry() const { return mGeometry; }
+ int depth() const { return mDepth; }
+ QImage::Format format() const { return mFormat; }
+ QSize physicalSize() const { return mPhysicalSize; }
+
+public:
+ QRect mGeometry;
+ int mDepth;
+ QImage::Format mFormat;
+ QSize mPhysicalSize;
+};
+
+class QTestLiteIntegration : public QPlatformIntegration
+{
+public:
+ QTestLiteIntegration(bool useOpenGL = false);
+
+ QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
+ QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId) const;
+ QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const;
+
+ QPixmap grabWindow(WId window, int x, int y, int width, int height) const;
+
+ QList<QPlatformScreen *> screens() const { return mScreens; }
+
+ QPlatformFontDatabase *fontDatabase() const;
+
+ bool hasOpenGL() const;
+
+ MyDisplay *xd;
+
+private:
+ bool mUseOpenGL;
+ QTestLiteScreen *mPrimaryScreen;
+ QList<QPlatformScreen *> mScreens;
+ QPlatformFontDatabase *mFontDb;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/testlite/qtestlitewindow.cpp b/src/plugins/platforms/testlite/qtestlitewindow.cpp
new file mode 100644
index 0000000000..1de4b9db54
--- /dev/null
+++ b/src/plugins/platforms/testlite/qtestlitewindow.cpp
@@ -0,0 +1,1587 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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 "qtestliteintegration.h"
+#include <QWindowSystemInterface>
+#include <private/qwindowsurface_p.h>
+#include <QtGui/private/qapplication_p.h>
+
+#include "qtestlitewindow.h"
+
+#include <QBitmap>
+#include <QCursor>
+#include <QDateTime>
+#include <QPixmap>
+#include <QImage>
+#include <QSocketNotifier>
+
+#include <qdebug.h>
+#include <QTimer>
+#include <QApplication>
+
+#ifndef QT_NO_OPENGL
+#include "qglxintegration.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+
+#include <X11/Xatom.h>
+
+#include <X11/cursorfont.h>
+
+
+
+//### remove stuff we don't want from qt_x11_p.h
+#undef ATOM
+#undef X11
+
+//#define MYX11_DEBUG
+
+QT_BEGIN_NAMESPACE
+
+static int (*original_x_errhandler)(Display *dpy, XErrorEvent *);
+static bool seen_badwindow;
+
+
+static Atom wmProtocolsAtom;
+static Atom wmDeleteWindowAtom;
+
+class MyX11CursorNode
+{
+public:
+ MyX11CursorNode(int id, Cursor c) { idValue = id; cursorValue = c; refCount = 1; }
+ QDateTime expiration() { return t; }
+ void setExpiration(QDateTime val) { t = val; }
+ MyX11CursorNode * ante() { return before; }
+ void setAnte(MyX11CursorNode *node) { before = node; }
+ MyX11CursorNode * post() { return after; }
+ void setPost(MyX11CursorNode *node) { after = node; }
+ Cursor cursor() { return cursorValue; }
+ int id() { return idValue; }
+ unsigned int refCount;
+
+private:
+ MyX11CursorNode *before;
+ MyX11CursorNode *after;
+ QDateTime t;
+ Cursor cursorValue;
+ int idValue;
+
+ Display * display;
+};
+
+
+
+
+
+class MyX11Cursors : public QObject
+{
+ Q_OBJECT
+public:
+ MyX11Cursors(Display * d);
+ ~MyX11Cursors() { timer.stop(); }
+ void incrementUseCount(int id);
+ void decrementUseCount(int id);
+ void createNode(int id, Cursor c);
+ bool exists(int id) { return lookupMap.contains(id); }
+ Cursor cursor(int id);
+public slots:
+ void timeout();
+
+private:
+ void removeNode(MyX11CursorNode *node);
+ void insertNode(MyX11CursorNode *node);
+
+ // linked list of cursors currently not assigned to any window
+ MyX11CursorNode *firstExpired;
+ MyX11CursorNode *lastExpired;
+
+ QHash<int, MyX11CursorNode *> lookupMap;
+ QTimer timer;
+
+ Display *display;
+
+ int removalDelay;
+};
+
+
+
+
+
+QTestLiteWindow::QTestLiteWindow(const QTestLiteIntegration *platformIntegration,
+ QTestLiteScreen */*screen*/, QWidget *window)
+ :QPlatformWindow(window), mGLContext(0)
+{
+ xd = platformIntegration->xd;
+ xd->windowList.append(this);
+ {
+ int x = window->x();
+ int y = window->y();
+ int w = window->width();
+ int h = window->height();
+
+ if(window->platformWindowFormat().windowApi() == QPlatformWindowFormat::OpenGL
+ && QApplicationPrivate::platformIntegration()->hasOpenGL() ) {
+#ifndef QT_NO_OPENGL
+ XVisualInfo *visualInfo = QGLXGLContext::findVisualInfo(xd,window->platformWindowFormat());
+ Colormap cmap = XCreateColormap(xd->display,xd->rootWindow(),visualInfo->visual,AllocNone);
+
+ XSetWindowAttributes a;
+ a.colormap = cmap;
+ x_window = XCreateWindow(xd->display, xd->rootWindow(),x, y, w, h,
+ 0, visualInfo->depth, InputOutput, visualInfo->visual,
+ CWColormap, &a);
+#endif //QT_NO_OPENGL
+ } else {
+ x_window = XCreateSimpleWindow(xd->display, xd->rootWindow(),
+ x, y, w, h, 0 /*border_width*/,
+ xd->blackPixel(), xd->whitePixel());
+ }
+
+#ifdef MYX11_DEBUG
+ qDebug() << "QTestLiteWindow::QTestLiteWindow creating" << hex << x_window << window;
+#endif
+ }
+
+ width = -1;
+ height = -1;
+ xpos = -1;
+ ypos = -1;
+
+ XSetWindowBackgroundPixmap(xd->display, x_window, XNone);
+
+ XSelectInput(xd->display, x_window, ExposureMask | KeyPressMask | KeyReleaseMask |
+ EnterWindowMask | LeaveWindowMask | FocusChangeMask |
+ PointerMotionMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask |
+ StructureNotifyMask);
+
+ gc = createGC();
+
+ XChangeProperty (xd->display, x_window,
+ wmProtocolsAtom,
+ XA_ATOM, 32, PropModeAppend,
+ (unsigned char *) &wmDeleteWindowAtom, 1);
+ currentCursor = -1;
+}
+
+
+QTestLiteWindow::~QTestLiteWindow()
+{
+#ifdef MYX11_DEBUG
+ qDebug() << "~QTestLiteWindow" << hex << x_window;
+#endif
+ delete mGLContext;
+ XFreeGC(xd->display, gc);
+ XDestroyWindow(xd->display, x_window);
+
+ xd->windowList.removeAll(this);
+}
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Mouse event stuff
+
+
+
+
+static Qt::MouseButtons translateMouseButtons(int s)
+{
+ Qt::MouseButtons ret = 0;
+ if (s & Button1Mask)
+ ret |= Qt::LeftButton;
+ if (s & Button2Mask)
+ ret |= Qt::MidButton;
+ if (s & Button3Mask)
+ ret |= Qt::RightButton;
+ return ret;
+}
+
+
+static Qt::KeyboardModifiers translateModifiers(int s)
+{
+ const uchar qt_alt_mask = Mod1Mask;
+ const uchar qt_meta_mask = Mod4Mask;
+
+
+ Qt::KeyboardModifiers ret = 0;
+ if (s & ShiftMask)
+ ret |= Qt::ShiftModifier;
+ if (s & ControlMask)
+ ret |= Qt::ControlModifier;
+ if (s & qt_alt_mask)
+ ret |= Qt::AltModifier;
+ if (s & qt_meta_mask)
+ ret |= Qt::MetaModifier;
+#if 0
+ if (s & qt_mode_switch_mask)
+ ret |= Qt::GroupSwitchModifier;
+#endif
+ return ret;
+}
+
+void QTestLiteWindow::handleMouseEvent(QEvent::Type type, XButtonEvent *e)
+{
+ static QPoint mousePoint;
+
+ Qt::MouseButton button = Qt::NoButton;
+ Qt::MouseButtons buttons = translateMouseButtons(e->state);
+ Qt::KeyboardModifiers modifiers = translateModifiers(e->state);
+ if (type != QEvent::MouseMove) {
+ switch (e->button) {
+ case Button1: button = Qt::LeftButton; break;
+ case Button2: button = Qt::MidButton; break;
+ case Button3: button = Qt::RightButton; break;
+ case Button4:
+ case Button5:
+ case 6:
+ case 7: {
+ //mouse wheel
+ if (type == QEvent::MouseButtonPress) {
+ //logic borrowed from qapplication_x11.cpp
+ int delta = 120 * ((e->button == Button4 || e->button == 6) ? 1 : -1);
+ bool hor = (((e->button == Button4 || e->button == Button5)
+ && (modifiers & Qt::AltModifier))
+ || (e->button == 6 || e->button == 7));
+ QWindowSystemInterface::handleWheelEvent(widget(), e->time,
+ QPoint(e->x, e->y),
+ QPoint(e->x_root, e->y_root),
+ delta, hor ? Qt::Horizontal : Qt::Vertical);
+ }
+ return;
+ }
+ default: break;
+ }
+ }
+
+ buttons ^= button; // X event uses state *before*, Qt uses state *after*
+
+ QWindowSystemInterface::handleMouseEvent(widget(), e->time, QPoint(e->x, e->y),
+ QPoint(e->x_root, e->y_root),
+ buttons);
+
+ mousePoint = QPoint(e->x_root, e->y_root);
+}
+
+void QTestLiteWindow::handleCloseEvent()
+{
+ QWindowSystemInterface::handleCloseEvent(widget());
+}
+
+
+void QTestLiteWindow::handleEnterEvent()
+{
+ QWindowSystemInterface::handleEnterEvent(widget());
+}
+
+void QTestLiteWindow::handleLeaveEvent()
+{
+ QWindowSystemInterface::handleLeaveEvent(widget());
+}
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Key event stuff -- not pretty either
+//
+// What we want to do is to port Robert's keytable code properly
+
+// keyboard mapping table
+static const unsigned int keyTbl[] = {
+
+ // misc keys
+
+ XK_Escape, Qt::Key_Escape,
+ XK_Tab, Qt::Key_Tab,
+ XK_ISO_Left_Tab, Qt::Key_Backtab,
+ XK_BackSpace, Qt::Key_Backspace,
+ XK_Return, Qt::Key_Return,
+ XK_Insert, Qt::Key_Insert,
+ XK_Delete, Qt::Key_Delete,
+ XK_Clear, Qt::Key_Delete,
+ XK_Pause, Qt::Key_Pause,
+ XK_Print, Qt::Key_Print,
+ 0x1005FF60, Qt::Key_SysReq, // hardcoded Sun SysReq
+ 0x1007ff00, Qt::Key_SysReq, // hardcoded X386 SysReq
+
+ // cursor movement
+
+ XK_Home, Qt::Key_Home,
+ XK_End, Qt::Key_End,
+ XK_Left, Qt::Key_Left,
+ XK_Up, Qt::Key_Up,
+ XK_Right, Qt::Key_Right,
+ XK_Down, Qt::Key_Down,
+ XK_Prior, Qt::Key_PageUp,
+ XK_Next, Qt::Key_PageDown,
+
+ // modifiers
+
+ XK_Shift_L, Qt::Key_Shift,
+ XK_Shift_R, Qt::Key_Shift,
+ XK_Shift_Lock, Qt::Key_Shift,
+ XK_Control_L, Qt::Key_Control,
+ XK_Control_R, Qt::Key_Control,
+ XK_Meta_L, Qt::Key_Meta,
+ XK_Meta_R, Qt::Key_Meta,
+ XK_Alt_L, Qt::Key_Alt,
+ XK_Alt_R, Qt::Key_Alt,
+ XK_Caps_Lock, Qt::Key_CapsLock,
+ XK_Num_Lock, Qt::Key_NumLock,
+ XK_Scroll_Lock, Qt::Key_ScrollLock,
+ XK_Super_L, Qt::Key_Super_L,
+ XK_Super_R, Qt::Key_Super_R,
+ XK_Menu, Qt::Key_Menu,
+ XK_Hyper_L, Qt::Key_Hyper_L,
+ XK_Hyper_R, Qt::Key_Hyper_R,
+ XK_Help, Qt::Key_Help,
+ 0x1000FF74, Qt::Key_Backtab, // hardcoded HP backtab
+ 0x1005FF10, Qt::Key_F11, // hardcoded Sun F36 (labeled F11)
+ 0x1005FF11, Qt::Key_F12, // hardcoded Sun F37 (labeled F12)
+
+ // numeric and function keypad keys
+
+ XK_KP_Space, Qt::Key_Space,
+ XK_KP_Tab, Qt::Key_Tab,
+ XK_KP_Enter, Qt::Key_Enter,
+ //XK_KP_F1, Qt::Key_F1,
+ //XK_KP_F2, Qt::Key_F2,
+ //XK_KP_F3, Qt::Key_F3,
+ //XK_KP_F4, Qt::Key_F4,
+ XK_KP_Home, Qt::Key_Home,
+ XK_KP_Left, Qt::Key_Left,
+ XK_KP_Up, Qt::Key_Up,
+ XK_KP_Right, Qt::Key_Right,
+ XK_KP_Down, Qt::Key_Down,
+ XK_KP_Prior, Qt::Key_PageUp,
+ XK_KP_Next, Qt::Key_PageDown,
+ XK_KP_End, Qt::Key_End,
+ XK_KP_Begin, Qt::Key_Clear,
+ XK_KP_Insert, Qt::Key_Insert,
+ XK_KP_Delete, Qt::Key_Delete,
+ XK_KP_Equal, Qt::Key_Equal,
+ XK_KP_Multiply, Qt::Key_Asterisk,
+ XK_KP_Add, Qt::Key_Plus,
+ XK_KP_Separator, Qt::Key_Comma,
+ XK_KP_Subtract, Qt::Key_Minus,
+ XK_KP_Decimal, Qt::Key_Period,
+ XK_KP_Divide, Qt::Key_Slash,
+
+ // International input method support keys
+
+ // International & multi-key character composition
+ XK_ISO_Level3_Shift, Qt::Key_AltGr,
+ XK_Multi_key, Qt::Key_Multi_key,
+ XK_Codeinput, Qt::Key_Codeinput,
+ XK_SingleCandidate, Qt::Key_SingleCandidate,
+ XK_MultipleCandidate, Qt::Key_MultipleCandidate,
+ XK_PreviousCandidate, Qt::Key_PreviousCandidate,
+
+ // Misc Functions
+ XK_Mode_switch, Qt::Key_Mode_switch,
+ XK_script_switch, Qt::Key_Mode_switch,
+
+ // Japanese keyboard support
+ XK_Kanji, Qt::Key_Kanji,
+ XK_Muhenkan, Qt::Key_Muhenkan,
+ //XK_Henkan_Mode, Qt::Key_Henkan_Mode,
+ XK_Henkan_Mode, Qt::Key_Henkan,
+ XK_Henkan, Qt::Key_Henkan,
+ XK_Romaji, Qt::Key_Romaji,
+ XK_Hiragana, Qt::Key_Hiragana,
+ XK_Katakana, Qt::Key_Katakana,
+ XK_Hiragana_Katakana, Qt::Key_Hiragana_Katakana,
+ XK_Zenkaku, Qt::Key_Zenkaku,
+ XK_Hankaku, Qt::Key_Hankaku,
+ XK_Zenkaku_Hankaku, Qt::Key_Zenkaku_Hankaku,
+ XK_Touroku, Qt::Key_Touroku,
+ XK_Massyo, Qt::Key_Massyo,
+ XK_Kana_Lock, Qt::Key_Kana_Lock,
+ XK_Kana_Shift, Qt::Key_Kana_Shift,
+ XK_Eisu_Shift, Qt::Key_Eisu_Shift,
+ XK_Eisu_toggle, Qt::Key_Eisu_toggle,
+ //XK_Kanji_Bangou, Qt::Key_Kanji_Bangou,
+ //XK_Zen_Koho, Qt::Key_Zen_Koho,
+ //XK_Mae_Koho, Qt::Key_Mae_Koho,
+ XK_Kanji_Bangou, Qt::Key_Codeinput,
+ XK_Zen_Koho, Qt::Key_MultipleCandidate,
+ XK_Mae_Koho, Qt::Key_PreviousCandidate,
+
+#ifdef XK_KOREAN
+ // Korean keyboard support
+ XK_Hangul, Qt::Key_Hangul,
+ XK_Hangul_Start, Qt::Key_Hangul_Start,
+ XK_Hangul_End, Qt::Key_Hangul_End,
+ XK_Hangul_Hanja, Qt::Key_Hangul_Hanja,
+ XK_Hangul_Jamo, Qt::Key_Hangul_Jamo,
+ XK_Hangul_Romaja, Qt::Key_Hangul_Romaja,
+ //XK_Hangul_Codeinput, Qt::Key_Hangul_Codeinput,
+ XK_Hangul_Codeinput, Qt::Key_Codeinput,
+ XK_Hangul_Jeonja, Qt::Key_Hangul_Jeonja,
+ XK_Hangul_Banja, Qt::Key_Hangul_Banja,
+ XK_Hangul_PreHanja, Qt::Key_Hangul_PreHanja,
+ XK_Hangul_PostHanja, Qt::Key_Hangul_PostHanja,
+ //XK_Hangul_SingleCandidate,Qt::Key_Hangul_SingleCandidate,
+ //XK_Hangul_MultipleCandidate,Qt::Key_Hangul_MultipleCandidate,
+ //XK_Hangul_PreviousCandidate,Qt::Key_Hangul_PreviousCandidate,
+ XK_Hangul_SingleCandidate, Qt::Key_SingleCandidate,
+ XK_Hangul_MultipleCandidate,Qt::Key_MultipleCandidate,
+ XK_Hangul_PreviousCandidate,Qt::Key_PreviousCandidate,
+ XK_Hangul_Special, Qt::Key_Hangul_Special,
+ //XK_Hangul_switch, Qt::Key_Hangul_switch,
+ XK_Hangul_switch, Qt::Key_Mode_switch,
+#endif // XK_KOREAN
+
+ // dead keys
+ XK_dead_grave, Qt::Key_Dead_Grave,
+ XK_dead_acute, Qt::Key_Dead_Acute,
+ XK_dead_circumflex, Qt::Key_Dead_Circumflex,
+ XK_dead_tilde, Qt::Key_Dead_Tilde,
+ XK_dead_macron, Qt::Key_Dead_Macron,
+ XK_dead_breve, Qt::Key_Dead_Breve,
+ XK_dead_abovedot, Qt::Key_Dead_Abovedot,
+ XK_dead_diaeresis, Qt::Key_Dead_Diaeresis,
+ XK_dead_abovering, Qt::Key_Dead_Abovering,
+ XK_dead_doubleacute, Qt::Key_Dead_Doubleacute,
+ XK_dead_caron, Qt::Key_Dead_Caron,
+ XK_dead_cedilla, Qt::Key_Dead_Cedilla,
+ XK_dead_ogonek, Qt::Key_Dead_Ogonek,
+ XK_dead_iota, Qt::Key_Dead_Iota,
+ XK_dead_voiced_sound, Qt::Key_Dead_Voiced_Sound,
+ XK_dead_semivoiced_sound, Qt::Key_Dead_Semivoiced_Sound,
+ XK_dead_belowdot, Qt::Key_Dead_Belowdot,
+ XK_dead_hook, Qt::Key_Dead_Hook,
+ XK_dead_horn, Qt::Key_Dead_Horn,
+
+#if 0
+ // Special multimedia keys
+ // currently only tested with MS internet keyboard
+
+ // browsing keys
+ XF86XK_Back, Qt::Key_Back,
+ XF86XK_Forward, Qt::Key_Forward,
+ XF86XK_Stop, Qt::Key_Stop,
+ XF86XK_Refresh, Qt::Key_Refresh,
+ XF86XK_Favorites, Qt::Key_Favorites,
+ XF86XK_AudioMedia, Qt::Key_LaunchMedia,
+ XF86XK_OpenURL, Qt::Key_OpenUrl,
+ XF86XK_HomePage, Qt::Key_HomePage,
+ XF86XK_Search, Qt::Key_Search,
+
+ // media keys
+ XF86XK_AudioLowerVolume, Qt::Key_VolumeDown,
+ XF86XK_AudioMute, Qt::Key_VolumeMute,
+ XF86XK_AudioRaiseVolume, Qt::Key_VolumeUp,
+ XF86XK_AudioPlay, Qt::Key_MediaPlay,
+ XF86XK_AudioStop, Qt::Key_MediaStop,
+ XF86XK_AudioPrev, Qt::Key_MediaPrevious,
+ XF86XK_AudioNext, Qt::Key_MediaNext,
+ XF86XK_AudioRecord, Qt::Key_MediaRecord,
+
+ // launch keys
+ XF86XK_Mail, Qt::Key_LaunchMail,
+ XF86XK_MyComputer, Qt::Key_Launch0,
+ XF86XK_Calculator, Qt::Key_Launch1,
+ XF86XK_Standby, Qt::Key_Standby,
+
+ XF86XK_Launch0, Qt::Key_Launch2,
+ XF86XK_Launch1, Qt::Key_Launch3,
+ XF86XK_Launch2, Qt::Key_Launch4,
+ XF86XK_Launch3, Qt::Key_Launch5,
+ XF86XK_Launch4, Qt::Key_Launch6,
+ XF86XK_Launch5, Qt::Key_Launch7,
+ XF86XK_Launch6, Qt::Key_Launch8,
+ XF86XK_Launch7, Qt::Key_Launch9,
+ XF86XK_Launch8, Qt::Key_LaunchA,
+ XF86XK_Launch9, Qt::Key_LaunchB,
+ XF86XK_LaunchA, Qt::Key_LaunchC,
+ XF86XK_LaunchB, Qt::Key_LaunchD,
+ XF86XK_LaunchC, Qt::Key_LaunchE,
+ XF86XK_LaunchD, Qt::Key_LaunchF,
+#endif
+
+#if 0
+ // Qtopia keys
+ QTOPIAXK_Select, Qt::Key_Select,
+ QTOPIAXK_Yes, Qt::Key_Yes,
+ QTOPIAXK_No, Qt::Key_No,
+ QTOPIAXK_Cancel, Qt::Key_Cancel,
+ QTOPIAXK_Printer, Qt::Key_Printer,
+ QTOPIAXK_Execute, Qt::Key_Execute,
+ QTOPIAXK_Sleep, Qt::Key_Sleep,
+ QTOPIAXK_Play, Qt::Key_Play,
+ QTOPIAXK_Zoom, Qt::Key_Zoom,
+ QTOPIAXK_Context1, Qt::Key_Context1,
+ QTOPIAXK_Context2, Qt::Key_Context2,
+ QTOPIAXK_Context3, Qt::Key_Context3,
+ QTOPIAXK_Context4, Qt::Key_Context4,
+ QTOPIAXK_Call, Qt::Key_Call,
+ QTOPIAXK_Hangup, Qt::Key_Hangup,
+ QTOPIAXK_Flip, Qt::Key_Flip,
+#endif
+ 0, 0
+};
+
+
+static int lookupCode(unsigned int xkeycode)
+{
+ if (xkeycode >= XK_F1 && xkeycode <= XK_F35)
+ return Qt::Key_F1 + (int(xkeycode) - XK_F1);
+
+ const unsigned int *p = keyTbl;
+ while (*p) {
+ if (*p == xkeycode)
+ return *++p;
+ p += 2;
+ }
+
+ return 0;
+}
+
+
+static Qt::KeyboardModifiers modifierFromKeyCode(int qtcode)
+{
+ switch (qtcode) {
+ case Qt::Key_Control:
+ return Qt::ControlModifier;
+ case Qt::Key_Alt:
+ return Qt::AltModifier;
+ case Qt::Key_Shift:
+ return Qt::ShiftModifier;
+ case Qt::Key_Meta:
+ return Qt::MetaModifier;
+ default:
+ return Qt::NoModifier;
+ }
+}
+
+void QTestLiteWindow::handleKeyEvent(QEvent::Type type, void *ev)
+{
+ XKeyEvent *e = static_cast<XKeyEvent*>(ev);
+
+ KeySym keySym;
+ QByteArray chars;
+ chars.resize(513);
+
+ int count = XLookupString(e, chars.data(), chars.size(), &keySym, 0);
+ Q_UNUSED(count);
+// qDebug() << "QTLWS::handleKeyEvent" << count << hex << "XKeysym:" << keySym;
+// if (count)
+// qDebug() << hex << int(chars[0]) << "String:" << chars;
+
+ Qt::KeyboardModifiers modifiers = translateModifiers(e->state);
+
+ int qtcode = lookupCode(keySym);
+// qDebug() << "lookup: " << hex << keySym << qtcode << "mod" << modifiers;
+
+ //X11 specifies state *before*, Qt expects state *after* the event
+
+ modifiers ^= modifierFromKeyCode(qtcode);
+
+ if (qtcode) {
+ QWindowSystemInterface::handleKeyEvent(widget(), e->time, type, qtcode, modifiers);
+ } else if (chars[0]) {
+ int qtcode = chars.toUpper()[0]; //Not exactly right...
+ if (modifiers & Qt::ControlModifier && qtcode < ' ')
+ qtcode = chars[0] + '@';
+ QWindowSystemInterface::handleKeyEvent(0, e->time, type, qtcode, modifiers, QString::fromLatin1(chars));
+ } else {
+ qWarning() << "unknown X keycode" << hex << e->keycode << keySym;
+ }
+}
+
+void QTestLiteWindow::setGeometry(const QRect &rect)
+{
+ XMoveResizeWindow(xd->display, x_window, rect.x(), rect.y(), rect.width(), rect.height());
+ QPlatformWindow::setGeometry(rect);
+}
+
+
+Qt::WindowFlags QTestLiteWindow::windowFlags() const
+{
+ return window_flags;
+}
+
+WId QTestLiteWindow::winId() const
+{
+ return x_window;
+}
+
+void QTestLiteWindow::setParent(const QPlatformWindow *window)
+{
+ QPoint point = widget()->mapTo(widget()->nativeParentWidget(),QPoint());
+ XReparentWindow(xd->display,x_window,window->winId(),point.x(),point.y());
+ XMapWindow(xd->display, x_window);
+}
+
+void QTestLiteWindow::raise()
+{
+ XRaiseWindow(xd->display, x_window);
+}
+
+void QTestLiteWindow::lower()
+{
+ XLowerWindow(xd->display, x_window);
+}
+
+void QTestLiteWindow::setWindowTitle(const QString &title)
+{
+ QByteArray ba = title.toLatin1(); //We're not making a general solution here...
+ XTextProperty windowName;
+ windowName.value = (unsigned char *)ba.constData();
+ windowName.encoding = XA_STRING;
+ windowName.format = 8;
+ windowName.nitems = ba.length();
+
+ XSetWMName(xd->display, x_window, &windowName);
+}
+
+GC QTestLiteWindow::createGC()
+{
+ GC gc;
+
+ gc = XCreateGC(xd->display, x_window, 0, 0);
+ if (gc < 0) {
+ qWarning("QTestLiteWindow::createGC() could not create GC");
+ }
+ return gc;
+}
+
+void QTestLiteWindow::paintEvent()
+{
+#ifdef MYX11_DEBUG
+// qDebug() << "QTestLiteWindow::paintEvent" << shm_img.size() << painted;
+#endif
+
+ if (QWindowSurface *surface = widget()->windowSurface())
+ surface->flush(widget(), QRect(xpos,ypos,width, height), QPoint());
+}
+
+
+void QTestLiteWindow::resizeEvent(XConfigureEvent *e)
+{
+ if ((e->width != width || e->height != height) && e->x == 0 && e->y == 0) {
+ //qDebug() << "resize with bogus pos" << e->x << e->y << e->width << e->height << "window"<< hex << window;
+ } else {
+ //qDebug() << "geometry change" << e->x << e->y << e->width << e->height << "window"<< hex << window;
+ xpos = e->x;
+ ypos = e->y;
+ }
+ width = e->width;
+ height = e->height;
+
+#ifdef MYX11_DEBUG
+ qDebug() << hex << x_window << dec << "ConfigureNotify" << e->x << e->y << e->width << e->height << "geometry" << xpos << ypos << width << height;
+#endif
+
+ QWindowSystemInterface::handleGeometryChange(widget(), QRect(xpos, ypos, width, height));
+}
+
+
+void QTestLiteWindow::mousePressEvent(XButtonEvent *e)
+{
+ static long prevTime = 0;
+ static Window prevWindow;
+ static int prevX = -999;
+ static int prevY = -999;
+
+ QEvent::Type type = QEvent::MouseButtonPress;
+
+ if (e->window == prevWindow && long(e->time) - prevTime < QApplication::doubleClickInterval()
+ && qAbs(e->x - prevX) < 5 && qAbs(e->y - prevY) < 5) {
+ type = QEvent::MouseButtonDblClick;
+ prevTime = e->time - QApplication::doubleClickInterval(); //no double click next time
+ } else {
+ prevTime = e->time;
+ }
+ prevWindow = e->window;
+ prevX = e->x;
+ prevY = e->y;
+
+ handleMouseEvent(type, e);
+}
+
+
+
+// WindowFlag stuff, lots of copied code from qwidget_x11.cpp...
+
+//We're hacking here...
+
+
+// MWM support
+struct QtMWMHints {
+ ulong flags, functions, decorations;
+ long input_mode;
+ ulong status;
+};
+
+enum {
+ MWM_HINTS_FUNCTIONS = (1L << 0),
+
+ MWM_FUNC_ALL = (1L << 0),
+ MWM_FUNC_RESIZE = (1L << 1),
+ MWM_FUNC_MOVE = (1L << 2),
+ MWM_FUNC_MINIMIZE = (1L << 3),
+ MWM_FUNC_MAXIMIZE = (1L << 4),
+ MWM_FUNC_CLOSE = (1L << 5),
+
+ MWM_HINTS_DECORATIONS = (1L << 1),
+
+ MWM_DECOR_ALL = (1L << 0),
+ MWM_DECOR_BORDER = (1L << 1),
+ MWM_DECOR_RESIZEH = (1L << 2),
+ MWM_DECOR_TITLE = (1L << 3),
+ MWM_DECOR_MENU = (1L << 4),
+ MWM_DECOR_MINIMIZE = (1L << 5),
+ MWM_DECOR_MAXIMIZE = (1L << 6),
+
+ MWM_HINTS_INPUT_MODE = (1L << 2),
+
+ MWM_INPUT_MODELESS = 0L,
+ MWM_INPUT_PRIMARY_APPLICATION_MODAL = 1L,
+ MWM_INPUT_FULL_APPLICATION_MODAL = 3L
+};
+
+static Atom mwm_hint_atom = XNone;
+
+#if 0
+static QtMWMHints GetMWMHints(Display *display, Window window)
+{
+ QtMWMHints mwmhints;
+
+ Atom type;
+ int format;
+ ulong nitems, bytesLeft;
+ uchar *data = 0;
+ if ((XGetWindowProperty(display, window, mwm_hint_atom, 0, 5, false,
+ mwm_hint_atom, &type, &format, &nitems, &bytesLeft,
+ &data) == Success)
+ && (type == mwm_hint_atom
+ && format == 32
+ && nitems >= 5)) {
+ mwmhints = *(reinterpret_cast<QtMWMHints *>(data));
+ } else {
+ mwmhints.flags = 0L;
+ mwmhints.functions = MWM_FUNC_ALL;
+ mwmhints.decorations = MWM_DECOR_ALL;
+ mwmhints.input_mode = 0L;
+ mwmhints.status = 0L;
+ }
+
+ if (data)
+ XFree(data);
+
+ return mwmhints;
+}
+#endif
+
+static void SetMWMHints(Display *display, Window window, const QtMWMHints &mwmhints)
+{
+ if (mwmhints.flags != 0l) {
+ XChangeProperty(display, window, mwm_hint_atom, mwm_hint_atom, 32,
+ PropModeReplace, (unsigned char *) &mwmhints, 5);
+ } else {
+ XDeleteProperty(display, window, mwm_hint_atom);
+ }
+}
+
+// Returns true if we should set WM_TRANSIENT_FOR on \a w
+static inline bool isTransient(const QWidget *w)
+{
+ return ((w->windowType() == Qt::Dialog
+ || w->windowType() == Qt::Sheet
+ || w->windowType() == Qt::Tool
+ || w->windowType() == Qt::SplashScreen
+ || w->windowType() == Qt::ToolTip
+ || w->windowType() == Qt::Drawer
+ || w->windowType() == Qt::Popup)
+ && !w->testAttribute(Qt::WA_X11BypassTransientForHint));
+}
+
+
+
+Qt::WindowFlags QTestLiteWindow::setWindowFlags(Qt::WindowFlags flags)
+{
+// Q_ASSERT(flags & Qt::Window);
+ window_flags = flags;
+
+ if (mwm_hint_atom == XNone) {
+ mwm_hint_atom = XInternAtom(xd->display, "_MOTIF_WM_HINTS\0", False);
+ }
+
+#ifdef MYX11_DEBUG
+ qDebug() << "QTestLiteWindow::setWindowFlags" << hex << x_window << "flags" << flags;
+#endif
+ Qt::WindowType type = static_cast<Qt::WindowType>(int(flags & Qt::WindowType_Mask));
+
+ if (type == Qt::ToolTip)
+ flags |= Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint;
+ if (type == Qt::Popup)
+ flags |= Qt::X11BypassWindowManagerHint;
+
+ bool topLevel = (flags & Qt::Window);
+ bool popup = (type == Qt::Popup);
+ bool dialog = (type == Qt::Dialog
+ || type == Qt::Sheet);
+ bool desktop = (type == Qt::Desktop);
+ bool tool = (type == Qt::Tool || type == Qt::SplashScreen
+ || type == Qt::ToolTip || type == Qt::Drawer);
+
+
+ Q_UNUSED(topLevel);
+ Q_UNUSED(dialog);
+ Q_UNUSED(desktop);
+
+
+ bool tooltip = (type == Qt::ToolTip);
+
+ XSetWindowAttributes wsa;
+
+ QtMWMHints mwmhints;
+ mwmhints.flags = 0L;
+ mwmhints.functions = 0L;
+ mwmhints.decorations = 0;
+ mwmhints.input_mode = 0L;
+ mwmhints.status = 0L;
+
+
+ ulong wsa_mask = 0;
+ if (type != Qt::SplashScreen) { // && customize) {
+ mwmhints.flags |= MWM_HINTS_DECORATIONS;
+
+ bool customize = flags & Qt::CustomizeWindowHint;
+ if (!(flags & Qt::FramelessWindowHint) && !(customize && !(flags & Qt::WindowTitleHint))) {
+ mwmhints.decorations |= MWM_DECOR_BORDER;
+ mwmhints.decorations |= MWM_DECOR_RESIZEH;
+
+ if (flags & Qt::WindowTitleHint)
+ mwmhints.decorations |= MWM_DECOR_TITLE;
+
+ if (flags & Qt::WindowSystemMenuHint)
+ mwmhints.decorations |= MWM_DECOR_MENU;
+
+ if (flags & Qt::WindowMinimizeButtonHint) {
+ mwmhints.decorations |= MWM_DECOR_MINIMIZE;
+ mwmhints.functions |= MWM_FUNC_MINIMIZE;
+ }
+
+ if (flags & Qt::WindowMaximizeButtonHint) {
+ mwmhints.decorations |= MWM_DECOR_MAXIMIZE;
+ mwmhints.functions |= MWM_FUNC_MAXIMIZE;
+ }
+
+ if (flags & Qt::WindowCloseButtonHint)
+ mwmhints.functions |= MWM_FUNC_CLOSE;
+ }
+ } else {
+ // if type == Qt::SplashScreen
+ mwmhints.decorations = MWM_DECOR_ALL;
+ }
+
+ if (tool) {
+ wsa.save_under = True;
+ wsa_mask |= CWSaveUnder;
+ }
+
+ if (flags & Qt::X11BypassWindowManagerHint) {
+ wsa.override_redirect = True;
+ wsa_mask |= CWOverrideRedirect;
+ }
+#if 0
+ if (wsa_mask && initializeWindow) {
+ Q_ASSERT(id);
+ XChangeWindowAttributes(dpy, id, wsa_mask, &wsa);
+ }
+#endif
+ if (mwmhints.functions != 0) {
+ mwmhints.flags |= MWM_HINTS_FUNCTIONS;
+ mwmhints.functions |= MWM_FUNC_MOVE | MWM_FUNC_RESIZE;
+ } else {
+ mwmhints.functions = MWM_FUNC_ALL;
+ }
+
+ if (!(flags & Qt::FramelessWindowHint)
+ && flags & Qt::CustomizeWindowHint
+ && flags & Qt::WindowTitleHint
+ && !(flags &
+ (Qt::WindowMinimizeButtonHint
+ | Qt::WindowMaximizeButtonHint
+ | Qt::WindowCloseButtonHint))) {
+ // a special case - only the titlebar without any button
+ mwmhints.flags = MWM_HINTS_FUNCTIONS;
+ mwmhints.functions = MWM_FUNC_MOVE | MWM_FUNC_RESIZE;
+ mwmhints.decorations = 0;
+ }
+
+ SetMWMHints(xd->display, x_window, mwmhints);
+
+//##### only if initializeWindow???
+
+ if (popup || tooltip) { // popup widget
+#ifdef MYX11_DEBUG
+ qDebug() << "Doing XChangeWindowAttributes for popup" << wsa.override_redirect;
+#endif
+ // set EWMH window types
+ // setNetWmWindowTypes();
+
+ wsa.override_redirect = True;
+ wsa.save_under = True;
+ XChangeWindowAttributes(xd->display, x_window, CWOverrideRedirect | CWSaveUnder,
+ &wsa);
+ } else {
+#ifdef MYX11_DEBUG
+ qDebug() << "Doing XChangeWindowAttributes for non-popup";
+#endif
+ }
+
+ return flags;
+}
+
+void QTestLiteWindow::setVisible(bool visible)
+{
+#ifdef MYX11_DEBUG
+ qDebug() << "QTestLiteWindow::setVisible" << visible << hex << x_window;
+#endif
+ if (visible)
+ XMapWindow(xd->display, x_window);
+ else
+ XUnmapWindow(xd->display, x_window);
+}
+
+
+void QTestLiteWindow::setCursor(QCursor * cursor)
+{
+ int id = cursor->handle();
+ if (id == currentCursor)
+ return;
+ Cursor c;
+ if (!xd->cursors->exists(id)) {
+ if (cursor->shape() == Qt::BitmapCursor)
+ c = createCursorBitmap(cursor);
+ else
+ c = createCursorShape(cursor->shape());
+ if (!c) {
+ return;
+ }
+ xd->cursors->createNode(id, c);
+ } else {
+ xd->cursors->incrementUseCount(id);
+ c = xd->cursors->cursor(id);
+ }
+
+ if (currentCursor != -1)
+ xd->cursors->decrementUseCount(currentCursor);
+ currentCursor = id;
+
+ XDefineCursor(xd->display, x_window, c);
+ XFlush(xd->display);
+}
+
+QPlatformGLContext *QTestLiteWindow::glContext() const
+{
+ if (!QApplicationPrivate::platformIntegration()->hasOpenGL())
+ return 0;
+ if (!mGLContext) {
+ QTestLiteWindow *that = const_cast<QTestLiteWindow *>(this);
+#ifndef QT_NO_OPENGL
+ that->mGLContext = new QGLXGLContext(x_window, xd, widget()->platformWindowFormat());
+#endif
+ }
+ return mGLContext;
+}
+
+Cursor QTestLiteWindow::createCursorBitmap(QCursor * cursor)
+{
+ XColor bg, fg;
+ bg.red = 255 << 8;
+ bg.green = 255 << 8;
+ bg.blue = 255 << 8;
+ fg.red = 0;
+ fg.green = 0;
+ fg.blue = 0;
+ QPoint spot = cursor->hotSpot();
+ Window rootwin = x_window;
+
+ QImage mapImage = cursor->bitmap()->toImage().convertToFormat(QImage::Format_MonoLSB);
+ QImage maskImage = cursor->mask()->toImage().convertToFormat(QImage::Format_MonoLSB);
+
+ int width = cursor->bitmap()->width();
+ int height = cursor->bitmap()->height();
+ int bytesPerLine = mapImage.bytesPerLine();
+ int destLineSize = width / 8;
+ if (width % 8)
+ destLineSize++;
+
+ const uchar * map = mapImage.bits();
+ const uchar * mask = maskImage.bits();
+
+ char * mapBits = new char[height * destLineSize];
+ char * maskBits = new char[height * destLineSize];
+ for (int i = 0; i < height; i++) {
+ memcpy(mapBits + (destLineSize * i),map + (bytesPerLine * i), destLineSize);
+ memcpy(maskBits + (destLineSize * i),mask + (bytesPerLine * i), destLineSize);
+ }
+
+ Pixmap cp = XCreateBitmapFromData(xd->display, rootwin, mapBits, width, height);
+ Pixmap mp = XCreateBitmapFromData(xd->display, rootwin, maskBits, width, height);
+ Cursor c = XCreatePixmapCursor(xd->display, cp, mp, &fg, &bg, spot.x(), spot.y());
+ XFreePixmap(xd->display, cp);
+ XFreePixmap(xd->display, mp);
+ delete[] mapBits;
+ delete[] maskBits;
+
+ return c;
+}
+
+Cursor QTestLiteWindow::createCursorShape(int cshape)
+{
+ Cursor cursor = 0;
+
+ if (cshape < 0 || cshape > Qt::LastCursor)
+ return 0;
+
+ switch (cshape) {
+ case Qt::ArrowCursor:
+ cursor = XCreateFontCursor(xd->display, XC_left_ptr);
+ break;
+ case Qt::UpArrowCursor:
+ cursor = XCreateFontCursor(xd->display, XC_center_ptr);
+ break;
+ case Qt::CrossCursor:
+ cursor = XCreateFontCursor(xd->display, XC_crosshair);
+ break;
+ case Qt::WaitCursor:
+ cursor = XCreateFontCursor(xd->display, XC_watch);
+ break;
+ case Qt::IBeamCursor:
+ cursor = XCreateFontCursor(xd->display, XC_xterm);
+ break;
+ case Qt::SizeAllCursor:
+ cursor = XCreateFontCursor(xd->display, XC_fleur);
+ break;
+ case Qt::PointingHandCursor:
+ cursor = XCreateFontCursor(xd->display, XC_hand2);
+ break;
+ case Qt::SizeBDiagCursor:
+ cursor = XCreateFontCursor(xd->display, XC_top_right_corner);
+ break;
+ case Qt::SizeFDiagCursor:
+ cursor = XCreateFontCursor(xd->display, XC_bottom_right_corner);
+ break;
+ case Qt::SizeVerCursor:
+ case Qt::SplitVCursor:
+ cursor = XCreateFontCursor(xd->display, XC_sb_v_double_arrow);
+ break;
+ case Qt::SizeHorCursor:
+ case Qt::SplitHCursor:
+ cursor = XCreateFontCursor(xd->display, XC_sb_h_double_arrow);
+ break;
+ case Qt::WhatsThisCursor:
+ cursor = XCreateFontCursor(xd->display, XC_question_arrow);
+ break;
+ case Qt::ForbiddenCursor:
+ cursor = XCreateFontCursor(xd->display, XC_circle);
+ break;
+ case Qt::BusyCursor:
+ cursor = XCreateFontCursor(xd->display, XC_watch);
+ break;
+
+ default: //default cursor for all the rest
+ break;
+ }
+ return cursor;
+}
+
+
+MyX11Cursors::MyX11Cursors(Display * d) : firstExpired(0), lastExpired(0), display(d), removalDelay(3)
+{
+ connect(&timer, SIGNAL(timeout()), this, SLOT(timeout()));
+}
+
+void MyX11Cursors::insertNode(MyX11CursorNode * node)
+{
+ QDateTime now = QDateTime::currentDateTime();
+ QDateTime timeout = now.addSecs(removalDelay);
+ node->setExpiration(timeout);
+ node->setPost(0);
+ if (lastExpired) {
+ lastExpired->setPost(node);
+ node->setAnte(lastExpired);
+ }
+ lastExpired = node;
+ if (!firstExpired) {
+ firstExpired = node;
+ node->setAnte(0);
+ int interval = removalDelay * 1000;
+ timer.setInterval(interval);
+ timer.start();
+ }
+}
+
+void MyX11Cursors::removeNode(MyX11CursorNode * node)
+{
+ MyX11CursorNode *pre = node->ante();
+ MyX11CursorNode *post = node->post();
+ if (pre)
+ pre->setPost(post);
+ if (post)
+ post->setAnte(pre);
+ if (node == lastExpired)
+ lastExpired = pre;
+ if (node == firstExpired) {
+ firstExpired = post;
+ if (!firstExpired) {
+ timer.stop();
+ return;
+ }
+ int interval = QDateTime::currentDateTime().secsTo(firstExpired->expiration()) * 1000;
+ timer.stop();
+ timer.setInterval(interval);
+ timer.start();
+ }
+}
+
+void MyX11Cursors::incrementUseCount(int id)
+{
+ MyX11CursorNode * node = lookupMap.value(id);
+ Q_ASSERT(node);
+ if (!node->refCount)
+ removeNode(node);
+ node->refCount++;
+}
+
+void MyX11Cursors::decrementUseCount(int id)
+{
+ MyX11CursorNode * node = lookupMap.value(id);
+ Q_ASSERT(node);
+ node->refCount--;
+ if (!node->refCount)
+ insertNode(node);
+}
+
+void MyX11Cursors::createNode(int id, Cursor c)
+{
+ MyX11CursorNode * node = new MyX11CursorNode(id, c);
+ lookupMap.insert(id, node);
+}
+
+void MyX11Cursors::timeout()
+{
+ MyX11CursorNode * node;
+ node = firstExpired;
+ QDateTime now = QDateTime::currentDateTime();
+ while (node && now.secsTo(node->expiration()) < 1) {
+ Cursor c = node->cursor();
+ int id = node->id();
+ lookupMap.take(id);
+ MyX11CursorNode * tmp = node;
+ node = node->post();
+ if (node)
+ node->setAnte(0);
+ delete tmp;
+ XFreeCursor(display, c);
+ }
+ firstExpired = node;
+ if (node == 0) {
+ timer.stop();
+ lastExpired = 0;
+ }
+ else {
+ int interval = QDateTime::currentDateTime().secsTo(firstExpired->expiration()) * 1000;
+ timer.setInterval(interval);
+ timer.start();
+ }
+}
+
+Cursor MyX11Cursors::cursor(int id)
+{
+ MyX11CursorNode * node = lookupMap.value(id);
+ Q_ASSERT(node);
+ return node->cursor();
+}
+
+
+
+/********************************************************************
+
+MyDisplay class - perhaps better placed in qplatformintegration_testlite?
+
+*********************************************************************/
+
+//### copied from qapplication_x11.cpp
+
+static int qt_x_errhandler(Display *dpy, XErrorEvent *err)
+{
+
+qDebug() << "qt_x_errhandler" << err->error_code;
+
+ switch (err->error_code) {
+ case BadAtom:
+#if 0
+ if (err->request_code == 20 /* X_GetProperty */
+ && (err->resourceid == XA_RESOURCE_MANAGER
+ || err->resourceid == XA_RGB_DEFAULT_MAP
+ || err->resourceid == ATOM(_NET_SUPPORTED)
+ || err->resourceid == ATOM(_NET_SUPPORTING_WM_CHECK)
+ || err->resourceid == ATOM(KDE_FULL_SESSION)
+ || err->resourceid == ATOM(KWIN_RUNNING)
+ || err->resourceid == ATOM(XdndProxy)
+ || err->resourceid == ATOM(XdndAware))
+
+
+ ) {
+ // Perhaps we're running under SECURITY reduction? :/
+ return 0;
+ }
+#endif
+ qDebug() << "BadAtom";
+ break;
+
+ case BadWindow:
+ if (err->request_code == 2 /* X_ChangeWindowAttributes */
+ || err->request_code == 38 /* X_QueryPointer */) {
+ for (int i = 0; i < ScreenCount(dpy); ++i) {
+ if (err->resourceid == RootWindow(dpy, i)) {
+ // Perhaps we're running under SECURITY reduction? :/
+ return 0;
+ }
+ }
+ }
+ seen_badwindow = true;
+ if (err->request_code == 25 /* X_SendEvent */) {
+ for (int i = 0; i < ScreenCount(dpy); ++i) {
+ if (err->resourceid == RootWindow(dpy, i)) {
+ // Perhaps we're running under SECURITY reduction? :/
+ return 0;
+ }
+ }
+#if 0
+ if (X11->xdndHandleBadwindow()) {
+ qDebug("xdndHandleBadwindow returned true");
+ return 0;
+ }
+#endif
+ }
+#if 0
+ if (X11->ignore_badwindow)
+ return 0;
+#endif
+ break;
+
+ case BadMatch:
+ if (err->request_code == 42 /* X_SetInputFocus */)
+ return 0;
+ break;
+
+ default:
+#if 0 //!defined(QT_NO_XINPUT)
+ if (err->request_code == X11->xinput_major
+ && err->error_code == (X11->xinput_errorbase + XI_BadDevice)
+ && err->minor_code == 3 /* X_OpenDevice */) {
+ return 0;
+ }
+#endif
+ break;
+ }
+
+ char errstr[256];
+ XGetErrorText( dpy, err->error_code, errstr, 256 );
+ char buffer[256];
+ char request_str[256];
+ qsnprintf(buffer, 256, "%d", err->request_code);
+ XGetErrorDatabaseText(dpy, "XRequest", buffer, "", request_str, 256);
+ if (err->request_code < 128) {
+ // X error for a normal protocol request
+ qWarning( "X Error: %s %d\n"
+ " Major opcode: %d (%s)\n"
+ " Resource id: 0x%lx",
+ errstr, err->error_code,
+ err->request_code,
+ request_str,
+ err->resourceid );
+ } else {
+ // X error for an extension request
+ const char *extensionName = 0;
+#if 0
+ if (err->request_code == X11->xrender_major)
+ extensionName = "RENDER";
+ else if (err->request_code == X11->xrandr_major)
+ extensionName = "RANDR";
+ else if (err->request_code == X11->xinput_major)
+ extensionName = "XInputExtension";
+ else if (err->request_code == X11->mitshm_major)
+ extensionName = "MIT-SHM";
+#endif
+ char minor_str[256];
+ if (extensionName) {
+ qsnprintf(buffer, 256, "%s.%d", extensionName, err->minor_code);
+ XGetErrorDatabaseText(dpy, "XRequest", buffer, "", minor_str, 256);
+ } else {
+ extensionName = "Uknown extension";
+ qsnprintf(minor_str, 256, "Unknown request");
+ }
+ qWarning( "X Error: %s %d\n"
+ " Extension: %d (%s)\n"
+ " Minor opcode: %d (%s)\n"
+ " Resource id: 0x%lx",
+ errstr, err->error_code,
+ err->request_code,
+ extensionName,
+ err->minor_code,
+ minor_str,
+ err->resourceid );
+ }
+
+ // ### we really should distinguish between severe, non-severe and
+ // ### application specific errors
+
+ return 0;
+}
+
+
+#ifdef KeyPress
+#undef KeyPress
+#endif
+#ifdef KeyRelease
+#undef KeyRelease
+#endif
+
+bool MyDisplay::handleEvent(XEvent *xe)
+{
+ //qDebug() << "handleEvent" << xe->xany.type << xe->xany.window;
+ int quit = false;
+ QTestLiteWindow *xw = 0;
+ foreach (QTestLiteWindow *w, windowList) {
+ if (w->winId() == xe->xany.window) {
+ xw = w;
+ break;
+ }
+ }
+ if (!xw) {
+#ifdef MYX11_DEBUG
+ qWarning() << "Unknown window" << hex << xe->xany.window << "received event" << xe->type;
+#endif
+ return quit;
+ }
+
+ switch (xe->type) {
+
+ case ClientMessage:
+ if (xe->xclient.format == 32 && xe->xclient.message_type == wmProtocolsAtom) {
+ Atom a = xe->xclient.data.l[0];
+ if (a == wmDeleteWindowAtom)
+ xw->handleCloseEvent();
+#ifdef MYX11_DEBUG
+ qDebug() << "ClientMessage WM_PROTOCOLS" << a;
+#endif
+ }
+#ifdef MYX11_DEBUG
+ else
+ qDebug() << "ClientMessage" << xe->xclient.format << xe->xclient.message_type;
+#endif
+ break;
+
+ case Expose:
+ if (xw)
+ if (xe->xexpose.count == 0)
+ xw->paintEvent();
+ break;
+ case ConfigureNotify:
+ if (xw)
+ xw->resizeEvent(&xe->xconfigure);
+ break;
+
+ case ButtonPress:
+ xw->mousePressEvent(&xe->xbutton);
+ break;
+
+ case ButtonRelease:
+ xw->handleMouseEvent(QEvent::MouseButtonRelease, &xe->xbutton);
+ break;
+
+ case MotionNotify:
+ xw->handleMouseEvent(QEvent::MouseMove, &xe->xbutton);
+ break;
+
+ case XKeyPress:
+ xw->handleKeyEvent(QEvent::KeyPress, &xe->xkey);
+ break;
+
+ case XKeyRelease:
+ xw->handleKeyEvent(QEvent::KeyRelease, &xe->xkey);
+ break;
+
+ case EnterNotify:
+ xw->handleEnterEvent();
+ break;
+
+ case LeaveNotify:
+ xw->handleLeaveEvent();
+ break;
+
+ default:
+#ifdef MYX11_DEBUG
+ qDebug() << hex << xe->xany.window << "Other X event" << xe->type;
+#endif
+ break;
+ }
+ return quit;
+};
+
+
+
+MyDisplay::MyDisplay()
+{
+ char *display_name = getenv("DISPLAY");
+ display = XOpenDisplay(display_name);
+ if (!display) {
+ fprintf(stderr, "Cannot connect to X server: %s\n",
+ display_name);
+ exit(1);
+ }
+
+#ifndef DONT_USE_MIT_SHM
+ Status MIT_SHM_extension_supported = XShmQueryExtension (display);
+ Q_ASSERT(MIT_SHM_extension_supported == True);
+#endif
+ original_x_errhandler = XSetErrorHandler(qt_x_errhandler);
+
+ if (qgetenv("DO_X_SYNCHRONIZE").toInt())
+ XSynchronize(display, true);
+
+ screen = DefaultScreen(display);
+ width = DisplayWidth(display, screen);
+ height = DisplayHeight(display, screen);
+ physicalWidth = DisplayWidthMM(display, screen);
+ physicalHeight = DisplayHeightMM(display, screen);
+
+ int xSocketNumber = XConnectionNumber(display);
+#ifdef MYX11_DEBUG
+ qDebug() << "X socket:"<< xSocketNumber;
+#endif
+ QSocketNotifier *sock = new QSocketNotifier(xSocketNumber, QSocketNotifier::Read, this);
+ connect(sock, SIGNAL(activated(int)), this, SLOT(eventDispatcher()));
+
+ wmProtocolsAtom = XInternAtom (display, "WM_PROTOCOLS", False);
+ wmDeleteWindowAtom = XInternAtom (display, "WM_DELETE_WINDOW", False);
+
+ cursors = new MyX11Cursors(display);
+}
+
+
+MyDisplay::~MyDisplay()
+{
+ XCloseDisplay(display);
+}
+
+
+void MyDisplay::eventDispatcher()
+{
+// qDebug() << "eventDispatcher";
+
+
+ ulong marker = XNextRequest(display);
+// int i = 0;
+ while (XPending(display)) {
+ XEvent event;
+ XNextEvent(display, &event);
+ /* done = */
+ handleEvent(&event);
+
+ if (event.xany.serial >= marker) {
+#ifdef MYX11_DEBUG
+ qDebug() << "potential livelock averted";
+#endif
+#if 0
+ if (XEventsQueued(display, QueuedAfterFlush)) {
+ qDebug() << " with events queued";
+ QTimer::singleShot(0, this, SLOT(eventDispatcher()));
+ }
+#endif
+ break;
+ }
+ }
+}
+
+
+QImage MyDisplay::grabWindow(Window window, int x, int y, int w, int h)
+{
+ if (w == 0 || h ==0)
+ return QImage();
+
+ //WinId 0 means the desktop widget
+ if (!window)
+ window = rootWindow();
+
+ XWindowAttributes window_attr;
+ if (!XGetWindowAttributes(display, window, &window_attr))
+ return QImage();
+
+ if (w < 0)
+ w = window_attr.width - x;
+ if (h < 0)
+ h = window_attr.height - y;
+
+ // Ideally, we should also limit ourselves to the screen area, but the Qt docs say
+ // that it's "unsafe" to go outside the screen, so we can ignore that problem.
+
+ //We're definitely not optimizing for speed...
+ XImage *xi = XGetImage(display, window, x, y, w, h, AllPlanes, ZPixmap);
+
+ if (!xi)
+ return QImage();
+
+ //taking a copy to make sure we have ownership -- not fast
+ QImage result = QImage( (uchar*) xi->data, xi->width, xi->height, xi->bytes_per_line, QImage::Format_RGB32 ).copy();
+
+ XDestroyImage(xi);
+
+ return result;
+}
+
+
+
+
+
+
+
+QT_END_NAMESPACE
+#include "qtestlitewindow.moc"
diff --git a/src/plugins/platforms/testlite/qtestlitewindow.h b/src/plugins/platforms/testlite/qtestlitewindow.h
new file mode 100644
index 0000000000..dc628f1ca7
--- /dev/null
+++ b/src/plugins/platforms/testlite/qtestlitewindow.h
@@ -0,0 +1,157 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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$
+**
+****************************************************************************/
+
+#ifndef QTESTLITEWINDOW_H
+#define QTESTLITEWINDOW_H
+
+#include <QPlatformWindow>
+#include <qevent.h>
+
+#include <QObject>
+#include <QImage>
+#include <qtimer.h>
+#include <QDateTime>
+
+#include <private/qt_x11_p.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+
+
+class QTestLiteIntegration;
+class QTestLiteScreen;
+class QTestLiteWindowSurface;
+class MyX11Cursors;
+class QTestLiteWindow;
+
+class MyDisplay : public QObject
+{
+ Q_OBJECT;
+public:
+ MyDisplay();
+ ~MyDisplay();
+
+ Window rootWindow() { return RootWindow(display, screen); }
+ unsigned long blackPixel() { return BlackPixel(display, screen); }
+ unsigned long whitePixel() { return WhitePixel(display, screen); }
+
+ bool handleEvent(XEvent *xe);
+ QImage grabWindow(Window window, int x, int y, int w, int h);
+
+public slots:
+ void eventDispatcher();
+
+public: //###
+ Display * display;
+ int screen;
+ int width, height;
+ int physicalWidth;
+ int physicalHeight;
+
+ QList<QTestLiteWindow*> windowList;
+
+ MyX11Cursors * cursors;
+};
+
+struct MyShmImageInfo;
+
+class QTestLiteWindow : public QPlatformWindow
+{
+public:
+ QTestLiteWindow(const QTestLiteIntegration *platformIntegration,
+ QTestLiteScreen *screen, QWidget *window);
+ ~QTestLiteWindow();
+
+
+ void mousePressEvent(XButtonEvent*);
+ void handleMouseEvent(QEvent::Type, XButtonEvent *ev);
+
+ void handleKeyEvent(QEvent::Type, void *);
+ void handleCloseEvent();
+ void handleEnterEvent();
+ void handleLeaveEvent();
+
+ void resizeEvent(XConfigureEvent *configure_event);
+ void paintEvent();
+
+
+ void setGeometry(const QRect &rect);
+
+ Qt::WindowFlags setWindowFlags(Qt::WindowFlags type);
+ Qt::WindowFlags windowFlags() const;
+ void setVisible(bool visible);
+ WId winId() const;
+ void setParent(const QPlatformWindow *window);
+ void raise();
+ void lower();
+ void setWindowTitle(const QString &title);
+
+ void setCursor(QCursor * cursor);
+
+ QPlatformGLContext *glContext() const;
+
+private:
+ int xpos, ypos;
+ int width, height;
+ Window x_window;
+ GC gc;
+
+ GC createGC();
+ Cursor createCursorShape(int cshape);
+ Cursor createCursorBitmap(QCursor * cursor);
+
+ int currentCursor;
+
+ MyDisplay *xd;
+
+ QTestLiteScreen *mScreen;
+ Qt::WindowFlags window_flags;
+ QPlatformGLContext *mGLContext;
+
+ friend class QTestLiteWindowSurface; // x_window, gc and windowSurface
+};
+
+
+
+
+
+#endif
diff --git a/src/plugins/platforms/testlite/qtestlitewindowsurface.cpp b/src/plugins/platforms/testlite/qtestlitewindowsurface.cpp
new file mode 100644
index 0000000000..b3232c84cd
--- /dev/null
+++ b/src/plugins/platforms/testlite/qtestlitewindowsurface.cpp
@@ -0,0 +1,226 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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 "qtestlitewindowsurface.h"
+#include "qtestliteintegration.h"
+
+#include <QtCore/qdebug.h>
+#include <QWindowSystemInterface>
+
+#include "qtestlitewindow.h"
+
+# include <sys/ipc.h>
+# include <sys/shm.h>
+# include <X11/extensions/XShm.h>
+
+QT_BEGIN_NAMESPACE
+
+
+struct MyShmImageInfo {
+ MyShmImageInfo(Display *xdisplay) : image(0), display(xdisplay) {}
+ ~MyShmImageInfo() { destroy(); }
+
+ void destroy();
+
+ XShmSegmentInfo shminfo;
+ XImage *image;
+ Display *display;
+};
+
+//void QTestLiteWindowSurface::flush()
+
+
+#ifndef DONT_USE_MIT_SHM
+void MyShmImageInfo::destroy()
+{
+ XShmDetach (display, &shminfo);
+ XDestroyImage (image);
+ shmdt (shminfo.shmaddr);
+ shmctl (shminfo.shmid, IPC_RMID, 0);
+}
+#endif
+
+void QTestLiteWindowSurface::resizeShmImage(int width, int height)
+{
+ MyDisplay *xd = xw->xd;
+
+#ifdef DONT_USE_MIT_SHM
+ shm_img = QImage(width, height, QImage::Format_RGB32);
+#else
+ if (image_info)
+ image_info->destroy();
+ else
+ image_info = new MyShmImageInfo(xd->display);
+
+ Visual *visual = DefaultVisual(xd->display, xd->screen);
+
+
+ XImage *image = XShmCreateImage (xd->display, visual, 24, ZPixmap, 0,
+ &image_info->shminfo, width, height);
+
+
+ image_info->shminfo.shmid = shmget (IPC_PRIVATE,
+ image->bytes_per_line * image->height, IPC_CREAT|0777);
+
+ image_info->shminfo.shmaddr = image->data = (char*)shmat (image_info->shminfo.shmid, 0, 0);
+ image_info->shminfo.readOnly = False;
+
+ image_info->image = image;
+
+ Status shm_attach_status = XShmAttach(xd->display, &image_info->shminfo);
+
+ Q_ASSERT(shm_attach_status == True);
+
+ shm_img = QImage( (uchar*) image->data, image->width, image->height, image->bytes_per_line, QImage::Format_RGB32 );
+#endif
+ painted = false;
+}
+
+
+void QTestLiteWindowSurface::resizeBuffer(QSize s)
+{
+ if (shm_img.size() != s)
+ resizeShmImage(s.width(), s.height());
+}
+
+QSize QTestLiteWindowSurface::bufferSize() const
+{
+ return shm_img.size();
+}
+
+QTestLiteWindowSurface::QTestLiteWindowSurface (QTestLiteScreen */*screen*/, QWidget *window)
+ : QWindowSurface(window),
+ painted(false), image_info(0)
+{
+ xw = static_cast<QTestLiteWindow*>(window->platformWindow());
+// qDebug() << "QTestLiteWindowSurface::QTestLiteWindowSurface:" << xw->window;
+}
+
+QTestLiteWindowSurface::~QTestLiteWindowSurface()
+{
+ delete image_info;
+}
+
+QPaintDevice *QTestLiteWindowSurface::paintDevice()
+{
+ return &shm_img;
+}
+
+
+void QTestLiteWindowSurface::flush(QWidget *widget, const QRegion &region, const QPoint &offset)
+{
+ Q_UNUSED(widget);
+ Q_UNUSED(region);
+ Q_UNUSED(offset);
+
+ // qDebug() << "QTestLiteWindowSurface::flush:" << (long)this;
+
+ if (!painted)
+ return;
+
+ MyDisplay *xd = xw->xd;
+ GC gc = xw->gc;
+ Window window = xw->x_window;
+#ifdef DONT_USE_MIT_SHM
+ // just convert the image every time...
+ if (!shm_img.isNull()) {
+ Visual *visual = DefaultVisual(xd->display, xd->screen);
+
+ QImage image = shm_img;
+ //img.convertToFormat(
+ XImage *xi = XCreateImage(xd->display, visual, 24, ZPixmap,
+ 0, (char *) image.scanLine(0), image.width(), image.height(),
+ 32, image.bytesPerLine());
+
+ int x = 0;
+ int y = 0;
+
+ /*int r =*/ XPutImage(xd->display, window, gc, xi, 0, 0, x, y, image.width(), image.height());
+
+ xi->data = 0; // QImage owns these bits
+ XDestroyImage(xi);
+ }
+#else
+ // Use MIT_SHM
+ if (image_info && image_info->image) {
+ //qDebug() << "Here we go" << image_info->image->width << image_info->image->height;
+ int x = 0;
+ int y = 0;
+
+ // We could set send_event to true, and then use the ShmCompletion to synchronize,
+ // but let's do like Qt/11 and just use XSync
+ XShmPutImage (xd->display, window, gc, image_info->image, 0, 0,
+ x, y, image_info->image->width, image_info->image->height,
+ /*send_event*/ False);
+
+ XSync(xd->display, False);
+ }
+#endif
+}
+
+// from qwindowsurface.cpp
+extern void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset);
+
+bool QTestLiteWindowSurface::scroll(const QRegion &area, int dx, int dy)
+{
+ if (shm_img.isNull())
+ return false;
+
+ const QVector<QRect> rects = area.rects();
+ for (int i = 0; i < rects.size(); ++i)
+ qt_scrollRectInImage(shm_img, rects.at(i), QPoint(dx, dy));
+
+ return true;
+}
+
+
+void QTestLiteWindowSurface::beginPaint(const QRegion &region)
+{
+ Q_UNUSED(region);
+ resizeBuffer(size());
+}
+
+void QTestLiteWindowSurface::endPaint(const QRegion &region)
+{
+ Q_UNUSED(region);
+ painted = true; //there is content in the buffer
+}
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/testlite/qtestlitewindowsurface.h b/src/plugins/platforms/testlite/qtestlitewindowsurface.h
new file mode 100644
index 0000000000..915e7fe688
--- /dev/null
+++ b/src/plugins/platforms/testlite/qtestlitewindowsurface.h
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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$
+**
+****************************************************************************/
+
+#ifndef QWINDOWSURFACE_TESTLITE_H
+#define QWINDOWSURFACE_TESTLITE_H
+
+#include <QtGui/private/qwindowsurface_p.h>
+
+
+QT_BEGIN_NAMESPACE
+
+class QTestLiteWindow;
+class QTestLiteIntegration;
+class QTestLiteScreen;
+class MyShmImageInfo;
+
+class QTestLiteWindowSurface : public QWindowSurface
+{
+public:
+ QTestLiteWindowSurface (QTestLiteScreen *screen, QWidget *window);
+ ~QTestLiteWindowSurface();
+
+ QPaintDevice *paintDevice();
+// void flush();
+ void flush(QWidget *widget, const QRegion &region, const QPoint &offset);
+// void resize(const QSize &size);
+ bool scroll(const QRegion &area, int dx, int dy);
+
+ void beginPaint(const QRegion &region);
+ void endPaint(const QRegion &region);
+
+private:
+ bool painted;
+ void resizeBuffer(QSize);
+ QSize bufferSize() const;
+
+
+ void resizeShmImage(int width, int height);
+
+ QImage shm_img;
+ MyShmImageInfo *image_info;
+
+ QTestLiteWindow *xw;
+
+};
+
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/testlite/testlite.pro b/src/plugins/platforms/testlite/testlite.pro
new file mode 100644
index 0000000000..05bd384a1d
--- /dev/null
+++ b/src/plugins/platforms/testlite/testlite.pro
@@ -0,0 +1,29 @@
+TARGET = qtestlite
+
+include(../../qpluginbase.pri)
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
+
+SOURCES = \
+ main.cpp \
+ qtestliteintegration.cpp \
+ qtestlitewindowsurface.cpp \
+ qtestlitewindow.cpp
+
+HEADERS = \
+ qtestliteintegration.h \
+ qtestlitewindowsurface.h \
+ qtestlitewindow.h
+
+
+LIBS += -lX11 -lXext
+
+include (../fontdatabases/genericunix/genericunix.pri)
+
+contains(QT_CONFIG, opengl) {
+ QT += opengl
+ HEADERS += qglxintegration.h
+ SOURCES += qglxintegration.cpp
+}
+
+target.path += $$[QT_INSTALL_PLUGINS]/platforms
+INSTALLS += target
diff --git a/src/plugins/platforms/vnc/main.cpp b/src/plugins/platforms/vnc/main.cpp
new file mode 100644
index 0000000000..e051e2d402
--- /dev/null
+++ b/src/plugins/platforms/vnc/main.cpp
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qvncintegration.h"
+#include <qstringlist.h>
+#include <QtGui/QPlatformIntegrationPlugin>
+
+QT_BEGIN_NAMESPACE
+
+class QVNCIntegrationPlugin : public QPlatformIntegrationPlugin
+{
+public:
+ QStringList keys() const;
+ QPlatformIntegration *create(const QString&, const QStringList &);
+};
+
+QStringList QVNCIntegrationPlugin::keys() const
+{
+ QStringList list;
+ list << "VNC";
+ return list;
+}
+
+QPlatformIntegration* QVNCIntegrationPlugin::create(const QString& system, const QStringList& paramList)
+{
+ Q_UNUSED(paramList);
+ if (system.toLower() == "vnc")
+ return new QVNCIntegration(paramList);
+
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(vnc, QVNCIntegrationPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/vnc/qvnccursor.cpp b/src/plugins/platforms/vnc/qvnccursor.cpp
new file mode 100644
index 0000000000..e83696d6c6
--- /dev/null
+++ b/src/plugins/platforms/vnc/qvnccursor.cpp
@@ -0,0 +1,156 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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 <QPainter>
+#include <QTcpSocket>
+#include <arpa/inet.h>
+#include <QBitmap>
+#include <QApplication>
+
+#include <QDebug>
+
+#include "qvnccursor.h"
+#include "qvncserver.h"
+#include "qvncintegration.h"
+
+QT_BEGIN_NAMESPACE
+
+QVNCCursor::QVNCCursor(QVNCServer * srvr, QVNCScreen *scr )
+ :QPlatformSoftwareCursor(scr), useVncCursor(false), server(srvr)
+{
+}
+
+void QVNCCursor::changeCursor(QCursor * widgetCursor, QWidget * widget)
+{
+ QPlatformSoftwareCursor::changeCursor(widgetCursor, widget);
+ if (useVncCursor) {
+ server->setDirtyCursor();
+ } else {
+ setDirty();
+ }
+}
+
+void QVNCCursor::setCursorMode(bool vnc)
+{
+ if (vnc) {
+ setDirty();
+ server->setDirtyCursor();
+ } else {
+ server->setDirtyCursor();
+ }
+ useVncCursor = vnc;
+}
+
+QRect QVNCCursor::drawCursor(QPainter & painter)
+{
+ if (useVncCursor)
+ return QRect();
+
+ return QPlatformSoftwareCursor::drawCursor(painter);
+}
+
+void QVNCCursor::clearClientCursor()
+{
+ QTcpSocket *socket = server->clientSocket();
+ if (!socket) {
+ return;
+ }
+ // FramebufferUpdate header
+ {
+ const quint16 tmp[6] = { htons(0),
+ htons(1),
+ htons(0), htons(0),
+ htons(0),
+ htons(0) };
+ socket->write((char*)tmp, sizeof(tmp));
+
+ const quint32 encoding = htonl(-239);
+ socket->write((char*)(&encoding), sizeof(encoding));
+ }
+}
+
+void QVNCCursor::sendClientCursor()
+{
+ if (useVncCursor == false) {
+ clearClientCursor();
+ return;
+ }
+ QImage *image = graphic->image();
+ if (image->isNull())
+ return;
+ QTcpSocket *socket = server->clientSocket();
+ if (!socket) {
+ return;
+ }
+ // FramebufferUpdate header
+ {
+ const quint16 tmp[6] = { htons(0),
+ htons(1),
+ htons(graphic->hotspot().x()), htons(graphic->hotspot().y()),
+ htons(image->width()),
+ htons(image->height()) };
+ socket->write((char*)tmp, sizeof(tmp));
+
+ const quint32 encoding = htonl(-239);
+ socket->write((char*)(&encoding), sizeof(encoding));
+ }
+
+ // write pixels
+ //Q_ASSERT(cursor->hasAlphaChannel());
+ const QImage img = image->convertToFormat(QImage::Format_RGB32);
+ const int n = server->clientBytesPerPixel() * img.width();
+ char *buffer = new char[n];
+ for (int i = 0; i < img.height(); ++i) {
+ server->convertPixels(buffer, (const char*)img.scanLine(i), img.width());
+ socket->write(buffer, n);
+ }
+ delete[] buffer;
+
+ // write mask
+ const QImage bitmap = image->createAlphaMask().convertToFormat(QImage::Format_Mono);
+ Q_ASSERT(bitmap.depth() == 1);
+ Q_ASSERT(bitmap.size() == img.size());
+ const int width = (bitmap.width() + 7) / 8;
+ for (int i = 0; i < bitmap.height(); ++i)
+ socket->write((const char*)bitmap.scanLine(i), width);
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/vnc/qvnccursor.h b/src/plugins/platforms/vnc/qvnccursor.h
new file mode 100644
index 0000000000..eeb3686b7b
--- /dev/null
+++ b/src/plugins/platforms/vnc/qvnccursor.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenVG 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$
+**
+****************************************************************************/
+#ifndef QVNCCURSOR_H
+#define QVNCCURSOR_H
+
+#include "../fb_base/fb_base.h"
+#include <QList>
+#include <QImage>
+#include <QMouseEvent>
+
+QT_BEGIN_NAMESPACE
+
+class QVNCScreen;
+class QVNCServer;
+
+class QVNCCursor : public QPlatformSoftwareCursor {
+public:
+ QVNCCursor(QVNCServer *, QVNCScreen *);
+
+ // input methods
+ void setCursorMode(bool vnc);
+ void changeCursor(QCursor * widgetCursor, QWidget * widget);
+
+ // output methods
+ QRect drawCursor(QPainter &);
+
+ // VNC client communication
+ void sendClientCursor();
+ void clearClientCursor();
+private:
+ bool useVncCursor; // VNC or local
+
+ QVNCServer * server; // VNC server to get events from
+};
+
+QT_END_NAMESPACE
+
+#endif // QVNCCURSOR_H
diff --git a/src/plugins/platforms/vnc/qvncintegration.cpp b/src/plugins/platforms/vnc/qvncintegration.cpp
new file mode 100644
index 0000000000..b36ff333c5
--- /dev/null
+++ b/src/plugins/platforms/vnc/qvncintegration.cpp
@@ -0,0 +1,242 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qvncintegration.h"
+#include "../fb_base/fb_base.h"
+#include <private/qapplication_p.h>
+#include <QtGui/private/qpixmap_raster_p.h>
+#include <QtCore/qdebug.h>
+
+#include <qvncserver.h>
+#include <QtGui/QPainter>
+
+#include <QtCore/QTimer>
+#include "qgenericunixfontdatabase.h"
+
+QVNCScreen::QVNCScreen(QRect screenSize, int screenId)
+ : QFbScreen::QFbScreen()
+{
+ setGeometry(screenSize);
+ setDepth(32);
+ setFormat(QImage::Format_RGB32);
+ setPhysicalSize((geometry().size()*254)/720);
+
+
+ d_ptr = new QVNCScreenPrivate(this, screenId);
+
+ cursor = new QVNCCursor(d_ptr->vncServer, this);
+ d_ptr->vncServer->setCursor(static_cast<QVNCCursor *>(cursor));
+}
+
+QVNCDirtyMap *QVNCScreen::dirtyMap()
+{
+ return d_ptr->dirty;
+}
+
+QRegion QVNCScreen::doRedraw()
+{
+ QRegion touched;
+ touched = QFbScreen::doRedraw();
+
+ QVector<QRect> rects = touched.rects();
+ for (int i = 0; i < rects.size(); i++)
+ d_ptr->setDirty(rects[i]);
+ return touched;
+}
+
+static inline int defaultWidth() { return 800; }
+static inline int defaultHeight() { return 600; }
+static inline int defaultDisplay() { return 0; }
+
+static void usage()
+{
+ qWarning() << "VNC Platform Integration options:";
+ qWarning() << " size=<Width>x<Height> - set the display width and height";
+ qWarning() << " defaults to" << defaultWidth() << "x" << defaultHeight();
+ qWarning() << " display=<ID> - set the VNC display port to ID + 5900";
+ qWarning() << " defaults to" << defaultDisplay();
+ qWarning() << " offset=<X>x<Y> - set the current screens offset";
+ qWarning() << " vnc - start configuration of a new screen";
+ qWarning() << " size and offset are inherited from the previous screen if not set";
+ qWarning() << " display id is incremented from the previous screen if not set";
+ qWarning() << " virtual - manage the set of screens as a virtual desktop";
+}
+
+QVNCIntegration::QVNCIntegration(const QStringList& paramList)
+ : virtualDesktop(false), fontDb(new QGenericUnixFontDatabase())
+{
+ int sizeX = defaultWidth();
+ int sizeY = defaultHeight();
+ int offsetX = 0;
+ int offsetY = 0;
+ int display = defaultDisplay();
+ bool showUsage = false;
+
+ foreach(QString confString, paramList) {
+ if (confString.startsWith(QLatin1String("size="))) {
+ QString val = confString.section(QLatin1Char('='), 1, 1);
+ sizeX = val.section(QLatin1Char('x'), 0, 0).toInt();
+ sizeY = val.section(QLatin1Char('x'), 1, 1).toInt();
+ }
+ else if (confString.startsWith(QLatin1String("display="))) {
+ display = confString.section(QLatin1Char('='), 1, 1).toInt();
+ }
+ else if (confString.startsWith(QLatin1String("offset="))) {
+ QString val = confString.section(QLatin1Char('='), 1, 1);
+ offsetX = val.section(QLatin1Char('x'), 0, 0).toInt();
+ offsetY = val.section(QLatin1Char('x'), 1, 1).toInt();
+ }
+ else if (confString == QLatin1String("vnc")) {
+ QRect screenRect(offsetX, offsetY, sizeX, sizeY);
+ QVNCScreen *screen = new QVNCScreen(screenRect, display);
+ mScreens.append(screen);
+ screen->setObjectName(QString("screen %1").arg(display));
+ screen->setDirty(screenRect);
+ ++display;
+ }
+ else if (confString == QLatin1String("virtual")) {
+ virtualDesktop = true;
+ }
+ else {
+ qWarning() << "Unknown VNC option:" << confString;
+ showUsage = true;
+ }
+ }
+
+ if (showUsage)
+ usage();
+
+ QRect screenRect(offsetX, offsetY, sizeX, sizeY);
+ QVNCScreen *screen = new QVNCScreen(screenRect, display);
+ mScreens.append(screen);
+ mPrimaryScreen = qobject_cast<QVNCScreen *>(mScreens.first());
+ screen->setObjectName(QString("screen %1").arg(display));
+ screen->setDirty(screenRect);
+}
+
+QPixmapData *QVNCIntegration::createPixmapData(QPixmapData::PixelType type) const
+{
+ return new QRasterPixmapData(type);
+}
+
+QWindowSurface *QVNCIntegration::createWindowSurface(QWidget *widget, WId) const
+{
+ QFbWindowSurface * surface;
+ surface = new QFbWindowSurface(mPrimaryScreen, widget);
+ return surface;
+}
+
+
+QPlatformWindow *QVNCIntegration::createPlatformWindow(QWidget *widget, WId /*winId*/) const
+{
+ QFbWindow *w = new QFbWindow(widget);
+ if (virtualDesktop) {
+ QList<QPlatformScreen *>::const_iterator i = mScreens.constBegin();
+ QList<QPlatformScreen *>::const_iterator end = mScreens.constEnd();
+ QFbScreen *screen;
+ while (i != end) {
+ screen = static_cast<QFbScreen *>(*i);
+ screen->addWindow(w);
+ ++i;
+ }
+ }
+ else
+ mPrimaryScreen->addWindow(w);
+ return w;
+}
+
+QPixmap QVNCIntegration::grabWindow(WId window, int x, int y, int width, int height) const
+{
+// qDebug() << "QVNCIntegration::grabWindow" << window << x << y << width << height;
+
+ if (window == 0) { //desktop
+ QImage *desktopImage = mPrimaryScreen->image();
+ if (x==0 && y == 0 && width < 0 && height < 0) {
+ return QPixmap::fromImage(*desktopImage);
+ }
+ if (width < 0)
+ width = desktopImage->width() - x;
+ if (height < 0)
+ height = desktopImage->height() - y;
+ int bytesPerPixel = desktopImage->depth()/8; //We don't support 1, 2, or 4 bpp
+ QImage img(desktopImage->scanLine(y) + bytesPerPixel*x, width, height, desktopImage->bytesPerLine(), desktopImage->format());
+ return QPixmap::fromImage(img);
+ }
+ QWidget *win = QWidget::find(window);
+ if (win) {
+ QRect r = win->geometry();
+ if (width < 0)
+ width = r.width() - x;
+ if (height < 0)
+ height = r.height() - y;
+ QImage *desktopImage = mPrimaryScreen->image();
+ int bytesPerPixel = desktopImage->depth()/8; //We don't support 1, 2, or 4 bpp
+
+ QImage img(desktopImage->scanLine(r.top() + y) + bytesPerPixel*(r.left()+x), width, height, desktopImage->bytesPerLine(), desktopImage->format());
+ return QPixmap::fromImage(img);
+ }
+ return QPixmap();
+}
+
+
+void QVNCIntegration::moveToScreen(QWidget *window, int screen)
+{
+ if (virtualDesktop) { // all windows exist on all screens in virtual desktop mode
+ return;
+ }
+ if (screen < 0 || screen > mScreens.size())
+ return;
+ QVNCScreen * newScreen = qobject_cast<QVNCScreen *>(mScreens.at(screen));
+ for(int i = 0; i < mScreens.size(); i++) {
+ QVNCScreen *oldScreen = qobject_cast<QVNCScreen *>(mScreens.at(i));
+ if (oldScreen->windowStack.contains(static_cast<QFbWindow *>(window->platformWindow()))) {
+ oldScreen->removeWindow(static_cast<QFbWindow *>(window->platformWindow()));
+ break;
+ }
+ }
+ window->platformWindow()->setGeometry(window->geometry()); // this should be unified elsewhere
+ newScreen->addWindow(static_cast<QFbWindow *>(window->platformWindow()));
+}
+
+QPlatformFontDatabase *QVNCIntegration::fontDatabase() const
+{
+ return fontDb;
+}
diff --git a/src/plugins/platforms/vnc/qvncintegration.h b/src/plugins/platforms/vnc/qvncintegration.h
new file mode 100644
index 0000000000..dfc0e6bde9
--- /dev/null
+++ b/src/plugins/platforms/vnc/qvncintegration.h
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 QGRAPHICSSYSTEM_VNC_H
+#define QGRAPHICSSYSTEM_VNC_H
+
+#include "qvnccursor.h"
+#include "../fb_base/fb_base.h"
+#include <QPlatformIntegration>
+#include "qgenericunixfontdatabase.h"
+
+QT_BEGIN_NAMESPACE
+
+class QVNCServer;
+class QVNCDirtyMap;
+
+class QVNCScreenPrivate;
+
+class QVNCScreen : public QFbScreen
+{
+ Q_OBJECT
+public:
+ QVNCScreen(QRect screenSize, int screenId);
+
+ int linestep() const { return image() ? image()->bytesPerLine() : 0; }
+ uchar *base() const { return image() ? image()->bits() : 0; }
+ QVNCDirtyMap *dirtyMap();
+
+public:
+ QVNCScreenPrivate *d_ptr;
+
+private:
+ QVNCServer *server;
+ QRegion doRedraw();
+ friend class QVNCIntegration;
+};
+
+class QVNCIntegrationPrivate;
+
+
+class QVNCIntegration : public QPlatformIntegration
+{
+public:
+ QVNCIntegration(const QStringList& paramList);
+
+ QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
+ QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId) const;
+ QWindowSurface *createWindowSurface(QWidget *widget, WId winId) const;
+
+ QPixmap grabWindow(WId window, int x, int y, int width, int height) const;
+
+ QList<QPlatformScreen *> screens() const { return mScreens; }
+
+ bool isVirtualDesktop() { return virtualDesktop; }
+ void moveToScreen(QWidget *window, int screen);
+
+ QPlatformFontDatabase *fontDatabase() const;
+
+private:
+ QVNCScreen *mPrimaryScreen;
+ QList<QPlatformScreen *> mScreens;
+ bool virtualDesktop;
+ QPlatformFontDatabase *fontDb;
+};
+
+
+
+QT_END_NAMESPACE
+
+#endif //QGRAPHICSSYSTEM_VNC_H
+
diff --git a/src/plugins/platforms/vnc/qvncserver.cpp b/src/plugins/platforms/vnc/qvncserver.cpp
new file mode 100644
index 0000000000..288d1bcbcd
--- /dev/null
+++ b/src/plugins/platforms/vnc/qvncserver.cpp
@@ -0,0 +1,1935 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "qvncserver.h"
+
+#include <QtCore/qtimer.h>
+#include <QtCore/qregexp.h>
+#include <QtGui/qwidget.h>
+#include <QtGui/qpolygon.h>
+#include <QtGui/qpainter.h>
+
+#include <QtGui/qevent.h>
+#include <QWindowSystemInterface>
+
+#include <qplatformdefs.h>
+
+#include <qdebug.h>
+
+#include <stdlib.h>
+
+
+#define QT_QWS_VNC_DEBUG
+#define QT_NO_QWS_CURSOR //###
+
+
+QT_BEGIN_NAMESPACE
+
+
+
+//copied from qscreen_qws.h
+#ifndef QT_QWS_DEPTH16_RGB
+#define QT_QWS_DEPTH16_RGB 565
+#endif
+static const int qt_rbits = (QT_QWS_DEPTH16_RGB/100);
+static const int qt_gbits = (QT_QWS_DEPTH16_RGB/10%10);
+static const int qt_bbits = (QT_QWS_DEPTH16_RGB%10);
+static const int qt_red_shift = qt_bbits+qt_gbits-(8-qt_rbits);
+static const int qt_green_shift = qt_bbits-(8-qt_gbits);
+static const int qt_neg_blue_shift = 8-qt_bbits;
+static const int qt_blue_mask = (1<<qt_bbits)-1;
+static const int qt_green_mask = (1<<(qt_gbits+qt_bbits))-(1<<qt_bbits);
+static const int qt_red_mask = (1<<(qt_rbits+qt_gbits+qt_bbits))-(1<<(qt_gbits+qt_bbits));
+
+static const int qt_red_rounding_shift = qt_red_shift + qt_rbits;
+static const int qt_green_rounding_shift = qt_green_shift + qt_gbits;
+static const int qt_blue_rounding_shift = qt_bbits - qt_neg_blue_shift;
+
+
+inline QRgb qt_conv16ToRgb(ushort c)
+{
+ const int r=(c & qt_red_mask);
+ const int g=(c & qt_green_mask);
+ const int b=(c & qt_blue_mask);
+ const int tr = r >> qt_red_shift | r >> qt_red_rounding_shift;
+ const int tg = g >> qt_green_shift | g >> qt_green_rounding_shift;
+ const int tb = b << qt_neg_blue_shift | b >> qt_blue_rounding_shift;
+
+ return qRgb(tr,tg,tb);
+}
+
+
+
+//===========================================================================
+
+static const struct {
+ int keysym;
+ int keycode;
+} keyMap[] = {
+ { 0xff08, Qt::Key_Backspace },
+ { 0xff09, Qt::Key_Tab },
+ { 0xff0d, Qt::Key_Return },
+ { 0xff1b, Qt::Key_Escape },
+ { 0xff63, Qt::Key_Insert },
+ { 0xffff, Qt::Key_Delete },
+ { 0xff50, Qt::Key_Home },
+ { 0xff57, Qt::Key_End },
+ { 0xff55, Qt::Key_PageUp },
+ { 0xff56, Qt::Key_PageDown },
+ { 0xff51, Qt::Key_Left },
+ { 0xff52, Qt::Key_Up },
+ { 0xff53, Qt::Key_Right },
+ { 0xff54, Qt::Key_Down },
+ { 0xffbe, Qt::Key_F1 },
+ { 0xffbf, Qt::Key_F2 },
+ { 0xffc0, Qt::Key_F3 },
+ { 0xffc1, Qt::Key_F4 },
+ { 0xffc2, Qt::Key_F5 },
+ { 0xffc3, Qt::Key_F6 },
+ { 0xffc4, Qt::Key_F7 },
+ { 0xffc5, Qt::Key_F8 },
+ { 0xffc6, Qt::Key_F9 },
+ { 0xffc7, Qt::Key_F10 },
+ { 0xffc8, Qt::Key_F11 },
+ { 0xffc9, Qt::Key_F12 },
+ { 0xffe1, Qt::Key_Shift },
+ { 0xffe2, Qt::Key_Shift },
+ { 0xffe3, Qt::Key_Control },
+ { 0xffe4, Qt::Key_Control },
+ { 0xffe7, Qt::Key_Meta },
+ { 0xffe8, Qt::Key_Meta },
+ { 0xffe9, Qt::Key_Alt },
+ { 0xffea, Qt::Key_Alt },
+ { 0, 0 }
+};
+
+void QRfbRect::read(QTcpSocket *s)
+{
+ quint16 buf[4];
+ s->read((char*)buf, 8);
+ x = ntohs(buf[0]);
+ y = ntohs(buf[1]);
+ w = ntohs(buf[2]);
+ h = ntohs(buf[3]);
+}
+
+void QRfbRect::write(QTcpSocket *s) const
+{
+ quint16 buf[4];
+ buf[0] = htons(x);
+ buf[1] = htons(y);
+ buf[2] = htons(w);
+ buf[3] = htons(h);
+ s->write((char*)buf, 8);
+}
+
+void QRfbPixelFormat::read(QTcpSocket *s)
+{
+ char buf[16];
+ s->read(buf, 16);
+ bitsPerPixel = buf[0];
+ depth = buf[1];
+ bigEndian = buf[2];
+ trueColor = buf[3];
+
+ quint16 a = ntohs(*(quint16 *)(buf + 4));
+ redBits = 0;
+ while (a) { a >>= 1; redBits++; }
+
+ a = ntohs(*(quint16 *)(buf + 6));
+ greenBits = 0;
+ while (a) { a >>= 1; greenBits++; }
+
+ a = ntohs(*(quint16 *)(buf + 8));
+ blueBits = 0;
+ while (a) { a >>= 1; blueBits++; }
+
+ redShift = buf[10];
+ greenShift = buf[11];
+ blueShift = buf[12];
+}
+
+void QRfbPixelFormat::write(QTcpSocket *s)
+{
+ char buf[16];
+ buf[0] = bitsPerPixel;
+ buf[1] = depth;
+ buf[2] = bigEndian;
+ buf[3] = trueColor;
+
+ quint16 a = 0;
+ for (int i = 0; i < redBits; i++) a = (a << 1) | 1;
+ *(quint16 *)(buf + 4) = htons(a);
+
+ a = 0;
+ for (int i = 0; i < greenBits; i++) a = (a << 1) | 1;
+ *(quint16 *)(buf + 6) = htons(a);
+
+ a = 0;
+ for (int i = 0; i < blueBits; i++) a = (a << 1) | 1;
+ *(quint16 *)(buf + 8) = htons(a);
+
+ buf[10] = redShift;
+ buf[11] = greenShift;
+ buf[12] = blueShift;
+ s->write(buf, 16);
+}
+
+
+void QRfbServerInit::setName(const char *n)
+{
+ delete[] name;
+ name = new char [strlen(n) + 1];
+ strcpy(name, n);
+}
+
+void QRfbServerInit::read(QTcpSocket *s)
+{
+ s->read((char *)&width, 2);
+ width = ntohs(width);
+ s->read((char *)&height, 2);
+ height = ntohs(height);
+ format.read(s);
+
+ quint32 len;
+ s->read((char *)&len, 4);
+ len = ntohl(len);
+
+ name = new char [len + 1];
+ s->read(name, len);
+ name[len] = '\0';
+}
+
+void QRfbServerInit::write(QTcpSocket *s)
+{
+ quint16 t = htons(width);
+ s->write((char *)&t, 2);
+ t = htons(height);
+ s->write((char *)&t, 2);
+ format.write(s);
+ quint32 len = strlen(name);
+ len = htonl(len);
+ s->write((char *)&len, 4);
+ s->write(name, strlen(name));
+}
+
+bool QRfbSetEncodings::read(QTcpSocket *s)
+{
+ if (s->bytesAvailable() < 3)
+ return false;
+
+ char tmp;
+ s->read(&tmp, 1); // padding
+ s->read((char *)&count, 2);
+ count = ntohs(count);
+
+ return true;
+}
+
+bool QRfbFrameBufferUpdateRequest::read(QTcpSocket *s)
+{
+ if (s->bytesAvailable() < 9)
+ return false;
+
+ s->read(&incremental, 1);
+ rect.read(s);
+
+ return true;
+}
+
+bool QRfbKeyEvent::read(QTcpSocket *s)
+{
+ if (s->bytesAvailable() < 7)
+ return false;
+
+ s->read(&down, 1);
+ quint16 tmp;
+ s->read((char *)&tmp, 2); // padding
+
+ quint32 key;
+ s->read((char *)&key, 4);
+ key = ntohl(key);
+
+ unicode = 0;
+ keycode = 0;
+ int i = 0;
+ while (keyMap[i].keysym && !keycode) {
+ if (keyMap[i].keysym == (int)key)
+ keycode = keyMap[i].keycode;
+ i++;
+ }
+ if (!keycode) {
+ if (key <= 0xff) {
+ unicode = key;
+ if (key >= 'a' && key <= 'z')
+ keycode = Qt::Key_A + key - 'a';
+ else if (key >= ' ' && key <= '~')
+ keycode = Qt::Key_Space + key - ' ';
+ }
+ }
+
+ return true;
+}
+
+bool QRfbPointerEvent::read(QTcpSocket *s)
+{
+ if (s->bytesAvailable() < 5)
+ return false;
+
+ char buttonMask;
+ s->read(&buttonMask, 1);
+
+ buttons = Qt::NoButton;
+ wheelDirection = WheelNone;
+ if (buttonMask & 1)
+ buttons |= Qt::LeftButton;
+ if (buttonMask & 2)
+ buttons |= Qt::MidButton;
+ if (buttonMask & 4)
+ buttons |= Qt::RightButton;
+ if (buttonMask & 8)
+ wheelDirection = WheelUp;
+ if (buttonMask & 16)
+ wheelDirection = WheelDown;
+ if (buttonMask & 32)
+ wheelDirection = WheelLeft;
+ if (buttonMask & 64)
+ wheelDirection = WheelRight;
+
+ quint16 tmp;
+ s->read((char *)&tmp, 2);
+ x = ntohs(tmp);
+ s->read((char *)&tmp, 2);
+ y = ntohs(tmp);
+
+ return true;
+}
+
+bool QRfbClientCutText::read(QTcpSocket *s)
+{
+ if (s->bytesAvailable() < 7)
+ return false;
+
+ char tmp[3];
+ s->read(tmp, 3); // padding
+ s->read((char *)&length, 4);
+ length = ntohl(length);
+
+ return true;
+}
+
+//===========================================================================
+
+QVNCServer::QVNCServer(QVNCScreen *screen)
+ : qvnc_screen(screen), cursor(0)
+{
+ init(5900);
+}
+
+QVNCServer::QVNCServer(QVNCScreen *screen, int id)
+ : qvnc_screen(screen), cursor(0)
+{
+ init(5900 + id);
+}
+
+void QVNCServer::init(uint port)
+{
+ qDebug() << "QVNCServer::init" << port;
+
+ handleMsg = false;
+ client = 0;
+ encodingsPending = 0;
+ cutTextPending = 0;
+ keymod = 0;
+ state = Unconnected;
+ dirtyCursor = false;
+
+ refreshRate = 25;
+ timer = new QTimer(this);
+ timer->setSingleShot(true);
+ connect(timer, SIGNAL(timeout()), this, SLOT(checkUpdate()));
+
+ serverSocket = new QTcpServer(this);
+ if (!serverSocket->listen(QHostAddress::Any, port))
+ qDebug() << "QVNCServer could not connect:" << serverSocket->errorString();
+ else
+ qDebug("QVNCServer created on port %d", port);
+
+ connect(serverSocket, SIGNAL(newConnection()), this, SLOT(newConnection()));
+
+#ifndef QT_NO_QWS_CURSOR
+ qvnc_cursor = 0;
+#endif
+ encoder = 0;
+}
+
+QVNCServer::~QVNCServer()
+{
+ delete encoder;
+ encoder = 0;
+ delete client;
+ client = 0;
+#ifndef QT_NO_QWS_CURSOR
+ delete qvnc_cursor;
+ qvnc_cursor = 0;
+#endif
+}
+
+void QVNCServer::setDirty()
+{
+ if (state == Connected && !timer->isActive() &&
+ ((dirtyMap()->numDirty > 0) || dirtyCursor)) {
+ timer->start();
+ }
+}
+
+void QVNCServer::newConnection()
+{
+ if (client)
+ delete client;
+
+ client = serverSocket->nextPendingConnection();
+ connect(client,SIGNAL(readyRead()),this,SLOT(readClient()));
+ connect(client,SIGNAL(disconnected()),this,SLOT(discardClient()));
+ handleMsg = false;
+ encodingsPending = 0;
+ cutTextPending = 0;
+ supportHextile = false;
+ wantUpdate = false;
+
+ timer->start(1000 / refreshRate);
+ dirtyMap()->reset();
+
+ // send protocol version
+ const char *proto = "RFB 003.003\n";
+ client->write(proto, 12);
+ state = Protocol;
+
+// if (!qvnc_screen->screen())
+// QWSServer::instance()->enablePainting(true);
+}
+
+void QVNCServer::readClient()
+{
+ switch (state) {
+ case Protocol:
+ if (client->bytesAvailable() >= 12) {
+ char proto[13];
+ client->read(proto, 12);
+ proto[12] = '\0';
+ qDebug("Client protocol version %s", proto);
+ // No authentication
+ quint32 auth = htonl(1);
+ client->write((char *) &auth, sizeof(auth));
+ state = Init;
+ }
+ break;
+
+ case Init:
+ if (client->bytesAvailable() >= 1) {
+ quint8 shared;
+ client->read((char *) &shared, 1);
+
+ // Server Init msg
+ QRfbServerInit sim;
+ QRfbPixelFormat &format = sim.format;
+ switch (qvnc_screen->depth()) {
+ case 32:
+ format.bitsPerPixel = 32;
+ format.depth = 32;
+ format.bigEndian = 0;
+ format.trueColor = true;
+ format.redBits = 8;
+ format.greenBits = 8;
+ format.blueBits = 8;
+ format.redShift = 16;
+ format.greenShift = 8;
+ format.blueShift = 0;
+ break;
+
+ case 24:
+ format.bitsPerPixel = 24;
+ format.depth = 24;
+ format.bigEndian = 0;
+ format.trueColor = true;
+ format.redBits = 8;
+ format.greenBits = 8;
+ format.blueBits = 8;
+ format.redShift = 16;
+ format.greenShift = 8;
+ format.blueShift = 0;
+ break;
+
+ case 18:
+ format.bitsPerPixel = 24;
+ format.depth = 18;
+ format.bigEndian = 0;
+ format.trueColor = true;
+ format.redBits = 6;
+ format.greenBits = 6;
+ format.blueBits = 6;
+ format.redShift = 12;
+ format.greenShift = 6;
+ format.blueShift = 0;
+ break;
+
+ case 16:
+ format.bitsPerPixel = 16;
+ format.depth = 16;
+ format.bigEndian = 0;
+ format.trueColor = true;
+ format.redBits = 5;
+ format.greenBits = 6;
+ format.blueBits = 5;
+ format.redShift = 11;
+ format.greenShift = 5;
+ format.blueShift = 0;
+ break;
+
+ case 15:
+ format.bitsPerPixel = 16;
+ format.depth = 15;
+ format.bigEndian = 0;
+ format.trueColor = true;
+ format.redBits = 5;
+ format.greenBits = 5;
+ format.blueBits = 5;
+ format.redShift = 10;
+ format.greenShift = 5;
+ format.blueShift = 0;
+ break;
+
+ case 12:
+ format.bitsPerPixel = 16;
+ format.depth = 12;
+ format.bigEndian = 0;
+ format.trueColor = true;
+ format.redBits = 4;
+ format.greenBits = 4;
+ format.blueBits = 4;
+ format.redShift = 8;
+ format.greenShift = 4;
+ format.blueShift = 0;
+ break;
+
+ case 8:
+ case 4:
+ format.bitsPerPixel = 8;
+ format.depth = 8;
+ format.bigEndian = 0;
+ format.trueColor = false;
+ format.redBits = 0;
+ format.greenBits = 0;
+ format.blueBits = 0;
+ format.redShift = 0;
+ format.greenShift = 0;
+ format.blueShift = 0;
+ break;
+
+ default:
+ qDebug("QVNC cannot drive depth %d", qvnc_screen->depth());
+ discardClient();
+ return;
+ }
+ sim.width = qvnc_screen->geometry().width();
+ sim.height = qvnc_screen->geometry().height();
+ sim.setName("Qt for Embedded Linux VNC Server");
+ sim.write(client);
+ state = Connected;
+ }
+ break;
+
+ case Connected:
+ do {
+ if (!handleMsg) {
+ client->read((char *)&msgType, 1);
+ handleMsg = true;
+ }
+ if (handleMsg) {
+ switch (msgType ) {
+ case SetPixelFormat:
+ setPixelFormat();
+ break;
+ case FixColourMapEntries:
+ qDebug("Not supported: FixColourMapEntries");
+ handleMsg = false;
+ break;
+ case SetEncodings:
+ setEncodings();
+ break;
+ case FramebufferUpdateRequest:
+ frameBufferUpdateRequest();
+ break;
+ case KeyEvent:
+ keyEvent();
+ break;
+ case PointerEvent:
+ pointerEvent();
+ break;
+ case ClientCutText:
+ clientCutText();
+ break;
+ default:
+ qDebug("Unknown message type: %d", (int)msgType);
+ handleMsg = false;
+ }
+ }
+ } while (!handleMsg && client->bytesAvailable());
+ break;
+ default:
+ break;
+ }
+}
+
+#if 0//Q_BYTE_ORDER == Q_BIG_ENDIAN
+bool QVNCScreen::swapBytes() const
+{
+ if (depth() != 16)
+ return false;
+
+ if (screen())
+ return screen()->frameBufferLittleEndian();
+ return frameBufferLittleEndian();
+}
+#endif
+
+void QVNCServer::setPixelFormat()
+{
+ if (client->bytesAvailable() >= 19) {
+ char buf[3];
+ client->read(buf, 3); // just padding
+ pixelFormat.read(client);
+#ifdef QT_QWS_VNC_DEBUG
+ qDebug("Want format: %d %d %d %d %d %d %d %d %d %d",
+ int(pixelFormat.bitsPerPixel),
+ int(pixelFormat.depth),
+ int(pixelFormat.bigEndian),
+ int(pixelFormat.trueColor),
+ int(pixelFormat.redBits),
+ int(pixelFormat.greenBits),
+ int(pixelFormat.blueBits),
+ int(pixelFormat.redShift),
+ int(pixelFormat.greenShift),
+ int(pixelFormat.blueShift));
+#endif
+ if (!pixelFormat.trueColor) {
+ qDebug("Can only handle true color clients");
+ discardClient();
+ }
+ handleMsg = false;
+ sameEndian = (QSysInfo::ByteOrder == QSysInfo::BigEndian) == !!pixelFormat.bigEndian;
+ needConversion = pixelConversionNeeded();
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ swapBytes = qvnc_screen->swapBytes();
+#endif
+ }
+}
+
+void QVNCServer::setEncodings()
+{
+ QRfbSetEncodings enc;
+
+ if (!encodingsPending && enc.read(client)) {
+ encodingsPending = enc.count;
+ if (!encodingsPending)
+ handleMsg = false;
+ }
+
+ if (encoder) {
+ delete encoder;
+ encoder = 0;
+ }
+
+ enum Encodings {
+ Raw = 0,
+ CopyRect = 1,
+ RRE = 2,
+ CoRRE = 4,
+ Hextile = 5,
+ ZRLE = 16,
+ Cursor = -239,
+ DesktopSize = -223
+ };
+
+ supportCursor = false;
+
+ if (encodingsPending && (unsigned)client->bytesAvailable() >=
+ encodingsPending * sizeof(quint32)) {
+ for (int i = 0; i < encodingsPending; ++i) {
+ qint32 enc;
+ client->read((char *)&enc, sizeof(qint32));
+ enc = ntohl(enc);
+#ifdef QT_QWS_VNC_DEBUG
+ qDebug("QVNCServer::setEncodings: %d", enc);
+#endif
+ switch (enc) {
+ case Raw:
+ if (!encoder) {
+ encoder = new QRfbRawEncoder(this);
+#ifdef QT_QWS_VNC_DEBUG
+ qDebug("QVNCServer::setEncodings: using raw");
+#endif
+ }
+ break;
+ case CopyRect:
+ supportCopyRect = true;
+ break;
+ case RRE:
+ supportRRE = true;
+ break;
+ case CoRRE:
+ supportCoRRE = true;
+ break;
+ case Hextile:
+ supportHextile = true;
+ if (encoder)
+ break;
+ switch (qvnc_screen->depth()) {
+#ifdef QT_QWS_DEPTH_8
+ case 8:
+ encoder = new QRfbHextileEncoder<quint8>(this);
+ break;
+#endif
+#ifdef QT_QWS_DEPTH_12
+ case 12:
+ encoder = new QRfbHextileEncoder<qrgb444>(this);
+ break;
+#endif
+#ifdef QT_QWS_DEPTH_15
+ case 15:
+ encoder = new QRfbHextileEncoder<qrgb555>(this);
+ break;
+#endif
+#ifdef QT_QWS_DEPTH_16
+ case 16:
+ encoder = new QRfbHextileEncoder<quint16>(this);
+ break;
+#endif
+#ifdef QT_QWS_DEPTH_18
+ case 18:
+ encoder = new QRfbHextileEncoder<qrgb666>(this);
+ break;
+#endif
+#ifdef QT_QWS_DEPTH_24
+ case 24:
+ encoder = new QRfbHextileEncoder<qrgb888>(this);
+ break;
+#endif
+#ifdef QT_QWS_DEPTH_32
+ case 32:
+ encoder = new QRfbHextileEncoder<quint32>(this);
+ break;
+#endif
+ default:
+ break;
+ }
+#ifdef QT_QWS_VNC_DEBUG
+ qDebug("QVNCServer::setEncodings: using hextile");
+#endif
+ break;
+ case ZRLE:
+ supportZRLE = true;
+ break;
+ case Cursor:
+ supportCursor = true;
+#ifndef QT_NO_QWS_CURSOR
+ if (!qvnc_screen->screen() || qt_screencursor->isAccelerated()) {
+ delete qvnc_cursor;
+ qvnc_cursor = new QVNCClientCursor(this);
+ }
+#endif
+ break;
+ case DesktopSize:
+ supportDesktopSize = true;
+ break;
+ default:
+ break;
+ }
+ }
+ handleMsg = false;
+ encodingsPending = 0;
+ }
+
+ if (!encoder) {
+ encoder = new QRfbRawEncoder(this);
+#ifdef QT_QWS_VNC_DEBUG
+ qDebug("QVNCServer::setEncodings: fallback using raw");
+#endif
+ }
+
+ if (cursor)
+ cursor->setCursorMode(supportCursor);
+}
+
+void QVNCServer::frameBufferUpdateRequest()
+{
+ QRfbFrameBufferUpdateRequest ev;
+
+ if (ev.read(client)) {
+ if (!ev.incremental) {
+ QRect r(ev.rect.x, ev.rect.y, ev.rect.w, ev.rect.h);
+////### r.translate(qvnc_screen->offset());
+ qvnc_screen->d_ptr->setDirty(r, true);
+ }
+ wantUpdate = true;
+ checkUpdate();
+ handleMsg = false;
+ }
+}
+
+static bool buttonChange(Qt::MouseButtons before, Qt::MouseButtons after, Qt::MouseButton *button, bool *isPress)
+{
+ if (before == after)
+ return false;
+ for (int b = Qt::LeftButton; b <= Qt::MidButton; b<<=1) {
+ if ((before & b) != (after & b)) {
+ *button = static_cast<Qt::MouseButton>(b);
+ *isPress = (after & b);
+ return true;
+ }
+ }
+ return false;
+}
+
+void QVNCServer::pointerEvent()
+{
+ QPoint screenOffset = this->screen()->geometry().topLeft();
+
+ QRfbPointerEvent ev;
+ if (ev.read(client)) {
+ QPoint eventPoint(ev.x, ev.y);
+ eventPoint += screenOffset; // local to global translation
+
+ if (ev.wheelDirection == ev.WheelNone) {
+ QEvent::Type type = QEvent::MouseMove;
+ Qt::MouseButton button = Qt::NoButton;
+ bool isPress;
+ if (buttonChange(buttons, ev.buttons, &button, &isPress))
+ type = isPress ? QEvent::MouseButtonPress : QEvent::MouseButtonRelease;
+ QWindowSystemInterface::handleMouseEvent(0, eventPoint, eventPoint, ev.buttons);
+ } else {
+ // No buttons or motion reported at the same time as wheel events
+ Qt::Orientation orientation;
+ if (ev.wheelDirection == ev.WheelLeft || ev.wheelDirection == ev.WheelRight)
+ orientation = Qt::Horizontal;
+ else
+ orientation = Qt::Vertical;
+ int delta = 120 * ((ev.wheelDirection == ev.WheelLeft || ev.wheelDirection == ev.WheelUp) ? 1 : -1);
+ QWindowSystemInterface::handleWheelEvent(0, eventPoint, eventPoint, delta, orientation);
+ }
+ handleMsg = false;
+ }
+}
+
+void QVNCServer::keyEvent()
+{
+ QRfbKeyEvent ev;
+
+ if (ev.read(client)) {
+ if (ev.keycode == Qt::Key_Shift)
+ keymod = ev.down ? keymod | Qt::ShiftModifier :
+ keymod & ~Qt::ShiftModifier;
+ else if (ev.keycode == Qt::Key_Control)
+ keymod = ev.down ? keymod | Qt::ControlModifier :
+ keymod & ~Qt::ControlModifier;
+ else if (ev.keycode == Qt::Key_Alt)
+ keymod = ev.down ? keymod | Qt::AltModifier :
+ keymod & ~Qt::AltModifier;
+ if (ev.unicode || ev.keycode) {
+// qDebug() << "keyEvent" << hex << ev.unicode << ev.keycode << keymod << ev.down;
+ QEvent::Type type = ev.down ? QEvent::KeyPress : QEvent::KeyRelease;
+ QString str;
+ if (ev.unicode && ev.unicode != 0xffff)
+ str = QString(ev.unicode);
+ QWindowSystemInterface::handleKeyEvent(0, type, ev.keycode, keymod, str);
+ }
+ handleMsg = false;
+ }
+}
+
+void QVNCServer::clientCutText()
+{
+ QRfbClientCutText ev;
+
+ if (cutTextPending == 0 && ev.read(client)) {
+ cutTextPending = ev.length;
+ if (!cutTextPending)
+ handleMsg = false;
+ }
+
+ if (cutTextPending && client->bytesAvailable() >= cutTextPending) {
+ char *text = new char [cutTextPending+1];
+ client->read(text, cutTextPending);
+ delete [] text;
+ cutTextPending = 0;
+ handleMsg = false;
+ }
+}
+
+// stride in bytes
+template <class SRC>
+bool QRfbSingleColorHextile<SRC>::read(const uchar *data,
+ int width, int height, int stride)
+{
+ const int depth = encoder->server->screen()->depth();
+ if (width % (depth / 8)) // hw: should rather fallback to simple loop
+ return false;
+
+ static int alwaysFalse = qgetenv("QT_VNC_NOCHECKFILL").toInt();
+ if (alwaysFalse)
+ return false;
+
+ switch (depth) {
+ case 4: {
+ const quint8 *data8 = reinterpret_cast<const quint8*>(data);
+ if ((data8[0] & 0xf) != (data8[0] >> 4))
+ return false;
+ width /= 2;
+ } // fallthrough
+ case 8: {
+ const quint8 *data8 = reinterpret_cast<const quint8*>(data);
+ if (data8[0] != data8[1])
+ return false;
+ width /= 2;
+ } // fallthrough
+ case 12:
+ case 15:
+ case 16: {
+ const quint16 *data16 = reinterpret_cast<const quint16*>(data);
+ if (data16[0] != data16[1])
+ return false;
+ width /= 2;
+ } // fallthrough
+ case 18:
+ case 24:
+ case 32: {
+ const quint32 *data32 = reinterpret_cast<const quint32*>(data);
+ const quint32 first = data32[0];
+ const int linestep = (stride / sizeof(quint32)) - width;
+ for (int y = 0; y < height; ++y) {
+ for (int x = 0; x < width; ++x) {
+ if (*(data32++) != first)
+ return false;
+ }
+ data32 += linestep;
+ }
+ break;
+ }
+ default:
+ return false;
+ }
+
+ SRC color = reinterpret_cast<const SRC*>(data)[0];
+ encoder->newBg |= (color != encoder->bg);
+ encoder->bg = color;
+ return true;
+}
+
+template <class SRC>
+void QRfbSingleColorHextile<SRC>::write(QTcpSocket *socket) const
+{
+ if (true || encoder->newBg) {
+ const int bpp = encoder->server->clientBytesPerPixel();
+ const int padding = 3;
+ QVarLengthArray<char> buffer(padding + 1 + bpp);
+ buffer[padding] = 2; // BackgroundSpecified
+ encoder->server->convertPixels(buffer.data() + padding + 1,
+ reinterpret_cast<char*>(&encoder->bg),
+ 1);
+ socket->write(buffer.data() + padding, bpp + 1);
+// encoder->newBg = false;
+ } else {
+ char subenc = 0;
+ socket->write(&subenc, 1);
+ }
+}
+
+template <class SRC>
+bool QRfbDualColorHextile<SRC>::read(const uchar *data,
+ int width, int height, int stride)
+{
+ const SRC *ptr = reinterpret_cast<const SRC*>(data);
+ const int linestep = (stride / sizeof(SRC)) - width;
+
+ SRC c1;
+ SRC c2 = 0;
+ int n1 = 0;
+ int n2 = 0;
+ int x = 0;
+ int y = 0;
+
+ c1 = *ptr;
+
+ // find second color
+ while (y < height) {
+ while (x < width) {
+ if (*ptr == c1) {
+ ++n1;
+ } else {
+ c2 = *ptr;
+ goto found_second_color;
+ }
+ ++ptr;
+ ++x;
+ }
+ x = 0;
+ ptr += linestep;
+ ++y;
+ }
+
+found_second_color:
+ // finish counting
+ while (y < height) {
+ while (x < width) {
+ if (*ptr == c1) {
+ ++n1;
+ } else if (*ptr == c2) {
+ ++n2;
+ } else {
+ return false;
+ }
+ ++ptr;
+ ++x;
+ }
+ x = 0;
+ ptr += linestep;
+ ++y;
+ }
+
+ if (n2 > n1) {
+ const quint32 tmpC = c1;
+ c1 = c2;
+ c2 = tmpC;
+ }
+
+ encoder->newBg |= (c1 != encoder->bg);
+ encoder->newFg |= (c2 != encoder->fg);
+
+ encoder->bg = c1;
+ encoder->fg = c2;
+
+ // create map
+ bool inRect = false;
+ numRects = 0;
+ ptr = reinterpret_cast<const SRC*>(data);
+ for (y = 0; y < height; ++y) {
+ for (x = 0; x < width; ++x) {
+ if (inRect && *ptr == encoder->bg) {
+ // rect finished
+ setWidth(x - lastx());
+ next();
+ inRect = false;
+ } else if (!inRect && *ptr == encoder->fg) {
+ // rect start
+ setX(x);
+ setY(y);
+ setHeight(1);
+ inRect = true;
+ }
+ ++ptr;
+ }
+ if (inRect) {
+ // finish rect
+ setWidth(width - lastx());
+ next();
+ inRect = false;
+ }
+ ptr += linestep;
+ }
+
+ return true;
+}
+
+template <class SRC>
+void QRfbDualColorHextile<SRC>::write(QTcpSocket *socket) const
+{
+ const int bpp = encoder->server->clientBytesPerPixel();
+ const int padding = 3;
+ QVarLengthArray<char> buffer(padding + 2 * bpp + sizeof(char) + sizeof(numRects));
+ char &subenc = buffer[padding];
+ int n = padding + sizeof(subenc);
+
+ subenc = 0x8; // AnySubrects
+
+ if (encoder->newBg) {
+ subenc |= 0x2; // Background
+ encoder->server->convertPixels(buffer.data() + n, (char*)&encoder->bg, 1);
+ n += bpp;
+// encoder->newBg = false;
+ }
+
+ if (encoder->newFg) {
+ subenc |= 0x4; // Foreground
+ encoder->server->convertPixels(buffer.data() + n, (char*)&encoder->fg, 1);
+ n += bpp;
+// encoder->newFg = false;
+ }
+ buffer[n] = numRects;
+ n += sizeof(numRects);
+
+ socket->write(buffer.data() + padding, n - padding);
+ socket->write((char*)rects, numRects * sizeof(Rect));
+}
+
+template <class SRC>
+void QRfbDualColorHextile<SRC>::next()
+{
+ for (int r = numRects - 1; r >= 0; --r) {
+ if (recty(r) == lasty())
+ continue;
+ if (recty(r) < lasty() - 1) // only search previous scanline
+ break;
+ if (rectx(r) == lastx() && width(r) == width(numRects)) {
+ ++rects[r].wh;
+ return;
+ }
+ }
+ ++numRects;
+}
+
+template <class SRC>
+inline void QRfbMultiColorHextile<SRC>::setColor(SRC color)
+{
+ encoder->server->convertPixels(reinterpret_cast<char*>(rect(numRects)),
+ (const char*)&color, 1);
+}
+
+template <class SRC>
+inline bool QRfbMultiColorHextile<SRC>::beginRect()
+{
+ if ((rects.size() + bpp + 2) > maxRectsSize)
+ return false;
+ rects.resize(rects.size() + bpp + 2);
+ return true;
+}
+
+template <class SRC>
+inline void QRfbMultiColorHextile<SRC>::endRect()
+{
+ setHeight(numRects, 1);
+ ++numRects;
+}
+
+template <class SRC>
+bool QRfbMultiColorHextile<SRC>::read(const uchar *data,
+ int width, int height, int stride)
+{
+ const SRC *ptr = reinterpret_cast<const SRC*>(data);
+ const int linestep = (stride / sizeof(SRC)) - width;
+
+ bpp = encoder->server->clientBytesPerPixel();
+
+ if (encoder->newBg)
+ encoder->bg = ptr[0];
+
+ const SRC bg = encoder->bg;
+ SRC color = bg;
+ bool inRect = false;
+
+ numRects = 0;
+ rects.clear();
+
+ for (int y = 0; y < height; ++y) {
+ for (int x = 0; x < width; ++x) {
+ if (inRect && *ptr != color) { // end rect
+ setWidth(numRects, x - rectx(numRects));
+ endRect();
+ inRect = false;
+ }
+
+ if (!inRect && *ptr != bg) { // begin rect
+ if (!beginRect())
+ return false;
+ inRect = true;
+ color = *ptr;
+ setColor(color);
+ setX(numRects, x);
+ setY(numRects, y);
+ }
+ ++ptr;
+ }
+ if (inRect) { // end rect
+ setWidth(numRects, width - rectx(numRects));
+ endRect();
+ inRect = false;
+ }
+ ptr += linestep;
+ }
+
+ return true;
+}
+
+template <class SRC>
+void QRfbMultiColorHextile<SRC>::write(QTcpSocket *socket) const
+{
+ const int padding = 3;
+ QVarLengthArray<quint8> buffer(bpp + padding + sizeof(quint8) + sizeof(numRects));
+
+ quint8 &subenc = buffer[padding];
+ int n = padding + sizeof(quint8);
+
+ subenc = 8 | 16; // AnySubrects | SubrectsColoured
+
+ if (encoder->newBg) {
+ subenc |= 0x2; // Background
+ encoder->server->convertPixels(reinterpret_cast<char*>(buffer.data() + n),
+ reinterpret_cast<const char*>(&encoder->bg),
+ 1);
+ n += bpp;
+// encoder->newBg = false;
+ }
+
+ buffer[n] = numRects;
+ n += sizeof(numRects);
+
+ socket->write(reinterpret_cast<const char*>(buffer.data() + padding),
+ n - padding);
+ socket->write(reinterpret_cast<const char*>(rects.constData()),
+ rects.size());
+}
+
+bool QVNCServer::pixelConversionNeeded() const
+{
+ if (!sameEndian)
+ return true;
+
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ if (qvnc_screen->swapBytes())
+ return true;
+#endif
+
+ const int screendepth = qvnc_screen->depth();
+ if (screendepth != pixelFormat.bitsPerPixel)
+ return true;
+
+ switch (screendepth) {
+ case 32:
+ case 24:
+ return false;
+ case 18:
+ return (pixelFormat.redBits == 6
+ && pixelFormat.greenBits == 6
+ && pixelFormat.blueBits == 6);
+ case 16:
+ return (pixelFormat.redBits == 5
+ && pixelFormat.greenBits == 6
+ && pixelFormat.blueBits == 5);
+ case 15:
+ return (pixelFormat.redBits == 5
+ && pixelFormat.greenBits == 5
+ && pixelFormat.blueBits == 5);
+ case 12:
+ return (pixelFormat.redBits == 4
+ && pixelFormat.greenBits == 4
+ && pixelFormat.blueBits == 4);
+ }
+ return true;
+}
+
+// count: number of pixels
+void QVNCServer::convertPixels(char *dst, const char *src, int count) const
+{
+ const int screendepth = qvnc_screen->depth();
+ const bool isBgr = false; //### qvnc_screen->pixelType() == QScreen::BGRPixel;
+
+ // cutoffs
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ if (!swapBytes)
+#endif
+ if (sameEndian) {
+ if (screendepth == pixelFormat.bitsPerPixel) { // memcpy cutoffs
+
+ switch (screendepth) {
+ case 32:
+ memcpy(dst, src, count * sizeof(quint32));
+ return;
+ case 16:
+ if (pixelFormat.redBits == 5
+ && pixelFormat.greenBits == 6
+ && pixelFormat.blueBits == 5)
+ {
+ memcpy(dst, src, count * sizeof(quint16));
+ return;
+ }
+ }
+ } else if (screendepth == 16 && pixelFormat.bitsPerPixel == 32) {
+#if defined(__i386__) // Currently fails on ARM if dst is not 4 byte aligned
+ const quint32 *src32 = reinterpret_cast<const quint32*>(src);
+ quint32 *dst32 = reinterpret_cast<quint32*>(dst);
+ int count32 = count * sizeof(quint16) / sizeof(quint32);
+ while (count32--) {
+ const quint32 s = *src32++;
+ quint32 result1;
+ quint32 result2;
+
+ // red
+ result1 = ((s & 0xf8000000) | ((s & 0xe0000000) >> 5)) >> 8;
+ result2 = ((s & 0x0000f800) | ((s & 0x0000e000) >> 5)) << 8;
+
+ // green
+ result1 |= ((s & 0x07e00000) | ((s & 0x06000000) >> 6)) >> 11;
+ result2 |= ((s & 0x000007e0) | ((s & 0x00000600) >> 6)) << 5;
+
+ // blue
+ result1 |= ((s & 0x001f0000) | ((s & 0x001c0000) >> 5)) >> 13;
+ result2 |= ((s & 0x0000001f) | ((s & 0x0000001c) >> 5)) << 3;
+
+ *dst32++ = result2;
+ *dst32++ = result1;
+ }
+ if (count & 0x1) {
+ const quint16 *src16 = reinterpret_cast<const quint16*>(src);
+ *dst32 = qt_conv16ToRgb(src16[count - 1]);
+ }
+ return;
+#endif
+ }
+ }
+
+ const int bytesPerPixel = (pixelFormat.bitsPerPixel + 7) / 8;
+
+// nibble = 0;
+
+ for (int i = 0; i < count; ++i) {
+ int r, g, b;
+
+ switch (screendepth) {
+#if 0
+ case 4: {
+ if (!nibble) {
+ r = ((*src) & 0x0f) << 4;
+ } else {
+ r = (*src) & 0xf0;
+ src++;
+ }
+ nibble = !nibble;
+ g = b = r;
+ break;
+ }
+#endif
+#if 0
+ case 8: {
+ QRgb rgb = qvnc_screen->clut()[int(*src)];
+ r = qRed(rgb);
+ g = qGreen(rgb);
+ b = qBlue(rgb);
+ src++;
+ break;
+ }
+#endif
+#ifdef QT_QWS_DEPTH_12
+ case 12: {
+ quint32 p = quint32(*reinterpret_cast<const qrgb444*>(src));
+ r = qRed(p);
+ g = qGreen(p);
+ b = qBlue(p);
+ src += sizeof(qrgb444);
+ break;
+ }
+#endif
+#ifdef QT_QWS_DEPTH_15
+ case 15: {
+ quint32 p = quint32(*reinterpret_cast<const qrgb555*>(src));
+ r = qRed(p);
+ g = qGreen(p);
+ b = qBlue(p);
+ src += sizeof(qrgb555);
+ break;
+ }
+#endif
+ case 16: {
+ quint16 p = *reinterpret_cast<const quint16*>(src);
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ if (swapBytes)
+ p = ((p & 0xff) << 8) | ((p & 0xff00) >> 8);
+#endif
+ r = (p >> 11) & 0x1f;
+ g = (p >> 5) & 0x3f;
+ b = p & 0x1f;
+ r <<= 3;
+ g <<= 2;
+ b <<= 3;
+ src += sizeof(quint16);
+ break;
+ }
+#ifdef QT_QWS_DEPTH_18
+ case 18: {
+ quint32 p = quint32(*reinterpret_cast<const qrgb666*>(src));
+ r = qRed(p);
+ g = qGreen(p);
+ b = qBlue(p);
+ src += sizeof(qrgb666);
+ break;
+ }
+#endif
+#ifdef QT_QWS_DEPTH_24
+ case 24: {
+ quint32 p = quint32(*reinterpret_cast<const qrgb888*>(src));
+ r = qRed(p);
+ g = qGreen(p);
+ b = qBlue(p);
+ src += sizeof(qrgb888);
+ break;
+ }
+#endif
+ case 32: {
+ quint32 p = *reinterpret_cast<const quint32*>(src);
+ r = (p >> 16) & 0xff;
+ g = (p >> 8) & 0xff;
+ b = p & 0xff;
+ src += sizeof(quint32);
+ break;
+ }
+ default: {
+ r = g = b = 0;
+ qDebug("QVNCServer: don't support %dbpp display", screendepth);
+ return;
+ }
+ }
+
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ if (swapBytes ^ isBgr)
+#else
+ if (isBgr)
+#endif
+ qSwap(r, b);
+
+ r >>= (8 - pixelFormat.redBits);
+ g >>= (8 - pixelFormat.greenBits);
+ b >>= (8 - pixelFormat.blueBits);
+
+ int pixel = (r << pixelFormat.redShift) |
+ (g << pixelFormat.greenShift) |
+ (b << pixelFormat.blueShift);
+
+ if (sameEndian || pixelFormat.bitsPerPixel == 8) {
+ memcpy(dst, &pixel, bytesPerPixel); // XXX: do a simple for-loop instead?
+ dst += bytesPerPixel;
+ continue;
+ }
+
+
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ switch (pixelFormat.bitsPerPixel) {
+ case 16:
+ pixel = (((pixel & 0x0000ff00) << 8) |
+ ((pixel & 0x000000ff) << 24));
+ break;
+ case 32:
+ pixel = (((pixel & 0xff000000) >> 24) |
+ ((pixel & 0x00ff0000) >> 8) |
+ ((pixel & 0x0000ff00) << 8) |
+ ((pixel & 0x000000ff) << 24));
+ break;
+ default:
+ qDebug("Cannot handle %d bpp client", pixelFormat.bitsPerPixel);
+ }
+ } else { // QSysInfo::ByteOrder == QSysInfo::LittleEndian
+ switch (pixelFormat.bitsPerPixel) {
+ case 16:
+ pixel = (((pixel & 0xff000000) >> 8) |
+ ((pixel & 0x00ff0000) << 8));
+ break;
+ case 32:
+ pixel = (((pixel & 0xff000000) >> 24) |
+ ((pixel & 0x00ff0000) >> 8) |
+ ((pixel & 0x0000ff00) << 8) |
+ ((pixel & 0x000000ff) << 24));
+ break;
+ default:
+ qDebug("Cannot handle %d bpp client",
+ pixelFormat.bitsPerPixel);
+ break;
+ }
+ }
+ memcpy(dst, &pixel, bytesPerPixel); // XXX: simple for-loop instead?
+ dst += bytesPerPixel;
+ }
+}
+
+#ifndef QT_NO_QWS_CURSOR
+static void blendCursor(QImage &image, const QRect &imageRect)
+{
+ const QRect cursorRect = qt_screencursor->boundingRect();
+ const QRect intersection = (cursorRect & imageRect);
+ const QRect destRect = intersection.translated(-imageRect.topLeft());
+ const QRect srcRect = intersection.translated(-cursorRect.topLeft());
+
+ QPainter painter(&image);
+ painter.drawImage(destRect, qt_screencursor->image(), srcRect);
+ painter.end();
+}
+#endif // QT_NO_QWS_CURSOR
+
+QVNCDirtyMap::QVNCDirtyMap(QVNCScreen *s)
+ : bytesPerPixel(0), numDirty(0), screen(s)
+{
+ bytesPerPixel = (screen->depth() + 7) / 8;
+ QSize screenSize = screen->geometry().size();
+ bufferWidth = screenSize.width();
+ bufferHeight = screenSize.height();
+ bufferStride = bufferWidth * bytesPerPixel;
+ buffer = new uchar[bufferHeight * bufferStride];
+
+ mapWidth = (bufferWidth + MAP_TILE_SIZE - 1) / MAP_TILE_SIZE;
+ mapHeight = (bufferHeight + MAP_TILE_SIZE - 1) / MAP_TILE_SIZE;
+ numTiles = mapWidth * mapHeight;
+ map = new uchar[numTiles];
+}
+
+QVNCDirtyMap::~QVNCDirtyMap()
+{
+ delete[] map;
+ delete[] buffer;
+}
+
+void QVNCDirtyMap::reset()
+{
+ memset(map, 1, numTiles);
+ memset(buffer, 0, bufferHeight * bufferStride);
+ numDirty = numTiles;
+}
+
+inline bool QVNCDirtyMap::dirty(int x, int y) const
+{
+ return map[y * mapWidth + x];
+}
+
+inline void QVNCDirtyMap::setClean(int x, int y)
+{
+ map[y * mapWidth + x] = 0;
+ --numDirty;
+}
+
+template <class T>
+void QVNCDirtyMapOptimized<T>::setDirty(int tileX, int tileY, bool force)
+{
+ static bool alwaysForce = qgetenv("QT_VNC_NO_COMPAREBUFFER").toInt();
+ if (alwaysForce)
+ force = true;
+
+ bool changed = false;
+
+ if (!force) {
+ const int lstep = screen->linestep();
+ const int startX = tileX * MAP_TILE_SIZE;
+ const int startY = tileY * MAP_TILE_SIZE;
+ const uchar *scrn = screen->base()
+ + startY * lstep + startX * bytesPerPixel;
+ uchar *old = buffer + startY * bufferStride + startX * sizeof(T);
+
+ const int tileHeight = (startY + MAP_TILE_SIZE > bufferHeight ?
+ bufferHeight - startY : MAP_TILE_SIZE);
+ const int tileWidth = (startX + MAP_TILE_SIZE > bufferWidth ?
+ bufferWidth - startX : MAP_TILE_SIZE);
+ const bool doInlines = (tileWidth == MAP_TILE_SIZE);
+
+ int y = tileHeight;
+
+ if (doInlines) { // hw: memcmp/memcpy is inlined when using constants
+ while (y) {
+ if (memcmp(old, scrn, sizeof(T) * MAP_TILE_SIZE)) {
+ changed = true;
+ break;
+ }
+ scrn += lstep;
+ old += bufferStride;
+ --y;
+ }
+
+ while (y) {
+ memcpy(old, scrn, sizeof(T) * MAP_TILE_SIZE);
+ scrn += lstep;
+ old += bufferStride;
+ --y;
+ }
+ } else {
+ while (y) {
+ if (memcmp(old, scrn, sizeof(T) * tileWidth)) {
+ changed = true;
+ break;
+ }
+ scrn += lstep;
+ old += bufferStride;
+ --y;
+ }
+
+ while (y) {
+ memcpy(old, scrn, sizeof(T) * tileWidth);
+ scrn += lstep;
+ old += bufferStride;
+ --y;
+ }
+ }
+ }
+
+ const int mapIndex = tileY * mapWidth + tileX;
+ if ((force || changed) && !map[mapIndex]) {
+ map[mapIndex] = 1;
+ ++numDirty;
+ }
+}
+
+template <class SRC>
+QRfbHextileEncoder<SRC>::QRfbHextileEncoder(QVNCServer *s)
+ : QRfbEncoder(s),
+ singleColorHextile(this), dualColorHextile(this), multiColorHextile(this)
+{
+}
+
+/*
+ \internal
+ Send dirty rects using hextile encoding.
+*/
+template <class SRC>
+void QRfbHextileEncoder<SRC>::write()
+{
+// QWSDisplay::grab(true);
+
+ QVNCDirtyMap *map = server->dirtyMap();
+ QTcpSocket *socket = server->clientSocket();
+
+ const quint32 encoding = htonl(5); // hextile encoding
+ const int bytesPerPixel = server->clientBytesPerPixel();
+
+ {
+ const char tmp[2] = { 0, 0 }; // msg type, padding
+ socket->write(tmp, sizeof(tmp));
+ }
+ {
+ const quint16 count = htons(map->numDirty);
+ socket->write((char *)&count, sizeof(count));
+ }
+
+ if (map->numDirty <= 0) {
+// QWSDisplay::ungrab();
+ return;
+ }
+
+ newBg = true;
+ newFg = true;
+
+ const QImage screenImage = server->screenImage();
+ QRfbRect rect(0, 0, MAP_TILE_SIZE, MAP_TILE_SIZE);
+
+ QSize screenSize = server->screen()->geometry().size();
+
+ for (int y = 0; y < map->mapHeight; ++y) {
+ if (rect.y + MAP_TILE_SIZE > screenSize.height())
+ rect.h = screenSize.height() - rect.y;
+ rect.w = MAP_TILE_SIZE;
+ for (int x = 0; x < map->mapWidth; ++x) {
+ if (!map->dirty(x, y))
+ continue;
+ map->setClean(x, y);
+
+ rect.x = x * MAP_TILE_SIZE;
+ if (rect.x + MAP_TILE_SIZE > screenSize.width()) //###deviceWidth ???
+ rect.w = screenSize.width() - rect.x;
+ rect.write(socket);
+
+ socket->write((char *)&encoding, sizeof(encoding));
+
+ const uchar *screendata = screenImage.scanLine(rect.y)
+ + rect.x * screenImage.depth() / 8;
+ int linestep = screenImage.bytesPerLine();
+
+#ifndef QT_NO_QWS_CURSOR
+ // hardware cursors must be blended with the screen memory
+ const bool doBlendCursor = qt_screencursor
+ && !server->hasClientCursor()
+ && qt_screencursor->isAccelerated();
+ QImage tileImage;
+ if (doBlendCursor) {
+ const QRect tileRect(rect.x, rect.y, rect.w, rect.h);
+ const QRect cursorRect = qt_screencursor->boundingRect()
+ .translated(-server->screen()->offset());
+ if (tileRect.intersects(cursorRect)) {
+ tileImage = screenImage.copy(tileRect);
+ blendCursor(tileImage,
+ tileRect.translated(server->screen()->offset()));
+ screendata = tileImage.bits();
+ linestep = tileImage.bytesPerLine();
+ }
+ }
+#endif // QT_NO_QWS_CURSOR
+
+ if (singleColorHextile.read(screendata, rect.w, rect.h, linestep)) {
+ singleColorHextile.write(socket);
+ } else if (dualColorHextile.read(screendata, rect.w, rect.h, linestep)) {
+ dualColorHextile.write(socket);
+ } else if (multiColorHextile.read(screendata, rect.w, rect.h, linestep)) {
+ multiColorHextile.write(socket);
+ } else if (server->doPixelConversion()) {
+ const int bufferSize = rect.w * rect.h * bytesPerPixel + 1;
+ const int padding = sizeof(quint32) - sizeof(char);
+ buffer.resize(bufferSize + padding);
+
+ buffer[padding] = 1; // Raw subencoding
+
+ // convert pixels
+ char *b = buffer.data() + padding + 1;
+ const int bstep = rect.w * bytesPerPixel;
+ for (int i = 0; i < rect.h; ++i) {
+ server->convertPixels(b, (const char*)screendata, rect.w);
+ screendata += linestep;
+ b += bstep;
+ }
+ socket->write(buffer.constData() + padding, bufferSize);
+ } else {
+ quint8 subenc = 1; // Raw subencoding
+ socket->write((char *)&subenc, 1);
+
+ // send pixels
+ for (int i = 0; i < rect.h; ++i) {
+ socket->write((const char*)screendata,
+ rect.w * bytesPerPixel);
+ screendata += linestep;
+ }
+ }
+ }
+ if (socket->state() == QAbstractSocket::UnconnectedState)
+ break;
+ rect.y += MAP_TILE_SIZE;
+ }
+ socket->flush();
+ Q_ASSERT(map->numDirty == 0);
+
+// QWSDisplay::ungrab();
+}
+
+void QRfbRawEncoder::write()
+{
+// QWSDisplay::grab(false);
+
+ QVNCDirtyMap *map = server->dirtyMap();
+ QTcpSocket *socket = server->clientSocket();
+
+ const int bytesPerPixel = server->clientBytesPerPixel();
+ QSize screenSize = server->screen()->geometry().size();
+
+ // create a region from the dirty rects and send the region's merged rects.
+ QRegion rgn;
+ if (map) {
+ for (int y = 0; y < map->mapHeight; ++y) {
+ for (int x = 0; x < map->mapWidth; ++x) {
+ if (!map->dirty(x, y))
+ continue;
+ rgn += QRect(x * MAP_TILE_SIZE, y * MAP_TILE_SIZE,
+ MAP_TILE_SIZE, MAP_TILE_SIZE);
+ map->setClean(x, y);
+ }
+ }
+
+ rgn &= QRect(0, 0, screenSize.width(),
+ screenSize.height());
+ }
+ const QVector<QRect> rects = rgn.rects();
+
+ {
+ const char tmp[2] = { 0, 0 }; // msg type, padding
+ socket->write(tmp, sizeof(tmp));
+ }
+
+ {
+ const quint16 count = htons(rects.size());
+ socket->write((char *)&count, sizeof(count));
+ }
+
+ if (rects.size() <= 0) {
+// QWSDisplay::ungrab();
+ return;
+ }
+
+ const QImage *screenImage = server->screenImage();
+
+ for (int i = 0; i < rects.size(); ++i) {
+ const QRect tileRect = rects.at(i);
+ const QRfbRect rect(tileRect.x(), tileRect.y(),
+ tileRect.width(), tileRect.height());
+ rect.write(socket);
+
+ const quint32 encoding = htonl(0); // raw encoding
+ socket->write((char *)&encoding, sizeof(encoding));
+
+ int linestep = screenImage->bytesPerLine();
+ const uchar *screendata = screenImage->scanLine(rect.y)
+ + rect.x * screenImage->depth() / 8;
+
+#ifndef QT_NO_QWS_CURSOR
+ // hardware cursors must be blended with the screen memory
+ const bool doBlendCursor = qt_screencursor
+ && !server->hasClientCursor()
+ && qt_screencursor->isAccelerated();
+ QImage tileImage;
+ if (doBlendCursor) {
+ const QRect cursorRect = qt_screencursor->boundingRect()
+ .translated(-server->screen()->offset());
+ if (tileRect.intersects(cursorRect)) {
+ tileImage = screenImage->copy(tileRect);
+ blendCursor(tileImage,
+ tileRect.translated(server->screen()->offset()));
+ screendata = tileImage.bits();
+ linestep = tileImage.bytesPerLine();
+ }
+ }
+#endif // QT_NO_QWS_CURSOR
+
+ if (server->doPixelConversion()) {
+ const int bufferSize = rect.w * rect.h * bytesPerPixel;
+ if (bufferSize > buffer.size())
+ buffer.resize(bufferSize);
+
+ // convert pixels
+ char *b = buffer.data();
+ const int bstep = rect.w * bytesPerPixel;
+ for (int i = 0; i < rect.h; ++i) {
+ server->convertPixels(b, (const char*)screendata, rect.w);
+ screendata += linestep;
+ b += bstep;
+ }
+ socket->write(buffer.constData(), bufferSize);
+ } else {
+ for (int i = 0; i < rect.h; ++i) {
+ socket->write((const char*)screendata, rect.w * bytesPerPixel);
+ screendata += linestep;
+ }
+ }
+ if (socket->state() == QAbstractSocket::UnconnectedState)
+ break;
+ }
+ socket->flush();
+
+// QWSDisplay::ungrab();
+}
+
+inline QImage *QVNCServer::screenImage() const
+{
+ return qvnc_screen->image();
+}
+
+void QVNCServer::checkUpdate()
+{
+ if (!wantUpdate)
+ return;
+
+ if (dirtyCursor) {
+#ifndef QT_NO_QWS_CURSOR
+ Q_ASSERT(qvnc_cursor);
+ qvnc_cursor->write();
+#endif
+ cursor->sendClientCursor();
+ dirtyCursor = false;
+ wantUpdate = false;
+ return;
+ }
+
+ if (dirtyMap()->numDirty > 0) {
+ if (encoder)
+ encoder->write();
+ wantUpdate = false;
+ }
+}
+
+void QVNCServer::discardClient()
+{
+ timer->stop();
+ state = Unconnected;
+ delete encoder;
+ encoder = 0;
+#ifndef QT_NO_QWS_CURSOR
+ delete qvnc_cursor;
+ qvnc_cursor = 0;
+#endif
+// if (!qvnc_screen->screen())
+// QWSServer::instance()->enablePainting(false);
+}
+
+
+
+QVNCScreenPrivate::QVNCScreenPrivate(QVNCScreen *parent, int screenId)
+ : dpiX(72), dpiY(72), doOnScreenSurface(false), refreshRate(25),
+ vncServer(0), q_ptr(parent)
+{
+#if 0//ndef QT_NO_QWS_SIGNALHANDLER
+ QWSSignalHandler::instance()->addObject(this);
+#endif
+
+ vncServer = new QVNCServer(q_ptr, screenId);
+ vncServer->setRefreshRate(refreshRate);
+
+
+ Q_ASSERT(q_ptr->depth() == 32);
+
+ dirty = new QVNCDirtyMapOptimized<quint32>(q_ptr);
+}
+
+QVNCScreenPrivate::~QVNCScreenPrivate()
+{
+}
+
+
+void QVNCScreenPrivate::setDirty(const QRect& rect, bool force)
+{
+ if (rect.isEmpty())
+ return;
+
+// if (q_ptr->screen())
+// q_ptr->screen()->setDirty(rect);
+
+ if (!vncServer || !vncServer->isConnected()) {
+// qDebug() << "QVNCScreenPrivate::setDirty() - Not connected";
+ return;
+ }
+ const QRect r = rect; // .translated(-q_ptr->offset());
+ const int x1 = r.x() / MAP_TILE_SIZE;
+ int y = r.y() / MAP_TILE_SIZE;
+ for (; (y <= r.bottom() / MAP_TILE_SIZE) && y < dirty->mapHeight; y++)
+ for (int x = x1; (x <= r.right() / MAP_TILE_SIZE) && x < dirty->mapWidth; x++)
+ dirty->setDirty(x, y, force);
+
+ vncServer->setDirty();
+}
+
+
+
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/vnc/qvncserver.h b/src/plugins/platforms/vnc/qvncserver.h
new file mode 100644
index 0000000000..7244bdf65f
--- /dev/null
+++ b/src/plugins/platforms/vnc/qvncserver.h
@@ -0,0 +1,533 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 QSCREENVNC_P_H
+#define QSCREENVNC_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of the QLibrary class. This header file may change from version to version
+// without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qvncintegration.h"
+#include "qvnccursor.h"
+#define QT_NO_QWS_CURSOR
+
+#ifndef QT_NO_QWS_VNC
+
+#include <QtCore/qvarlengtharray.h>
+#include <QtCore/qsharedmemory.h>
+#include <QtNetwork/qtcpsocket.h>
+#include <QtNetwork/qtcpserver.h>
+
+QT_BEGIN_NAMESPACE
+
+class QVNCServer;
+
+#ifndef QT_NO_QWS_CURSOR
+class QVNCCursor : public QProxyScreenCursor
+{
+public:
+ QVNCCursor(QVNCScreen *s);
+ ~QVNCCursor();
+
+ void hide();
+ void show();
+ void set(const QImage &image, int hotx, int hoty);
+ void move(int x, int y);
+
+private:
+ void setDirty(const QRect &r) const;
+ QVNCScreen *screen;
+};
+
+class QVNCClientCursor : public QProxyScreenCursor
+{
+public:
+ QVNCClientCursor(QVNCServer *s);
+ ~QVNCClientCursor();
+
+ void set(const QImage &image, int hotx, int hoty);
+ void write() const;
+
+private:
+ QVNCServer *server;
+};
+#endif // QT_NO_QWS_CURSOR
+
+#define MAP_TILE_SIZE 16
+#define MAP_WIDTH 1280 / MAP_TILE_SIZE
+#define MAP_HEIGHT 1024 / MAP_TILE_SIZE
+
+class QVNCDirtyMap
+{
+public:
+ QVNCDirtyMap(QVNCScreen *screen);
+ virtual ~QVNCDirtyMap();
+
+ void reset();
+ bool dirty(int x, int y) const;
+ virtual void setDirty(int x, int y, bool force = false) = 0;
+ void setClean(int x, int y);
+
+ int bytesPerPixel;
+
+ int numDirty;
+ int mapWidth;
+ int mapHeight;
+
+protected:
+ uchar *map;
+ QVNCScreen *screen;
+ uchar *buffer;
+ int bufferWidth;
+ int bufferHeight;
+ int bufferStride;
+ int numTiles;
+};
+
+template <class T>
+class QVNCDirtyMapOptimized : public QVNCDirtyMap
+{
+public:
+ QVNCDirtyMapOptimized(QVNCScreen *screen) : QVNCDirtyMap(screen) {}
+ ~QVNCDirtyMapOptimized() {}
+
+ void setDirty(int x, int y, bool force = false);
+};
+
+class QRfbRect
+{
+public:
+ QRfbRect() {}
+ QRfbRect(quint16 _x, quint16 _y, quint16 _w, quint16 _h) {
+ x = _x; y = _y; w = _w; h = _h;
+ }
+
+ void read(QTcpSocket *s);
+ void write(QTcpSocket *s) const;
+
+ quint16 x;
+ quint16 y;
+ quint16 w;
+ quint16 h;
+};
+
+class QRfbPixelFormat
+{
+public:
+ static int size() { return 16; }
+
+ void read(QTcpSocket *s);
+ void write(QTcpSocket *s);
+
+ int bitsPerPixel;
+ int depth;
+ bool bigEndian;
+ bool trueColor;
+ int redBits;
+ int greenBits;
+ int blueBits;
+ int redShift;
+ int greenShift;
+ int blueShift;
+};
+
+class QRfbServerInit
+{
+public:
+ QRfbServerInit() { name = 0; }
+ ~QRfbServerInit() { delete[] name; }
+
+ int size() const { return QRfbPixelFormat::size() + 8 + strlen(name); }
+ void setName(const char *n);
+
+ void read(QTcpSocket *s);
+ void write(QTcpSocket *s);
+
+ quint16 width;
+ quint16 height;
+ QRfbPixelFormat format;
+ char *name;
+};
+
+class QRfbSetEncodings
+{
+public:
+ bool read(QTcpSocket *s);
+
+ quint16 count;
+};
+
+class QRfbFrameBufferUpdateRequest
+{
+public:
+ bool read(QTcpSocket *s);
+
+ char incremental;
+ QRfbRect rect;
+};
+
+class QRfbKeyEvent
+{
+public:
+ bool read(QTcpSocket *s);
+
+ char down;
+ int keycode;
+ int unicode;
+};
+
+class QRfbPointerEvent
+{
+public:
+ bool read(QTcpSocket *s);
+
+ Qt::MouseButtons buttons;
+ enum { WheelNone,
+ WheelUp,
+ WheelDown,
+ WheelLeft,
+ WheelRight
+ } wheelDirection;
+ quint16 x;
+ quint16 y;
+};
+
+class QRfbClientCutText
+{
+public:
+ bool read(QTcpSocket *s);
+
+ quint32 length;
+};
+
+class QVNCScreenPrivate : public QObject
+{
+public:
+ QVNCScreenPrivate(QVNCScreen *parent, int screenId);
+ ~QVNCScreenPrivate();
+
+ void setDirty(const QRect &rect, bool force = false);
+ void configure();
+
+ qreal dpiX;
+ qreal dpiY;
+ bool doOnScreenSurface;
+ QVNCDirtyMap *dirty;
+ int refreshRate;
+ QVNCServer *vncServer;
+
+#if !defined(QT_NO_QWS_MULTIPROCESS) && !defined(QT_NO_SHAREDMEMORY)
+ QSharedMemory shm;
+#endif
+
+ QVNCScreen *q_ptr;
+};
+
+class QRfbEncoder
+{
+public:
+ QRfbEncoder(QVNCServer *s) : server(s) {}
+ virtual ~QRfbEncoder() {}
+
+ virtual void write() = 0;
+
+protected:
+ QVNCServer *server;
+};
+
+class QRfbRawEncoder : public QRfbEncoder
+{
+public:
+ QRfbRawEncoder(QVNCServer *s) : QRfbEncoder(s) {}
+
+ void write();
+
+private:
+ QByteArray buffer;
+};
+
+template <class SRC> class QRfbHextileEncoder;
+
+template <class SRC>
+class QRfbSingleColorHextile
+{
+public:
+ QRfbSingleColorHextile(QRfbHextileEncoder<SRC> *e) : encoder(e) {}
+ bool read(const uchar *data, int width, int height, int stride);
+ void write(QTcpSocket *socket) const;
+
+private:
+ QRfbHextileEncoder<SRC> *encoder;
+};
+
+template <class SRC>
+class QRfbDualColorHextile
+{
+public:
+ QRfbDualColorHextile(QRfbHextileEncoder<SRC> *e) : encoder(e) {}
+ bool read(const uchar *data, int width, int height, int stride);
+ void write(QTcpSocket *socket) const;
+
+private:
+ struct Rect {
+ quint8 xy;
+ quint8 wh;
+ } Q_PACKED rects[8 * 16];
+
+ quint8 numRects;
+ QRfbHextileEncoder<SRC> *encoder;
+
+private:
+ inline int lastx() const { return rectx(numRects); }
+ inline int lasty() const { return recty(numRects); }
+ inline int rectx(int r) const { return rects[r].xy >> 4; }
+ inline int recty(int r) const { return rects[r].xy & 0x0f; }
+ inline int width(int r) const { return (rects[r].wh >> 4) + 1; }
+ inline int height(int r) const { return (rects[r].wh & 0x0f) + 1; }
+
+ inline void setX(int r, int x) {
+ rects[r].xy = (x << 4) | (rects[r].xy & 0x0f);
+ }
+ inline void setY(int r, int y) {
+ rects[r].xy = (rects[r].xy & 0xf0) | y;
+ }
+ inline void setWidth(int r, int width) {
+ rects[r].wh = ((width - 1) << 4) | (rects[r].wh & 0x0f);
+ }
+ inline void setHeight(int r, int height) {
+ rects[r].wh = (rects[r].wh & 0xf0) | (height - 1);
+ }
+
+ inline void setWidth(int width) { setWidth(numRects, width); }
+ inline void setHeight(int height) { setHeight(numRects, height); }
+ inline void setX(int x) { setX(numRects, x); }
+ inline void setY(int y) { setY(numRects, y); }
+ void next();
+};
+
+template <class SRC>
+class QRfbMultiColorHextile
+{
+public:
+ QRfbMultiColorHextile(QRfbHextileEncoder<SRC> *e) : encoder(e) {}
+ bool read(const uchar *data, int width, int height, int stride);
+ void write(QTcpSocket *socket) const;
+
+private:
+ inline quint8* rect(int r) {
+ return rects.data() + r * (bpp + 2);
+ }
+ inline const quint8* rect(int r) const {
+ return rects.constData() + r * (bpp + 2);
+ }
+ inline void setX(int r, int x) {
+ quint8 *ptr = rect(r) + bpp;
+ *ptr = (x << 4) | (*ptr & 0x0f);
+ }
+ inline void setY(int r, int y) {
+ quint8 *ptr = rect(r) + bpp;
+ *ptr = (*ptr & 0xf0) | y;
+ }
+ void setColor(SRC color);
+ inline int rectx(int r) const {
+ const quint8 *ptr = rect(r) + bpp;
+ return *ptr >> 4;
+ }
+ inline int recty(int r) const {
+ const quint8 *ptr = rect(r) + bpp;
+ return *ptr & 0x0f;
+ }
+ inline void setWidth(int r, int width) {
+ quint8 *ptr = rect(r) + bpp + 1;
+ *ptr = ((width - 1) << 4) | (*ptr & 0x0f);
+ }
+ inline void setHeight(int r, int height) {
+ quint8 *ptr = rect(r) + bpp + 1;
+ *ptr = (*ptr & 0xf0) | (height - 1);
+ }
+
+ bool beginRect();
+ void endRect();
+
+ static const int maxRectsSize = 16 * 16;
+ QVarLengthArray<quint8, maxRectsSize> rects;
+
+ quint8 bpp;
+ quint8 numRects;
+ QRfbHextileEncoder<SRC> *encoder;
+};
+
+template <class SRC>
+class QRfbHextileEncoder : public QRfbEncoder
+{
+public:
+ QRfbHextileEncoder(QVNCServer *s);
+ void write();
+
+private:
+ enum SubEncoding {
+ Raw = 1,
+ BackgroundSpecified = 2,
+ ForegroundSpecified = 4,
+ AnySubrects = 8,
+ SubrectsColoured = 16
+ };
+
+ QByteArray buffer;
+ QRfbSingleColorHextile<SRC> singleColorHextile;
+ QRfbDualColorHextile<SRC> dualColorHextile;
+ QRfbMultiColorHextile<SRC> multiColorHextile;
+
+ SRC bg;
+ SRC fg;
+ bool newBg;
+ bool newFg;
+
+ friend class QRfbSingleColorHextile<SRC>;
+ friend class QRfbDualColorHextile<SRC>;
+ friend class QRfbMultiColorHextile<SRC>;
+};
+
+class QVNCServer : public QObject
+{
+ Q_OBJECT
+public:
+ QVNCServer(QVNCScreen *screen);
+ QVNCServer(QVNCScreen *screen, int id);
+ ~QVNCServer();
+
+ void setDirty();
+ void setDirtyCursor() { dirtyCursor = true; setDirty(); }
+ inline bool isConnected() const { return state == Connected; }
+ inline void setRefreshRate(int rate) { refreshRate = rate; }
+
+ enum ClientMsg { SetPixelFormat = 0,
+ FixColourMapEntries = 1,
+ SetEncodings = 2,
+ FramebufferUpdateRequest = 3,
+ KeyEvent = 4,
+ PointerEvent = 5,
+ ClientCutText = 6 };
+
+ enum ServerMsg { FramebufferUpdate = 0,
+ SetColourMapEntries = 1 };
+
+ void convertPixels(char *dst, const char *src, int count) const;
+
+ inline int clientBytesPerPixel() const {
+ return pixelFormat.bitsPerPixel / 8;
+ }
+
+ inline QVNCScreen* screen() const { return qvnc_screen; }
+ inline QVNCDirtyMap* dirtyMap() const { return qvnc_screen->dirtyMap(); }
+ inline QTcpSocket* clientSocket() const { return client; }
+ QImage *screenImage() const;
+ inline bool doPixelConversion() const { return needConversion; }
+#ifndef QT_NO_QWS_CURSOR
+ inline bool hasClientCursor() const { return qvnc_cursor != 0; }
+#endif
+
+ void setCursor(QVNCCursor * c) { cursor = c; }
+private:
+ void setPixelFormat();
+ void setEncodings();
+ void frameBufferUpdateRequest();
+ void pointerEvent();
+ void keyEvent();
+ void clientCutText();
+ bool pixelConversionNeeded() const;
+
+private slots:
+ void newConnection();
+ void readClient();
+ void checkUpdate();
+ void discardClient();
+
+private:
+ void init(uint port);
+ enum ClientState { Unconnected, Protocol, Init, Connected };
+ QTimer *timer;
+ QTcpServer *serverSocket;
+ QTcpSocket *client;
+ ClientState state;
+ quint8 msgType;
+ bool handleMsg;
+ QRfbPixelFormat pixelFormat;
+ Qt::KeyboardModifiers keymod;
+ Qt::MouseButtons buttons;
+ int encodingsPending;
+ int cutTextPending;
+ uint supportCopyRect : 1;
+ uint supportRRE : 1;
+ uint supportCoRRE : 1;
+ uint supportHextile : 1;
+ uint supportZRLE : 1;
+ uint supportCursor : 1;
+ uint supportDesktopSize : 1;
+ bool wantUpdate;
+ bool sameEndian;
+ bool needConversion;
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ bool swapBytes;
+#endif
+ bool dirtyCursor;
+ int refreshRate;
+ QVNCScreen *qvnc_screen;
+#ifndef QT_NO_QWS_CURSOR
+ QVNCClientCursor *qvnc_cursor;
+#endif
+
+ QRfbEncoder *encoder;
+ QVNCCursor *cursor;
+};
+
+
+QT_END_NAMESPACE
+#endif // QT_NO_QWS_VNC
+#endif // QSCREENVNC_P_H
diff --git a/src/plugins/platforms/vnc/vnc.pro b/src/plugins/platforms/vnc/vnc.pro
new file mode 100644
index 0000000000..07f8d888fd
--- /dev/null
+++ b/src/plugins/platforms/vnc/vnc.pro
@@ -0,0 +1,22 @@
+TARGET = qvncgraphicssystem
+include(../../qpluginbase.pri)
+
+QT += network
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
+
+SOURCES = main.cpp qvncintegration.cpp
+HEADERS = qvncintegration.h
+
+HEADERS += qvncserver.h
+SOURCES += qvncserver.cpp
+
+HEADERS += qvnccursor.h
+SOURCES += qvnccursor.cpp
+
+include(../fb_base/fb_base.pri)
+include(../fontdatabases/genericunix/genericunix.pri)
+
+target.path += $$[QT_INSTALL_PLUGINS]/platforms
+
+INSTALLS += target
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index 722979d1aa..5b0b6f3b80 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -2,17 +2,17 @@ TEMPLATE = subdirs
SUBDIRS *= sqldrivers script bearer
unix:!symbian {
- contains(QT_CONFIG,iconv)|contains(QT_CONFIG,gnu-libiconv):SUBDIRS *= codecs
+ contains(QT_CONFIG,iconv)|contains(QT_CONFIG,gnu-libiconv)|contains(QT_CONFIG,sun-libiconv):SUBDIRS *= codecs
} else {
SUBDIRS *= codecs
}
!contains(QT_CONFIG, no-gui): SUBDIRS *= imageformats iconengines
-!embedded:SUBDIRS *= graphicssystems
+!embedded:!qpa:SUBDIRS *= graphicssystems
embedded:SUBDIRS *= gfxdrivers decorations mousedrivers kbddrivers
!win32:!embedded:!mac:!symbian:SUBDIRS *= inputmethods
!symbian:!contains(QT_CONFIG, no-gui):SUBDIRS += accessible
symbian:SUBDIRS += s60
contains(QT_CONFIG, phonon): SUBDIRS *= phonon
contains(QT_CONFIG, multimedia): SUBDIRS *= audio
-
+qpa:SUBDIRS += platforms
diff --git a/src/plugins/s60/feedback/feedback.pro b/src/plugins/s60/feedback/feedback.pro
new file mode 100644
index 0000000000..1069220442
--- /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, 5.0)|contains(S60_VERSION, symbian3) {
+ HEADERS += qtactileFeedback.h
+ SOURCES += qtactileFeedback_s60.cpp
+
+ LIBS += -ltouchfeedback
+}
+
+load(data_caging_paths)
+
+TARGET.UID3=0x200315B4
diff --git a/src/plugins/s60/feedback/qtactileFeedback.h b/src/plugins/s60/feedback/qtactileFeedback.h
new file mode 100644
index 0000000000..7c4cc291fc
--- /dev/null
+++ b/src/plugins/s60/feedback/qtactileFeedback.h
@@ -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 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 <QEvent>
+#include <QWidget>
+
+#include "private/qs60style_feedbackinterface_p.h"
+
+class QTactileFeedback : public TactileFeedbackInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(TactileFeedbackInterface)
+
+ 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..ffcd170f46 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, 5.0)|contains(S60_VERSION, symbian3) {
+ SUBDIRS += feedback
+ }
+
# 5.0 is used also for Symbian3 and later
SUBDIRS += 5_0
} \ No newline at end of file
diff --git a/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pri b/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pri
index 494c64c55f..ebeccc9ad5 100644
--- a/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pri
+++ b/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pri
@@ -1,6 +1,12 @@
# We just want to include the sqlite3 binaries for Symbian for platforms that do not have them.
!symbian-abld:!symbian-sbsv2 {
!symbian_no_export_sqlite:!exists($${EPOCROOT}epoc32/release/armv5/lib/sqlite3.dso) {
+ contains(QMAKE_HOST.os,Windows) {
+ # Trick on Windows to do a touch on the file, since copy keeps the timestamp.
+ copyWithTouch = copy /y /b NUL+
+ } else {
+ copyWithTouch = "$$QMAKE_COPY "
+ }
symbian_sqlite3_zip_file = $$PWD/SQLite3_v9.2.zip
# The QMAKE_COPY section is to update timestamp on the file.
@@ -10,7 +16,7 @@
symbian_sqlite3_header.CONFIG = combine no_link
symbian_sqlite3_header.dependency_type = TYPE_C
symbian_sqlite3_header.commands = $$QMAKE_UNZIP -j ${QMAKE_FILE_NAME} epoc32/include/stdapis/${QMAKE_FILE_OUT_BASE}.h \
- && $$QMAKE_COPY ${QMAKE_FILE_OUT_BASE}.h ${QMAKE_FILE_OUT}.tmp \
+ && $${copyWithTouch}${QMAKE_FILE_OUT_BASE}.h ${QMAKE_FILE_OUT}.tmp \
&& $$QMAKE_DEL_FILE ${QMAKE_FILE_OUT_BASE}.h \
&& $$QMAKE_MOVE ${QMAKE_FILE_OUT}.tmp ${QMAKE_FILE_OUT}
silent:symbian_sqlite3_header.commands = @echo unzipping $@ && $$symbian_sqlite3_header.commands
@@ -22,7 +28,7 @@
!isEmpty(OBJECTS_DIR):symbian_sqlite3_dso.output = $$OBJECTS_DIR/$$symbian_sqlite3_dso.output
symbian_sqlite3_dso.CONFIG = combine no_link target_predeps
symbian_sqlite3_dso.commands = $$QMAKE_UNZIP -j ${QMAKE_FILE_NAME} epoc32/release/armv5/lib/${QMAKE_FILE_OUT_BASE}.dso \
- && $$QMAKE_COPY ${QMAKE_FILE_OUT_BASE}.dso ${QMAKE_FILE_OUT}.tmp \
+ && $${copyWithTouch}${QMAKE_FILE_OUT_BASE}.dso ${QMAKE_FILE_OUT}.tmp \
&& $$QMAKE_DEL_FILE ${QMAKE_FILE_OUT_BASE}.dso \
&& $$QMAKE_MOVE ${QMAKE_FILE_OUT}.tmp ${QMAKE_FILE_OUT}
silent:symbian_sqlite3_dso.commands = @echo unzipping $@ && $$symbian_sqlite3_dso.commands
diff --git a/src/qbase.pri b/src/qbase.pri
index 1e13149566..76079f2d43 100644
--- a/src/qbase.pri
+++ b/src/qbase.pri
@@ -8,7 +8,6 @@ isEmpty(QT_MAJOR_VERSION) {
} else {
VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
}
-mac:!contains(QMAKE_EXT_C, .mm):QMAKE_EXT_C += .mm
#load up the headers info
CONFIG += qt_install_headers
@@ -185,8 +184,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,10 +194,13 @@ 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.files = $$QMAKE_LIBDIR_QT/$${TARGET}.dll
partial_upgrade.path = c:/sys/bin
DEPLOYMENT += partial_upgrade
}
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/sql/q3sqlfieldinfo.qdoc b/src/qt3support/sql/q3sqlfieldinfo.qdoc
index 2ba9f7011c..a4c561951a 100644
--- a/src/qt3support/sql/q3sqlfieldinfo.qdoc
+++ b/src/qt3support/sql/q3sqlfieldinfo.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/src/qt3support/sql/q3sqlrecordinfo.qdoc b/src/qt3support/sql/q3sqlrecordinfo.qdoc
index bbe46e4815..1d89893668 100644
--- a/src/qt3support/sql/q3sqlrecordinfo.qdoc
+++ b/src/qt3support/sql/q3sqlrecordinfo.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/src/qt3support/text/q3richtext.cpp b/src/qt3support/text/q3richtext.cpp
index d84a85b4d6..f8cd1edae8 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/qt3support/tools/q3asciicache.qdoc b/src/qt3support/tools/q3asciicache.qdoc
index 87a8b6b677..df82c13fc9 100644
--- a/src/qt3support/tools/q3asciicache.qdoc
+++ b/src/qt3support/tools/q3asciicache.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/src/qt3support/tools/q3asciidict.qdoc b/src/qt3support/tools/q3asciidict.qdoc
index b73e5d646b..8ab87c9dd5 100644
--- a/src/qt3support/tools/q3asciidict.qdoc
+++ b/src/qt3support/tools/q3asciidict.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/src/qt3support/tools/q3cache.qdoc b/src/qt3support/tools/q3cache.qdoc
index f1a2f3a7f2..0ee11670ea 100644
--- a/src/qt3support/tools/q3cache.qdoc
+++ b/src/qt3support/tools/q3cache.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/src/qt3support/tools/q3dict.qdoc b/src/qt3support/tools/q3dict.qdoc
index 993345eb98..0736bb4de1 100644
--- a/src/qt3support/tools/q3dict.qdoc
+++ b/src/qt3support/tools/q3dict.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/src/qt3support/tools/q3intcache.qdoc b/src/qt3support/tools/q3intcache.qdoc
index 81b2227c3b..78c6a821a2 100644
--- a/src/qt3support/tools/q3intcache.qdoc
+++ b/src/qt3support/tools/q3intcache.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/src/qt3support/tools/q3intdict.qdoc b/src/qt3support/tools/q3intdict.qdoc
index 7d9338e752..27c37a0da0 100644
--- a/src/qt3support/tools/q3intdict.qdoc
+++ b/src/qt3support/tools/q3intdict.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/src/qt3support/tools/q3memarray.qdoc b/src/qt3support/tools/q3memarray.qdoc
index a8f62bf96d..13b1c2f61b 100644
--- a/src/qt3support/tools/q3memarray.qdoc
+++ b/src/qt3support/tools/q3memarray.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/src/qt3support/tools/q3ptrdict.qdoc b/src/qt3support/tools/q3ptrdict.qdoc
index 247067f6d9..5fb870656f 100644
--- a/src/qt3support/tools/q3ptrdict.qdoc
+++ b/src/qt3support/tools/q3ptrdict.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/src/qt3support/tools/q3ptrlist.qdoc b/src/qt3support/tools/q3ptrlist.qdoc
index 247a6b3d46..294e4baa9f 100644
--- a/src/qt3support/tools/q3ptrlist.qdoc
+++ b/src/qt3support/tools/q3ptrlist.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/src/qt3support/tools/q3ptrqueue.qdoc b/src/qt3support/tools/q3ptrqueue.qdoc
index 3c6881d3f2..2c41cf5133 100644
--- a/src/qt3support/tools/q3ptrqueue.qdoc
+++ b/src/qt3support/tools/q3ptrqueue.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/src/qt3support/tools/q3ptrstack.qdoc b/src/qt3support/tools/q3ptrstack.qdoc
index c58dcb8a73..8128a7fc19 100644
--- a/src/qt3support/tools/q3ptrstack.qdoc
+++ b/src/qt3support/tools/q3ptrstack.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/src/qt3support/tools/q3ptrvector.qdoc b/src/qt3support/tools/q3ptrvector.qdoc
index 689f21c1c5..586b6e44b0 100644
--- a/src/qt3support/tools/q3ptrvector.qdoc
+++ b/src/qt3support/tools/q3ptrvector.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/src/qt3support/tools/q3valuelist.qdoc b/src/qt3support/tools/q3valuelist.qdoc
index 30d1e68d6b..554e0f536a 100644
--- a/src/qt3support/tools/q3valuelist.qdoc
+++ b/src/qt3support/tools/q3valuelist.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/src/qt3support/tools/q3valuestack.qdoc b/src/qt3support/tools/q3valuestack.qdoc
index 7960950fc7..6e2ccbb751 100644
--- a/src/qt3support/tools/q3valuestack.qdoc
+++ b/src/qt3support/tools/q3valuestack.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/src/qt3support/tools/q3valuevector.h b/src/qt3support/tools/q3valuevector.h
index cdd5fcd9d1..f86cb30bd4 100644
--- a/src/qt3support/tools/q3valuevector.h
+++ b/src/qt3support/tools/q3valuevector.h
@@ -84,9 +84,9 @@ public:
void resize(int n, const T& val = T())
{
if (n < this->size())
- erase(this->begin() + n, this->end());
+ this->erase(this->begin() + n, this->end());
else
- insert(this->end(), n - this->size(), val);
+ this->insert(this->end(), n - this->size(), val);
}
diff --git a/src/qt3support/tools/q3valuevector.qdoc b/src/qt3support/tools/q3valuevector.qdoc
index a10b36eb90..afe7f9c123 100644
--- a/src/qt3support/tools/q3valuevector.qdoc
+++ b/src/qt3support/tools/q3valuevector.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/src/qt_install.pri b/src/qt_install.pri
index f906e924bf..268bb864f6 100644
--- a/src/qt_install.pri
+++ b/src/qt_install.pri
@@ -38,7 +38,7 @@ qt_install_headers {
}
}
-embedded:equals(TARGET, QtGui) {
+embedded|qpa: equals(TARGET, QtGui) {
# install fonts for embedded
INSTALLS += fonts
fonts.path = $$[QT_INSTALL_LIBS]/fonts
diff --git a/src/s60installs/bwins/QtCoreu.def b/src/s60installs/bwins/QtCoreu.def
index 4ad9fbbdb4..b0bf2ccb44 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)
@@ -4482,61 +4482,8 @@ EXPORTS
?textDirection@QLocale@@QBE?AW4LayoutDirection@Qt@@XZ @ 4481 NONAME ; enum Qt::LayoutDirection QLocale::textDirection(void) const
?msecsSinceReference@QElapsedTimer@@QBE_JXZ @ 4482 NONAME ; long long QElapsedTimer::msecsSinceReference(void) const
?selectThread@QEventDispatcherSymbian@@AAEAAVQSelectThread@@XZ @ 4483 NONAME ; class QSelectThread & QEventDispatcherSymbian::selectThread(void)
- ??0QCoreApplication@@QAE@AAHPAPADH@Z @ 4484 NONAME ; QCoreApplication::QCoreApplication(int &, char * *, int)
- ??0QCoreApplicationPrivate@@QAE@AAHPAPADI@Z @ 4485 NONAME ; QCoreApplicationPrivate::QCoreApplicationPrivate(int &, char * *, unsigned int)
- ?connect@QObject@@SA_NPBV1@ABVQMetaMethod@@01W4ConnectionType@Qt@@@Z @ 4486 NONAME ; bool QObject::connect(class QObject const *, class QMetaMethod const &, class QObject const *, class QMetaMethod const &, enum Qt::ConnectionType)
- ?contains@QString@@QBE?AVQBool@@ABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4487 NONAME ; class QBool QString::contains(class QStringRef const &, enum Qt::CaseSensitivity) const
- ?contains@QStringRef@@QBE?AVQBool@@ABV1@W4CaseSensitivity@Qt@@@Z @ 4488 NONAME ; class QBool QStringRef::contains(class QStringRef const &, enum Qt::CaseSensitivity) const
- ?contains@QStringRef@@QBE?AVQBool@@ABVQString@@W4CaseSensitivity@Qt@@@Z @ 4489 NONAME ; class QBool QStringRef::contains(class QString const &, enum Qt::CaseSensitivity) const
- ?contains@QStringRef@@QBE?AVQBool@@VQChar@@W4CaseSensitivity@Qt@@@Z @ 4490 NONAME ; class QBool QStringRef::contains(class QChar, enum Qt::CaseSensitivity) const
- ?contains@QStringRef@@QBE?AVQBool@@VQLatin1String@@W4CaseSensitivity@Qt@@@Z @ 4491 NONAME ; class QBool QStringRef::contains(class QLatin1String, enum Qt::CaseSensitivity) const
- ?count@QString@@QBEHABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4492 NONAME ; int QString::count(class QStringRef const &, enum Qt::CaseSensitivity) const
- ?count@QStringRef@@QBEHABV1@W4CaseSensitivity@Qt@@@Z @ 4493 NONAME ; int QStringRef::count(class QStringRef const &, enum Qt::CaseSensitivity) const
- ?count@QStringRef@@QBEHABVQString@@W4CaseSensitivity@Qt@@@Z @ 4494 NONAME ; int QStringRef::count(class QString const &, enum Qt::CaseSensitivity) const
- ?count@QStringRef@@QBEHVQChar@@W4CaseSensitivity@Qt@@@Z @ 4495 NONAME ; int QStringRef::count(class QChar, enum Qt::CaseSensitivity) const
- ?disconnect@QObject@@SA_NPBV1@ABVQMetaMethod@@01@Z @ 4496 NONAME ; bool QObject::disconnect(class QObject const *, class QMetaMethod const &, class QObject const *, class QMetaMethod const &)
- ?endsWith@QString@@QBE_NABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4497 NONAME ; bool QString::endsWith(class QStringRef const &, enum Qt::CaseSensitivity) const
- ?endsWith@QStringRef@@QBE_NABV1@W4CaseSensitivity@Qt@@@Z @ 4498 NONAME ; bool QStringRef::endsWith(class QStringRef const &, enum Qt::CaseSensitivity) const
- ?endsWith@QStringRef@@QBE_NABVQString@@W4CaseSensitivity@Qt@@@Z @ 4499 NONAME ; bool QStringRef::endsWith(class QString const &, enum Qt::CaseSensitivity) const
- ?endsWith@QStringRef@@QBE_NVQChar@@W4CaseSensitivity@Qt@@@Z @ 4500 NONAME ; bool QStringRef::endsWith(class QChar, enum Qt::CaseSensitivity) const
- ?endsWith@QStringRef@@QBE_NVQLatin1String@@W4CaseSensitivity@Qt@@@Z @ 4501 NONAME ; bool QStringRef::endsWith(class QLatin1String, enum Qt::CaseSensitivity) const
- ?indexOf@QString@@QBEHABVQStringRef@@HW4CaseSensitivity@Qt@@@Z @ 4502 NONAME ; int QString::indexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const
- ?indexOf@QStringRef@@QBEHABV1@HW4CaseSensitivity@Qt@@@Z @ 4503 NONAME ; int QStringRef::indexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const
- ?indexOf@QStringRef@@QBEHABVQString@@HW4CaseSensitivity@Qt@@@Z @ 4504 NONAME ; int QStringRef::indexOf(class QString const &, int, enum Qt::CaseSensitivity) const
- ?indexOf@QStringRef@@QBEHVQChar@@HW4CaseSensitivity@Qt@@@Z @ 4505 NONAME ; int QStringRef::indexOf(class QChar, int, enum Qt::CaseSensitivity) const
- ?indexOf@QStringRef@@QBEHVQLatin1String@@HW4CaseSensitivity@Qt@@@Z @ 4506 NONAME ; int QStringRef::indexOf(class QLatin1String, int, enum Qt::CaseSensitivity) const
- ?isLocalFile@QUrl@@QBE_NXZ @ 4507 NONAME ; bool QUrl::isLocalFile(void) const
- ?lastIndexOf@QString@@QBEHABVQStringRef@@HW4CaseSensitivity@Qt@@@Z @ 4508 NONAME ; int QString::lastIndexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const
- ?lastIndexOf@QStringRef@@QBEHABV1@HW4CaseSensitivity@Qt@@@Z @ 4509 NONAME ; int QStringRef::lastIndexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const
- ?lastIndexOf@QStringRef@@QBEHABVQString@@HW4CaseSensitivity@Qt@@@Z @ 4510 NONAME ; int QStringRef::lastIndexOf(class QString const &, int, enum Qt::CaseSensitivity) const
- ?lastIndexOf@QStringRef@@QBEHVQChar@@HW4CaseSensitivity@Qt@@@Z @ 4511 NONAME ; int QStringRef::lastIndexOf(class QChar, int, enum Qt::CaseSensitivity) const
- ?lastIndexOf@QStringRef@@QBEHVQLatin1String@@HW4CaseSensitivity@Qt@@@Z @ 4512 NONAME ; int QStringRef::lastIndexOf(class QLatin1String, int, enum Qt::CaseSensitivity) const
- ?lockInline@QMutex@@QAEXXZ @ 4513 NONAME ; void QMutex::lockInline(void)
- ?lockInternal@QMutex@@AAEXXZ @ 4514 NONAME ; void QMutex::lockInternal(void)
- ?nativeKey@QSharedMemory@@QBE?AVQString@@XZ @ 4515 NONAME ; class QString QSharedMemory::nativeKey(void) const
- ?senderSignalIndex@QObject@@IBEHXZ @ 4516 NONAME ; int QObject::senderSignalIndex(void) const
- ?setNativeKey@QSharedMemory@@QAEXABVQString@@@Z @ 4517 NONAME ; void QSharedMemory::setNativeKey(class QString const &)
- ?startsWith@QString@@QBE_NABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4518 NONAME ; bool QString::startsWith(class QStringRef const &, enum Qt::CaseSensitivity) const
- ?startsWith@QStringRef@@QBE_NABV1@W4CaseSensitivity@Qt@@@Z @ 4519 NONAME ; bool QStringRef::startsWith(class QStringRef const &, enum Qt::CaseSensitivity) const
- ?startsWith@QStringRef@@QBE_NABVQString@@W4CaseSensitivity@Qt@@@Z @ 4520 NONAME ; bool QStringRef::startsWith(class QString const &, enum Qt::CaseSensitivity) const
- ?startsWith@QStringRef@@QBE_NVQChar@@W4CaseSensitivity@Qt@@@Z @ 4521 NONAME ; bool QStringRef::startsWith(class QChar, enum Qt::CaseSensitivity) const
- ?startsWith@QStringRef@@QBE_NVQLatin1String@@W4CaseSensitivity@Qt@@@Z @ 4522 NONAME ; bool QStringRef::startsWith(class QLatin1String, enum Qt::CaseSensitivity) const
- ?tryLockInline@QMutex@@QAE_NXZ @ 4523 NONAME ; bool QMutex::tryLockInline(void)
- ?unlockInline@QMutex@@QAEXXZ @ 4524 NONAME ; void QMutex::unlockInline(void)
- ?unlockInternal@QMutex@@AAEXXZ @ 4525 NONAME ; void QMutex::unlockInternal(void)
- ?waitForDone@QThreadPool@@QAE_NH@Z @ 4526 NONAME ; bool QThreadPool::waitForDone(int)
- ?app_compile_version@QCoreApplicationPrivate@@2HA @ 4527 NONAME ; int QCoreApplicationPrivate::app_compile_version
- ??0QFileInfo@@QAE@PAVQFileInfoPrivate@@@Z @ 4528 NONAME ; QFileInfo::QFileInfo(class QFileInfoPrivate *)
- ??0QSystemError@@QAE@HW4ErrorScope@0@@Z @ 4529 NONAME ; QSystemError::QSystemError(int, enum QSystemError::ErrorScope)
- ??0QSystemError@@QAE@XZ @ 4530 NONAME ; QSystemError::QSystemError(void)
- ?cast@QMetaObject@@QBEPBVQObject@@PBV2@@Z @ 4531 NONAME ; class QObject const * QMetaObject::cast(class QObject const *) const
- ?error@QSystemError@@QAEHXZ @ 4532 NONAME ; int QSystemError::error(void)
- ?qt_symbian_SetupThreadHeap@@YAHHAAUSStdEpocThreadCreateInfo@@@Z @ 4533 NONAME ; int qt_symbian_SetupThreadHeap(int, struct SStdEpocThreadCreateInfo &)
- ?scope@QSystemError@@QAE?AW4ErrorScope@1@XZ @ 4534 NONAME ; enum QSystemError::ErrorScope QSystemError::scope(void)
- ?toAscii@QStringRef@@QBE?AVQByteArray@@XZ @ 4535 NONAME ; class QByteArray QStringRef::toAscii(void) const
- ?toLatin1@QStringRef@@QBE?AVQByteArray@@XZ @ 4536 NONAME ; class QByteArray QStringRef::toLatin1(void) const
- ?toLocal8Bit@QStringRef@@QBE?AVQByteArray@@XZ @ 4537 NONAME ; class QByteArray QStringRef::toLocal8Bit(void) const
- ?toString@QSystemError@@QAE?AVQString@@XZ @ 4538 NONAME ; class QString QSystemError::toString(void)
- ?toUcs4@QStringRef@@QBE?AV?$QVector@I@@XZ @ 4539 NONAME ; class QVector<unsigned int> QStringRef::toUcs4(void) const
- ?toUtf8@QStringRef@@QBE?AVQByteArray@@XZ @ 4540 NONAME ; class QByteArray QStringRef::toUtf8(void) const
+ ?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 cf2f325827..9e88df7211 100644
--- a/src/s60installs/bwins/QtDeclarativeu.def
+++ b/src/s60installs/bwins/QtDeclarativeu.def
@@ -1,1718 +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 ; bool QDeclarativeDebugClient::isConnected(void) const
- ?enabled@QDeclarativeBinding@@QBE_NXZ @ 145 NONAME ; bool QDeclarativeBinding::enabled(void) const
+ ?isConnected@QDeclarativeDebugClient@@QBE_NXZ @ 144 NONAME ABSENT ; bool QDeclarativeDebugClient::isConnected(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 ; 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
+ ?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 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 ; 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)
+ ?isEnabled@QDeclarativeDebugService@@QBE_NXZ @ 463 NONAME ABSENT ; bool QDeclarativeDebugService::isEnabled(void) const
+ ?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 ; 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)
+ ?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 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
- ?isEnabled@QDeclarativeDebugClient@@QBE_NXZ @ 1030 NONAME ; bool QDeclarativeDebugClient::isEnabled(void) const
- ?send@QPacketProtocol@@QAEXABVQPacket@@@Z @ 1031 NONAME ; void QPacketProtocol::send(class QPacket 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 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 ; void QDeclarativeDebugService::enabledChanged(bool)
- ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1150 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugObjectReference const &, class QObject *)
+ ?enabledChanged@QDeclarativeDebugService@@MAEX_N@Z @ 1149 NONAME ABSENT ; void QDeclarativeDebugService::enabledChanged(bool)
+ ?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)
- ?setEnabled@QDeclarativeDebugClient@@QAEX_N@Z @ 1388 NONAME ; void QDeclarativeDebugClient::setEnabled(bool)
- ??1QMetaObjectBuilder@@UAE@XZ @ 1389 NONAME ; QMetaObjectBuilder::~QMetaObjectBuilder(void)
+ ?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 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
+ ?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 305952cce3..b4a5dfc881 100644
--- a/src/s60installs/bwins/QtGuiu.def
+++ b/src/s60installs/bwins/QtGuiu.def
@@ -12890,70 +12890,12 @@ 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
- ?lastResortFont@QFont@@QBE?AVQString@@XZ @ 12894 NONAME ; class QString QFont::lastResortFont(void) const
- ??0QApplicationPrivate@@QAE@AAHPAPADW4Type@QApplication@@H@Z @ 12895 NONAME ; QApplicationPrivate::QApplicationPrivate(int &, char * *, enum QApplication::Type, int)
- ??0QGlyphs@@QAE@ABV0@@Z @ 12896 NONAME ; QGlyphs::QGlyphs(class QGlyphs const &)
- ??0QGlyphs@@QAE@XZ @ 12897 NONAME ; QGlyphs::QGlyphs(void)
- ??1QGlyphs@@QAE@XZ @ 12898 NONAME ; QGlyphs::~QGlyphs(void)
- ??4QGlyphs@@QAEAAV0@ABV0@@Z @ 12899 NONAME ; class QGlyphs & QGlyphs::operator=(class QGlyphs const &)
- ??6@YA?AVQDebug@@V0@PBVQSymbianEvent@@@Z @ 12900 NONAME ; class QDebug operator<<(class QDebug, class QSymbianEvent const *)
- ??8QGlyphs@@QBE_NABV0@@Z @ 12901 NONAME ; bool QGlyphs::operator==(class QGlyphs const &) const
- ??9QGlyphs@@QBE_NABV0@@Z @ 12902 NONAME ; bool QGlyphs::operator!=(class QGlyphs const &) const
- ??HQGlyphs@@ABE?AV0@ABV0@@Z @ 12903 NONAME ; class QGlyphs QGlyphs::operator+(class QGlyphs const &) const
- ??MQItemSelectionRange@@QBE_NABV0@@Z @ 12904 NONAME ; bool QItemSelectionRange::operator<(class QItemSelectionRange const &) const
- ??YQGlyphs@@AAEAAV0@ABV0@@Z @ 12905 NONAME ; class QGlyphs & QGlyphs::operator+=(class QGlyphs const &)
- ?alphaRGBMapForGlyph@QFontEngine@@UAE?AVQImage@@IUQFixed@@HABVQTransform@@@Z @ 12906 NONAME ; class QImage QFontEngine::alphaRGBMapForGlyph(unsigned int, struct QFixed, int, class QTransform const &)
- ?buddy@QAbstractProxyModel@@UBE?AVQModelIndex@@ABV2@@Z @ 12907 NONAME ; class QModelIndex QAbstractProxyModel::buddy(class QModelIndex const &) const
- ?calculateSubPixelPositionCount@QTextureGlyphCache@@IBEHI@Z @ 12908 NONAME ; int QTextureGlyphCache::calculateSubPixelPositionCount(unsigned int) const
- ?canFetchMore@QAbstractProxyModel@@UBE_NABVQModelIndex@@@Z @ 12909 NONAME ; bool QAbstractProxyModel::canFetchMore(class QModelIndex const &) const
- ?clear@QGlyphs@@QAEXXZ @ 12910 NONAME ; void QGlyphs::clear(void)
- ?clipBoundingRect@QPainter@@QBE?AVQRectF@@XZ @ 12911 NONAME ; class QRectF QPainter::clipBoundingRect(void) const
- ?convertToPostscriptFontFamilyName@QFontEngine@@SA?AVQByteArray@@ABV2@@Z @ 12912 NONAME ; class QByteArray QFontEngine::convertToPostscriptFontFamilyName(class QByteArray const &)
- ?createExplicitFont@QFontEngine@@UBE?AVQFont@@XZ @ 12913 NONAME ; class QFont QFontEngine::createExplicitFont(void) const
- ?createExplicitFontWithName@QFontEngine@@IBE?AVQFont@@ABVQString@@@Z @ 12914 NONAME ; class QFont QFontEngine::createExplicitFontWithName(class QString const &) const
- ?detach@QGlyphs@@AAEXXZ @ 12915 NONAME ; void QGlyphs::detach(void)
- ?drawGlyphs@QPainter@@QAEXABVQPointF@@ABVQGlyphs@@@Z @ 12916 NONAME ; void QPainter::drawGlyphs(class QPointF const &, class QGlyphs const &)
- ?fetchMore@QAbstractProxyModel@@UAEXABVQModelIndex@@@Z @ 12917 NONAME ; void QAbstractProxyModel::fetchMore(class QModelIndex const &)
- ?fill@QImage@@QAEXABVQColor@@@Z @ 12918 NONAME ; void QImage::fill(class QColor const &)
- ?fill@QImage@@QAEXW4GlobalColor@Qt@@@Z @ 12919 NONAME ; void QImage::fill(enum Qt::GlobalColor)
- ?fillInPendingGlyphs@QTextureGlyphCache@@QAEXXZ @ 12920 NONAME ; void QTextureGlyphCache::fillInPendingGlyphs(void)
- ?fillTexture@QImageTextureGlyphCache@@UAEXABUCoord@QTextureGlyphCache@@IUQFixed@@@Z @ 12921 NONAME ; void QImageTextureGlyphCache::fillTexture(struct QTextureGlyphCache::Coord const &, unsigned int, struct QFixed)
- ?font@QGlyphs@@QBE?AVQFont@@XZ @ 12922 NONAME ; class QFont QGlyphs::font(void) const
- ?get@QFontPrivate@@SAPAV1@ABVQFont@@@Z @ 12923 NONAME ; class QFontPrivate * QFontPrivate::get(class QFont const &)
- ?glyphIndexes@QGlyphs@@QBE?AV?$QVector@I@@XZ @ 12924 NONAME ; class QVector<unsigned int> QGlyphs::glyphIndexes(void) const
- ?glyphs@QTextFragment@@QBE?AV?$QList@VQGlyphs@@@@XZ @ 12925 NONAME ; class QList<class QGlyphs> QTextFragment::glyphs(void) const
- ?glyphs@QTextLayout@@QBE?AV?$QList@VQGlyphs@@@@XZ @ 12926 NONAME ; class QList<class QGlyphs> QTextLayout::glyphs(void) const
- ?glyphs@QTextLine@@ABE?AV?$QList@VQGlyphs@@@@HH@Z @ 12927 NONAME ; class QList<class QGlyphs> QTextLine::glyphs(int, int) const
- ?hasChildren@QAbstractProxyModel@@UBE_NABVQModelIndex@@@Z @ 12928 NONAME ; bool QAbstractProxyModel::hasChildren(class QModelIndex const &) const
- ?hasHeightForWidth@QWidgetPrivate@@UBE_NXZ @ 12929 NONAME ; bool QWidgetPrivate::hasHeightForWidth(void) const
- ?hasWidthForHeight@QSizePolicy@@QBE_NXZ @ 12930 NONAME ; bool QSizePolicy::hasWidthForHeight(void) const
- ?heightForWidth@QTabWidget@@UBEHH@Z @ 12931 NONAME ; int QTabWidget::heightForWidth(int) const
- ?inFontUcs4@QFontMetrics@@QBE_NI@Z @ 12932 NONAME ; bool QFontMetrics::inFontUcs4(unsigned int) const
- ?inFontUcs4@QFontMetricsF@@QBE_NI@Z @ 12933 NONAME ; bool QFontMetricsF::inFontUcs4(unsigned int) const
- ?maxTextureHeight@QTextureGlyphCache@@UBEHXZ @ 12934 NONAME ; int QTextureGlyphCache::maxTextureHeight(void) const
- ?maxTextureWidth@QTextureGlyphCache@@UBEHXZ @ 12935 NONAME ; int QTextureGlyphCache::maxTextureWidth(void) const
- ?mimeData@QAbstractProxyModel@@UBEPAVQMimeData@@ABV?$QList@VQModelIndex@@@@@Z @ 12936 NONAME ; class QMimeData * QAbstractProxyModel::mimeData(class QList<class QModelIndex> const &) const
- ?mimeTypes@QAbstractProxyModel@@UBE?AVQStringList@@XZ @ 12937 NONAME ; class QStringList QAbstractProxyModel::mimeTypes(void) const
- ?minimumSizeHint@QCheckBox@@UBE?AVQSize@@XZ @ 12938 NONAME ; class QSize QCheckBox::minimumSizeHint(void) const
- ?minimumSizeHint@QRadioButton@@UBE?AVQSize@@XZ @ 12939 NONAME ; class QSize QRadioButton::minimumSizeHint(void) const
- ?numberPrefix@QTextListFormat@@QBE?AVQString@@XZ @ 12940 NONAME ; class QString QTextListFormat::numberPrefix(void) const
- ?numberSuffix@QTextListFormat@@QBE?AVQString@@XZ @ 12941 NONAME ; class QString QTextListFormat::numberSuffix(void) const
- ?positions@QGlyphs@@QBE?AV?$QVector@VQPointF@@@@XZ @ 12942 NONAME ; class QVector<class QPointF> QGlyphs::positions(void) const
- ?removeItem@QGraphicsGridLayout@@QAEXPAVQGraphicsLayoutItem@@@Z @ 12943 NONAME ; void QGraphicsGridLayout::removeItem(class QGraphicsLayoutItem *)
- ?resizeCache@QTextureGlyphCache@@QAEXHH@Z @ 12944 NONAME ; void QTextureGlyphCache::resizeCache(int, int)
- ?setFont@QGlyphs@@QAEXABVQFont@@@Z @ 12945 NONAME ; void QGlyphs::setFont(class QFont const &)
- ?setGlyphIndexes@QGlyphs@@QAEXABV?$QVector@I@@@Z @ 12946 NONAME ; void QGlyphs::setGlyphIndexes(class QVector<unsigned int> const &)
- ?setItemData@QAbstractProxyModel@@UAE_NABVQModelIndex@@ABV?$QMap@HVQVariant@@@@@Z @ 12947 NONAME ; bool QAbstractProxyModel::setItemData(class QModelIndex const &, class QMap<int, class QVariant> const &)
- ?setNumberPrefix@QTextListFormat@@QAEXABVQString@@@Z @ 12948 NONAME ; void QTextListFormat::setNumberPrefix(class QString const &)
- ?setNumberSuffix@QTextListFormat@@QAEXABVQString@@@Z @ 12949 NONAME ; void QTextListFormat::setNumberSuffix(class QString const &)
- ?setPositions@QGlyphs@@QAEXABV?$QVector@VQPointF@@@@@Z @ 12950 NONAME ; void QGlyphs::setPositions(class QVector<class QPointF> const &)
- ?setWidthForHeight@QSizePolicy@@QAEX_N@Z @ 12951 NONAME ; void QSizePolicy::setWidthForHeight(bool)
- ?sort@QAbstractProxyModel@@UAEXHW4SortOrder@Qt@@@Z @ 12952 NONAME ; void QAbstractProxyModel::sort(int, enum Qt::SortOrder)
- ?span@QAbstractProxyModel@@UBE?AVQSize@@ABVQModelIndex@@@Z @ 12953 NONAME ; class QSize QAbstractProxyModel::span(class QModelIndex const &) const
- ?subPixelPositionForX@QTextureGlyphCache@@QBE?AUQFixed@@U2@@Z @ 12954 NONAME ; struct QFixed QTextureGlyphCache::subPixelPositionForX(struct QFixed) const
- ?supportedDropActions@QAbstractProxyModel@@UBE?AV?$QFlags@W4DropAction@Qt@@@@XZ @ 12955 NONAME ; class QFlags<enum Qt::DropAction> QAbstractProxyModel::supportedDropActions(void) const
- ?supportsSubPixelPositions@QFontEngine@@UBE_NXZ @ 12956 NONAME ; bool QFontEngine::supportsSubPixelPositions(void) const
- ?textureMapForGlyph@QTextureGlyphCache@@QBE?AVQImage@@IUQFixed@@@Z @ 12957 NONAME ; class QImage QTextureGlyphCache::textureMapForGlyph(unsigned int, struct QFixed) const
+ ?maxTextureHeight@QTextureGlyphCache@@UBEHXZ @ 12894 NONAME ; int QTextureGlyphCache::maxTextureHeight(void) const
+ ?maxTextureWidth@QTextureGlyphCache@@UBEHXZ @ 12895 NONAME ; int QTextureGlyphCache::maxTextureWidth(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
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 ab2c5e5e51..3864914b2e 100644
--- a/src/s60installs/eabi/QtCoreu.def
+++ b/src/s60installs/eabi/QtCoreu.def
@@ -3712,51 +3712,6 @@ EXPORTS
_ZltRK13QElapsedTimerS1_ @ 3711 NONAME
_ZrsR11QDataStreamR12QEasingCurve @ 3712 NONAME
_Z26qt_symbian_SetupThreadHeapiR24SStdEpocThreadCreateInfo @ 3713 NONAME
- _ZN11QThreadPool11waitForDoneEi @ 3714 NONAME
- _ZN12QSystemError8toStringEv @ 3715 NONAME
- _ZN13QSharedMemory12setNativeKeyERK7QString @ 3716 NONAME
- _ZN16QCoreApplicationC1ERiPPci @ 3717 NONAME
- _ZN16QCoreApplicationC2ERiPPci @ 3718 NONAME
- _ZN23QCoreApplicationPrivate19app_compile_versionE @ 3719 NONAME DATA 4
- _ZN23QCoreApplicationPrivateC1ERiPPcj @ 3720 NONAME
- _ZN23QCoreApplicationPrivateC2ERiPPcj @ 3721 NONAME
- _ZN6QMutex12lockInternalEv @ 3722 NONAME
- _ZN6QMutex14unlockInternalEv @ 3723 NONAME
- _ZN7QObject10disconnectEPKS_RK11QMetaMethodS1_S4_ @ 3724 NONAME
- _ZN7QObject7connectEPKS_RK11QMetaMethodS1_S4_N2Qt14ConnectionTypeE @ 3725 NONAME
- _ZN9QFileInfoC1EP16QFileInfoPrivate @ 3726 NONAME
- _ZN9QFileInfoC2EP16QFileInfoPrivate @ 3727 NONAME
- _ZNK10QStringRef10startsWithE13QLatin1StringN2Qt15CaseSensitivityE @ 3728 NONAME
- _ZNK10QStringRef10startsWithE5QCharN2Qt15CaseSensitivityE @ 3729 NONAME
- _ZNK10QStringRef10startsWithERK7QStringN2Qt15CaseSensitivityE @ 3730 NONAME
- _ZNK10QStringRef10startsWithERKS_N2Qt15CaseSensitivityE @ 3731 NONAME
- _ZNK10QStringRef11lastIndexOfE13QLatin1StringiN2Qt15CaseSensitivityE @ 3732 NONAME
- _ZNK10QStringRef11lastIndexOfE5QChariN2Qt15CaseSensitivityE @ 3733 NONAME
- _ZNK10QStringRef11lastIndexOfERK7QStringiN2Qt15CaseSensitivityE @ 3734 NONAME
- _ZNK10QStringRef11lastIndexOfERKS_iN2Qt15CaseSensitivityE @ 3735 NONAME
- _ZNK10QStringRef11toLocal8BitEv @ 3736 NONAME
- _ZNK10QStringRef5countE5QCharN2Qt15CaseSensitivityE @ 3737 NONAME
- _ZNK10QStringRef5countERK7QStringN2Qt15CaseSensitivityE @ 3738 NONAME
- _ZNK10QStringRef5countERKS_N2Qt15CaseSensitivityE @ 3739 NONAME
- _ZNK10QStringRef6toUcs4Ev @ 3740 NONAME
- _ZNK10QStringRef6toUtf8Ev @ 3741 NONAME
- _ZNK10QStringRef7indexOfE13QLatin1StringiN2Qt15CaseSensitivityE @ 3742 NONAME
- _ZNK10QStringRef7indexOfE5QChariN2Qt15CaseSensitivityE @ 3743 NONAME
- _ZNK10QStringRef7indexOfERK7QStringiN2Qt15CaseSensitivityE @ 3744 NONAME
- _ZNK10QStringRef7indexOfERKS_iN2Qt15CaseSensitivityE @ 3745 NONAME
- _ZNK10QStringRef7toAsciiEv @ 3746 NONAME
- _ZNK10QStringRef8endsWithE13QLatin1StringN2Qt15CaseSensitivityE @ 3747 NONAME
- _ZNK10QStringRef8endsWithE5QCharN2Qt15CaseSensitivityE @ 3748 NONAME
- _ZNK10QStringRef8endsWithERK7QStringN2Qt15CaseSensitivityE @ 3749 NONAME
- _ZNK10QStringRef8endsWithERKS_N2Qt15CaseSensitivityE @ 3750 NONAME
- _ZNK10QStringRef8toLatin1Ev @ 3751 NONAME
- _ZNK11QMetaObject4castEPK7QObject @ 3752 NONAME
- _ZNK13QSharedMemory9nativeKeyEv @ 3753 NONAME
- _ZNK4QUrl11isLocalFileEv @ 3754 NONAME
- _ZNK7QObject17senderSignalIndexEv @ 3755 NONAME
- _ZNK7QString10startsWithERK10QStringRefN2Qt15CaseSensitivityE @ 3756 NONAME
- _ZNK7QString11lastIndexOfERK10QStringRefiN2Qt15CaseSensitivityE @ 3757 NONAME
- _ZNK7QString5countERK10QStringRefN2Qt15CaseSensitivityE @ 3758 NONAME
- _ZNK7QString7indexOfERK10QStringRefiN2Qt15CaseSensitivityE @ 3759 NONAME
- _ZNK7QString8endsWithERK10QStringRefN2Qt15CaseSensitivityE @ 3760 NONAME
+ _ZN24QAbstractDeclarativeData17objectNameChangedE @ 3714 NONAME DATA 4
+ _ZN23QEventDispatcherSymbian36queueDeferredActiveObjectsCompletionEv @ 3715 NONAME
diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def
index c0b43acfcc..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
- _ZN17QDeclarativeTimer10classBeginEv @ 1749 NONAME
- _ZN17QDeclarativeTimer10setRunningEb @ 1750 NONAME
- _ZN17QDeclarativeTimer11qt_metacallEN11QMetaObject4CallEiPPv @ 1751 NONAME
- _ZN17QDeclarativeTimer11qt_metacastEPKc @ 1752 NONAME
- _ZN17QDeclarativeTimer11setIntervalEi @ 1753 NONAME
- _ZN17QDeclarativeTimer12setRepeatingEb @ 1754 NONAME
- _ZN17QDeclarativeTimer13repeatChangedEv @ 1755 NONAME
- _ZN17QDeclarativeTimer14runningChangedEv @ 1756 NONAME
- _ZN17QDeclarativeTimer15intervalChangedEv @ 1757 NONAME
- _ZN17QDeclarativeTimer16staticMetaObjectE @ 1758 NONAME DATA 16
- _ZN17QDeclarativeTimer17componentCompleteEv @ 1759 NONAME
- _ZN17QDeclarativeTimer19getStaticMetaObjectEv @ 1760 NONAME
- _ZN17QDeclarativeTimer19setTriggeredOnStartEb @ 1761 NONAME
- _ZN17QDeclarativeTimer23triggeredOnStartChangedEv @ 1762 NONAME
- _ZN17QDeclarativeTimer4stopEv @ 1763 NONAME
- _ZN17QDeclarativeTimer5startEv @ 1764 NONAME
- _ZN17QDeclarativeTimer6tickedEv @ 1765 NONAME
- _ZN17QDeclarativeTimer6updateEv @ 1766 NONAME
- _ZN17QDeclarativeTimer7restartEv @ 1767 NONAME
- _ZN17QDeclarativeTimer8finishedEv @ 1768 NONAME
- _ZN17QDeclarativeTimer9triggeredEv @ 1769 NONAME
- _ZN17QDeclarativeTimerC1EP7QObject @ 1770 NONAME
- _ZN17QDeclarativeTimerC2EP7QObject @ 1771 NONAME
- _ZN23QDeclarativeDebugClient13statusChangedENS_6StatusE @ 1772 NONAME
- _ZN23QDeclarativeDebugClientD0Ev @ 1773 NONAME
- _ZN23QDeclarativeDebugClientD1Ev @ 1774 NONAME
- _ZN23QDeclarativeDebugClientD2Ev @ 1775 NONAME
- _ZN23QDeclarativeDebugHelper15getScriptEngineEP18QDeclarativeEngine @ 1776 NONAME
- _ZN23QDeclarativeDebugHelper26setAnimationSlowDownFactorEf @ 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
- _ZN27QDeclarativePropertyPrivate7connectEPK7QObjectiS2_iiPi @ 1808 NONAME
- _ZN29QDeclarativeAbstractAnimation10classBeginEv @ 1809 NONAME
- _ZN29QDeclarativeAbstractAnimation10setRunningEb @ 1810 NONAME
- _ZN29QDeclarativeAbstractAnimation10transitionER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyENS_19TransitionDirectionE @ 1811 NONAME
- _ZN29QDeclarativeAbstractAnimation11currentTimeEv @ 1812 NONAME
- _ZN29QDeclarativeAbstractAnimation11qt_metacallEN11QMetaObject4CallEiPPv @ 1813 NONAME
- _ZN29QDeclarativeAbstractAnimation11qt_metacastEPKc @ 1814 NONAME
- _ZN29QDeclarativeAbstractAnimation13pausedChangedEb @ 1815 NONAME
- _ZN29QDeclarativeAbstractAnimation14runningChangedEb @ 1816 NONAME
- _ZN29QDeclarativeAbstractAnimation14setCurrentTimeEi @ 1817 NONAME
- _ZN29QDeclarativeAbstractAnimation16loopCountChangedEi @ 1818 NONAME
- _ZN29QDeclarativeAbstractAnimation16setDefaultTargetERK20QDeclarativeProperty @ 1819 NONAME
- _ZN29QDeclarativeAbstractAnimation16staticMetaObjectE @ 1820 NONAME DATA 16
- _ZN29QDeclarativeAbstractAnimation16timelineCompleteEv @ 1821 NONAME
- _ZN29QDeclarativeAbstractAnimation17componentCompleteEv @ 1822 NONAME
- _ZN29QDeclarativeAbstractAnimation17setAlwaysRunToEndEb @ 1823 NONAME
- _ZN29QDeclarativeAbstractAnimation18componentFinalizedEv @ 1824 NONAME
- _ZN29QDeclarativeAbstractAnimation19getStaticMetaObjectEv @ 1825 NONAME
- _ZN29QDeclarativeAbstractAnimation20notifyRunningChangedEb @ 1826 NONAME
- _ZN29QDeclarativeAbstractAnimation21alwaysRunToEndChangedEb @ 1827 NONAME
- _ZN29QDeclarativeAbstractAnimation21setDisableUserControlEv @ 1828 NONAME
- _ZN29QDeclarativeAbstractAnimation4stopEv @ 1829 NONAME
- _ZN29QDeclarativeAbstractAnimation5pauseEv @ 1830 NONAME
- _ZN29QDeclarativeAbstractAnimation5startEv @ 1831 NONAME
- _ZN29QDeclarativeAbstractAnimation6resumeEv @ 1832 NONAME
- _ZN29QDeclarativeAbstractAnimation7restartEv @ 1833 NONAME
- _ZN29QDeclarativeAbstractAnimation7startedEv @ 1834 NONAME
- _ZN29QDeclarativeAbstractAnimation8completeEv @ 1835 NONAME
- _ZN29QDeclarativeAbstractAnimation8setGroupEP26QDeclarativeAnimationGroup @ 1836 NONAME
- _ZN29QDeclarativeAbstractAnimation8setLoopsEi @ 1837 NONAME
- _ZN29QDeclarativeAbstractAnimation9completedEv @ 1838 NONAME
- _ZN29QDeclarativeAbstractAnimation9setPausedEb @ 1839 NONAME
- _ZN29QDeclarativeAbstractAnimation9setTargetERK20QDeclarativeProperty @ 1840 NONAME
- _ZN29QDeclarativeAbstractAnimationC2EP7QObject @ 1841 NONAME
- _ZN29QDeclarativeAbstractAnimationC2ER36QDeclarativeAbstractAnimationPrivateP7QObject @ 1842 NONAME
- _ZN29QDeclarativeAbstractAnimationD0Ev @ 1843 NONAME
- _ZN29QDeclarativeAbstractAnimationD1Ev @ 1844 NONAME
- _ZN29QDeclarativeAbstractAnimationD2Ev @ 1845 NONAME
- _ZNK16QDeclarativeType20attachedPropertiesIdEv @ 1846 NONAME
- _ZNK17QDeclarativeTimer10metaObjectEv @ 1847 NONAME
- _ZNK17QDeclarativeTimer11isRepeatingEv @ 1848 NONAME
- _ZNK17QDeclarativeTimer16triggeredOnStartEv @ 1849 NONAME
- _ZNK17QDeclarativeTimer8intervalEv @ 1850 NONAME
- _ZNK17QDeclarativeTimer9isRunningEv @ 1851 NONAME
- _ZNK23QDeclarativeDebugClient6statusEv @ 1852 NONAME
- _ZNK23QDeclarativeEngineDebug6statusEv @ 1853 NONAME
- _ZNK24QDeclarativeDebugService6statusEv @ 1854 NONAME
- _ZNK26QDeclarativeBasePositioner10metaObjectEv @ 1855 NONAME
- _ZNK26QDeclarativeBasePositioner3addEv @ 1856 NONAME
- _ZNK26QDeclarativeBasePositioner4moveEv @ 1857 NONAME
- _ZNK26QDeclarativeBasePositioner7spacingEv @ 1858 NONAME
- _ZNK29QDeclarativeAbstractAnimation10metaObjectEv @ 1859 NONAME
- _ZNK29QDeclarativeAbstractAnimation14alwaysRunToEndEv @ 1860 NONAME
- _ZNK29QDeclarativeAbstractAnimation5groupEv @ 1861 NONAME
- _ZNK29QDeclarativeAbstractAnimation5loopsEv @ 1862 NONAME
- _ZNK29QDeclarativeAbstractAnimation8isPausedEv @ 1863 NONAME
- _ZNK29QDeclarativeAbstractAnimation9isRunningEv @ 1864 NONAME
- _ZTI17QDeclarativeTimer @ 1865 NONAME
- _ZTI26QDeclarativeBasePositioner @ 1866 NONAME
- _ZTI29QDeclarativeAbstractAnimation @ 1867 NONAME
- _ZTV17QDeclarativeTimer @ 1868 NONAME
- _ZTV26QDeclarativeBasePositioner @ 1869 NONAME
- _ZTV29QDeclarativeAbstractAnimation @ 1870 NONAME
- _ZThn12_N29QDeclarativeAbstractAnimation10classBeginEv @ 1871 NONAME
- _ZThn12_N29QDeclarativeAbstractAnimation17componentCompleteEv @ 1872 NONAME
- _ZThn12_N29QDeclarativeAbstractAnimationD0Ev @ 1873 NONAME
- _ZThn12_N29QDeclarativeAbstractAnimationD1Ev @ 1874 NONAME
- _ZThn16_N26QDeclarativeBasePositioner17componentCompleteEv @ 1875 NONAME
- _ZThn16_N26QDeclarativeBasePositionerD0Ev @ 1876 NONAME
- _ZThn16_N26QDeclarativeBasePositionerD1Ev @ 1877 NONAME
- _ZThn8_N17QDeclarativeTimer10classBeginEv @ 1878 NONAME
- _ZThn8_N17QDeclarativeTimer17componentCompleteEv @ 1879 NONAME
- _ZThn8_N26QDeclarativeBasePositioner10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 1880 NONAME
- _ZThn8_N26QDeclarativeBasePositionerD0Ev @ 1881 NONAME
- _ZThn8_N26QDeclarativeBasePositionerD1Ev @ 1882 NONAME
- _ZThn8_N29QDeclarativeAbstractAnimation9setTargetERK20QDeclarativeProperty @ 1883 NONAME
- _ZThn8_N29QDeclarativeAbstractAnimationD0Ev @ 1884 NONAME
- _ZThn8_N29QDeclarativeAbstractAnimationD1Ev @ 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 681649cba5..e2aec1daa8 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -12094,64 +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
- _ZN11QFontEngine19alphaRGBMapForGlyphEj6QFixediRK10QTransform @ 12100 NONAME
- _ZN11QFontEngine33convertToPostscriptFontFamilyNameERK10QByteArray @ 12101 NONAME
- _ZN18QTextureGlyphCache19fillInPendingGlyphsEv @ 12102 NONAME
- _ZN19QAbstractProxyModel11setItemDataERK11QModelIndexRK4QMapIi8QVariantE @ 12103 NONAME
- _ZN19QAbstractProxyModel4sortEiN2Qt9SortOrderE @ 12104 NONAME
- _ZN19QAbstractProxyModel9fetchMoreERK11QModelIndex @ 12105 NONAME
- _ZN19QApplicationPrivateC1ERiPPcN12QApplication4TypeEi @ 12106 NONAME
- _ZN19QApplicationPrivateC2ERiPPcN12QApplication4TypeEi @ 12107 NONAME
- _ZN19QGraphicsGridLayout10removeItemEP19QGraphicsLayoutItem @ 12108 NONAME
- _ZN23QImageTextureGlyphCache11fillTextureERKN18QTextureGlyphCache5CoordEj6QFixed @ 12109 NONAME
- _ZN6QImage4fillEN2Qt11GlobalColorE @ 12110 NONAME
- _ZN6QImage4fillERK6QColor @ 12111 NONAME
- _ZN7QGlyphs12setPositionsERK7QVectorI7QPointFE @ 12112 NONAME
- _ZN7QGlyphs15setGlyphIndexesERK7QVectorIjE @ 12113 NONAME
- _ZN7QGlyphs5clearEv @ 12114 NONAME
- _ZN7QGlyphs6detachEv @ 12115 NONAME
- _ZN7QGlyphs7setFontERK5QFont @ 12116 NONAME
- _ZN7QGlyphsC1ERKS_ @ 12117 NONAME
- _ZN7QGlyphsC1Ev @ 12118 NONAME
- _ZN7QGlyphsC2ERKS_ @ 12119 NONAME
- _ZN7QGlyphsC2Ev @ 12120 NONAME
- _ZN7QGlyphsD1Ev @ 12121 NONAME
- _ZN7QGlyphsD2Ev @ 12122 NONAME
- _ZN7QGlyphsaSERKS_ @ 12123 NONAME
- _ZN7QGlyphspLERKS_ @ 12124 NONAME
- _ZN8QPainter10drawGlyphsERK7QPointFRK7QGlyphs @ 12125 NONAME
- _ZNK10QTabWidget14heightForWidthEi @ 12126 NONAME
- _ZNK11QFontEngine18createExplicitFontEv @ 12127 NONAME
- _ZNK11QFontEngine26createExplicitFontWithNameERK7QString @ 12128 NONAME
- _ZNK11QTextLayout6glyphsEv @ 12129 NONAME
- _ZNK12QFontMetrics10inFontUcs4Ej @ 12130 NONAME
- _ZNK12QRadioButton15minimumSizeHintEv @ 12131 NONAME
- _ZNK13QFontMetricsF10inFontUcs4Ej @ 12132 NONAME
- _ZNK13QTextFragment6glyphsEv @ 12133 NONAME
- _ZNK14QWidgetPrivate17hasHeightForWidthEv @ 12134 NONAME
- _ZNK16QFileSystemModel5rmdirERK11QModelIndex @ 12135 NONAME
- _ZNK18QTextureGlyphCache18textureMapForGlyphEj6QFixed @ 12136 NONAME
- _ZNK18QTextureGlyphCache20subPixelPositionForXE6QFixed @ 12137 NONAME
- _ZNK18QTextureGlyphCache30calculateSubPixelPositionCountEj @ 12138 NONAME
- _ZNK19QAbstractProxyModel11hasChildrenERK11QModelIndex @ 12139 NONAME
- _ZNK19QAbstractProxyModel12canFetchMoreERK11QModelIndex @ 12140 NONAME
- _ZNK19QAbstractProxyModel20supportedDropActionsEv @ 12141 NONAME
- _ZNK19QAbstractProxyModel4spanERK11QModelIndex @ 12142 NONAME
- _ZNK19QAbstractProxyModel5buddyERK11QModelIndex @ 12143 NONAME
- _ZNK19QAbstractProxyModel8mimeDataERK5QListI11QModelIndexE @ 12144 NONAME
- _ZNK19QAbstractProxyModel9mimeTypesEv @ 12145 NONAME
- _ZNK7QGlyphs12glyphIndexesEv @ 12146 NONAME
- _ZNK7QGlyphs4fontEv @ 12147 NONAME
- _ZNK7QGlyphs9positionsEv @ 12148 NONAME
- _ZNK7QGlyphseqERKS_ @ 12149 NONAME
- _ZNK7QGlyphsneERKS_ @ 12150 NONAME
- _ZNK7QGlyphsplERKS_ @ 12151 NONAME
- _ZNK8QPainter16clipBoundingRectEv @ 12152 NONAME
- _ZNK9QCheckBox15minimumSizeHintEv @ 12153 NONAME
- _ZNK9QTextLine6glyphsEii @ 12154 NONAME
- _Zls6QDebugPK13QSymbianEvent @ 12155 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/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 b6cdce915a..2b3be0af0c 100644
--- a/src/s60installs/qt.iby
+++ b/src/s60installs/qt.iby
@@ -53,10 +53,15 @@ file=ABI_DIR\BUILD_DIR\qaudio.dll SHARED_LIB_DIR\qaudio.dll
file=ABI_DIR\BUILD_DIR\qvggraphicssystem.dll SHARED_LIB_DIR\qvggraphicssystem.dll
file=ABI_DIR\BUILD_DIR\qglgraphicssystem.dll SHARED_LIB_DIR\qglgraphicssystem.dll
+// bearer
+file=ABI_DIR\BUILD_DIR\qsymbianbearer.dll SHARED_LIB_DIR\qsymbianbearer.dll
+
// S60 version compatibility plugins for 5.0 (3.1 and 3.2 devices are never likely to have this in ROM,
// 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
@@ -99,6 +104,12 @@ data=\epoc32\data\qt\qtlibspluginstubs\qaudio.qtplugin resource\qt\plugins\audio
data=\epoc32\data\z\resource\qt\plugins\graphicssystems\qvggraphicssystem.qtplugin resource\qt\plugins\graphicssystems\qvggraphicssystem.qtplugin
data=\epoc32\data\z\resource\qt\plugins\graphicssystems\qglgraphicssystem.qtplugin resource\qt\plugins\graphicssystems\qglgraphicssystem.qtplugin
+// 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/qtdemoapps.iby b/src/s60installs/qtdemoapps.iby
deleted file mode 100644
index d888135d8c..0000000000
--- a/src/s60installs/qtdemoapps.iby
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef QTDEMOAPPS_IBY
-#define QTDEMOAPPS_IBY
-
-// A subset of Qt demo & example applications
-
-// Note that star requires OpenVG and the Qt OpenVG paint engine
-S60_APP_EXE(star)
-S60_APP_RESOURCE(star)
-data=\epoc32\data\Z\private\10003a3f\import\Apps\star_reg.rsc \private\10003a3f\import\apps\star_reg.rsc
-
-S60_APP_EXE(wiggly)
-S60_APP_RESOURCE(wiggly)
-data=\epoc32\data\Z\private\10003a3f\import\Apps\wiggly_reg.rsc \private\10003a3f\import\apps\wiggly_reg.rsc
-
-#endif // QTDEMOAPPS_IBY
diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro
index c73ed06f17..2b3229ecd9 100644
--- a/src/s60installs/s60installs.pro
+++ b/src/s60installs/s60installs.pro
@@ -35,7 +35,9 @@ symbian: {
}
VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
- qtlibraries.sources = \
+ DESTDIR = $$QMAKE_LIBDIR_QT
+
+ qtlibraries.files = \
$$QMAKE_LIBDIR_QT/QtCore$${QT_LIBINFIX}.dll \
$$QMAKE_LIBDIR_QT/QtXml$${QT_LIBINFIX}.dll \
$$QMAKE_LIBDIR_QT/QtGui$${QT_LIBINFIX}.dll \
@@ -80,11 +82,17 @@ symbian: {
qts60plugindeployment = \
" \"$$pluginLocations/qts60plugin_5_0$${QT_LIBINFIX}.dll\" - \"c:\\sys\\bin\\qts60plugin_5_0$${QT_LIBINFIX}.dll\""
- bearer_plugin.sources = $$QT_BUILD_TREE/plugins/bearer/qsymbianbearer$${QT_LIBINFIX}.dll
+ bearer_plugin.files = $$QT_BUILD_TREE/plugins/bearer/qsymbianbearer$${QT_LIBINFIX}.dll
bearer_plugin.path = c:$$QT_PLUGINS_BASE_DIR/bearer
DEPLOYMENT += bearer_plugin
}
+ contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) {
+ 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
@@ -113,25 +121,25 @@ symbian: {
}
qtlibraries.pkg_prerules += "(0x2002af5f), 0, 5, 0, {\"sqlite3\"}"
- !contains(QT_CONFIG, no-jpeg): imageformats_plugins.sources += $$QT_BUILD_TREE/plugins/imageformats/qjpeg$${QT_LIBINFIX}.dll
- !contains(QT_CONFIG, no-gif): imageformats_plugins.sources += $$QT_BUILD_TREE/plugins/imageformats/qgif$${QT_LIBINFIX}.dll
- !contains(QT_CONFIG, no-mng): imageformats_plugins.sources += $$QT_BUILD_TREE/plugins/imageformats/qmng$${QT_LIBINFIX}.dll
- !contains(QT_CONFIG, no-tiff): imageformats_plugins.sources += $$QT_BUILD_TREE/plugins/imageformats/qtiff$${QT_LIBINFIX}.dll
- !contains(QT_CONFIG, no-ico): imageformats_plugins.sources += $$QT_BUILD_TREE/plugins/imageformats/qico$${QT_LIBINFIX}.dll
+ !contains(QT_CONFIG, no-jpeg): imageformats_plugins.files += $$QT_BUILD_TREE/plugins/imageformats/qjpeg$${QT_LIBINFIX}.dll
+ !contains(QT_CONFIG, no-gif): imageformats_plugins.files += $$QT_BUILD_TREE/plugins/imageformats/qgif$${QT_LIBINFIX}.dll
+ !contains(QT_CONFIG, no-mng): imageformats_plugins.files += $$QT_BUILD_TREE/plugins/imageformats/qmng$${QT_LIBINFIX}.dll
+ !contains(QT_CONFIG, no-tiff): imageformats_plugins.files += $$QT_BUILD_TREE/plugins/imageformats/qtiff$${QT_LIBINFIX}.dll
+ !contains(QT_CONFIG, no-ico): imageformats_plugins.files += $$QT_BUILD_TREE/plugins/imageformats/qico$${QT_LIBINFIX}.dll
imageformats_plugins.path = c:$$QT_PLUGINS_BASE_DIR/imageformats
- codecs_plugins.sources = $$QT_BUILD_TREE/plugins/codecs/qcncodecs$${QT_LIBINFIX}.dll $$QT_BUILD_TREE/plugins/codecs/qjpcodecs$${QT_LIBINFIX}.dll $$QT_BUILD_TREE/plugins/codecs/qtwcodecs$${QT_LIBINFIX}.dll $$QT_BUILD_TREE/plugins/codecs/qkrcodecs$${QT_LIBINFIX}.dll
+ codecs_plugins.files = $$QT_BUILD_TREE/plugins/codecs/qcncodecs$${QT_LIBINFIX}.dll $$QT_BUILD_TREE/plugins/codecs/qjpcodecs$${QT_LIBINFIX}.dll $$QT_BUILD_TREE/plugins/codecs/qtwcodecs$${QT_LIBINFIX}.dll $$QT_BUILD_TREE/plugins/codecs/qkrcodecs$${QT_LIBINFIX}.dll
codecs_plugins.path = c:$$QT_PLUGINS_BASE_DIR/codecs
contains(QT_CONFIG, phonon-backend) {
- phonon_backend_plugins.sources += $$QMAKE_LIBDIR_QT/phonon_mmf$${QT_LIBINFIX}.dll
+ phonon_backend_plugins.files += $$QMAKE_LIBDIR_QT/phonon_mmf$${QT_LIBINFIX}.dll
phonon_backend_plugins.path = c:$$QT_PLUGINS_BASE_DIR/phonon_backend
DEPLOYMENT += phonon_backend_plugins
}
# Support backup & restore for Qt libraries
- qtbackup.sources = backup_registration.xml
+ qtbackup.files = backup_registration.xml
qtbackup.path = c:/private/10202D56/import/packages/$$replace(TARGET.UID3, 0x,)
DEPLOYMENT += qtlibraries \
@@ -141,35 +149,35 @@ symbian: {
graphicssystems_plugins
contains(QT_CONFIG, svg): {
- qtlibraries.sources += $$QMAKE_LIBDIR_QT/QtSvg$${QT_LIBINFIX}.dll
- imageformats_plugins.sources += $$QT_BUILD_TREE/plugins/imageformats/qsvg$${QT_LIBINFIX}.dll
- iconengines_plugins.sources = $$QT_BUILD_TREE/plugins/iconengines/qsvgicon$${QT_LIBINFIX}.dll
+ qtlibraries.files += $$QMAKE_LIBDIR_QT/QtSvg$${QT_LIBINFIX}.dll
+ imageformats_plugins.files += $$QT_BUILD_TREE/plugins/imageformats/qsvg$${QT_LIBINFIX}.dll
+ iconengines_plugins.files = $$QT_BUILD_TREE/plugins/iconengines/qsvgicon$${QT_LIBINFIX}.dll
iconengines_plugins.path = c:$$QT_PLUGINS_BASE_DIR/iconengines
DEPLOYMENT += iconengines_plugins
}
contains(QT_CONFIG, phonon): {
- qtlibraries.sources += $$QMAKE_LIBDIR_QT/phonon$${QT_LIBINFIX}.dll
+ qtlibraries.files += $$QMAKE_LIBDIR_QT/phonon$${QT_LIBINFIX}.dll
}
contains(QT_CONFIG, script): {
- qtlibraries.sources += $$QMAKE_LIBDIR_QT/QtScript$${QT_LIBINFIX}.dll
+ qtlibraries.files += $$QMAKE_LIBDIR_QT/QtScript$${QT_LIBINFIX}.dll
}
contains(QT_CONFIG, xmlpatterns): {
- qtlibraries.sources += $$QMAKE_LIBDIR_QT/QtXmlPatterns$${QT_LIBINFIX}.dll
+ qtlibraries.files += $$QMAKE_LIBDIR_QT/QtXmlPatterns$${QT_LIBINFIX}.dll
}
contains(QT_CONFIG, declarative): {
- qtlibraries.sources += $$QMAKE_LIBDIR_QT/QtDeclarative$${QT_LIBINFIX}.dll
+ qtlibraries.files += $$QMAKE_LIBDIR_QT/QtDeclarative$${QT_LIBINFIX}.dll
- folderlistmodelImport.sources = $$QT_BUILD_TREE/imports/Qt/labs/folderlistmodel/qmlfolderlistmodelplugin$${QT_LIBINFIX}.dll
- gesturesImport.sources = $$QT_BUILD_TREE/imports/Qt/labs/gestures/qmlgesturesplugin$${QT_LIBINFIX}.dll
- particlesImport.sources = $$QT_BUILD_TREE/imports/Qt/labs/particles/qmlparticlesplugin$${QT_LIBINFIX}.dll
+ folderlistmodelImport.files = $$QT_BUILD_TREE/imports/Qt/labs/folderlistmodel/qmlfolderlistmodelplugin$${QT_LIBINFIX}.dll
+ gesturesImport.files = $$QT_BUILD_TREE/imports/Qt/labs/gestures/qmlgesturesplugin$${QT_LIBINFIX}.dll
+ particlesImport.files = $$QT_BUILD_TREE/imports/Qt/labs/particles/qmlparticlesplugin$${QT_LIBINFIX}.dll
- folderlistmodelImport.sources += $$QT_SOURCE_TREE/src/imports/folderlistmodel/qmldir
- gesturesImport.sources += $$QT_SOURCE_TREE/src/imports/gestures/qmldir
- particlesImport.sources += $$QT_SOURCE_TREE/src/imports/particles/qmldir
+ folderlistmodelImport.files += $$QT_SOURCE_TREE/src/imports/folderlistmodel/qmldir
+ gesturesImport.files += $$QT_SOURCE_TREE/src/imports/gestures/qmldir
+ particlesImport.files += $$QT_SOURCE_TREE/src/imports/particles/qmldir
folderlistmodelImport.path = c:$$QT_IMPORTS_BASE_DIR/Qt/labs/folderlistmodel
gesturesImport.path = c:$$QT_IMPORTS_BASE_DIR/Qt/labs/gestures
@@ -180,8 +188,8 @@ symbian: {
graphicssystems_plugins.path = c:$$QT_PLUGINS_BASE_DIR/graphicssystems
contains(QT_CONFIG, openvg) {
- qtlibraries.sources += $$QMAKE_LIBDIR_QT/QtOpenVG$${QT_LIBINFIX}.dll
- graphicssystems_plugins.sources += $$QT_BUILD_TREE/plugins/graphicssystems/qvggraphicssystem$${QT_LIBINFIX}.dll
+ qtlibraries.files += $$QMAKE_LIBDIR_QT/QtOpenVG$${QT_LIBINFIX}.dll
+ graphicssystems_plugins.files += $$QT_BUILD_TREE/plugins/graphicssystems/qvggraphicssystem$${QT_LIBINFIX}.dll
# OpenVG requires Symbian^3 or later
pkg_platform_dependencies -= \
"[0x101F7961],0,0,0,{\"S60ProductID\"}" \
@@ -191,14 +199,13 @@ symbian: {
}
contains(QT_CONFIG, opengl) {
- qtlibraries.sources += $$QMAKE_LIBDIR_QT/QtOpenGL$${QT_LIBINFIX}.dll
- graphicssystems_plugins.sources += $$QT_BUILD_TREE/plugins/graphicssystems/qglgraphicssystem$${QT_LIBINFIX}.dll
+ qtlibraries.files += $$QMAKE_LIBDIR_QT/QtOpenGL$${QT_LIBINFIX}.dll
+ graphicssystems_plugins.files += $$QT_BUILD_TREE/plugins/graphicssystems/qglgraphicssystem$${QT_LIBINFIX}.dll
}
contains(QT_CONFIG, multimedia){
- qtlibraries.sources += $$QMAKE_LIBDIR_QT/QtMultimedia$${QT_LIBINFIX}.dll
+ qtlibraries.files += $$QMAKE_LIBDIR_QT/QtMultimedia$${QT_LIBINFIX}.dll
}
BLD_INF_RULES.prj_exports += "qt.iby $$CORE_MW_LAYER_IBY_EXPORT_PATH(qt.iby)"
- BLD_INF_RULES.prj_exports += "qtdemoapps.iby $$CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(qtdemoapps.iby)"
}
diff --git a/src/s60main/s60main.pro b/src/s60main/s60main.pro
index 664f155f7d..4c598e2857 100644
--- a/src/s60main/s60main.pro
+++ b/src/s60main/s60main.pro
@@ -30,7 +30,7 @@ symbian {
# Having MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA will cause s60main.lib be unlinkable
# against GCCE apps, so remove it
MMP_RULES -= $$MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA
- linux-armcc:QMAKE_CXXFLAGS *= --export_all_vtbl
+ symbian-armcc:QMAKE_CXXFLAGS *= --export_all_vtbl
} else {
error("$$_FILE_ is intended only for Symbian!")
}
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 2d5e5f4aa6..69abcadb2a 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -808,7 +808,7 @@ JSC::JSValue JSC_HOST_CALL functionQsTranslate(JSC::ExecState *exec, JSC::JSObje
JSC::UString comment;
if (args.size() > 2)
comment = args.at(2).toString(exec);
- QCoreApplication::Encoding encoding = QCoreApplication::CodecForTr;
+ QCoreApplication::Encoding encoding = QCoreApplication::UnicodeUTF8;
if (args.size() > 3) {
JSC::UString encStr = args.at(3).toString(exec);
if (encStr == "CodecForTr")
@@ -824,9 +824,9 @@ JSC::JSValue JSC_HOST_CALL functionQsTranslate(JSC::ExecState *exec, JSC::JSObje
#endif
JSC::UString result;
#ifndef QT_NO_QOBJECT
- result = QCoreApplication::translate(QScript::convertToLatin1(context).constData(),
- QScript::convertToLatin1(text).constData(),
- QScript::convertToLatin1(comment).constData(),
+ result = QCoreApplication::translate(context.UTF8String().c_str(),
+ text.UTF8String().c_str(),
+ comment.UTF8String().c_str(),
encoding, n);
#else
result = text;
@@ -878,10 +878,10 @@ JSC::JSValue JSC_HOST_CALL functionQsTr(JSC::ExecState *exec, JSC::JSObject*, JS
#endif
JSC::UString result;
#ifndef QT_NO_QOBJECT
- result = QCoreApplication::translate(QScript::convertToLatin1(context).constData(),
- QScript::convertToLatin1(text).constData(),
- QScript::convertToLatin1(comment).constData(),
- QCoreApplication::CodecForTr, n);
+ result = QCoreApplication::translate(context.UTF8String().c_str(),
+ text.UTF8String().c_str(),
+ comment.UTF8String().c_str(),
+ QCoreApplication::UnicodeUTF8, n);
#else
result = text;
#endif
@@ -907,7 +907,7 @@ JSC::JSValue JSC_HOST_CALL functionQsTrId(JSC::ExecState *exec, JSC::JSObject*,
int n = -1;
if (args.size() > 1)
n = args.at(1).toInt32(exec);
- return JSC::jsString(exec, qtTrId(QScript::convertToLatin1(id).constData(), n));
+ return JSC::jsString(exec, qtTrId(id.UTF8String().c_str(), n));
}
JSC::JSValue JSC_HOST_CALL functionQsTrIdNoOp(JSC::ExecState *, JSC::JSObject*, JSC::JSValue, const JSC::ArgList &args)
diff --git a/src/script/api/qscriptengine.h b/src/script/api/qscriptengine.h
index 830d477b77..24c8c13270 100644
--- a/src/script/api/qscriptengine.h
+++ b/src/script/api/qscriptengine.h
@@ -332,10 +332,7 @@ inline QScriptValue qScriptValueFromValue(QScriptEngine *engine, const T &t)
template <>
inline QScriptValue qScriptValueFromValue<QVariant>(QScriptEngine *engine, const QVariant &v)
{
- QScriptValue result = qScriptValueFromValue_helper(engine, v.userType(), v.data());
- if (!result.isValid())
- result = engine->newVariant(v);
- return result;
+ return qScriptValueFromValue_helper(engine, v.userType(), v.data());
}
inline bool qscriptvalue_cast_helper(const QScriptValue &value, int type, void *ptr)
diff --git a/src/script/api/qscriptvalue.cpp b/src/script/api/qscriptvalue.cpp
index fbd5d96925..8cd40579c8 100644
--- a/src/script/api/qscriptvalue.cpp
+++ b/src/script/api/qscriptvalue.cpp
@@ -1726,10 +1726,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);
@@ -1786,11 +1788,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);
@@ -2023,6 +2026,7 @@ void QScriptValue::setData(const QScriptValue &data)
Q_D(QScriptValue);
if (!d || !d->isObject())
return;
+ QScript::APIShim shim(d->engine);
JSC::JSValue other = d->engine->scriptValueToJSCValue(data);
if (d->jscValue.inherits(&QScriptObject::info)) {
QScriptObject *scriptObject = static_cast<QScriptObject*>(JSC::asObject(d->jscValue));
diff --git a/src/script/bridge/qscriptclassobject.cpp b/src/script/bridge/qscriptclassobject.cpp
index 28f7bd12e9..51c09761c8 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/script/script.pro b/src/script/script.pro
index 4ee86d7bb1..56d3f7a8cc 100644
--- a/src/script/script.pro
+++ b/src/script/script.pro
@@ -39,10 +39,18 @@ wince* {
LIBS += -lmmtimer
}
-mac {
+!qpa:mac {
DEFINES += ENABLE_JSC_MULTIPLE_THREADS=0
LIBS_PRIVATE += -framework AppKit
}
+qpa:mac {
+ DEFINES += ENABLE_JSC_MULTIPLE_THREADS=0
+ contains(QT_CONFIG, coreservices) {
+ LIBS_PRIVATE += -framework CoreServices
+ } else {
+ LIBS_PRIVATE += -framework CoreFoundation
+ }
+}
include($$WEBKITDIR/JavaScriptCore/JavaScriptCore.pri)
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/scripttools/debugging/qscriptdebuggerconsolewidget.cpp b/src/scripttools/debugging/qscriptdebuggerconsolewidget.cpp
index 5db012a6d2..d0559c5ee5 100644
--- a/src/scripttools/debugging/qscriptdebuggerconsolewidget.cpp
+++ b/src/scripttools/debugging/qscriptdebuggerconsolewidget.cpp
@@ -163,10 +163,10 @@ private:
InputEdit *inputEdit;
};
-class OutputEdit : public QPlainTextEdit
+class QScriptDebuggerConsoleWidgetOutputEdit : public QPlainTextEdit
{
public:
- OutputEdit(QWidget *parent = 0)
+ QScriptDebuggerConsoleWidgetOutputEdit(QWidget *parent = 0)
: QPlainTextEdit(parent)
{
setFrameShape(QFrame::NoFrame);
@@ -206,7 +206,7 @@ public:
void _q_onCompletionTaskFinished();
CommandLine *commandLine;
- OutputEdit *outputEdit;
+ QScriptDebuggerConsoleWidgetOutputEdit *outputEdit;
int historyIndex;
QString newInput;
};
@@ -320,7 +320,7 @@ QScriptDebuggerConsoleWidget::QScriptDebuggerConsoleWidget(QWidget *parent)
Q_D(QScriptDebuggerConsoleWidget);
d->commandLine = new CommandLine();
d->commandLine->setPrompt(QString::fromLatin1("qsdb>"));
- d->outputEdit = new OutputEdit();
+ d->outputEdit = new QScriptDebuggerConsoleWidgetOutputEdit();
QVBoxLayout *vbox = new QVBoxLayout(this);
vbox->setSpacing(0);
vbox->setMargin(0);
diff --git a/src/scripttools/debugging/qscriptdebugoutputwidget.cpp b/src/scripttools/debugging/qscriptdebugoutputwidget.cpp
index 3bca96c5bc..594a9dcd89 100644
--- a/src/scripttools/debugging/qscriptdebugoutputwidget.cpp
+++ b/src/scripttools/debugging/qscriptdebugoutputwidget.cpp
@@ -51,10 +51,10 @@ QT_BEGIN_NAMESPACE
namespace {
-class OutputEdit : public QPlainTextEdit
+class QScriptDebugOutputWidgetOutputEdit : public QPlainTextEdit
{
public:
- OutputEdit(QWidget *parent = 0)
+ QScriptDebugOutputWidgetOutputEdit(QWidget *parent = 0)
: QPlainTextEdit(parent)
{
setReadOnly(true);
@@ -85,7 +85,7 @@ public:
QScriptDebugOutputWidgetPrivate();
~QScriptDebugOutputWidgetPrivate();
- OutputEdit *outputEdit;
+ QScriptDebugOutputWidgetOutputEdit *outputEdit;
};
QScriptDebugOutputWidgetPrivate::QScriptDebugOutputWidgetPrivate()
@@ -100,7 +100,7 @@ QScriptDebugOutputWidget::QScriptDebugOutputWidget(QWidget *parent)
: QScriptDebugOutputWidgetInterface(*new QScriptDebugOutputWidgetPrivate, parent, 0)
{
Q_D(QScriptDebugOutputWidget);
- d->outputEdit = new OutputEdit();
+ d->outputEdit = new QScriptDebugOutputWidgetOutputEdit();
QVBoxLayout *vbox = new QVBoxLayout(this);
vbox->setMargin(0);
vbox->setSpacing(0);
diff --git a/src/scripttools/debugging/qscripterrorlogwidget.cpp b/src/scripttools/debugging/qscripterrorlogwidget.cpp
index 735c546a1a..fd9a939f63 100644
--- a/src/scripttools/debugging/qscripterrorlogwidget.cpp
+++ b/src/scripttools/debugging/qscripterrorlogwidget.cpp
@@ -52,10 +52,10 @@ QT_BEGIN_NAMESPACE
namespace {
-class OutputEdit : public QTextEdit
+class QScriptErrorLogWidgetOutputEdit : public QTextEdit
{
public:
- OutputEdit(QWidget *parent = 0)
+ QScriptErrorLogWidgetOutputEdit(QWidget *parent = 0)
: QTextEdit(parent)
{
setReadOnly(true);
@@ -80,7 +80,7 @@ public:
QScriptErrorLogWidgetPrivate();
~QScriptErrorLogWidgetPrivate();
- OutputEdit *outputEdit;
+ QScriptErrorLogWidgetOutputEdit *outputEdit;
};
QScriptErrorLogWidgetPrivate::QScriptErrorLogWidgetPrivate()
@@ -95,7 +95,7 @@ QScriptErrorLogWidget::QScriptErrorLogWidget(QWidget *parent)
: QScriptErrorLogWidgetInterface(*new QScriptErrorLogWidgetPrivate, parent, 0)
{
Q_D(QScriptErrorLogWidget);
- d->outputEdit = new OutputEdit();
+ d->outputEdit = new QScriptErrorLogWidgetOutputEdit();
QVBoxLayout *vbox = new QVBoxLayout(this);
vbox->setMargin(0);
vbox->setSpacing(0);
diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp
index 687005528d..a4614bf76d 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/qsql.qdoc b/src/sql/kernel/qsql.qdoc
index c842e11c67..65a8594967 100644
--- a/src/sql/kernel/qsql.qdoc
+++ b/src/sql/kernel/qsql.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/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/src.pro b/src/src.pro
index 060f48bbe6..c07d3998a5 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -5,6 +5,7 @@ unset(SRC_SUBDIRS)
win32:SRC_SUBDIRS += src_winmain
symbian:SRC_SUBDIRS += src_s60main
SRC_SUBDIRS += src_corelib src_xml src_network src_sql src_testlib
+nacl: SRC_SUBDIRS -= src_network src_testlib
!symbian:contains(QT_CONFIG, dbus):SRC_SUBDIRS += src_dbus
!contains(QT_CONFIG, no-gui): SRC_SUBDIRS += src_gui
!wince*:!symbian:!vxworks:contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_qt3support
diff --git a/src/testlib/qsignalspy.qdoc b/src/testlib/qsignalspy.qdoc
index 0e8a4c06dd..7018c09fa1 100644
--- a/src/testlib/qsignalspy.qdoc
+++ b/src/testlib/qsignalspy.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/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index aae2786770..126c6c16f1 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/qtestevent.qdoc b/src/testlib/qtestevent.qdoc
index a76c7827f0..7ca9eb7137 100644
--- a/src/testlib/qtestevent.qdoc
+++ b/src/testlib/qtestevent.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/src/testlib/testlib.pro b/src/testlib/testlib.pro
index a8186d820e..c25d23db12 100644
--- a/src/testlib/testlib.pro
+++ b/src/testlib/testlib.pro
@@ -70,8 +70,16 @@ wince*::LIBS += libcmt.lib \
coredll.lib \
winsock.lib
mac:LIBS += -framework IOKit \
- -framework ApplicationServices \
-framework Security
+!qpa:mac: LIBS += -framework ApplicationServices
+qpa:mac: {
+ contains(QT_CONFIG, coreservices) {
+ LIBS_PRIVATE += -framework CoreServices
+ } else {
+ LIBS_PRIVATE += -framework CoreFoundation
+ }
+}
+
include(../qbase.pri)
QMAKE_TARGET_PRODUCT = QTestLib
QMAKE_TARGET_DESCRIPTION = Qt \
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp
index a2bc89d7bc..e6fcd467f8 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.cpp
+++ b/src/tools/uic/cpp/cppwriteinitialization.cpp
@@ -1096,6 +1096,8 @@ void WriteInitialization::acceptLayoutItem(DomLayoutItem *node)
const int colSpan = node->hasAttributeColSpan() ? node->attributeColSpan() : 1;
addArgs = QString::fromLatin1("%1, %2, %3, %4, %5").arg(itemName).arg(row).arg(col).arg(rowSpan).arg(colSpan);
+ if (!node->attributeAlignment().isEmpty())
+ addArgs += QLatin1String(", ") + node->attributeAlignment();
} else {
if (layout->attributeClass() == QLatin1String("QFormLayout")) {
methodPrefix = QLatin1String("set");
@@ -1105,6 +1107,8 @@ void WriteInitialization::acceptLayoutItem(DomLayoutItem *node)
addArgs = QString::fromLatin1("%1, %2, %3").arg(row).arg(role).arg(itemName);
} else {
addArgs = itemName;
+ if (layout->attributeClass().contains(QLatin1String("Box")) && !node->attributeAlignment().isEmpty())
+ addArgs += QLatin1String(", 0, ") + node->attributeAlignment();
}
}
diff --git a/src/tools/uic/ui4.cpp b/src/tools/uic/ui4.cpp
index 19886967b8..e094eaff73 100644
--- a/src/tools/uic/ui4.cpp
+++ b/src/tools/uic/ui4.cpp
@@ -3673,6 +3673,7 @@ void DomLayoutItem::clear(bool clear_all)
m_attr_rowSpan = 0;
m_has_attr_colSpan = false;
m_attr_colSpan = 0;
+ m_has_attr_alignment = false;
}
m_kind = Unknown;
@@ -3694,6 +3695,7 @@ DomLayoutItem::DomLayoutItem()
m_attr_rowSpan = 0;
m_has_attr_colSpan = false;
m_attr_colSpan = 0;
+ m_has_attr_alignment = false;
m_widget = 0;
m_layout = 0;
m_spacer = 0;
@@ -3727,6 +3729,10 @@ void DomLayoutItem::read(QXmlStreamReader &reader)
setAttributeColSpan(attribute.value().toString().toInt());
continue;
}
+ if (name == QLatin1String("alignment")) {
+ setAttributeAlignment(attribute.value().toString());
+ continue;
+ }
reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
}
@@ -3779,6 +3785,8 @@ void DomLayoutItem::read(const QDomElement &node)
setAttributeRowSpan(node.attribute(QLatin1String("rowspan")).toInt());
if (node.hasAttribute(QLatin1String("colspan")))
setAttributeColSpan(node.attribute(QLatin1String("colspan")).toInt());
+ if (node.hasAttribute(QLatin1String("alignment")))
+ setAttributeAlignment(node.attribute(QLatin1String("alignment")));
for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
if (!n.isElement())
@@ -3828,6 +3836,9 @@ void DomLayoutItem::write(QXmlStreamWriter &writer, const QString &tagName) cons
if (hasAttributeColSpan())
writer.writeAttribute(QLatin1String("colspan"), QString::number(attributeColSpan()));
+ if (hasAttributeAlignment())
+ writer.writeAttribute(QLatin1String("alignment"), attributeAlignment());
+
switch (kind()) {
case Widget: {
DomWidget* v = elementWidget();
diff --git a/src/tools/uic/ui4.h b/src/tools/uic/ui4.h
index a464a89516..836175e272 100644
--- a/src/tools/uic/ui4.h
+++ b/src/tools/uic/ui4.h
@@ -1427,6 +1427,11 @@ public:
inline void setAttributeColSpan(int a) { m_attr_colSpan = a; m_has_attr_colSpan = true; }
inline void clearAttributeColSpan() { m_has_attr_colSpan = false; }
+ inline bool hasAttributeAlignment() const { return m_has_attr_alignment; }
+ inline QString attributeAlignment() const { return m_attr_alignment; }
+ inline void setAttributeAlignment(const QString& a) { m_attr_alignment = a; m_has_attr_alignment = true; }
+ inline void clearAttributeAlignment() { m_has_attr_alignment = false; }
+
// child element accessors
enum Kind { Unknown = 0, Widget, Layout, Spacer };
inline Kind kind() const { return m_kind; }
@@ -1460,6 +1465,9 @@ private:
int m_attr_colSpan;
bool m_has_attr_colSpan;
+ QString m_attr_alignment;
+ bool m_has_attr_alignment;
+
// child element data
Kind m_kind;
DomWidget* m_widget;
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 5bb9a4f91e..700f7ea50e 100644
--- a/src/xmlpatterns/data/qatomicvalue.cpp
+++ b/src/xmlpatterns/data/qatomicvalue.cpp
@@ -65,7 +65,7 @@ QT_BEGIN_NAMESPACE
/**
* @file
- * @short Contains the implementation for AtomicValue. The defintion is in qitem_p.h.
+ * @short Contains the implementation for AtomicValue. The definition is in qitem_p.h.
*/
using namespace QPatternist;
diff --git a/src/xmlpatterns/data/qschematime_p.h b/src/xmlpatterns/data/qschematime_p.h
index 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/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/arthur/.gitignore b/tests/arthur/.gitignore
new file mode 100644
index 0000000000..7f0c1fa2cd
--- /dev/null
+++ b/tests/arthur/.gitignore
@@ -0,0 +1,2 @@
+bin/shower
+lance/lance
diff --git a/tests/arthur/baselineserver/.gitignore b/tests/arthur/baselineserver/.gitignore
new file mode 100644
index 0000000000..cc513e0df2
--- /dev/null
+++ b/tests/arthur/baselineserver/.gitignore
@@ -0,0 +1,2 @@
+storage
+bin/baselineserver
diff --git a/tests/arthur/baselineserver/bin/runserver b/tests/arthur/baselineserver/bin/runserver
new file mode 100755
index 0000000000..48c5c1d086
--- /dev/null
+++ b/tests/arthur/baselineserver/bin/runserver
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+logfile=baselineserver.log
+
+while true; do
+ echo >> $logfile
+ echo -n "***RESTARTING*** " >> $logfile
+ date >> $logfile
+
+ ./baselineserver 2>&1 | tee -a $logfile
+
+ sleep 2
+done
diff --git a/tests/arthur/baselineserver/src/baselineserver.cpp b/tests/arthur/baselineserver/src/baselineserver.cpp
new file mode 100644
index 0000000000..7679f13c4a
--- /dev/null
+++ b/tests/arthur/baselineserver/src/baselineserver.cpp
@@ -0,0 +1,519 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#define QT_USE_FAST_CONCATENATION
+#define QT_USE_FAST_OPERATOR_PLUS
+
+#include "baselineserver.h"
+#include <QBuffer>
+#include <QFile>
+#include <QDir>
+#include <QCoreApplication>
+#include <QFileInfo>
+#include <QHostInfo>
+#include <QTextStream>
+#include <QProcess>
+
+QString BaselineServer::storage;
+
+
+BaselineServer::BaselineServer(QObject *parent)
+ : QTcpServer(parent)
+{
+ QFileInfo me(QCoreApplication::applicationFilePath());
+ meLastMod = me.lastModified();
+ heartbeatTimer = new QTimer(this);
+ connect(heartbeatTimer, SIGNAL(timeout()), this, SLOT(heartbeat()));
+ heartbeatTimer->start(HEARTBEAT*1000);
+}
+
+QString BaselineServer::storagePath()
+{
+ if (storage.isEmpty()) {
+ storage = QLS(qgetenv("QT_LANCELOT_DIR"));
+ if (storage.isEmpty())
+ storage = QLS("/var/www");
+ }
+ return storage;
+}
+
+QString BaselineServer::baseUrl()
+{
+ return QLS("http://")
+ + QHostInfo::localHostName().toLatin1() + '.'
+ + QHostInfo::localDomainName().toLatin1() + '/';
+}
+
+void BaselineServer::incomingConnection(int socketDescriptor)
+{
+ qDebug() << "Server: New connection!";
+ BaselineThread *thread = new BaselineThread(socketDescriptor, this);
+ connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
+ thread->start();
+}
+
+void BaselineServer::heartbeat()
+{
+ // The idea is to exit to be restarted when modified, as soon as not actually serving
+ QFileInfo me(QCoreApplication::applicationFilePath());
+ if (me.lastModified() == meLastMod)
+ return;
+
+ // (could close() here to avoid accepting new connections, to avoid livelock)
+ // also, could check for a timeout to force exit, to avoid hung threads blocking
+ bool isServing = false;
+ foreach(BaselineThread *thread, findChildren<BaselineThread *>()) {
+ if (thread->isRunning()) {
+ isServing = true;
+ break;
+ }
+ }
+
+ if (!isServing)
+ QCoreApplication::exit();
+}
+
+BaselineThread::BaselineThread(int socketDescriptor, QObject *parent)
+ : QThread(parent), socketDescriptor(socketDescriptor)
+{
+}
+
+void BaselineThread::run()
+{
+ BaselineHandler handler(socketDescriptor);
+ exec();
+}
+
+
+BaselineHandler::BaselineHandler(int socketDescriptor)
+ : QObject(), connectionEstablished(false)
+{
+ runId = QDateTime::currentDateTime().toString(QLS("MMMdd-hhmmss"));
+
+ if (socketDescriptor == -1)
+ return;
+
+ connect(&proto.socket, SIGNAL(readyRead()), this, SLOT(receiveRequest()));
+ connect(&proto.socket, SIGNAL(disconnected()), this, SLOT(receiveDisconnect()));
+ proto.socket.setSocketDescriptor(socketDescriptor);
+}
+
+const char *BaselineHandler::logtime()
+{
+ return 0;
+ //return QTime::currentTime().toString(QLS("mm:ss.zzz"));
+}
+
+void BaselineHandler::receiveRequest()
+{
+ if (!connectionEstablished) {
+ if (!proto.acceptConnection(&plat)) {
+ qWarning() << runId << logtime() << "Accepting new connection from" << proto.socket.peerAddress().toString() << "failed." << proto.errorMessage();
+ proto.socket.disconnectFromHost();
+ return;
+ }
+ QString logMsg;
+ foreach (QString key, plat.keys()) {
+ if (key != PI_HostName && key != PI_HostAddress)
+ logMsg += key + QLS(": '") + plat.value(key) + QLS("', ");
+ }
+ qDebug() << runId << logtime() << "Connection established with" << plat.value(PI_HostName)
+ << "[" << qPrintable(plat.value(PI_HostAddress)) << "]" << logMsg;
+
+ // Filter on branch
+ QString branch = plat.value(PI_PulseGitBranch);
+ if (branch.isEmpty()) {
+ // Not run by Pulse, i.e. ad hoc run: Ok.
+ }
+ else if (branch != QLS("master-integration") || !plat.value(PI_GitCommit).contains(QLS("Merge branch 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into master-integration"))) {
+ qDebug() << runId << logtime() << "Did not pass branch/staging repo filter, disconnecting.";
+ proto.sendBlock(BaselineProtocol::Abort, QByteArray("This branch/staging repo is not assigned to be tested."));
+ proto.socket.disconnectFromHost();
+ return;
+ }
+
+ proto.sendBlock(BaselineProtocol::Ack, QByteArray());
+ connectionEstablished = true;
+ return;
+ }
+
+ QByteArray block;
+ BaselineProtocol::Command cmd;
+ if (!proto.receiveBlock(&cmd, &block)) {
+ qWarning() << runId << logtime() << "Command reception failed. "<< proto.errorMessage();
+ QThread::currentThread()->exit(1);
+ return;
+ }
+
+ switch(cmd) {
+ case BaselineProtocol::RequestBaselineChecksums:
+ provideBaselineChecksums(block);
+ break;
+ case BaselineProtocol::AcceptNewBaseline:
+ storeImage(block, true);
+ break;
+ case BaselineProtocol::AcceptMismatch:
+ storeImage(block, false);
+ break;
+ default:
+ qWarning() << runId << logtime() << "Unknown command received. " << proto.errorMessage();
+ proto.sendBlock(BaselineProtocol::UnknownError, QByteArray());
+ }
+}
+
+
+void BaselineHandler::provideBaselineChecksums(const QByteArray &itemListBlock)
+{
+ ImageItemList itemList;
+ QDataStream ds(itemListBlock);
+ ds >> itemList;
+ qDebug() << runId << logtime() << "Received request for checksums for" << itemList.count() << "items, engine"
+ << itemList.at(0).engineAsString() << "pixel format" << itemList.at(0).formatAsString();
+
+ for (ImageItemList::iterator i = itemList.begin(); i != itemList.end(); ++i) {
+ i->imageChecksums.clear();
+ QString prefix = pathForItem(*i, true);
+ QFile file(prefix + QLS("metadata"));
+ if (file.open(QIODevice::ReadOnly)) {
+ QDataStream checkSums(&file);
+ checkSums >> i->imageChecksums;
+ file.close();
+ i->status = ImageItem::Ok;
+ }
+ if (!i->imageChecksums.count())
+ i->status = ImageItem::BaselineNotFound;
+ }
+
+ // Find and mark blacklisted items
+ QString context = pathForItem(itemList.at(0), true, false).section(QLC('/'), 0, -2);
+ if (itemList.count() > 0) {
+ QFile file(BaselineServer::storagePath() + QLC('/') + context + QLS("/BLACKLIST"));
+ if (file.open(QIODevice::ReadOnly)) {
+ QTextStream in(&file);
+ do {
+ QString scriptName = in.readLine();
+ if (!scriptName.isNull()) {
+ for (ImageItemList::iterator i = itemList.begin(); i != itemList.end(); ++i) {
+ if (i->scriptName == scriptName)
+ i->status = ImageItem::IgnoreItem;
+ }
+ }
+ } while (!in.atEnd());
+ }
+ }
+
+ QByteArray block;
+ QDataStream ods(&block, QIODevice::WriteOnly);
+ ods << itemList;
+ proto.sendBlock(BaselineProtocol::Ack, block);
+ report.start(BaselineServer::storagePath(), runId, plat, context, itemList);
+}
+
+
+void BaselineHandler::storeImage(const QByteArray &itemBlock, bool isBaseline)
+{
+ QDataStream ds(itemBlock);
+ ImageItem item;
+ ds >> item;
+
+ QString prefix = pathForItem(item, isBaseline);
+ qDebug() << runId << logtime() << "Received" << (isBaseline ? "baseline" : "mismatched") << "image for:" << item.scriptName << "Storing in" << prefix;
+
+ QString dir = prefix.section(QLC('/'), 0, -2);
+ QDir cwd;
+ if (!cwd.exists(dir))
+ cwd.mkpath(dir);
+ item.image.save(prefix + QLS(FileFormat), FileFormat);
+
+ //# Could use QSettings or XML or even DB, could use common file for whole dir or even whole storage - but for now, keep it simple
+ QFile file(prefix + QLS("metadata"));
+ file.open(QIODevice::WriteOnly | QIODevice::Truncate);
+ QDataStream checkSums(&file);
+ checkSums << item.imageChecksums;
+ file.close();
+
+ if (!isBaseline)
+ report.addItem(pathForItem(item, true, false) + QLS(FileFormat),
+ pathForItem(item, false, false) + QLS(FileFormat),
+ item);
+
+ QByteArray msg(isBaseline ? "New baseline image stored: " :
+ "Mismatch report: " );
+ msg += BaselineServer::baseUrl();
+ if (isBaseline)
+ msg += pathForItem(item, true, false).toLatin1() + FileFormat;
+ else
+ msg += report.filePath();
+
+ proto.sendBlock(BaselineProtocol::Ack, msg);
+}
+
+
+void BaselineHandler::receiveDisconnect()
+{
+ qDebug() << runId << logtime() << "Client disconnected.";
+ report.end();
+ QThread::currentThread()->exit(0);
+}
+
+
+void BaselineHandler::mapPlatformInfo()
+{
+ mapped = plat;
+
+ // Map hostname
+ QString host = plat.value(PI_HostName).section(QLC('.'), 0, 0); // Filter away domain, if any
+ if (host.isEmpty() || host == QLS("localhost")) {
+ host = plat.value(PI_HostAddress);
+ } else {
+ // remove index postfix typical of vm hostnames
+ host.remove(QRegExp(QLS("\\d+$")));
+ if (host.endsWith(QLC('-')))
+ host.chop(1);
+ }
+ if (host.isEmpty())
+ host = QLS("unknownhost");
+ mapped.insert(PI_HostName, host);
+
+ // Map qmakespec
+ QString mkspec = plat.value(PI_QMakeSpec);
+ mapped.insert(PI_QMakeSpec, mkspec.replace(QLC('/'), QLC('_')));
+
+ // Map Qt version
+ QString ver = plat.value(PI_QtVersion);
+ mapped.insert(PI_QtVersion, ver.prepend(QLS("Qt-"))); //### TBD: remove patch version
+}
+
+QString BaselineHandler::pathForItem(const ImageItem &item, bool isBaseline, bool absolute)
+{
+ if (mapped.isEmpty())
+ mapPlatformInfo();
+
+ QString itemName = item.scriptName;
+ if (itemName.contains(QLC('.')))
+ itemName.replace(itemName.lastIndexOf(QLC('.')), 1, QLC('_'));
+ itemName.append(QLC('_'));
+ itemName.append(QString::number(item.scriptChecksum, 16).rightJustified(4, QLC('0')));
+
+ QStringList path;
+ if (absolute)
+ path += BaselineServer::storagePath();
+ path += QLS(isBaseline ? "baselines" : "mismatches");
+ path += item.engineAsString() + QLC('_') + item.formatAsString();
+ path += mapped.value(PI_QtVersion);
+ path += mapped.value(PI_QMakeSpec);
+ path += mapped.value(PI_HostName);
+ if (!isBaseline)
+ path += runId;
+ path += itemName + QLC('.');
+
+ return path.join(QLS("/"));
+}
+
+
+QString BaselineHandler::updateAllBaselines(const QString &host, const QString &id,
+ const QString &engine, const QString &format)
+{
+#if 0
+ QString basePath(BaselineServer::storagePath());
+ QString srcDir(basePath + host + QLC('/') + itemSubPath(engine, format, false) + id);
+ QString dstDir(basePath + host + QLC('/') + itemSubPath(engine, format));
+
+ QDir dir(srcDir);
+ QStringList nameFilter;
+ nameFilter << "*.metadata" << "*.png";
+ QStringList fileList = dir.entryList(nameFilter, QDir::Files | QDir::NoDotAndDotDot);
+
+ // remove the generated _fuzzycompared.png and _compared.png files from the list
+ QMutableStringListIterator it(fileList);
+ while (it.hasNext()) {
+ it.next();
+ if (it.value().endsWith(QLS("compared.png")))
+ it.remove();
+ }
+
+ QString res;
+ QProcess proc;
+ proc.setWorkingDirectory(srcDir);
+ proc.setProcessChannelMode(QProcess::MergedChannels);
+ proc.start(QLS("cp"), QStringList() << QLS("-f") << fileList << dstDir);
+ proc.waitForFinished();
+ if (proc.exitCode() == 0)
+ res = QLS("Successfully updated baseline for all failed tests.");
+ else
+ res = QString("Error updating baseline: %1<br>"
+ "Command output: <pre>%2</pre>").arg(proc.errorString(), proc.readAll().constData());
+
+ return res;
+#else
+ return QString();
+#endif
+}
+
+QString BaselineHandler::updateSingleBaseline(const QString &oldBaseline, const QString &newBaseline)
+{
+ QString res;
+ QString basePath(BaselineServer::storagePath() + QLC('/'));
+ QString srcBase(basePath + newBaseline.left(newBaseline.length() - 3));
+ QString dstDir(basePath + oldBaseline.left(oldBaseline.lastIndexOf(QLC('/'))));
+
+ QProcess proc;
+ proc.setProcessChannelMode(QProcess::MergedChannels);
+ proc.start(QLS("cp"), QStringList() << QLS("-f") << srcBase + QLS("png") << srcBase + QLS("metadata") << dstDir);
+ proc.waitForFinished();
+ if (proc.exitCode() == 0)
+ res = QString("Successfully updated '%1'").arg(oldBaseline + QLS("/metadata"));
+ else
+ res = QString("Error updating baseline: %1<br>"
+ "Command output: <pre>%2</pre>").arg(proc.errorString(), proc.readAll().constData());
+
+ return res;
+}
+
+QString BaselineHandler::blacklistTest(const QString &context, const QString &itemId, bool removeFromBlacklist)
+{
+ QFile file(BaselineServer::storagePath() + QLC('/') + context + QLS("/BLACKLIST"));
+ QStringList blackList;
+ if (file.open(QIODevice::ReadWrite)) {
+ while (!file.atEnd())
+ blackList.append(file.readLine().trimmed());
+
+ if (removeFromBlacklist)
+ blackList.removeAll(itemId);
+ else if (!blackList.contains(itemId))
+ blackList.append(itemId);
+
+ file.resize(0);
+ foreach (QString id, blackList)
+ file.write(id.toLatin1() + '\n');
+ file.close();
+ return QLS(removeFromBlacklist ? "Whitelisted " : "Blacklisted ") + itemId + QLS(" in context ") + context;
+ } else {
+ return QLS("Unable to update blacklisted tests, failed to open ") + file.fileName();
+ }
+}
+
+
+void BaselineHandler::testPathMapping()
+{
+ qDebug() << "Storage prefix:" << BaselineServer::storagePath();
+
+ QStringList hosts;
+ hosts << QLS("bq-ubuntu910-x86-01")
+ << QLS("bq-ubuntu910-x86-15")
+ << QLS("osl-mac-master-5.test.qt.nokia.com")
+ << QLS("osl-mac-master-6.test.qt.nokia.com")
+ << QLS("sv-xp-vs-010")
+ << QLS("sv-xp-vs-011")
+ << QLS("sv-solaris-sparc-008")
+ << QLS("macbuilder-02.test.troll.no")
+ << QLS("bqvm1164")
+ << QLS("chimera")
+ << QLS("localhost");
+
+ ImageItem item;
+ item.scriptName = QLS("arcs.qps");
+ item.engine = ImageItem::Raster;
+ item.renderFormat = QImage::Format_ARGB32_Premultiplied;
+ item.imageChecksums << 0x0123456789abcdefULL;
+ item.scriptChecksum = 0x0123;
+
+ plat.insert(PI_QtVersion, QLS("4.8.0"));
+ plat.insert(PI_BuildKey, QLS("(nobuildkey)"));
+ plat.insert(PI_QMakeSpec, "linux-g++");
+ foreach(const QString& host, hosts) {
+ mapped.clear();
+ plat.insert(PI_HostName, host);
+ qDebug() << "Baseline from" << host << "->" << pathForItem(item, true);
+ qDebug() << "Mismatch from" << host << "->" << pathForItem(item, false);
+ }
+}
+
+
+QString BaselineHandler::computeMismatchScore(const QImage &baseline, const QImage &rendered)
+{
+ if (baseline.size() != rendered.size() || baseline.format() != rendered.format())
+ return QLS("[No score, incomparable images.]");
+ if (baseline.depth() != 32)
+ return QLS("[Score computation not implemented for format.]");
+
+ int w = baseline.width();
+ int h = baseline.height();
+
+ uint ncd = 0; // number of differing color pixels
+ uint nad = 0; // number of differing alpha pixels
+ uint scd = 0; // sum of color pixel difference
+ uint sad = 0; // sum of alpha pixel difference
+
+ for (int y=0; y<h; ++y) {
+ const QRgb *bl = (const QRgb *) baseline.constScanLine(y);
+ const QRgb *rl = (const QRgb *) rendered.constScanLine(y);
+ for (int x=0; x<w; ++x) {
+ QRgb b = bl[x];
+ QRgb r = rl[x];
+ if (r != b) {
+ int dr = qAbs(qRed(b) - qRed(r));
+ int dg = qAbs(qGreen(b) - qGreen(r));
+ int db = qAbs(qBlue(b) - qBlue(r));
+ int ds = dr + dg + db;
+ int da = qAbs(qAlpha(b) - qAlpha(r));
+ if (ds) {
+ ncd++;
+ scd += ds;
+ }
+ if (da) {
+ nad++;
+ sad += da;
+ }
+ }
+ }
+ }
+
+ double pcd = 100.0 * ncd / (w*h); // percent of pixels that differ
+ double acd = ncd ? double(scd) / (3*ncd) : 0; // avg. difference
+ QString res = QString(QLS("Diffscore: %1% (Num:%2 Avg:%3)")).arg(pcd, 0, 'g', 2).arg(ncd).arg(acd, 0, 'g', 2);
+ if (baseline.hasAlphaChannel()) {
+ double pad = 100.0 * nad / (w*h); // percent of pixels that differ
+ double aad = nad ? double(sad) / (3*nad) : 0; // avg. difference
+ res += QString(QLS(" Alpha-diffscore: %1% (Num:%2 Avg:%3)")).arg(pad, 0, 'g', 2).arg(nad).arg(aad, 0, 'g', 2);
+ }
+ return res;
+}
diff --git a/tests/arthur/baselineserver/src/baselineserver.h b/tests/arthur/baselineserver/src/baselineserver.h
new file mode 100644
index 0000000000..d49aedb9cd
--- /dev/null
+++ b/tests/arthur/baselineserver/src/baselineserver.h
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** 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 BASELINESERVER_H
+#define BASELINESERVER_H
+
+#include <QStringList>
+#include <QTcpServer>
+#include <QThread>
+#include <QTcpSocket>
+#include <QScopedPointer>
+#include <QTimer>
+#include <QDateTime>
+
+#include "baselineprotocol.h"
+#include "htmlpage.h"
+
+// #seconds between update checks
+#define HEARTBEAT 10
+
+class BaselineServer : public QTcpServer
+{
+ Q_OBJECT
+
+public:
+ BaselineServer(QObject *parent = 0);
+
+ static QString storagePath();
+ static QString baseUrl();
+
+protected:
+ void incomingConnection(int socketDescriptor);
+
+private slots:
+ void heartbeat();
+
+private:
+ QTimer *heartbeatTimer;
+ QDateTime meLastMod;
+ static QString storage;
+};
+
+
+
+class BaselineThread : public QThread
+{
+ Q_OBJECT
+
+public:
+ BaselineThread(int socketDescriptor, QObject *parent);
+ void run();
+
+private:
+ int socketDescriptor;
+};
+
+
+class BaselineHandler : public QObject
+{
+ Q_OBJECT
+
+public:
+ BaselineHandler(int socketDescriptor = -1);
+ void testPathMapping();
+
+ static QString updateAllBaselines(const QString &host, const QString &id,
+ const QString &engine, const QString &format);
+ static QString updateSingleBaseline(const QString &oldBaseline, const QString &newBaseline);
+ static QString blacklistTest(const QString &context, const QString &itemId, bool removeFromBlacklist = false);
+
+private slots:
+ void receiveRequest();
+ void receiveDisconnect();
+
+private:
+ void provideBaselineChecksums(const QByteArray &itemListBlock);
+ void storeImage(const QByteArray &itemBlock, bool isBaseline);
+ void mapPlatformInfo();
+ QString pathForItem(const ImageItem &item, bool isBaseline = true, bool absolute = true);
+ const char *logtime();
+ QString computeMismatchScore(const QImage& baseline, const QImage& rendered);
+
+ BaselineProtocol proto;
+ PlatformInfo plat;
+ PlatformInfo mapped;
+ bool connectionEstablished;
+ QString runId;
+ HTMLPage report;
+};
+
+#endif // BASELINESERVER_H
diff --git a/tests/arthur/baselineserver/src/baselineserver.pro b/tests/arthur/baselineserver/src/baselineserver.pro
new file mode 100644
index 0000000000..a7be03df2f
--- /dev/null
+++ b/tests/arthur/baselineserver/src/baselineserver.pro
@@ -0,0 +1,27 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2010-08-11T11:51:09
+#
+#-------------------------------------------------
+
+QT += core network
+
+# gui needed for QImage
+# QT -= gui
+
+TARGET = baselineserver
+DESTDIR = ../bin
+CONFIG += console
+CONFIG -= app_bundle
+
+TEMPLATE = app
+
+include(../../common/baselineprotocol.pri)
+
+SOURCES += main.cpp \
+ baselineserver.cpp \
+ htmlpage.cpp
+
+HEADERS += \
+ baselineserver.h \
+ htmlpage.h
diff --git a/tests/arthur/baselineserver/src/htmlpage.cpp b/tests/arthur/baselineserver/src/htmlpage.cpp
new file mode 100644
index 0000000000..f75da88143
--- /dev/null
+++ b/tests/arthur/baselineserver/src/htmlpage.cpp
@@ -0,0 +1,228 @@
+/****************************************************************************
+**
+** 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 "htmlpage.h"
+#include "baselineprotocol.h"
+#include "baselineserver.h"
+#include <QDir>
+#include <QProcess>
+#include <QUrl>
+
+HTMLPage::HTMLPage()
+ : headerWritten(false)
+{
+}
+
+HTMLPage::~HTMLPage()
+{
+ end();
+}
+
+QString HTMLPage::filePath()
+{
+ return path;
+}
+
+void HTMLPage::start(const QString &storagepath, const QString &runId, const PlatformInfo pinfo, const QString &context, const ImageItemList &itemList)
+{
+ end();
+
+ id = runId;
+ plat = pinfo;
+ ctx = context;
+ root = storagepath + QLC('/');
+ imageItems = itemList;
+ QString dir = root + QLS("reports/");
+ QDir cwd;
+ if (!cwd.exists(dir))
+ cwd.mkpath(dir);
+}
+
+
+void HTMLPage::writeHeader(const ImageItem &item)
+{
+ path = QLS("reports/") + id + QLC('_') + item.engineAsString()
+ + QLC('_') + item.formatAsString() + QLS(".html");
+
+ QString pageUrl = BaselineServer::baseUrl() + path;
+
+ file.setFileName(root + path);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate))
+ qWarning() << "Failed to open report file" << file.fileName();
+ out.setDevice(&file);
+
+ out << "<html><body><h1>Lancelot results from run " << id << "</h1>\n\n";
+ out << "<h3>Platform Info:</h3>\n";
+ out << "<table>\n";
+ foreach (QString key, plat.keys())
+ out << "<tr><td>" << key << "</td><td>" << plat.value(key) << "</td></tr>\n";
+ out << "</table>\n";
+
+#if 0
+ out << "<h3><a href=\"/cgi-bin/server.cgi?cmd=updateAllBaselines&id="<< id << "&host=" << plat.hostName
+ << "&engine=" << item.engineAsString() << "&format=" << item.formatAsString()
+ << "&url=" << pageUrl
+ << "\">Update all baselines</a><br>";
+#endif
+ out << "<table border=\"2\">\n"
+ "<tr>\n"
+ "<td><b>Script</b></td>\n"
+ "<td><b>Baseline</b></td>\n"
+ "<td><b>Rendered</b></td>\n"
+ "<td><b>Comparison</b></td>\n"
+ "<td><b>Info/Action</b></td>\n"
+ "</b></tr><br>";
+}
+
+
+void HTMLPage::writeFooter()
+{
+ out << "</table>\n</body></html>\n";
+}
+
+
+void HTMLPage::addItem(const QString &baseline, const QString &rendered, const ImageItem &item)
+{
+ if (!headerWritten) {
+ writeHeader(item);
+ headerWritten = true;
+ }
+ QString compared = generateCompared(baseline, rendered);
+ QString pageUrl = BaselineServer::baseUrl() + path;
+
+ out << "<tr>\n";
+ out << "<td>" << item.scriptName << "</td>\n";
+ QStringList images = QStringList() << baseline << rendered << compared;
+ foreach(const QString& img, images)
+ out << "<td><a href=\"/" << img << "\"><img src=\"/" << img << "\" width=240 height=240></a></td>\n";
+
+ out << "<td><p><a href=\"/cgi-bin/server.cgi?cmd=updateSingleBaseline&oldBaseline=" << baseline
+ << "&newBaseline=" << rendered << "&url=" << pageUrl << "\">Replace baseline with rendered</a></p>"
+ << "<p><a href=\"/cgi-bin/server.cgi?cmd=blacklist&context=" << ctx
+ << "&itemId=" << item.scriptName << "&url=" << pageUrl << "\">Blacklist this item</a></p>"
+ << "</td>\n";
+ out << "</tr>\n\n";
+
+ QMutableVectorIterator<ImageItem> it(imageItems);
+ while (it.hasNext()) {
+ it.next();
+ if (it.value().scriptName == item.scriptName) {
+ it.remove();
+ break;
+ }
+ }
+}
+
+
+void HTMLPage::end()
+{
+ if (file.isOpen()) {
+ // Add the names of the scripts that passed the test, or were blacklisted
+ QString pageUrl = BaselineServer::baseUrl() + path;
+ for (int i=0; i<imageItems.count(); ++i) {
+ out << "<tr><td>" << imageItems.at(i).scriptName << "</td><td>N/A</td><td>N/A</td><td>N/A</td><td>";
+ if (imageItems.at(i).status == ImageItem::IgnoreItem) {
+ out << "<span style=\"background-color:yellow\">Blacklisted</span> "
+ << "<a href=\"/cgi-bin/server.cgi?cmd=whitelist&context=" << ctx
+ << "&itemId=" << imageItems.at(i).scriptName << "&url=" << pageUrl
+ << "\">Whitelist item</a>";
+ } else {
+ out << "<span style=\"color:green\">Test passed</span>";
+ }
+ out << "</td></tr>\n";
+ }
+
+ writeFooter();
+ out.flush();
+ file.close();
+ path.clear();
+ headerWritten = false;
+ }
+}
+
+
+QString HTMLPage::generateCompared(const QString &baseline, const QString &rendered, bool fuzzy)
+{
+ QString res = rendered;
+ QFileInfo fi(res);
+ res.chop(fi.suffix().length() + 1);
+ res += QLS(fuzzy ? "_fuzzycompared.png" : "_compared.png");
+ QStringList args;
+ if (fuzzy)
+ args << QLS("-fuzz") << QLS("5%");
+ args << root+baseline << root+rendered << root+res;
+ QProcess::execute(QLS("compare"), args);
+ return res;
+}
+
+
+void HTMLPage::handleCGIQuery(const QString &query)
+{
+ QUrl cgiUrl(QLS("http://dummy/cgi-bin/dummy.cgi?") + query);
+ QTextStream s(stdout);
+ s << "Content-Type: text/html\r\n\r\n"
+ << "<HTML>";
+// << "Contents of QUERY_STRING:<br>"
+// << "Full string = " << query << "<br>";
+
+ QString command(cgiUrl.queryItemValue("cmd"));
+
+ if (command == QLS("updateSingleBaseline")) {
+ s << BaselineHandler::updateSingleBaseline(cgiUrl.queryItemValue(QLS("oldBaseline")),
+ cgiUrl.queryItemValue(QLS("newBaseline")));
+ } else if (command == QLS("updateAllBaselines")) {
+ s << BaselineHandler::updateAllBaselines(cgiUrl.queryItemValue(QLS("host")),
+ cgiUrl.queryItemValue(QLS("id")),
+ cgiUrl.queryItemValue(QLS("engine")),
+ cgiUrl.queryItemValue(QLS("format")));
+ } else if (command == QLS("blacklist")) {
+ // blacklist a test
+ s << BaselineHandler::blacklistTest(cgiUrl.queryItemValue(QLS("context")),
+ cgiUrl.queryItemValue(QLS("itemId")));
+ } else if (command == QLS("whitelist")) {
+ // whitelist a test
+ s << BaselineHandler::blacklistTest(cgiUrl.queryItemValue(QLS("context")),
+ cgiUrl.queryItemValue(QLS("itemId")), true);
+ } else {
+ s << "Unknown query:<br>" << query << "<br>";
+ }
+ s << "<p><a href=\"" << cgiUrl.queryItemValue(QLS("url")) << "\">Back to report</a>";
+ s << "</HTML>";
+}
diff --git a/tests/arthur/baselineserver/src/htmlpage.h b/tests/arthur/baselineserver/src/htmlpage.h
new file mode 100644
index 0000000000..fa4d1ed4aa
--- /dev/null
+++ b/tests/arthur/baselineserver/src/htmlpage.h
@@ -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 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 HTMLPAGE_H
+#define HTMLPAGE_H
+
+#include "baselineprotocol.h"
+#include <QFile>
+#include <QTextStream>
+
+class HTMLPage
+{
+public:
+ HTMLPage();
+ ~HTMLPage();
+
+ void start(const QString &storagePath, const QString &runId, const PlatformInfo pinfo, const QString &context, const ImageItemList &itemList);
+ void addItem(const QString &baseline, const QString &rendered, const ImageItem &item);
+ void end();
+ QString filePath();
+
+ static void handleCGIQuery(const QString &query);
+
+private:
+ void writeHeader(const ImageItem &item);
+ void writeFooter();
+ QString generateCompared(const QString &baseline, const QString &rendered, bool fuzzy = false);
+
+ QString root;
+ QString path;
+ QFile file;
+ QTextStream out;
+ QString id;
+ PlatformInfo plat;
+ QString ctx;
+ ImageItemList imageItems;
+ bool headerWritten;
+};
+
+#endif // HTMLPAGE_H
diff --git a/tests/arthur/baselineserver/src/main.cpp b/tests/arthur/baselineserver/src/main.cpp
new file mode 100644
index 0000000000..a5ec4db19d
--- /dev/null
+++ b/tests/arthur/baselineserver/src/main.cpp
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** 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 <QtCore/QCoreApplication>
+#include "baselineserver.h"
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication a(argc, argv);
+
+ QString queryString(qgetenv("QUERY_STRING"));
+ if (!queryString.isEmpty()) {
+ // run as CGI script
+ HTMLPage::handleCGIQuery(queryString);
+ return 0;
+ }
+
+ if (a.arguments().contains(QLatin1String("-testmapping"))) {
+ BaselineHandler h;
+ h.testPathMapping();
+ return 0;
+ }
+
+ BaselineServer server;
+ if (!server.listen(QHostAddress::Any, BaselineProtocol::ServerPort)) {
+ qWarning("Failed to listen!");
+ return 1;
+ }
+
+ qDebug() << "\n*****" << argv[0] << "started, ready to serve on port" << BaselineProtocol::ServerPort
+ << "with baseline protocol version" << BaselineProtocol::ProtocolVersion << "*****\n";
+ return a.exec();
+}
diff --git a/tests/arthur/common/baselineprotocol.cpp b/tests/arthur/common/baselineprotocol.cpp
new file mode 100644
index 0000000000..6d26e9a0e0
--- /dev/null
+++ b/tests/arthur/common/baselineprotocol.cpp
@@ -0,0 +1,405 @@
+/****************************************************************************
+**
+** 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 "baselineprotocol.h"
+#include <QLibraryInfo>
+#include <QImage>
+#include <QBuffer>
+#include <QHostInfo>
+#include <QSysInfo>
+#include <QProcess>
+#include <QFileInfo>
+#include <QDir>
+#include <QTime>
+
+#ifndef QMAKESPEC
+#define QMAKESPEC "Unknown"
+#endif
+
+#if defined(Q_OS_WIN)
+#include <QtCore/qt_windows.h>
+#endif
+#if defined(Q_OS_UNIX)
+#include <time.h>
+#endif
+void BaselineProtocol::sysSleep(int ms)
+{
+#if defined(Q_OS_WIN)
+ Sleep(DWORD(ms));
+#else
+ struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 };
+ nanosleep(&ts, NULL);
+#endif
+}
+
+PlatformInfo::PlatformInfo(bool useLocal)
+ : QMap<QString, QString>()
+{
+ if (useLocal) {
+ insert(PI_HostName, QHostInfo::localHostName());
+ insert(PI_QtVersion, QLS(qVersion()));
+ insert(PI_QMakeSpec, QString(QLS(QMAKESPEC)).remove(QRegExp(QLS("^.*mkspecs/"))));
+ insert(PI_BuildKey, QLibraryInfo::buildKey());
+#if defined(Q_OS_LINUX)
+ insert(PI_OSName, QLS("Linux"));
+ QProcess uname;
+ uname.start(QLS("uname"), QStringList() << QLS("-r"));
+ if (uname.waitForFinished(3000))
+ insert(PI_OSVersion, QString::fromLocal8Bit(uname.readAllStandardOutput().constData()).simplified());
+#elif defined(Q_OS_WINCE)
+ insert(PI_OSName, QLS("WinCE"));
+ insert(PI_OSVersion, QString::number(QSysInfo::windowsVersion()));
+#elif defined(Q_OS_WIN)
+ insert(PI_OSName, QLS("Windows"));
+ insert(PI_OSVersion, QString::number(QSysInfo::windowsVersion()));
+#elif defined(Q_OS_MAC)
+ insert(PI_OSName, QLS("MacOS"));
+ insert(PI_OSVersion, QString::number(qMacVersion()));
+#elif defined(Q_OS_SYMBIAN)
+ insert(PI_OSName, QLS("Symbian"));
+ insert(PI_OSVersion, QString::number(QSysInfo::symbianVersion());
+#else
+ insert(PI_OSName, QLS("Other"));
+#endif
+
+ QProcess git;
+ QString cmd;
+ QStringList args;
+#if defined(Q_OS_WIN)
+ cmd = QLS("cmd.exe");
+ args << QLS("/c") << QLS("git");
+#else
+ cmd = QLS("git");
+#endif
+ args << QLS("log") << QLS("--max-count=1") << QLS("--pretty=%H [%an] [%ad] %s");
+ git.start(cmd, args);
+ git.waitForFinished(3000);
+ if (!git.exitCode())
+ insert(PI_GitCommit, QString::fromLocal8Bit(git.readAllStandardOutput().constData()).simplified());
+ else
+ insert(PI_GitCommit, QLS("Unknown"));
+ }
+
+ QByteArray gb = qgetenv("PULSE_GIT_BRANCH");
+ if (!gb.isEmpty())
+ insert(PI_PulseGitBranch, QString::fromLatin1(gb));
+ QByteArray tb = qgetenv("PULSE_TESTR_BRANCH");
+ if (!tb.isEmpty())
+ insert(PI_PulseTestrBranch, QString::fromLatin1(tb));
+}
+
+
+ImageItem &ImageItem::operator=(const ImageItem &other)
+{
+ scriptName = other.scriptName;
+ scriptChecksum = other.scriptChecksum;
+ status = other.status;
+ renderFormat = other.renderFormat;
+ engine = other.engine;
+ image = other.image;
+ imageChecksums = other.imageChecksums;
+ return *this;
+}
+
+// Defined in lookup3.c:
+void hashword2 (
+const quint32 *k, /* the key, an array of quint32 values */
+size_t length, /* the length of the key, in quint32s */
+quint32 *pc, /* IN: seed OUT: primary hash value */
+quint32 *pb); /* IN: more seed OUT: secondary hash value */
+
+quint64 ImageItem::computeChecksum(const QImage &image)
+{
+ QImage img(image);
+ const int bpl = img.bytesPerLine();
+ const int padBytes = bpl - (img.width() * img.depth() / 8);
+ if (padBytes) {
+ uchar *p = img.bits() + bpl - padBytes;
+ const int h = img.height();
+ for (int y = 0; y < h; ++y) {
+ qMemSet(p, 0, padBytes);
+ p += bpl;
+ }
+ }
+
+ quint32 h1 = 0xfeedbacc;
+ quint32 h2 = 0x21604894;
+ hashword2((const quint32 *)img.constBits(), img.byteCount()/4, &h1, &h2);
+ return (quint64(h1) << 32) | h2;
+}
+
+QString ImageItem::engineAsString() const
+{
+ switch (engine) {
+ case Raster:
+ return QLS("Raster");
+ break;
+ case OpenGL:
+ return QLS("OpenGL");
+ break;
+ default:
+ break;
+ }
+ return QLS("Unknown");
+}
+
+QString ImageItem::formatAsString() const
+{
+ static const int numFormats = 16;
+ static const char *formatNames[numFormats] = {
+ "Invalid",
+ "Mono",
+ "MonoLSB",
+ "Indexed8",
+ "RGB32",
+ "ARGB32",
+ "ARGB32-Premult",
+ "RGB16",
+ "ARGB8565-Premult",
+ "RGB666",
+ "ARGB6666-Premult",
+ "RGB555",
+ "ARGB8555-Premult",
+ "RGB888",
+ "RGB444",
+ "ARGB4444-Premult"
+ };
+ if (renderFormat < 0 || renderFormat >= numFormats)
+ return QLS("UnknownFormat");
+ return QLS(formatNames[renderFormat]);
+}
+
+QDataStream & operator<< (QDataStream &stream, const ImageItem &ii)
+{
+ stream << ii.scriptName << ii.scriptChecksum << quint8(ii.status) << quint8(ii.renderFormat)
+ << quint8(ii.engine) << ii.image << ii.imageChecksums;
+ return stream;
+}
+
+QDataStream & operator>> (QDataStream &stream, ImageItem &ii)
+{
+ quint8 encFormat, encStatus, encEngine;
+ stream >> ii.scriptName >> ii.scriptChecksum >> encStatus >> encFormat
+ >> encEngine >> ii.image >> ii.imageChecksums;
+ ii.renderFormat = QImage::Format(encFormat);
+ ii.status = ImageItem::ItemStatus(encStatus);
+ ii.engine = ImageItem::GraphicsEngine(encEngine);
+ return stream;
+}
+
+BaselineProtocol::~BaselineProtocol()
+{
+ socket.close();
+ if (socket.state() != QTcpSocket::UnconnectedState)
+ socket.waitForDisconnected(Timeout);
+}
+
+
+bool BaselineProtocol::connect(bool *dryrun)
+{
+ errMsg.clear();
+ QByteArray serverName(qgetenv("QT_LANCELOT_SERVER"));
+ if (serverName.isNull())
+ serverName = "lancelot.test.qt.nokia.com";
+
+ socket.connectToHost(serverName, ServerPort);
+ if (!socket.waitForConnected(Timeout)) {
+ sysSleep(Timeout); // Wait a bit and try again, the server might just be restarting
+ if (!socket.waitForConnected(Timeout)) {
+ errMsg += QLS("TCP connectToHost failed. Host:") + serverName + QLS(" port:") + QString::number(ServerPort);
+ return false;
+ }
+ }
+
+ PlatformInfo pi(true);
+ QByteArray block;
+ QDataStream ds(&block, QIODevice::ReadWrite);
+ ds << pi;
+ if (!sendBlock(AcceptPlatformInfo, block)) {
+ errMsg += QLS("Failed to send data to server.");
+ return false;
+ }
+
+ Command cmd = UnknownError;
+ if (!receiveBlock(&cmd, &block)) {
+ errMsg += QLS("Failed to get response from server.");
+ return false;
+ }
+
+ if (cmd == Abort) {
+ errMsg += QLS("Server aborted connection. Reason: ") + QString::fromLatin1(block);
+ return false;
+ }
+
+ if (dryrun)
+ *dryrun = (cmd == DoDryRun);
+
+ if (cmd != Ack && cmd != DoDryRun) {
+ errMsg += QLS("Unexpected response from server.");
+ return false;
+ }
+
+ return true;
+}
+
+
+bool BaselineProtocol::acceptConnection(PlatformInfo *pi)
+{
+ errMsg.clear();
+
+ QByteArray block;
+ Command cmd = AcceptPlatformInfo;
+ if (!receiveBlock(&cmd, &block) || cmd != AcceptPlatformInfo)
+ return false;
+
+ if (pi) {
+ QDataStream ds(block);
+ ds >> *pi;
+ pi->insert(PI_HostAddress, socket.peerAddress().toString());
+ }
+
+ return true;
+}
+
+
+bool BaselineProtocol::requestBaselineChecksums(ImageItemList *itemList)
+{
+ errMsg.clear();
+ if (!itemList)
+ return false;
+ QByteArray block;
+ QDataStream ds(&block, QIODevice::ReadWrite);
+ ds << *itemList;
+ if (!sendBlock(RequestBaselineChecksums, block))
+ return false;
+ Command cmd;
+ if (!receiveBlock(&cmd, &block))
+ return false;
+ ds.device()->seek(0);
+ ds >> *itemList;
+ return true;
+}
+
+
+bool BaselineProtocol::submitNewBaseline(const ImageItem &item, QByteArray *serverMsg)
+{
+ Command cmd;
+ return (sendItem(AcceptNewBaseline, item) && receiveBlock(&cmd, serverMsg) && cmd == Ack);
+}
+
+
+bool BaselineProtocol::submitMismatch(const ImageItem &item, QByteArray *serverMsg)
+{
+ Command cmd;
+ return (sendItem(AcceptMismatch, item) && receiveBlock(&cmd, serverMsg) && cmd == Ack);
+}
+
+
+bool BaselineProtocol::sendItem(Command cmd, const ImageItem &item)
+{
+ errMsg.clear();
+ QBuffer buf;
+ buf.open(QIODevice::WriteOnly);
+ QDataStream ds(&buf);
+ ds << item;
+ if (!sendBlock(cmd, buf.data())) {
+ errMsg.prepend(QLS("Failed to submit image to server. "));
+ return false;
+ }
+ return true;
+}
+
+
+bool BaselineProtocol::sendBlock(Command cmd, const QByteArray &block)
+{
+ QDataStream s(&socket);
+ // TBD: set qds version as a constant
+ s << quint16(ProtocolVersion) << quint16(cmd);
+ s.writeBytes(block.constData(), block.size());
+ return true;
+}
+
+
+bool BaselineProtocol::receiveBlock(Command *cmd, QByteArray *block)
+{
+ while (socket.bytesAvailable() < int(2*sizeof(quint16) + sizeof(quint32))) {
+ if (!socket.waitForReadyRead(Timeout))
+ return false;
+ }
+ QDataStream ds(&socket);
+ quint16 rcvProtocolVersion, rcvCmd;
+ ds >> rcvProtocolVersion >> rcvCmd;
+ if (rcvProtocolVersion != ProtocolVersion) {
+ errMsg = QLS("Baseline protocol version mismatch, received:") + QString::number(rcvProtocolVersion)
+ + QLS(" expected:") + QString::number(ProtocolVersion);
+ return false;
+ }
+ if (cmd)
+ *cmd = Command(rcvCmd);
+
+ QByteArray uMsg;
+ quint32 remaining;
+ ds >> remaining;
+ uMsg.resize(remaining);
+ int got = 0;
+ char* uMsgBuf = uMsg.data();
+ do {
+ got = ds.readRawData(uMsgBuf, remaining);
+ remaining -= got;
+ uMsgBuf += got;
+ } while (remaining && got >= 0 && socket.waitForReadyRead(Timeout));
+
+ if (got < 0)
+ return false;
+
+ if (block)
+ *block = uMsg;
+
+ return true;
+}
+
+
+QString BaselineProtocol::errorMessage()
+{
+ QString ret = errMsg;
+ if (socket.error() >= 0)
+ ret += QLS(" Socket state: ") + socket.errorString();
+ return ret;
+}
diff --git a/tests/arthur/common/baselineprotocol.h b/tests/arthur/common/baselineprotocol.h
new file mode 100644
index 0000000000..9f59454efc
--- /dev/null
+++ b/tests/arthur/common/baselineprotocol.h
@@ -0,0 +1,168 @@
+/****************************************************************************
+**
+** 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 BASELINEPROTOCOL_H
+#define BASELINEPROTOCOL_H
+
+#include <QDataStream>
+#include <QTcpSocket>
+#include <QImage>
+#include <QVector>
+#include <QMap>
+
+#define QLS QLatin1String
+#define QLC QLatin1Char
+
+#define FileFormat "png"
+
+const QString PI_HostName(QLS("HostName"));
+const QString PI_HostAddress(QLS("HostAddress"));
+const QString PI_OSName(QLS("OSName"));
+const QString PI_OSVersion(QLS("OSVersion"));
+const QString PI_QtVersion(QLS("QtVersion"));
+const QString PI_BuildKey(QLS("BuildKey"));
+const QString PI_GitCommit(QLS("GitCommit"));
+const QString PI_QMakeSpec(QLS("QMakeSpec"));
+const QString PI_PulseGitBranch(QLS("PulseGitBranch"));
+const QString PI_PulseTestrBranch(QLS("PulseTestrBranch"));
+
+class PlatformInfo : public QMap<QString, QString>
+{
+public:
+ PlatformInfo(bool useLocal = false);
+};
+
+struct ImageItem
+{
+public:
+ ImageItem()
+ : status(Ok), renderFormat(QImage::Format_Invalid), engine(Raster), scriptChecksum(0)
+ {}
+ ImageItem(const ImageItem &other)
+ { *this = other; }
+ ~ImageItem()
+ {}
+ ImageItem &operator=(const ImageItem &other);
+ static quint64 computeChecksum(const QImage& image);
+ QString engineAsString() const;
+ QString formatAsString() const;
+
+ enum ItemStatus {
+ Ok = 0,
+ BaselineNotFound = 1,
+ IgnoreItem = 2
+ };
+
+ enum GraphicsEngine {
+ Raster = 0,
+ OpenGL = 1
+ };
+
+ QString scriptName;
+ ItemStatus status;
+ QImage::Format renderFormat;
+ GraphicsEngine engine;
+ QImage image;
+ QList<quint64> imageChecksums;
+ // tbd: add diffscore
+ quint16 scriptChecksum;
+};
+QDataStream & operator<< (QDataStream &stream, const ImageItem &ii);
+QDataStream & operator>> (QDataStream& stream, ImageItem& ii);
+
+Q_DECLARE_METATYPE(ImageItem);
+
+typedef QVector<ImageItem> ImageItemList;
+
+class BaselineProtocol
+{
+public:
+ BaselineProtocol() {}
+ ~BaselineProtocol();
+
+ // ****************************************************
+ // Important constants here
+ // ****************************************************
+ enum Constant {
+ ProtocolVersion = 2,
+ ServerPort = 54129,
+ Timeout = 5000
+ };
+
+ enum Command {
+ UnknownError = 0,
+ // Queries
+ AcceptPlatformInfo = 1,
+ RequestBaselineChecksums = 2,
+ AcceptNewBaseline = 4,
+ AcceptMismatch = 5,
+ // Responses
+ Ack = 128,
+ Abort = 129,
+ DoDryRun = 130
+ };
+
+ // For client:
+ bool connect(bool *dryrun = 0);
+ bool requestBaselineChecksums(ImageItemList *itemList);
+ bool submitNewBaseline(const ImageItem &item, QByteArray *serverMsg);
+ bool submitMismatch(const ImageItem &item, QByteArray *serverMsg);
+
+ // For server:
+ bool acceptConnection(PlatformInfo *pi);
+
+ QString errorMessage();
+
+private:
+ bool sendItem(Command cmd, const ImageItem &item);
+
+ bool sendBlock(Command cmd, const QByteArray &block);
+ bool receiveBlock(Command *cmd, QByteArray *block);
+ void sysSleep(int ms);
+
+ QString errMsg;
+ QTcpSocket socket;
+
+ friend class BaselineThread;
+ friend class BaselineHandler;
+};
+
+
+#endif // BASELINEPROTOCOL_H
diff --git a/tests/arthur/common/baselineprotocol.pri b/tests/arthur/common/baselineprotocol.pri
new file mode 100644
index 0000000000..996f9d5a1f
--- /dev/null
+++ b/tests/arthur/common/baselineprotocol.pri
@@ -0,0 +1,10 @@
+INCLUDEPATH += $$PWD
+
+QT *= network
+
+SOURCES += \
+ $$PWD/baselineprotocol.cpp \
+ $$PWD/lookup3.cpp
+
+HEADERS += \
+ $$PWD/baselineprotocol.h
diff --git a/tests/arthur/common/lookup3.cpp b/tests/arthur/common/lookup3.cpp
new file mode 100644
index 0000000000..8cdc64b500
--- /dev/null
+++ b/tests/arthur/common/lookup3.cpp
@@ -0,0 +1,786 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+
+/*
+These functions are based on:
+
+-------------------------------------------------------------------------------
+lookup3.c, by Bob Jenkins, May 2006, Public Domain.
+
+These are functions for producing 32-bit hashes for hash table lookup.
+hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final()
+are externally useful functions. Routines to test the hash are included
+if SELF_TEST is defined. You can use this free for any purpose. It's in
+the public domain. It has no warranty.
+
+You probably want to use hashlittle(). hashlittle() and hashbig()
+hash byte arrays. hashlittle() is is faster than hashbig() on
+little-endian machines. Intel and AMD are little-endian machines.
+On second thought, you probably want hashlittle2(), which is identical to
+hashlittle() except it returns two 32-bit hashes for the price of one.
+You could implement hashbig2() if you wanted but I haven't bothered here.
+
+If you want to find a hash of, say, exactly 7 integers, do
+ a = i1; b = i2; c = i3;
+ mix(a,b,c);
+ a += i4; b += i5; c += i6;
+ mix(a,b,c);
+ a += i7;
+ final(a,b,c);
+then use c as the hash value. If you have a variable length array of
+4-byte integers to hash, use hashword(). If you have a byte array (like
+a character string), use hashlittle(). If you have several byte arrays, or
+a mix of things, see the comments above hashlittle().
+
+Why is this so big? I read 12 bytes at a time into 3 4-byte integers,
+then mix those integers. This is fast (you can do a lot more thorough
+mixing with 12*3 instructions on 3 integers than you can with 3 instructions
+on 1 byte), but shoehorning those bytes into integers efficiently is messy.
+-------------------------------------------------------------------------------
+*/
+
+#include <QtGlobal>
+
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+# define HASH_LITTLE_ENDIAN 0
+# define HASH_BIG_ENDIAN 1
+#else
+# define HASH_LITTLE_ENDIAN 1
+# define HASH_BIG_ENDIAN 0
+#endif
+
+#define hashsize(n) ((quint32)1<<(n))
+#define hashmask(n) (hashsize(n)-1)
+#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
+
+/*
+-------------------------------------------------------------------------------
+mix -- mix 3 32-bit values reversibly.
+
+This is reversible, so any information in (a,b,c) before mix() is
+still in (a,b,c) after mix().
+
+If four pairs of (a,b,c) inputs are run through mix(), or through
+mix() in reverse, there are at least 32 bits of the output that
+are sometimes the same for one pair and different for another pair.
+This was tested for:
+* pairs that differed by one bit, by two bits, in any combination
+ of top bits of (a,b,c), or in any combination of bottom bits of
+ (a,b,c).
+* "differ" is defined as +, -, ^, or ~^. For + and -, I transformed
+ the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
+ is commonly produced by subtraction) look like a single 1-bit
+ difference.
+* the base values were pseudorandom, all zero but one bit set, or
+ all zero plus a counter that starts at zero.
+
+Some k values for my "a-=c; a^=rot(c,k); c+=b;" arrangement that
+satisfy this are
+ 4 6 8 16 19 4
+ 9 15 3 18 27 15
+ 14 9 3 7 17 3
+Well, "9 15 3 18 27 15" didn't quite get 32 bits diffing
+for "differ" defined as + with a one-bit base and a two-bit delta. I
+used http://burtleburtle.net/bob/hash/avalanche.html to choose
+the operations, constants, and arrangements of the variables.
+
+This does not achieve avalanche. There are input bits of (a,b,c)
+that fail to affect some output bits of (a,b,c), especially of a. The
+most thoroughly mixed value is c, but it doesn't really even achieve
+avalanche in c.
+
+This allows some parallelism. Read-after-writes are good at doubling
+the number of bits affected, so the goal of mixing pulls in the opposite
+direction as the goal of parallelism. I did what I could. Rotates
+seem to cost as much as shifts on every machine I could lay my hands
+on, and rotates are much kinder to the top and bottom bits, so I used
+rotates.
+-------------------------------------------------------------------------------
+*/
+#define mix(a,b,c) \
+{ \
+ a -= c; a ^= rot(c, 4); c += b; \
+ b -= a; b ^= rot(a, 6); a += c; \
+ c -= b; c ^= rot(b, 8); b += a; \
+ a -= c; a ^= rot(c,16); c += b; \
+ b -= a; b ^= rot(a,19); a += c; \
+ c -= b; c ^= rot(b, 4); b += a; \
+}
+
+/*
+-------------------------------------------------------------------------------
+final -- final mixing of 3 32-bit values (a,b,c) into c
+
+Pairs of (a,b,c) values differing in only a few bits will usually
+produce values of c that look totally different. This was tested for
+* pairs that differed by one bit, by two bits, in any combination
+ of top bits of (a,b,c), or in any combination of bottom bits of
+ (a,b,c).
+* "differ" is defined as +, -, ^, or ~^. For + and -, I transformed
+ the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
+ is commonly produced by subtraction) look like a single 1-bit
+ difference.
+* the base values were pseudorandom, all zero but one bit set, or
+ all zero plus a counter that starts at zero.
+
+These constants passed:
+ 14 11 25 16 4 14 24
+ 12 14 25 16 4 14 24
+and these came close:
+ 4 8 15 26 3 22 24
+ 10 8 15 26 3 22 24
+ 11 8 15 26 3 22 24
+-------------------------------------------------------------------------------
+*/
+#define final(a,b,c) \
+{ \
+ c ^= b; c -= rot(b,14); \
+ a ^= c; a -= rot(c,11); \
+ b ^= a; b -= rot(a,25); \
+ c ^= b; c -= rot(b,16); \
+ a ^= c; a -= rot(c,4); \
+ b ^= a; b -= rot(a,14); \
+ c ^= b; c -= rot(b,24); \
+}
+
+/*
+--------------------------------------------------------------------
+ This works on all machines. To be useful, it requires
+ -- that the key be an array of quint32's, and
+ -- that the length be the number of quint32's in the key
+
+ The function hashword() is identical to hashlittle() on little-endian
+ machines, and identical to hashbig() on big-endian machines,
+ except that the length has to be measured in quint32s rather than in
+ bytes. hashlittle() is more complicated than hashword() only because
+ hashlittle() has to dance around fitting the key bytes into registers.
+--------------------------------------------------------------------
+*/
+quint32 hashword(
+const quint32 *k, /* the key, an array of quint32 values */
+size_t length, /* the length of the key, in quint32s */
+quint32 initval) /* the previous hash, or an arbitrary value */
+{
+ quint32 a,b,c;
+
+ /* Set up the internal state */
+ a = b = c = 0xdeadbeef + (((quint32)length)<<2) + initval;
+
+ /*------------------------------------------------- handle most of the key */
+ while (length > 3)
+ {
+ a += k[0];
+ b += k[1];
+ c += k[2];
+ mix(a,b,c);
+ length -= 3;
+ k += 3;
+ }
+
+ /*------------------------------------------- handle the last 3 quint32's */
+ switch(length) /* all the case statements fall through */
+ {
+ case 3 : c+=k[2];
+ case 2 : b+=k[1];
+ case 1 : a+=k[0];
+ final(a,b,c);
+ case 0: /* case 0: nothing left to add */
+ break;
+ }
+ /*------------------------------------------------------ report the result */
+ return c;
+}
+
+
+/*
+--------------------------------------------------------------------
+hashword2() -- same as hashword(), but take two seeds and return two
+32-bit values. pc and pb must both be nonnull, and *pc and *pb must
+both be initialized with seeds. If you pass in (*pb)==0, the output
+(*pc) will be the same as the return value from hashword().
+--------------------------------------------------------------------
+*/
+void hashword2 (
+const quint32 *k, /* the key, an array of quint32 values */
+size_t length, /* the length of the key, in quint32s */
+quint32 *pc, /* IN: seed OUT: primary hash value */
+quint32 *pb) /* IN: more seed OUT: secondary hash value */
+{
+ quint32 a,b,c;
+
+ /* Set up the internal state */
+ a = b = c = 0xdeadbeef + ((quint32)(length<<2)) + *pc;
+ c += *pb;
+
+ /*------------------------------------------------- handle most of the key */
+ while (length > 3)
+ {
+ a += k[0];
+ b += k[1];
+ c += k[2];
+ mix(a,b,c);
+ length -= 3;
+ k += 3;
+ }
+
+ /*------------------------------------------- handle the last 3 quint32's */
+ switch(length) /* all the case statements fall through */
+ {
+ case 3 : c+=k[2];
+ case 2 : b+=k[1];
+ case 1 : a+=k[0];
+ final(a,b,c);
+ case 0: /* case 0: nothing left to add */
+ break;
+ }
+ /*------------------------------------------------------ report the result */
+ *pc=c; *pb=b;
+}
+
+
+/*
+-------------------------------------------------------------------------------
+hashlittle() -- hash a variable-length key into a 32-bit value
+ k : the key (the unaligned variable-length array of bytes)
+ length : the length of the key, counting by bytes
+ initval : can be any 4-byte value
+Returns a 32-bit value. Every bit of the key affects every bit of
+the return value. Two keys differing by one or two bits will have
+totally different hash values.
+
+The best hash table sizes are powers of 2. There is no need to do
+mod a prime (mod is sooo slow!). If you need less than 32 bits,
+use a bitmask. For example, if you need only 10 bits, do
+ h = (h & hashmask(10));
+In which case, the hash table should have hashsize(10) elements.
+
+If you are hashing n strings (quint8 **)k, do it like this:
+ for (i=0, h=0; i<n; ++i) h = hashlittle( k[i], len[i], h);
+
+By Bob Jenkins, 2006. bob_jenkins@burtleburtle.net. You may use this
+code any way you wish, private, educational, or commercial. It's free.
+
+Use for hash table lookup, or anything where one collision in 2^^32 is
+acceptable. Do NOT use for cryptographic purposes.
+-------------------------------------------------------------------------------
+*/
+
+quint32 hashlittle( const void *key, size_t length, quint32 initval)
+{
+ quint32 a,b,c; /* internal state */
+ union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */
+
+ /* Set up the internal state */
+ a = b = c = 0xdeadbeef + ((quint32)length) + initval;
+
+ u.ptr = key;
+ if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
+ const quint32 *k = (const quint32 *)key; /* read 32-bit chunks */
+
+ /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += k[0];
+ b += k[1];
+ c += k[2];
+ mix(a,b,c);
+ length -= 12;
+ k += 3;
+ }
+
+ /*----------------------------- handle the last (probably partial) block */
+ /*
+ * "k[2]&0xffffff" actually reads beyond the end of the string, but
+ * then masks off the part it's not allowed to read. Because the
+ * string is aligned, the masked-off tail is in the same word as the
+ * rest of the string. Every machine with memory protection I've seen
+ * does it on word boundaries, so is OK with this. But VALGRIND will
+ * still catch it and complain. The masking trick does make the hash
+ * noticably faster for short strings (like English words).
+ */
+#ifndef VALGRIND
+
+ switch(length)
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break;
+ case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break;
+ case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break;
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=k[1]&0xffffff; a+=k[0]; break;
+ case 6 : b+=k[1]&0xffff; a+=k[0]; break;
+ case 5 : b+=k[1]&0xff; a+=k[0]; break;
+ case 4 : a+=k[0]; break;
+ case 3 : a+=k[0]&0xffffff; break;
+ case 2 : a+=k[0]&0xffff; break;
+ case 1 : a+=k[0]&0xff; break;
+ case 0 : return c; /* zero length strings require no mixing */
+ }
+
+#else /* make valgrind happy */
+
+ const quint8 *k8 = (const quint8 *)k;
+ switch(length)
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=((quint32)k8[10])<<16; /* fall through */
+ case 10: c+=((quint32)k8[9])<<8; /* fall through */
+ case 9 : c+=k8[8]; /* fall through */
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=((quint32)k8[6])<<16; /* fall through */
+ case 6 : b+=((quint32)k8[5])<<8; /* fall through */
+ case 5 : b+=k8[4]; /* fall through */
+ case 4 : a+=k[0]; break;
+ case 3 : a+=((quint32)k8[2])<<16; /* fall through */
+ case 2 : a+=((quint32)k8[1])<<8; /* fall through */
+ case 1 : a+=k8[0]; break;
+ case 0 : return c;
+ }
+
+#endif /* !valgrind */
+
+ } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) {
+ const quint16 *k = (const quint16 *)key; /* read 16-bit chunks */
+ const quint8 *k8;
+
+ /*--------------- all but last block: aligned reads and different mixing */
+ while (length > 12)
+ {
+ a += k[0] + (((quint32)k[1])<<16);
+ b += k[2] + (((quint32)k[3])<<16);
+ c += k[4] + (((quint32)k[5])<<16);
+ mix(a,b,c);
+ length -= 12;
+ k += 6;
+ }
+
+ /*----------------------------- handle the last (probably partial) block */
+ k8 = (const quint8 *)k;
+ switch(length)
+ {
+ case 12: c+=k[4]+(((quint32)k[5])<<16);
+ b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 11: c+=((quint32)k8[10])<<16; /* fall through */
+ case 10: c+=k[4];
+ b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 9 : c+=k8[8]; /* fall through */
+ case 8 : b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 7 : b+=((quint32)k8[6])<<16; /* fall through */
+ case 6 : b+=k[2];
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 5 : b+=k8[4]; /* fall through */
+ case 4 : a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 3 : a+=((quint32)k8[2])<<16; /* fall through */
+ case 2 : a+=k[0];
+ break;
+ case 1 : a+=k8[0];
+ break;
+ case 0 : return c; /* zero length requires no mixing */
+ }
+
+ } else { /* need to read the key one byte at a time */
+ const quint8 *k = (const quint8 *)key;
+
+ /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += k[0];
+ a += ((quint32)k[1])<<8;
+ a += ((quint32)k[2])<<16;
+ a += ((quint32)k[3])<<24;
+ b += k[4];
+ b += ((quint32)k[5])<<8;
+ b += ((quint32)k[6])<<16;
+ b += ((quint32)k[7])<<24;
+ c += k[8];
+ c += ((quint32)k[9])<<8;
+ c += ((quint32)k[10])<<16;
+ c += ((quint32)k[11])<<24;
+ mix(a,b,c);
+ length -= 12;
+ k += 12;
+ }
+
+ /*-------------------------------- last block: affect all 32 bits of (c) */
+ switch(length) /* all the case statements fall through */
+ {
+ case 12: c+=((quint32)k[11])<<24;
+ case 11: c+=((quint32)k[10])<<16;
+ case 10: c+=((quint32)k[9])<<8;
+ case 9 : c+=k[8];
+ case 8 : b+=((quint32)k[7])<<24;
+ case 7 : b+=((quint32)k[6])<<16;
+ case 6 : b+=((quint32)k[5])<<8;
+ case 5 : b+=k[4];
+ case 4 : a+=((quint32)k[3])<<24;
+ case 3 : a+=((quint32)k[2])<<16;
+ case 2 : a+=((quint32)k[1])<<8;
+ case 1 : a+=k[0];
+ break;
+ case 0 : return c;
+ }
+ }
+
+ final(a,b,c);
+ return c;
+}
+
+
+/*
+ * hashlittle2: return 2 32-bit hash values
+ *
+ * This is identical to hashlittle(), except it returns two 32-bit hash
+ * values instead of just one. This is good enough for hash table
+ * lookup with 2^^64 buckets, or if you want a second hash if you're not
+ * happy with the first, or if you want a probably-unique 64-bit ID for
+ * the key. *pc is better mixed than *pb, so use *pc first. If you want
+ * a 64-bit value do something like "*pc + (((uint64_t)*pb)<<32)".
+ */
+void hashlittle2(
+ const void *key, /* the key to hash */
+ size_t length, /* length of the key */
+ quint32 *pc, /* IN: primary initval, OUT: primary hash */
+ quint32 *pb) /* IN: secondary initval, OUT: secondary hash */
+{
+ quint32 a,b,c; /* internal state */
+ union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */
+
+ /* Set up the internal state */
+ a = b = c = 0xdeadbeef + ((quint32)length) + *pc;
+ c += *pb;
+
+ u.ptr = key;
+ if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
+ const quint32 *k = (const quint32 *)key; /* read 32-bit chunks */
+
+ /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += k[0];
+ b += k[1];
+ c += k[2];
+ mix(a,b,c);
+ length -= 12;
+ k += 3;
+ }
+
+ /*----------------------------- handle the last (probably partial) block */
+ /*
+ * "k[2]&0xffffff" actually reads beyond the end of the string, but
+ * then masks off the part it's not allowed to read. Because the
+ * string is aligned, the masked-off tail is in the same word as the
+ * rest of the string. Every machine with memory protection I've seen
+ * does it on word boundaries, so is OK with this. But VALGRIND will
+ * still catch it and complain. The masking trick does make the hash
+ * noticably faster for short strings (like English words).
+ */
+#ifndef VALGRIND
+
+ switch(length)
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break;
+ case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break;
+ case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break;
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=k[1]&0xffffff; a+=k[0]; break;
+ case 6 : b+=k[1]&0xffff; a+=k[0]; break;
+ case 5 : b+=k[1]&0xff; a+=k[0]; break;
+ case 4 : a+=k[0]; break;
+ case 3 : a+=k[0]&0xffffff; break;
+ case 2 : a+=k[0]&0xffff; break;
+ case 1 : a+=k[0]&0xff; break;
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
+ }
+
+#else /* make valgrind happy */
+
+ const quint8 *k8 = (const quint8 *)k;
+ switch(length)
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=((quint32)k8[10])<<16; /* fall through */
+ case 10: c+=((quint32)k8[9])<<8; /* fall through */
+ case 9 : c+=k8[8]; /* fall through */
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=((quint32)k8[6])<<16; /* fall through */
+ case 6 : b+=((quint32)k8[5])<<8; /* fall through */
+ case 5 : b+=k8[4]; /* fall through */
+ case 4 : a+=k[0]; break;
+ case 3 : a+=((quint32)k8[2])<<16; /* fall through */
+ case 2 : a+=((quint32)k8[1])<<8; /* fall through */
+ case 1 : a+=k8[0]; break;
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
+ }
+
+#endif /* !valgrind */
+
+ } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) {
+ const quint16 *k = (const quint16 *)key; /* read 16-bit chunks */
+ const quint8 *k8;
+
+ /*--------------- all but last block: aligned reads and different mixing */
+ while (length > 12)
+ {
+ a += k[0] + (((quint32)k[1])<<16);
+ b += k[2] + (((quint32)k[3])<<16);
+ c += k[4] + (((quint32)k[5])<<16);
+ mix(a,b,c);
+ length -= 12;
+ k += 6;
+ }
+
+ /*----------------------------- handle the last (probably partial) block */
+ k8 = (const quint8 *)k;
+ switch(length)
+ {
+ case 12: c+=k[4]+(((quint32)k[5])<<16);
+ b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 11: c+=((quint32)k8[10])<<16; /* fall through */
+ case 10: c+=k[4];
+ b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 9 : c+=k8[8]; /* fall through */
+ case 8 : b+=k[2]+(((quint32)k[3])<<16);
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 7 : b+=((quint32)k8[6])<<16; /* fall through */
+ case 6 : b+=k[2];
+ a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 5 : b+=k8[4]; /* fall through */
+ case 4 : a+=k[0]+(((quint32)k[1])<<16);
+ break;
+ case 3 : a+=((quint32)k8[2])<<16; /* fall through */
+ case 2 : a+=k[0];
+ break;
+ case 1 : a+=k8[0];
+ break;
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
+ }
+
+ } else { /* need to read the key one byte at a time */
+ const quint8 *k = (const quint8 *)key;
+
+ /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += k[0];
+ a += ((quint32)k[1])<<8;
+ a += ((quint32)k[2])<<16;
+ a += ((quint32)k[3])<<24;
+ b += k[4];
+ b += ((quint32)k[5])<<8;
+ b += ((quint32)k[6])<<16;
+ b += ((quint32)k[7])<<24;
+ c += k[8];
+ c += ((quint32)k[9])<<8;
+ c += ((quint32)k[10])<<16;
+ c += ((quint32)k[11])<<24;
+ mix(a,b,c);
+ length -= 12;
+ k += 12;
+ }
+
+ /*-------------------------------- last block: affect all 32 bits of (c) */
+ switch(length) /* all the case statements fall through */
+ {
+ case 12: c+=((quint32)k[11])<<24;
+ case 11: c+=((quint32)k[10])<<16;
+ case 10: c+=((quint32)k[9])<<8;
+ case 9 : c+=k[8];
+ case 8 : b+=((quint32)k[7])<<24;
+ case 7 : b+=((quint32)k[6])<<16;
+ case 6 : b+=((quint32)k[5])<<8;
+ case 5 : b+=k[4];
+ case 4 : a+=((quint32)k[3])<<24;
+ case 3 : a+=((quint32)k[2])<<16;
+ case 2 : a+=((quint32)k[1])<<8;
+ case 1 : a+=k[0];
+ break;
+ case 0 : *pc=c; *pb=b; return; /* zero length strings require no mixing */
+ }
+ }
+
+ final(a,b,c);
+ *pc=c; *pb=b;
+}
+
+
+
+/*
+ * hashbig():
+ * This is the same as hashword() on big-endian machines. It is different
+ * from hashlittle() on all machines. hashbig() takes advantage of
+ * big-endian byte ordering.
+ */
+quint32 hashbig( const void *key, size_t length, quint32 initval)
+{
+ quint32 a,b,c;
+ union { const void *ptr; size_t i; } u; /* to cast key to (size_t) happily */
+
+ /* Set up the internal state */
+ a = b = c = 0xdeadbeef + ((quint32)length) + initval;
+
+ u.ptr = key;
+ if (HASH_BIG_ENDIAN && ((u.i & 0x3) == 0)) {
+ const quint32 *k = (const quint32 *)key; /* read 32-bit chunks */
+
+ /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += k[0];
+ b += k[1];
+ c += k[2];
+ mix(a,b,c);
+ length -= 12;
+ k += 3;
+ }
+
+ /*----------------------------- handle the last (probably partial) block */
+ /*
+ * "k[2]<<8" actually reads beyond the end of the string, but
+ * then shifts out the part it's not allowed to read. Because the
+ * string is aligned, the illegal read is in the same word as the
+ * rest of the string. Every machine with memory protection I've seen
+ * does it on word boundaries, so is OK with this. But VALGRIND will
+ * still catch it and complain. The masking trick does make the hash
+ * noticably faster for short strings (like English words).
+ */
+#ifndef VALGRIND
+
+ switch(length)
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=k[2]&0xffffff00; b+=k[1]; a+=k[0]; break;
+ case 10: c+=k[2]&0xffff0000; b+=k[1]; a+=k[0]; break;
+ case 9 : c+=k[2]&0xff000000; b+=k[1]; a+=k[0]; break;
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=k[1]&0xffffff00; a+=k[0]; break;
+ case 6 : b+=k[1]&0xffff0000; a+=k[0]; break;
+ case 5 : b+=k[1]&0xff000000; a+=k[0]; break;
+ case 4 : a+=k[0]; break;
+ case 3 : a+=k[0]&0xffffff00; break;
+ case 2 : a+=k[0]&0xffff0000; break;
+ case 1 : a+=k[0]&0xff000000; break;
+ case 0 : return c; /* zero length strings require no mixing */
+ }
+
+#else /* make valgrind happy */
+
+ const quint8 *k8 = (const quint8 *)k;
+ switch(length) /* all the case statements fall through */
+ {
+ case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+ case 11: c+=((quint32)k8[10])<<8; /* fall through */
+ case 10: c+=((quint32)k8[9])<<16; /* fall through */
+ case 9 : c+=((quint32)k8[8])<<24; /* fall through */
+ case 8 : b+=k[1]; a+=k[0]; break;
+ case 7 : b+=((quint32)k8[6])<<8; /* fall through */
+ case 6 : b+=((quint32)k8[5])<<16; /* fall through */
+ case 5 : b+=((quint32)k8[4])<<24; /* fall through */
+ case 4 : a+=k[0]; break;
+ case 3 : a+=((quint32)k8[2])<<8; /* fall through */
+ case 2 : a+=((quint32)k8[1])<<16; /* fall through */
+ case 1 : a+=((quint32)k8[0])<<24; break;
+ case 0 : return c;
+ }
+
+#endif /* !VALGRIND */
+
+ } else { /* need to read the key one byte at a time */
+ const quint8 *k = (const quint8 *)key;
+
+ /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
+ while (length > 12)
+ {
+ a += ((quint32)k[0])<<24;
+ a += ((quint32)k[1])<<16;
+ a += ((quint32)k[2])<<8;
+ a += ((quint32)k[3]);
+ b += ((quint32)k[4])<<24;
+ b += ((quint32)k[5])<<16;
+ b += ((quint32)k[6])<<8;
+ b += ((quint32)k[7]);
+ c += ((quint32)k[8])<<24;
+ c += ((quint32)k[9])<<16;
+ c += ((quint32)k[10])<<8;
+ c += ((quint32)k[11]);
+ mix(a,b,c);
+ length -= 12;
+ k += 12;
+ }
+
+ /*-------------------------------- last block: affect all 32 bits of (c) */
+ switch(length) /* all the case statements fall through */
+ {
+ case 12: c+=k[11];
+ case 11: c+=((quint32)k[10])<<8;
+ case 10: c+=((quint32)k[9])<<16;
+ case 9 : c+=((quint32)k[8])<<24;
+ case 8 : b+=k[7];
+ case 7 : b+=((quint32)k[6])<<8;
+ case 6 : b+=((quint32)k[5])<<16;
+ case 5 : b+=((quint32)k[4])<<24;
+ case 4 : a+=k[3];
+ case 3 : a+=((quint32)k[2])<<8;
+ case 2 : a+=((quint32)k[1])<<16;
+ case 1 : a+=((quint32)k[0])<<24;
+ break;
+ case 0 : return c;
+ }
+ }
+
+ final(a,b,c);
+ return c;
+}
diff --git a/tests/arthur/common/paintcommands.cpp b/tests/arthur/common/paintcommands.cpp
index c4f09a4cf9..dc1b008e80 100644
--- a/tests/arthur/common/paintcommands.cpp
+++ b/tests/arthur/common/paintcommands.cpp
@@ -185,6 +185,7 @@ int PaintCommands::translateEnum(const char *table[], const QString &pattern, in
QList<PaintCommands::PaintCommandInfos> PaintCommands::s_commandInfoTable = QList<PaintCommands::PaintCommandInfos>();
QList<QPair<QString,QStringList> > PaintCommands::s_enumsTable = QList<QPair<QString,QStringList> >();
+QMultiHash<QString, int> PaintCommands::s_commandHash;
#define DECL_PAINTCOMMAND(identifier, method, regexp, syntax, sample) \
s_commandInfoTable << PaintCommandInfos(QLatin1String(identifier), &PaintCommands::method, QRegExp(regexp), \
@@ -627,6 +628,15 @@ void PaintCommands::staticInit()
"\n - where vertices 1 to 4 defines the source quad and 5 to 8 the destination quad",
"mapQuadToQuad 0.0 0.0 1.0 1.0 0.0 0.0 -1.0 -1.0");
+ // populate the command lookup hash
+ for (int i=0; i<s_commandInfoTable.size(); i++) {
+ if (s_commandInfoTable.at(i).isSectionHeader() ||
+ s_commandInfoTable.at(i).identifier == QLatin1String("comment") ||
+ s_commandInfoTable.at(i).identifier == QLatin1String("noop"))
+ continue;
+ s_commandHash.insert(s_commandInfoTable.at(i).identifier, i);
+ }
+
// populate the enums list
ADD_ENUMLIST("brush styles", brushStyleTable);
ADD_ENUMLIST("pen styles", penStyleTable);
@@ -686,12 +696,23 @@ void PaintCommands::insertAt(int commandIndex, const QStringList &newCommands)
**********************************************************************************/
void PaintCommands::runCommand(const QString &scriptLine)
{
- staticInit();
- foreach (PaintCommandInfos command, s_commandInfoTable)
- if (!command.isSectionHeader() && command.regExp.indexIn(scriptLine) >= 0) {
+ if (scriptLine.isEmpty()) {
+ command_noop(QRegExp());
+ return;
+ }
+ if (scriptLine.startsWith('#')) {
+ command_comment(QRegExp());
+ return;
+ }
+ QString firstWord = scriptLine.section(QRegExp("\\s"), 0, 0);
+ QList<int> indices = s_commandHash.values(firstWord);
+ foreach(int idx, indices) {
+ const PaintCommandInfos &command = s_commandInfoTable.at(idx);
+ if (command.regExp.indexIn(scriptLine) >= 0) {
(this->*(command.paintMethod))(command.regExp);
return;
}
+ }
qWarning("ERROR: unknown command or argument syntax error in \"%s\"", qPrintable(scriptLine));
}
@@ -1357,6 +1378,8 @@ void PaintCommands::command_qt3_drawArc(QRegExp re)
/***************************************************************************************************/
void PaintCommands::command_drawText(QRegExp re)
{
+ if (!m_shouldDrawText)
+ return;
QStringList caps = re.capturedTexts();
int x = convertToInt(caps.at(1));
int y = convertToInt(caps.at(2));
diff --git a/tests/arthur/common/paintcommands.h b/tests/arthur/common/paintcommands.h
index aed48404fa..ebd882b053 100644
--- a/tests/arthur/common/paintcommands.h
+++ b/tests/arthur/common/paintcommands.h
@@ -48,6 +48,7 @@
#include <qstringlist.h>
#include <qpixmap.h>
#include <qbrush.h>
+#include <qhash.h>
QT_FORWARD_DECLARE_CLASS(QPainter)
QT_FORWARD_DECLARE_CLASS(QRegExp)
@@ -89,6 +90,7 @@ public:
, m_verboseMode(false)
, m_type(WidgetType)
, m_checkers_background(true)
+ , m_shouldDrawText(true)
{ staticInit(); }
public:
@@ -114,6 +116,7 @@ public:
void setControlPoints(const QVector<QPointF> &points) { staticInit(); m_controlPoints = points; }
void setVerboseMode(bool v) { staticInit(); m_verboseMode = v; }
void insertAt(int commandIndex, const QStringList &newCommands);
+ void setShouldDrawText(bool drawText) { m_shouldDrawText = drawText; }
// run
void runCommands();
@@ -279,6 +282,7 @@ private:
bool m_verboseMode;
DeviceType m_type;
bool m_checkers_background;
+ bool m_shouldDrawText;
QVector<QPointF> m_controlPoints;
@@ -329,6 +333,7 @@ public:
static QList<PaintCommandInfos> s_commandInfoTable;
static QList<QPair<QString,QStringList> > s_enumsTable;
+ static QMultiHash<QString, int> s_commandHash;
};
#endif // PAINTCOMMANDS_H
diff --git a/tests/arthur/lance/lance.pro b/tests/arthur/lance/lance.pro
index 3692f21afa..56b7f25b81 100644
--- a/tests/arthur/lance/lance.pro
+++ b/tests/arthur/lance/lance.pro
@@ -13,7 +13,7 @@ contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, o
contains(QT_CONFIG, qt3support):QT += qt3support
symbian*: {
- testData.sources = $$QT_BUILD_TREE/tests/arthur/data/qps
+ testData.files = $$QT_BUILD_TREE/tests/arthur/data/qps
testData.path = .
DEPLOYMENT += testData
}
diff --git a/tests/auto/checkxmlfiles/checkxmlfiles.pro b/tests/auto/checkxmlfiles/checkxmlfiles.pro
index 319ba9be4e..ab932f51d2 100644
--- a/tests/auto/checkxmlfiles/checkxmlfiles.pro
+++ b/tests/auto/checkxmlfiles/checkxmlfiles.pro
@@ -8,7 +8,7 @@ include (../xmlpatterns.pri)
wince*|symbian: {
QT += network
-addFiles.sources = \
+addFiles.files = \
$$QT_SOURCE_TREE/examples/sql/masterdetail/albumdetails.xml \
$$QT_SOURCE_TREE/examples/xmlpatterns/xquery/globalVariables/globals.gccxml \
$$QT_SOURCE_TREE/doc/src/diagrams/stylesheet/treeview.svg \
diff --git a/tests/auto/collections/collections.pro b/tests/auto/collections/collections.pro
index 876e9034c4..8601ff877d 100644
--- a/tests/auto/collections/collections.pro
+++ b/tests/auto/collections/collections.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_collections.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/collections/tst_collections.cpp b/tests/auto/collections/tst_collections.cpp
index 82ec0fa07d..8a0ca3eca2 100644
--- a/tests/auto/collections/tst_collections.cpp
+++ b/tests/auto/collections/tst_collections.cpp
@@ -166,6 +166,9 @@ private slots:
void forwardDeclared();
void alignment();
void QTBUG13079_collectionInsideCollection();
+
+ void foreach_2();
+ void insert_remove_loop();
};
struct LargeStatic {
@@ -3707,5 +3710,214 @@ void tst_Collections::QTBUG13079_collectionInsideCollection()
#endif
}
+template<class Container> void foreach_test_arrays(const Container &container)
+{
+ typedef typename Container::value_type T;
+ int i = 0;
+ QSet <T> set;
+ foreach(const T & val, container) {
+ QVERIFY( val == container[i] );
+ set << val;
+ i++;
+ }
+ QCOMPARE(set.count(), container.count());
+
+ //modify the container while iterating.
+ Container c2 = container;
+ Container c3;
+ i = 0;
+ foreach (T val, c2) {
+ c3 << val;
+ c2.insert((i * 89) % c2.size(), T() );
+ QVERIFY( val == container.at(i) );
+ val = T();
+ i++;
+ }
+ QVERIFY(c3 == container);
+}
+
+
+void tst_Collections::foreach_2()
+{
+ QStringList strlist = QString::fromLatin1("a,b,c,d,e,f,g,h,ih,kl,mn,op,qr,st,uvw,xyz").split(",");
+ foreach_test_arrays(strlist);
+ foreach_test_arrays(QList<QString>(strlist));
+ foreach_test_arrays(strlist.toVector());
+
+ QList<int> intlist;
+ intlist << 1 << 2 << 3 << 4 <<5 << 6 << 7 << 8 << 9;
+ foreach_test_arrays(intlist);
+ foreach_test_arrays(intlist.toVector());
+
+ QVarLengthArray<int> varl1;
+ QVarLengthArray<int, 3> varl2;
+ QVarLengthArray<int, 10> varl3;
+ foreach(int i, intlist) {
+ varl1 << i;
+ varl2 << i;
+ varl3 << i;
+ }
+ QCOMPARE(varl1.count(), intlist.count());
+ QCOMPARE(varl2.count(), intlist.count());
+ QCOMPARE(varl3.count(), intlist.count());
+ foreach_test_arrays(varl1);
+ foreach_test_arrays(varl2);
+ foreach_test_arrays(varl3);
+
+ QVarLengthArray<QString> varl4;
+ QVarLengthArray<QString, 3> varl5;
+ QVarLengthArray<QString, 18> varl6;
+ foreach(const QString &str, strlist) {
+ varl4 << str;
+ varl5 << str;
+ varl6 << str;
+ }
+ QCOMPARE(varl4.count(), strlist.count());
+ QCOMPARE(varl5.count(), strlist.count());
+ QCOMPARE(varl6.count(), strlist.count());
+ foreach_test_arrays(varl4);
+ foreach_test_arrays(varl5);
+ foreach_test_arrays(varl6);
+}
+
+struct IntOrString
+{
+ int val;
+ IntOrString(int v) : val(v) { }
+ IntOrString(const QString &v) : val(v.toInt()) { }
+ operator int() { return val; }
+ operator QString() { return QString::number(val); }
+#ifndef QT_NO_STL
+ operator std::string() { return QString::number(val).toStdString(); }
+ IntOrString(const std::string &v) : val(QString::fromStdString(v).toInt()) { }
+#endif
+};
+
+template<class Container> void insert_remove_loop_impl()
+{
+ typedef typename Container::value_type T;
+ Container t;
+ t.append(T(IntOrString(1)));
+ t << (T(IntOrString(2)));
+ t += (T(IntOrString(3)));
+ t.prepend(T(IntOrString(4)));
+ t.insert(2, 3 , T(IntOrString(5)));
+ t.insert(4, T(IntOrString(6)));
+ t.insert(t.begin() + 2, T(IntOrString(7)));
+ t.insert(t.begin() + 5, 3, T(IntOrString(8)));
+ int expect1[] = { 4 , 1 , 7, 5 , 5 , 8, 8, 8, 6, 5, 2 , 3 };
+ QCOMPARE(size_t(t.count()), sizeof(expect1)/sizeof(int));
+ for (int i = 0; i < t.count(); i++) {
+ QCOMPARE(t[i], T(IntOrString(expect1[i])));
+ }
+
+ Container compare_test1 = t;
+ t.replace(5, T(IntOrString(9)));
+ Container compare_test2 = t;
+ QVERIFY(!(compare_test1 == t));
+ QVERIFY( (compare_test1 != t));
+ QVERIFY( (compare_test2 == t));
+ QVERIFY(!(compare_test2 != t));
+ t.remove(7);
+ t.remove(2, 3);
+ int expect2[] = { 4 , 1 , 9, 8, 6, 5, 2 , 3 };
+ QCOMPARE(size_t(t.count()), sizeof(expect2)/sizeof(int));
+ for (int i = 0; i < t.count(); i++) {
+ QCOMPARE(t[i], T(IntOrString(expect2[i])));
+ }
+
+ for (typename Container::iterator it = t.begin(); it != t.end(); ) {
+ if ( int(IntOrString(*it)) % 2 )
+ ++it;
+ else
+ it = t.erase(it);
+ }
+
+ int expect3[] = { 1 , 9, 5, 3 };
+ QCOMPARE(size_t(t.count()), sizeof(expect3)/sizeof(int));
+ for (int i = 0; i < t.count(); i++) {
+ QCOMPARE(t[i], T(IntOrString(expect3[i])));
+ }
+
+ t.erase(t.begin() + 1, t.end() - 1);
+
+ int expect4[] = { 1 , 3 };
+ QCOMPARE(size_t(t.count()), sizeof(expect4)/sizeof(int));
+ for (int i = 0; i < t.count(); i++) {
+ QCOMPARE(t[i], T(IntOrString(expect4[i])));
+ }
+
+ t << T(IntOrString(10)) << T(IntOrString(11)) << T(IntOrString(12)) << T(IntOrString(13));
+ t << T(IntOrString(14)) << T(IntOrString(15)) << T(IntOrString(16)) << T(IntOrString(17));
+ t << T(IntOrString(18)) << T(IntOrString(19)) << T(IntOrString(20)) << T(IntOrString(21));
+ for (typename Container::iterator it = t.begin(); it != t.end(); ++it) {
+ int iv = int(IntOrString(*it));
+ if ( iv % 2 ) {
+ it = t.insert(it, T(IntOrString(iv * iv)));
+ it = t.insert(it + 2, T(IntOrString(iv * iv + 1)));
+ }
+ }
+
+ int expect5[] = { 1, 1, 2, 3*3, 3, 3*3+1, 10, 11*11, 11, 11*11+1, 12 , 13*13, 13, 13*13+1, 14,
+ 15*15, 15, 15*15+1, 16 , 17*17, 17, 17*17+1 ,18 , 19*19, 19, 19*19+1, 20, 21*21, 21, 21*21+1 };
+ QCOMPARE(size_t(t.count()), sizeof(expect5)/sizeof(int));
+ for (int i = 0; i < t.count(); i++) {
+ QCOMPARE(t[i], T(IntOrString(expect5[i])));
+ }
+}
+
+
+//Add insert(int, int, T) so it has the same interface as QVector and QVarLengthArray for the test.
+template<typename T>
+struct ExtList : QList<T> {
+ using QList<T>::insert;
+ void insert(int before, int n, const T&x) {
+ while (n--) {
+ this->insert(before, x );
+ }
+ }
+ void insert(typename QList<T>::iterator before, int n, const T&x) {
+ while (n--) {
+ before = this->insert(before, x);
+ }
+ }
+
+ void remove(int i) {
+ this->removeAt(i);
+ }
+ void remove(int i, int n) {
+ while (n--) {
+ this->removeAt(i);
+ }
+ }
+};
+
+void tst_Collections::insert_remove_loop()
+{
+ insert_remove_loop_impl<ExtList<int> >();
+ insert_remove_loop_impl<ExtList<QString> >();
+ insert_remove_loop_impl<QVector<int> >();
+ insert_remove_loop_impl<QVector<QString> >();
+ insert_remove_loop_impl<QVarLengthArray<int> >();
+ insert_remove_loop_impl<QVarLengthArray<QString> >();
+ insert_remove_loop_impl<QVarLengthArray<int, 10> >();
+ insert_remove_loop_impl<QVarLengthArray<QString, 10> >();
+ insert_remove_loop_impl<QVarLengthArray<int, 3> >();
+ insert_remove_loop_impl<QVarLengthArray<QString, 3> >();
+ insert_remove_loop_impl<QVarLengthArray<int, 15> >();
+ insert_remove_loop_impl<QVarLengthArray<QString, 15> >();
+
+#ifndef QT_NO_STL
+ insert_remove_loop_impl<ExtList<std::string> >();
+ insert_remove_loop_impl<QVector<std::string> >();
+ insert_remove_loop_impl<QVarLengthArray<std::string> >();
+ insert_remove_loop_impl<QVarLengthArray<std::string, 10> >();
+ insert_remove_loop_impl<QVarLengthArray<std::string, 3> >();
+ insert_remove_loop_impl<QVarLengthArray<std::string, 15> >();
+#endif
+}
+
+
+
QTEST_APPLESS_MAIN(tst_Collections)
#include "tst_collections.moc"
diff --git a/tests/auto/declarative/examples/examples.pro b/tests/auto/declarative/examples/examples.pro
index 1a0dc55799..97f02af968 100644
--- a/tests/auto/declarative/examples/examples.pro
+++ b/tests/auto/declarative/examples/examples.pro
@@ -7,7 +7,7 @@ SOURCES += tst_examples.cpp
include(../../../../tools/qml/qml.pri)
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
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/moduleqt47/moduleqt47.pro b/tests/auto/declarative/moduleqt47/moduleqt47.pro
index 711e24ce2c..ff773e8f86 100644
--- a/tests/auto/declarative/moduleqt47/moduleqt47.pro
+++ b/tests/auto/declarative/moduleqt47/moduleqt47.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_moduleqt47.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/parserstress/parserstress.pro b/tests/auto/declarative/parserstress/parserstress.pro
index 17f297b236..6ef2432b5b 100644
--- a/tests/auto/declarative/parserstress/parserstress.pro
+++ b/tests/auto/declarative/parserstress/parserstress.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_parserstress.cpp
symbian: {
- importFiles.sources = ..\\..\\qscriptjstestsuite\\tests
+ importFiles.files = ..\\..\\qscriptjstestsuite\\tests
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro b/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro
index 62950792ff..f09e8d9fe2 100644
--- a/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro
+++ b/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qdeclarativeanchors.cpp
macx:CONFIG -= app_bundle
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro b/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro
index 8c2259ab69..3d040a67ab 100644
--- a/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro
+++ b/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro
@@ -5,7 +5,7 @@ SOURCES += tst_qdeclarativeanimatedimage.cpp ../shared/testhttpserver.cpp
macx:CONFIG -= app_bundle
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro b/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro
index 578f37b938..d00d51a6e0 100644
--- a/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro
+++ b/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qdeclarativeanimations.cpp
macx:CONFIG -= app_bundle
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml b/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml
index 9fca5c361b..56ac216c5a 100644
--- a/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml
+++ b/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml
@@ -7,9 +7,9 @@ Rectangle {
objectName: "MyRect"
width: 100; height: 100; color: "green"
Behavior on x {
+ id: myBehavior
objectName: "MyBehavior"
NumberAnimation {id: na1; duration: 200 }
- NumberAnimation {id: na2; duration: 1000 }
}
}
MouseArea {
@@ -24,4 +24,9 @@ Rectangle {
x: 200
}
}
+
+ NumberAnimation {id: na2; duration: 1000 }
+ Component.onCompleted: {
+ myBehavior.animation = na2;
+ }
}
diff --git a/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro b/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro
index 7ba3a7df14..74168273fd 100644
--- a/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro
+++ b/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qdeclarativebehaviors.cpp
macx:CONFIG -= app_bundle
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro b/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro
index 0cdaada98c..fe12635657 100644
--- a/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro
+++ b/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativebinding.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro b/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro
index 0e41c13622..a7463e894a 100644
--- a/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro
+++ b/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro
@@ -6,7 +6,7 @@ HEADERS += ../shared/testhttpserver.h
SOURCES += tst_qdeclarativeborderimage.cpp ../shared/testhttpserver.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro b/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro
index 33d81bae60..6f9550d34f 100644
--- a/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro
+++ b/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeconnection.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
index e6a81b8433..45bb10e2a5 100644
--- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
+++ b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
@@ -59,6 +59,7 @@
#include <private/qdeclarativerectangle_p.h>
#include <private/qdeclarativemetatype_p.h>
#include <private/qdeclarativeproperty_p.h>
+#include <private/qdeclarativedebughelper_p.h>
#include "../../../shared/util.h"
#include "../shared/debugutil_p.h"
@@ -112,6 +113,7 @@ private slots:
void tst_QDeclarativeDebugContextReference();
void tst_QDeclarativeDebugPropertyReference();
+ void setBindingForObject();
void setMethodBody();
};
@@ -278,8 +280,10 @@ void tst_QDeclarativeDebug::initTestCase()
{
qRegisterMetaType<QDeclarativeDebugWatch::State>();
- QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3768...");
+ QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!");
+ QDeclarativeDebugHelper::enableDebugging();
+ QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3768...");
m_engine = new QDeclarativeEngine(this);
QList<QByteArray> qml;
@@ -894,6 +898,78 @@ void tst_QDeclarativeDebug::tst_QDeclarativeDebugPropertyReference()
compareProperties(r, ref);
}
+
+void tst_QDeclarativeDebug::setBindingForObject()
+{
+ QDeclarativeDebugObjectReference rootObject = findRootObject();
+ QVERIFY(rootObject.debugId() != -1);
+ QDeclarativeDebugPropertyReference widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ QCOMPARE(widthPropertyRef.value(), QVariant(10));
+ QCOMPARE(widthPropertyRef.binding(), QString());
+
+ //
+ // set literal
+ //
+ m_dbg->setBindingForObject(rootObject.debugId(), "width", "15", true);
+
+ rootObject = findRootObject();
+ widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ QCOMPARE(widthPropertyRef.value(), QVariant(15));
+ QCOMPARE(widthPropertyRef.binding(), QString());
+
+ //
+ // set expression
+ //
+ m_dbg->setBindingForObject(rootObject.debugId(), "width", "height", false);
+
+ rootObject = findRootObject();
+ widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ QCOMPARE(widthPropertyRef.value(), QVariant(20));
+ QCOMPARE(widthPropertyRef.binding(), QString("height"));
+
+ //
+ // reset
+ //
+ m_dbg->resetBindingForObject(rootObject.debugId(), "width");
+
+ rootObject = findRootObject();
+ widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ // QCOMPARE(widthPropertyRef.value(), QVariant(0)); // TODO: Shouldn't this work?
+ QCOMPARE(widthPropertyRef.binding(), QString());
+
+ //
+ // set handler
+ //
+ rootObject = findRootObject();
+ QCOMPARE(rootObject.children().size(), 3);
+ QDeclarativeDebugObjectReference mouseAreaObject = rootObject.children().at(2);
+ QDeclarativeDebugObjectQuery *q_obj = m_dbg->queryObjectRecursive(mouseAreaObject, this);
+ waitForQuery(q_obj);
+ mouseAreaObject = q_obj->object();
+
+ QCOMPARE(mouseAreaObject.className(), QString("MouseArea"));
+
+ QDeclarativeDebugPropertyReference onEnteredRef = findProperty(mouseAreaObject.properties(), "onEntered");
+
+ QCOMPARE(onEnteredRef.name(), QString("onEntered"));
+ QCOMPARE(onEnteredRef.value(), QVariant("{ console.log('hello') }"));
+
+ m_dbg->setBindingForObject(mouseAreaObject.debugId(), "onEntered", "{console.log('hello, world') }", false) ;
+
+ rootObject = findRootObject();
+ mouseAreaObject = rootObject.children().at(2);
+ q_obj = m_dbg->queryObjectRecursive(mouseAreaObject, this);
+ waitForQuery(q_obj);
+ mouseAreaObject = q_obj->object();
+ onEnteredRef = findProperty(mouseAreaObject.properties(), "onEntered");
+ QCOMPARE(onEnteredRef.name(), QString("onEntered"));
+ QCOMPARE(onEnteredRef.value(), QVariant("{console.log('hello, world') }"));
+}
+
int main(int argc, char *argv[])
{
int _argc = argc + 1;
diff --git a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp
index 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/qdeclarativedom/qdeclarativedom.pro b/tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro
index 1866a437eb..8ac69aac67 100644
--- a/tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro
+++ b/tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativedom.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
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/objectName.qml b/tests/auto/declarative/qdeclarativeecmascript/data/objectName.qml
new file mode 100644
index 0000000000..ca8c90d818
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/objectName.qml
@@ -0,0 +1,8 @@
+import QtQuick 1.0
+
+QtObject {
+ objectName: "hello"
+
+ property string test1: objectName
+ property string test2: objectName.substr(1, 3)
+}
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/qdeclarativeecmascript.pro b/tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro
index 2eb333a349..69d25a4292 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro
+++ b/tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro
@@ -13,7 +13,7 @@ INCLUDEPATH += ../shared
# LIBS += -lgcov
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
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 4feb6308ce..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();
@@ -162,6 +163,7 @@ private slots:
void deleteLater();
void in();
void sharedAttachedObject();
+ void objectName();
void include();
@@ -731,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);
+ }
}
/*
@@ -801,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);
}
@@ -1549,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);
@@ -1708,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);
@@ -1716,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);
@@ -1730,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));
}
@@ -2174,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()
@@ -2594,6 +2653,24 @@ void tst_qdeclarativeecmascript::sharedAttachedObject()
delete o;
}
+// QTBUG-13999
+void tst_qdeclarativeecmascript::objectName()
+{
+ QDeclarativeComponent component(&engine, TEST_FILE("objectName.qml"));
+ QObject *o = component.create();
+ QVERIFY(o != 0);
+
+ QCOMPARE(o->property("test1").toString(), QString("hello"));
+ QCOMPARE(o->property("test2").toString(), QString("ell"));
+
+ o->setObjectName("world");
+
+ QCOMPARE(o->property("test1").toString(), QString("world"));
+ QCOMPARE(o->property("test2").toString(), QString("orl"));
+
+ delete o;
+}
+
QTEST_MAIN(tst_qdeclarativeecmascript)
#include "tst_qdeclarativeecmascript.moc"
diff --git a/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro b/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro
index 3f8b5e9818..c176e072e0 100644
--- a/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro
+++ b/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeflickable.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro b/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro
index cb42418bed..3b6d19a624 100644
--- a/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro
+++ b/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeflipable.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativefocusscope/data/qtBug13380.qml b/tests/auto/declarative/qdeclarativefocusscope/data/qtBug13380.qml
new file mode 100644
index 0000000000..1784202e77
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativefocusscope/data/qtBug13380.qml
@@ -0,0 +1,24 @@
+import QtQuick 1.0
+
+Rectangle {
+ width: 400; height: 400
+
+ property bool showRect: false
+ onShowRectChanged: if (showRect) rect.visible = true
+ property bool noFocus: !fs2.activeFocus
+
+ FocusScope {
+ id: fs1
+ focus: true
+ }
+ Rectangle {
+ id: rect
+ visible: false
+ FocusScope {
+ id: fs2
+ Rectangle {
+ focus: true
+ }
+ }
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro b/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro
index 3724a78c00..eab983ffe4 100644
--- a/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro
+++ b/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qdeclarativefocusscope.cpp
macx:CONFIG -= app_bundle
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp b/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp
index ec8f0485e2..1645dac9f4 100644
--- a/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp
+++ b/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp
@@ -70,6 +70,7 @@ private slots:
void forceFocus();
void noParentFocus();
void signalEmission();
+ void qtBug13380();
};
/*
@@ -397,6 +398,37 @@ 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;
+}
+
+void tst_qdeclarativefocusscope::qtBug13380()
+{
+ QDeclarativeView *view = new QDeclarativeView;
+ view->setSource(QUrl::fromLocalFile(SRCDIR "/data/qtBug13380.qml"));
+
+ view->show();
+ QVERIFY(view->rootObject());
+ qApp->setActiveWindow(view);
+ qApp->processEvents();
+
+#ifdef Q_WS_X11
+ // to be safe and avoid failing setFocus with window managers
+ qt_x11_wait_for_window_manager(view);
+#endif
+
+ QVERIFY(view->hasFocus());
+ QVERIFY(view->scene()->hasFocus());
+ QVERIFY(view->rootObject()->property("noFocus").toBool());
+
+ view->rootObject()->setProperty("showRect", true);
+ QVERIFY(view->rootObject()->property("noFocus").toBool());
+
delete view;
}
diff --git a/tests/auto/declarative/qdeclarativefolderlistmodel/qdeclarativefolderlistmodel.pro b/tests/auto/declarative/qdeclarativefolderlistmodel/qdeclarativefolderlistmodel.pro
index 3299786ec3..b7e5e5fcc8 100644
--- a/tests/auto/declarative/qdeclarativefolderlistmodel/qdeclarativefolderlistmodel.pro
+++ b/tests/auto/declarative/qdeclarativefolderlistmodel/qdeclarativefolderlistmodel.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativefolderlistmodel.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro b/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro
index fbd2550a9d..357268b286 100644
--- a/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro
+++ b/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro
@@ -6,7 +6,7 @@ HEADERS += ../shared/testhttpserver.h
SOURCES += tst_qdeclarativefontloader.cpp ../shared/testhttpserver.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
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/data/header.qml b/tests/auto/declarative/qdeclarativegridview/data/header.qml
new file mode 100644
index 0000000000..99baacd85d
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativegridview/data/header.qml
@@ -0,0 +1,32 @@
+import QtQuick 1.0
+
+Rectangle {
+ width: 240
+ height: 320
+ color: "#ffffff"
+ Component {
+ id: myDelegate
+ Rectangle {
+ id: wrapper
+ objectName: "wrapper"
+ width: 80
+ height: 60
+ border.color: "blue"
+ Text {
+ text: index
+ }
+ color: GridView.isCurrentItem ? "lightsteelblue" : "white"
+ }
+ }
+ GridView {
+ id: grid
+ objectName: "grid"
+ width: 240
+ height: 320
+ cellWidth: 80
+ cellHeight: 60
+ model: testModel
+ delegate: myDelegate
+ header: Text { objectName: "header"; text: "Header"; height: 30 }
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro b/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro
index 4ea1e47677..bc196fb50e 100644
--- a/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro
+++ b/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativegridview.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp
index 975cf8f612..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();
@@ -82,6 +83,7 @@ private slots:
void QTBUG_8456();
void manualHighlight();
void footer();
+ void header();
private:
QDeclarativeView *createView();
@@ -695,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();
@@ -1214,6 +1258,40 @@ void tst_QDeclarativeGridView::footer()
QTRY_COMPARE(footer->y(), 0.0);
}
+void tst_QDeclarativeGridView::header()
+{
+ QDeclarativeView *canvas = createView();
+
+ TestModel model;
+ for (int i = 0; i < 7; i++)
+ model.addItem("Item" + QString::number(i), "");
+
+ QDeclarativeContext *ctxt = canvas->rootContext();
+ ctxt->setContextProperty("testModel", &model);
+
+ canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/header.qml"));
+ qApp->processEvents();
+
+ QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid");
+ QTRY_VERIFY(gridview != 0);
+
+ QDeclarativeItem *contentItem = gridview->contentItem();
+ QTRY_VERIFY(contentItem != 0);
+
+ QDeclarativeText *header = findItem<QDeclarativeText>(contentItem, "header");
+ QVERIFY(header);
+
+ QCOMPARE(header->y(), 0.0);
+ QCOMPARE(gridview->contentY(), 0.0);
+
+ QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", 0);
+ QVERIFY(item);
+ QCOMPARE(item->y(), 30.0);
+
+ model.clear();
+ QTRY_COMPARE(header->y(), 0.0);
+}
+
QDeclarativeView *tst_QDeclarativeGridView::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/qdeclarativeimage.pro b/tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro
index e5db298f39..a22c8b5378 100644
--- a/tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro
+++ b/tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro
@@ -6,7 +6,7 @@ HEADERS += ../shared/testhttpserver.h
SOURCES += tst_qdeclarativeimage.cpp ../shared/testhttpserver.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
index 8f9b2eae8e..bf779adec0 100644
--- a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
+++ b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
@@ -80,10 +80,13 @@ private slots:
void preserveAspectRatio();
void smooth();
void svg();
+ void geometry();
+ void geometry_data();
void big();
void tiling_QTBUG_6716();
void noLoading();
void paintedWidthHeight();
+ void sourceSize_QTBUG_14303();
private:
template<typename T>
@@ -287,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
@@ -377,7 +452,7 @@ void tst_qdeclarativeimage::noLoading()
QTRY_COMPARE(statusSpy.count(), 0);
// Loading remote file
- ctxt->setContextProperty("srcImage", QString(SERVER_ADDR) + "/oldcolors.png");
+ ctxt->setContextProperty("srcImage", QString(SERVER_ADDR) + "/heart200.png");
QTRY_VERIFY(obj->status() == QDeclarativeImage::Loading);
QTRY_VERIFY(obj->progress() == 0.0);
QTRY_VERIFY(obj->status() == QDeclarativeImage::Ready);
@@ -388,7 +463,7 @@ void tst_qdeclarativeimage::noLoading()
// Loading remote file again - should not go through 'Loading' state.
ctxt->setContextProperty("srcImage", QUrl::fromLocalFile(SRCDIR "/data/colors.png"));
- ctxt->setContextProperty("srcImage", QString(SERVER_ADDR) + "/oldcolors.png");
+ ctxt->setContextProperty("srcImage", QString(SERVER_ADDR) + "/heart200.png");
QTRY_VERIFY(obj->status() == QDeclarativeImage::Ready);
QTRY_VERIFY(obj->progress() == 1.0);
QTRY_COMPARE(sourceSpy.count(), 4);
@@ -436,6 +511,35 @@ void tst_qdeclarativeimage::paintedWidthHeight()
}
}
+void tst_qdeclarativeimage::sourceSize_QTBUG_14303()
+{
+ QString componentStr = "import QtQuick 1.0\nImage { source: srcImage }";
+ QDeclarativeContext *ctxt = engine.rootContext();
+ ctxt->setContextProperty("srcImage", QUrl::fromLocalFile(SRCDIR "/data/heart200.png"));
+ QDeclarativeComponent component(&engine);
+ component.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
+ QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create());
+
+ QSignalSpy sourceSizeSpy(obj, SIGNAL(sourceSizeChanged()));
+
+ QTRY_VERIFY(obj != 0);
+ QTRY_VERIFY(obj->status() == QDeclarativeImage::Ready);
+
+ QTRY_COMPARE(obj->sourceSize().width(), 200);
+ QTRY_COMPARE(obj->sourceSize().height(), 200);
+ QTRY_COMPARE(sourceSizeSpy.count(), 0);
+
+ ctxt->setContextProperty("srcImage", QUrl::fromLocalFile(SRCDIR "/data/colors.png"));
+ QTRY_COMPARE(obj->sourceSize().width(), 120);
+ QTRY_COMPARE(obj->sourceSize().height(), 120);
+ QTRY_COMPARE(sourceSizeSpy.count(), 1);
+
+ ctxt->setContextProperty("srcImage", QUrl::fromLocalFile(SRCDIR "/data/heart200.png"));
+ QTRY_COMPARE(obj->sourceSize().width(), 200);
+ QTRY_COMPARE(obj->sourceSize().height(), 200);
+ QTRY_COMPARE(sourceSizeSpy.count(), 2);
+}
+
/*
Find an item with the specified objectName. If index is supplied then the
item must also evaluate the {index} expression equal to index
diff --git a/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro b/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro
index 188ea23335..423390f13f 100644
--- a/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro
+++ b/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeinfo.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeitem/data/keystest.qml b/tests/auto/declarative/qdeclarativeitem/data/keystest.qml
index 3927f42231..9af6e9fb43 100644
--- a/tests/auto/declarative/qdeclarativeitem/data/keystest.qml
+++ b/tests/auto/declarative/qdeclarativeitem/data/keystest.qml
@@ -17,6 +17,7 @@ Item {
Item {
id: item2
+ visible: forwardeeVisible
Keys.onPressed: keysTestObject.forwardedKey(event.key)
Keys.onReleased: keysTestObject.forwardedKey(event.key)
}
diff --git a/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro b/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro
index 26bd6247f0..d8007a092f 100644
--- a/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro
+++ b/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeitem.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
index bbbf73ecf8..711bf00643 100644
--- a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
+++ b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
@@ -204,6 +204,7 @@ void tst_QDeclarativeItem::keys()
canvas->rootContext()->setContextProperty("keysTestObject", testObject);
canvas->rootContext()->setContextProperty("enableKeyHanding", QVariant(true));
+ canvas->rootContext()->setContextProperty("forwardeeVisible", QVariant(true));
canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/keystest.qml"));
canvas->show();
@@ -287,6 +288,17 @@ void tst_QDeclarativeItem::keys()
testObject->reset();
+ canvas->rootContext()->setContextProperty("forwardeeVisible", QVariant(false));
+ key = QKeyEvent(QEvent::KeyPress, Qt::Key_A, Qt::NoModifier, "A", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QCOMPARE(testObject->mKey, int(Qt::Key_A));
+ QCOMPARE(testObject->mForwardedKey, 0);
+ QCOMPARE(testObject->mText, QLatin1String("A"));
+ QVERIFY(testObject->mModifiers == Qt::NoModifier);
+ QVERIFY(!key.isAccepted());
+
+ testObject->reset();
+
canvas->rootContext()->setContextProperty("enableKeyHanding", QVariant(false));
QCOMPARE(canvas->rootObject()->property("isEnabled").toBool(), false);
@@ -674,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);
@@ -719,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/alias.10.qml b/tests/auto/declarative/qdeclarativelanguage/data/alias.10.qml
new file mode 100644
index 0000000000..bf6352e82b
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/alias.10.qml
@@ -0,0 +1,8 @@
+import Test 1.0
+
+MyTypeObject {
+ id: root
+ property alias valueAlias: root.rectProperty
+
+ rectProperty: "10,11,9x8"
+}
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/alias.11.qml b/tests/auto/declarative/qdeclarativelanguage/data/alias.11.qml
new file mode 100644
index 0000000000..fbd50d9dc9
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/alias.11.qml
@@ -0,0 +1,8 @@
+import Test 1.0
+
+MyTypeObject {
+ id: root
+
+ property alias aliasProperty: root.rectProperty.x
+ rectProperty: "19,13,100x120"
+}
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/importIncorrectCase.qml b/tests/auto/declarative/qdeclarativelanguage/data/importIncorrectCase.qml
new file mode 100644
index 0000000000..247f527fed
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/importIncorrectCase.qml
@@ -0,0 +1,5 @@
+import QtQuick 1.0
+import com.Nokia.installedtest 1.0
+
+QtObject {
+}
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.errors.insensitive.txt b/tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.errors.insensitive.txt
new file mode 100644
index 0000000000..3813680562
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.errors.insensitive.txt
@@ -0,0 +1,2 @@
+3:1:Type IncorrectCaseType unavailable
+-1:-1:File name case mismatch
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.errors.sensitive.txt b/tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.errors.sensitive.txt
new file mode 100644
index 0000000000..abed1a73f5
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.errors.sensitive.txt
@@ -0,0 +1 @@
+3:1:IncorrectCaseType is not a type
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.qml b/tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.qml
new file mode 100644
index 0000000000..d11000be78
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/incorrectCase.qml
@@ -0,0 +1,4 @@
+import QtQuick 1.0
+
+IncorrectCaseType {
+}
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/incorrectCaseType.qml b/tests/auto/declarative/qdeclarativelanguage/data/incorrectCaseType.qml
new file mode 100644
index 0000000000..cf32b45687
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/incorrectCaseType.qml
@@ -0,0 +1,4 @@
+import QtQuick 1.0
+
+QtObject {
+}
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/data/invalidAlias.10.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.10.errors.txt
new file mode 100644
index 0000000000..93652a7042
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.10.errors.txt
@@ -0,0 +1 @@
+5:23:Invalid alias location
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.10.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.10.qml
new file mode 100644
index 0000000000..3ff7b16fd8
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.10.qml
@@ -0,0 +1,6 @@
+import Test 1.0
+
+MyTypeObject {
+ id: root
+ property alias a: root.rectProperty.blah
+}
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.3.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.3.errors.txt
index 7260be488c..fbf1b580e2 100644
--- a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.3.errors.txt
+++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.3.errors.txt
@@ -1 +1 @@
-5:23:Invalid alias reference. An alias reference must be specified as <id> or <id>.<property>
+5:23:Invalid alias reference. An alias reference must be specified as <id>, <id>.<property> or <id>.<value property>.<property>
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.3.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.3.qml
index cc717530bc..a363373734 100644
--- a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.3.qml
+++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.3.qml
@@ -2,5 +2,5 @@ import Test 1.0
MyTypeObject {
id: root
- property alias a: root.rectProperty.x
+ property alias a: root.rectProperty.x.y
}
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.4.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.4.errors.txt
index 7260be488c..fbf1b580e2 100644
--- a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.4.errors.txt
+++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.4.errors.txt
@@ -1 +1 @@
-5:23:Invalid alias reference. An alias reference must be specified as <id> or <id>.<property>
+5:23:Invalid alias reference. An alias reference must be specified as <id>, <id>.<property> or <id>.<value property>.<property>
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.8.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.8.errors.txt
new file mode 100644
index 0000000000..93652a7042
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.8.errors.txt
@@ -0,0 +1 @@
+5:23:Invalid alias location
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.8.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.8.qml
new file mode 100644
index 0000000000..4faa52d250
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.8.qml
@@ -0,0 +1,7 @@
+import Test 1.0
+
+MyTypeObject {
+ id: root
+ property alias a: root.imaginary.x
+}
+
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.9.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.9.errors.txt
new file mode 100644
index 0000000000..93652a7042
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.9.errors.txt
@@ -0,0 +1 @@
+5:23:Invalid alias location
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.9.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.9.qml
new file mode 100644
index 0000000000..f1839127b0
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidAlias.9.qml
@@ -0,0 +1,6 @@
+import Test 1.0
+
+MyTypeObject {
+ id: root
+ property alias a: root.floatProperty.x
+}
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.2.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.2.errors.txt
new file mode 100644
index 0000000000..beae562ff0
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.2.errors.txt
@@ -0,0 +1 @@
+5:10:Cannot assign multiple values to a singular property
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.2.qml b/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.2.qml
new file mode 100644
index 0000000000..2fd7fd2be0
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.2.qml
@@ -0,0 +1,7 @@
+import QtQuick 1.0
+
+QtObject {
+ property QtObject a
+ a: [ QtObject {}, QtObject {} ]
+}
+
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.errors.txt
new file mode 100644
index 0000000000..beae562ff0
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.errors.txt
@@ -0,0 +1 @@
+5:10:Cannot assign multiple values to a singular property
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.qml b/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.qml
new file mode 100644
index 0000000000..da56cb8243
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/singularProperty.qml
@@ -0,0 +1,6 @@
+import QtQuick 1.0
+
+QtObject {
+ property variant a
+ a: [ QtObject {}, QtObject {} ]
+}
diff --git a/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro b/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro
index d702082701..cae85a7b6c 100644
--- a/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro
+++ b/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro
@@ -12,7 +12,7 @@ HEADERS += ../shared/testhttpserver.h
SOURCES += ../shared/testhttpserver.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/noqmldir/Test.qml b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/noqmldir/Test.qml
new file mode 100644
index 0000000000..0b054d0243
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/noqmldir/Test.qml
@@ -0,0 +1,2 @@
+import QtQuick 1.0
+Rectangle { }
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 9a8c94408e..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();
@@ -144,6 +147,7 @@ private slots:
void importsInstalled();
void importsOrder_data();
void importsOrder();
+ void importIncorrectCase();
void qmlAttachedPropertiesObjectMethod();
void customOnProperty();
@@ -210,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");
@@ -348,6 +377,9 @@ void tst_qdeclarativelanguage::errors_data()
QTest::newRow("invalidAlias.5") << "invalidAlias.5.qml" << "invalidAlias.5.errors.txt" << false;
QTest::newRow("invalidAlias.6") << "invalidAlias.6.qml" << "invalidAlias.6.errors.txt" << false;
QTest::newRow("invalidAlias.7") << "invalidAlias.7.qml" << "invalidAlias.7.errors.txt" << false;
+ QTest::newRow("invalidAlias.8") << "invalidAlias.8.qml" << "invalidAlias.8.errors.txt" << false;
+ QTest::newRow("invalidAlias.9") << "invalidAlias.9.qml" << "invalidAlias.9.errors.txt" << false;
+ QTest::newRow("invalidAlias.10") << "invalidAlias.10.qml" << "invalidAlias.10.errors.txt" << false;
QTest::newRow("invalidAttachedProperty.1") << "invalidAttachedProperty.1.qml" << "invalidAttachedProperty.1.errors.txt" << false;
QTest::newRow("invalidAttachedProperty.2") << "invalidAttachedProperty.2.qml" << "invalidAttachedProperty.2.errors.txt" << false;
@@ -380,6 +412,15 @@ void tst_qdeclarativelanguage::errors_data()
QTest::newRow("invalidProperty") << "invalidProperty.qml" << "invalidProperty.errors.txt" << false;
QTest::newRow("nonScriptableProperty") << "nonScriptableProperty.qml" << "nonScriptableProperty.errors.txt" << false;
QTest::newRow("notAvailable") << "notAvailable.qml" << "notAvailable.errors.txt" << false;
+ QTest::newRow("singularProperty") << "singularProperty.qml" << "singularProperty.errors.txt" << false;
+ QTest::newRow("singularProperty.2") << "singularProperty.2.qml" << "singularProperty.2.errors.txt" << false;
+ QTest::newRow("incorrectCase") << "incorrectCase.qml"
+#if defined(Q_OS_MAC) || defined(Q_OS_WIN32)
+ << "incorrectCase.errors.insensitive.txt"
+#else
+ << "incorrectCase.errors.sensitive.txt"
+#endif
+ << false;
}
@@ -1054,6 +1095,47 @@ void tst_qdeclarativelanguage::aliasProperties()
delete object;
}
+
+ // Valuetype alias
+ // Simple "int" alias
+ {
+ QDeclarativeComponent component(&engine, TEST_FILE("alias.10.qml"));
+ VERIFY_ERRORS(0);
+ QObject *object = component.create();
+ QVERIFY(object != 0);
+
+ // Read through alias
+ QCOMPARE(object->property("valueAlias").toRect(), QRect(10, 11, 9, 8));
+ object->setProperty("rectProperty", QVariant(QRect(33, 12, 99, 100)));
+ QCOMPARE(object->property("valueAlias").toRect(), QRect(33, 12, 99, 100));
+
+ // Write throught alias
+ object->setProperty("valueAlias", QVariant(QRect(3, 3, 4, 9)));
+ QCOMPARE(object->property("valueAlias").toRect(), QRect(3, 3, 4, 9));
+ QCOMPARE(object->property("rectProperty").toRect(), QRect(3, 3, 4, 9));
+
+ delete object;
+ }
+
+ // Valuetype sub-alias
+ {
+ QDeclarativeComponent component(&engine, TEST_FILE("alias.11.qml"));
+ VERIFY_ERRORS(0);
+ QObject *object = component.create();
+ QVERIFY(object != 0);
+
+ // Read through alias
+ QCOMPARE(object->property("aliasProperty").toInt(), 19);
+ object->setProperty("rectProperty", QVariant(QRect(33, 8, 102, 111)));
+ QCOMPARE(object->property("aliasProperty").toInt(), 33);
+
+ // Write throught alias
+ object->setProperty("aliasProperty", QVariant(4));
+ QCOMPARE(object->property("aliasProperty").toInt(), 4);
+ QCOMPARE(object->property("rectProperty").toRect(), QRect(4, 8, 102, 111));
+
+ delete object;
+ }
}
// QTBUG-13374 Test that alias properties and signals can coexist
@@ -1515,6 +1597,7 @@ void tst_qdeclarativelanguage::basicRemote_data()
QString serverdir = "http://127.0.0.1:14447/qtest/declarative/qmllanguage/";
QTest::newRow("no need for qmldir") << QUrl(serverdir+"Test.qml") << "" << "";
+ QTest::newRow("absent qmldir") << QUrl(serverdir+"/noqmldir/Test.qml") << "" << "";
QTest::newRow("need qmldir") << QUrl(serverdir+"TestLocal.qml") << "" << "";
}
@@ -1722,6 +1805,22 @@ void tst_qdeclarativelanguage::importsOrder()
testType(qml,type,error);
}
+void tst_qdeclarativelanguage::importIncorrectCase()
+{
+ QDeclarativeComponent component(&engine, TEST_FILE("importIncorrectCase.qml"));
+
+ QList<QDeclarativeError> errors = component.errors();
+ QCOMPARE(errors.count(), 1);
+
+#if defined(Q_OS_MAC) || defined(Q_OS_WIN32)
+ QString expectedError = QLatin1String("cannot load module \"com.Nokia.installedtest\": File name case mismatch for \"") + QFileInfo(__FILE__).absoluteDir().filePath("data/lib/com/Nokia/installedtest/qmldir") + QLatin1String("\"");
+#else
+ QString expectedError = QLatin1String("module \"com.Nokia.installedtest\" is not installed");
+#endif
+
+ QCOMPARE(errors.at(0).description(), expectedError);
+}
+
void tst_qdeclarativelanguage::qmlAttachedPropertiesObjectMethod()
{
QObject object;
@@ -1819,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/qdeclarativelayoutitem/qdeclarativelayoutitem.pro b/tests/auto/declarative/qdeclarativelayoutitem/qdeclarativelayoutitem.pro
index b74ea98b8a..d89f16cd7d 100644
--- a/tests/auto/declarative/qdeclarativelayoutitem/qdeclarativelayoutitem.pro
+++ b/tests/auto/declarative/qdeclarativelayoutitem/qdeclarativelayoutitem.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativelayoutitem.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro b/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro
index d1146b1d1e..b5c5cf247a 100644
--- a/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro
+++ b/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro
@@ -6,7 +6,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativelistmodel.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp b/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp
index be77f8e81d..4b8d7729e2 100644
--- a/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp
+++ b/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp
@@ -320,11 +320,16 @@ void tst_qdeclarativelistmodel::dynamic()
if (!warning.isEmpty())
QTest::ignoreMessage(QtWarningMsg, warning.toLatin1());
+ QSignalSpy spyCount(&model, SIGNAL(countChanged()));
+
int actual = e.evaluate().toInt();
if (e.hasError())
qDebug() << e.error(); // errors not expected
QCOMPARE(actual,result);
+
+ if (model.count() > 0)
+ QVERIFY(spyCount.count() > 0);
}
void tst_qdeclarativelistmodel::dynamic_worker_data()
@@ -351,6 +356,8 @@ void tst_qdeclarativelistmodel::dynamic_worker()
QDeclarativeItem *item = createWorkerTest(&eng, &component, &model);
QVERIFY(item != 0);
+ QSignalSpy spyCount(&model, SIGNAL(countChanged()));
+
if (script[0] == QLatin1Char('{') && script[script.length()-1] == QLatin1Char('}'))
script = script.mid(1, script.length() - 2);
QVariantList operations;
@@ -367,6 +374,9 @@ void tst_qdeclarativelistmodel::dynamic_worker()
waitForWorker(item);
QCOMPARE(QDeclarativeProperty(item, "result").read().toInt(), result);
+ if (model.count() > 0)
+ QVERIFY(spyCount.count() > 0);
+
delete item;
qApp->processEvents();
}
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/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/qdeclarativelistview.pro b/tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro
index f26a71efeb..468474ae83 100644
--- a/tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro
+++ b/tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativelistview.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
index 6452bae86b..a4b4f219c5 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,7 @@ private slots:
void QTBUG_11105();
void footer();
void resizeView();
+ void sizeLessThan1();
private:
template <class T> void items();
@@ -672,6 +674,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;
}
@@ -937,6 +948,8 @@ void tst_QDeclarativeListView::sections()
QCOMPARE(next->text().toInt(), (i+1)/5);
}
+ QSignalSpy currentSectionChangedSpy(listview, SIGNAL(currentSectionChanged()));
+
// Remove section boundary
model.removeItem(5);
@@ -972,13 +985,25 @@ void tst_QDeclarativeListView::sections()
listview->setContentY(140);
QTRY_COMPARE(listview->currentSection(), QString("1"));
+ QTRY_COMPARE(currentSectionChangedSpy.count(), 1);
+
listview->setContentY(20);
QTRY_COMPARE(listview->currentSection(), QString("0"));
+ QTRY_COMPARE(currentSectionChangedSpy.count(), 2);
+
item = findItem<QDeclarativeItem>(contentItem, "wrapper", 1);
QTRY_VERIFY(item);
QTRY_COMPARE(item->height(), 20.0);
+ // check that headers change when item changes
+ listview->setContentY(0);
+ model.modifyItem(0, "changed", "2");
+
+ item = findItem<QDeclarativeItem>(contentItem, "wrapper", 1);
+ QTRY_VERIFY(item);
+ QTRY_COMPARE(item->height(), 40.0);
+
delete canvas;
}
@@ -1073,9 +1098,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();
@@ -1665,6 +1733,41 @@ 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::qListModelInterface_items()
{
items<TestModel>();
diff --git a/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro b/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro
index 29b9eb94b6..1ede50964a 100644
--- a/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro
+++ b/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro
@@ -8,7 +8,7 @@ SOURCES += tst_qdeclarativeloader.cpp \
../shared/testhttpserver.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/data/incorrectCase.qml b/tests/auto/declarative/qdeclarativemoduleplugin/data/incorrectCase.qml
new file mode 100644
index 0000000000..a21ece7058
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/data/incorrectCase.qml
@@ -0,0 +1,4 @@
+import com.nokia.WrongCase 1.0
+
+MyPluginType { value: 123 }
+
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/imports/com/nokia/WrongCase/qmldir b/tests/auto/declarative/qdeclarativemoduleplugin/imports/com/nokia/WrongCase/qmldir
new file mode 100644
index 0000000000..6c8787498f
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/imports/com/nokia/WrongCase/qmldir
@@ -0,0 +1 @@
+plugin PluGin
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/plugin.cpp b/tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/plugin.cpp
new file mode 100644
index 0000000000..5e91f4ec8e
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/plugin.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 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 <QStringList>
+#include <QtDeclarative/qdeclarativeextensionplugin.h>
+#include <QtDeclarative/qdeclarative.h>
+#include <QDebug>
+
+class MyPluginType : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int value READ value WRITE setValue)
+
+public:
+ MyPluginType(QObject *parent=0) : QObject(parent)
+ {
+ qWarning("import worked");
+ }
+
+ int value() const { return v; }
+ void setValue(int i) { v = i; }
+
+private:
+ int v;
+};
+
+
+class MyPlugin : public QDeclarativeExtensionPlugin
+{
+ Q_OBJECT
+public:
+ MyPlugin()
+ {
+ qWarning("plugin created");
+ }
+
+ void registerTypes(const char *uri)
+ {
+ Q_ASSERT(QLatin1String(uri) == "com.nokia.WrongCase");
+ qmlRegisterType<MyPluginType>(uri, 1, 0, "MyPluginType");
+ }
+};
+
+#include "plugin.moc"
+
+Q_EXPORT_PLUGIN2(plugin, MyPlugin);
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/pluginWrongCase.pro b/tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/pluginWrongCase.pro
new file mode 100644
index 0000000000..c7337ca07c
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/pluginWrongCase/pluginWrongCase.pro
@@ -0,0 +1,10 @@
+TEMPLATE = lib
+CONFIG += plugin
+SOURCES = plugin.cpp
+QT = core declarative
+TARGET = Plugin
+DESTDIR = ../imports/com/nokia/WrongCase
+
+symbian: {
+ TARGET.EPOCALLOWDLLDATA=1
+}
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro
index 824b4022a0..221e4651e9 100644
--- a/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro
@@ -1,6 +1,6 @@
QT = core
TEMPLATE = subdirs
-SUBDIRS = plugin
+SUBDIRS = plugin pluginWrongCase
tst_qdeclarativemoduleplugin_pro.depends += plugin
SUBDIRS += tst_qdeclarativemoduleplugin.pro
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp
index e1022e0bd0..85fa7186c7 100644
--- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp
@@ -54,6 +54,7 @@ public:
private slots:
void importsPlugin();
+ void incorrectPluginCase();
};
#ifdef Q_OS_SYMBIAN
@@ -120,6 +121,30 @@ void tst_qdeclarativemoduleplugin::importsPlugin()
delete object;
}
+void tst_qdeclarativemoduleplugin::incorrectPluginCase()
+{
+ QDeclarativeEngine engine;
+ engine.addImportPath(QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("imports"));
+
+ QDeclarativeComponent component(&engine, TEST_FILE("data/incorrectCase.qml"));
+
+ QList<QDeclarativeError> errors = component.errors();
+ QCOMPARE(errors.count(), 1);
+
+#if defined(Q_OS_MAC) || defined(Q_OS_WIN32)
+#if defined(Q_OS_MAC)
+ QString libname = "libPluGin.dylib";
+#elif defined(Q_OS_WIN32)
+ QString libname = "PluGin.dll";
+#endif
+ QString expectedError = QLatin1String("plugin cannot be loaded for module \"com.nokia.WrongCase\": File name case mismatch for \"") + QFileInfo(__FILE__).absoluteDir().filePath("imports/com/nokia/WrongCase/" + libname) + QLatin1String("\"");
+#else
+ QString expectedError = QLatin1String("module \"com.nokia.WrongCase\" plugin \"PluGin\" not found");
+#endif
+
+ QCOMPARE(errors.at(0).description(), expectedError);
+}
+
QTEST_MAIN(tst_qdeclarativemoduleplugin)
#include "tst_qdeclarativemoduleplugin.moc"
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro
index 36dbb83931..2e8aa754b0 100644
--- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro
@@ -4,7 +4,7 @@ QT += declarative
CONFIG -= app_bundle
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
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/data/doubleclick.qml b/tests/auto/declarative/qdeclarativemousearea/data/doubleclick.qml
index 23484444d8..55b0812e48 100644
--- a/tests/auto/declarative/qdeclarativemousearea/data/doubleclick.qml
+++ b/tests/auto/declarative/qdeclarativemousearea/data/doubleclick.qml
@@ -4,11 +4,13 @@ Item {
id: root
property int clicked: 0
property int doubleClicked: 0
+ property int released: 0
MouseArea {
width: 200; height: 200
onClicked: { root.clicked++ }
onDoubleClicked: { root.doubleClicked++ }
+ onReleased: { root.released++ }
}
}
diff --git a/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro b/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro
index fec73c54a0..ed9313fe75 100644
--- a/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro
+++ b/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro
@@ -6,7 +6,7 @@ HEADERS += ../shared/testhttpserver.h
SOURCES += tst_qdeclarativemousearea.cpp ../shared/testhttpserver.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
index 5e8845054a..57a58e9478 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();
@@ -413,14 +414,60 @@ void tst_QDeclarativeMouseArea::doubleClick()
releaseEvent.setButtons(Qt::LeftButton);
QApplication::sendEvent(scene, &releaseEvent);
+ QCOMPARE(canvas->rootObject()->property("released").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, &releaseEvent);
+
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/qdeclarativeparticles/qdeclarativeparticles.pro b/tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro
index 9762b7c13d..2cf826831f 100644
--- a/tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro
+++ b/tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeparticles.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro b/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro
index 3270c5e2f3..e0404c551d 100644
--- a/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro
+++ b/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativepathview.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro b/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro
index 2e2c6bcb77..88871e9523 100644
--- a/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro
+++ b/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro
@@ -10,7 +10,7 @@ HEADERS += ../shared/testhttpserver.h
SOURCES += ../shared/testhttpserver.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
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/qdeclarativepositioners/qdeclarativepositioners.pro b/tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro
index f2c9eee9be..27e594850c 100644
--- a/tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro
+++ b/tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qdeclarativepositioners.cpp
macx:CONFIG -= app_bundle
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro
index 504a371094..1750860244 100644
--- a/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro
+++ b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeproperty.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro b/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro
index 775f445ddc..71ff8a815c 100644
--- a/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro
+++ b/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qdeclarativeqt.cpp
macx:CONFIG -= app_bundle
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro b/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro
index 0f3773c334..5230f698b7 100644
--- a/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro
+++ b/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativerepeater.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativescriptdebugging/qdeclarativescriptdebugging.pro b/tests/auto/declarative/qdeclarativescriptdebugging/qdeclarativescriptdebugging.pro
index 8a633559db..171f308778 100644
--- a/tests/auto/declarative/qdeclarativescriptdebugging/qdeclarativescriptdebugging.pro
+++ b/tests/auto/declarative/qdeclarativescriptdebugging/qdeclarativescriptdebugging.pro
@@ -9,7 +9,7 @@ INCLUDEPATH += ../shared
# LIBS += -lgcov
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro b/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro
index e770d464a3..1e77d6eb9a 100644
--- a/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro
+++ b/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativesmoothedanimation.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativespringanimation/qdeclarativespringanimation.pro b/tests/auto/declarative/qdeclarativespringanimation/qdeclarativespringanimation.pro
index 07bcbe7c48..da477fcebd 100644
--- a/tests/auto/declarative/qdeclarativespringanimation/qdeclarativespringanimation.pro
+++ b/tests/auto/declarative/qdeclarativespringanimation/qdeclarativespringanimation.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativespringanimation.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro b/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro
index 400512d095..0d335a547d 100644
--- a/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro
+++ b/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro
@@ -6,7 +6,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativesqldatabase.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
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/qdeclarativestates.pro b/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro
index cb3e0fe854..4a0cc24b28 100644
--- a/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro
+++ b/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativestates.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
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/qdeclarativetext/data/alignments_cb.png b/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png
index b5c6bbad05..cf6199a418 100644
--- a/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png
+++ b/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png b/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png
index c9ffcc11d0..f81ccb4238 100644
--- a/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png
+++ b/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png b/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png
index eda0d250ce..9ba64125d5 100644
--- a/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png
+++ b/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro b/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro
index 28a9fcd5d6..290cda3035 100644
--- a/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro
+++ b/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro
@@ -10,7 +10,7 @@ HEADERS += ../shared/testhttpserver.h
SOURCES += ../shared/testhttpserver.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativetextedit/qdeclarativetextedit.pro b/tests/auto/declarative/qdeclarativetextedit/qdeclarativetextedit.pro
index 8606eb0589..aaf753e640 100644
--- a/tests/auto/declarative/qdeclarativetextedit/qdeclarativetextedit.pro
+++ b/tests/auto/declarative/qdeclarativetextedit/qdeclarativetextedit.pro
@@ -6,7 +6,7 @@ SOURCES += tst_qdeclarativetextedit.cpp ../shared/testhttpserver.cpp
HEADERS += ../shared/testhttpserver.h
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
index 472c5ef872..a7971cc94c 100644
--- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
+++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp
@@ -56,6 +56,8 @@
#include <QDir>
#include <QStyle>
#include <QInputContext>
+#include <QClipboard>
+#include <QMimeData>
#include <private/qapplication_p.h>
#include <private/qtextcontrol_p.h>
@@ -119,6 +121,8 @@ private slots:
void openInputPanelOnClick();
void openInputPanelOnFocus();
void geometrySignals();
+ void pastingRichText_QTBUG_14003();
+
private:
void simulateKey(QDeclarativeView *, int key);
QDeclarativeView *createView(const QString &filename);
@@ -1174,6 +1178,27 @@ void tst_qdeclarativetextedit::geometrySignals()
delete o;
}
+void tst_qdeclarativetextedit::pastingRichText_QTBUG_14003()
+{
+#ifndef QT_NO_CLIPBOARD
+ QString componentStr = "import QtQuick 1.0\nTextEdit { textFormat: TextEdit.PlainText }";
+ QDeclarativeComponent component(&engine);
+ component.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
+ QDeclarativeTextEdit *obj = qobject_cast<QDeclarativeTextEdit*>(component.create());
+
+ QTRY_VERIFY(obj != 0);
+ QTRY_VERIFY(obj->textFormat() == QDeclarativeTextEdit::PlainText);
+
+ QMimeData *mData = new QMimeData;
+ mData->setHtml("<font color=\"red\">Hello</font>");
+ QApplication::clipboard()->setMimeData(mData);
+
+ obj->paste();
+ QTRY_VERIFY(obj->text() == "");
+ QTRY_VERIFY(obj->textFormat() == QDeclarativeTextEdit::PlainText);
+#endif
+}
+
QTEST_MAIN(tst_qdeclarativetextedit)
#include "tst_qdeclarativetextedit.moc"
diff --git a/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro b/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro
index 7d178d707c..0fee1c9391 100644
--- a/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro
+++ b/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativetextinput.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro b/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro
index 56c3cd409c..59b3526838 100644
--- a/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro
+++ b/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro
@@ -8,7 +8,7 @@ SOURCES += tst_qdeclarativevaluetypes.cpp \
testtypes.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeview/qdeclarativeview.pro b/tests/auto/declarative/qdeclarativeview/qdeclarativeview.pro
index 2f0a4749e8..fc4790d21f 100644
--- a/tests/auto/declarative/qdeclarativeview/qdeclarativeview.pro
+++ b/tests/auto/declarative/qdeclarativeview/qdeclarativeview.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeview.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeviewer/qdeclarativeviewer.pro b/tests/auto/declarative/qdeclarativeviewer/qdeclarativeviewer.pro
index 08adf26da7..a94992b52e 100644
--- a/tests/auto/declarative/qdeclarativeviewer/qdeclarativeviewer.pro
+++ b/tests/auto/declarative/qdeclarativeviewer/qdeclarativeviewer.pro
@@ -7,7 +7,7 @@ include(../../../../tools/qml/qml.pri)
SOURCES += tst_qdeclarativeviewer.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
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/qdeclarativevisualdatamodel.pro b/tests/auto/declarative/qdeclarativevisualdatamodel/qdeclarativevisualdatamodel.pro
index d0d9b36ca3..fe3d79461b 100644
--- a/tests/auto/declarative/qdeclarativevisualdatamodel/qdeclarativevisualdatamodel.pro
+++ b/tests/auto/declarative/qdeclarativevisualdatamodel/qdeclarativevisualdatamodel.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativevisualdatamodel.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
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/qdeclarativewebview/qdeclarativewebview.pro b/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro
index 2ab27a19ab..af13d33f73 100644
--- a/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro
+++ b/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro
@@ -6,7 +6,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativewebview.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro b/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro
index 9d4e0ed5fb..e20c3e6a53 100644
--- a/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro
+++ b/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro
@@ -5,7 +5,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativeworkerscript.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro b/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro
index bfd47c5340..8aefb8e685 100644
--- a/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro
+++ b/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro
@@ -9,7 +9,7 @@ SOURCES += tst_qdeclarativexmlhttprequest.cpp \
../shared/testhttpserver.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro b/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro
index f4b25b56f5..c74b8fb066 100644
--- a/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro
+++ b/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro
@@ -9,7 +9,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativexmllistmodel.cpp
symbian: {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path = .
DEPLOYMENT += importFiles
} else {
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.4.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.png
deleted file mode 100644
index afd0830a8d..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.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/itemlist.7.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.7.png
new file mode 100644
index 0000000000..75d2089cda
--- /dev/null
+++ 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..cb53b6ebca
--- /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.
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-X11/colorAnimation-visual.0.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png
new file mode 100644
index 0000000000..99748a7a3c
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png
new file mode 100644
index 0000000000..5393dd83c9
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png
new file mode 100644
index 0000000000..8c17bf7679
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.png
new file mode 100644
index 0000000000..1317eef8a7
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml
new file mode 100644
index 0000000000..dd2aeb4da4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml
@@ -0,0 +1,951 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "colorAnimation-visual.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 48
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 64
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 80
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 96
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 112
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 128
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 144
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 160
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 176
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 192
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 208
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 224
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 240
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 256
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 272
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 288
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 304
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 320
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 336
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 352
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 368
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 384
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 400
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 416
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 432
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 448
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 464
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 480
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 496
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 512
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 93; y: 136
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 528
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 544
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 560
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 576
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 592
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 93; y: 136
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 608
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
+ }
+ Frame {
+ msec: 624
+ hash: "e5bda0daf98288ce18db6ce06eda3ba0"
+ }
+ Frame {
+ msec: 640
+ hash: "d35008f75b8c992f80fb16ba7203649d"
+ }
+ Frame {
+ msec: 656
+ hash: "14f43e0784ddf42ea8550db88c501bf1"
+ }
+ Frame {
+ msec: 672
+ hash: "02276e158b5391480b1bdeaadf1fb903"
+ }
+ Frame {
+ msec: 688
+ hash: "35d9513eb97a2c482b7cd197de910934"
+ }
+ Frame {
+ msec: 704
+ hash: "faf0fd681e60bb2489099f5df772b6cd"
+ }
+ Frame {
+ msec: 720
+ hash: "a863d3e346f94785a3a392fdc91526eb"
+ }
+ Frame {
+ msec: 736
+ hash: "fdf328d3f6eb8410da59a91345e41a44"
+ }
+ Frame {
+ msec: 752
+ hash: "83514a3b10d5be8f6c3b128d0f3e0b1c"
+ }
+ Frame {
+ msec: 768
+ hash: "ead0eae76cd00189075964671effbaea"
+ }
+ Frame {
+ msec: 784
+ hash: "24d2457fcd51490fda23071bf9929d12"
+ }
+ Frame {
+ msec: 800
+ hash: "1478683446cf543dacbe31d0b76a98a6"
+ }
+ Frame {
+ msec: 816
+ hash: "99f7da1f31fe920f6c02add4042ae925"
+ }
+ Frame {
+ msec: 832
+ hash: "22def892006cf66667770b0f17baf6c0"
+ }
+ Frame {
+ msec: 848
+ hash: "6a36d5a77099bfd58baf285478ff04e4"
+ }
+ Frame {
+ msec: 864
+ hash: "6258150666b59b20ab476724c07fc20c"
+ }
+ Frame {
+ msec: 880
+ hash: "f1636315bc950a6dd400d9c7ed263b88"
+ }
+ Frame {
+ msec: 896
+ hash: "18447ea8dc2e8da956788e5b3cf3790a"
+ }
+ Frame {
+ msec: 912
+ hash: "1d2a6e65997a73e9e670356c8e8b63b2"
+ }
+ Frame {
+ msec: 928
+ hash: "bed0242c0f9ef229d1392835286d5782"
+ }
+ Frame {
+ msec: 944
+ hash: "88923c190e9e5beadef8a409c06df9d6"
+ }
+ Frame {
+ msec: 960
+ hash: "2d133e7ee60c97386f57838b3f0976c7"
+ }
+ Frame {
+ msec: 976
+ image: "colorAnimation-visual.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "395195716d76bc0be7b2033ed37a7a1c"
+ }
+ Frame {
+ msec: 1008
+ hash: "243dbffcf416926242bbcb7348974c4c"
+ }
+ Frame {
+ msec: 1024
+ hash: "a755068679616d8ac65c2aa7431f2a19"
+ }
+ Frame {
+ msec: 1040
+ hash: "e8249b35a47eb492cbdf2d91cc8426f0"
+ }
+ Frame {
+ msec: 1056
+ hash: "15f3da1c0e6f0779b96859d51171dd27"
+ }
+ Frame {
+ msec: 1072
+ hash: "258c0c756aac3de743b43051f2aace6b"
+ }
+ Frame {
+ msec: 1088
+ hash: "a58b9fdf301d72b2cc5c93934cc8927b"
+ }
+ Frame {
+ msec: 1104
+ hash: "a9181d30870d472521f8904818ce520f"
+ }
+ Frame {
+ msec: 1120
+ hash: "7f9e94069ccf3897c26a71bd7becd903"
+ }
+ Frame {
+ msec: 1136
+ hash: "bdf305c2f46cdb86dbf57b1e0cc5a65b"
+ }
+ Frame {
+ msec: 1152
+ hash: "fe5b6865d7e4fc7d1d42c1e74f8666f7"
+ }
+ Frame {
+ msec: 1168
+ hash: "734f0de45a6e34c9eab7ef606196f96a"
+ }
+ Frame {
+ msec: 1184
+ hash: "02a361c4534fdf7f286dc3e6dc23275c"
+ }
+ Frame {
+ msec: 1200
+ hash: "e649155ad69999c14b92f6561e4d1185"
+ }
+ Frame {
+ msec: 1216
+ hash: "01af177084fab755d622973f64b92018"
+ }
+ Frame {
+ msec: 1232
+ hash: "097cc4a082dfab995d213a3a73883c97"
+ }
+ Frame {
+ msec: 1248
+ hash: "d7b4239a3280b1eb8e885e3f422df8e9"
+ }
+ Frame {
+ msec: 1264
+ hash: "59893977994e34e83f91e7ce3ad65d6d"
+ }
+ Frame {
+ msec: 1280
+ hash: "b68e3fbb5cdcd6bd96df7dec558db42b"
+ }
+ Frame {
+ msec: 1296
+ hash: "94ad0580648f36a1e18a9ea7e249b04d"
+ }
+ Frame {
+ msec: 1312
+ hash: "750a4c01d2f5806a89a1c6cc6a9b9a68"
+ }
+ Frame {
+ msec: 1328
+ hash: "4f109f50f388f1bfa4bc6b03b3e6e514"
+ }
+ Frame {
+ msec: 1344
+ hash: "c6168d5cf27a533e8ee636637667be47"
+ }
+ Frame {
+ msec: 1360
+ hash: "f8120547bed987aa34c00da5a01a4d1e"
+ }
+ Frame {
+ msec: 1376
+ hash: "cbff526136fa2c128c8b898fbbef9e5c"
+ }
+ Frame {
+ msec: 1392
+ hash: "f29e52398fab1a239a63df4c32f2fc69"
+ }
+ Frame {
+ msec: 1408
+ hash: "7178bfe86fd2fd513218b33760460f8d"
+ }
+ Frame {
+ msec: 1424
+ hash: "ca83285bc8ac633403896fe976896eb0"
+ }
+ Frame {
+ msec: 1440
+ hash: "96ba486c09cc69d5aa38c46c00df1181"
+ }
+ Frame {
+ msec: 1456
+ hash: "b88eab335842787869f4a14824c19dd8"
+ }
+ Frame {
+ msec: 1472
+ hash: "065aa59012729e1e1a246a2083142690"
+ }
+ Frame {
+ msec: 1488
+ hash: "dd0e98c8398861002c5f178c5f9f612d"
+ }
+ Frame {
+ msec: 1504
+ hash: "04192c2b545948048eccf4d81bbde198"
+ }
+ Frame {
+ msec: 1520
+ hash: "bb7502c7208281ef9fd41714ab88a1a8"
+ }
+ Frame {
+ msec: 1536
+ hash: "5397195471890d08b703dca101e5bc7c"
+ }
+ Frame {
+ msec: 1552
+ hash: "4c678cdbebb2ffd2cbf012ca77800cde"
+ }
+ Frame {
+ msec: 1568
+ hash: "0d7a34ecd0c7f52b2c015037bf1902c6"
+ }
+ Frame {
+ msec: 1584
+ hash: "fd9d5048be749ac4369fda2d018b43ae"
+ }
+ Frame {
+ msec: 1600
+ hash: "93ee03795cd57ae6f7fe3a020b039ad4"
+ }
+ Frame {
+ msec: 1616
+ hash: "5e1118963f219c39761ca7fbf564a9ca"
+ }
+ Frame {
+ msec: 1632
+ hash: "8f40038741903150136170503649d941"
+ }
+ Frame {
+ msec: 1648
+ hash: "b087b7d0aa6224821f8e18718ff5e77d"
+ }
+ Frame {
+ msec: 1664
+ hash: "aa46b04a3c67dc772265ed2901955565"
+ }
+ Frame {
+ msec: 1680
+ hash: "ac024bf2aeb4becdf31a09fe0a6db8f3"
+ }
+ Frame {
+ msec: 1696
+ hash: "13745a174e4d06e2108a5bf125ba50cc"
+ }
+ Frame {
+ msec: 1712
+ hash: "bd972f0d8e230eca0b3fea1b8c960c08"
+ }
+ Frame {
+ msec: 1728
+ hash: "cbdbec802a58e7ced0cf45b3ab0bc0ba"
+ }
+ Frame {
+ msec: 1744
+ hash: "5128584c50305c7d218b81b8367fa3d5"
+ }
+ Frame {
+ msec: 1760
+ hash: "a71461d3593f3685620668916de870bd"
+ }
+ Frame {
+ msec: 1776
+ hash: "74ebac8f32cf044b58d9883dbcd9a722"
+ }
+ Frame {
+ msec: 1792
+ hash: "fedc5b638f339b90fe59b478721e65b7"
+ }
+ Frame {
+ msec: 1808
+ hash: "8593a81be812edf54ec94da8ae9c1314"
+ }
+ Frame {
+ msec: 1824
+ hash: "4e9b083075bc5e9287a8abc982778b56"
+ }
+ Frame {
+ msec: 1840
+ hash: "1d6f02aa99afa47d77fc49ab894b365a"
+ }
+ Frame {
+ msec: 1856
+ hash: "a204feec783b3b05de4c209c21745826"
+ }
+ Frame {
+ msec: 1872
+ hash: "665a2a8ff00b9663157802767f504754"
+ }
+ Frame {
+ msec: 1888
+ hash: "624fb09ebe60cb87d767faf8d2420b1e"
+ }
+ Frame {
+ msec: 1904
+ hash: "e5af0cdc33f3275a25abb09e9165f310"
+ }
+ Frame {
+ msec: 1920
+ hash: "02bafb5a81ca66f7670ac93de5123860"
+ }
+ Frame {
+ msec: 1936
+ image: "colorAnimation-visual.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "b5abd0dff1ab076faac7cc226e83f5d0"
+ }
+ Frame {
+ msec: 1968
+ hash: "b759acc35bccff8efc2e6fe276ddc0f7"
+ }
+ Frame {
+ msec: 1984
+ hash: "ce52e18c1f7732768779863b45314ff5"
+ }
+ Frame {
+ msec: 2000
+ hash: "99d30652559dd6931e0c95543eeaa149"
+ }
+ Frame {
+ msec: 2016
+ hash: "ffbd9a00e05e085b89296d19d5caec57"
+ }
+ Frame {
+ msec: 2032
+ hash: "9c9d658b9c25602816b8066bf19105db"
+ }
+ Frame {
+ msec: 2048
+ hash: "2b7fd058e6601e22a30bb7106b1c683b"
+ }
+ Frame {
+ msec: 2064
+ hash: "f4c7e26b19ee0a3e7c9688685eb7bd05"
+ }
+ Frame {
+ msec: 2080
+ hash: "0dc6d593bceff56b7f81f2a49d37fefb"
+ }
+ Frame {
+ msec: 2096
+ hash: "9bfd7ad5091ccbdde43c593e133a7b10"
+ }
+ Frame {
+ msec: 2112
+ hash: "2703b617937914a90ea42ebf249d79ee"
+ }
+ Frame {
+ msec: 2128
+ hash: "b77e2983138254016c4cca53100f46fa"
+ }
+ Frame {
+ msec: 2144
+ hash: "60c4dd24187d1281081479e586f02b37"
+ }
+ Frame {
+ msec: 2160
+ hash: "62f2511abd99ef1231c9fa4b91d4abfe"
+ }
+ Frame {
+ msec: 2176
+ hash: "e309b3353fd174e883d309571caddc98"
+ }
+ Frame {
+ msec: 2192
+ hash: "1e2d6a134c7b12dde551b148ef4f088c"
+ }
+ Frame {
+ msec: 2208
+ hash: "e5dc5450604a491cc24a0dcf5c278b58"
+ }
+ Frame {
+ msec: 2224
+ hash: "c8dae97c10e1962c1e6a51ab3ab8579e"
+ }
+ Frame {
+ msec: 2240
+ hash: "4e1b7e06f55fb084080689b474f1fe1d"
+ }
+ Frame {
+ msec: 2256
+ hash: "b4639c907fa937bf15fac62421170cd8"
+ }
+ Frame {
+ msec: 2272
+ hash: "c250208a0caeb5f6cb4d3aac3d7d350b"
+ }
+ Frame {
+ msec: 2288
+ hash: "a73351eabecf0d71149efe31f197413e"
+ }
+ Frame {
+ msec: 2304
+ hash: "479425f1b7aff79e4dfb7fca534af018"
+ }
+ Frame {
+ msec: 2320
+ hash: "046d0f0040a52d1f26ba9f7c5de06ef4"
+ }
+ Frame {
+ msec: 2336
+ hash: "655778bf13c6080903150b0eb43a7edc"
+ }
+ Frame {
+ msec: 2352
+ hash: "72da0bbe81514870655fdd3354adac60"
+ }
+ Frame {
+ msec: 2368
+ hash: "defe0bdf675c65fff55aaaced1e4dae7"
+ }
+ Frame {
+ msec: 2384
+ hash: "c988628b6c3d3780e9a865c7694926cd"
+ }
+ Frame {
+ msec: 2400
+ hash: "5ab17563655231089edd986ff13d6012"
+ }
+ Frame {
+ msec: 2416
+ hash: "c1adff1d2e5800ed466d1691d3b17382"
+ }
+ Frame {
+ msec: 2432
+ hash: "70129ba01fbb19592b9dc0d0a3b3e7df"
+ }
+ Frame {
+ msec: 2448
+ hash: "0000829ef7ed908bf430d42904d59cc2"
+ }
+ Frame {
+ msec: 2464
+ hash: "843d2927f50ab87b4a86b7a6aaeed91f"
+ }
+ Frame {
+ msec: 2480
+ hash: "da86d21756025e7de8050586d5e2a1f8"
+ }
+ Frame {
+ msec: 2496
+ hash: "48dd1bd6580133b0793fee327ea4f1e6"
+ }
+ Frame {
+ msec: 2512
+ hash: "f0618193dcd0ba2837249515a1898b1c"
+ }
+ Frame {
+ msec: 2528
+ hash: "a530184e57251065286c0cbba7301e9c"
+ }
+ Frame {
+ msec: 2544
+ hash: "64a1d7203973d65dd342793007a61c58"
+ }
+ Frame {
+ msec: 2560
+ hash: "5b830dfc6ba442772de87d75d5a578de"
+ }
+ Frame {
+ msec: 2576
+ hash: "5563b056b0409b65f60dd16dd0dd890e"
+ }
+ Frame {
+ msec: 2592
+ hash: "b8bcf9ad2ca8720c11563a23d8280804"
+ }
+ Frame {
+ msec: 2608
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2624
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2640
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2656
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2672
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2688
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2704
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2720
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2736
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2752
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2768
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2784
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2800
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2816
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2832
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2848
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2864
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2880
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2896
+ image: "colorAnimation-visual.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2928
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2944
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2960
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2976
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 2992
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3008
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3024
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3040
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3056
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3072
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3088
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3104
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3120
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3136
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3152
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3168
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3184
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3200
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3216
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3232
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3248
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3264
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3280
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3296
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3312
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3328
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3344
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3360
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3376
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3392
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3408
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3424
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3440
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3456
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3472
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3488
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3504
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3520
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3536
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3552
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3568
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3584
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3600
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3616
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3632
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3648
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3664
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+ Frame {
+ msec: 3680
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/animation/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.0.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png
deleted file mode 100644
index 64d6b06895..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png
+++ /dev/null
Binary files differ
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
index 9309e377bc..e469a7999f 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png
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
index 20e6c8e062..905603f020 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png
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
index c7559ac646..5cbd3bdf91 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png
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
index bf2844b7cc..851c1ba582 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png
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
index cd73a3c4a0..0c9747e5f9 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml
@@ -6,255 +6,287 @@ VisualTest {
}
Frame {
msec: 16
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 32
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 48
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 64
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 80
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 96
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 112
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 128
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 144
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 160
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 176
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 192
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 208
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 224
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 240
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 256
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 272
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 288
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 304
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 320
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 336
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 352
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 368
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 384
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 400
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 416
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 432
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 448
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 464
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 480
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 496
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 512
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 528
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 544
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "be06cc567f08fbc0cd60d753a19df162"
}
Frame {
msec: 560
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "c4cf6807b423553872e848146e79efb3"
}
Frame {
msec: 576
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "b83923f1eef68a4a8dd36acad0f4b592"
}
Frame {
msec: 592
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
+ hash: "5599829a04f2c2a6c6181c5857762ba0"
+ }
+ Frame {
+ msec: 608
+ hash: "95da52b5add95150dd446bc5055a2b60"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 608
- hash: "ce962a38caeb7bf7eef05112fbb52f91"
- }
- Frame {
msec: 624
- hash: "779f0660ce5bc2c2fc9f05d8b86158a8"
+ hash: "9bb2757c3b1bbc051edd9ebd240611f8"
}
Frame {
msec: 640
- hash: "615e07a3c83539321befb44aa8fac811"
+ hash: "25213fbced4c67f42ce35d07db93bb32"
}
Frame {
msec: 656
- hash: "8a00b9f66ca7fdb0e4975f547025f873"
+ hash: "2a9ded25ed2dbb9563f9c14084234a22"
}
Frame {
msec: 672
- hash: "43bbe82799b1d8453f89a7ef928b1e54"
+ hash: "2f532511a50d743aa1c7ebcc9b2b7350"
}
Frame {
msec: 688
- hash: "2cc468d6e14c27ff1c0bd6064ae47509"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "2f532511a50d743aa1c7ebcc9b2b7350"
}
Frame {
msec: 704
- hash: "1dc9d1b95016ccbeaca5b7a867a5cc3a"
+ hash: "2f532511a50d743aa1c7ebcc9b2b7350"
}
Frame {
msec: 720
- hash: "f36734c91fe41a7947965dac97393ad4"
+ hash: "2f532511a50d743aa1c7ebcc9b2b7350"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 736
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "8c9f7d72e077a7e75d185a2ecbdcc77c"
}
Frame {
msec: 752
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "55a417e91f182ebd28dd7264d8b76363"
}
Frame {
msec: 768
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "01a637de9f60c82bfd9140e852e17574"
}
Frame {
msec: 784
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "01194b2c3489ea7298e961979064aab3"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 800
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "f6126328d483536d3f161f71d40821df"
}
Frame {
msec: 816
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "b99dd9793a63bbdab37cfe236d56c589"
}
Frame {
msec: 832
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "825f39b42d0b2e0d894874713b731cfc"
}
Frame {
msec: 848
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "7729b9c2133c52e50f43d6100a24e9c2"
}
Frame {
msec: 864
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "e2f3bec9571b08b451309221b34ace5e"
}
Frame {
msec: 880
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "e2f3bec9571b08b451309221b34ace5e"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 896
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "8e59b002437ec17043d11c92556365fd"
}
Frame {
msec: 912
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "3809a54af9c9a4b15aa8b82caa5b703f"
}
Frame {
msec: 928
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "96cb1ab7123c54d4fa0d93b6501a439d"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 944
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "de74cd5be709954522dd02945d6da9c9"
}
Frame {
msec: 960
@@ -262,271 +294,311 @@ VisualTest {
}
Frame {
msec: 976
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "d3ff94471da3620701d62b87f37fca8b"
}
Frame {
msec: 992
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "15bccb078b9061ef50c73a974e2f43fa"
}
Frame {
msec: 1008
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "ea2059d511fdab60e77e9261f81aadfb"
}
Frame {
msec: 1024
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "ea2059d511fdab60e77e9261f81aadfb"
}
Frame {
msec: 1040
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "ea2059d511fdab60e77e9261f81aadfb"
}
Frame {
msec: 1056
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "ea2059d511fdab60e77e9261f81aadfb"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1072
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "5b68568968d0de3a9bad8d053045f45c"
}
Frame {
msec: 1088
- hash: "57e009de047c348d3ae14a6271b2e6f2"
+ hash: "6b6da385fbc00e3542d7007524ff87f6"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1104
- hash: "1c29b3d1086b261c2a9e94d49567484f"
+ hash: "bba5021ad78a5a142cf54d4db8d8689e"
}
Frame {
msec: 1120
- hash: "6ab17a210b45dae1ed99fd1689bb3e46"
+ hash: "5c223d5dcf028cd3bac18b21359253f3"
}
Frame {
msec: 1136
- hash: "feb504605f7f27ca3a2bf080c1fb1e19"
+ hash: "c5b09a11d466fd90e1014f58755ec77b"
}
Frame {
msec: 1152
- hash: "bec2d2e2222587a379af12a30e078886"
+ hash: "f4ba8fcc4f955e25c2364d8ee1054d0d"
}
Frame {
msec: 1168
- hash: "39cb2bdc44273023b557a0f56df61d85"
+ hash: "2a6009e790cd98e3a67c107b0f08e00b"
}
Frame {
msec: 1184
- hash: "2cda045b452c4645be1cdb4efd238532"
+ hash: "caa1b5ee40dc20c87516b7292a86f79b"
}
Frame {
msec: 1200
- hash: "1f3efbfadd22734b5fd656596c11885b"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Frame {
msec: 1216
- hash: "7277c05a06e481a5af13e4fe39e322f8"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Key {
- type: 7
+ type: 6
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1232
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "2333dcdf0f46ade554e036caa5e3cb31"
}
Frame {
msec: 1248
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "9b09c65db96f483dec7ba3a55b5a91e6"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1264
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "49fc76245e741968095ab689195da40c"
}
Frame {
msec: 1280
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "4e991b92348d813f5a3a1080270a88a3"
}
Frame {
msec: 1296
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "1e4a07fc966dab9ee0d39b25a4c43c09"
}
Frame {
msec: 1312
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "ade33b908f2a5e6916a74bc00b08414e"
}
Frame {
msec: 1328
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "481b41b7bc8fafcb40b7d09fcfc2e86e"
}
Frame {
msec: 1344
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1360
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1376
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1392
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1408
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1424
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1440
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1456
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1472
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 1488
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1504
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "2a8a2867f38ff05a9ef5fa50fe7de229"
}
Frame {
msec: 1520
- hash: "bdf37518633a43d8dc47245f5b68550b"
+ hash: "824ec4f9e596a67fe6ca17ea03529c1f"
+ }
+ Frame {
+ msec: 1536
+ hash: "bf7d9c49d0a0ff4d03ceadf8d797a774"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 1536
- hash: "c5f88e95ead1f4542b766577d80e70fd"
- }
- Frame {
msec: 1552
- hash: "d38118f26b9c2b68dc8fdb8d2a959134"
+ hash: "3e3c62601c2965e851e8b5c0adb73651"
}
Frame {
msec: 1568
- hash: "44c483c899220f040aa7808f15fac429"
+ hash: "ed7357b2596da4683bb19cbf1dcd6458"
}
Frame {
msec: 1584
- hash: "02a63967944c8c53a9741318e99a326e"
+ hash: "32ed0774f926341af504b716bd9394e1"
}
Frame {
msec: 1600
- hash: "7fc10e91212af979e09c8d3b98625c1b"
+ hash: "2d4ffbd7cf53ca4824d206d4a4608ebb"
}
Frame {
msec: 1616
- hash: "d14b69d18adc548dfb68dae1559effdb"
+ hash: "a7a0b6bd336f00a10818bdd9992a29bb"
}
Frame {
msec: 1632
- hash: "cb9bce7fa14a367197fa34ad3acc4cdd"
+ hash: "55801794958126a1890bc0122084ee20"
}
Frame {
msec: 1648
- hash: "105a0e3d36296eba16077c4cf93547ae"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "55801794958126a1890bc0122084ee20"
}
Frame {
msec: 1664
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "55801794958126a1890bc0122084ee20"
}
Frame {
msec: 1680
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "55801794958126a1890bc0122084ee20"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1696
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "49573efd5a0bc65107a074fb35d67f63"
}
Frame {
msec: 1712
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "c9bf07bc12f97c6d0eef816ce4423f5b"
}
Frame {
msec: 1728
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "ab91f24c27d52123502815381e926cdc"
}
Frame {
msec: 1744
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "32ca7e06569a63d56ab71c67c9f82d60"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1760
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "9e5f04f019ccd1f27b511faeb7470e10"
}
Frame {
msec: 1776
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "5544186a3338dd788367fa4262815204"
}
Frame {
msec: 1792
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "c01aa7b7363faf99f69b90be8843f059"
}
Frame {
msec: 1808
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "6bd1ec848b817ef978b4dfae4eb23c1e"
}
Frame {
msec: 1824
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
}
Frame {
msec: 1840
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
}
Frame {
msec: 1856
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
}
Frame {
msec: 1872
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1888
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "04a3efd4b810417632726048bdffa904"
}
Frame {
msec: 1904
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "c347e7d3dccba41102e2b669c9e9c0a0"
}
Frame {
msec: 1920
@@ -534,271 +606,295 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "47c9794374c383e1f595e60ea6890e11"
}
Frame {
msec: 1952
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "73cdfe34edab93baea779896169b4195"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1968
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "53add51d9e11a1fc4d0f6e3d1c6a70bc"
}
Frame {
msec: 1984
- hash: "8f443766efd0f74e96e79ed3c267892c"
+ hash: "90143346b171faf5bdb7d4d0c0556b24"
}
Frame {
msec: 2000
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "e4e642507d3a631f5813a11cb7673c91"
}
Frame {
msec: 2016
- hash: "6e4e4321cda32abab394419a9e6494dc"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2032
- hash: "45b79c56379afa7243547fedfa3260db"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2048
- hash: "4635555c632f325a151d340a3eb742b9"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2064
- hash: "0255da44fa95548427139073c994234c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2080
- hash: "eac0c428ea7b7aa55a469562d2cb3fd6"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2096
- hash: "06ab23a83a5900cfdde98d4563414511"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2112
- hash: "808e4a745c58872d52ec6a3e669aea5c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2128
- hash: "e6231b43f93fd6ae3e0990def1168c39"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2144
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2160
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2176
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2192
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2208
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2224
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2240
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2256
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2272
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2288
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2304
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2320
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2336
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2352
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2368
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2384
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2400
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2416
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2432
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2448
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
}
Frame {
msec: 2464
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "f5f1725edd19f1735139d178955533f8"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2480
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "512e992c6d621225735c37e2626714ad"
}
Frame {
msec: 2496
- hash: "e97f921f1c34246fc229c48a4b66466c"
+ hash: "1a708d62af48302e93dda0ef0822aebb"
}
Frame {
msec: 2512
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "220660969092ba1b17addc6ba7148e06"
}
Frame {
msec: 2528
- hash: "e1c32968e36cb95be250121187ddf13e"
+ hash: "9dcdd42efc9beb957abdeaf2ee01fc43"
}
Frame {
msec: 2544
- hash: "70498453babe3ab5e0fec62bcd0ff332"
+ hash: "5995ac01ee680d6747dc78c36f70b577"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2560
- hash: "76fc1b1e6b22771bf08dfdd16b3f24e9"
+ hash: "c6eb964d8f4bf849df63eebdfbf6e286"
}
Frame {
msec: 2576
- hash: "c6be4f26750b8bc1a5b71ff381e462c6"
+ hash: "cff1925a172e278a36068886f0efbcbf"
}
Frame {
msec: 2592
- hash: "986f738d0f0f70b88f951d9f028ef61b"
+ hash: "4c725a05332806387713ab54302c559f"
}
Frame {
msec: 2608
- hash: "2201ad4f92bcf24ab62d0ddb8b2a64c1"
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
+ }
+ Frame {
+ msec: 2624
+ hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b"
}
Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 2624
- hash: "27e9a18cb70c8f2ab9e4dd7af321e8e4"
- }
- Frame {
msec: 2640
- hash: "3a352127f49f8c589b7b7da1232caf6b"
+ hash: "0cb7eeb24a6845d43ce0662c91b72bd3"
}
Frame {
msec: 2656
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "6dedbf7dc59b05dc57355141de0b660d"
}
Frame {
msec: 2672
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "5f82259afdabef688dd76729b5f847c7"
}
Frame {
msec: 2688
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "b67d418427db34726ddada60f76178a6"
}
Frame {
msec: 2704
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "780c9551f55fd46d294a1eef3b34aa34"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2720
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "521efe1778b2d2031071b55f30999de9"
}
Frame {
msec: 2736
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "49539356de68b7cd2cea52986ed2bb67"
}
Frame {
msec: 2752
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "55801794958126a1890bc0122084ee20"
}
Frame {
msec: 2768
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "55801794958126a1890bc0122084ee20"
}
Frame {
msec: 2784
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "55801794958126a1890bc0122084ee20"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2800
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "b08ee15bfd1916b9619a0a3eeeec90b6"
}
Frame {
msec: 2816
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "3b4e65a0d4ee764d418d82a055ba9c87"
}
Frame {
msec: 2832
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "269d37497b0cd292a5b03124d1687ff6"
}
Frame {
msec: 2848
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "59fecd7ec62bf8c89e2222744d36e194"
}
Frame {
msec: 2864
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "71deceeac8b42a70868bb3ff788543b5"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2880
@@ -806,271 +902,319 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "ad790d242e84fec0bd75e1d7771682d7"
}
Frame {
msec: 2912
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "c09f4fca4ae14e0e41d9b58c1b83096f"
}
Frame {
msec: 2928
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
}
Frame {
msec: 2944
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "68b528414ba662f14ea71511a01f8d33"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2960
- hash: "e3b2de8a4e3229880971d2144e55de1b"
+ hash: "015bf8203d45e5d477242055a3f19bfb"
}
Frame {
msec: 2976
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "ba2fb1258a2f3a81882780d3c7d5320a"
}
Frame {
msec: 2992
- hash: "20f96d3fbef9d51d8b8a28a6d58fabb2"
+ hash: "3637ffd219d403ed433fd72cd68a9b23"
}
Frame {
msec: 3008
- hash: "1e5d888fd4685960b8ae0a79e2287e89"
+ hash: "b0d858f1d51872969022f717c12480ed"
}
Frame {
msec: 3024
- hash: "2115c2e6689ce6669abf9f3741eb5df1"
+ hash: "0504b13a8f7cd68a1d64a22e46ea8654"
}
Frame {
msec: 3040
- hash: "c67949eb5f2210c6b2dad4ff352831ed"
+ hash: "d07cffa36609433e4a677e373ee7a3ff"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3056
- hash: "d982500bee0a6f6fb0861fb3c32319eb"
+ hash: "c1fd98ebc22e512f7199e0f319e88728"
}
Frame {
msec: 3072
- hash: "ffb111084712d5ecf072ade52103b985"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Frame {
msec: 3088
- hash: "e5d594c8f08b9d283a3998648a383332"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Frame {
msec: 3104
- hash: "20632ba6a4c14386eb01167059f7b617"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Frame {
msec: 3120
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
+ }
+ Frame {
+ msec: 3136
+ hash: "200dd4ac9c40c6eb32ad43570995f17d"
}
Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 3136
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
msec: 3152
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "5822b744b64944c515e8a01f52c7429f"
}
Frame {
msec: 3168
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "7d4ab5a17e7d6184f124299053cf94e3"
}
Frame {
msec: 3184
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "253cfd5001e4e4541d9cfd6370291cd2"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3200
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "1b1cab9d331c613dde896829027110f5"
}
Frame {
msec: 3216
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "8127f681a5c475133cfca95483fef2ce"
}
Frame {
msec: 3232
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "1a944877735fe3531d95b418dd75d576"
}
Frame {
msec: 3248
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "47ddcfaed130bf7dd539d965ebebedc1"
}
Frame {
msec: 3264
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "d0c37d1a7e97034d0f41ea6c2fff8f34"
}
Frame {
msec: 3280
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "ea2059d511fdab60e77e9261f81aadfb"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3296
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "11a907436350afa5ff592880303b4344"
}
Frame {
msec: 3312
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "39801aef92c2b1e0ca39bede36840911"
}
Frame {
msec: 3328
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "93463b61a00078f488f3941bc4729100"
}
Frame {
msec: 3344
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "f8d9cbe20b87017d81fbf627f3a3b2cd"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3360
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "2b8d37e7dcfb14394caf19aa8bc4b956"
}
Frame {
msec: 3376
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "bf91006930a3f22f12b62787c57bb91b"
}
Frame {
msec: 3392
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "7ce1d106e9d78a4a64f35f5982d32298"
}
Frame {
msec: 3408
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "e2f3bec9571b08b451309221b34ace5e"
}
Frame {
msec: 3424
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "e2f3bec9571b08b451309221b34ace5e"
}
Frame {
msec: 3440
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "e2f3bec9571b08b451309221b34ace5e"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3456
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "71cd749e039a54aaaa05e1d3ccc738b4"
}
Frame {
msec: 3472
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3488
- hash: "bfd0497c6505d42aefe6341adb850d89"
+ hash: "39e7afb00d53e098c005a1d96a8cc727"
}
Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3488
+ hash: "a9d2fa99fc70919e55293c07427147a2"
+ }
+ Frame {
msec: 3504
- hash: "f60a72dd52f6f319706dc97f873a484f"
+ hash: "96bb62cd9ebc2eba9797605190820349"
}
Frame {
msec: 3520
- hash: "a21fbcbb3c0ede708f2862959b84654f"
+ hash: "111b0d230c44d5d156e082a50c2a2a66"
}
Frame {
msec: 3536
- hash: "40e5f7530391e7641498c7870ce986c9"
+ hash: "1085cebcc8fdaefb2ec03392763c7657"
}
Frame {
msec: 3552
- hash: "809daf15ad3e9f981f1306da18dd6872"
+ hash: "451d670f44ae42d8cbb6a12cc6469d61"
}
Frame {
msec: 3568
- hash: "4b053d234c8c9a5afb7800abe28ea96f"
+ hash: "5c65a7b6ed7b4e85bb883c671aae5136"
}
Frame {
msec: 3584
- hash: "e011e3aaf143befc8e207945fdfc9f47"
+ hash: "2f532511a50d743aa1c7ebcc9b2b7350"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3600
- hash: "55539d51f833b8a98fc14031a4a70c4c"
+ hash: "41424200cb76a0d5d64f8919645f6afb"
}
Frame {
msec: 3616
- hash: "07c2b526c022d0deae61acba26d7ea24"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "7a910e4b17fb7f5d10308e07ea8ce0a3"
}
Frame {
msec: 3632
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "4d9cc5670105acf3bc080cba8e100376"
}
Frame {
msec: 3648
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "a09d3b45bef532ed86d737839592ffc8"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3664
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "70179b7be24acd6d5d0d0de9d8fff74d"
}
Frame {
msec: 3680
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "95964eef01bfc86216a8e91261b867ed"
}
Frame {
msec: 3696
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "12b5e2bbfd573b2b8e33a745cd5af5a6"
}
Frame {
msec: 3712
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3728
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3744
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3760
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3776
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3792
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3808
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3824
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3840
@@ -1078,1802 +1222,106 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3872
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3888
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3904
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3920
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3936
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3952
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3968
- hash: "cc0ab553f98262662e52191e0b370486"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 3984
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4000
- hash: "7d2f24d5a68397bedc2f9e3652715126"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4016
- hash: "55ff9205bb36d8f8965fb122a8686203"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4032
- hash: "8968377cbbdf7a46b6f13690826ac711"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4048
- hash: "8ce9afffac571f1a2cc6986d79dd2c8f"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4064
- hash: "f75c375cdf8e1b83398e9b18e7c39852"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4080
- hash: "20c8db7fb344c056465175ed0fa9518a"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4096
- hash: "8135c2cae0dcf8ee6eccbfdd7b711bc0"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4112
- hash: "659fc24d328058eb118be5613ea25257"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4128
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4144
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4160
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4176
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4192
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4208
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4224
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
Frame {
msec: 4240
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
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"
+ hash: "cb8a5743fd3c5093740bb2a4f57ade81"
}
}
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/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..5cb4f784ba 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: "10a89da9887cb4bbd812c090a8a56797"
+ }
+ 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..8c746bf042 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: "155a834ddaa7128b6f5a2a406b340315"
}
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: "155a834ddaa7128b6f5a2a406b340315"
}
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/qdeclarativemousearea/data/mousearea-flickable.14.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.14.png
new file mode 100644
index 0000000000..87305b348a
--- /dev/null
+++ 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/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/qdeclarativespringanimation/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/clock.qml
new file mode 100644
index 0000000000..0e4e6429c2
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/clock.qml
@@ -0,0 +1,64 @@
+import QtQuick 1.0
+
+Rectangle {
+ id: clock
+ color: "gray"
+ width: 200; height: 200
+
+ property variant hours: 10
+ property variant minutes: 28
+ property variant seconds: 0
+
+ Timer {
+ interval: 1000; running: true; repeat: true; triggeredOnStart: true
+ onTriggered: seconds++
+ }
+
+ Image { id: background; source: "content/clock.png" }
+
+ Image {
+ x: 92.5; y: 27
+ source: "content/hour.png"
+ transform: Rotation {
+ id: hourRotation
+ origin.x: 7.5; origin.y: 73
+ angle: (clock.hours * 30) + (clock.minutes * 0.5)
+
+ Behavior on angle {
+ SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
+ }
+ }
+ }
+
+ Image {
+ x: 93.5; y: 17
+ source: "content/minute.png"
+ transform: Rotation {
+ id: minuteRotation
+ origin.x: 6.5; origin.y: 83
+ angle: clock.minutes * 6
+
+ Behavior on angle {
+ SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
+ }
+ }
+ }
+
+ Image {
+ x: 97.5; y: 20
+ source: "content/second.png"
+ transform: Rotation {
+ id: secondRotation
+ origin.x: 2.5; origin.y: 80
+ angle: clock.seconds * 6
+
+ Behavior on angle {
+ SpringAnimation { spring: 5; damping: 0.25; modulus: 360 }
+ }
+ }
+ }
+
+ Image {
+ anchors.centerIn: background; source: "content/center.png"
+ }
+}
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/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/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml
deleted file mode 100644
index 44c4dcdf7c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml
+++ /dev/null
@@ -1,67 +0,0 @@
-import QtQuick 1.0
-
-Rectangle {
- id: clock
- color: "gray"
- width: 200; height: 200
-
- property variant hours: 10
- property variant minutes: 28
- property variant seconds: 0
-
- Timer {
- interval: 1000; running: true; repeat: true; triggeredOnStart: true
- onTriggered: seconds++
- }
-
- Image { id: background; source: "content/clock.png" }
-
- Image {
- x: 92.5; y: 27
- source: "content/hour.png"
- smooth: true
- transform: Rotation {
- id: hourRotation
- origin.x: 7.5; origin.y: 73
- angle: (clock.hours * 30) + (clock.minutes * 0.5)
-
- Behavior on angle {
- SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
- }
- }
- }
-
- Image {
- x: 93.5; y: 17
- source: "content/minute.png"
- smooth: true
- transform: Rotation {
- id: minuteRotation
- origin.x: 6.5; origin.y: 83
- angle: clock.minutes * 6
-
- Behavior on angle {
- SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
- }
- }
- }
-
- Image {
- x: 97.5; y: 20
- source: "content/second.png"
- smooth: true
- transform: Rotation {
- id: secondRotation
- origin.x: 2.5; origin.y: 80
- angle: clock.seconds * 6
-
- Behavior on angle {
- SpringAnimation { spring: 5; damping: 0.25; modulus: 360 }
- }
- }
- }
-
- Image {
- anchors.centerIn: background; source: "content/center.png"
- }
-}
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..8b6329d95f
--- /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..85c0cce795
--- /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
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 32
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 48
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 64
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 80
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 96
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 112
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 128
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 144
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 160
+ hash: "75c15f88551f961727b547082216d0bb"
+ }
+ Frame {
+ msec: 176
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 192
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 208
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 224
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 240
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 256
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 272
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 288
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 304
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 320
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
+ }
+ Frame {
+ msec: 336
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 352
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 368
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 384
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 400
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 416
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 432
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 448
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 464
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 480
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
+ }
+ Frame {
+ msec: 496
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 512
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 528
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 544
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 560
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 576
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 592
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 608
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 624
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 640
+ hash: "17141b7167d2249238c15cf751b3d8b6"
+ }
+ Frame {
+ msec: 656
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 672
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 688
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 704
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 720
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 736
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 752
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 768
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 784
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 800
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 816
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 832
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 848
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 864
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 880
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 896
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 912
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 928
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 944
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
+ }
+ Frame {
+ msec: 960
+ image: "multilineAlign.0.png"
+ }
+}
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.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml
new file mode 100644
index 0000000000..d7428dd31b
--- /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
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 32
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 48
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 64
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 80
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 96
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 112
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 128
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 144
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 160
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 176
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 192
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 208
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 224
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 240
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 256
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 272
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 288
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 304
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 320
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 336
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 352
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 368
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 384
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 400
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 416
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 432
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 448
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 464
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 480
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+ Frame {
+ msec: 496
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
+ }
+}
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-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..75478566ad
--- /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..84430bb7ac
--- /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..6b9986f019
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml
@@ -0,0 +1,447 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 32
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 48
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 64
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 80
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 96
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 112
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 128
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 144
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 160
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 176
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 192
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 208
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 224
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 240
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 256
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 272
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 288
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 304
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 320
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 336
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 352
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 368
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 384
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 400
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 416
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 432
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 448
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 464
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 480
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 496
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 512
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 528
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 544
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 560
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 576
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 592
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 608
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 624
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 640
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 656
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 672
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 688
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 704
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 720
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 736
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 752
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 768
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 784
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 800
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 816
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 832
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 848
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 864
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 880
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 896
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 912
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 928
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 944
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 960
+ image: "qtbug_14865.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 992
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 1008
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 1024
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1040
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1056
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1072
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1088
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1104
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1120
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1136
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1152
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1168
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1184
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1200
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1216
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1232
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1248
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1264
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1280
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1296
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1312
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1328
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1344
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1360
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1376
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1392
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1408
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1424
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1440
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1456
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1472
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1488
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1504
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1520
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1536
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1552
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1568
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1584
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1600
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1616
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1632
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1648
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1664
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1680
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1696
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1712
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1728
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1744
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1760
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png
new file mode 100644
index 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..88e065b8b4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
index 9439f73210..96144e114e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 32
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 48
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 64
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 80
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 96
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 112
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 128
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 144
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 160
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 176
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 192
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 208
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 224
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 240
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 256
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 272
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 288
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 304
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 320
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 336
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 352
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 368
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 384
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 400
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 416
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 432
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 448
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 464
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 480
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 496
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 512
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 528
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 544
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 560
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 576
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 592
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 608
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 624
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 640
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 656
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 672
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 688
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 704
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 720
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 736
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 752
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 768
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 784
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 800
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 816
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 832
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 848
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 864
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 880
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 896
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 912
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 928
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 944
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 960
@@ -246,7 +246,7 @@ VisualTest {
}
Frame {
msec: 976
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Key {
type: 6
@@ -258,22 +258,22 @@ VisualTest {
}
Frame {
msec: 992
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1008
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1024
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1040
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1056
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png
index 3dfade5c72..4df514af97 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..e752fec6fa 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..d2f8633295 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..016232161d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
index 3e34f04ef0..b5319428e6 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 32
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 48
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 64
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 80
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 96
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 112
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 128
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 144
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 160
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 176
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 192
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 208
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 224
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 240
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 256
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 272
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 288
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 304
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 320
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 336
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 352
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 368
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 384
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 400
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 416
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 432
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 448
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 464
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 480
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 496
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 512
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 528
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 544
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 560
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 576
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 592
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 608
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 624
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 640
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 656
- hash: "3f362ad550db910f1d9f261557c65913"
+ hash: "c73bf21c0c9946e123372c660c78e7dd"
}
Frame {
msec: 672
- hash: "3f362ad550db910f1d9f261557c65913"
+ hash: "c73bf21c0c9946e123372c660c78e7dd"
}
Frame {
msec: 688
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "c73bf21c0c9946e123372c660c78e7dd"
}
Frame {
msec: 704
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 720
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 736
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 752
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 768
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 784
- hash: "a892c67199c23e5d9012a6a24cb45d16"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 800
- hash: "a892c67199c23e5d9012a6a24cb45d16"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 816
- hash: "a892c67199c23e5d9012a6a24cb45d16"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 832
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 848
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "96a83eae50a073573ace90239a64d326"
}
Frame {
msec: 864
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "96a83eae50a073573ace90239a64d326"
}
Frame {
msec: 880
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 896
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 912
- hash: "a7dc1d7dde956d62834de0968261386f"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 928
- hash: "a7dc1d7dde956d62834de0968261386f"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 944
- hash: "a7dc1d7dde956d62834de0968261386f"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 960
@@ -246,199 +246,199 @@ VisualTest {
}
Frame {
msec: 976
- hash: "a7dc1d7dde956d62834de0968261386f"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 992
- hash: "a590e1358fac567dda9fdfc6bfe4ab89"
+ hash: "7b000cccb4e4cdaa53b025d235478b1c"
}
Frame {
msec: 1008
- hash: "a590e1358fac567dda9fdfc6bfe4ab89"
+ hash: "7b000cccb4e4cdaa53b025d235478b1c"
}
Frame {
msec: 1024
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1040
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1056
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1072
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1088
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1104
- hash: "9424caee019aa9bccd4156b0b9ca2723"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1120
- hash: "9424caee019aa9bccd4156b0b9ca2723"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1136
- hash: "9424caee019aa9bccd4156b0b9ca2723"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1152
- hash: "000061a140ab71a44c0480a92ad3bc70"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1168
- hash: "000061a140ab71a44c0480a92ad3bc70"
+ hash: "b8c7416944cb741ceb4ee0e8545037b1"
}
Frame {
msec: 1184
- hash: "000061a140ab71a44c0480a92ad3bc70"
+ hash: "b8c7416944cb741ceb4ee0e8545037b1"
}
Frame {
msec: 1200
- hash: "5dec9638853165428cd15ae02e1d03ce"
+ hash: "b8c7416944cb741ceb4ee0e8545037b1"
}
Frame {
msec: 1216
- hash: "5dec9638853165428cd15ae02e1d03ce"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1232
- hash: "5dec9638853165428cd15ae02e1d03ce"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1248
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1264
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1280
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "0d286d7e274868e87f7de4367b69386e"
}
Frame {
msec: 1296
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "0d286d7e274868e87f7de4367b69386e"
}
Frame {
msec: 1312
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "892e9e8feeb15bbad5f38cb354aa7290"
}
Frame {
msec: 1328
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "892e9e8feeb15bbad5f38cb354aa7290"
}
Frame {
msec: 1344
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "892e9e8feeb15bbad5f38cb354aa7290"
}
Frame {
msec: 1360
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "06d6ad94b01af5b441fd64536f7740ff"
}
Frame {
msec: 1376
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "06d6ad94b01af5b441fd64536f7740ff"
}
Frame {
msec: 1392
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "06d6ad94b01af5b441fd64536f7740ff"
}
Frame {
msec: 1408
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1424
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1440
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1456
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1472
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1488
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1504
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1520
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1536
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1552
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1568
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1584
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1600
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1616
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1632
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1648
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1664
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1680
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1696
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1712
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1728
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
+ hash: "d3d23db79c5f2a374b267bcda8919d1e"
}
Frame {
msec: 1744
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "d3d23db79c5f2a374b267bcda8919d1e"
}
Key {
type: 6
@@ -450,43 +450,43 @@ VisualTest {
}
Frame {
msec: 1760
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1776
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1792
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1808
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1824
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1840
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "6a202f32d3d7a7c9edc97e55c2fe7aca"
}
Frame {
msec: 1856
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "6a202f32d3d7a7c9edc97e55c2fe7aca"
}
Frame {
msec: 1872
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "6a202f32d3d7a7c9edc97e55c2fe7aca"
}
Frame {
msec: 1888
- hash: "976dd5bc154522438f92790f28639512"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1904
- hash: "976dd5bc154522438f92790f28639512"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1920
@@ -494,239 +494,239 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "976dd5bc154522438f92790f28639512"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1952
- hash: "976dd5bc154522438f92790f28639512"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1968
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 1984
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 2000
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 2016
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 2032
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2048
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2064
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2080
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2096
- hash: "1a978ed6951afe40912efcfb54dcce65"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2112
- hash: "1a978ed6951afe40912efcfb54dcce65"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2128
- hash: "1a978ed6951afe40912efcfb54dcce65"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2144
- hash: "a57eea59fe6475164e24688489977869"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2160
- hash: "a57eea59fe6475164e24688489977869"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2176
- hash: "a57eea59fe6475164e24688489977869"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2192
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "f31d3f99faff3289b38ec91a43108707"
}
Frame {
msec: 2208
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "f31d3f99faff3289b38ec91a43108707"
}
Frame {
msec: 2224
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "f31d3f99faff3289b38ec91a43108707"
}
Frame {
msec: 2240
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "60468f768e70c91cd28dca9479ed7738"
}
Frame {
msec: 2256
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "60468f768e70c91cd28dca9479ed7738"
}
Frame {
msec: 2272
- hash: "04c62a4d01e9309eaeea87902013c8b9"
+ hash: "fd5e8714cdd406f5626682c15a6efa38"
}
Frame {
msec: 2288
- hash: "04c62a4d01e9309eaeea87902013c8b9"
+ hash: "fd5e8714cdd406f5626682c15a6efa38"
}
Frame {
msec: 2304
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "fd5e8714cdd406f5626682c15a6efa38"
}
Frame {
msec: 2320
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2336
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2352
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2368
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2384
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2400
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "8ab72206d4ba87effd44844c67ab4d53"
}
Frame {
msec: 2416
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "8ab72206d4ba87effd44844c67ab4d53"
}
Frame {
msec: 2432
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2448
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2464
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2480
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2496
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2512
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2528
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2544
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2560
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2576
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2592
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2608
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2624
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2640
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2656
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2672
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2688
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2704
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2720
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "1c6d8786cb42afa2af611dec5ebdcda7"
}
Frame {
msec: 2736
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "1c6d8786cb42afa2af611dec5ebdcda7"
}
Frame {
msec: 2752
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2768
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2784
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2800
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2816
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2832
- hash: "f44b88b80219497370b5d2ad380d03bf"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2848
- hash: "f44b88b80219497370b5d2ad380d03bf"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2864
- hash: "a093510751799f3466156f9775988044"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2880
@@ -734,239 +734,239 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "a093510751799f3466156f9775988044"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2912
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2928
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "a7f26f5fbcc97f408974e4bc23fd0b70"
}
Frame {
msec: 2944
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "a7f26f5fbcc97f408974e4bc23fd0b70"
}
Frame {
msec: 2960
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "913478b8d5d05967efd1c83e80e773e2"
}
Frame {
msec: 2976
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "913478b8d5d05967efd1c83e80e773e2"
}
Frame {
msec: 2992
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "913478b8d5d05967efd1c83e80e773e2"
}
Frame {
msec: 3008
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3024
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3040
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3056
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3072
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3088
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3104
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3120
- hash: "df90afe882b18f3fd7b12e52ff36e66f"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3136
- hash: "df90afe882b18f3fd7b12e52ff36e66f"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3152
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
+ hash: "9059402dce5cb1813af8f7ebbd831bca"
}
Frame {
msec: 3168
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
+ hash: "9059402dce5cb1813af8f7ebbd831bca"
}
Frame {
msec: 3184
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
+ hash: "9059402dce5cb1813af8f7ebbd831bca"
}
Frame {
msec: 3200
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "80387fc8aedc0c490c689c3a1711fe9f"
}
Frame {
msec: 3216
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "80387fc8aedc0c490c689c3a1711fe9f"
}
Frame {
msec: 3232
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "80387fc8aedc0c490c689c3a1711fe9f"
}
Frame {
msec: 3248
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "f461bf58cbfd345a3f4e087cfcb0e9f0"
}
Frame {
msec: 3264
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "f461bf58cbfd345a3f4e087cfcb0e9f0"
}
Frame {
msec: 3280
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3296
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3312
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3328
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3344
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3360
- hash: "4baf5c1227de45f9e620fe6eb0590014"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3376
- hash: "4baf5c1227de45f9e620fe6eb0590014"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3392
- hash: "4baf5c1227de45f9e620fe6eb0590014"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3408
- hash: "e1ce9c06e59fb6348fff3ce650c7943e"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3424
- hash: "e1ce9c06e59fb6348fff3ce650c7943e"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3440
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "c7a9e47b613745858a76a57e1782b566"
}
Frame {
msec: 3456
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "c7a9e47b613745858a76a57e1782b566"
}
Frame {
msec: 3472
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "b90d46cbd9d7d1d82cb9abfbe27fc549"
}
Frame {
msec: 3488
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "b90d46cbd9d7d1d82cb9abfbe27fc549"
}
Frame {
msec: 3504
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "b90d46cbd9d7d1d82cb9abfbe27fc549"
}
Frame {
msec: 3520
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3536
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3552
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3568
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3584
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3600
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3616
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3632
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3648
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3664
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3680
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3696
- hash: "6bfd7cfd6369df1eb570fda103d9e009"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3712
- hash: "6bfd7cfd6369df1eb570fda103d9e009"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3728
- hash: "b6dba4a456cd8d1b62501039cb796625"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3744
- hash: "b6dba4a456cd8d1b62501039cb796625"
+ hash: "ee357c3850d0f328db859e7b790bed83"
}
Frame {
msec: 3760
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "ee357c3850d0f328db859e7b790bed83"
}
Frame {
msec: 3776
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "f706095272153c1e9fc4a4825ba54d91"
}
Frame {
msec: 3792
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "f706095272153c1e9fc4a4825ba54d91"
}
Frame {
msec: 3808
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3824
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3840
@@ -974,18 +974,18 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "d2e873e69aed3e0b6e53123cd63e386c"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3872
- hash: "d2e873e69aed3e0b6e53123cd63e386c"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3888
- hash: "baa8edfce77628c7a1ec83adce96e2c6"
+ hash: "97cb5f52e1a5e82a15542b7e5f772fba"
}
Frame {
msec: 3904
- hash: "baa8edfce77628c7a1ec83adce96e2c6"
+ hash: "97cb5f52e1a5e82a15542b7e5f772fba"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png
index 80549b4609..8caaf5f19a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
index 76c2ee1d87..30df3facf5 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "17f39c541a0b5bf958c3fdaa51b72fec"
+ hash: "2e258ad7cb0a2cd7c6c47a0b0a9563c1"
}
Frame {
msec: 32
- hash: "da61bb1afef532688045116bcce1da40"
+ hash: "d818e0f4f1011a2a8f1d0d803fa18bc0"
}
Frame {
msec: 48
- hash: "04ddcb158ce8ade4ea9ad16405c7d81a"
+ hash: "44b37be97bbd1f0e26d81f76d9643e51"
}
Frame {
msec: 64
- hash: "7ca43ec7a6e630c9bc07478abf5c2686"
+ hash: "3079a5cf6b8277ae3e1b29ae09d04adc"
}
Frame {
msec: 80
- hash: "ae2c4e73395cf4a5663110ba1b9996b2"
+ hash: "ba899e6f18abb7105f915cef4e60f1e1"
}
Frame {
msec: 96
- hash: "5059426cced6ff6f92102100416b34d8"
+ hash: "6d2d2b3dc8afa60e32a39449ba90f78d"
}
Frame {
msec: 112
- hash: "e816cb366ba9498d0ae194b789c25f12"
+ hash: "965af350a8fc20c7bcffb370802bc9d9"
}
Frame {
msec: 128
- hash: "fd8cd9b2916b7045086df92d19e8b436"
+ hash: "8e088db1ff0eb9f5c28268dee929928c"
}
Frame {
msec: 144
- hash: "965dfe4cad0a3d07c0b086d6351a43a1"
+ hash: "a0ba6c6bd1e491778294346eeabd8138"
}
Frame {
msec: 160
- hash: "56759a670c864d5f2ae392fa8545f3a4"
+ hash: "068a018a5c017cb76ebf3721e0acdb35"
}
Frame {
msec: 176
- hash: "8d3c2be4fcef526650cc84b5c2d29170"
+ hash: "efa65cae0a4d027c2ec508deecef8aa5"
}
Frame {
msec: 192
- hash: "6d9f995bef186a69b259b8d18470f0e7"
+ hash: "9c224e97aa56c6b203a48fb689d72c9a"
}
Frame {
msec: 208
- hash: "670c68a0943c5f037f8bf4c9ca0df501"
+ hash: "4f78af1e82a2dd46bab2d237d4f574e5"
}
Frame {
msec: 224
- hash: "6218cf02cb762aa6c33985fe1b2e47bb"
+ hash: "7d022c13e3ef07ca0b6618ae8865dbf1"
}
Frame {
msec: 240
- hash: "6e3424f2b72d6582ceb5a6c1bfe3dba4"
+ hash: "1dc2ecf6cb92cd7d9e467de0049a8598"
}
Frame {
msec: 256
- hash: "fb819344ab1d2966b043be790831e680"
+ hash: "262174926ac657c3cd788e2383b5842b"
}
Frame {
msec: 272
- hash: "a729845b780cc708ddd578eab3bc0ab1"
+ hash: "984c40aaa927f9e9e73ad228f057d3d9"
}
Frame {
msec: 288
- hash: "543f6566c4dfaecb70007848cc4f8525"
+ hash: "0c74101beaeb0a59c1e6b1bf751ca71d"
}
Frame {
msec: 304
- hash: "5497699414bd8a428ead9703dc7273d5"
+ hash: "1c2dd6a6675014255e83c2ae734d717b"
}
Frame {
msec: 320
- hash: "e9230e525bb0ce33fe4bf3a2c948357d"
+ hash: "f6ac3e9e82a9a710f500f8053b6030ac"
}
Frame {
msec: 336
- hash: "ef6a6989f013d444547c0b98a65a34bf"
+ hash: "9676fdc060e5784e96534a962992c024"
}
Frame {
msec: 352
- hash: "ee89f5163fe269884d59acac7fc23336"
+ hash: "c46634183e4bde82419bf757bd674a72"
}
Frame {
msec: 368
- hash: "0ffb11ceccdc607c1a072dde4aa40f93"
+ hash: "d04d082f4a1602a308da7f373cbb4094"
}
Frame {
msec: 384
- hash: "97a51d7916e04815724506e289040e2a"
+ hash: "a4178c9ffbb74f3f221fc63bee26ca35"
}
Frame {
msec: 400
- hash: "a63d6d73827e1b40a7fec76e6555d7ab"
+ hash: "0667b13789a501995b2846f7d93fb973"
}
Frame {
msec: 416
- hash: "d3eaf72442852317a48dc2b638ad48be"
+ hash: "fda46bf0beecbb4326b2fc6f6926f0a7"
}
Frame {
msec: 432
- hash: "fa867a486d51089ddfeb60b9d44b329e"
+ hash: "85cbdea027d76dee1dad376679a40a22"
}
Frame {
msec: 448
- hash: "834ee944cfc63209bcba94153ccd2c4e"
+ hash: "0fd56200749ea5882e1bd714e9803d44"
}
Frame {
msec: 464
- hash: "6d637d4763ae457233ab669f9f124bc1"
+ hash: "10bf5c477f64f442990716b7eec8fd70"
}
Frame {
msec: 480
- hash: "66c60bd9de1870f46b726c404ab924d5"
+ hash: "7cbd8ba3f09c3d00051cd33006381afb"
}
Frame {
msec: 496
- hash: "088499b53390e3a2c3ca7f42cac101a4"
+ hash: "dca10161836025808cddce9fd93f2412"
}
Frame {
msec: 512
- hash: "19d41f7696c86120460c4db7a0f9be1a"
+ hash: "b949ec6303ccaafc203066c7f9b33ef2"
}
Frame {
msec: 528
- hash: "cd3ae14964e174db94e3e6c8609f366a"
+ hash: "853c521bad75c08c0dfe3a00bed01136"
}
Frame {
msec: 544
- hash: "0c2172e091c2fb42d7c016779fa543d7"
+ hash: "dd76c440dc8cfcb7305409483d21d65d"
}
Frame {
msec: 560
- hash: "7534175e24b2cbab08518de8fc691003"
+ hash: "c9b70db4b94e4b0cc855102f43b8e731"
}
Frame {
msec: 576
- hash: "a9ef64d20b4f93e60f25753e2d7dd2e0"
+ hash: "d196057b8aa1e11ec9cf11032b57ca03"
}
Frame {
msec: 592
- hash: "d8e62a9fec27bfc892b0f3034bc73c3f"
+ hash: "0fae715746a8a340a8f3c4428cf96783"
}
Frame {
msec: 608
- hash: "f8eee41f72e17693074a2ac250bb850e"
+ hash: "dd2e89d00ce85b167fbc822fedbfb449"
}
Frame {
msec: 624
- hash: "3a08b62a8aa1f410415afbd7b8ee8728"
+ hash: "a5228adf745f580364eafcbbdd994178"
}
Frame {
msec: 640
- hash: "0c4fba2bc8b7e440736f4a23d048c23c"
+ hash: "f750f588ee00805bc3757940f95de9ae"
}
Frame {
msec: 656
- hash: "521264dbeec0fbe3a467739f0c3f7b85"
+ hash: "55a79fefc2bf6d42b442e68150e3a9bc"
}
Frame {
msec: 672
- hash: "2c455560a624acfb7f316eae8926d765"
+ hash: "7b932e7585e66cc7cd31f858ce78a6e1"
}
Frame {
msec: 688
- hash: "c9fa632a0998cfae39d434b623b3060d"
+ hash: "10f204c59a5bff0c49dfc7691c35cef8"
}
Frame {
msec: 704
- hash: "506ea16572fa0ee72cddcedfe5b4b9ea"
+ hash: "cf901c80729eb0b83b46777e727d43e2"
}
Frame {
msec: 720
- hash: "83ae06a3ad24d2a6d49c71df2a287716"
+ hash: "f6bf6e11ef6a71d7e746fae1d0a44531"
}
Frame {
msec: 736
- hash: "d4b11b45b4f97de0c0b878b97b804f09"
+ hash: "4a8795196ece8c0ef18319008dbc0f2f"
}
Frame {
msec: 752
- hash: "868aac6c273b7cc90c31c14298ab9a3b"
+ hash: "44d32f0b5377ad3b08928413f20e95e1"
}
Frame {
msec: 768
- hash: "03d4222586194bb6513305d1837d3467"
+ hash: "9e0dd160a465573cbac831a14e36ba6d"
}
Frame {
msec: 784
- hash: "21e6cd89f06077bd5d346c7ccb8fa1e9"
+ hash: "fb2e2522cee569632d9682aa04e7ca08"
}
Frame {
msec: 800
- hash: "326092c4c29217f5afb5730ab3984353"
+ hash: "71b0e8d7671cee10f4f71a80abcde7ec"
}
Frame {
msec: 816
- hash: "4963d64093e65fe1973ffab5b7a15abc"
+ hash: "4affee92d320d6eca9995ddd8989627f"
}
Frame {
msec: 832
- hash: "3125e6e553bbf3f2fcf8fbf797a0c1f8"
+ hash: "b3e5e26a34cd491d3cd23f4e611266e2"
}
Frame {
msec: 848
- hash: "879b24c994d4a9854d08bda2bbf2ceda"
+ hash: "aa185efe8d0c4c61d4df55266830cfd8"
}
Frame {
msec: 864
- hash: "03c4320dc2aa030c341d54899869b561"
+ hash: "19c01ead1135f84b4b3a32583815fd10"
}
Frame {
msec: 880
- hash: "ae0e91975aecc6a416b4a23504fced32"
+ hash: "a231a722225c26ff764f16570d1e6beb"
}
Frame {
msec: 896
- hash: "e4150bdf0d4bab9bddc4605a9bde5b69"
+ hash: "466fce12d10bd4b714d4ead14d1c5839"
}
Frame {
msec: 912
- hash: "dc961cb82a0e58603b3914f16f0a3f52"
+ hash: "158650554c8467ed7d93c3c11177e041"
}
Frame {
msec: 928
- hash: "5339507c303e42ecab853ca1688881f3"
+ hash: "ac16910bc816ca6c76a78160dda8380d"
}
Frame {
msec: 944
- hash: "a7c616c57f98eb03c1501747ea1a8b45"
+ hash: "23ac6eeb0c9bd48dbc844b1263a18cbb"
}
Frame {
msec: 960
@@ -246,58 +246,58 @@ VisualTest {
}
Frame {
msec: 976
- hash: "773ad6bc56f80bd5f6ce346ae0bc79c9"
+ hash: "3da0b9d963113cfb58152bac1c757065"
}
Frame {
msec: 992
- hash: "18b9ebfb9e5beac337143cc625fdfad7"
+ hash: "e1a33345ee1372069d9282406f1e5605"
}
Frame {
msec: 1008
- hash: "efb9f12a98ea137e2b50d344c21c4a89"
+ hash: "da872c570bccf17e88ac7db1d6d076ae"
}
Frame {
msec: 1024
- hash: "5b880958b3d20c09a10189cfc5f7b671"
+ hash: "6feea54c6a7f9895001efeff177f9be9"
}
Frame {
msec: 1040
- hash: "edf2d8c174ac6e2e3a887336dc04df8c"
+ hash: "09049b33ca46a2fc2d06855e29ae66bf"
}
Frame {
msec: 1056
- hash: "ad04b9e0e88695a13032abae8fef6f32"
+ hash: "cd96d789f57ac1d425942416337174f1"
}
Frame {
msec: 1072
- hash: "e4ad91c9da3e954cac33ce98832fee1c"
+ hash: "0a763dd626e27ad14963aecfb8d7673c"
}
Frame {
msec: 1088
- hash: "a853212cf0ddc17cb0eb9be7f2ac5475"
+ hash: "3d81f68bb7aac95b66b0cd0defbb3657"
}
Frame {
msec: 1104
- hash: "a03f7ac2553fe114c4591ed98dab3ceb"
+ hash: "469b862006f99dfefcca803bc49287e3"
}
Frame {
msec: 1120
- hash: "5de7491803582e0d13d2ff3e2eb3df82"
+ hash: "c3f698102bd46231430ab9e8029b8192"
}
Frame {
msec: 1136
- hash: "0685263ac468ce39b468d37a20f7e5f8"
+ hash: "421a9b4848a59281aea73c08a7219a33"
}
Frame {
msec: 1152
- hash: "14d4ab3f40dc6a0835c56c0f84256182"
+ hash: "0066eaa302678a4be35dca0c3ed33b1c"
}
Frame {
msec: 1168
- hash: "6a8c61c31c3d00592863ad356c45b354"
+ hash: "4cceb05bfeb231189b66f1fbdfaeccd3"
}
Frame {
msec: 1184
- hash: "08b3e3388469b1a62d3fc7f7a94f85a2"
+ hash: "ccf229cdd6fde7ef663791d27a008bee"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png
index 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..cd436b5ffb 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..e47b47954a
--- /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..0d3c672804
--- /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..ba833a26dd 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-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..f41c16574c 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..539e4df892 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..47ceaac762 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..e24a4535c0 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..ecf8335c19 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..3d8709fd16 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..ff5db4179b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml
@@ -6,239 +6,287 @@ VisualTest {
}
Frame {
msec: 16
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "c1bb09480464b7813bc10b0093d14745"
}
Frame {
msec: 32
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 48
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 64
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 80
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 96
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 112
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 128
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 144
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 160
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 176
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 192
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 208
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 224
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 240
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 256
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 272
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 288
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 304
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "a7295dcc92f80a5f343bf05076a03748"
}
Frame {
msec: 320
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57"
}
Frame {
msec: 336
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "419c538908d0226ff4485f1094eaa08e"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 352
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "8afe64448d42419f97ca207487b3b0f8"
}
Frame {
msec: 368
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "86091218d2d066d8f95a460426266369"
}
Frame {
msec: 384
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "fc45978cac92b6cdeeecc2dd4c29aa53"
}
Frame {
msec: 400
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "03a90ae5cbe68cc210e303c78a14e065"
}
Frame {
msec: 416
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "15603a997aa02afb688aa74cd930f3b4"
}
Frame {
msec: 432
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "90bf6b2bf89e1440f0c4d1044c1bd22c"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 448
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "4dbdc16538cbbf1a87c6a54e09e02b16"
}
Frame {
msec: 464
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "2011ee59d2ec4bb0ae0d63727f091648"
}
Frame {
msec: 480
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 496
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 512
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 528
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 544
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 560
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 576
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "b4205f141a7a6b646cf641ba922d588b"
}
Frame {
msec: 592
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "94c3adf5da700bb63ed6eaf0adf8d037"
}
Frame {
msec: 608
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "62c4757a2e26341655e27417f85ba6d8"
}
Frame {
msec: 624
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "9de2ce48334b088c0a0960a581f43a36"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 640
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "9ca827d4812521d1590ca6e7117bd788"
}
Frame {
msec: 656
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "66f65cd7215ea89e60d8f60337fffe97"
}
Frame {
msec: 672
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "05caae5e0d092c4d0595286aa4baa6a0"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 688
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "2282153f3ae493aa6ad5377b12d88043"
}
Frame {
msec: 704
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "aee2503a5d4ec61795b0486da5c53867"
}
Frame {
msec: 720
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "f564e1ae90bc6b1ea4bc84f1729eb487"
}
Frame {
msec: 736
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "f5c70adef5725a0574b63dd5ab7d7b12"
}
Frame {
msec: 752
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "74ed3230417c69b0dc82ce9cfe4b6cd0"
}
Frame {
msec: 768
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "374270279bcc00167d2b63bf9a658785"
}
Frame {
msec: 784
- hash: "24cebf60ade86469a154abaa64f3b40d"
+ hash: "68445a2b5470e44baf7af95efc20ba33"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 800
- hash: "1100ef4e2db234ea77ff4c70df6bfbe7"
+ hash: "5add6c9527edf6bbdb3a79b8a524db70"
}
Frame {
msec: 816
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ hash: "01a96c8407fa2c0f9e7a822249ac9adc"
}
Frame {
msec: 832
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "6b9af295d8f2fb5ba8d9c234596d0a88"
}
Frame {
msec: 848
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "3837442e90c2a1534e21d21bfc3b46e1"
}
Frame {
msec: 864
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "afd7d2494dae8e7ef40a165ccc627313"
}
Frame {
msec: 880
- hash: "531c5ca6992c4a12927c61e22c02dd6b"
+ hash: "6e7058d540b26d3c5f15804f2f93b835"
}
Frame {
msec: 896
- hash: "127cc30967f95cb88f4238e0b33c741d"
+ hash: "ffa489a15db741d8b835d998336bc1b3"
}
Frame {
msec: 912
- hash: "3c3fb1d8dbe7443f80550a30ada7f120"
+ hash: "5a0308d1d2a6a36e16ddb312294fcbf8"
}
Frame {
msec: 928
- hash: "edca065d42bf9b63a79d1e97d1a1eed0"
+ hash: "bd56ed24908c7e8ec4e5ebc75a19ca86"
}
Frame {
msec: 944
- hash: "1e4424f1f40bfce3205e1d1401ab0dcf"
+ hash: "7bd56b12087226100da27776f8943427"
}
Frame {
msec: 960
@@ -246,271 +294,287 @@ VisualTest {
}
Frame {
msec: 976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f48a56350bba266c2f19deb46d39e174"
}
Frame {
msec: 992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9587bb118f2eb2bf8bb3cfc40ed18310"
}
Frame {
msec: 1008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f9e9622427ebaf85369b3013ae9aaf0"
}
Frame {
msec: 1024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f9e9622427ebaf85369b3013ae9aaf0"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9587bb118f2eb2bf8bb3cfc40ed18310"
}
Frame {
msec: 1056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f48a56350bba266c2f19deb46d39e174"
}
Frame {
msec: 1072
- hash: "90ac5ad7ce23786fe838426605e737e1"
+ hash: "8234f16d07e76aeedb6ca14d622453cb"
}
Frame {
msec: 1088
- hash: "1e4424f1f40bfce3205e1d1401ab0dcf"
+ hash: "7bd56b12087226100da27776f8943427"
}
Frame {
msec: 1104
- hash: "edca065d42bf9b63a79d1e97d1a1eed0"
+ hash: "bd56ed24908c7e8ec4e5ebc75a19ca86"
}
Frame {
msec: 1120
- hash: "3c3fb1d8dbe7443f80550a30ada7f120"
+ hash: "5a0308d1d2a6a36e16ddb312294fcbf8"
}
Frame {
msec: 1136
- hash: "127cc30967f95cb88f4238e0b33c741d"
+ hash: "ffa489a15db741d8b835d998336bc1b3"
}
Frame {
msec: 1152
- hash: "531c5ca6992c4a12927c61e22c02dd6b"
+ hash: "6e7058d540b26d3c5f15804f2f93b835"
}
Frame {
msec: 1168
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "afd7d2494dae8e7ef40a165ccc627313"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1184
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "1d5c9458d568df773dbff4e333e14de0"
}
Frame {
msec: 1200
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "8eef242d89b7e2eff7678030f9fd808e"
}
Frame {
msec: 1216
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ hash: "97dc6ebbf64a19f5026c02ea4c79d63b"
}
Frame {
msec: 1232
- hash: "1100ef4e2db234ea77ff4c70df6bfbe7"
+ hash: "52d2135428c3c2bf85f0fa7c2ba01a25"
}
Frame {
msec: 1248
- hash: "24cebf60ade86469a154abaa64f3b40d"
+ hash: "c713bd1d1ab2df81292020e6e822546c"
}
Frame {
msec: 1264
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "0c61ff34510168e324c53786720dd953"
}
Frame {
msec: 1280
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "ba1488f2d9d4482cdf41c40af7642030"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1296
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "91d2da369579bb72641d4e7e7cd696f5"
}
Frame {
msec: 1312
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "1cf1d30d6def868a60f434fe84c23c47"
}
Frame {
msec: 1328
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "ba5b3005af3c44caaf7272cbb56e60da"
}
Frame {
msec: 1344
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "116ab7576b5e45e6009920854ff87f39"
}
Frame {
msec: 1360
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "294c76d6f63c230af666b0b86e0c9844"
}
Frame {
msec: 1376
- hash: "3caa36cc3857803248d12ec09ea357df"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "c721a5b17b1eb4a063fa3b727d13ba62"
}
Frame {
msec: 1392
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "a98bd750b67a0ef8831c9c66a0b06a28"
}
Frame {
msec: 1408
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "7739509b0f5e62207ba62262d8822388"
}
Frame {
msec: 1424
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "62d70a7e3ce290c52d37090bf899377c"
}
Frame {
msec: 1440
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "3f3c1137c02e14796c3a4537337d1dd8"
}
Frame {
msec: 1456
- hash: "a6bdf56b4f8783969935488e1955e59c"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "4997a45af699c1face114c72a9ce067d"
}
Frame {
msec: 1472
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1488
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1504
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1520
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1536
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1552
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1568
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "a4810a97e51259350bb1543dffc156af"
}
Frame {
msec: 1584
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "838871072acbefc1c8c488f47312da9b"
}
Frame {
msec: 1600
- hash: "479f192c8cf7b8e4407655382402700f"
+ hash: "8cfe8847729878519669caa8b702d910"
}
Frame {
msec: 1616
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "a2fd8e049d03b87a306bb5b81e3f7311"
}
Frame {
msec: 1632
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "29bd4d5e36cb6b232f513b6bb0c00b28"
+ }
+ Frame {
+ msec: 1648
+ hash: "9637f14efb2e355bfe886d7c5f2a8d38"
}
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: "0365fa8845c3c1e53ef35d22423eb973"
}
Frame {
msec: 1680
- hash: "29a517a66867f6f527c6db5bb5651f92"
+ hash: "bf88d5d2cd2ff062c1cc8a391a238b1d"
}
Frame {
msec: 1696
- hash: "a4fde31f55f866224eca2b51586b601f"
+ hash: "46b22f33eb80f013e44da11153441864"
}
Frame {
msec: 1712
- hash: "9c9c7fb9fb8aab8c24f2eb03df791a00"
+ hash: "05ae42e3a0296a569dec147c76be273d"
}
Frame {
msec: 1728
- hash: "dd972e37166d1186a717a956343a7758"
- }
- Key {
- type: 7
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "1a8cc65973d08bb949f7a71b0bb8be1a"
}
Frame {
msec: 1744
- hash: "1af5e24651ef422ff93dab7bd2a8f832"
+ hash: "ca3bde8cd8de81c4210fcfd000fe0f5e"
}
Frame {
msec: 1760
- hash: "885473be4e44bb1f4b014f9b3d4d2e74"
+ hash: "e06d104d1ed451eea4c1d9bdae9d10f4"
}
Frame {
msec: 1776
- hash: "1f6e0407392322c34567caaecae5b449"
+ hash: "c95153ae401ad8a2e839905841c074f3"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1792
- hash: "dcae85a4b05c450b6b1619f9fd7e17b0"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 1808
- hash: "3b872e5030e34edf678ac2547df48699"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 1824
- hash: "5d76b324496297d08cff57b4c21ce592"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 1840
- hash: "4acfe3c4cf2f4e477f1a72817af556d2"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 1856
- hash: "a04671fe8d28cfb629f2090e342747fb"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 1872
- hash: "2474db802c7d8e0ec8fa7f958c04bf30"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 1888
- hash: "11a1e1f38c407de4bc069aa192319fe4"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 1904
- hash: "ec8aacc8d2280068dd7f020e8648afea"
+ hash: "7031966f014d4acd5b00c46c89f61403"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1920
@@ -518,271 +582,271 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "fbbe4d0fed6274968a89e02bb1ca5685"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 1952
- hash: "13d478424a8f0cab8bab6a157efce318"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 1968
- hash: "ea6bc9ec217fb80b86276a2675c08a0f"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 1984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 2000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 2016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c1bb09480464b7813bc10b0093d14745"
}
Frame {
msec: 2032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 2048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 2064
- hash: "ea6bc9ec217fb80b86276a2675c08a0f"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 2080
- hash: "13d478424a8f0cab8bab6a157efce318"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 2096
- hash: "fbbe4d0fed6274968a89e02bb1ca5685"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 2112
- hash: "00dedd48bd6861cb4bf4953162a67cc0"
- }
- Key {
- type: 6
- key: 16777248
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 2128
- hash: "ec8aacc8d2280068dd7f020e8648afea"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 2144
- hash: "11a1e1f38c407de4bc069aa192319fe4"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 2160
- hash: "2474db802c7d8e0ec8fa7f958c04bf30"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 2176
- hash: "a04671fe8d28cfb629f2090e342747fb"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 2192
- hash: "4acfe3c4cf2f4e477f1a72817af556d2"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 2208
- hash: "5d76b324496297d08cff57b4c21ce592"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 2224
- hash: "3b872e5030e34edf678ac2547df48699"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2240
- hash: "dcae85a4b05c450b6b1619f9fd7e17b0"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 2256
- hash: "1f6e0407392322c34567caaecae5b449"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 2272
- hash: "885473be4e44bb1f4b014f9b3d4d2e74"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 2288
- hash: "1af5e24651ef422ff93dab7bd2a8f832"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 2304
- hash: "dd972e37166d1186a717a956343a7758"
+ hash: "a7295dcc92f80a5f343bf05076a03748"
}
Frame {
msec: 2320
- hash: "9c9c7fb9fb8aab8c24f2eb03df791a00"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57"
}
Frame {
msec: 2336
- hash: "aec9683f3a677dab781bdf3bbf7cce5e"
+ hash: "419c538908d0226ff4485f1094eaa08e"
}
Frame {
msec: 2352
- hash: "63c6a7810dec832f1b8288807f1d932a"
+ hash: "8afe64448d42419f97ca207487b3b0f8"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2368
- hash: "70409eeee50fbb54097a3c430e1e1f21"
+ hash: "86091218d2d066d8f95a460426266369"
}
Frame {
msec: 2384
- hash: "efc77b82c0ffd7f3fbe5fed06ea418bd"
+ hash: "fc45978cac92b6cdeeecc2dd4c29aa53"
}
Frame {
msec: 2400
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "03a90ae5cbe68cc210e303c78a14e065"
}
Frame {
msec: 2416
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "15603a997aa02afb688aa74cd930f3b4"
}
Frame {
msec: 2432
- hash: "479f192c8cf7b8e4407655382402700f"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "90bf6b2bf89e1440f0c4d1044c1bd22c"
}
Frame {
msec: 2448
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "4dbdc16538cbbf1a87c6a54e09e02b16"
}
Frame {
msec: 2464
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "2011ee59d2ec4bb0ae0d63727f091648"
}
Frame {
msec: 2480
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2496
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2512
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2528
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2544
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2560
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2576
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "02996bef06c74f34cf8be4cf4d1392d5"
}
Frame {
msec: 2592
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "2d8cb2d213ce22132ba63a829c07f768"
}
Frame {
msec: 2608
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "0a16c282a18fdc657ea48fb208dea494"
}
Frame {
msec: 2624
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "86baec52ccb8ae818439c637c5be1514"
}
Frame {
msec: 2640
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "72e2415581ba2a96b8f23cf8f5985afb"
}
Frame {
msec: 2656
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "7776d964b2b5f80bac51a29d298a067f"
}
Frame {
msec: 2672
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "3b5d0a9f961c2102a4118a8e2d2793ae"
}
Frame {
msec: 2688
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "048b5e51d9bcf8d1b24c8f8f98b7b4e4"
}
Frame {
msec: 2704
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "d30e5d7c27b72ec95c41a87741061a3f"
}
Frame {
msec: 2720
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "0374cc41cdb6528e212f678e0e049f2b"
}
Frame {
msec: 2736
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "c80bc90c90b02d1d42176f16fa992f27"
}
Frame {
msec: 2752
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "70182707dbdf87a2c8db556f030bec17"
}
Frame {
msec: 2768
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "0c6c0c3d27d87128d65b40789714dd6b"
}
Frame {
msec: 2784
- hash: "24cebf60ade86469a154abaa64f3b40d"
- }
- Key {
- type: 7
- key: 16777248
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "46e1debee4ca606492a36de6191f4594"
}
Frame {
msec: 2800
- hash: "1100ef4e2db234ea77ff4c70df6bfbe7"
+ hash: "f327bb2ea12b2baffc0a98d44a0ded16"
}
Frame {
msec: 2816
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ hash: "15bc04b65bde5e8ca69b6a1f88647c16"
}
Frame {
msec: 2832
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "27156c3309835ec20a02877f1188e14a"
}
Frame {
msec: 2848
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "a163019c9feff0f4d1bb4aaedcd2ecd4"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2864
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "c5569c3c06bcf01b7e69e7f7ad6203ef"
}
Frame {
msec: 2880
@@ -790,511 +854,527 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "127cc30967f95cb88f4238e0b33c741d"
+ hash: "5d1c41e371b1a95426882b3991383b6b"
}
Frame {
msec: 2912
- hash: "3c3fb1d8dbe7443f80550a30ada7f120"
+ hash: "4b9581a767fc1c94451780c044baf003"
}
Frame {
msec: 2928
- hash: "edca065d42bf9b63a79d1e97d1a1eed0"
+ hash: "39978ba9bb1a535d7735228c650add38"
}
Frame {
msec: 2944
- hash: "1e4424f1f40bfce3205e1d1401ab0dcf"
+ hash: "1a2afe394227dcf2da118559e2e58fd7"
}
Frame {
msec: 2960
- hash: "90ac5ad7ce23786fe838426605e737e1"
+ hash: "2f6bdb7af9bf9334231180b6113b125f"
}
Frame {
msec: 2976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "85017ca5ca286830e2745abf2f1f963a"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3760b42a25e332c6df49bd92109dae98"
}
Frame {
msec: 3008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7c0347f97f9e4d7fcf47a90b336d264a"
}
Frame {
msec: 3024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7c0347f97f9e4d7fcf47a90b336d264a"
}
Frame {
msec: 3040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3760b42a25e332c6df49bd92109dae98"
}
Frame {
msec: 3056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "85017ca5ca286830e2745abf2f1f963a"
}
Frame {
msec: 3072
- hash: "90ac5ad7ce23786fe838426605e737e1"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "2f6bdb7af9bf9334231180b6113b125f"
}
Frame {
msec: 3088
- hash: "cf467854dfde9b2111bc6e7e4442aab5"
+ hash: "1a2afe394227dcf2da118559e2e58fd7"
}
Frame {
msec: 3104
- hash: "df6f025130dc82f4764def81cec5fa7b"
+ hash: "39978ba9bb1a535d7735228c650add38"
}
Frame {
msec: 3120
- hash: "bdcafed4ae9c890eec2e3e0cb2ff5a14"
+ hash: "4b9581a767fc1c94451780c044baf003"
}
Frame {
msec: 3136
- hash: "14b328c8ec6276e022643102af80fa44"
+ hash: "5d1c41e371b1a95426882b3991383b6b"
}
Frame {
msec: 3152
- hash: "078d75d72bff036574b85ac0aeaaf2b6"
+ hash: "73c771b964becb418289e0674571eb6f"
}
Frame {
msec: 3168
- hash: "fbefb1e0801f4578ab93dd7ff4062e68"
+ hash: "c5569c3c06bcf01b7e69e7f7ad6203ef"
}
Frame {
msec: 3184
- hash: "eac8375d9b9cf0afbf232e27c6ceb037"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "7c55078e04b56c9aba7d227917323021"
}
Frame {
msec: 3200
- hash: "3462a3e166120515e67430600e4653f8"
+ hash: "01c6b78b296c00e4597ae1bd36a65f3a"
}
Frame {
msec: 3216
- hash: "7f2d9959323f0707e36ecb2252c89727"
- }
- Frame {
- msec: 3232
- hash: "0a1c2eb8a7451a5e37fefb96a58a88a1"
- }
- Frame {
- msec: 3248
- hash: "4a02aaca12e3fd86ee3b516b3a307f86"
+ hash: "67e9271f71b2d6d9eb2e230953db06c5"
}
Key {
type: 6
- key: 16777234
- modifiers: 0
+ key: 16777236
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3232
+ hash: "642a6f4d7b3f467263b8e033578927af"
+ }
+ Frame {
+ msec: 3248
+ hash: "9f000f97b33427860cb5daeb259c72ea"
+ }
+ Frame {
msec: 3264
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "d74e3f977b5decb89dda46ea608a933a"
}
Frame {
msec: 3280
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "f4e446cd96a3eb1a0df83cf032e7a0b2"
}
Frame {
msec: 3296
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "abe715855a79a8ced43000884c4bf04b"
}
Frame {
msec: 3312
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "29fd5c17b9a169c1850aa538b4006084"
}
Frame {
msec: 3328
- hash: "9b7503189ecf2999934716f227469463"
- }
- Frame {
- msec: 3344
- hash: "aadc71923926885ccce87e6be1c742d7"
- }
- Frame {
- msec: 3360
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "cefdcaebb9c319ac358b0d7fc9424327"
}
Key {
type: 7
- key: 16777234
- modifiers: 0
+ key: 16777236
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3344
+ hash: "85bfa23957bb5cd947e0819ffa442ea3"
+ }
+ Frame {
+ msec: 3360
+ hash: "48f18d9d12331dc8725ea9e4b7f79823"
+ }
+ Frame {
msec: 3376
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "63cde59ffbbe2b9087ca228733de18dd"
}
Frame {
msec: 3392
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "73f5d4594f23ff4aac5e42aee00dce81"
}
Frame {
msec: 3408
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "51a1b8e79d209643d55d4cecc6a70ed0"
}
Frame {
msec: 3424
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "7f2ae476246b23d79997a2545723ff62"
}
Frame {
msec: 3440
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "996da2eff9302908a55308dbcc8fb3c2"
}
Frame {
msec: 3456
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "264f34128dfe563126b9f187c65df61e"
}
Frame {
msec: 3472
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3488
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3504
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3520
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3536
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3552
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3568
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "70d6b73499c36138bee63e07afb0b186"
}
Frame {
msec: 3584
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "66500c2cc3d69b9fb48dc46e384aca6d"
}
Frame {
msec: 3600
- hash: "479f192c8cf7b8e4407655382402700f"
+ hash: "6ccc70f6120acb53152b71bcf95514ca"
}
Frame {
msec: 3616
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "5c10e6b0e541fe913b589601a55ea6ce"
}
Frame {
msec: 3632
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "2c62584e4c09c1d22f9016aa6fa74e10"
}
Frame {
msec: 3648
- hash: "efc77b82c0ffd7f3fbe5fed06ea418bd"
+ hash: "fd8f53e36a86ae22deb4f7af5aa1eb81"
}
Frame {
msec: 3664
- hash: "70409eeee50fbb54097a3c430e1e1f21"
+ hash: "e33226eb0e81a64bed7bcdb50e99cd13"
}
Frame {
msec: 3680
- hash: "63c6a7810dec832f1b8288807f1d932a"
+ hash: "a7053a2b7bc9f4749c290bace6b55634"
}
Frame {
msec: 3696
- hash: "aec9683f3a677dab781bdf3bbf7cce5e"
+ hash: "782cb4e647e849ac7299d41f04bc89e3"
}
Frame {
msec: 3712
- hash: "2e6dd79fc23acbf710e757f3d0999ab8"
+ hash: "0f7d04fe594ae027364a7c2b570c5a27"
}
Frame {
msec: 3728
- hash: "4d9dd9e515a21478cb3364032acf8c15"
+ hash: "dfb00adcdc2f68bfb691bce47845b0e7"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3744
- hash: "5dc2129cac6e667d39da3304a37a76f2"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 3760
- hash: "ab5eb4750139875586a346b1c3a84f42"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 3776
- hash: "96d3bd62d4a0bf39a672b97fcc050bd5"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 3792
- hash: "546cec655631b5802eb4d7008093eb69"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 3808
- hash: "85f33f1bf1b1e11be450ab85bf6dab3d"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 3824
- hash: "44b195297acd1bf59e43751df8dc1c1d"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 3840
image: "cursorDelegate.3.png"
}
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
Frame {
msec: 3856
- hash: "47942253c07fd39894445ff5e5b9608c"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 3872
- hash: "d26d71b1c03fb21550820dd1586a7a8e"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 3888
- hash: "37ec2ed29006575e8bd41a1989b75e27"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 3904
- hash: "5ad1ab34572f9ef339774134bc0ab407"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 3920
- hash: "a4f68f6ee46642e7cc5a542b9f8a2464"
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 3936
- hash: "fce95d18a0efee74554209ca39637062"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 3952
- hash: "1587fc2668f1f44e76f252bfd75f2708"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 3968
- hash: "e0a6eb42de552281e297ca5c50c1df23"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 3984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 4000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 4016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c1bb09480464b7813bc10b0093d14745"
}
Frame {
msec: 4032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 4048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 4064
- hash: "e0a6eb42de552281e297ca5c50c1df23"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 4080
- hash: "1587fc2668f1f44e76f252bfd75f2708"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 4096
- hash: "fce95d18a0efee74554209ca39637062"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 4112
- hash: "a4f68f6ee46642e7cc5a542b9f8a2464"
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 4128
- hash: "5ad1ab34572f9ef339774134bc0ab407"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 4144
- hash: "37ec2ed29006575e8bd41a1989b75e27"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 4160
- hash: "d26d71b1c03fb21550820dd1586a7a8e"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 4176
- hash: "47942253c07fd39894445ff5e5b9608c"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 4192
- hash: "a62f1cbf43da0381c7c9099d47ded882"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 4208
- hash: "44b195297acd1bf59e43751df8dc1c1d"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 4224
- hash: "85f33f1bf1b1e11be450ab85bf6dab3d"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 4240
- hash: "546cec655631b5802eb4d7008093eb69"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 4256
- hash: "96d3bd62d4a0bf39a672b97fcc050bd5"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 4272
- hash: "ab5eb4750139875586a346b1c3a84f42"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 4288
- hash: "5dc2129cac6e667d39da3304a37a76f2"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 4304
- hash: "4d9dd9e515a21478cb3364032acf8c15"
+ hash: "a7295dcc92f80a5f343bf05076a03748"
}
Frame {
msec: 4320
- hash: "2e6dd79fc23acbf710e757f3d0999ab8"
+ hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57"
}
Frame {
msec: 4336
- hash: "aec9683f3a677dab781bdf3bbf7cce5e"
+ hash: "419c538908d0226ff4485f1094eaa08e"
}
Frame {
msec: 4352
- hash: "63c6a7810dec832f1b8288807f1d932a"
+ hash: "8afe64448d42419f97ca207487b3b0f8"
}
Frame {
msec: 4368
- hash: "70409eeee50fbb54097a3c430e1e1f21"
+ hash: "86091218d2d066d8f95a460426266369"
}
Frame {
msec: 4384
- hash: "efc77b82c0ffd7f3fbe5fed06ea418bd"
+ hash: "fc45978cac92b6cdeeecc2dd4c29aa53"
}
Frame {
msec: 4400
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "03a90ae5cbe68cc210e303c78a14e065"
}
Frame {
msec: 4416
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "15603a997aa02afb688aa74cd930f3b4"
}
Frame {
msec: 4432
- hash: "479f192c8cf7b8e4407655382402700f"
+ hash: "90bf6b2bf89e1440f0c4d1044c1bd22c"
}
Frame {
msec: 4448
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "4dbdc16538cbbf1a87c6a54e09e02b16"
}
Frame {
msec: 4464
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "2011ee59d2ec4bb0ae0d63727f091648"
}
Frame {
msec: 4480
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4496
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4512
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4528
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4544
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4560
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4576
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "02996bef06c74f34cf8be4cf4d1392d5"
}
Frame {
msec: 4592
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "2d8cb2d213ce22132ba63a829c07f768"
}
Frame {
msec: 4608
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "0a16c282a18fdc657ea48fb208dea494"
}
Frame {
msec: 4624
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "86baec52ccb8ae818439c637c5be1514"
}
Frame {
msec: 4640
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "72e2415581ba2a96b8f23cf8f5985afb"
}
Frame {
msec: 4656
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "7776d964b2b5f80bac51a29d298a067f"
}
Frame {
msec: 4672
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "3b5d0a9f961c2102a4118a8e2d2793ae"
}
Frame {
msec: 4688
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "048b5e51d9bcf8d1b24c8f8f98b7b4e4"
}
Frame {
msec: 4704
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "d30e5d7c27b72ec95c41a87741061a3f"
}
Frame {
msec: 4720
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "0374cc41cdb6528e212f678e0e049f2b"
}
Frame {
msec: 4736
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "c80bc90c90b02d1d42176f16fa992f27"
}
Frame {
msec: 4752
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "70182707dbdf87a2c8db556f030bec17"
}
Frame {
msec: 4768
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "0c6c0c3d27d87128d65b40789714dd6b"
}
Frame {
msec: 4784
- hash: "24cebf60ade86469a154abaa64f3b40d"
+ hash: "46e1debee4ca606492a36de6191f4594"
}
Frame {
msec: 4800
@@ -1302,2254 +1382,118 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ hash: "15bc04b65bde5e8ca69b6a1f88647c16"
}
Frame {
msec: 4832
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "27156c3309835ec20a02877f1188e14a"
}
Frame {
msec: 4848
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "a163019c9feff0f4d1bb4aaedcd2ecd4"
}
Frame {
msec: 4864
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "35f243da98f9934d5ac0a7cc1fde73ef"
}
Frame {
msec: 4880
- hash: "531c5ca6992c4a12927c61e22c02dd6b"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 130; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "42d393d75e0c1d5aea0e1694190e4507"
}
Frame {
msec: 4896
- hash: "14b328c8ec6276e022643102af80fa44"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 130; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "0ec47c6c74efd66d339d9be13148e334"
}
Frame {
msec: 4912
- hash: "bdcafed4ae9c890eec2e3e0cb2ff5a14"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 131; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "2e7597e8d03f0a05cf96fe7e2a3ee540"
}
Frame {
msec: 4928
- hash: "df6f025130dc82f4764def81cec5fa7b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 132; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "093c9e5ac431284de7e81e082868c5db"
}
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: "60ae71c4a6c905f47b2b457d9167153b"
}
Frame {
msec: 4960
- hash: "cfcdf63ca06c2b9ab197821bc1e48c7c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 135; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "e4be7897b1b30ab916a53df2998282d7"
}
Frame {
msec: 4976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 136; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "c082b97799dffdb73ad65b2920507e9c"
}
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: "aadaab0547a4f15c533589b531f39504"
}
Frame {
msec: 5008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 139; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "847f0a1faf094e73d533692fa47a030a"
}
Frame {
msec: 5024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 140; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "847f0a1faf094e73d533692fa47a030a"
}
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: "aadaab0547a4f15c533589b531f39504"
}
Frame {
msec: 5056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 100
- modifiers: 0
- sendToViewport: true
+ hash: "c082b97799dffdb73ad65b2920507e9c"
}
Frame {
msec: 5072
- hash: "cfcdf63ca06c2b9ab197821bc1e48c7c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "e4be7897b1b30ab916a53df2998282d7"
}
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: "60ae71c4a6c905f47b2b457d9167153b"
}
Frame {
msec: 5104
- hash: "7643fcfb740d33b87915300684e85a44"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 150; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "093c9e5ac431284de7e81e082868c5db"
}
Frame {
msec: 5120
- hash: "1bd041a5e8d2237b51720fed82250303"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "2e7597e8d03f0a05cf96fe7e2a3ee540"
}
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: "0ec47c6c74efd66d339d9be13148e334"
}
Frame {
msec: 5152
- hash: "803896c1be68588ba2cddd7effbb8d62"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 153; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "42d393d75e0c1d5aea0e1694190e4507"
}
Frame {
msec: 5168
- hash: "282ab572698088fba3aba8e6a091aa38"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "35f243da98f9934d5ac0a7cc1fde73ef"
}
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: "a163019c9feff0f4d1bb4aaedcd2ecd4"
}
Frame {
msec: 5200
- hash: "39a89e9ca7c4edd9c8503927d639df0f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "27156c3309835ec20a02877f1188e14a"
}
Frame {
msec: 5216
- hash: "b984b7d032544acd4dab8901e0af1ef5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "15bc04b65bde5e8ca69b6a1f88647c16"
}
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: "f327bb2ea12b2baffc0a98d44a0ded16"
}
Frame {
msec: 5248
- hash: "beccb93613279e2f48507ddc9a4418e8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 97
- modifiers: 0
- sendToViewport: true
+ hash: "46e1debee4ca606492a36de6191f4594"
}
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: "0c6c0c3d27d87128d65b40789714dd6b"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png
index cc1774fdd6..dfd30f65bc 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..9d4eb9b8b7 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..968517edb9 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..eb62c19cde 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml
index f1099c8721..a7df61f252 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"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 32
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 48
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 64
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 80
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 96
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 112
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 128
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 144
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 160
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 176
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 192
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 208
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 224
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 240
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 256
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 272
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 288
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 304
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 320
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 336
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 352
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 368
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 384
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Key {
type: 6
@@ -110,15 +110,15 @@ VisualTest {
}
Frame {
msec: 400
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 416
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 432
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 7
@@ -130,27 +130,27 @@ VisualTest {
}
Frame {
msec: 448
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 464
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 480
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 496
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 512
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 528
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 6
@@ -162,15 +162,15 @@ VisualTest {
}
Frame {
msec: 544
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 560
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 576
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 7
@@ -182,27 +182,27 @@ VisualTest {
}
Frame {
msec: 592
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 608
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 624
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 640
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 656
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 672
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 6
@@ -214,19 +214,19 @@ VisualTest {
}
Frame {
msec: 688
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 704
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 720
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 736
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 7
@@ -238,23 +238,23 @@ VisualTest {
}
Frame {
msec: 752
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 768
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 784
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 800
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 816
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 6
@@ -266,19 +266,19 @@ VisualTest {
}
Frame {
msec: 832
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 848
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 864
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 880
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 7
@@ -290,19 +290,19 @@ VisualTest {
}
Frame {
msec: 896
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 912
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 928
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 944
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 6
@@ -318,15 +318,15 @@ VisualTest {
}
Frame {
msec: 976
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 992
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1008
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 7
@@ -338,23 +338,23 @@ VisualTest {
}
Frame {
msec: 1024
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1040
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1056
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1072
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1088
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 6
@@ -366,15 +366,15 @@ VisualTest {
}
Frame {
msec: 1104
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1120
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1136
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 7
@@ -386,23 +386,23 @@ VisualTest {
}
Frame {
msec: 1152
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1168
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1184
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1200
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1216
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 6
@@ -414,19 +414,19 @@ VisualTest {
}
Frame {
msec: 1232
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1248
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1264
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1280
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 7
@@ -438,19 +438,19 @@ VisualTest {
}
Frame {
msec: 1296
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1312
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1328
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1344
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 6
@@ -462,19 +462,19 @@ VisualTest {
}
Frame {
msec: 1360
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1376
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1392
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1408
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 7
@@ -486,23 +486,23 @@ VisualTest {
}
Frame {
msec: 1424
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1440
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1456
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1472
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1488
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 6
@@ -514,15 +514,15 @@ VisualTest {
}
Frame {
msec: 1504
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1520
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1536
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Key {
type: 7
@@ -534,79 +534,79 @@ VisualTest {
}
Frame {
msec: 1552
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1568
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1584
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1600
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1616
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1632
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1648
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1664
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1680
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1696
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1712
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1728
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1744
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1760
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1776
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1792
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1808
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1824
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1840
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Key {
type: 6
@@ -618,19 +618,19 @@ VisualTest {
}
Frame {
msec: 1856
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1872
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1888
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1904
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1920
@@ -638,19 +638,19 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1952
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1968
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1984
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 7
@@ -662,23 +662,23 @@ VisualTest {
}
Frame {
msec: 2000
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2016
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2032
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2048
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2064
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 6
@@ -690,23 +690,23 @@ VisualTest {
}
Frame {
msec: 2080
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2096
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2112
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2128
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2144
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 7
@@ -718,23 +718,23 @@ VisualTest {
}
Frame {
msec: 2160
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2176
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2192
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2208
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2224
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 6
@@ -746,11 +746,11 @@ VisualTest {
}
Frame {
msec: 2240
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2256
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 7
@@ -762,23 +762,23 @@ VisualTest {
}
Frame {
msec: 2272
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2288
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2304
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2320
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2336
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 6
@@ -790,15 +790,15 @@ VisualTest {
}
Frame {
msec: 2352
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2368
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2384
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 7
@@ -810,55 +810,55 @@ VisualTest {
}
Frame {
msec: 2400
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2416
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2432
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2448
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2464
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2480
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2496
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2512
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2528
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2544
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2560
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2576
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2592
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 6
@@ -870,23 +870,23 @@ VisualTest {
}
Frame {
msec: 2608
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2624
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2640
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2656
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2672
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 7
@@ -898,23 +898,23 @@ VisualTest {
}
Frame {
msec: 2688
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2704
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2720
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2736
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2752
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 6
@@ -926,15 +926,15 @@ VisualTest {
}
Frame {
msec: 2768
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2784
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2800
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 7
@@ -946,19 +946,19 @@ VisualTest {
}
Frame {
msec: 2816
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2832
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2848
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2864
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 6
@@ -974,15 +974,15 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2912
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2928
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 7
@@ -994,23 +994,23 @@ VisualTest {
}
Frame {
msec: 2944
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2960
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2976
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2992
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 3008
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 6
@@ -1022,23 +1022,23 @@ VisualTest {
}
Frame {
msec: 3024
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3040
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3056
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3072
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3088
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 7
@@ -1050,155 +1050,155 @@ VisualTest {
}
Frame {
msec: 3104
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3120
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3136
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3152
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3168
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3184
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3200
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3216
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3232
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3248
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3264
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3280
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3296
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3312
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3328
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3344
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3360
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3376
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3392
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3408
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3424
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3440
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3456
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3472
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3488
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3504
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3520
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3536
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3552
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3568
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3584
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3600
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3616
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3632
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3648
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3664
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3680
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3696
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 6
@@ -1210,27 +1210,27 @@ VisualTest {
}
Frame {
msec: 3712
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3728
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3744
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3760
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3776
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3792
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Key {
type: 7
@@ -1242,11 +1242,11 @@ VisualTest {
}
Frame {
msec: 3808
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3824
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3840
@@ -1254,118 +1254,118 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3872
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3888
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3904
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3920
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3936
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3952
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3968
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3984
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4000
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4016
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4032
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4048
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4064
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4080
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4096
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4112
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4128
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4144
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4160
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4176
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4192
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4208
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4224
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4240
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4256
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4272
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4288
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4304
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png
new file mode 100644
index 0000000000..5049c3f81e
--- /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..ee6e16a3e1
--- /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..d9d22520a4
--- /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..d9d22520a4
--- /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.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png
new file mode 100644
index 0000000000..cf99d98c15
--- /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..e3937f03db
--- /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..2fe33379c2
--- /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..97b99134d5
--- /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..08e059f865
--- /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..bbc5ba24df
--- /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..465b64e8ed
--- /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..d9d22520a4
--- /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..a8173be17e
--- /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
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 32
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 48
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 64
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 80
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 96
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 112
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 128
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 144
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 160
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 176
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 192
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 208
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 224
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 240
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 256
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 272
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 288
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 304
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 320
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 336
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 352
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 368
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 384
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 400
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 416
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 432
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 448
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 464
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 480
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 496
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 512
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 528
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 544
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 560
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 576
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 592
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 608
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 624
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Frame {
+ msec: 640
+ hash: "e742c08c259034e879b95eea60794e77"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 656
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 672
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 688
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 704
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 720
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 736
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 752
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 768
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 784
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 800
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 816
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 832
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 848
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 864
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 880
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 896
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 912
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 928
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 944
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 960
+ image: "usingMultilineEdit.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 992
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1008
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1024
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1040
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1056
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1072
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1088
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1104
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1120
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1136
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1152
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1168
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1184
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1200
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1216
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1232
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1248
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1264
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1280
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Frame {
+ msec: 1296
+ hash: "3eaecb73d32414207c898a36c9c41da3"
+ }
+ Key {
+ type: 6
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Frame {
+ msec: 1328
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Frame {
+ msec: 1344
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Frame {
+ msec: 1360
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Frame {
+ msec: 1376
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Key {
+ type: 7
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "c101a1d74691605f2740452950693e43"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1408
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1424
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1440
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1456
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1472
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1488
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1504
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1520
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1536
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Frame {
+ msec: 1552
+ hash: "e3e33c9f73352079db2f5e96c0069974"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
+ }
+ Frame {
+ msec: 1584
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
+ }
+ Frame {
+ msec: 1600
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1616
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1632
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Frame {
+ msec: 1648
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Frame {
+ msec: 1664
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Frame {
+ msec: 1680
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Frame {
+ msec: 1696
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1712
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Frame {
+ msec: 1728
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1744
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Frame {
+ msec: 1760
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Frame {
+ msec: 1776
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Frame {
+ msec: 1808
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Frame {
+ msec: 1824
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1840
+ hash: "213c0057171a86bd4e2d898fac4d6642"
+ }
+ Frame {
+ msec: 1856
+ hash: "213c0057171a86bd4e2d898fac4d6642"
+ }
+ Frame {
+ msec: 1872
+ hash: "213c0057171a86bd4e2d898fac4d6642"
+ }
+ Frame {
+ msec: 1888
+ hash: "213c0057171a86bd4e2d898fac4d6642"
+ }
+ Frame {
+ msec: 1904
+ hash: "213c0057171a86bd4e2d898fac4d6642"
+ }
+ 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: "df9766751a5698f84f98faa0ac0e6f1a"
+ }
+ Frame {
+ msec: 1952
+ hash: "df9766751a5698f84f98faa0ac0e6f1a"
+ }
+ Frame {
+ msec: 1968
+ hash: "df9766751a5698f84f98faa0ac0e6f1a"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1984
+ hash: "47cb63f13c81ac6557ecc68d4e6f9c99"
+ }
+ Frame {
+ msec: 2000
+ hash: "47cb63f13c81ac6557ecc68d4e6f9c99"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2016
+ hash: "47cb63f13c81ac6557ecc68d4e6f9c99"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2032
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Frame {
+ msec: 2048
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Frame {
+ msec: 2080
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Frame {
+ msec: 2096
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Frame {
+ msec: 2112
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2128
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Frame {
+ msec: 2144
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ Frame {
+ msec: 2176
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ Frame {
+ msec: 2192
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ Frame {
+ msec: 2208
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ Frame {
+ msec: 2224
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ Frame {
+ msec: 2240
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
+ }
+ 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: "aa085c20f74a765297f7904680c7591e"
+ }
+ Frame {
+ msec: 2272
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Frame {
+ msec: 2288
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Frame {
+ msec: 2304
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Frame {
+ msec: 2320
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2336
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Frame {
+ msec: 2352
+ hash: "aa085c20f74a765297f7904680c7591e"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "0cc1397ce700d4a84647dddee65241b3"
+ }
+ Frame {
+ msec: 2384
+ hash: "0cc1397ce700d4a84647dddee65241b3"
+ }
+ Frame {
+ msec: 2400
+ hash: "0cc1397ce700d4a84647dddee65241b3"
+ }
+ Frame {
+ msec: 2416
+ hash: "0cc1397ce700d4a84647dddee65241b3"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2432
+ hash: "0cc1397ce700d4a84647dddee65241b3"
+ }
+ Key {
+ type: 6
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Frame {
+ msec: 2464
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Frame {
+ msec: 2480
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Frame {
+ msec: 2496
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Frame {
+ msec: 2512
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Frame {
+ msec: 2528
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Key {
+ type: 7
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2544
+ hash: "ac693aa9030cc388dce9004916734aed"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2576
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2592
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2608
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2624
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2640
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2656
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2672
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Frame {
+ msec: 2688
+ hash: "e1f1b75892dc186e7f9546661722e259"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2704
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Frame {
+ msec: 2720
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Frame {
+ msec: 2736
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Frame {
+ msec: 2752
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Frame {
+ msec: 2768
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Frame {
+ msec: 2784
+ hash: "4c1829c6c263cf290e0e71035f678589"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2800
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2816
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Frame {
+ msec: 2832
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Frame {
+ msec: 2848
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Frame {
+ msec: 2864
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2880
+ image: "usingMultilineEdit.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Frame {
+ msec: 2912
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Frame {
+ msec: 2928
+ hash: "fa5cf022b185f178d0121b442af01c00"
+ }
+ Key {
+ type: 6
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "b0748cac94695eb95774e0cdfabf47cc"
+ }
+ Frame {
+ msec: 2960
+ hash: "b0748cac94695eb95774e0cdfabf47cc"
+ }
+ Frame {
+ msec: 2976
+ hash: "b0748cac94695eb95774e0cdfabf47cc"
+ }
+ 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: "b05fc4c21113146463372b1ea981e265"
+ }
+ Frame {
+ msec: 3008
+ hash: "b05fc4c21113146463372b1ea981e265"
+ }
+ Frame {
+ msec: 3024
+ hash: "b05fc4c21113146463372b1ea981e265"
+ }
+ Frame {
+ msec: 3040
+ hash: "b05fc4c21113146463372b1ea981e265"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3056
+ hash: "b05fc4c21113146463372b1ea981e265"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3072
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Frame {
+ msec: 3088
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Frame {
+ msec: 3104
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3120
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 33554432
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3136
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Frame {
+ msec: 3152
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3168
+ hash: "433d805d957203918fc4a8edfc93290e"
+ }
+ Frame {
+ msec: 3184
+ hash: "433d805d957203918fc4a8edfc93290e"
+ }
+ Frame {
+ msec: 3200
+ hash: "433d805d957203918fc4a8edfc93290e"
+ }
+ Frame {
+ msec: 3216
+ hash: "433d805d957203918fc4a8edfc93290e"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3232
+ hash: "433d805d957203918fc4a8edfc93290e"
+ }
+ 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: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
+ }
+ Frame {
+ msec: 3264
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
+ }
+ Frame {
+ msec: 3280
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
+ }
+ Frame {
+ msec: 3296
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3312
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3328
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Frame {
+ msec: 3344
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Frame {
+ msec: 3360
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Frame {
+ msec: 3376
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Frame {
+ msec: 3392
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3408
+ hash: "b4bc12141255c91630e775fcf4935f22"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3424
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
+ }
+ Frame {
+ msec: 3440
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
+ }
+ Frame {
+ msec: 3456
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
+ }
+ Frame {
+ msec: 3472
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
+ }
+ Frame {
+ msec: 3488
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
+ }
+ 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: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Frame {
+ msec: 3520
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Frame {
+ msec: 3536
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Frame {
+ msec: 3552
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Frame {
+ msec: 3568
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Frame {
+ msec: 3584
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Key {
+ type: 7
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3600
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3616
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
+ }
+ Frame {
+ msec: 3632
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
+ }
+ Frame {
+ msec: 3648
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
+ }
+ Frame {
+ msec: 3664
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3680
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3696
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3712
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3728
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3744
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3760
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3776
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3792
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3808
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3824
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3840
+ image: "usingMultilineEdit.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3872
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3888
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3904
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3920
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3936
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3952
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Frame {
+ msec: 3968
+ hash: "90bd87209b6d26785689779641b1f506"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3984
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
+ }
+ Frame {
+ msec: 4000
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
+ }
+ Frame {
+ msec: 4016
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
+ }
+ Frame {
+ msec: 4032
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
+ }
+ Frame {
+ msec: 4048
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4064
+ hash: "591366861f9e23276042250d5b1da7f9"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "591366861f9e23276042250d5b1da7f9"
+ }
+ Frame {
+ msec: 4096
+ hash: "591366861f9e23276042250d5b1da7f9"
+ }
+ Frame {
+ msec: 4112
+ hash: "591366861f9e23276042250d5b1da7f9"
+ }
+ Frame {
+ msec: 4128
+ hash: "591366861f9e23276042250d5b1da7f9"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4144
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
+ }
+ Frame {
+ msec: 4160
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4176
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
+ }
+ Frame {
+ msec: 4192
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
+ }
+ Frame {
+ msec: 4208
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4224
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4240
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4256
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4272
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4288
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4304
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4320
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4336
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4352
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Frame {
+ msec: 4368
+ hash: "36223521c9ab06661239329c14e4fabe"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4384
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Frame {
+ msec: 4400
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Frame {
+ msec: 4416
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Frame {
+ msec: 4432
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Frame {
+ msec: 4448
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4464
+ hash: "22ab171b9805302b729afd314e55a0f4"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4480
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4496
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4512
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4528
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4544
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4560
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4576
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4592
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4608
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4624
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4640
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4656
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4672
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4688
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4704
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4720
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4736
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4752
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4768
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4784
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4800
+ image: "usingMultilineEdit.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Frame {
+ msec: 4832
+ hash: "beaad223234484e21f824ceb7f1edc2a"
+ }
+ Key {
+ type: 6
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4848
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4864
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4880
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4896
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4912
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4928
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4944
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Key {
+ type: 7
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4960
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4976
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 4992
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5008
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5024
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5040
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5056
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5072
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5088
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5104
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5120
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5136
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5152
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5168
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5184
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5200
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5216
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5232
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5248
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5264
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5280
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5296
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5312
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5328
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5344
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5360
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5376
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5392
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5408
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5424
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5440
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5456
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5472
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5488
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5504
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5520
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5536
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5552
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5568
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5584
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5600
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5616
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5632
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5648
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5664
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5680
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5696
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5712
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5728
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ Frame {
+ msec: 5744
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
+ }
+ 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: "476040951352f144bda4ed7fb817cd7f"
+ }
+ Frame {
+ msec: 5792
+ hash: "476040951352f144bda4ed7fb817cd7f"
+ }
+ Frame {
+ msec: 5808
+ hash: "476040951352f144bda4ed7fb817cd7f"
+ }
+ Frame {
+ msec: 5824
+ hash: "476040951352f144bda4ed7fb817cd7f"
+ }
+ 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: "476040951352f144bda4ed7fb817cd7f"
+ }
+ 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: "9ecb1e68ab724c6f83b1a37aa1cb15c4"
+ }
+ 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: "9ecb1e68ab724c6f83b1a37aa1cb15c4"
+ }
+ 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: "9ecb1e68ab724c6f83b1a37aa1cb15c4"
+ }
+ 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: "173735fb4be11da603fb8ae8cffc609d"
+ }
+ 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: "173735fb4be11da603fb8ae8cffc609d"
+ }
+ 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: "b337a09f359fb2a237731c66ab95c92c"
+ }
+ 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: "32719becb40f8c6bd49b5f5754786913"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 97
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5984
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6192
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Frame {
+ msec: 6208
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Frame {
+ msec: 6224
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Frame {
+ msec: 6240
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Frame {
+ msec: 6256
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6272
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "e6bff88d0a5e2e7df4b3355749ecc902"
+ }
+ 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: "5de7bbfdf96d84c8fbe74b4817a3c88a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6400
+ hash: "5de7bbfdf96d84c8fbe74b4817a3c88a"
+ }
+ 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: "056d22660f6feedfb453755978aa4c1d"
+ }
+ 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: "9d8568931fdca572dd31ea62ebbaf76a"
+ }
+ 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: "29aa2da8a830d5605a8d2d2543097177"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6464
+ hash: "154e312998b32cc09daf1693d07eda2f"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Frame {
+ msec: 6608
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Frame {
+ msec: 6624
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Frame {
+ msec: 6640
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Frame {
+ msec: 6656
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ Frame {
+ msec: 6672
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "5b3a17fd92fe5117aa405d4c737e6673"
+ }
+ 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: "476040951352f144bda4ed7fb817cd7f"
+ }
+ 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: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ 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: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6896
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6912
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6928
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6944
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6960
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6976
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 6992
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7008
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7024
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7040
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7056
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7072
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Frame {
+ msec: 7088
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7104
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7120
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7136
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7152
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7168
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7184
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7200
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7216
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7232
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7248
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7264
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7280
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7296
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7312
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7328
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7344
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7360
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7376
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7392
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7408
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7424
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7440
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7456
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7472
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7488
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7504
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7520
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7536
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7552
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Frame {
+ msec: 7568
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7584
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7600
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7616
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7632
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7648
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7664
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7680
+ image: "usingMultilineEdit.7.png"
+ }
+ Frame {
+ msec: 7696
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Frame {
+ msec: 7712
+ hash: "0444d714b801f88685df9722390faf4f"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7728
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7744
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7760
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7776
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7792
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7808
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7824
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7840
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7856
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7872
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7888
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7904
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7920
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7936
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ Frame {
+ msec: 7952
+ hash: "250a49b60ad8e9b901977e01063ec20a"
+ }
+ 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: "bec2aea61fef64475e638848b96d28c3"
+ }
+ Frame {
+ msec: 7984
+ hash: "bec2aea61fef64475e638848b96d28c3"
+ }
+ 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: "54177e0d53373636850e18399640fee8"
+ }
+ Frame {
+ msec: 8016
+ hash: "54177e0d53373636850e18399640fee8"
+ }
+ 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: "81c03bd9dfd562e9f13784c906fa0d9e"
+ }
+ Frame {
+ msec: 8048
+ hash: "81c03bd9dfd562e9f13784c906fa0d9e"
+ }
+ 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: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8080
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ 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: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8112
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8128
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8144
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8160
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8176
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Frame {
+ msec: 8192
+ hash: "2547fbe956bab6566c2b9137c0edc841"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8208
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8224
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8240
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8256
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8272
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8288
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8304
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Frame {
+ msec: 8320
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8336
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8352
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8368
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8384
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8400
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8416
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8432
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8448
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Frame {
+ msec: 8464
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8480
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8496
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8512
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8528
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8544
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8560
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8576
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8592
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8608
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8624
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8640
+ image: "usingMultilineEdit.8.png"
+ }
+ Frame {
+ msec: 8656
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8672
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8688
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8704
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8720
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8736
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8752
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8768
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8784
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8800
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8816
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8832
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8848
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8864
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8880
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8896
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8912
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8928
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8944
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8960
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8976
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 8992
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9008
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9024
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9040
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9056
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9072
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9088
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9104
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9120
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9136
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9152
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9168
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9184
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9200
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 70; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9216
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9232
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9248
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ 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: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ 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: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9296
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9312
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9328
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9344
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9360
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9376
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9392
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9408
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9424
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Frame {
+ msec: 9440
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9456
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9472
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9488
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9504
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9520
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9536
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9552
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9568
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9584
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9600
+ image: "usingMultilineEdit.9.png"
+ }
+ Frame {
+ msec: 9616
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9632
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9648
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9664
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 9680
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9696
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9712
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9728
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9744
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9760
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9776
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9792
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9808
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9824
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9840
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9856
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9872
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9888
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9904
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9920
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9936
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9952
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9968
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 9984
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10000
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10016
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10032
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10048
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10064
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10080
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10096
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10112
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10128
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10144
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10160
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10176
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10192
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10208
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10224
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10240
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10256
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10272
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10288
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10304
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10320
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10336
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Frame {
+ msec: 10352
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10368
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10384
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10400
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10416
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10432
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10448
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10464
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10480
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10496
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10512
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10528
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10544
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10560
+ image: "usingMultilineEdit.10.png"
+ }
+ Frame {
+ msec: 10576
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10592
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10608
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10624
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10640
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10656
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10672
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10688
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10704
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10720
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10736
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10752
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10768
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10784
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10800
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10816
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10832
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10848
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10864
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10880
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10896
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10912
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10928
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10944
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10960
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10976
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 10992
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11008
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11024
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11040
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11056
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11072
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11088
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11104
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11120
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11136
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11152
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11168
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11184
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11200
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11216
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11232
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11248
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11264
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11280
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11296
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11312
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11328
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11344
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11360
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11376
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11392
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11408
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11424
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11440
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11456
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11472
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11488
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11504
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11520
+ image: "usingMultilineEdit.11.png"
+ }
+ Frame {
+ msec: 11536
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11552
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11568
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11584
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11600
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+ Frame {
+ msec: 11616
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png
new file mode 100644
index 0000000000..61606b2bd0
--- /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..a4b28fcd32
--- /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..5be6bbb867
--- /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..a220f6545c
--- /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..6946707f64
--- /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..4eeb8ec79f
--- /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..4eeb8ec79f
--- /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.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml
new file mode 100644
index 0000000000..f1bb5a9094
--- /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
+ hash: "b6611676a7d38162d5c0210ea9d0e291"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 33554432
+ text: "54"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 32
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 48
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
+ }
+ Frame {
+ msec: 64
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 80
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
+ }
+ Frame {
+ msec: 96
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
+ }
+ Key {
+ type: 6
+ key: 72
+ modifiers: 0
+ text: "68"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 112
+ hash: "23006a07263b8b3240c4080fb1d587e9"
+ }
+ Frame {
+ msec: 128
+ hash: "23006a07263b8b3240c4080fb1d587e9"
+ }
+ Frame {
+ msec: 144
+ hash: "23006a07263b8b3240c4080fb1d587e9"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 160
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
+ }
+ Frame {
+ msec: 176
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
+ }
+ Frame {
+ msec: 192
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
+ }
+ Key {
+ type: 7
+ key: 72
+ modifiers: 0
+ text: "68"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 208
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
+ }
+ Frame {
+ msec: 224
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 240
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 256
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Frame {
+ msec: 272
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Frame {
+ msec: 288
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Frame {
+ msec: 304
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 320
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Frame {
+ msec: 336
+ hash: "33cdfa214f071848ed374407b4601c5a"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 352
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 368
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 384
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 400
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 416
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 432
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 448
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Frame {
+ msec: 464
+ hash: "80794c72fe7dda72997122a89f33e6e4"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 480
+ hash: "bfcd901aee3d9db796597834bec1f173"
+ }
+ Frame {
+ msec: 496
+ hash: "bfcd901aee3d9db796597834bec1f173"
+ }
+ Frame {
+ msec: 512
+ hash: "bfcd901aee3d9db796597834bec1f173"
+ }
+ Frame {
+ msec: 528
+ hash: "bfcd901aee3d9db796597834bec1f173"
+ }
+ 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: "965102cb74dcf695b950616ce5c42875"
+ }
+ Frame {
+ msec: 560
+ hash: "965102cb74dcf695b950616ce5c42875"
+ }
+ Frame {
+ msec: 576
+ hash: "965102cb74dcf695b950616ce5c42875"
+ }
+ Frame {
+ msec: 592
+ hash: "965102cb74dcf695b950616ce5c42875"
+ }
+ Frame {
+ msec: 608
+ hash: "965102cb74dcf695b950616ce5c42875"
+ }
+ 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: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Frame {
+ msec: 640
+ hash: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Frame {
+ msec: 656
+ hash: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Frame {
+ msec: 672
+ hash: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 688
+ hash: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Frame {
+ msec: 704
+ hash: "73556f0cf2c8d77881a7d3881025e343"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 720
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Frame {
+ msec: 736
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Frame {
+ msec: 752
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Frame {
+ msec: 768
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Frame {
+ msec: 784
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 800
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 816
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Frame {
+ msec: 832
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Frame {
+ msec: 848
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 864
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Frame {
+ msec: 880
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Frame {
+ msec: 896
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 912
+ hash: "219e5edd5f138cd113f0b929460cf074"
+ }
+ Frame {
+ msec: 928
+ hash: "219e5edd5f138cd113f0b929460cf074"
+ }
+ Frame {
+ msec: 944
+ hash: "219e5edd5f138cd113f0b929460cf074"
+ }
+ Frame {
+ msec: 960
+ image: "wrap.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "219e5edd5f138cd113f0b929460cf074"
+ }
+ Frame {
+ msec: 992
+ hash: "219e5edd5f138cd113f0b929460cf074"
+ }
+ 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: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1024
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1040
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1056
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1072
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1088
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1104
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1120
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1136
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1152
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1168
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Frame {
+ msec: 1184
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1200
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
+ }
+ Frame {
+ msec: 1216
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
+ }
+ Frame {
+ msec: 1232
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
+ }
+ Frame {
+ msec: 1248
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
+ }
+ Frame {
+ msec: 1264
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
+ }
+ 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: "29aaa213e4b146199289b5383528bc88"
+ }
+ Frame {
+ msec: 1296
+ hash: "29aaa213e4b146199289b5383528bc88"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1328
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1344
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1360
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1376
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1408
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1424
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Frame {
+ msec: 1440
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1456
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Frame {
+ msec: 1472
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Frame {
+ msec: 1488
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Frame {
+ msec: 1504
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Frame {
+ msec: 1520
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1536
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Frame {
+ msec: 1552
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
+ }
+ Key {
+ type: 6
+ key: 72
+ modifiers: 0
+ text: "68"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "c5c789ca287cf673be808f3e10e054a2"
+ }
+ Frame {
+ msec: 1584
+ hash: "c5c789ca287cf673be808f3e10e054a2"
+ }
+ Frame {
+ msec: 1600
+ hash: "c5c789ca287cf673be808f3e10e054a2"
+ }
+ Frame {
+ msec: 1616
+ hash: "c5c789ca287cf673be808f3e10e054a2"
+ }
+ Frame {
+ msec: 1632
+ hash: "c5c789ca287cf673be808f3e10e054a2"
+ }
+ 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: "5e39fc7058b64afa7036002a2dae8976"
+ }
+ Frame {
+ msec: 1664
+ hash: "5e39fc7058b64afa7036002a2dae8976"
+ }
+ Frame {
+ msec: 1680
+ hash: "5e39fc7058b64afa7036002a2dae8976"
+ }
+ Frame {
+ msec: 1696
+ hash: "5e39fc7058b64afa7036002a2dae8976"
+ }
+ Frame {
+ msec: 1712
+ hash: "5e39fc7058b64afa7036002a2dae8976"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1728
+ hash: "687e69083430812cd42eff708229a176"
+ }
+ Frame {
+ msec: 1744
+ hash: "687e69083430812cd42eff708229a176"
+ }
+ Frame {
+ msec: 1760
+ hash: "687e69083430812cd42eff708229a176"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1776
+ hash: "687e69083430812cd42eff708229a176"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1808
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1824
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1840
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1856
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1872
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1888
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1904
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1920
+ image: "wrap.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Frame {
+ msec: 1952
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1968
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Frame {
+ msec: 1984
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Frame {
+ msec: 2000
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Frame {
+ msec: 2016
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Frame {
+ msec: 2032
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Frame {
+ msec: 2048
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2080
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2096
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2112
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2128
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2144
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2160
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2176
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2192
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Frame {
+ msec: 2208
+ hash: "2c1570a63d3eff7346c58356610a2f44"
+ }
+ Key {
+ type: 6
+ key: 88
+ modifiers: 0
+ text: "78"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2224
+ hash: "8202436b4e184adc69cdf7dd735afe33"
+ }
+ Frame {
+ msec: 2240
+ hash: "8202436b4e184adc69cdf7dd735afe33"
+ }
+ Frame {
+ msec: 2256
+ hash: "8202436b4e184adc69cdf7dd735afe33"
+ }
+ Frame {
+ msec: 2272
+ hash: "8202436b4e184adc69cdf7dd735afe33"
+ }
+ Frame {
+ msec: 2288
+ hash: "8202436b4e184adc69cdf7dd735afe33"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2304
+ hash: "855069b52f6714d54f4005751b8e2930"
+ }
+ Key {
+ type: 7
+ key: 88
+ modifiers: 0
+ text: "78"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2320
+ hash: "855069b52f6714d54f4005751b8e2930"
+ }
+ Frame {
+ msec: 2336
+ hash: "855069b52f6714d54f4005751b8e2930"
+ }
+ Frame {
+ msec: 2352
+ hash: "855069b52f6714d54f4005751b8e2930"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Frame {
+ msec: 2384
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2400
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Frame {
+ msec: 2416
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Frame {
+ msec: 2432
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Frame {
+ msec: 2464
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Frame {
+ msec: 2480
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2496
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2512
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2528
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2544
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2576
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2592
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2608
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2624
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Frame {
+ msec: 2640
+ hash: "12eb5152181e0bff993dc1be087969f9"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2656
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Frame {
+ msec: 2672
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Frame {
+ msec: 2688
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Frame {
+ msec: 2704
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2720
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Frame {
+ msec: 2736
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Frame {
+ msec: 2752
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2768
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
+ }
+ Frame {
+ msec: 2784
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
+ }
+ Frame {
+ msec: 2800
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
+ }
+ Frame {
+ msec: 2816
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
+ }
+ Frame {
+ msec: 2832
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
+ }
+ 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: "973c163b1ea4e6189e788b7f37013185"
+ }
+ Frame {
+ msec: 2864
+ hash: "973c163b1ea4e6189e788b7f37013185"
+ }
+ Frame {
+ msec: 2880
+ image: "wrap.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "973c163b1ea4e6189e788b7f37013185"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2912
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 2928
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 2960
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2976
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 2992
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3008
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3024
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3040
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3056
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3072
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Frame {
+ msec: 3088
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3104
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3120
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3136
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3152
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3168
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3184
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3200
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3216
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3232
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Frame {
+ msec: 3248
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3264
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Frame {
+ msec: 3280
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Frame {
+ msec: 3296
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3312
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Frame {
+ msec: 3328
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Frame {
+ msec: 3344
+ hash: "60480b61f29a34c790da8fe1bfd98755"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3360
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3376
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3392
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3408
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3424
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3440
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3456
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Frame {
+ msec: 3472
+ hash: "c6f235590c03170581dfabc07bf9c20b"
+ }
+ Key {
+ type: 6
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3488
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Frame {
+ msec: 3504
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Frame {
+ msec: 3520
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Frame {
+ msec: 3536
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Key {
+ type: 7
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3552
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Frame {
+ msec: 3568
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3584
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Frame {
+ msec: 3600
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Frame {
+ msec: 3616
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Frame {
+ msec: 3632
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Frame {
+ msec: 3648
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Frame {
+ msec: 3664
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3680
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3696
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3712
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3728
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3744
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3760
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3776
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3792
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3808
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3824
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3840
+ image: "wrap.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3872
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3888
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Frame {
+ msec: 3904
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
+ }
+ Key {
+ type: 6
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3920
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Frame {
+ msec: 3936
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Frame {
+ msec: 3952
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Frame {
+ msec: 3968
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Frame {
+ msec: 3984
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Key {
+ type: 7
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4000
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Frame {
+ msec: 4016
+ hash: "f1ef12790a0548cfaa4176680566680d"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4032
+ hash: "22575a03b4c58e4391845d495c2ca48b"
+ }
+ Frame {
+ msec: 4048
+ hash: "22575a03b4c58e4391845d495c2ca48b"
+ }
+ Frame {
+ msec: 4064
+ hash: "22575a03b4c58e4391845d495c2ca48b"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "22575a03b4c58e4391845d495c2ca48b"
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4096
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Frame {
+ msec: 4112
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Frame {
+ msec: 4128
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Frame {
+ msec: 4144
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4160
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Frame {
+ msec: 4176
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Frame {
+ msec: 4192
+ hash: "3243dc4562f073136782415365b7b42d"
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4208
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
+ }
+ Frame {
+ msec: 4224
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
+ }
+ Frame {
+ msec: 4240
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
+ }
+ Frame {
+ msec: 4256
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
+ }
+ Frame {
+ msec: 4272
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4288
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4304
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4320
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4336
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4352
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4368
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4384
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4400
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Frame {
+ msec: 4416
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
+ }
+ Key {
+ type: 6
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4432
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4448
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4464
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Key {
+ type: 7
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4480
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4496
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4512
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4528
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Frame {
+ msec: 4544
+ hash: "252838a495502ba5b836ffd1b20711f4"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4560
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4576
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4592
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4608
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4624
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4640
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4656
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Frame {
+ msec: 4672
+ hash: "4010bb0f50630f067974e6ddb3177693"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4688
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Frame {
+ msec: 4704
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Frame {
+ msec: 4720
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Frame {
+ msec: 4736
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4752
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Frame {
+ msec: 4768
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Frame {
+ msec: 4784
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4800
+ image: "wrap.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "7d4a56854715772c92706522d2dcac56"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4832
+ hash: "7d4a56854715772c92706522d2dcac56"
+ }
+ Frame {
+ msec: 4848
+ hash: "7d4a56854715772c92706522d2dcac56"
+ }
+ Frame {
+ msec: 4864
+ hash: "7d4a56854715772c92706522d2dcac56"
+ }
+ Frame {
+ msec: 4880
+ hash: "7d4a56854715772c92706522d2dcac56"
+ }
+ Key {
+ type: 6
+ key: 46
+ modifiers: 0
+ text: "2e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4896
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 4912
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 4928
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 4944
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Key {
+ type: 7
+ key: 46
+ modifiers: 0
+ text: "2e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4960
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 4976
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 4992
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5008
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5024
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5040
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5056
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5072
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5088
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5104
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5120
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5136
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5152
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5168
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5184
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5200
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5216
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5232
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5248
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5264
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5280
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5296
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5312
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5328
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5344
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5360
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5376
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5392
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5408
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5424
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5440
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5456
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5472
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5488
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5504
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5520
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5536
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5552
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5568
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5584
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5600
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5616
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5632
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5648
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5664
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5680
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5696
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5712
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5728
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5744
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5760
+ image: "wrap.5.png"
+ }
+ Frame {
+ msec: 5776
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5792
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5808
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5824
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5840
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5856
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5872
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5888
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5904
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5920
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5936
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5952
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5968
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 5984
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6000
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6016
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6032
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6048
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6064
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6080
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6096
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6112
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6128
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6144
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6160
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6176
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6192
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6208
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6224
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6240
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6256
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6272
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6288
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6304
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6320
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6336
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6352
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6368
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6384
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6400
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6416
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6432
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6448
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6464
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6480
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6496
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6512
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6528
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6544
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6560
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6576
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6592
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6608
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6624
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6640
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6656
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6672
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6688
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6704
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6720
+ image: "wrap.6.png"
+ }
+ Frame {
+ msec: 6736
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6752
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6768
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6784
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6800
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6816
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6832
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6848
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+ Frame {
+ msec: 6864
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
+ }
+}
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..1d96795608 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..a3a9bfafd0 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..b50028c4dc 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..1c4876e222 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..9d110cbc82 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml
index 208d05f203..bd4af6a804 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"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 32
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 48
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 64
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 80
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 96
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 112
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 128
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 144
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 160
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 176
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 192
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 208
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 224
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 240
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 256
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 272
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 288
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 304
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 320
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 336
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 352
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 368
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 384
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 400
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 416
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 432
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 448
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 464
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
}
Frame {
msec: 480
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
}
Frame {
msec: 496
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
}
Frame {
msec: 512
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
+ }
+ Frame {
+ msec: 528
+ hash: "227cbfe5fc07906060951e19ebb3ad30"
}
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: "066256a59ad290b3725193955e3c48a6"
}
Frame {
msec: 560
- hash: "d23bdd94019477d8378cde580d8765ad"
+ hash: "6709f77cbcde82886d1c5a07f06b55a5"
}
Frame {
msec: 576
- hash: "d74f8e44d47710714d4197809fffb622"
+ hash: "da0028083048837b4756a2d3ff468378"
}
Frame {
msec: 592
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
+ hash: "5f265351bed34357d603794d868dbcbc"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 608
- hash: "4e875ba8703b690a17e445f2b3810435"
+ hash: "3b8030849229e90b69842219e8b2d3f1"
}
Frame {
msec: 624
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
+ hash: "0b08356d9b00313b2d892175dd93095a"
}
Frame {
msec: 640
- hash: "a2ea272b45d8de225826d9381015ff2e"
+ hash: "4780555b277d65e3e4c0c60817b63eb4"
+ }
+ Frame {
+ msec: 656
+ hash: "6b31c8f0569d01d97a371423a0f379c0"
}
Key {
type: 7
@@ -181,67 +201,47 @@ VisualTest {
count: 1
}
Frame {
- msec: 656
- hash: "5d112a3675ea4c010e7bc60e036d0262"
- }
- Frame {
msec: 672
- hash: "788d8962f311adf57a3acc876b0e8804"
+ hash: "e9a5695636f7957d33f1c902a37a605d"
}
Frame {
msec: 688
- hash: "827fdd6a3d1006f4a9dd2faf208ea436"
+ hash: "27a783cd4ef5caab382721a98f7966da"
+ }
+ Frame {
+ msec: 704
+ hash: "c50598c0a5f8d501fd3ac9cddecee506"
+ }
+ Frame {
+ msec: 720
+ hash: "2a2d0e202bc3bf7991409391a2ce2934"
}
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: "2d97b8503c739b210615971ad08c2714"
}
Frame {
msec: 752
- hash: "ecfd9d6d5873001f0c67806544a14983"
+ hash: "f27fd7f1d8c6dfb7393ab0d39ed5cd02"
}
Frame {
msec: 768
- hash: "a3a3bc1e2523d3e7f961893bcd1dd3a8"
+ hash: "32d256543e3e1ba722860e5143af9f09"
}
Frame {
msec: 784
- hash: "e337735ad0b42e60c54f16f3da7af3cf"
- }
- Frame {
- msec: 800
- hash: "c39db081130d269f25dbcb1a19afb8d0"
- }
- Frame {
- msec: 816
- hash: "c464d501e3935ec0f53eb780bd1a8289"
+ hash: "9123b724613ef4d3d8431afde6e9eb6b"
}
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: "be5249a7effc94ec2be3d6053eba7b45"
+ }
+ Frame {
+ msec: 816
+ hash: "57f2c119c9eca3d1e4acd2f775af5207"
+ }
+ Frame {
msec: 832
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "23b79a2630448e99f27a657fd9789354"
}
Frame {
msec: 848
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "c8faab137cbc014aef5e3212889d00b8"
}
Frame {
msec: 864
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "c9616f6fde5d6a8ecf346ece9952f09b"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 880
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "11a861ca71d789e3d97d599608a793be"
}
Frame {
msec: 896
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "5a6c57df0c33b83985aeb194f291ad6c"
}
Frame {
msec: 912
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "2c047359db6946cb740462b0d6c695be"
}
Key {
type: 7
@@ -282,11 +298,11 @@ VisualTest {
}
Frame {
msec: 928
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "d0bb54caf661be021be8fe2691de24e8"
}
Frame {
msec: 944
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "80f0a60239f4d81b18b9cb3e80faf346"
}
Frame {
msec: 960
@@ -294,207 +310,247 @@ VisualTest {
}
Frame {
msec: 976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 1024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 1040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 1056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
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: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 1072
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
+ hash: "5f6cc0c97e4748aeeaa4a00c8a8c8928"
}
Frame {
msec: 1088
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "b1d71160d9a8a8edeb4cf7e00df36cfc"
}
Frame {
msec: 1104
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "5bfd4269145cc0962e0fa9c294e8f5aa"
}
Frame {
msec: 1120
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "4e22c95802d83f0099017c6be9d93214"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1136
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "0f31d8f4867af7c2f4fb8e86aa077afd"
}
Frame {
msec: 1152
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "21a552133320008a4d4f77752a3cfb55"
}
Frame {
msec: 1168
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "3a30a4a785de21da0ff939e303202a81"
}
Frame {
msec: 1184
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "b0e3ed2468538aacec354cb96d90c362"
}
Frame {
msec: 1200
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "56bf6e3fe47e52046b443481fc17a3ec"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1216
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ hash: "ce80807cde9b902ebf33281fce50d9fb"
}
Frame {
msec: 1232
- hash: "0f500339c81ca3621d13910017b84b7b"
+ hash: "ed67b18b5f7b90d3bcd9f662e70dc7b8"
}
Frame {
msec: 1248
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "930950ce5c6b12da47eea1b92d5176eb"
}
Frame {
msec: 1264
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "5a2eeca0f1533d323cc4d7ffbb7ad6aa"
}
Frame {
msec: 1280
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
+ hash: "3f7f3ef2d4c1353dfe7027930505f4fd"
}
Frame {
msec: 1296
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
+ hash: "1a3a781ac5a1e90a4415944e0c54ea4e"
}
- 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: "d11dae0dd461fc82a73bf319905320d4"
}
Key {
type: 6
- key: 16777234
- modifiers: 100663296
+ key: 16777248
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 1328
+ hash: "00957049ea51866138cfc33451f12e17"
+ }
+ Frame {
msec: 1344
- hash: "12b5e016bad990d1f2bf427ee8e3e6d9"
+ hash: "386847af9b173db7ef1554d2c85c748e"
}
Frame {
msec: 1360
- hash: "66a2ba3f9e005cd58aa50cfa0000cd15"
+ hash: "4b715060d29d6228a40217bc769fc140"
}
Frame {
msec: 1376
- hash: "a2e9e42e09dadbd0791f52bb96e0e0dc"
+ hash: "e58a9a3623afa08819351c22435ba03f"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1392
- hash: "ac68396566ea85a157e944e601dd8d18"
+ hash: "6378e3faf5578818fc282de2a077da59"
}
Frame {
msec: 1408
- hash: "b9bfdebec8dd1a93de7ef2768b2542ba"
+ hash: "07efb3687d29e65680e1cc831762348f"
}
Frame {
msec: 1424
- hash: "2e0a4b960803770acb34ef56ccf2be35"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "5292e7c95b3c5b11e4088b5010984257"
}
Frame {
msec: 1440
- hash: "df1643f0f8b7aa2dc080958822aeb3d0"
+ hash: "ffe95603f5fe9d63abb3b77c399c3b11"
}
Frame {
msec: 1456
- hash: "15bb91195adfaf83e88fd93e41ff3e17"
+ hash: "ad7cb73893c27b69704c5b821738a3c1"
}
Frame {
msec: 1472
- hash: "dc0476c27bd7eef3a59637df9a3fecd8"
+ hash: "e25971a61888ded93b651891ec9661b0"
}
Frame {
msec: 1488
- hash: "a271f69e9dc6d1e0362c3e10760895df"
+ hash: "80f90b3623bf34544438dd00abee7037"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1504
- hash: "7fe66bcc6bada354b4dd7baf8c977740"
+ hash: "797dd70572e532d4acb374230b2c8efe"
}
Frame {
msec: 1520
- hash: "6b502dbd5ac8ff010df326cb9b593dce"
+ hash: "0673db1283d874a5711520f272572cf8"
}
Frame {
msec: 1536
- hash: "a9dd21649a95a6a6e8daea91bc6e2a5f"
+ hash: "fbc8434912f08a93b5f884258bc754b7"
}
Frame {
msec: 1552
- hash: "374686590eaa02b7b436caa40cc0b0a0"
+ hash: "e41ebaf8f2114a6e8f38f731ea164e8a"
}
Frame {
msec: 1568
- hash: "09ac3c5d413b1f650407eaa971aade81"
+ hash: "d14bdb5bf1b4756166ecf6f3255bf3cc"
}
Frame {
msec: 1584
- hash: "39f84e04f1ae58600591c0de40558d2c"
+ hash: "5fb04569aa0e530b898a3c11725b947e"
}
Frame {
msec: 1600
- hash: "0336ea1799835af2185c361e221a9661"
+ hash: "03d24457fae160864fec985765f6d8d1"
}
Frame {
msec: 1616
- hash: "8c7ab13e499d7f31107cf0f899334259"
+ hash: "56dad740bb9032d113a0dacbe986c9c0"
}
Frame {
msec: 1632
- hash: "bad5899324e52c9e6eadb72f3e7c2150"
+ hash: "70d9acda83aa7db59780cf56f03e38ec"
}
Frame {
msec: 1648
- hash: "4b78f451ecb22cfbed9f5998d61018eb"
+ hash: "a272e39bc1af0f4d1bab9c3f64e746e2"
+ }
+ Frame {
+ msec: 1664
+ hash: "cf0379de604b9bb33b4456cb89e09afd"
+ }
+ Frame {
+ msec: 1680
+ hash: "332e7a10d75c0d21a24fc8be34269629"
}
Key {
type: 6
@@ -505,76 +561,84 @@ VisualTest {
count: 1
}
Frame {
- msec: 1664
- hash: "6c913bc712eee18947a43dd1c0a6516b"
- }
- Frame {
- msec: 1680
- hash: "4e566abf1e0696e72b2a4beab5a53d6e"
- }
- Frame {
msec: 1696
- hash: "6ad579c289c63a6b90a1517765fc041e"
+ hash: "c07eb71d90e74393205338bc946c1e43"
}
Frame {
msec: 1712
- hash: "cef43f349cf221a1aa6e6e70f1fa6339"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "984477de7c103ff3aebc2634785dce09"
}
Frame {
msec: 1728
- hash: "d89f7e3e2510fcb34786584747633673"
+ hash: "958f79dd7c57387042746df2ca01779e"
}
Frame {
msec: 1744
- hash: "eb23a3eac684808f73034f4e4ef8984d"
+ hash: "53bb3f0718d6333ca40dc279b6300b85"
}
Frame {
msec: 1760
- hash: "6f2c1f61e58940d9cc1a70c0db903446"
+ hash: "c16877cb99997cc47f1fff5af1d22bd7"
}
Frame {
msec: 1776
- hash: "f036a5ecda518be198f3bdf2dbc5baab"
+ hash: "dea3e1eb6c72f0d37398e3e301a23c19"
}
Frame {
msec: 1792
- hash: "7411784774fdc3b324644395f7beb013"
+ hash: "6bb7918f0794e6a7cbdb8847cdcf6e35"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1808
- hash: "abfdd1f8440998af2ff7903f49f1bd7c"
+ hash: "6858cd874abb1ed2fec34862f76044fa"
}
Frame {
msec: 1824
- hash: "6edd29f2e8d3d81e912c6b279ecc1885"
+ hash: "47b546ea0d5b1d4573991d4738c37f4d"
}
Frame {
msec: 1840
- hash: "8eb5ba22793c7cbfa97a64557f2a023f"
+ hash: "6c9e636dee2bb5f2a72a2c08ab9fb970"
}
Frame {
msec: 1856
- hash: "9a39470525e6f508228f7e0014e02d64"
+ hash: "42c2b2a7f41c88ae7bb19403e2460a17"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1872
- hash: "b3ad10cf28151f5f7f5a4c3540f1660e"
+ hash: "80b7986af693b89dc4d4f9533dae85cb"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1888
- hash: "816203df3cf42fa7a0e8d6730c186444"
+ hash: "631bea21dde9b7647f5843bc3513f3ba"
}
Frame {
msec: 1904
- hash: "a0a7e7ff7960dfe6149e526badf799a6"
+ hash: "cc40335abbea0d589180096f7d8f5426"
}
Frame {
msec: 1920
@@ -582,527 +646,623 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "4d245b2285eadfd206409f74e03c7fc9"
+ hash: "1c03b5384a889fe233eb1c6d14a55f36"
}
Frame {
msec: 1952
- hash: "e1d5e6c2e4df1454b5a256c3678ffdef"
+ hash: "7762cc4e6cf681311f5296de698c950b"
}
Frame {
msec: 1968
- hash: "781d7fb03a37cb3f297cc0d2df338fd7"
- }
- Key {
- type: 7
- key: 16777249
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "678eed1d1fec30b02156d690777397c1"
}
Frame {
msec: 1984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
}
Frame {
msec: 2000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
}
Frame {
msec: 2016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
}
Frame {
msec: 2032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2064
- hash: "781d7fb03a37cb3f297cc0d2df338fd7"
+ hash: "678eed1d1fec30b02156d690777397c1"
}
Frame {
msec: 2080
- hash: "e1d5e6c2e4df1454b5a256c3678ffdef"
+ hash: "7762cc4e6cf681311f5296de698c950b"
}
Frame {
msec: 2096
- hash: "4d245b2285eadfd206409f74e03c7fc9"
+ hash: "1c03b5384a889fe233eb1c6d14a55f36"
}
Frame {
msec: 2112
- hash: "5a647962e016d15daa417d88524d6061"
+ hash: "2cd264339edc0338fc610e0d766425cc"
}
Frame {
msec: 2128
- hash: "a0a7e7ff7960dfe6149e526badf799a6"
+ hash: "cc40335abbea0d589180096f7d8f5426"
}
Frame {
msec: 2144
- hash: "816203df3cf42fa7a0e8d6730c186444"
+ hash: "631bea21dde9b7647f5843bc3513f3ba"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2160
- hash: "b3ad10cf28151f5f7f5a4c3540f1660e"
+ hash: "c5199c908df1f550d7c4f133eb926134"
}
Frame {
msec: 2176
- hash: "9a39470525e6f508228f7e0014e02d64"
+ hash: "483eca22c50750e7591785ed60813d1f"
}
Frame {
msec: 2192
- hash: "8eb5ba22793c7cbfa97a64557f2a023f"
+ hash: "4091de379d8f6ccc7f19ea39f6c7993a"
}
Frame {
msec: 2208
- hash: "6edd29f2e8d3d81e912c6b279ecc1885"
+ hash: "cd58c0d4f7248315a787542b0edcb4fb"
}
Frame {
msec: 2224
- hash: "abfdd1f8440998af2ff7903f49f1bd7c"
+ hash: "458895f9ede4d56e0b851c6ed124405d"
}
Frame {
msec: 2240
- hash: "7411784774fdc3b324644395f7beb013"
- }
- Frame {
- msec: 2256
- hash: "f036a5ecda518be198f3bdf2dbc5baab"
+ hash: "29a28a97fc78a1b01252b852fb0446e2"
}
Key {
type: 7
- key: 16777248
- modifiers: 33554432
+ key: 16777236
+ modifiers: 0
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 2256
+ hash: "4fd9f22ad06e02b68319c298c2286e36"
+ }
+ Frame {
msec: 2272
- hash: "6f2c1f61e58940d9cc1a70c0db903446"
+ hash: "a588e9dbeabd7519cd0cf2d26a123529"
}
Frame {
msec: 2288
- hash: "eb23a3eac684808f73034f4e4ef8984d"
+ hash: "bb74f706477e277284fad50752f078b5"
}
Frame {
msec: 2304
- hash: "d89f7e3e2510fcb34786584747633673"
+ hash: "38f16a7deeaea6828edd15b00024fc19"
}
Frame {
msec: 2320
- hash: "cef43f349cf221a1aa6e6e70f1fa6339"
+ hash: "30c4aa33a6672f4df24186ad1e28bcf9"
}
Frame {
msec: 2336
- hash: "6ad579c289c63a6b90a1517765fc041e"
+ hash: "7f2ac0854ddbcca94a2ad160ead5d4d3"
}
Frame {
msec: 2352
- hash: "4e566abf1e0696e72b2a4beab5a53d6e"
+ hash: "e1c083d0235ff5a2e002ce78f43009b0"
}
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: "eaee6483a2a4a0b09a8e40bb1785a498"
}
Frame {
msec: 2384
- hash: "2c518a32ca3b5ca924709cc6990fb039"
+ hash: "26530bded6311640c4d3f6d1485fa7d3"
}
Frame {
msec: 2400
- hash: "7f40db00bd3e6d0b39454eefa1403f44"
+ hash: "e54102edbf6cc0c9a32b09858f760ee5"
}
Frame {
msec: 2416
- hash: "98db32e0d1812e9584105dc4dbceff80"
+ hash: "27434828de3ba8f6a3b83f042b70eb8b"
}
Frame {
msec: 2432
- hash: "c2150a67391bb574141c16cb011847bf"
+ hash: "fdf68e988b988d068ea78a5a09ef349e"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2448
- hash: "f9ea21d894fa2dace4d43ce99a580b90"
+ hash: "0e1e9a2cf891cf65f30ead539becf408"
}
Frame {
msec: 2464
- hash: "2f580c3244499fc6ecd2121693f463fd"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "46602c03632f6a47c9d523e1ea61baaf"
}
Frame {
msec: 2480
- hash: "2f7f421d3e6a895a9efa6b0e8feb81c4"
+ hash: "5c758ee2aa3f92b6506533f6d615bc20"
}
Frame {
msec: 2496
- hash: "35a18447f319431ed0a645d05a1d03d1"
+ hash: "25edbdaae72e03426c9dfa75c08c33e6"
}
Frame {
msec: 2512
- hash: "54e36fb4014be554d13709b48b9bdce7"
+ hash: "a4bd11f15594932b996a069f3098c596"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2528
- hash: "dbe3456536a729b268850a6ee5d1fb47"
+ hash: "e4090b920ce2456149155f61fb586a6f"
}
Frame {
msec: 2544
- hash: "4c148434cf3868db5dc98f426d9fb913"
+ hash: "ce71f4dc76f90fa300d715ed77e8a5a8"
}
Frame {
msec: 2560
- hash: "2eb6da3ebfd531037523347603a805e2"
+ hash: "59414694d42a3942c4832fd7a3e93145"
}
Frame {
msec: 2576
- hash: "fefbb2f4671f8a36f9d2207ced8c0bfb"
+ hash: "1213fc9d9c1d58ceefc213a59f970679"
}
Frame {
msec: 2592
- hash: "1ab596339afc1f96136ee69c4b7688e1"
+ hash: "bbfa8471ab3fa5fc146946a6c8e0ce86"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2608
- hash: "e07f59d729cb2790296e8c7cd3d0d3c9"
+ hash: "22a49c3b5234b4b7a2b935d58027f834"
}
Frame {
msec: 2624
- hash: "a7dccada1080487cab2d0a916676c5cb"
+ hash: "7b81c14d5350fb55775c1cb0f3945c46"
}
Frame {
msec: 2640
- hash: "ac5939eb4379394fab829b307cbfe7ec"
+ hash: "8ebf266de0df228e47cc6e5a8758a6ea"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2656
- hash: "9329d353c678d2bc61d08f63029d1b9b"
+ hash: "6344eb333dc28672f863bcb7ca5d6cfe"
}
Frame {
msec: 2672
- hash: "41263f56af7875028bb0c1e7eccf6f5d"
+ hash: "8efc9b4a6c27b8918cba629a5a1c0f24"
}
Frame {
msec: 2688
- hash: "e2eb18af82c85ea78ba438163e922df3"
+ hash: "b586c24ce0c04391a9095c0ac4b7a05a"
}
Frame {
msec: 2704
- hash: "91b2695e4915238ae8610a64e279b0f4"
+ hash: "191413fe51a6887ae92c135252fdeeae"
}
Frame {
msec: 2720
- hash: "a97d90765f87b998eae6e9f603c61bff"
- }
- Frame {
- msec: 2736
- hash: "48969edab07b942480d93ac2d383ca24"
- }
- Frame {
- msec: 2752
- hash: "ecfd9d6d5873001f0c67806544a14983"
+ hash: "fc0b37abf12827af41e7037eab8ba5c8"
}
Key {
type: 6
key: 16777234
- modifiers: 0
+ modifiers: 100663296
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 2736
+ hash: "5efe28d02b93e094192d7fd6fe753acd"
+ }
+ Frame {
+ msec: 2752
+ hash: "dadc1f7b14fbf9f8a174821c4197da46"
+ }
+ Frame {
msec: 2768
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "124deac57a3eeaef4cb3c0c802bacc05"
}
Frame {
msec: 2784
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "e022a6d66a7b37d72885a7a7f6919433"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2800
- hash: "0f500339c81ca3621d13910017b84b7b"
+ hash: "5faa6543469753948b1636351d044329"
}
Frame {
msec: 2816
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ hash: "a7dcf5a0b9bb00105eed173b498cb95c"
}
Frame {
msec: 2832
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "29ac83d169af2c74ffd134d771c88718"
}
Frame {
msec: 2848
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "0a04648fdc90ec86fb55ad3a165573c4"
}
Frame {
msec: 2864
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "d699c713ba939612f1e552e48db19b18"
}
Frame {
msec: 2880
image: "cursorDelegate.2.png"
}
- Key {
- type: 7
- key: 16777234
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
Frame {
msec: 2896
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "adf564652cfae394869755ff2fe5b534"
}
Frame {
msec: 2912
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "d1453f663217ee45a8462b7d077d7f6a"
}
Frame {
msec: 2928
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "9f1461d63ccc49f83e58245ba75685e1"
}
Frame {
msec: 2944
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "8cece1543e7e9190eefaa92c2024cbd1"
}
Frame {
msec: 2960
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
+ hash: "555abf8bc3fdb1eef85b1e4bd54932a3"
}
Frame {
msec: 2976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 2992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3072
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
+ hash: "555abf8bc3fdb1eef85b1e4bd54932a3"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3088
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "996da2eff9302908a55308dbcc8fb3c2"
}
Frame {
msec: 3104
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "6ccc70f6120acb53152b71bcf95514ca"
}
Frame {
msec: 3120
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "51a1b8e79d209643d55d4cecc6a70ed0"
}
Frame {
msec: 3136
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "944dc7026c6487838ede9ef94003ec90"
}
Frame {
msec: 3152
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "4abbd51b620ac4ea91af95bc2d0881d7"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3168
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "ba721988a1708b8c0762d706820c48fc"
}
Frame {
msec: 3184
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "5dba56a5bb5f8a6539a0066af35c73b8"
}
Frame {
msec: 3200
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "bc3efeeebe7075cd09a6e57eef43d610"
}
Frame {
msec: 3216
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ hash: "0bd9f7de32b01d8144280bf252d9a18f"
}
Frame {
msec: 3232
- hash: "0f500339c81ca3621d13910017b84b7b"
+ hash: "29db710e47b13f26e2bf92568d52bf52"
}
Frame {
msec: 3248
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "a27c65c0a49deb18b0766bba41a32e54"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3264
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "484ee552e1a9c5eafcfe1ac583fcdffd"
}
Frame {
msec: 3280
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
+ hash: "40b336a0e337b66d813089a82a88c712"
}
Frame {
msec: 3296
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
+ hash: "b7a8d4b8bb2b83e4c886aa51c1a73895"
}
Frame {
msec: 3312
- hash: "4a646d76b706698a02cead560b1f8d57"
+ hash: "43b3bf8425e7a6b7115d8e6a0bcfd677"
}
Frame {
msec: 3328
- hash: "48ec87bfc25471f6fa2d43f9db80b693"
+ hash: "e2ce168241b043db74867fe7ed6de956"
}
Frame {
msec: 3344
- hash: "827fdd6a3d1006f4a9dd2faf208ea436"
+ hash: "0c713bbd7bb694d87f0fe14f87098b9b"
}
Frame {
msec: 3360
- hash: "788d8962f311adf57a3acc876b0e8804"
+ hash: "316f6bd365ca4b4f2e6fbf34a047e307"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3376
- hash: "5d112a3675ea4c010e7bc60e036d0262"
+ hash: "421fb8881fe7b300dcec0f44ff1743e3"
}
Frame {
msec: 3392
- hash: "a2ea272b45d8de225826d9381015ff2e"
+ hash: "e8376079434393467b47a56ff00efb2b"
}
Frame {
msec: 3408
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
+ hash: "63259de84a6e07d42c9df94ec2a25920"
}
Frame {
msec: 3424
- hash: "4e875ba8703b690a17e445f2b3810435"
+ hash: "f9194d82b81f5ac58862c382caf5cf59"
}
Frame {
msec: 3440
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
+ hash: "e185f2594f038532a37b351384dc97ea"
}
Frame {
msec: 3456
- hash: "d74f8e44d47710714d4197809fffb622"
+ hash: "91edc3ca1e6c532bd92006a761073da2"
}
Frame {
msec: 3472
- hash: "d23bdd94019477d8378cde580d8765ad"
+ hash: "b47390495539756048ccc71047ebef7b"
}
Frame {
msec: 3488
- hash: "6032aada2c48092000ecb93e52656414"
+ hash: "7c83d3bdb9abf8ab2cfe7f9464673a49"
}
Frame {
msec: 3504
- hash: "438be260f19d04c9f98ed7dce1c7db40"
+ hash: "b686f4013f45885ab794aba9ff491286"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3520
- hash: "3af60972e7d5d4320a549e5df52a1228"
+ hash: "0c55d6ea330b7365825864d4bdacafcb"
}
Frame {
msec: 3536
- hash: "bf8459b99ca0bf568c58a3bb2a2fcc1f"
+ hash: "2bb72f191201572308e461021872fb4c"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3552
- hash: "c0dc1cf5ba7014e069c4d4bd7ac0f89d"
+ hash: "81b04a84982698ee80d13d392742edd3"
}
Frame {
msec: 3568
- hash: "f2ddf9d4fd3a2a2d354172714ce94d99"
+ hash: "63f582dc2a9f707c1ec99f4285d13a84"
}
Frame {
msec: 3584
- hash: "bdfb42dc3879099e402784238c2cdddb"
+ hash: "f91cb29101f80f5dcb1e9e8c82e823b7"
}
Frame {
msec: 3600
- hash: "5e483b0fd4808f2fb31aea90ccf86d3e"
+ hash: "fdf68e988b988d068ea78a5a09ef349e"
}
Frame {
msec: 3616
- hash: "8159bda651d95a320ac09aa6feb377a1"
+ hash: "27434828de3ba8f6a3b83f042b70eb8b"
}
Frame {
msec: 3632
- hash: "ceda37af96bd02baae218d3bfaed93f7"
+ hash: "e54102edbf6cc0c9a32b09858f760ee5"
}
Frame {
msec: 3648
- hash: "4b81757a105aa7c5ac6148455eea66c3"
+ hash: "26530bded6311640c4d3f6d1485fa7d3"
}
Frame {
msec: 3664
- hash: "ff7e2cdd006f9b76ab8c0416d81f0cb1"
+ hash: "eaee6483a2a4a0b09a8e40bb1785a498"
}
Frame {
msec: 3680
- hash: "9b174cd9a87ff193ce646408946b310c"
+ hash: "e1c083d0235ff5a2e002ce78f43009b0"
}
Frame {
msec: 3696
- hash: "89fa590b47ee77021dedf7938439ce69"
+ hash: "7f2ac0854ddbcca94a2ad160ead5d4d3"
}
Frame {
msec: 3712
- hash: "6e5680803184dfc76cbf1c2de804d6cc"
+ hash: "30c4aa33a6672f4df24186ad1e28bcf9"
}
Frame {
msec: 3728
- hash: "c6de6b9203673c77427ab84ce86daaf5"
+ hash: "38f16a7deeaea6828edd15b00024fc19"
}
Frame {
msec: 3744
- hash: "198f8e912c19debd51f837627d1171e9"
+ hash: "bb74f706477e277284fad50752f078b5"
}
Frame {
msec: 3760
- hash: "3b380dcb6815698241f3dcccb52785c2"
+ hash: "a588e9dbeabd7519cd0cf2d26a123529"
}
Frame {
msec: 3776
- hash: "254942e12b8a31420d2243b7e2529ae8"
+ hash: "4fd9f22ad06e02b68319c298c2286e36"
}
Frame {
msec: 3792
- hash: "ebf121910a5318c284f8e964d63aed40"
+ hash: "29a28a97fc78a1b01252b852fb0446e2"
}
Frame {
msec: 3808
- hash: "0fcf416a80d22f077fcf4d23bddeb6c6"
+ hash: "458895f9ede4d56e0b851c6ed124405d"
}
Frame {
msec: 3824
- hash: "4a6596da390380dbafc1cdaceca1101e"
+ hash: "cd58c0d4f7248315a787542b0edcb4fb"
}
Frame {
msec: 3840
@@ -1110,271 +1270,239 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "c2be53ae5e2d5d3081df9af31426ec84"
+ hash: "483eca22c50750e7591785ed60813d1f"
}
Frame {
msec: 3872
- hash: "52350ac5d10f8fe7571d12193b861d3f"
+ hash: "c5199c908df1f550d7c4f133eb926134"
}
Frame {
msec: 3888
- hash: "f286a35d7f4a022315f69a5db72da388"
+ hash: "efaa5e4483ed9cfec792e8f270b5079e"
}
Frame {
msec: 3904
- hash: "aa329519eba4dad9589bff095528c535"
+ hash: "7ffcff87e27dcb0be0047eb6fbcc9549"
}
Frame {
msec: 3920
- hash: "0beae60853afaaa0e7f7540fb50bcddf"
+ hash: "04339417259ddee10134e1479729ae1b"
}
Frame {
msec: 3936
- hash: "dc098a8b4d2f117a09cf1f2ced201a60"
+ hash: "0f1e6a0d9db7b6b8b874333682866ffa"
}
Frame {
msec: 3952
- hash: "3655b992097b433071ec9dd69e086c70"
+ hash: "66500c2cc3d69b9fb48dc46e384aca6d"
}
Frame {
msec: 3968
- hash: "82cb92d7940d13deee97e4ccda9210fb"
+ hash: "70d6b73499c36138bee63e07afb0b186"
}
Frame {
msec: 3984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4064
- hash: "82cb92d7940d13deee97e4ccda9210fb"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "70d6b73499c36138bee63e07afb0b186"
}
Frame {
msec: 4080
- hash: "3655b992097b433071ec9dd69e086c70"
+ hash: "66500c2cc3d69b9fb48dc46e384aca6d"
}
Frame {
msec: 4096
- hash: "dc098a8b4d2f117a09cf1f2ced201a60"
+ hash: "0f1e6a0d9db7b6b8b874333682866ffa"
}
Frame {
msec: 4112
- hash: "0beae60853afaaa0e7f7540fb50bcddf"
+ hash: "04339417259ddee10134e1479729ae1b"
}
Frame {
msec: 4128
- hash: "aa329519eba4dad9589bff095528c535"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "7ffcff87e27dcb0be0047eb6fbcc9549"
}
Frame {
msec: 4144
- hash: "f286a35d7f4a022315f69a5db72da388"
+ hash: "efaa5e4483ed9cfec792e8f270b5079e"
}
Frame {
msec: 4160
- hash: "52350ac5d10f8fe7571d12193b861d3f"
+ hash: "c5199c908df1f550d7c4f133eb926134"
}
Frame {
msec: 4176
- hash: "c2be53ae5e2d5d3081df9af31426ec84"
+ hash: "483eca22c50750e7591785ed60813d1f"
}
Frame {
msec: 4192
- hash: "367391b2a124e2c818510567d0884d18"
+ hash: "4091de379d8f6ccc7f19ea39f6c7993a"
}
Frame {
msec: 4208
- hash: "4a6596da390380dbafc1cdaceca1101e"
+ hash: "cd58c0d4f7248315a787542b0edcb4fb"
}
Frame {
msec: 4224
- hash: "0fcf416a80d22f077fcf4d23bddeb6c6"
+ hash: "458895f9ede4d56e0b851c6ed124405d"
}
Frame {
msec: 4240
- hash: "ebf121910a5318c284f8e964d63aed40"
+ hash: "29a28a97fc78a1b01252b852fb0446e2"
}
Frame {
msec: 4256
- hash: "254942e12b8a31420d2243b7e2529ae8"
+ hash: "4fd9f22ad06e02b68319c298c2286e36"
}
Frame {
msec: 4272
- hash: "3b380dcb6815698241f3dcccb52785c2"
+ hash: "a588e9dbeabd7519cd0cf2d26a123529"
}
Frame {
msec: 4288
- hash: "198f8e912c19debd51f837627d1171e9"
+ hash: "bb74f706477e277284fad50752f078b5"
}
Frame {
msec: 4304
- hash: "c6de6b9203673c77427ab84ce86daaf5"
+ hash: "38f16a7deeaea6828edd15b00024fc19"
}
Frame {
msec: 4320
- hash: "6e5680803184dfc76cbf1c2de804d6cc"
+ hash: "30c4aa33a6672f4df24186ad1e28bcf9"
}
Frame {
msec: 4336
- hash: "89fa590b47ee77021dedf7938439ce69"
+ hash: "7f2ac0854ddbcca94a2ad160ead5d4d3"
}
Frame {
msec: 4352
- hash: "9b174cd9a87ff193ce646408946b310c"
+ hash: "e1c083d0235ff5a2e002ce78f43009b0"
}
Frame {
msec: 4368
- hash: "ff7e2cdd006f9b76ab8c0416d81f0cb1"
+ hash: "eaee6483a2a4a0b09a8e40bb1785a498"
}
Frame {
msec: 4384
- hash: "4b81757a105aa7c5ac6148455eea66c3"
+ hash: "26530bded6311640c4d3f6d1485fa7d3"
}
Frame {
msec: 4400
- hash: "ceda37af96bd02baae218d3bfaed93f7"
+ hash: "e54102edbf6cc0c9a32b09858f760ee5"
}
Frame {
msec: 4416
- hash: "8159bda651d95a320ac09aa6feb377a1"
+ hash: "27434828de3ba8f6a3b83f042b70eb8b"
}
Frame {
msec: 4432
- hash: "5e483b0fd4808f2fb31aea90ccf86d3e"
+ hash: "fdf68e988b988d068ea78a5a09ef349e"
}
Frame {
msec: 4448
- hash: "bdfb42dc3879099e402784238c2cdddb"
+ hash: "f91cb29101f80f5dcb1e9e8c82e823b7"
}
Frame {
msec: 4464
- hash: "f2ddf9d4fd3a2a2d354172714ce94d99"
+ hash: "63f582dc2a9f707c1ec99f4285d13a84"
}
Frame {
msec: 4480
- hash: "c0dc1cf5ba7014e069c4d4bd7ac0f89d"
+ hash: "81b04a84982698ee80d13d392742edd3"
}
Frame {
msec: 4496
- hash: "bf8459b99ca0bf568c58a3bb2a2fcc1f"
+ hash: "2bb72f191201572308e461021872fb4c"
}
Frame {
msec: 4512
- hash: "3af60972e7d5d4320a549e5df52a1228"
+ hash: "0c55d6ea330b7365825864d4bdacafcb"
}
Frame {
msec: 4528
- hash: "438be260f19d04c9f98ed7dce1c7db40"
+ hash: "b686f4013f45885ab794aba9ff491286"
}
Frame {
msec: 4544
- hash: "6032aada2c48092000ecb93e52656414"
+ hash: "7c83d3bdb9abf8ab2cfe7f9464673a49"
}
Frame {
msec: 4560
- hash: "d23bdd94019477d8378cde580d8765ad"
+ hash: "b47390495539756048ccc71047ebef7b"
}
Frame {
msec: 4576
- hash: "d74f8e44d47710714d4197809fffb622"
- }
- Key {
- type: 6
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "91edc3ca1e6c532bd92006a761073da2"
}
Frame {
msec: 4592
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
+ hash: "e185f2594f038532a37b351384dc97ea"
}
Frame {
msec: 4608
- hash: "4e875ba8703b690a17e445f2b3810435"
+ hash: "f9194d82b81f5ac58862c382caf5cf59"
}
Frame {
msec: 4624
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
- }
- Key {
- type: 7
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "63259de84a6e07d42c9df94ec2a25920"
}
Frame {
msec: 4640
- hash: "a2ea272b45d8de225826d9381015ff2e"
+ hash: "e8376079434393467b47a56ff00efb2b"
}
Frame {
msec: 4656
- hash: "5d112a3675ea4c010e7bc60e036d0262"
+ hash: "421fb8881fe7b300dcec0f44ff1743e3"
}
Frame {
msec: 4672
- hash: "788d8962f311adf57a3acc876b0e8804"
+ hash: "316f6bd365ca4b4f2e6fbf34a047e307"
}
Frame {
msec: 4688
- hash: "827fdd6a3d1006f4a9dd2faf208ea436"
+ hash: "0c713bbd7bb694d87f0fe14f87098b9b"
}
Frame {
msec: 4704
- hash: "48ec87bfc25471f6fa2d43f9db80b693"
+ hash: "e2ce168241b043db74867fe7ed6de956"
}
Frame {
msec: 4720
- hash: "4a646d76b706698a02cead560b1f8d57"
+ hash: "43b3bf8425e7a6b7115d8e6a0bcfd677"
}
Frame {
msec: 4736
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
+ hash: "b7a8d4b8bb2b83e4c886aa51c1a73895"
}
Frame {
msec: 4752
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
+ hash: "40b336a0e337b66d813089a82a88c712"
}
Frame {
msec: 4768
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "484ee552e1a9c5eafcfe1ac583fcdffd"
}
Frame {
msec: 4784
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "a27c65c0a49deb18b0766bba41a32e54"
}
Frame {
msec: 4800
@@ -1382,1998 +1510,42 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ hash: "0bd9f7de32b01d8144280bf252d9a18f"
}
Frame {
msec: 4832
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "bc3efeeebe7075cd09a6e57eef43d610"
}
Frame {
msec: 4848
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "5dba56a5bb5f8a6539a0066af35c73b8"
}
Frame {
msec: 4864
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "ba721988a1708b8c0762d706820c48fc"
}
Frame {
msec: 4880
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "4abbd51b620ac4ea91af95bc2d0881d7"
}
Frame {
msec: 4896
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "944dc7026c6487838ede9ef94003ec90"
}
Frame {
msec: 4912
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "51a1b8e79d209643d55d4cecc6a70ed0"
}
Frame {
msec: 4928
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "6ccc70f6120acb53152b71bcf95514ca"
}
Frame {
msec: 4944
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "996da2eff9302908a55308dbcc8fb3c2"
}
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: "264f34128dfe563126b9f187c65df61e"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png
new file mode 100644
index 0000000000..57a1599c59
--- /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..d327d5b74b
--- /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..c1e3dce7ef
--- /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.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml
new file mode 100644
index 0000000000..9a26f570d5
--- /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
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ 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: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 384
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 400
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 416
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 432
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Key {
+ type: 7
+ key: 74
+ modifiers: 33554432
+ text: "4a"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 448
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 464
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 480
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 496
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 512
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 528
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 544
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 560
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 576
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 592
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 608
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 624
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 640
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 656
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 672
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Frame {
+ msec: 688
+ hash: "d3151ba24f0011bf1add83377f32ec85"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 704
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 720
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 736
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 752
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 768
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 784
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 800
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 816
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 832
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Frame {
+ msec: 848
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
+ }
+ Key {
+ type: 6
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 864
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Frame {
+ msec: 880
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Frame {
+ msec: 896
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Key {
+ type: 7
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 912
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Frame {
+ msec: 928
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Frame {
+ msec: 944
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Frame {
+ msec: 960
+ image: "echoMode.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
+ }
+ Key {
+ type: 6
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 992
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1008
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1024
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1040
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Key {
+ type: 7
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1056
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1072
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1088
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1104
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1120
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1136
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1152
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1168
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1184
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1200
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1216
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Frame {
+ msec: 1232
+ hash: "f9149723166015ed066b794cf86b27d0"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1248
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Frame {
+ msec: 1264
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Frame {
+ msec: 1280
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1296
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Frame {
+ msec: 1312
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Frame {
+ msec: 1328
+ hash: "56dd8557435509e5a96c2f2907d474eb"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1344
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1360
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1376
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1392
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1408
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1424
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1440
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1456
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Frame {
+ msec: 1472
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1488
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1504
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1520
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1536
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1552
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1584
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1600
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1616
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1632
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Frame {
+ msec: 1648
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1664
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
+ }
+ Frame {
+ msec: 1680
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
+ }
+ Frame {
+ msec: 1696
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
+ }
+ Frame {
+ msec: 1712
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
+ }
+ Frame {
+ msec: 1728
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1744
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1760
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Frame {
+ msec: 1776
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Frame {
+ msec: 1792
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1808
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Frame {
+ msec: 1824
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Frame {
+ msec: 1840
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Frame {
+ msec: 1856
+ hash: "437370a412fccbeee3d1f095e32c3584"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1872
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1888
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1904
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1920
+ image: "echoMode.1.png"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1936
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1952
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1968
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 1984
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 2000
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Frame {
+ msec: 2016
+ hash: "eb4a45722e365b103ff5423117236fd3"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2032
+ hash: "b53d0651627d008545e54063ceb8d689"
+ }
+ Frame {
+ msec: 2048
+ hash: "b53d0651627d008545e54063ceb8d689"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "b53d0651627d008545e54063ceb8d689"
+ }
+ Frame {
+ msec: 2080
+ hash: "b53d0651627d008545e54063ceb8d689"
+ }
+ Key {
+ type: 6
+ key: 86
+ modifiers: 0
+ text: "76"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2096
+ hash: "173b36137940b37001750e02d434b8e8"
+ }
+ Frame {
+ msec: 2112
+ hash: "173b36137940b37001750e02d434b8e8"
+ }
+ Frame {
+ msec: 2128
+ hash: "173b36137940b37001750e02d434b8e8"
+ }
+ Frame {
+ msec: 2144
+ hash: "173b36137940b37001750e02d434b8e8"
+ }
+ 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: "2e636a964b4a1ab74ad3e23399c2ae8c"
+ }
+ Frame {
+ msec: 2176
+ hash: "2e636a964b4a1ab74ad3e23399c2ae8c"
+ }
+ Frame {
+ msec: 2192
+ hash: "2e636a964b4a1ab74ad3e23399c2ae8c"
+ }
+ Frame {
+ msec: 2208
+ hash: "2e636a964b4a1ab74ad3e23399c2ae8c"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2224
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2240
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Frame {
+ msec: 2256
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Frame {
+ msec: 2272
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Frame {
+ msec: 2288
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Frame {
+ msec: 2304
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2320
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Frame {
+ msec: 2336
+ hash: "631c6034372c2e7675ebce0ec415f230"
+ }
+ Key {
+ type: 6
+ key: 77
+ modifiers: 0
+ text: "6d"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2352
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2368
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2384
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2400
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2416
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2432
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Key {
+ type: 7
+ key: 77
+ modifiers: 0
+ text: "6d"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2464
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2480
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Frame {
+ msec: 2496
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2512
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2528
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2544
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2576
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2592
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2608
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2624
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2640
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2656
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2672
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2688
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2704
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2720
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2736
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2752
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2768
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2784
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2800
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2816
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2832
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2848
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2864
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2880
+ image: "echoMode.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2912
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2928
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2944
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2960
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2976
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 2992
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 3008
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 3024
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 3040
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+ Frame {
+ msec: 3056
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
+ }
+}
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..4c402eaf17
--- /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
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 32
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 48
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 64
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 80
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 96
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 112
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 128
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 144
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 160
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 176
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 192
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 208
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 224
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 240
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 256
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 272
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 288
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 304
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 320
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 336
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 352
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 368
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 384
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+ Frame {
+ msec: 400
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
+ }
+}
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/data/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.png
deleted file mode 100644
index 87c2e07ec3..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.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/qmlvisual.pro b/tests/auto/declarative/qmlvisual/qmlvisual.pro
index be9f26fefc..d9fce4435d 100644
--- a/tests/auto/declarative/qmlvisual/qmlvisual.pro
+++ b/tests/auto/declarative/qmlvisual/qmlvisual.pro
@@ -6,7 +6,7 @@ SOURCES += tst_qmlvisual.cpp
symbian: {
importFiles.path = .
- importFiles.sources = animation \
+ importFiles.files = animation \
fillmode \
focusscope \
ListView \
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..8d4d0d1b67 100644
--- a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
+++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
@@ -102,43 +102,17 @@ 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") {
+ //Text on X11 varies per distro - and the CI system is currently using something outdated.
+#if defined(Q_WS_X11)
+ foreach(const QString &str, files.filter(QRegExp(".*text.*")))
+ files.removeAll(str);
+#endif
+ //We don't want QWS test results to mire down the CI system
+#if defined(Q_WS_QWS)
+ files.clear();
#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 +131,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";
@@ -278,7 +252,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 +319,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/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/exceptionsafety/exceptionsafety.pro b/tests/auto/exceptionsafety/exceptionsafety.pro
index d162219f7c..52ba9e27bd 100644
--- a/tests/auto/exceptionsafety/exceptionsafety.pro
+++ b/tests/auto/exceptionsafety/exceptionsafety.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_exceptionsafety.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/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/guiapplauncher/guiapplauncher.pro b/tests/auto/guiapplauncher/guiapplauncher.pro
index 30f5cf4f75..1fe9c8b0f6 100644
--- a/tests/auto/guiapplauncher/guiapplauncher.pro
+++ b/tests/auto/guiapplauncher/guiapplauncher.pro
@@ -3,6 +3,7 @@
# -------------------------------------------------
# Link against gui for X11,etc.
+load(qttest_p4)
DEFINES += SRCDIR=\\\"$$PWD/\\\"
TARGET = tst_guiapplauncher
diff --git a/tests/auto/lancelot/.gitignore b/tests/auto/lancelot/.gitignore
new file mode 100644
index 0000000000..0a70416d57
--- /dev/null
+++ b/tests/auto/lancelot/.gitignore
@@ -0,0 +1 @@
+tst_lancelot
diff --git a/tests/auto/lancelot/lancelot.pro b/tests/auto/lancelot/lancelot.pro
new file mode 100644
index 0000000000..4535b83e27
--- /dev/null
+++ b/tests/auto/lancelot/lancelot.pro
@@ -0,0 +1,15 @@
+load(qttest_p4)
+QT += xml svg
+contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2):QT += opengl
+
+SOURCES += tst_lancelot.cpp \
+ $$QT_SOURCE_TREE/tests/arthur/common/paintcommands.cpp
+HEADERS += $$QT_SOURCE_TREE/tests/arthur/common/paintcommands.h
+RESOURCES += $$QT_SOURCE_TREE/tests/arthur/common/images.qrc
+
+include($$QT_SOURCE_TREE/tests/arthur/common/baselineprotocol.pri)
+win32|symbian*:MKSPEC=$$replace(QMAKESPEC, \\\\, /)
+else:MKSPEC=$$QMAKESPEC
+DEFINES += QMAKESPEC=\\\"$$MKSPEC\\\"
+
+!symbian:!wince*:DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/lancelot/scripts/aliasing.qps b/tests/auto/lancelot/scripts/aliasing.qps
new file mode 100644
index 0000000000..59878f9c4d
--- /dev/null
+++ b/tests/auto/lancelot/scripts/aliasing.qps
@@ -0,0 +1,156 @@
+
+path_moveTo convexPath 25 0
+path_lineTo convexPath 50 50
+path_lineTo convexPath 25 25
+path_lineTo convexPath 0 50
+path_closeSubpath convexPath
+
+pixmap_load border.png pixmap
+
+setRenderHint LineAntialiasing false
+translate 10 10
+
+begin_block drawing
+ setPen black 1
+ setBrush 7f7fff
+ drawPath convexPath
+
+ setFont "monospace" 8
+ setPen black
+ drawText 0 68 "QwErTy@"
+
+
+ setPen black 1
+ setBrush 7f7fff
+ drawRect 0 80 10 5
+
+ setPen black 1
+ setBrush noBrush
+ drawRect 20 80 10 5
+
+ setPen noPen
+ setBrush 7f7fff
+ drawRect 40 80 10 5
+
+
+ setPen black 2
+ setBrush 7f7fff
+ drawRect 0 90 10 5
+
+ setPen black 2
+ setBrush noBrush
+ drawRect 20 90 10 5
+
+ setPen noPen
+ setBrush 7f7fff
+ drawRect 40 90 10 5
+
+
+ setPen black 3
+ setBrush 7f7fff
+ drawRect 0 100 10 5
+
+ setPen black 3
+ setBrush noBrush
+ drawRect 20 100 10 5
+
+ setPen noPen
+ setBrush 7f7fff
+ drawRect 40 100 10 5
+
+
+ setPen black 1
+ setBrush noBrush
+ drawLine 10 110 20 120
+ drawLine 30 120 40 110
+
+ setPen black 2
+ setBrush noBrush
+ drawLine 10 120 20 130
+ drawLine 30 130 40 120
+
+ setPen black 3
+ setBrush noBrush
+ drawLine 10 130 20 140
+ drawLine 30 140 40 130
+
+ drawPixmap pixmap 0 150
+
+ setRenderHint SmoothPixmapTransform false
+ drawPixmap pixmap 20 150 15 15 0 0 10 10
+
+end_block
+
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+drawText 15 185 "0.0"
+
+resetMatrix
+translate 70.2 10.2
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.2 -0.2
+drawText 15 185 "0.2"
+
+
+resetMatrix
+translate 130.4 10.4
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.4 -0.4
+drawText 15 185 "0.4"
+
+
+resetMatrix
+translate 190.5 10.5
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.5 -0.5
+drawText 15 185 "0.5"
+
+
+resetMatrix
+translate 250.6 10.6
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.6 -0.6
+drawText 15 185 "0.6"
+
+
+resetMatrix
+translate 310.8 10.8
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+translate -0.8 -0.8
+drawText 15 185 "0.8"
+
+
+resetMatrix
+translate 371 11
+setRenderHint LineAntialiasing false
+repeat_block drawing
+translate 0 180
+setRenderHint LineAntialiasing true
+repeat_block drawing
+drawText 15 185 "1.0"
+
+
+resetMatrix
+drawText 430 95 "Aliased"
+drawText 430 275 "Anti-Aliased" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/arcs.qps b/tests/auto/lancelot/scripts/arcs.qps
new file mode 100644
index 0000000000..8a7a468df1
--- /dev/null
+++ b/tests/auto/lancelot/scripts/arcs.qps
@@ -0,0 +1,68 @@
+# Version: 1
+# CheckVsReference: 5
+
+setRenderHint LineAntialiasing
+
+setPen red
+
+drawEllipse 0 0 600 400
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 0 10
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 20 30
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 60 45
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 115 60
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 0 0 600 400 180 90
+path_closeSubpath arcs
+
+path_moveTo arcs 590 200
+path_arcTo arcs 10 10 580 380 0 360
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 0 -10
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -20 -30
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -60 -45
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -115 -60
+path_closeSubpath arcs
+
+path_moveTo arcs 300 200
+path_arcTo arcs 20 20 560 360 -180 -90
+path_closeSubpath arcs
+
+setPen black 1 solidline
+setBrush #3f00ff00
+drawPath arcs
+
+# Then again with a matrix set...
+translate 200 400
+rotate 10
+scale 0.5 0.5
+setPen red
+setBrush nobrush
+drawEllipse 0 0 600 400
+
+setPen black 1 solidline
+setBrush #3f0000ff
+drawPath arcs \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/arcs2.qps b/tests/auto/lancelot/scripts/arcs2.qps
new file mode 100644
index 0000000000..411ff08014
--- /dev/null
+++ b/tests/auto/lancelot/scripts/arcs2.qps
@@ -0,0 +1,47 @@
+# Version: 1
+# CheckVsReference: 5
+
+drawArc 100 100 100 100 0 1440
+drawArc 100 100 100 100 1440 1440
+drawArc 100 100 100 100 2880 1440
+drawArc 100 100 100 100 4320 1440
+
+drawArc 100 200 100 100 0 -1440
+drawArc 100 200 100 100 -1440 -1440
+drawArc 100 200 100 100 -2880 -1440
+drawArc 100 200 100 100 -4320 -1440
+
+drawArc 200 100 100 100 720 1440
+drawArc 200 100 100 100 2160 1440
+drawArc 200 100 100 100 3600 1440
+drawArc 200 100 100 100 5040 1440
+
+drawArc 200 200 100 100 -720 -1440
+drawArc 200 200 100 100 -2160 -1440
+drawArc 200 200 100 100 -3600 -1440
+drawArc 200 200 100 100 -5040 -1440
+
+
+drawArc 300 100 100 100 3840 480
+drawArc 300 200 100 100 -3840 -480
+
+drawArc 300 100 100 100 1600 1340
+
+setPen black
+drawArc 400 100 200 200 0 5760
+setPen white
+drawArc 400 100 200 200 960 960
+drawArc 400 100 200 200 2880 960
+drawArc 400 100 200 200 4800 960
+
+setPen black
+drawArc 100 350 300 300 160 5760
+drawArc 100 350 300 300 320 5760
+drawArc 100 350 300 300 1920 5760
+drawArc 100 350 300 300 2080 5760
+drawArc 100 350 300 300 3680 5760
+drawArc 100 350 300 300 3840 5760
+drawArc 100 350 300 300 5440 5760
+drawArc 100 350 300 300 5600 5760
+setPen white
+drawArc 100 350 300 300 0 5760
diff --git a/tests/auto/lancelot/scripts/background.qps b/tests/auto/lancelot/scripts/background.qps
new file mode 100644
index 0000000000..000cfcdd91
--- /dev/null
+++ b/tests/auto/lancelot/scripts/background.qps
@@ -0,0 +1,136 @@
+# Version: 1
+# CheckVsReference: 5%
+
+translate 10 30
+setBackground 7f7fff
+setBackgroundMode Transparent
+setPen ff7f7f
+
+path_moveTo path 0 0
+path_lineTo path 25 0
+path_cubicTo path 50 0 25 25 25 50
+path_lineTo path 0 50
+
+bitmap_load bitmap.png bitmap
+
+begin_block drawing
+ save
+ drawRect 0 0 50 50
+
+ translate 60 0
+ drawEllipse 0 0 50 50
+
+ translate 60 0
+ drawPolygon [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawPath path
+
+ translate 60 0
+ drawPie 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawChord 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawLine 0 0 50 0
+ drawLine 0 0 50 50
+ drawLine 0 0 0 50
+
+ translate 60 0
+ drawPolyline [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawArc 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawText 0 10 "Jambi-Bambi"
+
+ translate 80 0
+ drawPixmap bitmap 0 0
+ restore
+
+ save
+ setRenderHint Antialiasing
+ translate 5 55
+ drawRect 0 0 50 50
+
+ translate 60 0
+ drawEllipse 0 0 50 50
+
+ translate 60 0
+ drawPolygon [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawPath path
+
+ translate 60 0
+ drawPie 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawChord 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawLine 0 0 50 0
+ drawLine 0 0 50 50
+ drawLine 0 0 0 50
+
+ translate 60 0
+ drawPolyline [0 0 50 0 25 50 25 25]
+
+ translate 60 0
+ drawArc 0 0 50 50 1440 2000
+
+ translate 60 0
+ drawText 0 10 "Jambi-Bambi"
+
+ translate 80 0
+ drawPixmap bitmap 0 0
+ restore
+end_block
+
+translate 0 160
+setBackgroundMode Transparent
+setPen ff7f7f 0 dotline flatcap beveljoin
+repeat_block drawing
+
+translate 0 160
+setBackgroundMode Opaque
+setPen ff7f7f 0 dotline flatcap beveljoin
+repeat_block drawing
+
+translate 0 160
+setBackgroundMode Transparent
+setPen ff7f7f 4 dashline flatcap beveljoin
+repeat_block drawing
+
+translate 0 160
+setBackgroundMode OpaqueMode
+setPen ff7f7f 4 dashline flatcap beveljoin
+repeat_block drawing
+
+resetMatrix
+
+translate 5 5
+
+setBrush nobrush
+setPen black
+setBackgroundMode transparent
+drawText 10 15 "TransparentMode with solid 0-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "TransparentMode with dotted 0-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "OpaqueMode with dotted 0-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "TransparentMode with dotted 4-width pen"
+drawRect 0 0 685 135
+
+translate 0 160
+drawText 10 15 "OpaqueMode with solid 4-width pen"
+drawRect 0 0 685 135
diff --git a/tests/auto/lancelot/scripts/background_brush.qps b/tests/auto/lancelot/scripts/background_brush.qps
new file mode 100644
index 0000000000..ca1f944964
--- /dev/null
+++ b/tests/auto/lancelot/scripts/background_brush.qps
@@ -0,0 +1,5 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setBrush #00ff00 crosspattern
+import "background.qps" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/beziers.qps b/tests/auto/lancelot/scripts/beziers.qps
new file mode 100644
index 0000000000..9b47cd05ac
--- /dev/null
+++ b/tests/auto/lancelot/scripts/beziers.qps
@@ -0,0 +1,147 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+setRenderHint LineAntialiasing
+
+translate 20 20
+path_moveTo fullSize 0 0
+path_cubicTo fullSize 200 100 -100 100 100 0
+
+path_moveTo fullSize 0 200
+path_cubicTo fullSize 0 100 100 100 100 200
+
+path_moveTo fullSize 0 250
+path_cubicTo fullSize 50 200 50 200 100 250
+drawPath fullSize
+
+translate 110 0
+scale 10 10
+path_moveTo medSize 0 0
+path_cubicTo medSize 20 10 -10 10 10 0
+
+path_moveTo medSize 0 20
+path_cubicTo medSize 0 10 10 10 10 20
+
+path_moveTo medSize 0 25
+path_cubicTo medSize 5 20 5 20 10 25
+drawPath medSize
+
+resetMatrix
+translate 240 20
+scale 100 100
+path_moveTo smallSize 0 0
+path_cubicTo smallSize 2 1 -1 1 1 0
+
+path_moveTo smallSize 0 2
+path_cubicTo smallSize 0 1 1 1 1 2
+
+path_moveTo smallSize 0 2.5
+path_cubicTo smallSize 0.5 2 0.5 2 1 2.5
+drawPath smallSize
+
+resetMatrix
+translate 20 300
+drawPath medSize
+
+resetMatrix
+translate 250 -100
+path_moveTo maxSize 0 500
+path_cubicTo maxSize 1000 0 -500 0 500 500
+drawPath maxSize
+
+setRenderHint Antialiasing off
+resetMatrix
+
+path_moveTo path1 0 0
+path_cubicTo path1 10 10 0 10 10 0
+
+path_moveTo path2 0 0
+path_cubicTo path2 15 15 -5 15 10 0
+
+path_moveTo path3 0 0
+path_cubicTo path3 20 20 -10 20 10 0
+
+path_moveTo path4 0 0
+path_cubicTo path4 0 5 10 10 0 15
+
+path_moveTo path5 0 10
+path_cubicTo path5 10 10 -10 20 0 0
+
+path_moveTo path6 0 0
+path_cubicTo path6 10 5 -10 10 0 15
+
+setPen black 2
+setBrush nobrush
+
+translate 10 500
+scale 3 3
+begin_block paths
+save
+drawPath path1
+translate 20 0
+drawPath path2
+translate 20 0
+drawPath path3
+translate 20 0
+drawPath path4
+translate 20 0
+drawPath path5
+translate 20 0
+drawPath path6
+restore
+end_block
+
+setPen nopen
+setBrush black
+
+translate 0 20
+repeat_block paths
+
+setRenderHint Antialiasing
+
+setPen black 2
+setBrush nobrush
+
+translate 120 -20
+repeat_block paths
+
+setPen nopen
+setBrush black
+
+translate 0 20
+repeat_block paths
+
+resetMatrix
+path_moveTo miterPath 20 0
+path_cubicTo miterPath 20 20 0 0 1 0
+path_lineTo miterPath -1 -0.2
+
+setBrush nobrush
+
+translate 50 660
+scale 5 5
+
+setPen black 4 solidline flatcap miterjoin
+drawPath miterPath
+setPen red 0
+drawPath miterPath
+
+path_moveTo miterPath2 21 0.2
+path_lineTo miterPath2 19 0
+path_cubicTo miterPath2 20 0 0 20 0 0
+
+translate 30 0
+setPen black 4 solidline flatcap miterjoin
+drawPath miterPath2
+setPen red 0
+drawPath miterPath2
+
+path_moveTo wonkyPath 0 0
+path_cubicTo wonkyPath 5 15 20 0 17 0
+
+translate 30 0
+setPen black 4 solidline flatcap miterjoin
+drawPath wonkyPath
+setPen red 0
+drawPath wonkyPath
diff --git a/tests/auto/lancelot/scripts/bitmaps.qps b/tests/auto/lancelot/scripts/bitmaps.qps
new file mode 100644
index 0000000000..a816b9d497
--- /dev/null
+++ b/tests/auto/lancelot/scripts/bitmaps.qps
@@ -0,0 +1,166 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+#setRenderHint SmoothPixmapTransform
+
+translate 10 50
+setBackground ff7f7f
+setPen 3f3f9f
+
+bitmap_load dome_mono.png the_pixmap
+
+save
+ # Draw with opaque pen/bg in transparent/opaque mode
+ setBackgroundMode Transparent
+ drawPixmap the_pixmap 0 0
+ setBackgroundMode Opaque
+ drawPixmap the_pixmap 110 0
+
+ translate 220 0
+
+ # Draw with alpha pen/bg in transparent/opaque mode
+ save
+ setBackground 7fff7f7f
+ setPen 7f3f3f9f
+ setBackgroundMode Transparent
+ drawPixmap the_pixmap 0 0
+ setBackgroundMode Opaque
+ drawPixmap the_pixmap 110 0
+ restore
+
+ translate 220 0
+
+ # Draw with rotated opaque pen/bg in transparent/opaque mode
+ setBackgroundMode Transparent
+ save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ drawPixmap the_pixmap 0 0
+ restore
+ setBackgroundMode Opaque
+ translate 110 0
+ save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ drawPixmap the_pixmap 0 0
+ restore
+restore
+
+translate 0 150
+
+save
+ setBackgroundMode Transparent
+ drawTiledPixmap the_pixmap 0 0 200 100
+ setBackgroundMode Opaque
+ drawTiledPixmap the_pixmap 210 0 200 100
+
+ translate 440 -10
+ save
+ rotate 10
+ drawTiledPixmap the_pixmap 0 0 200 100
+ restore
+restore
+
+translate 0 150
+save
+ setBackgroundMode Transparent
+ drawTiledPixmap the_pixmap 0 0 200 100 10 20
+ setBackgroundMode Opaque
+ drawTiledPixmap the_pixmap 210 0 200 100 10 20
+
+ translate 440 -10
+ save
+ rotate 10
+ drawTiledPixmap the_pixmap 0 0 200 100 10 20
+ restore
+restore
+
+
+pixmap_setMask the_pixmap mask_100.png
+drawPixmap the_pixmap 0 150
+setBackgroundMode Opaque
+drawPixmap the_pixmap 110 150
+
+translate 220 150
+save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ setBackgroundMode Transparent
+ drawPixmap the_pixmap 0 0
+restore
+
+translate 110 0
+save
+ translate 50 50
+ rotate 10
+ translate -50 -50
+ setBackgroundMode Opaque
+ drawPixmap the_pixmap 0 0
+restore
+
+resetMatrix
+translate 10 650
+bitmap_load dome_mono.png the_bitmap
+setBackgroundMode Transparent
+
+begin_block draw_subrected
+ drawPixmap the_bitmap 0 0 50 50 0 0 50 50
+ drawPixmap the_bitmap 50 0 50 50 50 0 50 50
+ drawPixmap the_bitmap 0 50 50 50 0 50 50 50
+ drawPixmap the_bitmap 50 50 50 50 50 50 50 50
+end_block
+
+translate 110 0
+setBackgroundMode Opaque
+repeat_block draw_subrected
+
+translate 110 0
+save
+ translate 20 -10
+ rotate 10
+ setBackgroundMode Transparent
+ repeat_block draw_subrected
+restore
+
+translate 110 0
+save
+ translate 20 -10
+ rotate 10
+ setBackgroundMode Opaque
+ repeat_block draw_subrected
+restore
+
+# Some helpful texts
+
+resetMatrix
+setPen black
+drawText 10 40 "Transparent"
+drawText 120 40 "Opaque"
+drawText 230 40 "Trans w/alpha"
+drawText 340 40 "Opaque w/alpha"
+drawText 450 40 "Trans w/xform"
+drawText 560 40 "Opaque w/xform"
+
+drawText 10 190 "Transparent tiled"
+drawText 220 190 "Opaque tiled"
+drawText 440 190 "Opaque w/xform"
+
+drawText 10 340 "Transparent tiled w/offset"
+drawText 220 340 "Opaque tiled w/offset"
+drawText 440 340 "Opaque w/xform w/offset"
+
+drawText 10 490 "Trans masked"
+drawText 120 490 "Opaque masked"
+drawText 230 490 "masked w/xform"
+drawText 340 490 "masked w/xform"
+
+drawText 10 640 "Subrected"
+drawText 110 640 "Subrected opaque"
+drawText 220 640 "subrect w/xform"
+drawText 330 640 "subrect w/xform opaque"
+
+
diff --git a/tests/auto/lancelot/scripts/borderimage.qps b/tests/auto/lancelot/scripts/borderimage.qps
new file mode 100644
index 0000000000..ebd4f4d249
--- /dev/null
+++ b/tests/auto/lancelot/scripts/borderimage.qps
@@ -0,0 +1,120 @@
+# Version: 1
+# CheckVsReference: 10%
+
+image_load borderimage.png borderimage
+translate -128 -128
+begin_block draw_border
+# top
+drawImage borderimage 0 0 16 16 0 0 16 16
+drawImage borderimage 16 0 36 16 16 0 32 16
+drawImage borderimage 52 0 16 16 48 0 16 16
+# sides
+drawImage borderimage 0 16 16 16 0 16 16 32
+drawImage borderimage 52 16 16 16 48 16 16 32
+#bottom
+drawImage borderimage 0 32 16 16 0 48 16 16
+drawImage borderimage 16 32 36 16 16 48 32 16
+drawImage borderimage 52 32 16 16 48 48 16 16
+end_block draw_border
+resetMatrix
+begin_block draw_column
+translate 1 1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+translate 0.1 64.1
+repeat_block draw_border
+end_block draw_column
+setRenderHint Antialiasing
+resetMatrix
+translate 72 0
+repeat_block draw_column
+resetMatrix
+scale 1.25 1.25
+translate 144 0
+repeat_block draw_border
+resetMatrix
+scale 1.25 1.25
+translate 246 0
+rotate 30
+repeat_block draw_border
+setRenderHint SmoothPixmapTransform
+resetMatrix
+scale 1.25 1.25
+translate 144 120
+repeat_block draw_border
+resetMatrix
+scale 1.25 1.25
+translate 246 120
+rotate 30
+repeat_block draw_border
+resetMatrix
+translate 215 260
+scale 3.55 3.55
+rotate 30
+repeat_block draw_border
+resetMatrix
+setRenderHint SmoothPixmapTransform off
+setRenderHint Antialiasing off
+translate 480 627
+rotate 180
+repeat_block draw_column
+resetMatrix
+setRenderHint Antialiasing
+translate 552 627
+rotate 180
+repeat_block draw_column
+resetMatrix
+setRenderHint Antialiasing off
+translate 200.1 520.1
+begin_block one_pixel_border
+drawImage borderimage 0 0 16 16 0 0 16 16
+drawImage borderimage 16 0 64 16 16 0 1 1
+drawImage borderimage 80 0 16 16 48 0 16 16
+drawImage borderimage 0 16 16 64 16 0 1 1
+drawImage borderimage 80 16 16 64 16 0 1 1
+drawImage borderimage 0 80 16 16 0 48 16 16
+drawImage borderimage 16 80 64 16 16 0 1 1
+drawImage borderimage 80 80 16 16 48 48 16 16
+end_block one_pixel_border
+resetMatrix
+translate 205.1 626.1
+scale 0.4 0.4
+repeat_block one_pixel_border
+resetMatrix
+translate 255.1 624.1
+scale 0.4 0.4
+rotate 10
+repeat_block one_pixel_border
+resetMatrix
+setPen red
+drawRect 0 0 70 680
+drawText 10 670 "aa off"
+drawRect 72 0 70 680
+drawText 80 670 "aa on"
+drawRect 409 0 70 680
+drawText 419 650 "rot 180"
+drawText 419 670 "aa off"
+drawRect 481 0 70 680
+drawText 491 650 "rot 180"
+drawText 491 670 "aa on"
+drawRect 164 0 224 124
+drawText 174 114 "smoothpixmaptransform off"
+drawRect 164 128 224 134
+drawText 174 252 "smoothpixmaptransform on"
+drawRect 200 520 97 188
+drawText 210 698 "1x1 edges" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/brush_pens.qps b/tests/auto/lancelot/scripts/brush_pens.qps
new file mode 100644
index 0000000000..b9a2bc0ada
--- /dev/null
+++ b/tests/auto/lancelot/scripts/brush_pens.qps
@@ -0,0 +1,104 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect p 0 0 75 75
+path_addEllipse p 25 25 75 75
+
+translate 10 10
+
+begin_block setup_gradient
+ gradient_clearStops
+ gradient_appendStop 0 red
+ gradient_appendStop 0.1 blue
+ gradient_appendStop 0.2 yellow
+ gradient_appendStop 0.3 cyan
+ gradient_appendStop 0.4 magenta
+ gradient_appendStop 0.5 green
+ gradient_appendStop 0.6 black
+ gradient_appendStop 0.7 indianred
+ gradient_appendStop 0.8 white
+ gradient_appendStop 0.9 orange
+ gradient_appendStop 1 blue
+ gradient_setLinear 0 0 100 100
+end_block
+
+setPen brush 0
+setBrush nobrush
+
+begin_block drawing
+ save
+ drawLine 0 0 100 100
+
+ translate 0 100
+ drawPath p
+
+ translate 0 110
+ drawRect 0 0 100 100
+
+ translate 0 110
+ drawPolyline [0 0 100 0 50 50]
+
+ drawPoint 40 40
+ drawPoint 41 40
+ drawPoint 42 40
+ drawPoint 43 40
+ drawPoint 44 40
+ drawPoint 45 40
+ drawPoint 46 40
+ drawPoint 47 40
+ drawPoint 48 40
+ drawPoint 49 40
+ drawPoint 50 40
+
+ restore
+end_block
+
+save
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+
+ setBrush dome_rgb32.png
+ setPen brush 0
+ setBrush nobrush
+
+ translate 110 0
+ repeat_block drawing
+
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+restore
+
+translate 0 0
+
+save
+ repeat_block setup_gradient
+ setPen brush 5
+ setBrush nobrush
+ translate 0 350
+ repeat_block drawing
+
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+
+ setBrush dome_rgb32.png
+ setPen brush 5
+ setBrush nobrush
+
+ translate 110 0
+ repeat_block drawing
+
+ translate 110 0
+ save
+ setRenderHint Antialiasing
+ repeat_block drawing
+ restore
+restore \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/brushes.qps b/tests/auto/lancelot/scripts/brushes.qps
new file mode 100644
index 0000000000..82cbff48b9
--- /dev/null
+++ b/tests/auto/lancelot/scripts/brushes.qps
@@ -0,0 +1,79 @@
+# Version: 1
+# CheckVsReference: 5%
+
+# Fill the background
+drawRect 0 0 width height
+
+setRenderHint Antialiasing
+setRenderHint SmoothPixmapTransform
+
+translate 10 10
+# Draw all the pattern types as 40x40 rects using green, transparent background
+begin_block drawrects
+setBrush green Dense1Pattern
+drawRect 0 0 40 40
+setBrush green Dense2Pattern
+drawRect 40 0 40 40
+setBrush green Dense3Pattern
+drawRect 80 0 40 40
+setBrush green Dense4Pattern
+drawRect 120 0 40 40
+setBrush green Dense5Pattern
+drawRect 160 0 40 40
+setBrush green Dense6Pattern
+drawRect 200 0 40 40
+setBrush green Dense7Pattern
+drawRect 240 0 40 40
+setBrush green HorPattern
+drawRect 280 0 40 40
+setBrush green VerPattern
+drawRect 320 0 40 40
+setBrush green CrossPattern
+drawRect 360 0 40 40
+setBrush green BDiagPattern
+drawRect 400 0 40 40
+setBrush green FDiagPattern
+drawRect 440 0 40 40
+setBrush green DiagCrossPattern
+drawRect 480 0 40 40
+setBrush green SolidPattern
+drawRect 520 0 40 40
+setBrush green NoBrush
+drawRect 560 0 40 40
+gradient_setLinear 0 0 0 40
+drawRect 600 0 40 40
+setBrush face.png
+drawRect 640 0 80 40
+end_block
+
+# Switch to opaque mode
+setBackground #7fff7f
+setBackgroundMode OpaqueMode
+translate 0 50
+
+# Draw all the pattern types as 40x40 rects using green, opaque background
+repeat_block drawrects
+
+translate 50 50
+rotate 10
+
+
+setBackgroundMode TransparentMode
+repeat_block drawrects
+setBackgroundMode OpaqueMode
+translate 0 40
+repeat_block drawrects
+
+
+setBrush dot.png
+setPen nopen
+resetMatrix
+drawRect 0 200 50 50
+drawRect 50 200 50 50
+
+setPen red
+setBrushOrigin 0 250
+drawRect 0 250 50 50
+setBrushOrigin 50 250
+drawRect 50 250 50 50
+
diff --git a/tests/auto/lancelot/scripts/clippaths.qps b/tests/auto/lancelot/scripts/clippaths.qps
new file mode 100644
index 0000000000..fba89784df
--- /dev/null
+++ b/tests/auto/lancelot/scripts/clippaths.qps
@@ -0,0 +1,60 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect hor 0 0 50 10
+path_addRect ver 0 0 10 50
+
+translate 10 10
+setPen NoPen
+
+begin_block clipping
+save
+
+ setBrush 0x7f7fff
+ save
+ setClipPath hor
+ drawRect 0 0 100 100
+
+ setClipPath ver IntersectClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipPath hor
+ drawRect 0 0 100 100
+
+ setClipPath ver ReplaceClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipPath hor
+ drawRect 0 0 100 100
+
+ setClipPath ver UniteClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+restore
+end_block
+
+translate 300 0
+setRenderHint Antialiasing
+repeat_block clipping
+
+translate -300 100
+setRenderHint Antialiasing false
+scale 1.2 1.2
+repeat_block clipping
+
+translate 300 0
+setRenderHint Antialiasing
+setRenderHint SmoothPixmapTransform
+repeat_block clipping
+
+
diff --git a/tests/auto/lancelot/scripts/clipping.qps b/tests/auto/lancelot/scripts/clipping.qps
new file mode 100644
index 0000000000..3694ff2ba7
--- /dev/null
+++ b/tests/auto/lancelot/scripts/clipping.qps
@@ -0,0 +1,182 @@
+# Version: 1
+# CheckVsReference: 5%
+
+region_addRect clip 50 0 90 190
+region_addRect clip 0 50 180 90
+
+region_addRect clip2 30 30 60 60
+
+region_addRect clip3 10 10 60 60
+
+path_cubicTo path 90 0 50 50 90 90
+path_cubicTo path 0 90 50 50 0 0
+
+path_addRect path2 0 0 90 90
+path_moveTo path2 90 45
+path_arcTo path2 0 0 90 90 0 -360
+
+path_addRect emptypath 0 0 0 0
+region_addRect emptyregion 0 0 0 0
+
+# Normal clip rect
+setClipRect 0 0 50 150
+begin_block repaint
+save
+setBrush red
+setPen nopen
+resetMatrix
+region_getClipRegion tmpclip
+path_getClipPath tmpclippath
+drawRect 0 0 width height
+setBrush #3f0000ff
+setClipRegion tmpclip
+drawRect 0 0 width height
+setClipPath tmpclippath
+setBrush #3f00ff00
+drawRect 0 0 width height
+restore
+end_block
+
+# Rotated clip rect
+translate 100 0
+rotate 10
+setClipRect 0 0 50 150
+repeat_block repaint
+
+# simple clip region
+resetMatrix
+translate 0 200
+setClipRegion clip
+repeat_block repaint
+
+# simle rotated clip region
+translate 250 -10
+rotate 10
+setClipRegion clip
+repeat_block repaint
+
+# verify that clip is not xformed with painter
+resetMatrix
+translate 200 0
+setClipRegion clip
+rotate 30
+setBrush red
+setPen nopen
+drawRect 0 0 width height
+
+resetMatrix
+translate 0 400
+save
+setClipRegion clip
+setClipRegion clip2 IntersectClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip
+setClipRegion clip2 IntersectClip
+restore
+
+translate 100 0
+save
+setClipRegion clip3
+setClipRegion clip2 UniteClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip3
+setClipRegion clip2 UniteClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+repeat_block repaint
+translate 50 100
+rotate 45
+setClipPath path
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipPath path2 IntersectClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipPath path
+setClipPath path2 IntersectClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipPath path2 UniteClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipPath path
+setClipPath path2 UniteClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipRegion clip3 IntersectClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip3
+setClipPath path IntersectClip
+repeat_block repaint
+restore
+
+translate 100 0
+save
+setClipPath path
+setClipRegion clip3 UniteClip
+repeat_block repaint
+translate 0 100
+rotate 10
+setClipRegion clip3
+setClipPath path UniteClip
+repeat_block repaint
+restore
+
+# test that an empty region is not drawn.
+resetMatrix
+setClipRegion emptyregion
+setBrush #3f00ff00
+drawRect 0 0 300 300
+drawText 50 50 "Text should be clipped away by region"
+setClipping false
+
+setClipPath emptypath
+setBrush #3fffff00
+drawRect 50 50 300 300
+drawText 70 80 "Text should be clipped away by path"
+
+# Test that we can extract a clipregion when a matrix is set too
+resetMatrix
+translate 500 10
+scale 2 1
+setBrush blue
+setClipping false
+rotate 5
+drawRect 0 0 100 100
+setClipRect 0 0 100 100
+resetMatrix
+rotate 10
+region_getClipRegion xclip
+setClipRegion xclip
+resetMatrix
+setBrush #7f00ff00
+drawRect 0 0 width height
+
+# the below used to assert in debug mode
+setClipRect 10 10 20 20
+setClipping false
+setClipping true \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/clipping_state.qps b/tests/auto/lancelot/scripts/clipping_state.qps
new file mode 100644
index 0000000000..a29d3738c8
--- /dev/null
+++ b/tests/auto/lancelot/scripts/clipping_state.qps
@@ -0,0 +1,47 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect path1 10 10 50 50
+path_addRect path2 30 30 50 50
+# enable/disable a clip path
+setPen nopen
+setBrush red
+setClipPath path1
+setClipPath path2 UniteClip
+drawRect 0 0 100 100
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipping true
+setBrush #6300ff00
+drawRect 0 0 100 100
+# enable/disable noclip
+translate 150 0
+setClipPath path1 NoClip
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipping true
+setBrush #6300ff00
+drawRect 25 25 50 50
+# enable/disable full clipping
+translate 150 0
+path_addRect path3 0 0 10 10
+path_addRect path4 20 20 10 10
+setClipPath path3
+setClipPath path4 IntersectClip
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipping true
+setBrush #6300ff00
+drawRect 25 25 50 50
+# disable clipping followed by setClipRect
+translate 150 0
+setClipRect 0 0 50 50 ReplaceClip
+setClipping false
+setBrush #630000ff
+drawRect 0 0 100 100
+setClipRect 25 25 75 75 IntersectClip
+setBrush #6300ff00
+drawRect 25 25 50 50 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/cliprects.qps b/tests/auto/lancelot/scripts/cliprects.qps
new file mode 100644
index 0000000000..0d28b035b4
--- /dev/null
+++ b/tests/auto/lancelot/scripts/cliprects.qps
@@ -0,0 +1,59 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+
+translate 10 10
+setPen NoPen
+
+begin_block clipping
+save
+
+ setBrush 0x7f7fff
+ save
+ setClipRect 0 0 50 10
+ drawRect 0 0 100 100
+
+ setClipRect 0 0 10 50 IntersectClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipRect 0 0 50 10
+ drawRect 0 0 100 100
+
+ setClipRect 0 0 10 50 ReplaceClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+ translate 100 0
+ save
+ setClipRect 0 0 50 10
+ drawRect 0 0 100 100
+
+ setClipRect 0 0 10 50 UniteClip
+ setBrush black CrossPattern
+ drawRect 0 0 100 100
+ restore
+
+restore
+end_block
+
+translate 300 0
+setRenderHint Antialiasing
+repeat_block clipping
+
+translate -300 100
+setRenderHint Antialiasing false
+scale 1.2 1.2
+repeat_block clipping
+
+translate 300 0
+setRenderHint Antialiasing
+setRenderHint SmoothPixmapTransform
+repeat_block clipping
+
+
diff --git a/tests/auto/lancelot/scripts/conical_gradients.qps b/tests/auto/lancelot/scripts/conical_gradients.qps
new file mode 100644
index 0000000000..2e897b1813
--- /dev/null
+++ b/tests/auto/lancelot/scripts/conical_gradients.qps
@@ -0,0 +1,85 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_addRect path 300 0 80 80
+path_addEllipse path 340 40 60 60
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setConical 40 40 50
+drawRect 0 0 100 100
+
+gradient_setConical 140 40 230
+drawEllipse 100 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setConical 240 40 50
+drawPolygon [200 0 290 0 250 99]
+
+gradient_setConical 340 40 230
+drawPath path
+
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+
+drawText 410 50 "No XForm"
+drawText 410 200 "scale 1x2"
+drawText 410 300 "brush transform"
+drawText 10 450 "50 deg"
+drawText 110 450 "230 deg"
+drawText 210 450 "50 deg w/alpha "
+drawText 310 450 "230 deg w/alpha"
+
+setPen 3f000000
+setBrush nobrush
+
+begin_block ellipse_draw
+ setClipRect 0 0 100 100
+ drawEllipse 35 35 11 11
+ save
+ translate 40 40
+ rotate -50
+ drawLine -100 0 100 0
+ restore
+ translate 100 0
+end_block
+
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+
+resetMatrix
+translate 0 100
+scale 1 2
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/conical_gradients_perspectives.qps b/tests/auto/lancelot/scripts/conical_gradients_perspectives.qps
new file mode 100644
index 0000000000..a9c14f1ce7
--- /dev/null
+++ b/tests/auto/lancelot/scripts/conical_gradients_perspectives.qps
@@ -0,0 +1,64 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+translate 10 10
+# standard draw
+begin_block gradient
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 0.9 cyan
+gradient_appendStop 1 red
+
+gradient_setSpread PadSpread
+gradient_setConical 140 140 100
+drawRect 0 0 300 300
+end_block gradient
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block gradient
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block gradient
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block gradient
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/dashes.qps b/tests/auto/lancelot/scripts/dashes.qps
new file mode 100644
index 0000000000..649f56cf66
--- /dev/null
+++ b/tests/auto/lancelot/scripts/dashes.qps
@@ -0,0 +1,268 @@
+# Version: 1
+# CheckVsReference: 5%
+
+translate 20 20
+
+begin_block draw
+save
+ save
+ setPen black 1 SolidLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 SolidLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 SolidLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 SolidLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 SolidLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+
+ translate 100 0
+ save
+ setPen black 1 DotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 DotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+ save
+ setPen black 1 DashLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DashLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 DashLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+
+ save
+ setPen black 1 DashDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DashDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 6 DashDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 6 DashDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+
+ save
+ setPen black 1 DashDotDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 DashDotDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 DashDotDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 DashDotDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 4 DashDotDotLine FlatCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 DashDotDotLine SquareCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 DashDotDotLine RoundCap BevelJoin
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+ translate 100 0
+
+ save
+ setPen black 1 SolidLine FlatCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine SquareCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 1 SolidLine RoundCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 2 SolidLine FlatCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine SquareCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 2 SolidLine RoundCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+
+ setPen black 4 SolidLine FlatCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 SolidLine SquareCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ setPen black 4 SolidLine RoundCap BevelJoin
+ pen_setDashPattern [1 4 9 4 27 4]
+ drawPolyline [0 0 80 0 80 30 40 20 0 30]
+ translate 0 40
+ restore
+
+restore
+end_block
+
+translate 0 400
+setRenderHint Antialiasing
+repeat_block draw
+
+translate 0 -20
+drawText 30 0 "Solid"
+
+translate 100 0
+drawText 20 0 "DotLine"
+
+translate 100 0
+drawText 10 0 "DashLine"
+
+translate 100 0
+drawText 0 0 "DashDotLine"
+
+translate 100 0
+drawText 0 0 "DashDotDotLine"
+
+translate 100 0
+drawText 0 0 "CustomDashLine"
+
+resetMatrix
+
+translate 620 40
+
+begin_block width_and_caps_texts
+ drawText 0 0 "Width=1, FlatCap"
+ translate 0 40
+ drawText 0 0 "Width=1, SquareCap"
+ translate 0 40
+ drawText 0 0 "Width=1, RoundCap"
+ translate 0 40
+ drawText 0 0 "Width=2, FlatCap"
+ translate 0 40
+ drawText 0 0 "Width=2, SquareCap"
+ translate 0 40
+ drawText 0 0 "Width=2, RoundCap"
+ translate 0 40
+ drawText 0 0 "Width=6, FlatCap"
+ translate 0 40
+ drawText 0 0 "Width=6, SqareCap"
+ translate 0 40
+ drawText 0 0 "Width=6, RoundCap"
+end_block
+
+translate 0 80
+repeat_block width_and_caps_texts \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/degeneratebeziers.qps b/tests/auto/lancelot/scripts/degeneratebeziers.qps
new file mode 100644
index 0000000000..fb223d5b1f
--- /dev/null
+++ b/tests/auto/lancelot/scripts/degeneratebeziers.qps
@@ -0,0 +1,10 @@
+# Version: 1
+# CheckVsReference: 5%
+
+path_moveTo degenerate 3427.0918499999997948 3872.1318999999998596
+path_cubicTo degenerate 3427.0918499999997948 3872.1318999999994048 4729.4590867905308187 5176.8613451144155988 5389.9325499999995372 5837.8072499999998399
+
+scale 0.05 0.05
+translate -2500 -3000
+setPen black 800
+drawPath degenerate \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/deviceclipping.qps b/tests/auto/lancelot/scripts/deviceclipping.qps
new file mode 100644
index 0000000000..cedfc1e363
--- /dev/null
+++ b/tests/auto/lancelot/scripts/deviceclipping.qps
@@ -0,0 +1,48 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setBrush 0xff7f7f
+setPen 0x7f0000
+
+path_moveTo path -1000000 10000
+path_cubicTo path 100 100 100 150 150 400
+path_closeSubpath path
+
+begin_block drawing
+
+ drawPath ellipse
+
+ drawLine -1000000 200 200 200
+ drawLine 200 -1000000 200 200
+ drawLine 200 200 1000000 200
+ drawLine 200 200 200 1000000
+ drawLine -1000000 -1000000 200 200
+
+ drawPolygon [-1000000 100 100 -1000000 100 100]
+ drawRect 300 -500000 1000000 1000000
+
+ drawPath path
+
+end_block
+
+save
+translate 20 20
+setBrush #0x7f7f7fff
+setPen #0x7f00007f
+repeat_block drawing
+
+translate 20 20
+setRenderHint Antialiasing
+setBrush #0x7f7fff7f
+setPen #0x7f007f00
+repeat_block drawing
+restore
+
+setPen 0x00007f 2
+setRenderHint Antialiasing
+
+drawLine 0 -200 200 200
+
+setPen 0x007f00 10
+
+drawLine 0 -200 200 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/drawpoints.qps b/tests/auto/lancelot/scripts/drawpoints.qps
new file mode 100644
index 0000000000..c02cd85737
--- /dev/null
+++ b/tests/auto/lancelot/scripts/drawpoints.qps
@@ -0,0 +1,101 @@
+# Version: 1
+# CheckVsReference: 5%
+
+#setRenderHint Antialiasing
+
+setPen red 0 solidline
+begin_block points
+drawPoint 00 00
+drawPoint 10 00
+drawPoint 20 00
+drawPoint 30 00
+drawPoint 40 00
+drawPoint 50 00
+drawPoint 00 10
+drawPoint 10 10
+drawPoint 20 10
+drawPoint 30 10
+drawPoint 40 10
+drawPoint 50 10
+drawPoint 00 20
+drawPoint 10 20
+drawPoint 20 20
+drawPoint 30 20
+drawPoint 40 20
+drawPoint 50 20
+drawPoint 00 30
+drawPoint 10 30
+drawPoint 20 30
+drawPoint 30 30
+drawPoint 40 30
+drawPoint 50 30
+drawPoint 00 40
+drawPoint 10 40
+drawPoint 20 40
+drawPoint 30 40
+drawPoint 40 40
+drawPoint 50 40
+drawPoint 00 50
+drawPoint 10 50
+drawPoint 20 50
+drawPoint 30 50
+drawPoint 40 50
+drawPoint 50 50
+end_block points
+
+translate 100 0
+setPen blue 1 solidline
+repeat_block points
+
+translate 100 0
+setPen green 5 solidline roundcap
+repeat_block points
+
+resetMatrix
+
+translate 0 100
+scale 3 3
+setPen red 0 solidline roundcap
+repeat_block points
+
+translate 60 0
+setPen blue 1 solidline roundcap
+repeat_block points
+
+translate 60 0
+setPen green 5 solidline roundcap
+repeat_block points
+
+resetMatrix
+
+translate 0 300
+scale 3 3
+setPen red 0 solidline flatcap
+repeat_block points
+
+translate 60 0
+setPen blue 1 solidline flatcap
+repeat_block points
+
+translate 60 0
+setPen green 5 solidline flatcap
+repeat_block points
+
+resetMatrix
+translate 10 500
+setPen black 1 solidline flatcap
+drawPoint 0 0
+setPen black 2 solidline flatcap
+drawPoint 3 0
+setPen black 3 solidline flatcap
+drawPoint 8 0
+setPen black 4 solidline flatcap
+drawPoint 15 0
+setPen black 5 solidline flatcap
+drawPoint 24 0
+setPen black 6 solidline flatcap
+drawPoint 35 0
+setPen black 7 solidline flatcap
+drawPoint 48 0
+setPen black 8 solidline flatcap
+drawPoint 63 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/ellipses.qps b/tests/auto/lancelot/scripts/ellipses.qps
new file mode 100644
index 0000000000..e2cffd7f27
--- /dev/null
+++ b/tests/auto/lancelot/scripts/ellipses.qps
@@ -0,0 +1,86 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+surface_begin 0 0 600 600
+translate 0 50
+
+setPen nopen
+setBrush 0x7f000000
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setRadial 20 20 220 200
+
+drawEllipse 10 10 80 80
+drawEllipse 50 50 120 90
+
+translate 100 0
+brushTranslate 40 20
+brushScale 0.25 0.25
+
+setPen black
+
+drawEllipse 10 10 80 80
+setOpacity 0.5
+setCompositionMode SourceIn
+drawEllipse 50 50 120 90
+setOpacity 1.0
+setRenderHint Antialiasing
+setCompositionMode Xor
+brushTranslate 70 0
+translate 100 0
+drawEllipse 10 10 80 80
+
+setPen nopen
+drawEllipse 50 50 120 90
+
+setOpacity 0.7
+setBrush red
+translate 100 0
+setCompositionMode SourceOver
+
+drawEllipse 10 10 80 80
+
+setOpacity 0.6
+setPen black 5.0
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 20 20 120 100
+drawEllipse 50 50 120 90
+
+
+translate 100 0
+
+setOpacity 1.0
+drawEllipse 10 10 80 80
+
+setCompositionMode SourceIn
+setOpacity 0.7
+setPen black 3.0
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 50 50 80 90
+drawEllipse 50 50 120 90
+
+surface_end
+
+drawText 200 220 "Testing Ellipse drawing with varios combinations"
+drawText 200 240 "of features such as brushes, pens and composition modes" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/filltest.qps b/tests/auto/lancelot/scripts/filltest.qps
new file mode 100644
index 0000000000..2eeba2ecf6
--- /dev/null
+++ b/tests/auto/lancelot/scripts/filltest.qps
@@ -0,0 +1,413 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setPen nopen
+setBrush red
+translate 0 4
+begin_block polys
+drawPolygon [0 0 2 -2 4 0]
+drawPolygon [0 2 2 4 4 2]
+end_block polys
+translate 6 .5
+repeat_block polys
+translate 6.5 0
+repeat_block polys
+translate 6 .5
+repeat_block polys
+
+resetMatrix
+
+translate 0 12
+setPen black
+drawPolygon [0 0 5 0 5 5 0 5]
+
+translate 10 0
+setPen nopen
+drawPolygon [0 0 5 0 5 5 0 5]
+
+translate 10 0
+drawPolygon [0 0 5 0 5 5 0 5]
+
+setBrush black
+path_addRect stroke -.5 -.5 6 6
+path_addRect stroke .5 .5 4 4
+drawPath stroke
+
+resetMatrix
+
+translate 0 65
+
+setPen red
+drawText 0 0 "path"
+drawText 40 0 "rect"
+drawText 80 0 "img"
+drawText 120 0 "pix"
+drawText 160 0 "brush"
+setPen nopen
+
+translate 0 5
+
+image_load border.png img
+pixmap_load border.png pix
+
+path_addRect rect 0 0 10 10
+begin_block rects
+drawPath rect
+drawRect 40 0 10 10
+drawImage img 80 0
+drawPixmap pix 120 0
+setBrush border.png
+drawRect 160 0 10 10
+setBrush black
+end_block rects
+
+setPen red
+drawText 180 10 "0.0"
+setPen nopen
+
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.1"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.2"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.3"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.4"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.5"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.6"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.7"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.8"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "0.9"
+setPen nopen
+translate 0.1 20
+repeat_block rects
+setPen red
+drawText 180 10 "1.0"
+setPen nopen
+
+resetMatrix
+
+translate 0 400
+
+setPen red
+drawText 0 10 "path"
+drawText 0 30 "rect"
+drawText 0 50 "img"
+drawText 0 70 "pix"
+drawText 0 90 "brush"
+drawText 0 110 "stroke"
+drawText 0 130 "scale"
+drawText 0 170 "rotate"
+setPen nopen
+
+translate 50 0
+
+begin_block rects
+drawPath rect
+drawRect 0 20 10 10
+drawImage img 0 40
+drawPixmap pix 0 60
+save
+setBrush border.png
+drawRect 0 80 10 10
+translate 0 100
+setBrush red
+setPen black
+drawRect 0 0 10 10
+setBrush border.png
+setPen nopen
+translate 0 20
+scale 2 2
+drawRect 0 0 10 10
+translate 10 20
+rotate 90
+drawRect 0 0 10 10
+restore
+end_block rects
+
+setPen red
+drawText -5 -10 "0.0"
+setPen nopen
+
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.1"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.2"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.3"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.4"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.5"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.6"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.7"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.8"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "0.9"
+setPen nopen
+translate 40 0.1
+repeat_block rects
+setPen red
+drawText -5 -10 "1.0"
+setPen nopen
+
+resetMatrix
+
+translate 0 620
+
+setPen red
+drawText 0 10 "path"
+setPen nopen
+
+path_addRect rect2 -5 -5 10 10
+
+translate 55 5
+drawPath rect2
+
+translate 20 0
+rotate 10
+drawPath rect2
+rotate -10
+translate 20 0
+rotate 20
+drawPath rect2
+rotate -20
+translate 20 0
+rotate 30
+drawPath rect2
+rotate -30
+translate 20 0
+rotate 40
+drawPath rect2
+rotate -40
+translate 20 0
+rotate 50
+drawPath rect2
+rotate -50
+translate 20 0
+rotate 60
+drawPath rect2
+rotate -60
+translate 20 0
+rotate 70
+drawPath rect2
+rotate -70
+translate 20 0
+rotate 80
+drawPath rect2
+rotate -80
+translate 20 0
+rotate 90
+drawPath rect2
+rotate -90
+
+resetMatrix
+
+translate 0 600
+
+setPen red
+drawText 0 10 "rect"
+setPen nopen
+
+translate 55 5
+drawRect -5 -5 10 10
+
+translate 20 0
+rotate 10
+drawRect -5 -5 10 10
+rotate -10
+translate 20 0
+rotate 20
+drawRect -5 -5 10 10
+rotate -20
+translate 20 0
+rotate 30
+drawRect -5 -5 10 10
+rotate -30
+translate 20 0
+rotate 40
+drawRect -5 -5 10 10
+rotate -40
+translate 20 0
+rotate 50
+drawRect -5 -5 10 10
+rotate -50
+translate 20 0
+rotate 60
+drawRect -5 -5 10 10
+rotate -60
+translate 20 0
+rotate 70
+drawRect -5 -5 10 10
+rotate -70
+translate 20 0
+rotate 80
+drawRect -5 -5 10 10
+rotate -80
+translate 20 0
+rotate 90
+drawRect -5 -5 10 10
+rotate -90
+
+resetMatrix
+path_addRect vertical 0.1 0.1 0.2 10
+
+translate 0 320
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+translate 2.2 0
+drawPath vertical
+
+resetMatrix
+path_addRect horizontal 0.1 0.1 10 0.2
+
+translate 0 340
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+translate 0 2.2
+drawPath horizontal
+
+setOpacity 0.8
+resetMatrix
+
+translate 0.1 24.7
+translate 400 0
+#rotate 88.8
+rotate 89.9
+setBrush red
+drawPolygon [0 0 300 0 0 173]
+setBrush green
+drawPolygon [0 173 300 0 300 173]
+
+resetMatrix
+
+translate 410 24
+path_lineTo left 0 273
+path_lineTo left 300 273
+path_cubicTo left 50 273 250 0 0 0
+
+path_cubicTo right 250 0 50 273 300 273
+path_lineTo right 300 0
+
+translate 310 0
+rotate 90
+setBrush red
+drawPath left
+setBrush green
+drawPath right
+
+resetMatrix
+translate 0.1 680.1
+setPen red
+setOpacity 1
+drawText 115 -20 "0.1"
+drawText 0 0 "pixmap w/ opacity"
+setOpacity 0.6
+drawPixmap pix 120 -10
+translate 0 20
+setOpacity 1
+drawText 0 0 "image w/ opacity"
+setOpacity 0.6
+drawImage img 120 -10
+
+resetMatrix
+path_lineTo fillpath 0 50
+path_lineTo fillpath 50 50
+path_moveTo fillpath 70 50
+path_lineTo fillpath 70 100
+path_lineTo fillpath 40 100
+translate 500 400
+drawPath fillpath
+
+resetMatrix
+path_moveTo vectorarne 50 10
+path_lineTo vectorarne 50 50
+path_lineTo vectorarne 100 50
+path_addEllipse vectorarne 350 20 230 230
+path_moveTo vectorarne 500 500
+path_cubicTo vectorarne 20 20 250 30 50 150
+translate 500 550
+scale 0.4 0.4
+setRenderHint antialiasing
+drawPath vectorarne
+
+resetMatrix
+translate 200 730
+setRenderHint antialiasing off
+setOpacity 1
+setPen red
+drawText 0 0 "outline/fill consistency"
+setPen red
+setBrush green
+translate 80 -30
+drawPolygon [13.6965 -99.1837 -71.4767 13.823 32.4596 -33.1847] \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/gradients.qps b/tests/auto/lancelot/scripts/gradients.qps
new file mode 100644
index 0000000000..eb3cda9cad
--- /dev/null
+++ b/tests/auto/lancelot/scripts/gradients.qps
@@ -0,0 +1,44 @@
+# Version: 1
+# CheckVsReference: 5%
+
+drawText 75 20 "Linear"
+drawText 176 20 "Radial"
+drawText 277 20 "Conical"
+translate 0 30
+drawText 0 50 "AA off"
+drawText 0 151 "AA on"
+
+setPen nopen
+
+gradient_clearStops
+gradient_appendStop 0 0x00000000
+gradient_appendStop 0.001 red
+gradient_appendStop 0.2 blue
+gradient_appendStop 0.4 yellow
+gradient_appendStop 0.6 cyan
+gradient_appendStop 0.8 green
+gradient_appendStop 0.999 red
+gradient_appendStop 1 0x00000000
+
+gradient_setSpread PadSpread
+gradient_setCoordinateMode ObjectBoundingMode
+
+begin_block row
+save
+gradient_setLinear 0.1 0.0 0.9 0.0
+drawRect 50 0 100 100
+
+gradient_setRadial 0.5 0.5 0.5 0.5 0.5
+translate 101 0
+drawRect 50 0 100 100
+
+gradient_setConical 0.5 0.5 45
+translate 101 0
+drawRect 50 0 100 100
+restore
+end_block row
+
+setRenderHint Antialiasing
+
+translate 0 101
+repeat_block row \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/image_formats.qps b/tests/auto/lancelot/scripts/image_formats.qps
new file mode 100644
index 0000000000..d817d04bf8
--- /dev/null
+++ b/tests/auto/lancelot/scripts/image_formats.qps
@@ -0,0 +1,81 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+image_load dome_argb32.png the_pixmap
+image_convertToFormat the_pixmap the_pixmap ARGB32_Premultiplied
+
+begin_block draw_stuff
+ save
+ image_convertToFormat the_pixmap converted ARGB32_Premultiplied
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted ARGB32
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted RGB32
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted Indexed8
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted MonoLSB
+ drawImage converted 0 0
+ translate 0 110
+
+ image_convertToFormat the_pixmap converted Mono
+ drawImage converted 0 0
+ translate 0 110
+ restore
+end_block
+
+
+image_load dome_argb32.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+
+image_load dome_rgb32.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+image_load dome_indexed.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+
+image_load dome_mono.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+image_load dome_mono_palette.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+image_load dome_indexed_mask.png the_pixmap
+translate 110 0
+repeat_block draw_stuff
+
+
+# helpful texts
+resetMatrix
+setPen black
+
+drawText 10 670 "ARGB32_PM"
+drawText 120 670 "ARGB32"
+drawText 230 670 "RGB32"
+drawText 340 670 "Indexed"
+drawText 450 670 "Mono"
+drawText 560 670 "Mono w/lut"
+drawText 670 670 "Indexed w/mask"
+
+drawText 770 50 "ARGB32_PM"
+drawText 770 160 "ARGB32"
+drawText 770 270 "RGB32"
+drawText 770 380 "Indexed"
+drawText 770 490 "MonoLSB"
+drawText 770 600 "Mono" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/images.qps b/tests/auto/lancelot/scripts/images.qps
new file mode 100644
index 0000000000..3f892400e2
--- /dev/null
+++ b/tests/auto/lancelot/scripts/images.qps
@@ -0,0 +1,106 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+image_load dome_argb32.png the_image
+begin_block draw_stuff
+
+save
+
+ # standard draw
+ drawImage the_image 0 0
+
+ # sub recting
+ translate 120 0
+ drawImage the_image 0 0 40 40 0 0 40 40
+ drawImage the_image 60 0 40 40 60 0 40 40
+ drawImage the_image 0 60 40 40 0 60 40 40
+ drawImage the_image 60 60 40 40 60 60 40 40
+ drawImage the_image 0 40 40 20 0 40 40 20
+ drawImage the_image 60 40 40 20 60 40 40 20
+ drawImage the_image 40 0 20 100 40 0 20 100
+
+ # subrecting w/scale
+ translate 120 0
+ drawImage the_image 0 0 50 50 0 0 25 25
+ drawImage the_image 50 0 50 50 25 0 25 25
+ drawImage the_image 0 50 50 50 0 25 25 25
+ drawImage the_image 50 50 50 50 25 25 25 25
+
+ # subrecting w/scale & smooth xform
+ translate 120 0
+ setRenderHint SmoothPixmapTransformation
+ drawImage the_image 0 0 50 50 0 0 25 25
+ drawImage the_image 50 0 50 50 25 0 25 25
+ drawImage the_image 0 50 50 50 0 25 25 25
+ drawImage the_image 50 50 50 50 25 25 25 25
+
+
+ # Rotation w/o smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform off
+ rotate 10
+ drawImage the_image 0 0
+ restore
+
+ # Rotation w smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform
+ rotate 10
+ drawImage the_image 0 0
+ restore
+
+restore
+
+end_block
+
+
+translate 0 120
+image_load dome_rgb32.png the_image
+repeat_block draw_stuff
+
+translate 0 120
+image_load dome_indexed.png the_image
+repeat_block draw_stuff
+
+translate 0 120
+image_load dome_indexed_mask.png the_image
+repeat_block draw_stuff
+
+translate 0 120
+image_load dome_mono.png the_image
+repeat_block draw_stuff
+
+
+resetMatrix
+translate 700 60
+setPen black
+drawText 0 0 "32 bit w/alpha"
+translate 0 120
+drawText 0 0 "32 bit w/o alpha"
+translate 0 120
+drawText 0 0 "8 bit indexed"
+translate 0 120
+drawText 0 0 "8 bit indexed w/mask"
+translate 0 120
+drawText 0 0 "1 bit"
+resetMatrix
+translate 0 600
+drawText 0 0 "normal"
+translate 120 0
+drawText 0 0 "subrect"
+translate 120 0
+drawText 0 0 "subrect scale"
+translate 120 0
+drawText 0 0 "subrect scale smooth"
+translate 120 0
+drawText 0 0 "xform"
+translate 120 0
+drawText 0 0 "smooth xform"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/images2.qps b/tests/auto/lancelot/scripts/images2.qps
new file mode 100644
index 0000000000..5159abc928
--- /dev/null
+++ b/tests/auto/lancelot/scripts/images2.qps
@@ -0,0 +1,145 @@
+# Version: 1
+# CheckVsReference: 5%
+
+image_load dome_argb32.png the_image
+begin_block draw_stuff
+
+save
+ # standard draw
+ drawImage the_image 0 0
+
+ # flip x
+ translate 220 0
+ scale -1 1
+ drawImage the_image 0 0
+ scale -1 1
+
+ # flip y
+ translate 20 100
+ scale 1 -1
+ drawImage the_image 0 0
+ scale 1 -1
+
+ # flip x and y
+ translate 220 0
+ scale -1 -1
+ drawImage the_image 0 0
+ scale -1 -1
+
+ # flip y and scale
+ translate 20 10
+ save
+ scale 1 -1.1
+ drawImage the_image 0 0
+ restore
+
+ # flip y and scale
+ translate 220 -110
+ save
+ scale -1.1 0.9
+ drawImage the_image 0 0
+ restore
+restore
+end_block
+
+setRenderHint Antialiasing
+
+resetMatrix
+translate 0 120
+repeat_block draw_stuff
+
+resetMatrix
+translate 720 60
+setPen black
+drawText 0 0 "aliased"
+translate 0 120
+drawText 0 0 "antialiased"
+resetMatrix
+translate 0 260
+drawText 0 0 "normal"
+translate 120 0
+drawText 0 0 "flip x"
+translate 120 0
+drawText 0 0 "flip y"
+translate 120 0
+drawText 0 0 "flip x and y"
+translate 120 0
+drawText 0 0 "flip y and scale"
+translate 120 0
+drawText 0 0 "flip x and scale"
+translate 120 0
+
+setRenderHint SmoothPixmapTransform
+
+resetMatrix
+translate 20 300
+drawImage border.png 0 0 100 100 1 1 8 8
+drawText 0 -5 "subrect color bleeding"
+translate 0 120
+drawImage border.png 0 0 100 100 0 0 10 10
+
+image_load sign.png the_image
+resetMatrix
+drawText 240 300 "drawImage() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawImage the_image 240 300 50 50 20 0 80 80
+drawRect 300 300 50 50
+drawImage the_image 300 300 50 50 -20 0 80 80
+drawRect 240 370 50 50
+drawImage the_image 240 370 50 50 0 20 80 80
+drawRect 300 370 50 50
+drawImage the_image 300 370 50 50 0 -20 80 80
+
+pixmap_load sign.png the_pixmap
+translate 220 0
+translate 0 -10
+drawText 240 300 "drawPixmap() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawPixmap the_pixmap 240 300 50 50 20 0 80 80
+drawRect 300 300 50 50
+drawPixmap the_pixmap 300 300 50 50 -20 0 80 80
+drawRect 240 370 50 50
+drawPixmap the_pixmap 240 370 50 50 0 20 80 80
+drawRect 300 370 50 50
+drawPixmap the_pixmap 300 370 50 50 0 -20 80 80
+
+
+resetMatrix
+translate 0 170
+drawText 240 300 "drawImage() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawImage the_image 240 300 50 50 50 0 50 50
+drawRect 300 300 50 50
+drawImage the_image 300 300 50 50 -20 0 50 50
+drawRect 240 370 50 50
+drawImage the_image 240 370 50 50 0 50 50 50
+drawRect 300 370 50 50
+drawImage the_image 300 370 50 50 0 -20 50 50
+
+resetMatrix
+translate 220 170
+drawText 240 300 "drawPixmap() with varying sx/sy offsets"
+translate 0 10
+drawRect 240 300 50 50
+drawPixmap the_pixmap 240 300 50 50 50 0 50 50
+drawRect 300 300 50 50
+drawPixmap the_pixmap 300 300 50 50 -20 0 50 50
+drawRect 240 370 50 50
+drawPixmap the_pixmap 240 370 50 50 0 50 50 50
+drawRect 300 370 50 50
+drawPixmap the_pixmap 300 370 50 50 0 -20 50 50
+
+resetMatrix
+drawText 10 620 "drawImage/Pixmap() with negative x/y and sx/sy"
+setPen red
+
+translate 20 640
+drawImage the_image -10 -10 -1 -1 -10 -10 0 0
+drawRect 0 0 80 80
+
+translate 100 0
+drawPixmap the_pixmap -10 -10 -1 -1 -10 -10 0 0
+drawRect 0 0 80 80
diff --git a/tests/auto/lancelot/scripts/join_cap_styles.qps b/tests/auto/lancelot/scripts/join_cap_styles.qps
new file mode 100644
index 0000000000..ed823f53f5
--- /dev/null
+++ b/tests/auto/lancelot/scripts/join_cap_styles.qps
@@ -0,0 +1,63 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+setRenderHint Antialiasing
+
+path_moveTo p 20 20
+path_cubicTo p 100 20 100 180 180 100
+path_lineTo p 20 180
+path_lineTo p 180 20
+
+setPen black 20 solidline roundcap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline roundcap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline roundcap beveljoin
+drawPath p
+setPen red
+drawPath p
+
+translate -400 200
+setPen black 20 solidline squarecap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline squarecap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline squarecap beveljoin
+drawPath p
+setPen red
+drawPath p
+
+translate -400 200
+setPen black 20 solidline flatcap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline flatcap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 200 0
+setPen black 20 solidline flatcap beveljoin
+drawPath p
+setPen red
+drawPath p \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/join_cap_styles_duplicate_control_points.qps b/tests/auto/lancelot/scripts/join_cap_styles_duplicate_control_points.qps
new file mode 100644
index 0000000000..b4630148e2
--- /dev/null
+++ b/tests/auto/lancelot/scripts/join_cap_styles_duplicate_control_points.qps
@@ -0,0 +1,68 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 600 650)
+
+
+setRenderHint Antialiasing
+
+path_moveTo p 40 70
+path_lineTo p 20 70
+path_cubicTo p 20 70 40 20 80 80
+
+path_moveTo p 20 120
+path_cubicTo p 50 60 80 110 80 110
+path_lineTo p 60 110
+
+scale 2 2
+
+setPen black 10 solidline roundcap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline roundcap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline roundcap beveljoin
+drawPath p
+setPen red
+drawPath p
+
+translate -200 100
+setPen black 10 solidline squarecap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline squarecap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline squarecap beveljoin
+drawPath p
+setPen red
+drawPath p
+
+translate -200 100
+setPen black 10 solidline flatcap roundjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline flatcap miterjoin
+drawPath p
+setPen red
+drawPath p
+
+translate 100 0
+setPen black 10 solidline flatcap beveljoin
+drawPath p
+setPen red
+drawPath p \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linear_gradients.qps b/tests/auto/lancelot/scripts/linear_gradients.qps
new file mode 100644
index 0000000000..b1b8dd69e7
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linear_gradients.qps
@@ -0,0 +1,144 @@
+# Version: 1
+# CheckVsReference: 2% (0 0 600 750)
+
+path_addRect path 400 0 80 80
+path_addEllipse path 440 40 60 60
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 20 20 70 70
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 120 20 170 70
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 220 20 270 70
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setLinear 320 20 340 40
+drawPolygon [300 0 390 0 350 99]
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 420 20 440 40
+drawPath path
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 520 20 540 40
+drawPie 500 0 100 100 720 4320
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Vertical gradient tests
+resetMatrix
+setBrush noBrush
+translate 0 400
+
+begin_block vertical_gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 20 20 20 70
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 120 20 120 70
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 220 20 220 70
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setLinear 320 20 320 40
+drawPolygon [300 0 390 0 350 99]
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 420 20 420 40
+drawPath path
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 520 20 520 40
+drawPie 500 0 100 100 720 4320
+end_block
+
+translate 0 100
+scale 1 1.5
+repeat_block vertical_gradients
+
+resetMatrix
+translate 0 650
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block vertical_gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+# gradient line indicators
+drawLine 20 20 70 70
+drawLine 120 20 170 70
+drawLine 220 20 270 70
+drawLine 320 20 340 40
+drawLine 420 20 440 40
+drawLine 520 20 540 40
+
+drawLine 20 140 70 240
+drawLine 120 140 170 240
+drawLine 220 140 270 240
+drawLine 320 140 340 180
+drawLine 420 140 440 180
+drawLine 520 140 540 180
+
+drawText 610 50 "No XForm"
+drawText 610 200 "scale 1x2"
+drawText 610 350 "brush transform"
+drawText 610 450 "vertical brush"
+drawText 610 570 "vertical brush scale 1x1.5"
+drawText 610 700 "vertical brush transform"
+
+drawText 10 780 "Pad"
+drawText 110 780 "Reflect"
+drawText 210 780 "Repeat"
+drawText 310 780 "Pad w/alpha"
+drawText 410 780 "Reflect w/alpha"
+drawText 510 780 "Repeat w/alpha" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linear_gradients_perspectives.qps b/tests/auto/lancelot/scripts/linear_gradients_perspectives.qps
new file mode 100644
index 0000000000..3ea39fbe46
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linear_gradients_perspectives.qps
@@ -0,0 +1,62 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+translate 10 10
+# standard draw
+begin_block gradient
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setLinear 10 10 290 290
+drawRect 0 0 300 300
+end_block gradient
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block gradient
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block gradient
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block gradient
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linear_resolving_gradients.qps b/tests/auto/lancelot/scripts/linear_resolving_gradients.qps
new file mode 100644
index 0000000000..779760cb9a
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linear_resolving_gradients.qps
@@ -0,0 +1,66 @@
+# Version: 2
+# CheckVsReference: 2% (0 0 500 400)
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setCoordinateMode ObjectBoundingMode
+gradient_setLinear 0.2 0.2 0.7 0.7
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setLinear 0.2 0.2 0.7 0.7
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 0.2 0.2 0.7 0.7
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setLinear 0.2 0.2 0.8 0.4
+drawPolygon [300 0 400 0 350 100]
+
+gradient_setSpread RepeatSpread
+gradient_setLinear 0.2 0.2 0.4 0.4
+drawPie 400 0 100 100 0 4320
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+
+drawText 510 50 "No XForm"
+drawText 510 200 "scale 1x2"
+drawText 510 350 "brush transform"
+
+drawText 10 450 "Pad"
+drawText 110 450 "Reflect"
+drawText 210 450 "Repeat"
+drawText 310 450 "Pad w/alpha"
+drawText 410 450 "Repeat w/alpha" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/lineconsistency.qps b/tests/auto/lancelot/scripts/lineconsistency.qps
new file mode 100644
index 0000000000..0b40577659
--- /dev/null
+++ b/tests/auto/lancelot/scripts/lineconsistency.qps
@@ -0,0 +1,72 @@
+# Version: 1
+
+begin_block draw
+setPen red
+drawPolygon [1.1 1 3.3 30.6 23.1 39.2 38.9 6.5]
+setPen black
+drawLine 1.1 1 3.3 30.6
+drawLine 3.3 30.6 23.1 39.2
+drawLine 23.1 39.2 38.9 6.5
+drawLine 38.9 6.5 1.1 1
+end_block draw
+drawText 0 60 "0.0 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.1 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.2 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.3 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.4 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.5 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.6 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.7 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.8 aligned"
+translate 0.1 80.1
+repeat_block draw
+drawText 0 60 "0.9 aligned"
+
+resetMatrix
+translate 100 0
+setPen black
+drawText 0 20 "Line and text, 0.0 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.1 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.2 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.3 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.4 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.5 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.6 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.7 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.8 aligned"
+drawLine 0 21 160 21
+translate 0 40.1
+drawText 0 20 "Line and text, 0.9 aligned"
+drawLine 0 21 160 21 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linedashes.qps b/tests/auto/lancelot/scripts/linedashes.qps
new file mode 100644
index 0000000000..ee7d18b156
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linedashes.qps
@@ -0,0 +1,94 @@
+# Version: 1
+
+translate 10 10
+
+setPen 0xffff0000 0 solidline squarecap
+translate 50 50
+begin_block draw_lines
+ save
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ restore
+end_block
+
+setPen 0xffff0000 0 dotline squarecap
+translate 100 0
+repeat_block draw_lines
+setPen 0xffff0000 0 dashdotline squarecap
+translate 100 0
+repeat_block draw_lines
+setPen 0xffff0000 0 dashdotdotline squarecap
+translate 100 0
+repeat_block draw_lines
+setPen 0xffff0000 0 dashline squarecap
+translate 100 0
+repeat_block draw_lines \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linedashes2.qps b/tests/auto/lancelot/scripts/linedashes2.qps
new file mode 100644
index 0000000000..1dc4fd310e
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linedashes2.qps
@@ -0,0 +1,154 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 800 800)
+
+translate -30 10
+
+setPen 0xffff0000 0 dashline squarecap
+pen_setDashPattern [10 5]
+
+save
+translate 100 100
+begin_block lines
+drawLine 100 100 200 100
+drawLine 100 100 200 200
+drawLine 100 100 100 200
+end_block
+
+setPen 0xffff0000 2 dashline squarecap
+translate 150 0
+repeat_block lines
+restore
+
+save
+save
+begin_block horizontal
+drawLine 0 0 50 0
+drawLine 3 10 53 10
+drawLine 6 20 56 20
+drawLine 9 30 59 30
+
+translate 0 50
+
+drawLine 0 0 50 5
+drawLine 3 10 53 15
+drawLine 6 20 56 25
+drawLine 9 30 59 35
+
+translate 0 50
+
+drawLine 0 0 50 -5
+drawLine 3 10 53 5
+drawLine 6 20 56 15
+drawLine 9 30 59 25
+end_block
+restore
+
+save
+translate 80 0
+repeat_block horizontal
+restore
+save
+translate 800 0
+repeat_block horizontal
+restore
+
+translate 180 -40
+save
+begin_block vertical
+drawLine 0 0 0 50
+drawLine 10 3 10 53
+drawLine 20 6 20 56
+drawLine 30 9 30 59
+
+translate 50 0
+
+drawLine 0 0 5 50
+drawLine 10 3 15 53
+drawLine 20 6 25 56
+drawLine 30 9 35 59
+
+translate 50 0
+
+drawLine 0 0 -5 50
+drawLine 10 3 5 53
+drawLine 20 6 15 56
+drawLine 30 9 25 59
+end_block
+restore
+
+save
+translate 0 80
+repeat_block vertical
+restore
+translate 0 800
+repeat_block vertical
+restore
+
+translate 0 200
+
+setPen 0xffff0000 2 dashline squarecap
+save
+repeat_block horizontal
+restore
+save
+translate 80 0
+repeat_block horizontal
+restore
+save
+translate 780 0
+repeat_block horizontal
+restore
+
+translate 360 -240
+save
+repeat_block vertical
+restore
+save
+translate 0 80
+repeat_block vertical
+restore
+translate 0 780
+repeat_block vertical
+
+resetMatrix
+translate 40 400
+setPen 0xffff0000 5 dashdotline flatcap
+pen_setDashPattern [1 1 4 1 1 4]
+pen_setDashOffset -4
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset -2
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 0
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 2
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 4
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 6
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 8
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 10
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 12
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 14
+drawLine 0 0 300 0
+translate 0 8
+pen_setDashOffset 16
+drawLine 0 0 300 0
+
+resetMatrix
+setPen black 3 dashdotline
+pen_setCosmetic true
+translate 0 -150
+drawLine 500 160 500 410 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/linedashes2_aa.qps b/tests/auto/lancelot/scripts/linedashes2_aa.qps
new file mode 100644
index 0000000000..c818ab62fe
--- /dev/null
+++ b/tests/auto/lancelot/scripts/linedashes2_aa.qps
@@ -0,0 +1,5 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 800 800)
+
+setRenderHint LineAntialiasing
+import "linedashes2.qps" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/lines.qps b/tests/auto/lancelot/scripts/lines.qps
new file mode 100644
index 0000000000..c0daffb1b0
--- /dev/null
+++ b/tests/auto/lancelot/scripts/lines.qps
@@ -0,0 +1,558 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 310 425)
+
+
+translate 10 10
+
+begin_block draw_lines
+ save
+ translate 50 50
+
+ save
+ setPen 0x7fff0000
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ restore
+
+ # and then draw the lines the other direction
+ save
+ setPen 0x7f0000ff
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ rotate 10
+ drawLine 50 0 10 0
+ restore
+
+ # and now with a clip
+ save
+ setClipRect -30 -30 60 60
+ setPen 0x7f00ff00
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ rotate 10
+ drawLine 10 0 50 0
+ restore
+
+ restore
+end_block
+
+save
+ translate 100 0
+ scale 2 2
+ repeat_block draw_lines
+restore
+
+translate 0 10
+
+save
+ translate 0 200
+ setRenderHint Antialiasing
+ repeat_block draw_lines
+restore
+
+save
+ translate 100 200
+ scale 2 2
+ setRenderHint Antialiasing
+ repeat_block draw_lines
+restore
+
+translate 320 0
+
+setPen black 0 solidline squarecap
+
+begin_block lines
+
+# 0 -> 45 degress
+drawLine 100 100 200 90
+drawLine 100 100 200 80
+drawLine 100 100 200 70
+drawLine 100 100 200 60
+drawLine 100 100 200 50
+drawLine 100 100 200 40
+drawLine 100 100 200 30
+drawLine 100 100 200 20
+drawLine 100 100 200 10
+
+# 45
+drawLine 100 100 200 0
+
+# 45 -> 90
+drawLine 100 100 190 0
+drawLine 100 100 180 0
+drawLine 100 100 170 0
+drawLine 100 100 160 0
+drawLine 100 100 150 0
+drawLine 100 100 140 0
+drawLine 100 100 130 0
+drawLine 100 100 120 0
+drawLine 100 100 110 0
+
+# 90
+drawLine 100 100 100 0
+
+# 90 -> 135
+drawLine 100 100 90 0
+drawLine 100 100 80 0
+drawLine 100 100 70 0
+drawLine 100 100 60 0
+drawLine 100 100 50 0
+drawLine 100 100 40 0
+drawLine 100 100 30 0
+drawLine 100 100 20 0
+drawLine 100 100 10 0
+
+# 135
+drawLine 100 100 0 0
+
+# 135 -> 180 degress
+drawLine 100 100 0 10
+drawLine 100 100 0 20
+drawLine 100 100 0 30
+drawLine 100 100 0 40
+drawLine 100 100 0 50
+drawLine 100 100 0 60
+drawLine 100 100 0 70
+drawLine 100 100 0 80
+drawLine 100 100 0 90
+
+# 180
+drawLine 100 100 0 100
+
+# 180 -> 225
+drawLine 100 100 0 110
+drawLine 100 100 0 120
+drawLine 100 100 0 130
+drawLine 100 100 0 140
+drawLine 100 100 0 150
+drawLine 100 100 0 160
+drawLine 100 100 0 170
+drawLine 100 100 0 180
+drawLine 100 100 0 190
+
+# 225
+drawLine 100 100 0 200
+
+# 225 -> 270
+drawLine 100 100 10 200
+drawLine 100 100 20 200
+drawLine 100 100 30 200
+drawLine 100 100 40 200
+drawLine 100 100 50 200
+drawLine 100 100 60 200
+drawLine 100 100 70 200
+drawLine 100 100 80 200
+drawLine 100 100 90 200
+
+# 270
+drawLine 100 100 100 200
+
+# 270 -> 315 degrees
+drawLine 100 100 110 200
+drawLine 100 100 120 200
+drawLine 100 100 130 200
+drawLine 100 100 140 200
+drawLine 100 100 150 200
+drawLine 100 100 160 200
+drawLine 100 100 170 200
+drawLine 100 100 180 200
+drawLine 100 100 190 200
+
+# 315
+drawLine 100 100 200 200
+
+# 315 -> 360 degress
+drawLine 100 100 200 100
+drawLine 100 100 200 110
+drawLine 100 100 200 120
+drawLine 100 100 200 130
+drawLine 100 100 200 140
+drawLine 100 100 200 150
+drawLine 100 100 200 160
+drawLine 100 100 200 170
+drawLine 100 100 200 180
+drawLine 100 100 200 190
+
+end_block
+
+
+setRenderHint Antialiasing
+setPen 0x7fff0000
+translate 0.5 0.5
+repeat_block lines
+
+setPen 0x000000 8
+translate 20 240
+drawText 0 0 "Steep slopes:"
+
+translate 0 10
+
+drawLine 0 0 -8 400
+translate 20 0
+drawLine 0 0 -7 400
+translate 20 0
+drawLine 0 0 -6 400
+translate 20 0
+drawLine 0 0 -5 400
+translate 20 0
+drawLine 0 0 -4 400
+translate 20 0
+drawLine 0 0 -3 400
+translate 20 0
+drawLine 0 0 -2 400
+translate 20 0
+drawLine 0 0 -1 400
+translate 20 0
+drawLine 0 0 0 400
+translate 20 0
+drawLine 0 0 1 400
+translate 20 0
+drawLine 0 0 2 400
+translate 20 0
+drawLine 0 0 3 400
+translate 20 0
+drawLine 0 0 4 400
+translate 20 0
+drawLine 0 0 5 400
+translate 20 0
+drawLine 0 0 6 400
+translate 20 0
+drawLine 0 0 7 400
+translate 20 0
+drawLine 0 0 8 400
+
+resetMatrix
+
+translate 20 450
+
+drawText 0 0 "Zero length lines:"
+
+translate 0 20
+drawText 100 10 "Square cap"
+save
+begin_block points
+setPen 0x000000 1 solidline squarecap
+drawLine 0 0 0 0
+setPen 0x000000 2 solidline squarecap
+drawLine 8 0 8 0
+setPen 0x000000 3 solidline squarecap
+drawLine 16 0 16 0
+setPen 0x000000 4 solidline squarecap
+drawLine 24 0 24 0
+setPen 0x000000 5 solidline squarecap
+drawLine 32 0 32 0
+setPen 0x000000 6 solidline squarecap
+drawLine 40 0 40 0
+setPen 0x000000 7 solidline squarecap
+drawLine 48 0 48 0
+setPen 0x000000 8 solidline squarecap
+drawLine 57 0 57 0
+setPen 0x000000 9 solidline squarecap
+drawLine 67 0 67 0
+setPen 0x000000 10 solidline squarecap
+drawLine 78 0 78 0
+end_block points
+restore
+
+translate 0 12
+setRenderHint Antialiasing off
+repeat_block points
+setRenderHint Antialiasing
+
+translate 0 20
+drawText 100 10 "Round cap"
+save
+begin_block points2
+setPen 0x000000 1 solidline roundcap
+drawLine 0 0 0 0
+setPen 0x000000 2 solidline roundcap
+drawLine 8 0 8 0
+setPen 0x000000 3 solidline roundcap
+drawLine 16 0 16 0
+setPen 0x000000 4 solidline roundcap
+drawLine 24 0 24 0
+setPen 0x000000 5 solidline roundcap
+drawLine 32 0 32 0
+setPen 0x000000 6 solidline roundcap
+drawLine 40 0 40 0
+setPen 0x000000 7 solidline roundcap
+drawLine 48 0 48 0
+setPen 0x000000 8 solidline roundcap
+drawLine 57 0 57 0
+setPen 0x000000 9 solidline roundcap
+drawLine 67 0 67 0
+setPen 0x000000 10 solidline roundcap
+drawLine 78 0 78 0
+end_block points2
+restore
+
+translate 0 12
+setRenderHint Antialiasing off
+repeat_block points2
+setRenderHint Antialiasing
+
+translate 0 20
+drawText 100 10 "Flat cap"
+save
+begin_block points3
+setPen 0x000000 1 solidline flatcap
+drawLine 0 0 0 0
+setPen 0x000000 2 solidline flatcap
+drawLine 8 0 8 0
+setPen 0x000000 3 solidline flatcap
+drawLine 16 0 16 0
+setPen 0x000000 4 solidline flatcap
+drawLine 24 0 24 0
+setPen 0x000000 5 solidline flatcap
+drawLine 32 0 32 0
+setPen 0x000000 6 solidline flatcap
+drawLine 40 0 40 0
+setPen 0x000000 7 solidline flatcap
+drawLine 48 0 48 0
+setPen 0x000000 8 solidline flatcap
+drawLine 57 0 57 0
+setPen 0x000000 9 solidline flatcap
+drawLine 67 0 67 0
+setPen 0x000000 10 solidline flatcap
+drawLine 78 0 78 0
+end_block points3
+restore
+
+translate 0 12
+setRenderHint Antialiasing off
+repeat_block points3
+
+resetMatrix
+translate -220 667.226
+drawText 230 -80 "Task 194266 (should see only one line):"
+setPen black
+drawRect 230.5 -70.5 122 12
+setRenderHint Antialiasing
+setPen red
+drawLine 236.842105263 -63.775117299 247.368421053 -63.775437504
+
+setRenderHint Antialiasing off
+resetMatrix
+translate 10 640
+setPen black
+drawText 0 -10 "Task 207147 (should see two lines):"
+drawRect 0.5 0.5 64 64
+setRenderHint Antialiasing
+setPen red
+
+drawLine 4.5 4.5 4.5001 60.5
+drawLine 4.5 4.5 60.5 4.5001
+
+setRenderHint Antialiasing off
+resetMatrix
+translate 10 730
+setPen black
+drawText 0 -10 "Task 229459 (should see one diagonal line):"
+drawRect 0.5 0.5 64 64
+setPen red 2 solidline flatcap
+
+setClipRect 2 2 63 63
+drawLine 1.5 1.5 33560000 33560000 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/lines2.qps b/tests/auto/lancelot/scripts/lines2.qps
new file mode 100644
index 0000000000..af6ad65939
--- /dev/null
+++ b/tests/auto/lancelot/scripts/lines2.qps
@@ -0,0 +1,179 @@
+# Version: 1
+# CheckVsReference: 5%
+
+translate 10 20
+drawText 0 0 "Thin lines"
+
+translate 60 70
+
+save
+begin_block lines
+translate 0 -60
+translate 0 5
+setPen 0x000000 0.05
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.1
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.15
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.3
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.35
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.5
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.55
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.6
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.65
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.7
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.75
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.8
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.85
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.9
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 0.95
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.05
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.1
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.15
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.3
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.35
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.2
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.25
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.5
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.55
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.6
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.65
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.7
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.75
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.8
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.85
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.9
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 1.95
+drawLine -60 -2 60 2
+translate 0 5
+setPen 0x000000 2
+drawLine -60 -2 60 2
+end_block
+restore
+
+save
+translate 150 0
+scale -1 1
+repeat_block lines
+restore
+
+save
+translate 80 220
+rotate 90
+repeat_block lines
+restore
+
+save
+translate 80 370
+rotate 90
+scale -1 1
+repeat_block lines
+restore
+
+setRenderHint Antialiasing
+
+translate 300 0
+
+save
+repeat_block lines
+restore
+
+save
+translate 150 0
+scale -1 1
+repeat_block lines
+restore
+
+save
+translate 80 220
+rotate 90
+repeat_block lines
+restore
+
+save
+translate 80 370
+rotate 90
+scale -1 1
+repeat_block lines
+restore \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/pathfill.qps b/tests/auto/lancelot/scripts/pathfill.qps
new file mode 100644
index 0000000000..821b4684c9
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pathfill.qps
@@ -0,0 +1,38 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 850 420)
+
+setPen afff0000 4
+
+setBrush dome_rgb32.png
+drawEllipse 10 10 200 200
+
+setBrush dome_argb32.png
+drawEllipse 220 10 200 200
+
+setPen NoPen
+
+setBrush dome_rgb32.png
+drawEllipse 10 220 200 200
+
+setBrush dome_argb32.png
+drawEllipse 220 220 200 200
+
+setBrushOrigin -30 -30
+
+setPen afff0000 4
+setBrush dome_rgb32.png
+drawEllipse 430 10 200 200
+
+setBrush dome_argb32.png
+drawEllipse 640 10 200 200
+
+setPen NoPen
+setBrush dome_rgb32.png
+drawEllipse 430 220 200 200
+
+setBrush dome_argb32.png
+drawEllipse 640 220 200 200
+
+setPen black
+drawText 150 450 "No offset RGB/ARGB"
+drawText 550 450 "-30 offset RGB/ARGB" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/paths.qps b/tests/auto/lancelot/scripts/paths.qps
new file mode 100644
index 0000000000..083026ee17
--- /dev/null
+++ b/tests/auto/lancelot/scripts/paths.qps
@@ -0,0 +1,34 @@
+# Version: 1
+
+setPen black
+setBrush 7f7fff
+
+path_moveTo star 50 0
+path_lineTo star 30 90
+path_lineTo star 100 60
+path_lineTo star 0 20
+path_lineTo star 80 100
+
+setFont "times" 50
+path_addText text 0 50 "ABCD, 1234, abcd, #%&"
+
+path_addRect rectncircle 0 0 75 75
+path_addEllipse rectncircle 25 25 75 75
+path_setFillRule rectncircle winding
+
+path_moveTo curve 100 0
+path_cubicTo curve 100 100 50 50 0 100
+
+begin_block drawing
+drawPath star
+translate 100 0
+drawPath rectncircle
+translate 100 0
+drawPath curve
+translate -200 100
+drawPath text
+end_block
+
+translate 50 100
+rotate 10
+repeat_block drawing
diff --git a/tests/auto/lancelot/scripts/paths_aa.qps b/tests/auto/lancelot/scripts/paths_aa.qps
new file mode 100644
index 0000000000..4812e2fa5f
--- /dev/null
+++ b/tests/auto/lancelot/scripts/paths_aa.qps
@@ -0,0 +1,4 @@
+# Version: 1
+
+setRenderHint LineAntialiasing
+import "paths.qps"
diff --git a/tests/auto/lancelot/scripts/pens.qps b/tests/auto/lancelot/scripts/pens.qps
new file mode 100644
index 0000000000..c72636dcef
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pens.qps
@@ -0,0 +1,133 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 800 800)
+
+
+translate 10 10
+
+begin_block penstyles
+setPen black 0 solidline flatcap
+drawLine 0 0 100 0
+setPen black 0 dashline flatcap
+drawLine 100 0 100 40
+setPen black 0 dotline flatcap
+drawLine 100 40 200 0
+setPen black 0 dashdotline flatcap
+drawLine 200 0 300 0
+setPen black 0 dashdotdotline flatcap
+drawLine 300 0 400 40
+
+translate 0 50
+setPen blue 2 solidline flatcap
+drawLine 0 0 100 0
+setPen blue 2 dashline flatcap
+drawLine 100 0 100 40
+setPen blue 2 dotline flatcap
+drawLine 100 40 200 0
+setPen blue 2 dashdotline flatcap
+drawLine 200 0 300 0
+setPen blue 2 dashdotdotline flatcap
+drawLine 300 0 400 40
+
+translate 0 50
+setPen red 5 solidline flatcap
+drawLine 0 0 100 0
+setPen red 5 dashline flatcap
+drawLine 100 0 100 40
+setPen red 5 dotline flatcap
+drawLine 100 40 200 0
+setPen red 5 dashdotline flatcap
+drawLine 200 0 300 0
+setPen red 5 dashdotdotline flatcap
+drawLine 300 0 400 40
+end_block
+
+translate 0 50
+scale 1 2
+repeat_block penstyles
+
+
+# Test cap styles
+resetMatrix
+translate 420 10
+setPen green 5 dashdotline flatcap
+drawLine 0 0 200 0
+setPen green 5 dashdotline roundcap
+drawLine 0 20 200 20
+setPen green 5 dashdotline squarecap
+drawLine 0 40 200 40
+
+
+# Test join styles
+resetMatrix
+translate 420 80
+setBrush nobrush
+begin_block joinstyles
+setPen orange 10 solidline flatcap miterjoin
+drawPolyline [ 0 0 80 0 80 80 0 80 ]
+
+translate 0 100
+setPen aquamarine 10 solidline squarecap beveljoin
+drawPolyline [ 0 0 80 0 80 80 0 80 ]
+
+translate 0 100
+setPen purple 10 solidline roundcap roundjoin
+drawPolyline [ 0 0 80 0 80 80 0 80 ]
+end_block
+
+translate 130 -200
+scale 2 1
+rotate 1
+repeat_block joinstyles
+
+# transparent lines
+resetMatrix
+translate 10 400
+setPen #7f000000
+drawLine 0 0 50 0
+setPen #7f000000 1 SolidLine
+drawLine 0 10 50 10
+setPen #7f000000 5 SolidLine
+drawLine 0 20 50 20
+setPen #7f000000 10 SolidLine
+drawLine 0 30 50 30
+setPen #7f000000
+drawLine 0 0 0 50
+setPen #7f000000 1 SolidLine
+drawLine 10 0 10 50
+setPen #7f000000 5 SolidLine
+drawLine 20 0 20 50
+setPen #7f000000 10 SolidLine
+drawLine 30 0 30 50
+
+# pen styles
+resetMatrix
+translate 0 500
+setPen black 0 DashLine
+drawLine 20 20 100 20
+translate 0 10
+setPen black 0 DotLine
+drawLine 20 20 100 20
+translate 0 10
+setPen black 0 DashDotLine
+drawLine 20 20 100 20
+translate 0 10
+setPen black 0 DashDotDotLine
+drawLine 20 20 100 20
+
+# scaling ellipse
+resetMatrix
+setPen black 0.008 DashLine
+translate 250 550
+rotate 30
+scale 250 250
+drawEllipse -0.4 -0.4 0.8 0.8
+
+# scaling path
+path_addEllipse star -0.3 -0.3 0.6 0.6
+
+resetMatrix
+setPen black 0.008 DashLine
+translate 250 550
+rotate 30
+scale 250 250
+drawPath star
diff --git a/tests/auto/lancelot/scripts/pens_aa.qps b/tests/auto/lancelot/scripts/pens_aa.qps
new file mode 100644
index 0000000000..066cac365f
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pens_aa.qps
@@ -0,0 +1,6 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 800 800)
+
+setRenderHint LineAntialiasing
+
+import "pens.qps" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/pens_cosmetic.qps b/tests/auto/lancelot/scripts/pens_cosmetic.qps
new file mode 100644
index 0000000000..d1a60d150d
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pens_cosmetic.qps
@@ -0,0 +1,110 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 585 470)
+
+path_addEllipse path 22 0 7 7
+path_addRect path 25 5 4 4
+
+translate 20 20
+
+begin_block lines
+ save
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+
+ translate 100 0
+ save
+ scale 4 1
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+ restore
+
+ translate 200 0
+ save
+ scale 1 4
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+ restore
+
+ translate 100 0
+ save
+ scale 4 4
+ drawLine 0 0 10 10
+ drawLine 2 0 10 0
+ drawLine 0 2 0 10
+ drawPolygon [12 0 20 0 15 10]
+ drawPath path
+ drawEllipse 32 0 8 8
+ drawPoint 36 4
+ restore
+ restore
+end_block
+
+drawText 580 15 "non-cosmetic, 0-width"
+translate 0 50
+
+setPen black 2
+repeat_block lines
+drawText 580 15 "non-cosmetic, 2-width"
+
+translate 0 20
+translate 0 50
+setPen black 0
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 0-width"
+
+translate 0 50
+setPen black 2
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 2-width"
+
+
+setRenderHint Antialiasing
+translate 0 20
+
+translate 0 50
+setPen black 0
+repeat_block lines
+drawText 580 15 "non-cosmetic, 0-width"
+
+translate 0 50
+
+setPen black 2
+repeat_block lines
+drawText 580 15 "non-cosmetic, 2-width"
+
+translate 0 20
+translate 0 50
+setPen black 0
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 0-width"
+
+translate 0 50
+setPen black 2
+pen_setCosmetic true
+repeat_block lines
+drawText 580 15 "cosmetic, 2-width"
+
+
+translate 0 70
+drawText 0 0 "scale(1, 1)"
+drawText 150 0 "scale(4, 1)"
+drawText 300 0 "scale(1, 4)"
+drawText 450 0 "scale(4, 4)" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/perspectives.qps b/tests/auto/lancelot/scripts/perspectives.qps
new file mode 100644
index 0000000000..0b903e5260
--- /dev/null
+++ b/tests/auto/lancelot/scripts/perspectives.qps
@@ -0,0 +1,72 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+image_load image.png the_image
+
+translate 10 10
+# standard draw
+drawImage the_image 0 0
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ drawImage the_image 0 0
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ drawImage the_image 0 0
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ drawImage the_image 0 0
+restore
+restore
+
+setRenderHint SmoothPixmapTransform on
+setBrush red
+setPen black
+resetMatrix
+translate 100 720
+rotate_y 85
+scale 7 0.01
+drawRect -150 -150 300 300
+
+resetMatrix
+setBrush gam030.png
+setPen black 30
+translate 700 700
+rotate_y -85
+scale 7 0.01
+drawRect -150 -150 300 300
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0
+resetMatrix
+translate 300 760
+drawText 0 0 "Perspective Clipping" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/perspectives2.qps b/tests/auto/lancelot/scripts/perspectives2.qps
new file mode 100644
index 0000000000..2f6d1d653c
--- /dev/null
+++ b/tests/auto/lancelot/scripts/perspectives2.qps
@@ -0,0 +1,309 @@
+# Version: 1
+
+setRenderHint Antialiasing
+
+image_load zebra.png zebra_png
+
+image_convertToFormat zebra_png zebra ARGB32_Premultiplied
+
+translate 75 100
+# standard draw
+begin_block row
+drawImage zebra -50 -50
+
+translate 90 0
+save
+rotate_y 50
+drawImage zebra -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 60
+drawImage zebra -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 70
+drawImage zebra -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 80
+drawImage zebra -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 82
+drawImage zebra -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 84
+drawImage zebra -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 86
+drawImage zebra -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 87
+drawImage zebra -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 88
+drawImage zebra -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 89
+drawImage zebra -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 91
+drawImage zebra -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 92
+drawImage zebra -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 93
+drawImage zebra -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 94
+drawImage zebra -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 96
+drawImage zebra -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 98
+drawImage zebra -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 100
+drawImage zebra -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 110
+drawImage zebra -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 120
+drawImage zebra -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 130
+drawImage zebra -50 -50
+restore
+
+translate 90 0
+save
+rotate_y 180
+drawImage zebra -50 -50
+restore
+end_block
+
+resetMatrix
+translate 75 280
+setRenderHint SmoothPixmapTransform
+repeat_block row
+
+resetMatrix
+setPen black
+translate 300 20
+drawText 0 0 "Fast Pixmap Transform"
+resetMatrix
+translate 300 210
+drawText 0 0 "Smooth Pixmap Transform"
+
+resetMatrix
+translate 0 400
+
+image_load dome_argb32.png the_pixmap
+
+image_convertToFormat the_pixmap dome ARGB32
+
+setRenderHint SmoothPixmapTransform false
+
+translate 75 100
+# standard draw
+begin_block row
+drawImage dome -50 -50
+
+translate 90 0
+save
+rotate_y 50
+drawImage dome -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 60
+drawImage dome -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 70
+drawImage dome -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 80
+drawImage dome -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 82
+drawImage dome -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 84
+drawImage dome -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 86
+drawImage dome -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 87
+drawImage dome -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 88
+drawImage dome -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 89
+drawImage dome -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 91
+drawImage dome -50 -50
+restore
+
+translate 6 0
+save
+rotate_y 92
+drawImage dome -50 -50
+restore
+
+translate 8 0
+save
+rotate_y 93
+drawImage dome -50 -50
+restore
+
+translate 12 0
+save
+rotate_y 94
+drawImage dome -50 -50
+restore
+
+translate 16 0
+save
+rotate_y 96
+drawImage dome -50 -50
+restore
+
+translate 20 0
+save
+rotate_y 98
+drawImage dome -50 -50
+restore
+
+translate 24 0
+save
+rotate_y 100
+drawImage dome -50 -50
+restore
+
+translate 30 0
+save
+rotate_y 110
+drawImage dome -50 -50
+restore
+
+translate 50 0
+save
+rotate_y 120
+drawImage dome -50 -50
+restore
+
+translate 65 0
+save
+rotate_y 130
+drawImage dome -50 -50
+restore
+
+translate 90 0
+save
+rotate_y 180
+drawImage dome -50 -50
+restore
+end_block
+
+resetMatrix
+translate 0 400
+translate 75 280
+setRenderHint SmoothPixmapTransform
+repeat_block row
+
+resetMatrix
+setPen black
+translate 0 400
+translate 300 20
+drawText 0 0 "Fast Pixmap Transform"
+resetMatrix
+translate 0 400
+translate 300 210
+drawText 0 0 "Smooth Pixmap Transform" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/pixmap_rotation.qps b/tests/auto/lancelot/scripts/pixmap_rotation.qps
new file mode 100644
index 0000000000..2f1ffb53e6
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pixmap_rotation.qps
@@ -0,0 +1,30 @@
+# Version: 1
+# CheckVsReference: 0% (0 0 440 220)
+
+translate 120 120
+
+begin_block drawing
+save
+ rotate 90
+ drawPixmap solid.png 0 0
+
+ rotate 90
+ drawPixmap solid.png 0 0
+
+ rotate 90
+ drawPixmap solid.png 0 0
+
+ rotate 90
+ drawPixmap solid.png 0 0
+restore
+end_block
+
+resetMatrix
+
+translate 340 120
+repeat_block drawing
+
+resetMatrix
+
+drawText 50 240 "Normal X form"
+drawText 270 240 "Smooth xform" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/pixmap_scaling.qps b/tests/auto/lancelot/scripts/pixmap_scaling.qps
new file mode 100644
index 0000000000..651896f4a3
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pixmap_scaling.qps
@@ -0,0 +1,224 @@
+# Version: 1
+# CheckVsReference: 0% (0 30 600 70)
+# CheckVsReference: 0% (290 130 280 60)
+# CheckVsReference: 0% (0 180 250 90)
+
+# Hurra! Force line endings (?)
+
+translate 5 25
+setFont "arial" 8
+
+save
+ drawText 15 0 "opaque image"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawImage solid2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawImage solid2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawImage solid2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawImage solid2x2.png 0 0
+ restore
+
+
+restore
+
+save
+ translate 150 0
+ drawText 15 0 "alpha image"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawImage alpha2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawImage alpha2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawImage alpha2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawImage alpha2x2.png 0 0
+ restore
+restore
+
+
+save
+ translate 0 150
+ drawText 15 0 "solid pixmap"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawPixmap solid2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawPixmap solid2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawPixmap solid2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawPixmap solid2x2.png 0 0
+ restore
+restore
+
+
+save
+ translate 150 150
+ drawText 15 0 "alpha pixmap"
+ translate 50 50
+ save
+ translate 1 1
+ scale 20 20
+ drawPixmap alpha2x2.png 0 0
+ restore
+ save
+ translate -1 1
+ scale -20 20
+ drawPixmap alpha2x2.png 0 0
+ restore
+ save
+ translate 1 -1
+ scale 20 -20
+ drawPixmap alpha2x2.png 0 0
+ restore
+ save
+ translate -1 -1
+ scale -20 -20
+ drawPixmap alpha2x2.png 0 0
+ restore
+restore
+
+
+save
+ translate 300 10
+ save
+ drawText 0 -10 "subrect solid image"
+ drawImage solid2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawImage solid2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawImage solid2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawImage solid2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawImage solid2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawImage solid2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawImage solid2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawImage solid2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawImage solid2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawImage solid2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawImage solid2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawImage solid2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawImage solid2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawImage solid2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawImage solid2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawImage solid2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawImage solid2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawImage solid2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawImage solid2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawImage solid2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+ save
+ translate 150 0
+ drawText 0 -10 "subrect solid image"
+ drawImage alpha2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawImage alpha2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawImage alpha2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawImage alpha2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawImage alpha2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawImage alpha2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawImage alpha2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawImage alpha2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawImage alpha2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawImage alpha2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawImage alpha2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawImage alpha2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawImage alpha2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawImage alpha2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawImage alpha2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawImage alpha2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawImage alpha2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawImage alpha2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawImage alpha2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawImage alpha2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+ save
+ translate 0 100
+ drawText 0 -10 "subrect alpha pixmap"
+ drawPixmap solid2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawPixmap solid2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawPixmap solid2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawPixmap solid2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawPixmap solid2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawPixmap solid2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawPixmap solid2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawPixmap solid2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawPixmap solid2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawPixmap solid2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawPixmap solid2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawPixmap solid2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawPixmap solid2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawPixmap solid2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawPixmap solid2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawPixmap solid2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawPixmap solid2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawPixmap solid2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawPixmap solid2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawPixmap solid2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+ save
+ translate 150 100
+ drawText 0 -10 "subrect alpha pixmap"
+ drawPixmap alpha2x2.png 0 0 50 5 0 0.0 2 0.2
+ drawPixmap alpha2x2.png 0 5 50 5 0 0.2 2 0.2
+ drawPixmap alpha2x2.png 0 10 50 5 0 0.4 2 0.2
+ drawPixmap alpha2x2.png 0 15 50 5 0 0.6 2 0.2
+ drawPixmap alpha2x2.png 0 20 50 5 0 0.8 2 0.2
+ drawPixmap alpha2x2.png 0 25 50 5 0 1.0 2 0.2
+ drawPixmap alpha2x2.png 0 30 50 5 0 1.2 2 0.2
+ drawPixmap alpha2x2.png 0 35 50 5 0 1.4 2 0.2
+ drawPixmap alpha2x2.png 0 40 50 5 0 1.6 2 0.2
+ drawPixmap alpha2x2.png 0 45 50 5 0 1.8 2 0.2
+ translate 60 0
+ drawPixmap alpha2x2.png 0 0 5 50 0.0 0 0.2 2
+ drawPixmap alpha2x2.png 5 0 5 50 0.2 0 0.2 2
+ drawPixmap alpha2x2.png 10 0 5 50 0.4 0 0.2 2
+ drawPixmap alpha2x2.png 15 0 5 50 0.6 0 0.2 2
+ drawPixmap alpha2x2.png 20 0 5 50 0.8 0 0.2 2
+ drawPixmap alpha2x2.png 25 0 5 50 1.0 0 0.2 2
+ drawPixmap alpha2x2.png 30 0 5 50 1.2 0 0.2 2
+ drawPixmap alpha2x2.png 35 0 5 50 1.4 0 0.2 2
+ drawPixmap alpha2x2.png 40 0 5 50 1.6 0 0.2 2
+ drawPixmap alpha2x2.png 45 0 5 50 1.8 0 0.2 2
+ restore
+
+restore \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/pixmap_subpixel.qps b/tests/auto/lancelot/scripts/pixmap_subpixel.qps
new file mode 100644
index 0000000000..908f7c3465
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pixmap_subpixel.qps
@@ -0,0 +1,117 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+translate 50 50
+
+# Pixmaps at 0.1 offset, unclipped
+begin_block draw_pixmaps
+save
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+ drawPixmap border.png 0 0
+ translate 20.1 0.1
+restore
+end_block
+
+# Tiled pixmaps at 0.1 offsets, unclipped
+translate 0 50
+begin_block draw_tiled
+save
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+ drawTiledPixmap border.png 0 0 16 16 0 0
+ translate 20.1 0.1
+restore
+end_block
+
+
+path_moveTo clip 0 0
+path_lineTo clip width 0
+path_lineTo clip width 400
+path_lineTo clip 0 height
+setClipPath clip
+
+translate 0 50
+# Pixmaps at 0.1 offset, clipped
+repeat_block draw_pixmaps
+
+
+# Tiled pixmaps at 0.1 offsets...
+translate 0 50
+repeat_block draw_tiled
+
diff --git a/tests/auto/lancelot/scripts/pixmaps.qps b/tests/auto/lancelot/scripts/pixmaps.qps
new file mode 100644
index 0000000000..8e60997acc
--- /dev/null
+++ b/tests/auto/lancelot/scripts/pixmaps.qps
@@ -0,0 +1,106 @@
+# Version: 1
+# CheckVsReference: 1% (0 0 690 580)
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+pixmap_load dome_argb32.png the_pixmap
+begin_block draw_stuff
+
+save
+
+ # standard draw
+ drawPixmap the_pixmap 0 0
+
+ # sub recting
+ translate 120 0
+ drawPixmap the_pixmap 0 0 40 40 0 0 40 40
+ drawPixmap the_pixmap 60 0 40 40 60 0 40 40
+ drawPixmap the_pixmap 0 60 40 40 0 60 40 40
+ drawPixmap the_pixmap 60 60 40 40 60 60 40 40
+ drawPixmap the_pixmap 0 40 40 20 0 40 40 20
+ drawPixmap the_pixmap 60 40 40 20 60 40 40 20
+ drawPixmap the_pixmap 40 0 20 100 40 0 20 100
+
+ # subrecting w/scale
+ translate 120 0
+ drawPixmap the_pixmap 0 0 50 50 0 0 25 25
+ drawPixmap the_pixmap 50 0 50 50 25 0 25 25
+ drawPixmap the_pixmap 0 50 50 50 0 25 25 25
+ drawPixmap the_pixmap 50 50 50 50 25 25 25 25
+
+ # subrecting w/scale & smooth xform
+ translate 120 0
+ setRenderHint SmoothPixmapTransformation
+ drawPixmap the_pixmap 0 0 50 50 0 0 25 25
+ drawPixmap the_pixmap 50 0 50 50 25 0 25 25
+ drawPixmap the_pixmap 0 50 50 50 0 25 25 25
+ drawPixmap the_pixmap 50 50 50 50 25 25 25 25
+
+
+ # Rotation w/o smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform off
+ rotate 10
+ drawPixmap the_pixmap 0 0
+ restore
+
+ # Rotation w smooth xform
+ translate 120 0
+ save
+ setRenderHint SmoothPixmapTransform
+ rotate 10
+ drawPixmap the_pixmap 0 0
+ restore
+
+restore
+
+end_block
+
+
+translate 0 120
+pixmap_load dome_rgb32.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_indexed.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_indexed_mask.png the_pixmap
+repeat_block draw_stuff
+
+translate 0 120
+pixmap_load dome_mono.png the_pixmap
+repeat_block draw_stuff
+
+
+resetMatrix
+translate 700 60
+setPen black
+drawText 0 0 "32 bit w/alpha"
+translate 0 120
+drawText 0 0 "32 bit w/o alpha"
+translate 0 120
+drawText 0 0 "8 bit indexed"
+translate 0 120
+drawText 0 0 "8 bit indexed w/mask"
+translate 0 120
+drawText 0 0 "1 bit"
+resetMatrix
+translate 0 600
+drawText 0 0 "normal"
+translate 120 0
+drawText 0 0 "subrect"
+translate 120 0
+drawText 0 0 "subrect scale"
+translate 120 0
+drawText 0 0 "subrect scale smooth"
+translate 120 0
+drawText 0 0 "xform"
+translate 120 0
+drawText 0 0 "smooth xform"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/porter_duff.qps b/tests/auto/lancelot/scripts/porter_duff.qps
new file mode 100644
index 0000000000..166e48a57f
--- /dev/null
+++ b/tests/auto/lancelot/scripts/porter_duff.qps
@@ -0,0 +1,251 @@
+# Version: 1
+# CheckVsReference: 5%
+
+
+translate 0 50
+
+surface_begin 0 0 100 100
+
+begin_block predraw
+setRenderHint Antialiasing
+setPen nopen
+setBrush 0x7f000000
+drawEllipse 10 10 80 80
+end_block
+
+setCompositionMode SourceOver
+
+begin_block postdraw
+
+
+setBrush 0x1fff0000
+drawRect 0 0 50 50
+
+setBrush 0xdf00ff00
+drawRect 50 50 50 50
+
+setBrush 0x7f0000ff
+drawEllipse 30 30 40 40
+
+# a black rectangle around
+setCompositionMode SourceOver
+setPen black
+setBrush nobrush
+drawRect 0.5 0.5 99 99
+
+end_block
+surface_end
+
+
+# Destination over
+surface_begin 100 0 100 100
+repeat_block predraw
+setCompositionMode DestinationOver
+repeat_block postdraw
+surface_end
+
+
+# Clear
+surface_begin 200 0 100 100
+repeat_block predraw
+setCompositionMode Clear
+repeat_block postdraw
+surface_end
+
+
+# Source
+surface_begin 300 0 100 100
+repeat_block predraw
+setCompositionMode Source
+repeat_block postdraw
+surface_end
+
+
+# Destination
+surface_begin 400 0 100 100
+repeat_block predraw
+setCompositionMode Destination
+repeat_block postdraw
+surface_end
+
+
+# Source In
+surface_begin 500 0 100 100
+repeat_block predraw
+setCompositionMode SourceIn
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Destination In
+surface_begin 0 100 100 100
+repeat_block predraw
+setCompositionMode DestinationIn
+repeat_block postdraw
+surface_end
+
+
+# Source Out
+surface_begin 100 100 100 100
+repeat_block predraw
+setCompositionMode SourceOut
+repeat_block postdraw
+surface_end
+
+
+# Destination Out
+surface_begin 200 100 100 100
+repeat_block predraw
+setCompositionMode DestinationOut
+repeat_block postdraw
+surface_end
+
+
+# SourceAtop
+surface_begin 300 100 100 100
+repeat_block predraw
+setCompositionMode SourceAtop
+repeat_block postdraw
+surface_end
+
+
+# DestinationAtop
+surface_begin 400 100 100 100
+repeat_block predraw
+setCompositionMode DestinationAtop
+repeat_block postdraw
+surface_end
+
+
+# Xor
+surface_begin 500 100 100 100
+repeat_block predraw
+setCompositionMode Xor
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Plus
+surface_begin 0 200 100 100
+repeat_block predraw
+setCompositionMode Plus
+repeat_block postdraw
+surface_end
+
+
+# Multiply
+surface_begin 100 200 100 100
+repeat_block predraw
+setCompositionMode Multiply
+repeat_block postdraw
+surface_end
+
+
+# Screen
+surface_begin 200 200 100 100
+repeat_block predraw
+setCompositionMode Screen
+repeat_block postdraw
+surface_end
+
+
+# Overlay
+surface_begin 300 200 100 100
+repeat_block predraw
+setCompositionMode Overlay
+repeat_block postdraw
+surface_end
+
+
+# Darken
+surface_begin 400 200 100 100
+repeat_block predraw
+setCompositionMode Darken
+repeat_block postdraw
+surface_end
+
+
+# Lighten
+surface_begin 500 200 100 100
+repeat_block predraw
+setCompositionMode Lighten
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# ColorDodge
+surface_begin 0 300 100 100
+repeat_block predraw
+setCompositionMode ColorDodge
+repeat_block postdraw
+surface_end
+
+
+# Multiply
+surface_begin 100 300 100 100
+repeat_block predraw
+setCompositionMode ColorBurn
+repeat_block postdraw
+surface_end
+
+
+# Screen
+surface_begin 200 300 100 100
+repeat_block predraw
+setCompositionMode HardLight
+repeat_block postdraw
+surface_end
+
+
+# Overlay
+surface_begin 300 300 100 100
+repeat_block predraw
+setCompositionMode SoftLight
+repeat_block postdraw
+surface_end
+
+
+# Darken
+surface_begin 400 300 100 100
+repeat_block predraw
+setCompositionMode Difference
+repeat_block postdraw
+surface_end
+
+
+# Lighten
+surface_begin 500 300 100 100
+repeat_block predraw
+setCompositionMode Exclusion
+repeat_block postdraw
+surface_end
+
+resetMatrix
+
+drawText 0 50 "SourceOver"
+drawText 100 50 "DestinationOver"
+drawText 200 50 "Clear"
+drawText 300 50 "Source"
+drawText 400 50 "Destination"
+drawText 500 50 "SourceIn"
+drawText 0 200 "DestinationIn"
+drawText 100 200 "SourceOut"
+drawText 200 200 "DestinationOut"
+drawText 300 200 "SourceAtop"
+drawText 400 200 "DestinationAtop"
+drawText 500 200 "Xor"
+drawText 0 350 "Plus"
+drawText 100 350 "Multiply"
+drawText 200 350 "Screen"
+drawText 300 350 "Overlay"
+drawText 400 350 "Darken"
+drawText 500 350 "Lighten"
+drawText 0 500 "ColorDodge"
+drawText 100 500 "ColorBurn"
+drawText 200 500 "HardLight"
+drawText 300 500 "SoftLight"
+drawText 400 500 "Difference"
+drawText 500 500 "Exclusion" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/porter_duff2.qps b/tests/auto/lancelot/scripts/porter_duff2.qps
new file mode 100644
index 0000000000..a792d9b278
--- /dev/null
+++ b/tests/auto/lancelot/scripts/porter_duff2.qps
@@ -0,0 +1,261 @@
+# Version: 1
+# CheckVsReference: 1% (0 50 600 100)
+# CheckVsReference: 1% (0 200 600 100)
+# CheckVsReference: 1% (0 350 600 100)
+# CheckVsReference: 1% (0 500 600 100)
+
+translate 0 50
+
+surface_begin 0 0 100 100
+
+begin_block predraw
+setRenderHint Antialiasing
+setPen nopen
+gradient_clearStops
+gradient_appendStop 0 efff0000
+gradient_appendStop 0.5 dfffff00
+gradient_appendStop 1 ef00ff00
+
+gradient_setSpread PadSpread
+gradient_setLinear 10 10 90 90
+drawEllipse 10 10 80 80
+end_block
+
+setCompositionMode SourceOver
+
+begin_block postdraw
+
+gradient_clearStops
+gradient_appendStop 0 afff0000
+gradient_appendStop 0.5 cf0000ff
+gradient_appendStop 1 bf00ff00
+
+gradient_setSpread PadSpread
+gradient_setLinear 0 0 100 0
+drawEllipse 10 10 30 30
+drawEllipse 10 60 30 30
+drawEllipse 60 60 30 30
+drawEllipse 60 10 30 30
+drawEllipse 35 35 30 30
+
+# a black rectangle around
+setCompositionMode SourceOver
+setPen black
+setBrush nobrush
+drawRect 0.5 0.5 99 99
+
+end_block
+surface_end
+
+# Destination over
+surface_begin 100 0 100 100
+repeat_block predraw
+setCompositionMode DestinationOver
+repeat_block postdraw
+surface_end
+
+
+# Clear
+surface_begin 200 0 100 100
+repeat_block predraw
+setCompositionMode Clear
+repeat_block postdraw
+surface_end
+
+
+# Source
+surface_begin 300 0 100 100
+repeat_block predraw
+setCompositionMode Source
+repeat_block postdraw
+surface_end
+
+
+# Destination
+surface_begin 400 0 100 100
+repeat_block predraw
+setCompositionMode Destination
+repeat_block postdraw
+surface_end
+
+
+# Source In
+surface_begin 500 0 100 100
+repeat_block predraw
+setCompositionMode SourceIn
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Destination In
+surface_begin 0 100 100 100
+repeat_block predraw
+setCompositionMode DestinationIn
+repeat_block postdraw
+surface_end
+
+
+# Source Out
+surface_begin 100 100 100 100
+repeat_block predraw
+setCompositionMode SourceOut
+repeat_block postdraw
+surface_end
+
+
+# Destination Out
+surface_begin 200 100 100 100
+repeat_block predraw
+setCompositionMode DestinationOut
+repeat_block postdraw
+surface_end
+
+
+# SourceAtop
+surface_begin 300 100 100 100
+repeat_block predraw
+setCompositionMode SourceAtop
+repeat_block postdraw
+surface_end
+
+
+# DestinationAtop
+surface_begin 400 100 100 100
+repeat_block predraw
+setCompositionMode DestinationAtop
+repeat_block postdraw
+surface_end
+
+
+# Xor
+surface_begin 500 100 100 100
+repeat_block predraw
+setCompositionMode Xor
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# Plus
+surface_begin 0 200 100 100
+repeat_block predraw
+setCompositionMode Plus
+repeat_block postdraw
+surface_end
+
+
+# Multiply
+surface_begin 100 200 100 100
+repeat_block predraw
+setCompositionMode Multiply
+repeat_block postdraw
+surface_end
+
+
+# Screen
+surface_begin 200 200 100 100
+repeat_block predraw
+setCompositionMode Screen
+repeat_block postdraw
+surface_end
+
+
+# Overlay
+surface_begin 300 200 100 100
+repeat_block predraw
+setCompositionMode Overlay
+repeat_block postdraw
+surface_end
+
+
+# Darken
+surface_begin 400 200 100 100
+repeat_block predraw
+setCompositionMode Darken
+repeat_block postdraw
+surface_end
+
+
+# Lighten
+surface_begin 500 200 100 100
+repeat_block predraw
+setCompositionMode Lighten
+repeat_block postdraw
+surface_end
+
+translate 0 50
+
+# ColorDodge
+surface_begin 0 300 100 100
+repeat_block predraw
+setCompositionMode ColorDodge
+repeat_block postdraw
+surface_end
+
+
+# Multiply
+surface_begin 100 300 100 100
+repeat_block predraw
+setCompositionMode ColorBurn
+repeat_block postdraw
+surface_end
+
+
+# Screen
+surface_begin 200 300 100 100
+repeat_block predraw
+setCompositionMode HardLight
+repeat_block postdraw
+surface_end
+
+
+# Overlay
+surface_begin 300 300 100 100
+repeat_block predraw
+setCompositionMode SoftLight
+repeat_block postdraw
+surface_end
+
+
+# Darken
+surface_begin 400 300 100 100
+repeat_block predraw
+setCompositionMode Difference
+repeat_block postdraw
+surface_end
+
+
+# Lighten
+surface_begin 500 300 100 100
+repeat_block predraw
+setCompositionMode Exclusion
+repeat_block postdraw
+surface_end
+
+resetMatrix
+
+drawText 0 50 "SourceOver"
+drawText 100 50 "DestinationOver"
+drawText 200 50 "Clear"
+drawText 300 50 "Source"
+drawText 400 50 "Destination"
+drawText 500 50 "SourceIn"
+drawText 0 200 "DestinationIn"
+drawText 100 200 "SourceOut"
+drawText 200 200 "DestinationOut"
+drawText 300 200 "SourceAtop"
+drawText 400 200 "DestinationAtop"
+drawText 500 200 "Xor"
+drawText 0 350 "Plus"
+drawText 100 350 "Multiply"
+drawText 200 350 "Screen"
+drawText 300 350 "Overlay"
+drawText 400 350 "Darken"
+drawText 500 350 "Lighten"
+drawText 0 500 "ColorDodge"
+drawText 100 500 "ColorBurn"
+drawText 200 500 "HardLight"
+drawText 300 500 "SoftLight"
+drawText 400 500 "Difference"
+drawText 500 500 "Exclusion" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/primitives.qps b/tests/auto/lancelot/scripts/primitives.qps
new file mode 100644
index 0000000000..f44ba27566
--- /dev/null
+++ b/tests/auto/lancelot/scripts/primitives.qps
@@ -0,0 +1,184 @@
+# Version: 1#Version: 1
+# CheckVsReference: 5%
+
+
+# CheckVsReference: 5%
+
+setBrush #ff7f7fff
+setPen black 1 solidline
+translate 20 20
+begin_block testblock
+save
+drawRect 0 0 10 10
+drawRect 20 0 20 10
+drawRect 0 20 10 20
+drawRect 20 20 20 20
+translate 50 0
+setPen NoPen
+drawRect 0 0 10 10
+drawRect 20 0 20 10
+drawRect 0 20 10 20
+drawRect 20 20 20 20
+restore
+save
+translate 0 50
+drawEllipse 0 0 10 10
+drawEllipse 20 0 20 10
+drawEllipse 0 20 10 20
+drawEllipse 20 20 20 20
+translate 50 0
+setPen NoPen
+drawEllipse 0 0 10 10
+drawEllipse 20 0 20 10
+drawEllipse 0 20 10 20
+drawEllipse 20 20 20 20
+restore
+save
+translate 0 100
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ]
+save
+translate 0 50
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ] Winding
+translate 0 45
+drawPolyline [ 0 0 50 0 25 25 ]
+restore
+setPen NoPen
+translate 50 0
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ]
+save
+translate 0 50
+drawPolygon [ 0 0 30 0 30 30 10 30 10 10 40 10 40 40 0 40 ] Winding
+restore
+save
+translate -20 100
+drawPie 0 0 50 50 0 1500
+restore
+restore
+end_block
+setPen black 1 SolidLine FlatCap
+translate 200 0
+scale 2 1
+rotate 10
+repeat_block testblock
+resetMatrix
+translate 0 250
+setBrush 7f7f7fff
+translate 20 20
+repeat_block testblock
+setPen black 1 SolidLine FlatCap
+translate 200 0
+scale 2 1
+rotate 10
+repeat_block testblock
+resetMatrix
+save
+setRenderHint LineAntialiasing
+setBrush 7f7fff
+translate 20 500
+repeat_block testblock
+translate 200 0
+scale 2 1
+rotate 10
+repeat_block testblock
+restore
+setRenderHint LineAntialiasing false
+translate 420 20
+begin_block lines
+drawLine 0 0 100 0
+drawLine 0 0 100 10
+drawLine 0 0 100 20
+drawLine 0 0 100 30
+drawLine 0 0 100 40
+drawLine 0 0 100 50
+drawLine 0 0 100 60
+drawLine 0 0 100 70
+drawLine 0 0 100 80
+drawLine 0 0 100 90
+drawLine 0 0 100 100
+drawLine 0 0 90 100
+drawLine 0 0 80 100
+drawLine 0 0 70 100
+drawLine 0 0 60 100
+drawLine 0 0 50 100
+drawLine 0 0 40 100
+drawLine 0 0 30 100
+drawLine 0 0 20 100
+drawLine 0 0 10 100
+drawLine 0 0 0 100
+end_block
+setRenderHint LineAntialiasing
+translate 0 120
+repeat_block lines
+translate 0 120
+scale 5 2
+repeat_block lines
+resetMatrix
+translate 420 500
+begin_block roundedrects
+save
+drawRoundedRect 0 0 50 30 5 5
+translate 60 0
+drawRoundedRect 0 0 50 30 7.5 7.5
+translate 60 0
+drawRoundedRect 0 0 50 30 10 10
+translate 60 0
+drawRoundedRect 0 0 50 30 12.5 12.5
+translate 60 0
+drawRoundedRect 0 0 50 30 15 15
+restore
+save
+translate 0 40
+drawRoundedRect 0 0 50 30 20 20 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 40 40 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 60 60 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 80 80 RelativeSize
+translate 60 0
+drawRoundedRect 0 0 50 30 100 100 RelativeSize
+restore
+end_block
+translate 0.5 80.5
+repeat_block roundedrects
+translate -0.5 79.5
+setRenderHint Antialiasing off
+repeat_block roundedrects
+resetMatrix
+setRenderHint Antialiasing off
+setPen black 1
+begin_block drawShapes
+translate 550.5 25
+rotate 45
+setBrush nobrush
+drawEllipse -10 -10 20 20
+drawLine 10 0 50 0
+drawRect 50 -7 14 14
+resetMatrix
+end_block
+setPen black 2
+translate 25 0
+repeat_block drawShapes
+setPen black 3
+translate 50 0
+repeat_block drawShapes
+setPen black 4
+translate 75 0
+repeat_block drawShapes
+resetMatrix
+setRenderHint Antialiasing off
+setPen nopen
+translate 550 100
+setBrush #7f7f7fff
+drawRect -0.5 -0.5 21 21
+setBrush red
+drawEllipse 0 0 20 20
+setBrush nobrush
+setPen black
+drawEllipse 0 0 20 20
+translate 25 0
+setPen nopen
+setBrush #7f7f7fff
+drawRect 0 0 20 20
+setBrush red
+drawEllipse 0 0 20 20 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/radial_gradients.qps b/tests/auto/lancelot/scripts/radial_gradients.qps
new file mode 100644
index 0000000000..b55df8bde6
--- /dev/null
+++ b/tests/auto/lancelot/scripts/radial_gradients.qps
@@ -0,0 +1,99 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 600 400)
+
+path_addRect path 400 0 80 80
+path_addEllipse path 440 40 60 60
+
+setRenderHint Antialiasing
+
+setPen black
+
+begin_block gradients
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setRadial 20 20 50 40 40
+drawRect 0 0 100 100
+
+gradient_setSpread ReflectSpread
+gradient_setRadial 120 20 50 140 40
+drawEllipse 100 0 100 100
+
+gradient_setSpread RepeatSpread
+gradient_setRadial 220 20 50 240 40
+drawRoundRect 200 0 100 100
+
+gradient_clearStops
+gradient_appendStop 0 3f7f7fff
+gradient_appendStop 0.5 dfdfffff
+gradient_appendStop 1 7f00007f
+
+gradient_setSpread PadSpread
+gradient_setRadial 320 20 50 340 40
+drawPolygon [300 0 390 0 350 99]
+
+gradient_setSpread ReflectSpread
+gradient_setRadial 420 20 50 440 40
+drawPath path
+
+gradient_setSpread RepeatSpread
+gradient_setRadial 520 20 50 540 40
+drawPie 500 0 100 100 720 4320
+end_block
+
+translate 0 100
+scale 1 2
+repeat_block gradients
+
+resetMatrix
+translate 0 300
+brushTranslate 30 0
+brushScale 0.9 0.9
+brushRotate 20
+repeat_block gradients
+
+# Some helpful info perhaps?
+resetMatrix
+setPen black
+
+drawText 610 50 "No XForm"
+drawText 610 200 "scale 1x2"
+drawText 610 300 "brush transform"
+drawText 10 450 "Pad"
+drawText 110 450 "Reflect"
+drawText 210 450 "Repeat"
+drawText 310 450 "Pad w/alpha"
+drawText 410 450 "Reflect w/alpha"
+drawText 510 450 "Repeat w/alpha"
+
+# Radius and focal indicators
+setPen 3f000000
+setBrush nobrush
+
+begin_block ellipse_draw
+setClipRect 0 0 100 100
+drawEllipse -30 -30 100 100
+drawEllipse 35 35 11 11
+translate 100 0
+end_block
+
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+
+resetMatrix
+translate 0 100
+scale 1 2
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw
+repeat_block ellipse_draw \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/radial_gradients_perspectives.qps b/tests/auto/lancelot/scripts/radial_gradients_perspectives.qps
new file mode 100644
index 0000000000..4557354dce
--- /dev/null
+++ b/tests/auto/lancelot/scripts/radial_gradients_perspectives.qps
@@ -0,0 +1,62 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen #00ff00
+
+translate 10 10
+# standard draw
+begin_block gradient
+gradient_clearStops
+gradient_appendStop 0 red
+gradient_appendStop 0.25 orange
+gradient_appendStop 0.5 yellow
+gradient_appendStop 0.8 green
+gradient_appendStop 1 cyan
+
+gradient_setSpread PadSpread
+gradient_setRadial 110 100 230 230 240
+drawRect 0 0 300 300
+end_block gradient
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block gradient
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block gradient
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block gradient
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/rasterops.qps b/tests/auto/lancelot/scripts/rasterops.qps
new file mode 100644
index 0000000000..21f943b543
--- /dev/null
+++ b/tests/auto/lancelot/scripts/rasterops.qps
@@ -0,0 +1,87 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setPen NoPen
+
+setBrush black
+drawRect 10 10 60 500
+
+setCompositionMode SourceOrDestination
+translate 20 20
+
+begin_block drawShape
+ setBrush 0xffff0000
+ drawEllipse 5 5 30 30
+ setBrush 0xff00ff00
+ drawRect 0 0 20 20
+ setBrush 0xff0000ff
+ drawRect 20 20 20 20
+end_block
+
+begin_block loop
+ setCompositionMode SourceAndDestination
+ translate 0 50
+repeat_block drawShape
+
+setCompositionMode SourceXorDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceAndNotDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceOrNotDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceXorDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSource
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode NotSourceAndDestination
+translate 0 50
+repeat_block drawShape
+
+setCompositionMode SourceAndNotDestination
+translate 0 50
+repeat_block drawShape
+end_block
+
+resetMatrix
+setCompositionMode Source
+setBrush white
+drawRect 100 10 60 500
+translate 110 20
+repeat_block loop
+
+resetMatrix
+setCompositionMode Source
+translate 190 20
+repeat_block loop
+
+resetMatrix
+setPen black
+setCompositionMode SourceOver
+translate 250 45
+drawText 20 0 "Or ROP"
+translate 0 50
+drawText 20 0 "And ROP"
+translate 0 50
+drawText 20 0 "Xor ROP"
+translate 0 50
+drawText 20 0 "Nor ROP"
+translate 0 50
+drawText 20 0 "Nand ROP"
+translate 0 50
+drawText 0 0 "NSrcXorDst ROP"
+translate 0 50
+drawText 20 0 "NSrc ROP"
+translate 0 50
+drawText 0 0 "NSrcAndDst ROP"
+translate 0 50
+drawText 0 0 "SrcAndNDst ROP" \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/sizes.qps b/tests/auto/lancelot/scripts/sizes.qps
new file mode 100644
index 0000000000..268808ec09
--- /dev/null
+++ b/tests/auto/lancelot/scripts/sizes.qps
@@ -0,0 +1,150 @@
+# Version: 1
+# CheckVsReference: 5%
+
+setPen NoPen
+setBrush black
+
+translate 10 10
+
+begin_block testblock
+drawRect 0 0 10 10
+drawRect 20 0 11 11
+drawRect 40 0 12 12
+drawRect 60 0 13 13
+drawRect 80 0 14 14
+drawRect 100 0 15 15
+drawRect 120 0 16 16
+drawRect 140 0 17 17
+drawRect 160 0 18 18
+drawRect 180 0 19 19
+# qt3_drawRect 200 0 10 10
+# qt3_drawRect 220 0 11 11
+# qt3_drawRect 240 0 12 12
+# qt3_drawRect 260 0 13 13
+# qt3_drawRect 280 0 14 14
+# qt3_drawRect 300 0 15 15
+# qt3_drawRect 320 0 16 16
+# qt3_drawRect 340 0 17 17
+# qt3_drawRect 360 0 18 18
+# qt3_drawRect 380 0 19 19
+
+drawEllipse 0 20 10 10
+drawEllipse 20 20 11 11
+drawEllipse 40 20 12 12
+drawEllipse 60 20 13 13
+drawEllipse 80 20 14 14
+drawEllipse 100 20 15 15
+drawEllipse 120 20 16 16
+drawEllipse 140 20 17 17
+drawEllipse 160 20 18 18
+drawEllipse 180 20 19 19
+# qt3_drawEllipse 200 20 10 10
+# qt3_drawEllipse 220 20 11 11
+# qt3_drawEllipse 240 20 12 12
+# qt3_drawEllipse 260 20 13 13
+# qt3_drawEllipse 280 20 14 14
+# qt3_drawEllipse 300 20 15 15
+# qt3_drawEllipse 320 20 16 16
+# qt3_drawEllipse 340 20 17 17
+# qt3_drawEllipse 360 20 18 18
+# qt3_drawEllipse 380 20 19 19
+
+drawRoundRect 0 40 10 10
+drawRoundRect 20 40 11 11
+drawRoundRect 40 40 12 12
+drawRoundRect 60 40 13 13
+drawRoundRect 80 40 14 14
+drawRoundRect 100 40 15 15
+drawRoundRect 120 40 16 16
+drawRoundRect 140 40 17 17
+drawRoundRect 160 40 18 18
+drawRoundRect 180 40 19 19
+# qt3_drawRoundRect 200 40 10 10
+# qt3_drawRoundRect 220 40 11 11
+# qt3_drawRoundRect 240 40 12 12
+# qt3_drawRoundRect 260 40 13 13
+# qt3_drawRoundRect 280 40 14 14
+# qt3_drawRoundRect 300 40 15 15
+# qt3_drawRoundRect 320 40 16 16
+# qt3_drawRoundRect 340 40 17 17
+# qt3_drawRoundRect 360 40 18 18
+# qt3_drawRoundRect 380 40 19 19
+
+drawPie 0 60 10 10 0 4320
+drawPie 20 60 11 11 0 4320
+drawPie 40 60 12 12 0 4320
+drawPie 60 60 13 13 0 4320
+drawPie 80 60 14 14 0 4320
+drawPie 100 60 15 15 0 4320
+drawPie 120 60 16 16 0 4320
+drawPie 140 60 17 17 0 4320
+drawPie 160 60 18 18 0 4320
+drawPie 180 60 19 19 0 4320
+# qt3_drawPie 200 60 10 10 0 4320
+# qt3_drawPie 220 60 11 11 0 4320
+# qt3_drawPie 240 60 12 12 0 4320
+# qt3_drawPie 260 60 13 13 0 4320
+# qt3_drawPie 280 60 14 14 0 4320
+# qt3_drawPie 300 60 15 15 0 4320
+# qt3_drawPie 320 60 16 16 0 4320
+# qt3_drawPie 340 60 17 17 0 4320
+# qt3_drawPie 360 60 18 18 0 4320
+# qt3_drawPie 380 60 19 19 0 4320
+
+drawArc 0 80 10 10 0 4320
+drawArc 20 80 11 11 0 4320
+drawArc 40 80 12 12 0 4320
+drawArc 60 80 13 13 0 4320
+drawArc 80 80 14 14 0 4320
+drawArc 100 80 15 15 0 4320
+drawArc 120 80 16 16 0 4320
+drawArc 140 80 17 17 0 4320
+drawArc 160 80 18 18 0 4320
+drawArc 180 80 19 19 0 4320
+# qt3_drawArc 200 80 10 10 0 4320
+# qt3_drawArc 220 80 11 11 0 4320
+# qt3_drawArc 240 80 12 12 0 4320
+# qt3_drawArc 260 80 13 13 0 4320
+# qt3_drawArc 280 80 14 14 0 4320
+# qt3_drawArc 300 80 15 15 0 4320
+# qt3_drawArc 320 80 16 16 0 4320
+# qt3_drawArc 340 80 17 17 0 4320
+# qt3_drawArc 360 80 18 18 0 4320
+# qt3_drawArc 380 80 19 19 0 4320
+
+drawChord 0 100 10 10 0 4320
+drawChord 20 100 11 11 0 4320
+drawChord 40 100 12 12 0 4320
+drawChord 60 100 13 13 0 4320
+drawChord 80 100 14 14 0 4320
+drawChord 100 100 15 15 0 4320
+drawChord 120 100 16 16 0 4320
+drawChord 140 100 17 17 0 4320
+drawChord 160 100 18 18 0 4320
+drawChord 180 100 19 19 0 4320
+# qt3_drawChord 200 100 10 10 0 4320
+# qt3_drawChord 220 100 11 11 0 4320
+# qt3_drawChord 240 100 12 12 0 4320
+# qt3_drawChord 260 100 13 13 0 4320
+# qt3_drawChord 280 100 14 14 0 4320
+# qt3_drawChord 300 100 15 15 0 4320
+# qt3_drawChord 320 100 16 16 0 4320
+# qt3_drawChord 340 100 17 17 0 4320
+# qt3_drawChord 360 100 18 18 0 4320
+# qt3_drawChord 380 100 19 19 0 4320
+
+end_block
+
+setPen red
+translate 0 150
+repeat_block testblock
+
+setRenderHint LineAntialiasing
+
+setPen nopen
+translate 0 150
+repeat_block testblock
+
+setPen red
+translate 0 150
+repeat_block testblock
diff --git a/tests/auto/lancelot/scripts/text.qps b/tests/auto/lancelot/scripts/text.qps
new file mode 100644
index 0000000000..d7ee83290b
--- /dev/null
+++ b/tests/auto/lancelot/scripts/text.qps
@@ -0,0 +1,124 @@
+# Version: 1
+
+drawText -5 5 "Text that is drawn outside the bounds..."
+
+translate 20 20
+begin_block text_drawing
+save
+ setFont "sansserif" 10 normal
+ drawText 0 20 "sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawText 0 60 "sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "sansserif 10pt, bold italic"
+
+
+ translate 0 100
+ setPen #7fff0000
+
+ setFont "sansserif" 10 normal
+ drawText 0 20 "alpha sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "alpha sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawText 0 60 "alpha sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "alpha sansserif 10pt, bold italic"
+
+
+ translate 0 100
+ setPen black
+ save
+ scale 0.9 0.9
+
+ setFont "sansserif" 10 normal
+ drawText 0 20 "scaled sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "scaled sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawText 0 60 "scaled sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "scaled sansserif 10pt, bold italic"
+ restore
+
+ translate 0 100
+ setPen black
+ save
+ translate 200 90
+ rotate 185
+
+ setFont "sansserif" 10 normal
+ drawText 0 20 "scaled sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 40 "scaled sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawText 0 60 "scaled sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 80 "scaled sansserif 10pt, bold italic"
+ restore
+
+ translate 0 100
+ gradient_appendStop 0 red
+ gradient_appendStop 0.5 #00ff00
+ gradient_appendStop 1 blue
+ gradient_setLinear 0 0 200 0
+ setPen brush
+
+ setFont "sansserif" 10 normal
+ drawText 0 0 "gradient sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawText 0 20 "gradient sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawText 0 40 "gradient sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawText 0 60 "gradient sansserif 10pt, bold italic"
+restore
+end_block
+
+translate 250 0
+drawText 25 520 "clipped to rectangle"
+save
+ setPen #3f000000
+ setBrush nobrush
+ drawRect 20 0 100 500
+ setClipRect 20 0 100 500
+ setPen black
+ repeat_block text_drawing
+restore
+
+translate 150 0
+drawText 25 520 "clipped to path"
+save
+ path_moveTo clip 20 0
+ path_cubicTo clip 0 200 40 400 20 400
+ path_lineTo clip 30 500
+ path_lineTo clip 30 0
+ path_lineTo clip 40 0
+ path_lineTo clip 40 500
+ path_lineTo clip 120 500
+ path_lineTo clip 120 0
+ path_lineTo clip 20 0
+ setPen #3f000000
+ setBrush nobrush
+ drawPath clip
+ setClipPath clip
+ setPen black
+ repeat_block text_drawing
+restore \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/text_perspectives.qps b/tests/auto/lancelot/scripts/text_perspectives.qps
new file mode 100644
index 0000000000..4c74306265
--- /dev/null
+++ b/tests/auto/lancelot/scripts/text_perspectives.qps
@@ -0,0 +1,102 @@
+# Version: 1
+
+
+setRenderHint Antialiasing
+
+setPen black
+
+translate 10 10
+# standard draw
+begin_block text
+setBrush gray
+drawRect 0 0 300 300
+
+setFont "times" 3
+drawText 10 10 "Hello World...."
+
+setFont "times" 4
+drawText 10 20 "Hello World...."
+
+setFont "times" 5
+drawText 10 30 "Hello World...."
+
+setFont "times" 6
+drawText 10 40 "Hello World...."
+
+setFont "times" 7
+drawText 10 50 "Hello World...."
+
+setFont "times" 8
+drawText 10 60 "Hello World...."
+
+setFont "times" 9
+drawText 10 70 "Hello World...."
+
+setFont "times" 10
+drawText 10 80 "Hello World...."
+
+setFont "times" 16
+drawText 10 100 "Hello World...."
+
+setFont "times" 17
+drawText 10 120 "Hello World...."
+
+setFont "times" 18
+drawText 10 140 "Hello World...."
+
+setFont "times" 20
+drawText 10 160 "Hello World...."
+
+setFont "times" 22
+drawText 10 180 "Hello World...."
+
+setFont "times" 24
+drawText 10 205 "Hello World...."
+
+setFont "times" 26
+drawText 10 230 "Hello World...."
+
+setFont "times" 32
+drawText 10 260 "Hello World...."
+end_block text
+
+# Rotation w/o smooth xform
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 50 0 200 300 300 300 0
+ repeat_block text
+restore
+restore
+
+translate 0 320
+
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 100 300 200 300 300 0
+ repeat_block text
+restore
+
+save
+translate 350 0
+save
+ setRenderHint SmoothPixmapTransform on
+ mapQuadToQuad 0 0 0 300 300 300 300 0 0 0 0 300 300 250 300 50
+ repeat_block text
+restore
+restore
+
+
+resetMatrix
+setPen black
+translate 125 20
+drawText 0 0 "No transform"
+translate 350 0
+drawText 0 0 "Left Tilted"
+resetMatrix
+translate 125 350
+drawText 0 0 "Bottom Tilted"
+translate 350 0
+drawText 0 0 "Right Tilted"
+translate 120 0 \ No newline at end of file
diff --git a/tests/auto/lancelot/scripts/tiled_pixmap.qps b/tests/auto/lancelot/scripts/tiled_pixmap.qps
new file mode 100644
index 0000000000..9cb5e0dd1f
--- /dev/null
+++ b/tests/auto/lancelot/scripts/tiled_pixmap.qps
@@ -0,0 +1,84 @@
+# Version: 1
+# CheckVsReference: 5% (0 0 639 638)
+
+
+translate 0 10
+setRenderHint Antialiasing
+
+pixmap_load dome_argb32 the_pixmap
+
+begin_block draw_stuff
+save
+
+ # Standard draw
+ drawTiledPixmap the_pixmap 0 0 150 100 0 0
+
+ # Standard draw with offset
+ translate 160 0
+ drawTiledPixmap the_pixmap 0 0 150 100 25 25
+
+ # xformed
+ translate 160 0
+ save
+ translate 10 -10
+ rotate 10
+ setRenderHint SmoothPixmapTransform false
+ drawTiledPixmap the_pixmap 0 0 150 100 25 25
+ restore
+
+ # xformed with smooth xform
+ translate 160 0
+ save
+ translate 10 -10
+ rotate 10
+ setRenderHint SmoothPixmapTransform
+ drawTiledPixmap the_pixmap 0 0 150 100 25 25
+ restore
+restore
+end_block
+
+translate 0 120
+pixmap_load dome_rgb32 the_pixmap
+repeat_block draw_stuff
+
+
+translate 0 120
+pixmap_load dome_indexed the_pixmap
+repeat_block draw_stuff
+
+
+translate 0 120
+pixmap_load dome_indexed_mask the_pixmap
+repeat_block draw_stuff
+
+
+translate 0 120
+pixmap_load dome_mono the_pixmap
+repeat_block draw_stuff
+
+
+################################################################################
+# Some helpful text...
+#
+
+resetMatrix
+translate 650 80
+drawText 0 0 "32 bit w/alpha"
+translate 0 120
+drawText 0 0 "32 bit w/o alpha"
+translate 0 120
+drawText 0 0 "8 bit indexed"
+translate 0 120
+drawText 0 0 "8 bit indexed w/mask"
+translate 0 120
+drawText 0 0 "1 bit"
+
+resetMatrix
+translate 10 630
+drawText 0 0 "normal"
+translate 160 0
+drawText 0 0 "offset"
+translate 160 0
+drawText 0 0 "xformed"
+translate 160 0
+drawText 0 0 "smooth xformed"
diff --git a/tests/auto/lancelot/tst_lancelot.cpp b/tests/auto/lancelot/tst_lancelot.cpp
new file mode 100644
index 0000000000..8467672195
--- /dev/null
+++ b/tests/auto/lancelot/tst_lancelot.cpp
@@ -0,0 +1,301 @@
+/****************************************************************************
+**
+** 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 <paintcommands.h>
+#include <QPainter>
+#include <QLibraryInfo>
+#include <baselineprotocol.h>
+#include <QHash>
+
+#ifndef QT_NO_OPENGL
+#include <QtOpenGL>
+#endif
+
+#ifndef SRCDIR
+#define SRCDIR "."
+#endif
+
+static const QLatin1String scriptsDir(SRCDIR "/scripts/");
+
+class tst_Lancelot : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_Lancelot();
+
+private:
+ ImageItem render(const ImageItem &item);
+ void paint(QPaintDevice *device, const QStringList &script, const QString &filePath);
+ void runTestSuite();
+ bool setupTestSuite(ImageItem::GraphicsEngine engine, QImage::Format format, const QStringList& blacklist);
+
+ BaselineProtocol proto;
+ ImageItemList baseList;
+ QHash<QString, QStringList> scripts;
+ bool dryRunMode;
+
+private slots:
+ void initTestCase();
+ void cleanupTestCase() {}
+
+ void testRasterARGB32PM_data();
+ void testRasterARGB32PM();
+ void testRasterRGB32_data();
+ void testRasterRGB32();
+ void testRasterRGB16_data();
+ void testRasterRGB16();
+
+#ifndef QT_NO_OPENGL
+ void testOpenGL_data();
+ void testOpenGL();
+#endif
+};
+
+tst_Lancelot::tst_Lancelot()
+{
+}
+
+void tst_Lancelot::initTestCase()
+{
+ // Check and setup the environment. We treat failures because of test environment
+ // (e.g. script files not found) as just warnings, and not QFAILs, to avoid false negatives
+ // caused by environment or server instability
+
+#if defined(Q_OS_SOMEPLATFORM)
+ QSKIP("This test is not supported on this platform.", SkipAll);
+#endif
+ if (!proto.connect(&dryRunMode))
+ QSKIP(qPrintable(proto.errorMessage()), SkipAll);
+
+ QDir qpsDir(scriptsDir);
+ QStringList files = qpsDir.entryList(QStringList() << QLatin1String("*.qps"), QDir::Files | QDir::Readable);
+ if (files.isEmpty()) {
+ QWARN("No qps script files found in " + qpsDir.path().toLatin1());
+ QSKIP("Aborted due to errors.", SkipAll);
+ }
+
+ baseList.resize(files.count());
+ ImageItemList::iterator it = baseList.begin();
+ foreach(const QString& fileName, files) {
+ QFile file(scriptsDir + fileName);
+ file.open(QFile::ReadOnly);
+ QByteArray cont = file.readAll();
+ scripts.insert(fileName, QString::fromLatin1(cont).split(QLatin1Char('\n'), QString::SkipEmptyParts));
+ it->scriptName = fileName;
+ it->scriptChecksum = qChecksum(cont.constData(), cont.size());
+ it++;
+ }
+}
+
+
+void tst_Lancelot::testRasterARGB32PM_data()
+{
+ QStringList localBlacklist;
+ if (!setupTestSuite(ImageItem::Raster, QImage::Format_ARGB32_Premultiplied, localBlacklist))
+ QSKIP("Communication with baseline image server failed.", SkipAll);
+}
+
+
+void tst_Lancelot::testRasterARGB32PM()
+{
+ runTestSuite();
+}
+
+
+void tst_Lancelot::testRasterRGB32_data()
+{
+ QStringList localBlacklist;
+ if (!setupTestSuite(ImageItem::Raster, QImage::Format_RGB32, localBlacklist))
+ QSKIP("Communication with baseline image server failed.", SkipAll);
+}
+
+
+void tst_Lancelot::testRasterRGB32()
+{
+ runTestSuite();
+}
+
+
+void tst_Lancelot::testRasterRGB16_data()
+{
+ QStringList localBlacklist;
+ if (!setupTestSuite(ImageItem::Raster, QImage::Format_RGB16, localBlacklist))
+ QSKIP("Communication with baseline image server failed.", SkipAll);
+}
+
+
+void tst_Lancelot::testRasterRGB16()
+{
+ runTestSuite();
+}
+
+
+#ifndef QT_NO_OPENGL
+void tst_Lancelot::testOpenGL_data()
+{
+ QStringList localBlacklist = QStringList() << QLatin1String("rasterops.qps");
+ if (!setupTestSuite(ImageItem::OpenGL, QImage::Format_RGB32, localBlacklist))
+ QSKIP("Communication with baseline image server failed.", SkipAll);
+}
+
+
+void tst_Lancelot::testOpenGL()
+{
+ bool ok = false;
+ QGLWidget glWidget;
+ if (glWidget.isValid() && glWidget.format().directRendering()
+ && ((QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_0)
+ || (QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0))
+ && QGLFramebufferObject::hasOpenGLFramebufferObjects())
+ {
+ glWidget.makeCurrent();
+ if (!QByteArray((const char *)glGetString(GL_VERSION)).contains("Mesa"))
+ ok = true;
+ }
+ if (ok)
+ runTestSuite();
+ else
+ QSKIP("System under test does not meet preconditions for GL testing. Skipping.", SkipAll);
+}
+#endif
+
+
+bool tst_Lancelot::setupTestSuite(ImageItem::GraphicsEngine engine, QImage::Format format, const QStringList& blacklist)
+{
+ QTest::addColumn<ImageItem>("baseline");
+
+ ImageItemList itemList(baseList);
+
+ for(ImageItemList::iterator it = itemList.begin(); it != itemList.end(); it++) {
+ it->engine = engine;
+ it->renderFormat = format;
+ }
+
+ if (!proto.requestBaselineChecksums(&itemList)) {
+ QWARN(qPrintable(proto.errorMessage()));
+ return false;
+ }
+
+ foreach(const ImageItem& item, itemList) {
+ if (!blacklist.contains(item.scriptName))
+ QTest::newRow(item.scriptName.toLatin1()) << item;
+ }
+ return true;
+}
+
+
+void tst_Lancelot::runTestSuite()
+{
+ QFETCH(ImageItem, baseline);
+
+ if (baseline.status == ImageItem::IgnoreItem)
+ QSKIP("Blacklisted by baseline server.", SkipSingle);
+
+ ImageItem rendered = render(baseline);
+ if (rendered.image.isNull()) { // Assume an error in the test environment, not Qt
+ QWARN("Error: Failed to render image.");
+ QSKIP("Aborted due to errors.", SkipSingle);
+ }
+
+ if (baseline.status == ImageItem::BaselineNotFound) {
+ proto.submitNewBaseline(rendered, 0);
+ QSKIP("Baseline not found; new baseline created.", SkipSingle);
+ }
+
+ if (!baseline.imageChecksums.contains(rendered.imageChecksums.at(0))) {
+ QByteArray serverMsg;
+ if (!proto.submitMismatch(rendered, &serverMsg))
+ serverMsg = "Failed to submit mismatching image to server.";
+ if (dryRunMode)
+ qDebug() << "Dryrun mode, ignoring detected mismatch." << serverMsg;
+ else
+ QFAIL("Rendered image differs from baseline.\n" + serverMsg);
+ }
+}
+
+
+ImageItem tst_Lancelot::render(const ImageItem &item)
+{
+ ImageItem res = item;
+ res.imageChecksums.clear();
+ res.image = QImage();
+ QString filePath = scriptsDir + item.scriptName;
+ QStringList script = scripts.value(item.scriptName);
+
+ if (item.engine == ImageItem::Raster) {
+ QImage img(800, 800, item.renderFormat);
+ paint(&img, script, QFileInfo(filePath).absoluteFilePath()); // eh yuck (filePath stuff)
+ res.image = img;
+ res.imageChecksums.append(ImageItem::computeChecksum(img));
+#ifndef QT_NO_OPENGL
+ } else if (item.engine == ImageItem::OpenGL) {
+ QGLWidget glWidget;
+ if (glWidget.isValid()) {
+ glWidget.makeCurrent();
+ QGLFramebufferObjectFormat fboFormat;
+ fboFormat.setSamples(16);
+ fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+ QGLFramebufferObject fbo(800, 800, fboFormat);
+ paint(&fbo, script, QFileInfo(filePath).absoluteFilePath()); // eh yuck (filePath stuff)
+ res.image = fbo.toImage().convertToFormat(item.renderFormat);
+ res.imageChecksums.append(ImageItem::computeChecksum(res.image));
+ }
+#endif
+ }
+
+ return res;
+}
+
+void tst_Lancelot::paint(QPaintDevice *device, const QStringList &script, const QString &filePath)
+{
+ QPainter p(device);
+ PaintCommands pcmd(script, 800, 800);
+ pcmd.setType(ImageType);
+ pcmd.setPainter(&p);
+ pcmd.setFilePath(filePath);
+ pcmd.runCommands();
+ p.end();
+}
+
+QTEST_MAIN(tst_Lancelot)
+#include "tst_lancelot.moc"
diff --git a/tests/auto/mediaobject/mediaobject.pro b/tests/auto/mediaobject/mediaobject.pro
index e887df427d..ea78e63cfa 100755
--- a/tests/auto/mediaobject/mediaobject.pro
+++ b/tests/auto/mediaobject/mediaobject.pro
@@ -15,7 +15,7 @@ wince*{
}
symbian:{
- addFiles.sources = media/test.sdp
+ addFiles.files = media/test.sdp
addFiles.path = media
DEPLOYMENT += addFiles
}
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/moc/moc.pro b/tests/auto/moc/moc.pro
index a89ff07e78..4fb9ac4f5a 100644
--- a/tests/auto/moc/moc.pro
+++ b/tests/auto/moc/moc.pro
@@ -17,7 +17,7 @@ HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-n
escapes-in-string-literals.h cstyle-enums.h qprivateslots.h gadgetwithnoenums.h \
dir-in-include-path.h single_function_keyword.h task192552.h task189996.h \
task234909.h task240368.h pure-virtual-signals.h
-if(*-g++*|*-icc*):!irix-*:!win32-*: HEADERS += os9-newlines.h win-newlines.h
+if(*-g++*|*-icc*|*-clang|*-llvm):!irix-*:!win32-*: HEADERS += os9-newlines.h win-newlines.h
SOURCES += tst_moc.cpp
QT += sql network svg
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/networkselftest/networkselftest.pro b/tests/auto/networkselftest/networkselftest.pro
index 2217a32df8..98e981c5c0 100644
--- a/tests/auto/networkselftest/networkselftest.pro
+++ b/tests/auto/networkselftest/networkselftest.pro
@@ -4,12 +4,12 @@ SOURCES += tst_networkselftest.cpp
QT = core network
wince*: {
- addFiles.sources = rfc3252.txt
+ addFiles.files = rfc3252.txt
addFiles.path = .
DEPLOYMENT += addFiles
DEFINES += SRCDIR=\\\"\\\"
} else:symbian {
- addFiles.sources = rfc3252.txt
+ addFiles.files = rfc3252.txt
addFiles.path = .
DEPLOYMENT += addFiles
} else:vxworks*: {
diff --git a/tests/auto/other.pro b/tests/auto/other.pro
index 3c8f856a6b..d1a7a861b8 100644
--- a/tests/auto/other.pro
+++ b/tests/auto/other.pro
@@ -4,6 +4,7 @@
TEMPLATE=subdirs
SUBDIRS=\
# exceptionsafety_objects \ shouldn't enable it
+ lancelot \
qaccessibility \
qalgorithms \
qcombobox \
diff --git a/tests/auto/patternistexamples/patternistexamples.pro b/tests/auto/patternistexamples/patternistexamples.pro
index f83e0aab39..098b0fe933 100644
--- a/tests/auto/patternistexamples/patternistexamples.pro
+++ b/tests/auto/patternistexamples/patternistexamples.pro
@@ -2,17 +2,17 @@ load(qttest_p4)
SOURCES += tst_patternistexamples.cpp
CONFIG += qtestlib
wince*|symbian: {
- snippets.sources = $$QT_SOURCE_TREE/doc/src/snippets/patternist/*
+ snippets.files = $$QT_SOURCE_TREE/doc/src/snippets/patternist/*
snippets.path = patternist
- widgetRen.sources = $$QT_SOURCE_TREE/examples/xmlpatterns/xquery/widgetRenderer/*
+ widgetRen.files = $$QT_SOURCE_TREE/examples/xmlpatterns/xquery/widgetRenderer/*
widgetRen.path = widgetRenderer
- globVar.sources = $$QT_SOURCE_TREE/examples/xmlpatterns/xquery/globalVariables/*
+ globVar.files = $$QT_SOURCE_TREE/examples/xmlpatterns/xquery/globalVariables/*
globVar.path = globalVariables
- filetree.sources = $$QT_SOURCE_TREE/examples/xmlpatterns/filetree/*
+ filetree.files = $$QT_SOURCE_TREE/examples/xmlpatterns/filetree/*
filetree.path = filetree
- recipes.sources = $$QT_SOURCE_TREE/examples/xmlpatterns/recipes/*
+ recipes.files = $$QT_SOURCE_TREE/examples/xmlpatterns/recipes/*
recipes.path = recipes
- files.sources = $$QT_SOURCE_TREE/examples/xmlpatterns/recipes/files/*
+ files.files = $$QT_SOURCE_TREE/examples/xmlpatterns/recipes/files/*
files.path = recipes\\files
DEPLOYMENT += snippets widgetRen globVar filetree recipes files
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/q_func_info/q_func_info.pro b/tests/auto/q_func_info/q_func_info.pro
index b30e3fb857..64f08d4d8d 100644
--- a/tests/auto/q_func_info/q_func_info.pro
+++ b/tests/auto/q_func_info/q_func_info.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_q_func_info.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/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/qabstractnetworkcache.pro b/tests/auto/qabstractnetworkcache/qabstractnetworkcache.pro
index 2e2577dcb1..6f5044f6bb 100644
--- a/tests/auto/qabstractnetworkcache/qabstractnetworkcache.pro
+++ b/tests/auto/qabstractnetworkcache/qabstractnetworkcache.pro
@@ -4,7 +4,7 @@ QT -= gui
SOURCES += tst_qabstractnetworkcache.cpp
wince*|symbian: {
- testFiles.sources = tests
+ testFiles.files = tests
testFiles.path = .
DEPLOYMENT += testFiles
}
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/qabstractxmlnodemodel/qabstractxmlnodemodel.pro b/tests/auto/qabstractxmlnodemodel/qabstractxmlnodemodel.pro
index a18f4ca7cc..b8f509dc41 100644
--- a/tests/auto/qabstractxmlnodemodel/qabstractxmlnodemodel.pro
+++ b/tests/auto/qabstractxmlnodemodel/qabstractxmlnodemodel.pro
@@ -7,7 +7,7 @@ HEADERS += TestNodeModel.h LoadingModel.h
include (../xmlpatterns.pri)
wince*: {
- addFiles.sources = tree.xml
+ addFiles.files = tree.xml
addFiles.path = .
DEPLOYMENT += addFiles
diff --git a/tests/auto/qaccessibility/qaccessibility.pro b/tests/auto/qaccessibility/qaccessibility.pro
index 1b30beb302..a4f606c672 100644
--- a/tests/auto/qaccessibility/qaccessibility.pro
+++ b/tests/auto/qaccessibility/qaccessibility.pro
@@ -5,7 +5,7 @@ unix:!mac:LIBS+=-lm
contains(QT_CONFIG, qt3support): QT += qt3support
wince*: {
- accessneeded.sources = $$QT_BUILD_TREE\\plugins\\accessible\\*.dll
+ accessneeded.files = $$QT_BUILD_TREE\\plugins\\accessible\\*.dll
accessneeded.path = accessible
DEPLOYMENT += accessneeded
} \ No newline at end of file
diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp
index 713ad0899b..e331e02308 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/qaction/tst_qaction.cpp b/tests/auto/qaction/tst_qaction.cpp
index 313178edf4..66a1039087 100644
--- a/tests/auto/qaction/tst_qaction.cpp
+++ b/tests/auto/qaction/tst_qaction.cpp
@@ -242,7 +242,7 @@ void tst_QAction::setStandardKeys()
QList<QKeySequence> expected;
#if defined(Q_WS_MAC) || defined(Q_OS_SYMBIAN)
expected << QKeySequence("CTRL+C");
-#elif defined(Q_WS_WIN) || defined(Q_WS_QWS)
+#elif defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_QPA)
expected << QKeySequence("CTRL+C") << QKeySequence("CTRL+INSERT");
#else
expected << QKeySequence("CTRL+C") << QKeySequence("F16") << QKeySequence("CTRL+INSERT");
diff --git a/tests/auto/qalgorithms/tst_qalgorithms.cpp b/tests/auto/qalgorithms/tst_qalgorithms.cpp
index 690bbbd5fd..17e6c0407d 100644
--- a/tests/auto/qalgorithms/tst_qalgorithms.cpp
+++ b/tests/auto/qalgorithms/tst_qalgorithms.cpp
@@ -81,6 +81,7 @@ private slots:
void test_qBinaryFind();
void qBinaryFindOneEntry();
void swap();
+ void swap2();
void sortEmptyList();
void sortedList();
void sortAPItest();
@@ -521,6 +522,28 @@ void tst_QAlgorithms::swap()
}
}
+namespace SwapTest {
+ struct ST { int i; int j; };
+ void swap(ST &a, ST &b) {
+ a.i = b.j;
+ b.i = a.j;
+ }
+}
+
+void tst_QAlgorithms::swap2()
+{
+ {
+#ifndef QT_NO_SQL
+ //check the namespace lookup works correctly
+ SwapTest::ST a = { 45, 65 };
+ SwapTest::ST b = { 48, 68 };
+ qSwap(a, b);
+ QCOMPARE(a.i, 68);
+ QCOMPARE(b.i, 65);
+#endif
+ }
+}
+
void tst_QAlgorithms::sortEmptyList()
{
// Only test if it crashes
diff --git a/tests/auto/qanimationgroup/qanimationgroup.pro b/tests/auto/qanimationgroup/qanimationgroup.pro
index 31667a8388..5e1be0cb10 100644
--- a/tests/auto/qanimationgroup/qanimationgroup.pro
+++ b/tests/auto/qanimationgroup/qanimationgroup.pro
@@ -3,3 +3,4 @@ QT = core
SOURCES += tst_qanimationgroup.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qapplication/test/test.pro b/tests/auto/qapplication/test/test.pro
index e1193c2c35..73799f4e2b 100644
--- a/tests/auto/qapplication/test/test.pro
+++ b/tests/auto/qapplication/test/test.pro
@@ -4,19 +4,19 @@ SOURCES += ../tst_qapplication.cpp
TARGET = ../tst_qapplication
wince* {
- additional.sources = ../desktopsettingsaware/desktopsettingsaware.exe
+ additional.files = ../desktopsettingsaware/desktopsettingsaware.exe
additional.path = desktopsettingsaware
- someTest.sources = test.pro
+ someTest.files = test.pro
someTest.path = test
DEPLOYMENT += additional deploy someTest
}
symbian: {
- additional.sources = $$OUT_PWD/../desktopsettingsaware/desktopsettingsaware.exe
+ additional.files = $$OUT_PWD/../desktopsettingsaware/desktopsettingsaware.exe
additional.path = desktopsettingsaware
- someTest.sources = test.pro
+ someTest.files = test.pro
someTest.path = test
- windowIcon.sources = ../heart.svg
+ windowIcon.files = ../heart.svg
DEPLOYMENT += additional deploy someTest windowIcon
LIBS += -lcone -lavkon
}
diff --git a/tests/auto/qatomicint/qatomicint.pro b/tests/auto/qatomicint/qatomicint.pro
index 4a09d5f176..7850d93dc7 100644
--- a/tests/auto/qatomicint/qatomicint.pro
+++ b/tests/auto/qatomicint/qatomicint.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qatomicint.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qatomicpointer/qatomicpointer.pro b/tests/auto/qatomicpointer/qatomicpointer.pro
index d192bad5dc..89ff137d39 100644
--- a/tests/auto/qatomicpointer/qatomicpointer.pro
+++ b/tests/auto/qatomicpointer/qatomicpointer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qatomicpointer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qaudioinput/qaudioinput.pro b/tests/auto/qaudioinput/qaudioinput.pro
index 0bbbb19c75..aac7fb45e2 100644
--- a/tests/auto/qaudioinput/qaudioinput.pro
+++ b/tests/auto/qaudioinput/qaudioinput.pro
@@ -5,7 +5,7 @@ SOURCES += tst_qaudioinput.cpp
QT = core multimedia
wince* {
- deploy.sources += 4.wav
+ deploy.files += 4.wav
DEPLOYMENT += deploy
DEFINES += SRCDIR=\\\"\\\"
QT += gui
diff --git a/tests/auto/qaudiooutput/qaudiooutput.pro b/tests/auto/qaudiooutput/qaudiooutput.pro
index 09d7ae3ae4..f4d840a97d 100644
--- a/tests/auto/qaudiooutput/qaudiooutput.pro
+++ b/tests/auto/qaudiooutput/qaudiooutput.pro
@@ -5,7 +5,7 @@ SOURCES += tst_qaudiooutput.cpp
QT = core multimedia
wince*|symbian: {
- deploy.sources += 4.wav
+ deploy.files += 4.wav
DEPLOYMENT += deploy
!symbian {
DEFINES += SRCDIR=\\\"\\\"
diff --git a/tests/auto/qbitarray/qbitarray.pro b/tests/auto/qbitarray/qbitarray.pro
index ec110c62cd..358d81bad1 100644
--- a/tests/auto/qbitarray/qbitarray.pro
+++ b/tests/auto/qbitarray/qbitarray.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qbitarray.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qbitarray/tst_qbitarray.cpp b/tests/auto/qbitarray/tst_qbitarray.cpp
index 30f4f586a4..7b9543e579 100644
--- a/tests/auto/qbitarray/tst_qbitarray.cpp
+++ b/tests/auto/qbitarray/tst_qbitarray.cpp
@@ -88,6 +88,7 @@ private slots:
void countBits();
void countBits2();
void isEmpty();
+ void swap();
void fill();
void toggleBit_data();
void toggleBit();
@@ -269,6 +270,14 @@ void tst_QBitArray::isEmpty()
QVERIFY(a1.size() == 2);
}
+void tst_QBitArray::swap()
+{
+ QBitArray b1 = QStringToQBitArray("1"), b2 = QStringToQBitArray("10");
+ b1.swap(b2);
+ QCOMPARE(b1,QStringToQBitArray("10"));
+ QCOMPARE(b2,QStringToQBitArray("1"));
+}
+
void tst_QBitArray::fill()
{
int N = 64;
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/qbrush/tst_qbrush.cpp b/tests/auto/qbrush/tst_qbrush.cpp
index 7e94f375b0..c9be55209f 100644
--- a/tests/auto/qbrush/tst_qbrush.cpp
+++ b/tests/auto/qbrush/tst_qbrush.cpp
@@ -76,6 +76,7 @@ private slots:
void textures();
+ void swap();
void nullBrush();
void isOpaque();
void debug();
@@ -385,6 +386,14 @@ void tst_QBrush::textures()
QCOMPARE(image_brush.textureImage(), image_source);
}
+void tst_QBrush::swap()
+{
+ QBrush b1(Qt::black), b2(Qt::white);
+ b1.swap(b2);
+ QCOMPARE(b1.color(), QColor(Qt::white));
+ QCOMPARE(b2.color(), QColor(Qt::black));
+}
+
void tst_QBrush::nullBrush()
{
QBrush brush(QColor(100,0,0), Qt::NoBrush);
diff --git a/tests/auto/qbuffer/qbuffer.pro b/tests/auto/qbuffer/qbuffer.pro
index ea8365766b..b768eb82d8 100644
--- a/tests/auto/qbuffer/qbuffer.pro
+++ b/tests/auto/qbuffer/qbuffer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qbuffer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/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/qbytearray/qbytearray.pro b/tests/auto/qbytearray/qbytearray.pro
index a0c143e038..f195dc8c71 100644
--- a/tests/auto/qbytearray/qbytearray.pro
+++ b/tests/auto/qbytearray/qbytearray.pro
@@ -5,7 +5,7 @@ SOURCES += tst_qbytearray.cpp
QT = core
wince*|symbian {
- addFile.sources = rfc3252.txt
+ addFile.files = rfc3252.txt
addFile.path = .
DEPLOYMENT += addFile
}
@@ -18,3 +18,4 @@ wince* {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qbytearray/tst_qbytearray.cpp b/tests/auto/qbytearray/tst_qbytearray.cpp
index 0dc2282fcd..c291c6afb7 100644
--- a/tests/auto/qbytearray/tst_qbytearray.cpp
+++ b/tests/auto/qbytearray/tst_qbytearray.cpp
@@ -71,6 +71,7 @@ public slots:
void init();
void cleanup();
private slots:
+ void swap();
void qCompress_data();
#ifndef QT_NO_COMPRESS
void qCompress();
@@ -453,6 +454,14 @@ void tst_QByteArray::split()
QCOMPARE(list.count(), size);
}
+void tst_QByteArray::swap()
+{
+ QByteArray b1 = "b1", b2 = "b2";
+ b1.swap(b2);
+ QCOMPARE(b1, QByteArray("b2"));
+ QCOMPARE(b2, QByteArray("b1"));
+}
+
void tst_QByteArray::base64_data()
{
QTest::addColumn<QByteArray>("rawdata");
diff --git a/tests/auto/qbytearraymatcher/qbytearraymatcher.pro b/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
index 1618c3e18e..a2458e623f 100644
--- a/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
+++ b/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qbytearraymatcher.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qcache/qcache.pro b/tests/auto/qcache/qcache.pro
index 728b0b646f..0da4e1414f 100644
--- a/tests/auto/qcache/qcache.pro
+++ b/tests/auto/qcache/qcache.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qcache.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/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/qchar/qchar.pro b/tests/auto/qchar/qchar.pro
index 8224448982..1681220117 100644
--- a/tests/auto/qchar/qchar.pro
+++ b/tests/auto/qchar/qchar.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qchar.cpp
QT = core
wince*|symbian: {
-deploy.sources += NormalizationTest.txt
+deploy.files += NormalizationTest.txt
DEPLOYMENT += deploy
}
@@ -13,3 +13,4 @@ symbian: {
} else {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qclipboard/test/test.pro b/tests/auto/qclipboard/test/test.pro
index 620ff3623d..12c6b6ce4f 100644
--- a/tests/auto/qclipboard/test/test.pro
+++ b/tests/auto/qclipboard/test/test.pro
@@ -11,18 +11,20 @@ win32 {
}
wince*|symbian: {
- copier.sources = ../copier/copier.exe
+ copier.files = ../copier/copier.exe
copier.path = copier
- paster.sources = ../paster/paster.exe
+ paster.files = ../paster/paster.exe
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
+ rsc.files = $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/copier.rsc
+ rsc.files += $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/paster.rsc
rsc.path = $$APP_RESOURCE_DIR
- reg_resource.sources = $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/copier_reg.rsc
- reg_resource.sources += $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/paster_reg.rsc
+ reg_resource.files = $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/copier_reg.rsc
+ reg_resource.files += $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/paster_reg.rsc
reg_resource.path = $$REG_RESOURCE_IMPORT_DIR
}
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 71dab40a07..a2b3bbb077 100644
--- a/tests/auto/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/qcombobox/tst_qcombobox.cpp
@@ -164,7 +164,7 @@ protected slots:
private:
QComboBox *testWidget;
- QDialog *parent;
+ QWidget *parent;
QPushButton* ok;
int editTextCount;
QString editText;
@@ -396,7 +396,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);
@@ -1927,7 +1927,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);
@@ -1945,7 +1946,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();
@@ -2267,9 +2268,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/qcomplextext/tst_qcomplextext.cpp b/tests/auto/qcomplextext/tst_qcomplextext.cpp
index 4a96725d96..c66d4522db 100644
--- a/tests/auto/qcomplextext/tst_qcomplextext.cpp
+++ b/tests/auto/qcomplextext/tst_qcomplextext.cpp
@@ -45,6 +45,7 @@
#if !defined(Q_WS_MAC)
#include <QtTest/QtTest>
+#include <QtGui/QtGui>
#include <private/qtextengine_p.h>
#include "bidireorderstring.h"
@@ -68,6 +69,8 @@ public slots:
private slots:
void bidiReorderString_data();
void bidiReorderString();
+ void bidiCursor_qtbug2795();
+ void bidiCursor_PDF();
};
tst_QComplexText::tst_QComplexText()
@@ -159,6 +162,42 @@ void tst_QComplexText::bidiReorderString()
QTEST(visual, "VISUAL");
}
+void tst_QComplexText::bidiCursor_qtbug2795()
+{
+ QString str = QString::fromUtf8("الجزيرة نت");
+ QTextLayout l1(str);
+
+ l1.beginLayout();
+ QTextLine line1 = l1.createLine();
+ l1.endLayout();
+
+ qreal x1 = line1.cursorToX(0) - line1.cursorToX(str.size());
+
+ str.append("1");
+ QTextLayout l2(str);
+ l2.beginLayout();
+ QTextLine line2 = l2.createLine();
+ l2.endLayout();
+
+ qreal x2 = line2.cursorToX(0) - line2.cursorToX(str.size());
+
+ // The cursor should remain at the same position after a digit is appended
+ QVERIFY(x1 == x2);
+}
+
+void tst_QComplexText::bidiCursor_PDF()
+{
+ QString str = QString::fromUtf8("\342\200\252hello\342\200\254");
+ QTextLayout layout(str);
+
+ layout.beginLayout();
+ QTextLine line = layout.createLine();
+ layout.endLayout();
+
+ int size = str.size();
+
+ QVERIFY(line.cursorToX(size) == line.cursorToX(size - 1));
+}
QTEST_MAIN(tst_QComplexText)
#include "tst_qcomplextext.moc"
diff --git a/tests/auto/qcontiguouscache/qcontiguouscache.pro b/tests/auto/qcontiguouscache/qcontiguouscache.pro
index 618efed29f..5951f87f89 100644
--- a/tests/auto/qcontiguouscache/qcontiguouscache.pro
+++ b/tests/auto/qcontiguouscache/qcontiguouscache.pro
@@ -6,3 +6,4 @@ SOURCES += tst_qcontiguouscache.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp b/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp
index f64e815ada..568ba06c28 100644
--- a/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp
+++ b/tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp
@@ -55,6 +55,8 @@ public:
virtual ~tst_QContiguousCache() {}
private slots:
void empty();
+ void swap();
+
void append_data();
void append();
@@ -99,6 +101,17 @@ void tst_QContiguousCache::empty()
QCOMPARE(c.capacity(), 10);
}
+void tst_QContiguousCache::swap()
+{
+ QContiguousCache<int> c1(10), c2(100);
+ c1.append(1);
+ c1.swap(c2);
+ QCOMPARE(c1.capacity(), 100);
+ QCOMPARE(c1.count(), 0 );
+ QCOMPARE(c2.capacity(), 10 );
+ QCOMPARE(c2.count(), 1 );
+}
+
void tst_QContiguousCache::append_data()
{
QTest::addColumn<int>("start");
diff --git a/tests/auto/qcoreapplication/qcoreapplication.pro b/tests/auto/qcoreapplication/qcoreapplication.pro
index 27f5e58d6d..031af39df7 100644
--- a/tests/auto/qcoreapplication/qcoreapplication.pro
+++ b/tests/auto/qcoreapplication/qcoreapplication.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qcoreapplication.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qcryptographichash/qcryptographichash.pro b/tests/auto/qcryptographichash/qcryptographichash.pro
index 7e1a866bc3..65e31dcb57 100644
--- a/tests/auto/qcryptographichash/qcryptographichash.pro
+++ b/tests/auto/qcryptographichash/qcryptographichash.pro
@@ -6,3 +6,4 @@ symbian: {
TARGET.EPOCSTACKSIZE =0x5000
TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
}
+CONFIG += parallel_test
diff --git a/tests/auto/qcssparser/qcssparser.pro b/tests/auto/qcssparser/qcssparser.pro
index 674064fc83..f696f195de 100644
--- a/tests/auto/qcssparser/qcssparser.pro
+++ b/tests/auto/qcssparser/qcssparser.pro
@@ -8,9 +8,9 @@ requires(contains(QT_CONFIG,private_tests))
}
wince*|symbian: {
- addFiles.sources = testdata
+ addFiles.files = testdata
addFiles.path = .
- timesFont.sources = C:/Windows/Fonts/times.ttf
+ timesFont.files = C:/Windows/Fonts/times.ttf
timesFont.path = .
DEPLOYMENT += addFiles timesFont
}
diff --git a/tests/auto/qdatastream/qdatastream.pro b/tests/auto/qdatastream/qdatastream.pro
index c132073aea..eba7c006e5 100644
--- a/tests/auto/qdatastream/qdatastream.pro
+++ b/tests/auto/qdatastream/qdatastream.pro
@@ -12,13 +12,13 @@ QT += svg
wince*: {
- addFiles.sources = datastream.q42 tests2.svg
+ addFiles.files = datastream.q42 tests2.svg
addFiles.path = .
DEPLOYMENT += addFiles
DEFINES += SRCDIR=\\\"\\\"
} else:symbian {
# SRCDIR and SVGFILE defined in code in symbian
- addFiles.sources = datastream.q42 tests2.svg
+ addFiles.files = datastream.q42 tests2.svg
addFiles.path = .
DEPLOYMENT += addFiles
TARGET.EPOCHEAPSIZE = 1000000 10000000
diff --git a/tests/auto/qdate/qdate.pro b/tests/auto/qdate/qdate.pro
index 6e2781b3d8..1c041004d3 100644
--- a/tests/auto/qdate/qdate.pro
+++ b/tests/auto/qdate/qdate.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qdate.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qdatetime/qdatetime.pro b/tests/auto/qdatetime/qdatetime.pro
index 02d39892a0..08a321ef75 100644
--- a/tests/auto/qdatetime/qdatetime.pro
+++ b/tests/auto/qdatetime/qdatetime.pro
@@ -12,3 +12,4 @@ win32-msvc|win32-msvc9x {
}
+CONFIG += parallel_test
diff --git a/tests/auto/qdebug/qdebug.pro b/tests/auto/qdebug/qdebug.pro
index 6e75a092e7..2b5716860c 100644
--- a/tests/auto/qdebug/qdebug.pro
+++ b/tests/auto/qdebug/qdebug.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qdebug.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qdesktopservices/qdesktopservices.pro b/tests/auto/qdesktopservices/qdesktopservices.pro
index d32ed4c794..43f6cba267 100644
--- a/tests/auto/qdesktopservices/qdesktopservices.pro
+++ b/tests/auto/qdesktopservices/qdesktopservices.pro
@@ -3,22 +3,22 @@ CONFIG += qttest_p4
SOURCES += tst_qdesktopservices.cpp
TARGET = tst_qdesktopservices
symbian: {
- dummy.sources = text\\testfile.txt
+ dummy.files = text\\testfile.txt
dummy.path = .
- text.sources = text\\*
+ text.files = text\\*
text.path = \\data\\others
- image.sources = image\\*
+ image.files = image\\*
image.path = \\data\\images
- audio.sources = audio\\*
+ audio.files = audio\\*
audio.path = \\data\\sounds
- video.sources = video\\*
+ video.files = video\\*
video.path = \\data\\videos
- install.sources = install\\*
+ install.files = install\\*
install.path = \\data\\installs
DEPLOYMENT += image audio video install
diff --git a/tests/auto/qdir/qdir.pro b/tests/auto/qdir/qdir.pro
index 01a88cd133..33aee4b365 100644
--- a/tests/auto/qdir/qdir.pro
+++ b/tests/auto/qdir/qdir.pro
@@ -4,7 +4,7 @@ RESOURCES += qdir.qrc
QT = core
wince*|symbian {
- DirFiles.sources = testdir testdata searchdir resources entrylist types tst_qdir.cpp
+ DirFiles.files = testdir testdata searchdir resources entrylist types tst_qdir.cpp
DirFiles.path = .
DEPLOYMENT += DirFiles
}
diff --git a/tests/auto/qdiriterator/qdiriterator.pro b/tests/auto/qdiriterator/qdiriterator.pro
index 0a154d6747..0807a18f8f 100644
--- a/tests/auto/qdiriterator/qdiriterator.pro
+++ b/tests/auto/qdiriterator/qdiriterator.pro
@@ -5,3 +5,4 @@ QT = core
wince*mips*|wincewm50smart-msvc200*: DEFINES += WINCE_BROKEN_ITERATE=1
+CONFIG += parallel_test
diff --git a/tests/auto/qdirmodel/qdirmodel.pro b/tests/auto/qdirmodel/qdirmodel.pro
index 36929b9399..7037a79934 100644
--- a/tests/auto/qdirmodel/qdirmodel.pro
+++ b/tests/auto/qdirmodel/qdirmodel.pro
@@ -2,11 +2,11 @@ load(qttest_p4)
SOURCES += tst_qdirmodel.cpp
wince*|symbian {
- addit.sources = dirtest\\test1\\*
+ addit.files = dirtest\\test1\\*
addit.path = dirtest\\test1
- tests.sources = test\\*
+ tests.files = test\\*
tests.path = test
- sourceFile.sources = tst_qdirmodel.cpp
+ sourceFile.files = tst_qdirmodel.cpp
sourceFile.path = .
DEPLOYMENT += addit tests sourceFile
}
diff --git a/tests/auto/qdom/qdom.pro b/tests/auto/qdom/qdom.pro
index 9040b91d6d..0a3c167a4b 100644
--- a/tests/auto/qdom/qdom.pro
+++ b/tests/auto/qdom/qdom.pro
@@ -5,7 +5,7 @@ QT = core xml
QT -= gui
wince*|symbian: {
- addFiles.sources = testdata doubleNamespaces.xml umlaut.xml
+ addFiles.files = testdata doubleNamespaces.xml umlaut.xml
addFiles.path = .
DEPLOYMENT += addFiles
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/qeasingcurve/qeasingcurve.pro b/tests/auto/qeasingcurve/qeasingcurve.pro
index 2b66081914..2a3a075d8a 100644
--- a/tests/auto/qeasingcurve/qeasingcurve.pro
+++ b/tests/auto/qeasingcurve/qeasingcurve.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
QT = core
SOURCES += tst_qeasingcurve.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qelapsedtimer/qelapsedtimer.pro b/tests/auto/qelapsedtimer/qelapsedtimer.pro
index ed752284ec..876887678f 100644
--- a/tests/auto/qelapsedtimer/qelapsedtimer.pro
+++ b/tests/auto/qelapsedtimer/qelapsedtimer.pro
@@ -11,3 +11,4 @@ wince* {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qevent/qevent.pro b/tests/auto/qevent/qevent.pro
index 5c142996f1..6042b6cdc9 100644
--- a/tests/auto/qevent/qevent.pro
+++ b/tests/auto/qevent/qevent.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qevent.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/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/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro b/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
index 8a45aa27b2..cf574ffc40 100644
--- a/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
+++ b/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qexplicitlyshareddatapointer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qfile/test/test.pro b/tests/auto/qfile/test/test.pro
index 9a2d84706d..673eacc317 100644
--- a/tests/auto/qfile/test/test.pro
+++ b/tests/auto/qfile/test/test.pro
@@ -3,11 +3,11 @@ SOURCES += ../tst_qfile.cpp
wince*|symbian {
QT = core gui
- files.sources += ..\\dosfile.txt ..\\noendofline.txt ..\\testfile.txt \
+ files.files += ..\\dosfile.txt ..\\noendofline.txt ..\\testfile.txt \
..\\testlog.txt ..\\two.dots.file ..\\tst_qfile.cpp \
..\\Makefile ..\\forCopying.txt ..\\forRenaming.txt
files.path = .
- resour.sources += ..\\resources\\file1.ext1
+ resour.files += ..\\resources\\file1.ext1
resour.path = resources
DEPLOYMENT += files resour
diff --git a/tests/auto/qfiledialog/qfiledialog.pro b/tests/auto/qfiledialog/qfiledialog.pro
index 2b87cf124f..68f2e3c146 100644
--- a/tests/auto/qfiledialog/qfiledialog.pro
+++ b/tests/auto/qfiledialog/qfiledialog.pro
@@ -7,9 +7,9 @@ load(qttest_p4)
SOURCES += tst_qfiledialog.cpp
wince*|symbian {
- addFiles.sources = *.cpp
+ addFiles.files = *.cpp
addFiles.path = .
- filesInDir.sources = *.pro
+ filesInDir.files = *.pro
filesInDir.path = someDir
DEPLOYMENT += addFiles filesInDir
}
diff --git a/tests/auto/qfiledialog2/qfiledialog2.pro b/tests/auto/qfiledialog2/qfiledialog2.pro
index 4ebf9775d8..b8924c161b 100644
--- a/tests/auto/qfiledialog2/qfiledialog2.pro
+++ b/tests/auto/qfiledialog2/qfiledialog2.pro
@@ -7,9 +7,9 @@ load(qttest_p4)
SOURCES += tst_qfiledialog2.cpp
wince*|symbian {
- addFiles.sources = *.cpp
+ addFiles.files = *.cpp
addFiles.path = .
- filesInDir.sources = *.pro
+ filesInDir.files = *.pro
filesInDir.path = someDir
DEPLOYMENT += addFiles filesInDir
}
diff --git a/tests/auto/qfileinfo/qfileinfo.pro b/tests/auto/qfileinfo/qfileinfo.pro
index fdbcd26b1e..f3622daccb 100644
--- a/tests/auto/qfileinfo/qfileinfo.pro
+++ b/tests/auto/qfileinfo/qfileinfo.pro
@@ -7,8 +7,8 @@ QT = core
RESOURCES += qfileinfo.qrc
wince*:|symbian: {
- deploy.sources += qfileinfo.qrc tst_qfileinfo.cpp
- res.sources = resources\\file1 resources\\file1.ext1 resources\\file1.ext1.ext2
+ deploy.files += qfileinfo.qrc tst_qfileinfo.cpp
+ res.files = resources\\file1 resources\\file1.ext1 resources\\file1.ext1.ext2
res.path = resources
DEPLOYMENT += deploy res
}
diff --git a/tests/auto/qfileinfo/tst_qfileinfo.cpp b/tests/auto/qfileinfo/tst_qfileinfo.cpp
index 3e67fb8bd0..79c5184a98 100644
--- a/tests/auto/qfileinfo/tst_qfileinfo.cpp
+++ b/tests/auto/qfileinfo/tst_qfileinfo.cpp
@@ -76,6 +76,10 @@
# define NO_SYMLINKS
#endif
+QT_BEGIN_NAMESPACE
+extern Q_AUTOTEST_EXPORT bool qIsLikelyToBeNfs(int /* handle */);
+QT_END_NAMESPACE
+
//TESTED_CLASS=
//TESTED_FILES=
@@ -998,6 +1002,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/qfilesystemmodel/qfilesystemmodel.pro b/tests/auto/qfilesystemmodel/qfilesystemmodel.pro
index 070eb6aa56..04cea4805c 100644
--- a/tests/auto/qfilesystemmodel/qfilesystemmodel.pro
+++ b/tests/auto/qfilesystemmodel/qfilesystemmodel.pro
@@ -9,7 +9,7 @@ symbian: {
HEADERS += ../../../include/qtgui/private/qfileinfogatherer_p.h
# need to deploy something to create the private directory
- dummyDeploy.sources = tst_qfilesystemmodel.cpp
+ dummyDeploy.files = tst_qfilesystemmodel.cpp
dummyDeploy.path = .
DEPLOYMENT += dummyDeploy
LIBS += -lefsrv
diff --git a/tests/auto/qflags/qflags.pro b/tests/auto/qflags/qflags.pro
index cd7f759b8b..097a218a5a 100644
--- a/tests/auto/qflags/qflags.pro
+++ b/tests/auto/qflags/qflags.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qflags.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qfontdatabase/qfontdatabase.pro b/tests/auto/qfontdatabase/qfontdatabase.pro
index 35811f1a97..e7dfc3c73d 100644
--- a/tests/auto/qfontdatabase/qfontdatabase.pro
+++ b/tests/auto/qfontdatabase/qfontdatabase.pro
@@ -3,7 +3,7 @@ SOURCES += tst_qfontdatabase.cpp
!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
wince*|symbian {
- additionalFiles.sources = FreeMono.ttf
+ additionalFiles.files = FreeMono.ttf
additionalFiles.path = .
DEPLOYMENT += additionalFiles
}
diff --git a/tests/auto/qftp/qftp.pro b/tests/auto/qftp/qftp.pro
index 9618962b44..ac1702e715 100644
--- a/tests/auto/qftp/qftp.pro
+++ b/tests/auto/qftp/qftp.pro
@@ -5,12 +5,12 @@ SOURCES += tst_qftp.cpp
QT = core network
wince*: {
- addFiles.sources = rfc3252.txt
+ addFiles.files = rfc3252.txt
addFiles.path = .
DEPLOYMENT += addFiles
DEFINES += SRCDIR=\\\"\\\"
} else:symbian {
- addFiles.sources = rfc3252.txt
+ addFiles.files = rfc3252.txt
addFiles.path = .
DEPLOYMENT += addFiles
TARGET.EPOCHEAPSIZE="0x100 0x1000000"
diff --git a/tests/auto/qfuture/qfuture.pro b/tests/auto/qfuture/qfuture.pro
index c2b16b7587..d6faae716c 100644
--- a/tests/auto/qfuture/qfuture.pro
+++ b/tests/auto/qfuture/qfuture.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
DEFINES += QT_STRICT_ITERATORS
SOURCES += tst_qfuture.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qfuturewatcher/qfuturewatcher.pro b/tests/auto/qfuturewatcher/qfuturewatcher.pro
index 79d8739b30..67f04ef0e5 100644
--- a/tests/auto/qfuturewatcher/qfuturewatcher.pro
+++ b/tests/auto/qfuturewatcher/qfuturewatcher.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qfuturewatcher.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qgetputenv/qgetputenv.pro b/tests/auto/qgetputenv/qgetputenv.pro
index cbde2727a5..df94f14473 100644
--- a/tests/auto/qgetputenv/qgetputenv.pro
+++ b/tests/auto/qgetputenv/qgetputenv.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qgetputenv.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp
index dfcfb473c7..7f9ee04933 100644
--- a/tests/auto/qgl/tst_qgl.cpp
+++ b/tests/auto/qgl/tst_qgl.cpp
@@ -96,6 +96,7 @@ private slots:
void shareRegister();
void qglContextDefaultBindTexture();
void textureCleanup();
+ void threadImages();
};
tst_QGL::tst_QGL()
@@ -2245,6 +2246,127 @@ void tst_QGL::textureCleanup()
#endif
}
+namespace ThreadImages {
+
+class Producer : public QObject
+{
+ Q_OBJECT
+public:
+ Producer()
+ {
+ startTimer(20);
+
+ QThread *thread = new QThread;
+ thread->start();
+
+ connect(this, SIGNAL(destroyed()), thread, SLOT(quit()));
+
+ moveToThread(thread);
+ connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
+ }
+
+signals:
+ void imageReady(const QImage &image);
+
+protected:
+ void timerEvent(QTimerEvent *)
+ {
+ QImage image(256, 256, QImage::Format_RGB32);
+ QLinearGradient g(0, 0, 0, 256);
+ g.setColorAt(0, QColor(255, 180, 180));
+ g.setColorAt(1, Qt::white);
+ g.setSpread(QGradient::ReflectSpread);
+
+ QBrush brush(g);
+ brush.setTransform(QTransform::fromTranslate(0, delta));
+ delta += 10;
+
+ QPainter p(&image);
+ p.fillRect(image.rect(), brush);
+
+ if (images.size() > 10)
+ images.removeFirst();
+
+ images.append(image);
+
+ emit imageReady(image);
+ }
+
+private:
+ QList<QImage> images;
+ int delta;
+};
+
+
+class DisplayWidget : public QGLWidget
+{
+ Q_OBJECT
+public:
+ DisplayWidget(QWidget *parent) : QGLWidget(parent) {}
+ void paintEvent(QPaintEvent *)
+ {
+ QPainter p(this);
+ p.drawImage(rect(), m_image);
+ }
+
+public slots:
+ void setImage(const QImage &image)
+ {
+ m_image = image;
+ update();
+ }
+
+private:
+ QImage m_image;
+};
+
+class Widget : public QWidget
+{
+ Q_OBJECT
+public:
+ Widget()
+ : iterations(0)
+ , display(0)
+ , producer(new Producer)
+ {
+ startTimer(400);
+ connect(this, SIGNAL(destroyed()), producer, SLOT(deleteLater()));
+ }
+
+ int iterations;
+
+protected:
+ void timerEvent(QTimerEvent *)
+ {
+ ++iterations;
+
+ delete display;
+ display = new DisplayWidget(this);
+ connect(producer, SIGNAL(imageReady(const QImage &)), display, SLOT(setImage(const QImage &)));
+
+ display->setGeometry(rect());
+ display->show();
+ }
+
+private:
+ DisplayWidget *display;
+ Producer *producer;
+};
+
+}
+
+void tst_QGL::threadImages()
+{
+ ThreadImages::Widget *widget = new ThreadImages::Widget;
+ widget->show();
+
+ while (widget->iterations <= 5) {
+ qApp->processEvents();
+ }
+
+ delete widget;
+}
+
class tst_QGLDummy : public QObject
{
Q_OBJECT
diff --git a/tests/auto/qglobal/qglobal.pro b/tests/auto/qglobal/qglobal.pro
index 8f1e00a2cb..a4dffac815 100644
--- a/tests/auto/qglobal/qglobal.pro
+++ b/tests/auto/qglobal/qglobal.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qglobal.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/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 82af71f579..b1730460c7 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();
@@ -79,12 +85,18 @@ private slots:
void itemAt();
void removeAt();
void removeItem();
+ 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();
@@ -99,6 +111,7 @@ private slots:
void sizeHint();
void verticalSpacing_data();
void verticalSpacing();
+ void layoutDirection_data();
void layoutDirection();
void removeLayout();
void defaultStretchFactors_data();
@@ -110,6 +123,7 @@ private slots:
void task236367_maxSizeHint();
void heightForWidth();
void widthForHeight();
+ void heightForWidthWithSpanning();
};
class RectWidget : public QGraphicsWidget
@@ -373,7 +387,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) {
@@ -382,6 +396,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);
}
}
}
@@ -398,18 +415,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);
}
@@ -462,19 +483,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);
@@ -526,6 +556,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()
@@ -533,13 +571,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);
@@ -585,9 +624,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);
@@ -619,7 +666,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);
@@ -634,16 +681,24 @@ 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);
@@ -669,16 +724,24 @@ void tst_QGraphicsGridLayout::columnMaximumWidth()
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);
@@ -704,16 +767,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);
@@ -1049,16 +1120,25 @@ void tst_QGraphicsGridLayout::removeItem()
QCOMPARE(l->count(), 4);
}
+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);
@@ -1108,17 +1188,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);
@@ -1128,23 +1217,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);
@@ -1170,16 +1268,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);
@@ -1205,16 +1311,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);
@@ -1303,16 +1417,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);
@@ -1336,9 +1459,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)
@@ -1346,6 +1472,7 @@ void tst_QGraphicsGridLayout::setColumnSpacing()
{
QFETCH(int, column);
QFETCH(qreal, spacing);
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
@@ -1353,7 +1480,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);
@@ -1390,9 +1517,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)
@@ -1400,6 +1530,7 @@ void tst_QGraphicsGridLayout::setRowSpacing()
{
QFETCH(int, row);
QFETCH(qreal, spacing);
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
@@ -1407,7 +1538,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);
@@ -1421,21 +1552,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();
@@ -1566,8 +1701,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);
@@ -1590,6 +1735,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);
@@ -2268,9 +2419,9 @@ void tst_QGraphicsGridLayout::geometries_data()
.preferredSize(QSizeF(50,10))
.maxSize(QSizeF(100, 100))
<< ItemDesc(1,1)
- .minSize(QSizeF(40,40))
- .preferredSize(QSizeF(50,400))
- .maxSize(QSizeF(500, 500))
+ .minSize(QSizeF(40,-1))
+ .preferredSize(QSizeF(50,-1))
+ .maxSize(QSizeF(500, -1))
.dynamicConstraint(hfw1, Qt::Vertical)
)
<< QSizeF(100, 401)
@@ -2278,8 +2429,7 @@ void tst_QGraphicsGridLayout::geometries_data()
<< QRectF(0, 0, 50, 1) << QRectF(50, 0, 50, 1)
<< QRectF(0, 1, 50,100) << QRectF(50, 1, 50,400)
);
-
-
+#if 0
QTest::newRow("hfw-100x408") << (ItemList()
<< ItemDesc(0,0)
.minSize(QSizeF(1,1))
@@ -2304,7 +2454,7 @@ void tst_QGraphicsGridLayout::geometries_data()
<< QRectF(0, 0, 50, 8) << QRectF(50, 0, 50, 8)
<< QRectF(0, 8, 50,100) << QRectF(50, 8, 50,400)
);
-
+#endif
QTest::newRow("hfw-h410") << (ItemList()
<< ItemDesc(0,0)
.minSize(QSizeF(1,1))
@@ -2329,7 +2479,7 @@ void tst_QGraphicsGridLayout::geometries_data()
<< QRectF(0, 0, 50,10) << QRectF(50, 0, 50,10)
<< QRectF(0, 10, 50,100) << QRectF(50, 10, 50,400)
);
-
+#if 0
QTest::newRow("hfw-100x470") << (ItemList()
<< ItemDesc(0,0)
.minSize(QSizeF(1,1))
@@ -2565,6 +2715,7 @@ void tst_QGraphicsGridLayout::geometries_data()
<< QRectF(0, 0, 80, 50) << QRectF( 80, 0, 80, 50)
<< QRectF(0, 50, 80, 50) << QRectF( 80, 50, 50, 50)
);
+#endif
}
@@ -2764,11 +2915,13 @@ void tst_QGraphicsGridLayout::heightForWidth()
void tst_QGraphicsGridLayout::widthForHeight()
{
+#if 0
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->setMinimumSize(1, 1);
w00->setPreferredSize(50, 50);
@@ -2835,8 +2988,43 @@ void tst_QGraphicsGridLayout::widthForHeight()
QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, 300)), QSizeF(1 + 200, 300));
QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, 300)), QSizeF(50 + 200, 300));
QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, 300)), QSizeF(100 + 200, 300));
+#endif
+}
+
+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, 100));
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)), QSizeF(200, 100));
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));
+
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(200, -1)), QSizeF(200, 100));
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(200, -1)), QSizeF(200, 100));
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, QWIDGETSIZE_MAX));
+
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(2, -1)), QSizeF(2, 10000));
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(2, -1)), QSizeF(2, 10000));
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(2, -1)), QSizeF(2, QWIDGETSIZE_MAX));
+
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(200, -1)), QSizeF(200, 100));
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(200, -1)), QSizeF(200, 100));
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, QWIDGETSIZE_MAX));
}
+
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 2901dd5484..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);
@@ -9065,6 +9088,10 @@ void tst_QGraphicsItem::focusScope()
scope2->hide();
scope2->show();
QVERIFY(!scope2->hasFocus());
+ QVERIFY(scope1->hasFocus());
+ scope2->setFocus();
+ QVERIFY(scope2->hasFocus());
+ scope3->setFocus();
QVERIFY(scope3->hasFocus());
QGraphicsRectItem *rect4 = new QGraphicsRectItem;
@@ -10716,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);
@@ -10764,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();
@@ -10949,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);
@@ -11015,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/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
index 411c79030b..ad7ccf7d28 100644
--- a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
+++ b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
@@ -183,6 +183,7 @@ private slots:
void inputMethod();
void clickFocus();
void windowFrameMargins();
+ void QTBUG_6986_sendMouseEventToAlienWidget();
};
// Subclass that exposes the protected functions.
@@ -3583,6 +3584,70 @@ void tst_QGraphicsProxyWidget::windowFrameMargins()
QVERIFY(top > 0);
}
+class HoverButton : public QPushButton
+{
+public:
+ HoverButton(QWidget *parent = 0) : QPushButton(parent), hoverLeaveReceived(false)
+ {}
+
+ bool hoverLeaveReceived;
+
+ bool event(QEvent* e)
+ {
+ if(QEvent::HoverLeave == e->type())
+ hoverLeaveReceived = true;
+ return QPushButton::event(e);
+ }
+};
+
+class Scene : public QGraphicsScene
+{
+Q_OBJECT
+public:
+ Scene() {
+ QWidget *background = new QWidget;
+ background->setGeometry(0, 0, 500, 500);
+ hoverButton = new HoverButton;
+ hoverButton->setParent(background);
+ hoverButton->setText("Second button");
+ hoverButton->setGeometry(10, 10, 200, 50);
+ addWidget(background);
+
+ QPushButton *hideButton = new QPushButton("I'm a button with a very very long text");
+ hideButton->setGeometry(10, 10, 400, 50);
+ topButton = addWidget(hideButton);
+ connect(hideButton, SIGNAL(clicked()), this, SLOT(hideButton()));
+ topButton->setFocus();
+ }
+
+ QGraphicsProxyWidget *topButton;
+ HoverButton *hoverButton;
+
+public slots:
+ void hideButton() {
+ QCursor::setPos(600,600);
+ topButton->hide();
+ }
+};
+
+void tst_QGraphicsProxyWidget::QTBUG_6986_sendMouseEventToAlienWidget()
+{
+#if defined(Q_OS_MAC) || defined(Q_OS_WIN) || defined(QT_NO_CURSOR)
+ QSKIP("Test case unstable on this platform", SkipAll);
+#endif
+ QGraphicsView view;
+ Scene scene;
+ view.setScene(&scene);
+ view.resize(600, 600);
+ QApplication::setActiveWindow(&view);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ QTRY_COMPARE(QApplication::activeWindow(), &view);
+ QCursor::setPos(view.mapToGlobal(view.mapFromScene(scene.topButton->boundingRect().center())));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(scene.topButton->scenePos()));
+ QTRY_COMPARE(scene.hoverButton->hoverLeaveReceived, true);
+}
+
QTEST_MAIN(tst_QGraphicsProxyWidget)
#include "tst_qgraphicsproxywidget.moc"
diff --git a/tests/auto/qgraphicsscene/qgraphicsscene.pro b/tests/auto/qgraphicsscene/qgraphicsscene.pro
index cc6f585978..82fa423e66 100644
--- a/tests/auto/qgraphicsscene/qgraphicsscene.pro
+++ b/tests/auto/qgraphicsscene/qgraphicsscene.pro
@@ -7,9 +7,9 @@ win32:!wince*: LIBS += -lUser32
DEFINES += QT_NO_CAST_TO_ASCII
wince*|symbian: {
- rootFiles.sources = Ash_European.jpg graphicsScene_selection.data
+ rootFiles.files = Ash_European.jpg graphicsScene_selection.data
rootFiles.path = .
- renderFiles.sources = testData\\render\\*
+ renderFiles.files = testData\\render\\*
renderFiles.path = testData\\render
DEPLOYMENT += rootFiles renderFiles
}
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..44f35043d5 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=
@@ -244,6 +246,7 @@ private slots:
void QTBUG_4151_clipAndIgnore();
void QTBUG_5859_exposedRect();
void QTBUG_7438_cursor();
+ void hoverLeave();
public slots:
void dummySlot() {}
@@ -400,10 +403,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 +537,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 +862,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 +1081,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 +1167,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 +1184,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 +1267,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 +1449,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 +1633,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 +1644,7 @@ void tst_QGraphicsView::mapToScene()
#endif
view.setFixedSize(viewSize);
- view.show();
+ topLevel.show();
QApplication::processEvents();
QVERIFY(view.isVisible());
QCOMPARE(view.size(), viewSize);
@@ -1804,11 +1824,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 +1849,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 +2054,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 +2084,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 +2239,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 +2259,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 +2338,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 +3260,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 +3361,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 +3376,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 +3740,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 +3768,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 +3792,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 +4249,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 +4261,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 +4376,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 +4412,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);
@@ -4394,5 +4451,59 @@ void tst_QGraphicsView::QTBUG_7438_cursor()
#endif
}
+class GraphicsItemWithHover : public QGraphicsRectItem
+{
+public:
+ GraphicsItemWithHover()
+ : receivedEnterEvent(false), receivedLeaveEvent(false),
+ enterWidget(0), leaveWidget(0)
+ {
+ setRect(0, 0, 100, 100);
+ setAcceptHoverEvents(true);
+ }
+
+ bool sceneEvent(QEvent *event)
+ {
+ if (event->type() == QEvent::GraphicsSceneHoverEnter) {
+ receivedEnterEvent = true;
+ enterWidget = static_cast<QGraphicsSceneHoverEvent *>(event)->widget();
+ } else if (event->type() == QEvent::GraphicsSceneHoverLeave) {
+ receivedLeaveEvent = true;
+ leaveWidget = static_cast<QGraphicsSceneHoverEvent *>(event)->widget();
+ }
+ return QGraphicsRectItem::sceneEvent(event);
+ }
+
+ bool receivedEnterEvent;
+ bool receivedLeaveEvent;
+ QWidget *enterWidget;
+ QWidget *leaveWidget;
+};
+
+void tst_QGraphicsView::hoverLeave()
+{
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ GraphicsItemWithHover *item = new GraphicsItemWithHover;
+ scene.addItem(item);
+
+ // move the cursor out of the way
+ QCursor::setPos(1,1);
+
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QPoint pos = view.viewport()->mapToGlobal(view.mapFromScene(item->mapToScene(10, 10)));
+ QCursor::setPos(pos);
+ QTest::qWait(200);
+ QVERIFY(item->receivedEnterEvent);
+ QCOMPARE(item->enterWidget, view.viewport());
+
+ QCursor::setPos(0,0);
+ QTest::qWait(200);
+ QVERIFY(item->receivedLeaveEvent);
+ QCOMPARE(item->leaveWidget, view.viewport());
+}
+
QTEST_MAIN(tst_QGraphicsView)
#include "tst_qgraphicsview.moc"
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/qhash/qhash.pro b/tests/auto/qhash/qhash.pro
index 86b98a27e4..16c9eabecc 100644
--- a/tests/auto/qhash/qhash.pro
+++ b/tests/auto/qhash/qhash.pro
@@ -6,3 +6,4 @@ symbian: {
TARGET.EPOCSTACKSIZE =0x5000
TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
}
+CONFIG += parallel_test
diff --git a/tests/auto/qhash/tst_qhash.cpp b/tests/auto/qhash/tst_qhash.cpp
index 3a7b54acce..ea6e01027a 100644
--- a/tests/auto/qhash/tst_qhash.cpp
+++ b/tests/auto/qhash/tst_qhash.cpp
@@ -60,6 +60,7 @@ private slots:
void erase();
void key();
+ void swap();
void count(); // copied from tst_QMap
void clear(); // copied from tst_QMap
void empty(); // copied from tst_QMap
@@ -553,6 +554,16 @@ void tst_QHash::key()
}
}
+void tst_QHash::swap()
+{
+ QHash<int,QString> h1, h2;
+ h1[0] = "h1[0]";
+ h2[1] = "h2[1]";
+ h1.swap(h2);
+ QCOMPARE(h1.value(1),QLatin1String("h2[1]"));
+ QCOMPARE(h2.value(0),QLatin1String("h1[0]"));
+}
+
// copied from tst_QMap
void tst_QHash::clear()
{
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/qhelpcontentmodel/qhelpcontentmodel.pro b/tests/auto/qhelpcontentmodel/qhelpcontentmodel.pro
index 889aac9728..a9a8ed9449 100644
--- a/tests/auto/qhelpcontentmodel/qhelpcontentmodel.pro
+++ b/tests/auto/qhelpcontentmodel/qhelpcontentmodel.pro
@@ -9,9 +9,9 @@ DEFINES += QT_USE_USING_NAMESPACE
wince*: {
DEFINES += SRCDIR=\\\"./\\\"
QT += network
- addFiles.sources = $$PWD/data/*.*
+ addFiles.files = $$PWD/data/*.*
addFiles.path = data
- clucene.sources = $$QT_BUILD_TREE/lib/QtCLucene*.dll
+ clucene.files = $$QT_BUILD_TREE/lib/QtCLucene*.dll
DEPLOYMENT += addFiles
DEPLOYMENT += clucene
diff --git a/tests/auto/qhelpenginecore/qhelpenginecore.pro b/tests/auto/qhelpenginecore/qhelpenginecore.pro
index 27ebd0fc45..4166fe2288 100644
--- a/tests/auto/qhelpenginecore/qhelpenginecore.pro
+++ b/tests/auto/qhelpenginecore/qhelpenginecore.pro
@@ -10,9 +10,9 @@ DEFINES += QT_USE_USING_NAMESPACE
wince*: {
DEFINES += SRCDIR=\\\"./\\\"
QT += network
- addFiles.sources = $$PWD/data/*.*
+ addFiles.files = $$PWD/data/*.*
addFiles.path = data
- clucene.sources = $$QT_BUILD_TREE/lib/QtCLucene*.dll
+ clucene.files = $$QT_BUILD_TREE/lib/QtCLucene*.dll
DEPLOYMENT += addFiles
DEPLOYMENT += clucene
diff --git a/tests/auto/qhttp/qhttp.pro b/tests/auto/qhttp/qhttp.pro
index b7b78f1f37..49eebd58b6 100644
--- a/tests/auto/qhttp/qhttp.pro
+++ b/tests/auto/qhttp/qhttp.pro
@@ -5,20 +5,20 @@ SOURCES += tst_qhttp.cpp
QT = core network
wince*: {
- webFiles.sources = webserver/*
+ webFiles.files = webserver/*
webFiles.path = webserver
- cgi.sources = webserver/cgi-bin/*
+ cgi.files = webserver/cgi-bin/*
cgi.path = webserver/cgi-bin
- addFiles.sources = rfc3252.txt trolltech
+ addFiles.files = rfc3252.txt trolltech
addFiles.path = .
DEPLOYMENT += addFiles webFiles cgi
DEFINES += SRCDIR=\\\"\\\"
} else:symbian {
- webFiles.sources = webserver/*
+ webFiles.files = webserver/*
webFiles.path = webserver
- cgi.sources = webserver/cgi-bin/*
+ cgi.files = webserver/cgi-bin/*
cgi.path = webserver/cgi-bin
- addFiles.sources = rfc3252.txt trolltech
+ addFiles.files = rfc3252.txt trolltech
addFiles.path = .
DEPLOYMENT += addFiles webFiles cgi
TARGET.CAPABILITY = NetworkServices
diff --git a/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp b/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
index 188ed29ec4..a9b501c566 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
@@ -177,11 +177,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);
@@ -237,11 +235,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);
@@ -317,11 +313,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);
@@ -338,8 +332,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();
@@ -409,11 +401,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);
@@ -498,14 +488,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");
@@ -551,17 +541,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;
@@ -620,11 +608,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);
@@ -670,8 +656,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();
@@ -713,17 +701,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;
@@ -771,8 +757,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/qicoimageformat/qicoimageformat.pro b/tests/auto/qicoimageformat/qicoimageformat.pro
index cabab3f4a3..c150c9af9f 100644
--- a/tests/auto/qicoimageformat/qicoimageformat.pro
+++ b/tests/auto/qicoimageformat/qicoimageformat.pro
@@ -3,21 +3,21 @@ SOURCES+= tst_qicoimageformat.cpp
wince*: {
DEFINES += SRCDIR=\\\".\\\"
- addFiles.sources = icons
+ addFiles.files = icons
addFiles.path = .
CONFIG(debug, debug|release):{
- addPlugins.sources = $$QT_BUILD_TREE/plugins/imageformats/qico4d.dll
+ addPlugins.files = $$QT_BUILD_TREE/plugins/imageformats/qico4d.dll
} else {
- addPlugins.sources = $$QT_BUILD_TREE/plugins/imageformats/qico4.dll
+ addPlugins.files = $$QT_BUILD_TREE/plugins/imageformats/qico4.dll
}
addPlugins.path = imageformats
DEPLOYMENT += addFiles addPlugins
} else:symbian {
- addFiles.sources = icons
+ addFiles.files = icons
addFiles.path = .
DEPLOYMENT += addFiles
qt_not_deployed {
- addPlugins.sources = qico.dll
+ addPlugins.files = qico.dll
addPlugins.path = imageformats
DEPLOYMENT += addPlugins
}
diff --git a/tests/auto/qicon/qicon.pro b/tests/auto/qicon/qicon.pro
index 68b888dab4..975aaf2973 100644
--- a/tests/auto/qicon/qicon.pro
+++ b/tests/auto/qicon/qicon.pro
@@ -5,10 +5,10 @@ RESOURCES = tst_qicon.qrc
wince* {
QT += xml svg
- addFiles.sources += $$_PRO_FILE_PWD_/*.png
- addFiles.sources += $$_PRO_FILE_PWD_/*.svg
- addFiles.sources += $$_PRO_FILE_PWD_/*.svgz
- addFiles.sources += $$_PRO_FILE_PWD_/tst_qicon.cpp
+ addFiles.files += $$_PRO_FILE_PWD_/*.png
+ addFiles.files += $$_PRO_FILE_PWD_/*.svg
+ addFiles.files += $$_PRO_FILE_PWD_/*.svgz
+ addFiles.files += $$_PRO_FILE_PWD_/tst_qicon.cpp
addFiles.path = .
DEPLOYMENT += addFiles
@@ -16,11 +16,11 @@ wince* {
DEFINES += SRCDIR=\\\".\\\"
} else:symbian {
QT += xml svg
- addFiles.sources = *.png tst_qicon.cpp *.svg *.svgz
+ addFiles.files = *.png tst_qicon.cpp *.svg *.svgz
addFiles.path = .
DEPLOYMENT += addFiles
qt_not_deployed {
- plugins.sources = qsvgicon.dll
+ plugins.files = qsvgicon.dll
plugins.path = iconengines
DEPLOYMENT += plugins
}
diff --git a/tests/auto/qicon/tst_qicon.cpp b/tests/auto/qicon/tst_qicon.cpp
index e68664c91f..6b35378645 100644
--- a/tests/auto/qicon/tst_qicon.cpp
+++ b/tests/auto/qicon/tst_qicon.cpp
@@ -70,6 +70,7 @@ private slots:
void actualSize2();
void svgActualSize();
void isNull();
+ void swap();
void bestMatch();
void cacheKey();
void detach();
@@ -259,6 +260,21 @@ void tst_QIcon::isNull() {
QVERIFY(iconSupportedFormat.actualSize(QSize(32, 32)).isValid());
}
+void tst_QIcon::swap()
+{
+ QPixmap p1(1, 1), p2(2, 2);
+ p1.fill(Qt::black);
+ p2.fill(Qt::black);
+
+ QIcon i1(p1), i2(p2);
+ const qint64 i1k = i1.cacheKey();
+ const qint64 i2k = i2.cacheKey();
+ QVERIFY(i1k != i2k);
+ i1.swap(i2);
+ QCOMPARE(i1.cacheKey(), i2k);
+ QCOMPARE(i2.cacheKey(), i1k);
+}
+
void tst_QIcon::bestMatch()
{
QPixmap p1(1, 1);
diff --git a/tests/auto/qimage/qimage.pro b/tests/auto/qimage/qimage.pro
index 6469211872..798c82ea2d 100644
--- a/tests/auto/qimage/qimage.pro
+++ b/tests/auto/qimage/qimage.pro
@@ -2,17 +2,17 @@ load(qttest_p4)
SOURCES += tst_qimage.cpp
wince*: {
- addImages.sources = images/*
+ addImages.files = images/*
addImages.path = images
DEPLOYMENT += addImages
DEFINES += SRCDIR=\\\".\\\"
} else:symbian {
TARGET.EPOCHEAPSIZE = 0x200000 0x800000
- addImages.sources = images/*
+ addImages.files = images/*
addImages.path = images
DEPLOYMENT += addImages
qt_not_deployed {
- imagePlugins.sources = qjpeg.dll qgif.dll qmng.dll qtiff.dll qico.dll
+ imagePlugins.files = qjpeg.dll qgif.dll qmng.dll qtiff.dll qico.dll
imagePlugins.path = imageformats
DEPLOYMENT += imagePlugins
}
diff --git a/tests/auto/qimage/tst_qimage.cpp b/tests/auto/qimage/tst_qimage.cpp
index 6b8028cfa9..6cce05cd19 100644
--- a/tests/auto/qimage/tst_qimage.cpp
+++ b/tests/auto/qimage/tst_qimage.cpp
@@ -69,6 +69,7 @@ public:
tst_QImage();
private slots:
+ void swap();
void create();
void createInvalidXPM();
void createFromUChar();
@@ -155,6 +156,20 @@ tst_QImage::tst_QImage()
{
}
+void tst_QImage::swap()
+{
+ QImage i1( 16, 16, QImage::Format_RGB32 ), i2( 32, 32, QImage::Format_RGB32 );
+ i1.fill( Qt::white );
+ i2.fill( Qt::black );
+ const qint64 i1k = i1.cacheKey();
+ const qint64 i2k = i2.cacheKey();
+ i1.swap(i2);
+ QCOMPARE(i1.cacheKey(), i2k);
+ QCOMPARE(i1.size(), QSize(32,32));
+ QCOMPARE(i2.cacheKey(), i1k);
+ QCOMPARE(i2.size(), QSize(16,16));
+}
+
// Test if QImage (or any functions called from QImage) throws an
// exception when creating an extremely large image.
// QImage::create() should return "false" in this case.
diff --git a/tests/auto/qimagereader/qimagereader.pro b/tests/auto/qimagereader/qimagereader.pro
index f8fc7fa395..827819dea5 100644
--- a/tests/auto/qimagereader/qimagereader.pro
+++ b/tests/auto/qimagereader/qimagereader.pro
@@ -17,10 +17,10 @@ win32-msvc.net:QMAKE_CXXFLAGS -= -Zm300
win32-msvc.net:QMAKE_CXXFLAGS += -Zm1100
wince*: {
- images.sources = images
+ images.files = images
images.path = .
- imagePlugins.sources = $$QT_BUILD_TREE/plugins/imageformats/*.dll
+ imagePlugins.files = $$QT_BUILD_TREE/plugins/imageformats/*.dll
imagePlugins.path = imageformats
DEPLOYMENT += images imagePlugins
@@ -28,13 +28,13 @@ wince*: {
}
symbian: {
- images.sources = images
+ images.files = images
images.path = .
DEPLOYMENT += images
qt_not_deployed {
- imagePlugins.sources = qjpeg.dll qgif.dll qmng.dll
+ imagePlugins.files = qjpeg.dll qgif.dll qmng.dll
imagePlugins.path = imageformats
DEPLOYMENT += imagePlugins
diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp
index a6fb886a6b..5742a97c81 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
@@ -180,6 +182,9 @@ private slots:
void saveFormat_data();
void saveFormat();
+
+ void preserveTexts_data();
+ void preserveTexts();
};
static const QLatin1String prefix(SRCDIR "/images/");
@@ -315,23 +320,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);
}
}
@@ -1956,5 +1965,64 @@ void tst_QImageReader::saveFormat()
}
+void tst_QImageReader::preserveTexts_data()
+{
+ QTest::addColumn<QString>("text");
+
+ QTest::newRow("Simple") << "simpletext";
+ QTest::newRow("Whitespace") << " A text with whitespace ";
+ QTest::newRow("Newline") << "A text\nwith newlines\n";
+ QTest::newRow("Double newlines") << "A text\n\nwith double newlines\n\n";
+ QTest::newRow("Long") << QString("A rather long text, at least after many repetitions. ").repeated(100);
+ QString latin1set;
+ int c;
+ for(c = 0x20; c <= 0x7e; c++)
+ latin1set.append(QLatin1Char(c));
+ for(c = 0xa0; c <= 0xff; c++)
+ latin1set.append(QLatin1Char(c));
+ QTest::newRow("All Latin1 chars") << latin1set;
+
+#if 0
+ // Depends on iTXt support in libpng
+ QTest::newRow("Multibyte string") << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242\341\233\232\341\232\240");
+#endif
+}
+
+
+void tst_QImageReader::preserveTexts()
+{
+ QFETCH(QString, text);
+ QString key("testkey");
+ QString key2("testkey2");
+ QString text2("Some other text.");
+ QString key3("testkey3");
+ QString text3("Some more other text.");
+
+ QImage img(":/images/kollada.png");
+ img.setText(key, text);
+ img.setText(key2, text2);
+ QBuffer buf;
+ buf.open(QIODevice::WriteOnly);
+ QVERIFY(img.save(&buf, "png"));
+ buf.close();
+ QImage stored = QImage::fromData(buf.buffer(), "png");
+ QCOMPARE(stored.text(key), text);
+ QCOMPARE(stored.text(key2), text2);
+
+ QImage img2(":/images/kollada.png");
+ img2.setText(key3, text3);
+ QBuffer buf2;
+ QImageWriter w(&buf2, "png");
+ w.setText(key, text);
+ w.setText(key2, text2);
+ QVERIFY(w.write(img2));
+ buf2.close();
+ QImageReader r(&buf2, "png");
+ QCOMPARE(r.text(key), text.simplified());
+ QCOMPARE(r.text(key2), text2.simplified());
+ QCOMPARE(r.text(key3), text3.simplified());
+}
+
+
QTEST_MAIN(tst_QImageReader)
#include "tst_qimagereader.moc"
diff --git a/tests/auto/qimagewriter/qimagewriter.pro b/tests/auto/qimagewriter/qimagewriter.pro
index f25472fe68..bab241977b 100644
--- a/tests/auto/qimagewriter/qimagewriter.pro
+++ b/tests/auto/qimagewriter/qimagewriter.pro
@@ -6,16 +6,16 @@ win32-msvc:QMAKE_CXXFLAGS -= -Zm200
win32-msvc:QMAKE_CXXFLAGS += -Zm800
wince*: {
- addFiles.sources = images\\*.*
+ addFiles.files = images\\*.*
addFiles.path = images
DEPLOYMENT += addFiles
DEFINES += SRCDIR=\\\".\\\"
} else:symbian {
- addFiles.sources = images\\*.*
+ addFiles.files = images\\*.*
addFiles.path = images
DEPLOYMENT += addFiles
qt_not_deployed {
- imagePlugins.sources = qjpeg.dll qtiff.dll
+ imagePlugins.files = qjpeg.dll qtiff.dll
imagePlugins.path = imageformats
DEPLOYMENT += imagePlugins
}
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 0d6644a502..580c6442ab 100644
--- a/tests/auto/qinputdialog/tst_qinputdialog.cpp
+++ b/tests/auto/qinputdialog/tst_qinputdialog.cpp
@@ -74,6 +74,7 @@ private slots:
void getItem_data();
void getItem();
void task256299_getTextReturnNullStringOnRejected();
+ void inputMethodHintsOfChildWidget();
};
QString stripFraction(const QString &s)
@@ -146,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>
@@ -168,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();
@@ -184,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)
@@ -404,5 +407,24 @@ void tst_QInputDialog::getItem()
delete parent;
}
+void tst_QInputDialog::inputMethodHintsOfChildWidget()
+{
+ QInputDialog dialog;
+ dialog.setInputMode(QInputDialog::TextInput);
+ QList<QObject *> children = dialog.children();
+ QLineEdit *editWidget = 0;
+ for (int c = 0; c < children.size(); c++) {
+ editWidget = qobject_cast<QLineEdit *>(children.at(c));
+ if (editWidget)
+ break;
+ }
+ QVERIFY(editWidget);
+ QCOMPARE(editWidget->inputMethodHints(), dialog.inputMethodHints());
+ QCOMPARE(editWidget->inputMethodHints(), Qt::ImhNone);
+ dialog.setInputMethodHints(Qt::ImhDigitsOnly);
+ QCOMPARE(editWidget->inputMethodHints(), dialog.inputMethodHints());
+ QCOMPARE(editWidget->inputMethodHints(), Qt::ImhDigitsOnly);
+}
+
QTEST_MAIN(tst_QInputDialog)
#include "tst_qinputdialog.moc"
diff --git a/tests/auto/qiodevice/qiodevice.pro b/tests/auto/qiodevice/qiodevice.pro
index 716cdcef10..29b0a05ddc 100644
--- a/tests/auto/qiodevice/qiodevice.pro
+++ b/tests/auto/qiodevice/qiodevice.pro
@@ -4,14 +4,14 @@ SOURCES += tst_qiodevice.cpp
QT = core network
wince*: {
- addFiles.sources = tst_qiodevice.cpp
+ addFiles.files = tst_qiodevice.cpp
addFiles.path = .
DEPLOYMENT += addFiles
DEFINES += SRCDIR=\\\"\\\"
!wince50standard-x86-msvc2005: DEFINES += WINCE_EMULATOR_TEST=1
} else:symbian {
# SRCDIR defined in code in symbian
- addFiles.sources = tst_qiodevice.cpp
+ addFiles.files = tst_qiodevice.cpp
addFiles.path = .
DEPLOYMENT += addFiles
TARGET.CAPABILITY = NetworkServices
diff --git a/tests/auto/qitemmodel/qitemmodel.pro b/tests/auto/qitemmodel/qitemmodel.pro
index 92709febae..b348a183f8 100644
--- a/tests/auto/qitemmodel/qitemmodel.pro
+++ b/tests/auto/qitemmodel/qitemmodel.pro
@@ -9,7 +9,7 @@ QT += sql
# memory on Windows Mobile 5.
#wince*: {
-# plugFiles.sources = $$QT_BUILD_TREE/plugins/sqldrivers/*.dll
+# plugFiles.files = $$QT_BUILD_TREE/plugins/sqldrivers/*.dll
# plugFiles.path = sqldrivers
# DEPLOYMENT += plugFiles
#}
@@ -19,7 +19,7 @@ symbian {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
diff --git a/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp b/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp
index 69b1390c74..865243b58f 100644
--- a/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp
+++ b/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp
@@ -100,6 +100,8 @@ private slots:
void testDifferentModels();
+ void testValidRangesInSelectionsAfterReset();
+
private:
QAbstractItemModel *model;
QItemSelectionModel *selection;
@@ -2589,5 +2591,69 @@ void tst_QItemSelectionModel::testDifferentModels()
QVERIFY(newSelection.isEmpty());
}
+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..256f9f3ffc 100644
--- a/tests/auto/qkeysequence/tst_qkeysequence.cpp
+++ b/tests/auto/qkeysequence/tst_qkeysequence.cpp
@@ -112,6 +112,7 @@ public:
virtual ~tst_QKeySequence();
private slots:
+ void swap();
void operatorQString_data();
void operatorQString();
void compareConstructors_data();
@@ -176,6 +177,15 @@ void tst_QKeySequence::initTestCase()
qtTranslator->load(":/qt_de");
}
+void tst_QKeySequence::swap()
+{
+ QKeySequence ks1(Qt::CTRL+Qt::Key_O);
+ QKeySequence ks2(Qt::CTRL+Qt::Key_L);
+ ks1.swap(ks2);
+ QCOMPARE(ks1[0], int(Qt::CTRL+Qt::Key_L));
+ QCOMPARE(ks2[0], int(Qt::CTRL+Qt::Key_O));
+}
+
void tst_QKeySequence::operatorQString_data()
{
QTest::addColumn<int>("modifiers");
diff --git a/tests/auto/qlabel/qlabel.pro b/tests/auto/qlabel/qlabel.pro
index 297f868b3e..057a6f1509 100644
--- a/tests/auto/qlabel/qlabel.pro
+++ b/tests/auto/qlabel/qlabel.pro
@@ -3,7 +3,7 @@ SOURCES += tst_qlabel.cpp
wince*::DEFINES += SRCDIR=\\\"\\\"
else:!symbian:DEFINES += SRCDIR=\\\"$$PWD/\\\"
wince*|symbian {
- addFiles.sources = *.png \
+ addFiles.files = *.png \
testdata
addFiles.path = .
DEPLOYMENT += addFiles
diff --git a/tests/auto/qlayout/qlayout.pro b/tests/auto/qlayout/qlayout.pro
index c99f1d9fcf..dfa8584653 100644
--- a/tests/auto/qlayout/qlayout.pro
+++ b/tests/auto/qlayout/qlayout.pro
@@ -7,7 +7,7 @@ load(qttest_p4)
SOURCES += tst_qlayout.cpp
contains(QT_CONFIG, qt3support): QT += qt3support
wince*|symbian: {
- addFiles.sources = baseline
+ addFiles.files = baseline
addFiles.path = .
DEPLOYMENT += addFiles
}
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/qlibrary/qlibrary.pro b/tests/auto/qlibrary/qlibrary.pro
index fd5790b209..5dc129fbf9 100644
--- a/tests/auto/qlibrary/qlibrary.pro
+++ b/tests/auto/qlibrary/qlibrary.pro
@@ -15,3 +15,4 @@ TARGET = tst_qlibrary
# no special install rule for subdir
INSTALLS =
+CONFIG += parallel_test
diff --git a/tests/auto/qlibrary/tst/tst.pro b/tests/auto/qlibrary/tst/tst.pro
index 4c647c005d..28c40b0b42 100644
--- a/tests/auto/qlibrary/tst/tst.pro
+++ b/tests/auto/qlibrary/tst/tst.pro
@@ -12,18 +12,18 @@ win32 {
}
wince*: {
- addFiles.sources = ../*.dll ../*.dl2 ../mylib_noextension
+ addFiles.files = ../*.dll ../*.dl2 ../mylib_noextension
addFiles.path = .
DEPLOYMENT += addFiles
DEFINES += SRCDIR=\\\"\\\"
}else:symbian {
- binDep.sources = \
+ binDep.files = \
mylib.dll \
system.trolltech.test.mylib.dll
binDep.path = /sys/bin
#mylib.dl2 nonstandard binary deployment will cause warning in emulator,
#but it can be safely ignored.
- custBinDep.sources = mylib.dl2
+ custBinDep.files = mylib.dl2
custBinDep.path = /sys/bin
DEPLOYMENT += binDep custBinDep
diff --git a/tests/auto/qline/qline.pro b/tests/auto/qline/qline.pro
index 4651fd324f..6e9af24476 100644
--- a/tests/auto/qline/qline.pro
+++ b/tests/auto/qline/qline.pro
@@ -4,3 +4,4 @@ SOURCES += tst_qline.cpp
unix:!mac:!symbian:!vxworks:LIBS+=-lm
+CONFIG += parallel_test
diff --git a/tests/auto/qlist/tst_qlist.cpp b/tests/auto/qlist/tst_qlist.cpp
index 14b8057486..9ab7cf7ad9 100644
--- a/tests/auto/qlist/tst_qlist.cpp
+++ b/tests/auto/qlist/tst_qlist.cpp
@@ -499,6 +499,13 @@ void tst_QList::swap() const
// swap again
list.swap(1, 2);
QCOMPARE(list, QList<QString>() << "baz" << "foo" << "bar");
+
+ QList<QString> list2;
+ list2 << "alpha" << "beta";
+
+ list.swap(list2);
+ QCOMPARE(list, QList<QString>() << "alpha" << "beta");
+ QCOMPARE(list2, QList<QString>() << "baz" << "foo" << "bar");
}
void tst_QList::takeAt() const
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..10f07c531c 100644
--- a/tests/auto/qlistwidget/tst_qlistwidget.cpp
+++ b/tests/auto/qlistwidget/tst_qlistwidget.cpp
@@ -133,6 +133,7 @@ private slots:
void task217070_scrollbarsAdjusted();
void task258949_keypressHangup();
void QTBUG8086_currentItemChangedOnClick();
+ void QTBUG14363_completerWithAnyKeyPressedEditTriggers();
protected slots:
@@ -1499,6 +1500,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 +1519,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 +1540,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();
@@ -1640,5 +1650,44 @@ void tst_QListWidget::QTBUG8086_currentItemChangedOnClick()
}
+class ItemDelegate : public QItemDelegate
+{
+public:
+ ItemDelegate(QObject *parent = 0) : QItemDelegate(parent)
+ {}
+ virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &, const QModelIndex &) const
+ {
+ QLineEdit *lineEdit = new QLineEdit(parent);
+ lineEdit->setFrame(false);
+ QCompleter *completer = new QCompleter(QStringList() << "completer", lineEdit);
+ completer->setCompletionMode(QCompleter::InlineCompletion);
+ lineEdit->setCompleter(completer);
+ return lineEdit;
+ }
+};
+
+void tst_QListWidget::QTBUG14363_completerWithAnyKeyPressedEditTriggers()
+{
+ QListWidget listWidget;
+ listWidget.setEditTriggers(QAbstractItemView::AnyKeyPressed);
+ listWidget.setItemDelegate(new ItemDelegate);
+ QListWidgetItem *item = new QListWidgetItem(QLatin1String("select an item (don't start editing)"), &listWidget);
+ item->setFlags(Qt::ItemIsEnabled|Qt::ItemIsSelectable|Qt::ItemIsEditable);
+ new QListWidgetItem(QLatin1String("try to type the letter 'c'"), &listWidget);
+ new QListWidgetItem(QLatin1String("completer"), &listWidget);
+ listWidget.show();
+ listWidget.setCurrentItem(item);
+ QTest::qWaitForWindowShown(&listWidget);
+
+ QTest::keyClick(listWidget.viewport(), Qt::Key_C);
+
+ QLineEdit *le = qobject_cast<QLineEdit*>(listWidget.itemWidget(item));
+ QVERIFY(le);
+ QCOMPARE(le->text(), QString("completer"));
+ QCOMPARE(le->completer()->currentCompletion(), QString("completer"));
+}
+
+
+
QTEST_MAIN(tst_QListWidget)
#include "tst_qlistwidget.moc"
diff --git a/tests/auto/qlocale/test/test.pro b/tests/auto/qlocale/test/test.pro
index 6512e19465..8117708c46 100644
--- a/tests/auto/qlocale/test/test.pro
+++ b/tests/auto/qlocale/test/test.pro
@@ -22,7 +22,7 @@ QT += network
embedded: QT += gui
wince*: {
- addFiles.sources = \
+ addFiles.files = \
../syslocaleapp
addFiles.path = "\\Program Files\\tst_qlocale"
diff --git a/tests/auto/qlocalsocket/test/test.pro b/tests/auto/qlocalsocket/test/test.pro
index 0ee1cb699a..b2755b5411 100644
--- a/tests/auto/qlocalsocket/test/test.pro
+++ b/tests/auto/qlocalsocket/test/test.pro
@@ -28,19 +28,19 @@ CONFIG(debug_and_release) {
}
wince* {
- additionalFiles.sources = ../lackey/lackey.exe
+ additionalFiles.files = ../lackey/lackey.exe
additionalFiles.path = lackey
}
symbian {
- additionalFiles.sources = lackey.exe
+ additionalFiles.files = lackey.exe
additionalFiles.path = \\sys\\bin
TARGET.UID3 = 0xE0340005
DEFINES += SYMBIAN_SRCDIR_UID=$$lower($$replace(TARGET.UID3,"0x",""))
}
wince*|symbian {
- scriptFiles.sources = ../lackey/scripts/*.js
+ scriptFiles.files = ../lackey/scripts/*.js
scriptFiles.path = lackey/scripts
DEPLOYMENT += additionalFiles scriptFiles
QT += script # for easy deployment of QtScript
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/qmap/qmap.pro b/tests/auto/qmap/qmap.pro
index 00b84d133d..eaed926481 100644
--- a/tests/auto/qmap/qmap.pro
+++ b/tests/auto/qmap/qmap.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qmap.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmap/tst_qmap.cpp b/tests/auto/qmap/tst_qmap.cpp
index a1b8de72fd..311b0b6e46 100644
--- a/tests/auto/qmap/tst_qmap.cpp
+++ b/tests/auto/qmap/tst_qmap.cpp
@@ -65,6 +65,8 @@ private slots:
void beginEnd();
void key();
+ void swap();
+
void operator_eq();
void empty();
@@ -392,6 +394,16 @@ void tst_QMap::key()
}
}
+void tst_QMap::swap()
+{
+ QMap<int,QString> m1, m2;
+ m1[0] = "m1[0]";
+ m2[1] = "m2[1]";
+ m1.swap(m2);
+ QCOMPARE(m1.value(1),QLatin1String("m2[1]"));
+ QCOMPARE(m2.value(0),QLatin1String("m1[0]"));
+}
+
void tst_QMap::operator_eq()
{
{
diff --git a/tests/auto/qmargins/qmargins.pro b/tests/auto/qmargins/qmargins.pro
index 5a6aa4f26a..0404da0424 100644
--- a/tests/auto/qmargins/qmargins.pro
+++ b/tests/auto/qmargins/qmargins.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmargins.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmath/qmath.pro b/tests/auto/qmath/qmath.pro
index 03134ee4e1..e5784ce7aa 100644
--- a/tests/auto/qmath/qmath.pro
+++ b/tests/auto/qmath/qmath.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qmath.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/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/qmetatype/qmetatype.pro b/tests/auto/qmetatype/qmetatype.pro
index a84d238aa4..ed1de83927 100644
--- a/tests/auto/qmetatype/qmetatype.pro
+++ b/tests/auto/qmetatype/qmetatype.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmetatype.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/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/qmovie/qmovie.pro b/tests/auto/qmovie/qmovie.pro
index 510a70e31a..6973955dbc 100644
--- a/tests/auto/qmovie/qmovie.pro
+++ b/tests/auto/qmovie/qmovie.pro
@@ -7,19 +7,19 @@ MOC_DIR=tmp
!contains(QT_CONFIG, no-mng):DEFINES += QTEST_HAVE_MNG
wince*: {
- addFiles.sources = animations\\*
+ addFiles.files = animations\\*
addFiles.path = animations
DEPLOYMENT += addFiles
}
symbian: {
- addFiles.sources = animations\\*
+ addFiles.files = animations\\*
addFiles.path = animations
DEPLOYMENT += addFiles
qt_not_deployed {
- imagePlugins.sources = qjpeg.dll qgif.dll qmng.dll
+ imagePlugins.files = qjpeg.dll qgif.dll qmng.dll
imagePlugins.path = imageformats
DEPLOYMENT += imagePlugins
}
diff --git a/tests/auto/qmutex/qmutex.pro b/tests/auto/qmutex/qmutex.pro
index bd24dcb35f..760dcfd2d8 100644
--- a/tests/auto/qmutex/qmutex.pro
+++ b/tests/auto/qmutex/qmutex.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmutex.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmutexlocker/qmutexlocker.pro b/tests/auto/qmutexlocker/qmutexlocker.pro
index ff8a3da7eb..01c369101b 100644
--- a/tests/auto/qmutexlocker/qmutexlocker.pro
+++ b/tests/auto/qmutexlocker/qmutexlocker.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmutexlocker.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qnetworkreply/test/test.pro b/tests/auto/qnetworkreply/test/test.pro
index 6e1b1e3e14..7efc2fb24b 100644
--- a/tests/auto/qnetworkreply/test/test.pro
+++ b/tests/auto/qnetworkreply/test/test.pro
@@ -16,17 +16,17 @@ QT = core network
RESOURCES += ../qnetworkreply.qrc
wince*: {
- addFiles.sources = ../empty ../rfc3252.txt ../resource
+ addFiles.files = ../empty ../rfc3252.txt ../resource
addFiles.path = .
DEPLOYMENT += addFiles
}
symbian:{
- addFiles.sources = ../empty ../rfc3252.txt ../resource ../bigfile
+ addFiles.files = ../empty ../rfc3252.txt ../resource ../bigfile
addFiles.path = .
DEPLOYMENT += addFiles
- certFiles.sources = ../certs
+ certFiles.files = ../certs
certFiles.path = .
DEPLOYMENT += certFiles
diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
index f7f0519840..fff7f66bb6 100644
--- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
@@ -193,6 +193,8 @@ private Q_SLOTS:
void ioGetFromFtpWithReuse();
void ioGetFromHttp();
+ void ioGetFromBuiltinHttp_data();
+ void ioGetFromBuiltinHttp();
void ioGetFromHttpWithReuseParallel();
void ioGetFromHttpWithReuseSequential();
void ioGetFromHttpWithAuth();
@@ -299,6 +301,16 @@ private Q_SLOTS:
void ioGetFromHttpBrokenChunkedEncoding();
void qtbug12908compressedHttpReply();
+ void getFromUnreachableIp();
+
+ void qtbug4121unknownAuthentication();
+
+ void qtbug13431replyThrottling();
+
+ void httpWithNoCredentialUsage();
+
+ void qtbug15311doubleContentLength();
+
// NOTE: This test must be last!
void parentingRepliesToTheApp();
};
@@ -349,6 +361,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
@@ -359,24 +379,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();
@@ -388,6 +450,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);
@@ -560,17 +625,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();
@@ -578,90 +715,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
@@ -670,40 +838,85 @@ 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";
}
};
@@ -3169,8 +3382,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;
@@ -3260,6 +3473,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");
@@ -3444,8 +3744,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;
@@ -3453,6 +3755,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)";
@@ -3838,8 +4144,23 @@ 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::proxyChange()
{
+ ProxyChangeHelper helper;
MiniHttpServer proxyServer(
"HTTP/1.0 200 OK\r\nProxy-Connection: keep-alive\r\n"
"Content-Length: 1\r\n\r\n1");
@@ -3849,30 +4170,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);
@@ -4573,6 +4879,147 @@ 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"));
+}
+
+
+
// NOTE: This test must be last testcase in tst_qnetworkreply!
void tst_QNetworkReply::parentingRepliesToTheApp()
{
diff --git a/tests/auto/qnumeric/qnumeric.pro b/tests/auto/qnumeric/qnumeric.pro
index 162f980f9c..c0af962a79 100644
--- a/tests/auto/qnumeric/qnumeric.pro
+++ b/tests/auto/qnumeric/qnumeric.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qnumeric.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qobject/qobject.pro b/tests/auto/qobject/qobject.pro
index b6b3f20f22..113e14a61d 100644
--- a/tests/auto/qobject/qobject.pro
+++ b/tests/auto/qobject/qobject.pro
@@ -1,2 +1,3 @@
TEMPLATE = subdirs
SUBDIRS = tst_qobject.pro signalbug.pro
+CONFIG += parallel_test
diff --git a/tests/auto/qobject/tst_qobject.cpp b/tests/auto/qobject/tst_qobject.cpp
index 24cd5a35e1..a09f109e1c 100644
--- a/tests/auto/qobject/tst_qobject.cpp
+++ b/tests/auto/qobject/tst_qobject.cpp
@@ -134,6 +134,7 @@ private slots:
void connectConstructorByMetaMethod();
void disconnectByMetaMethod();
void disconnectNotSignalMetaMethod();
+ void autoConnectionBehavior();
protected:
};
@@ -3847,5 +3848,82 @@ void tst_QObject::disconnectNotSignalMetaMethod()
QVERIFY(!QObject::disconnect(&s, slot, &r, QMetaMethod()));
}
+class ThreadAffinityThread : public QThread
+{
+public:
+ SenderObject *sender;
+
+ ThreadAffinityThread(SenderObject *sender)
+ : sender(sender)
+ { }
+ void run()
+ {
+ sender->emitSignal1();
+ }
+};
+
+void tst_QObject::autoConnectionBehavior()
+{
+ SenderObject *sender = new SenderObject;
+ ReceiverObject *receiver = new ReceiverObject;
+ connect(sender, SIGNAL(signal1()), receiver, SLOT(slot1()));
+
+ // at emit, currentThread == sender->thread(), currentThread == receiver->thread(), sender->thread() == receiver->thread()
+ QVERIFY(!receiver->called(1));
+ sender->emitSignal1();
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread != receiver->thread(), sender->thread() == receiver->thread()
+ ThreadAffinityThread emitThread1(sender);
+ QVERIFY(!receiver->called(1));
+ emitThread1.start();
+ QVERIFY(emitThread1.wait(30000));
+ QVERIFY(!receiver->called(1));
+ QCoreApplication::sendPostedEvents(receiver, QEvent::MetaCall);
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread == sender->thread(), currentThread != receiver->thread(), sender->thread() != receiver->thread()
+ sender->moveToThread(&emitThread1);
+ QVERIFY(!receiver->called(1));
+ emitThread1.start();
+ QVERIFY(emitThread1.wait(30000));
+ QVERIFY(!receiver->called(1));
+ QCoreApplication::sendPostedEvents(receiver, QEvent::MetaCall);
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread == receiver->thread(), sender->thread() != receiver->thread()
+ QVERIFY(!receiver->called(1));
+ sender->emitSignal1();
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread != receiver->thread(), sender->thread() != receiver->thread()
+ ThreadAffinityThread emitThread2(sender);
+ QThread receiverThread;
+ QTimer *timer = new QTimer;
+ timer->setSingleShot(true);
+ timer->setInterval(100);
+ connect(&receiverThread, SIGNAL(started()), timer, SLOT(start()));
+ connect(timer, SIGNAL(timeout()), &receiverThread, SLOT(quit()), Qt::DirectConnection);
+ connect(&receiverThread, SIGNAL(finished()), timer, SLOT(deleteLater()));
+ timer->moveToThread(&receiverThread);
+
+ receiver->moveToThread(&receiverThread);
+ QVERIFY(!receiver->called(1));
+ emitThread2.start();
+ QVERIFY(emitThread2.wait(30000));
+ QVERIFY(!receiver->called(1));
+ receiverThread.start();
+ QVERIFY(receiverThread.wait(30000));
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ delete sender;
+ delete receiver;
+}
+
QTEST_MAIN(tst_QObject)
#include "tst_qobject.moc"
diff --git a/tests/auto/qobject/tst_qobject.pro b/tests/auto/qobject/tst_qobject.pro
index 1d6993ab52..5745e671c2 100644
--- a/tests/auto/qobject/tst_qobject.pro
+++ b/tests/auto/qobject/tst_qobject.pro
@@ -10,12 +10,12 @@ QT = core \
gui
contains(QT_CONFIG, qt3support):DEFINES += QT_HAS_QT3SUPPORT
wince*: {
- addFiles.sources = signalbug.exe
+ addFiles.files = signalbug.exe
addFiles.path = .
DEPLOYMENT += addFiles
}
symbian: {
- addFiles.sources = signalbug.exe
+ addFiles.files = signalbug.exe
addFiles.path = \\sys\\bin
DEPLOYMENT += addFiles
}
diff --git a/tests/auto/qobjectrace/qobjectrace.pro b/tests/auto/qobjectrace/qobjectrace.pro
index 322adff6a0..526875b69d 100644
--- a/tests/auto/qobjectrace/qobjectrace.pro
+++ b/tests/auto/qobjectrace/qobjectrace.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qobjectrace.cpp
QT = core
TARGET.EPOCHEAPSIZE = 20000000 40000000
+CONFIG += parallel_test
diff --git a/tests/auto/qpainter/qpainter.pro b/tests/auto/qpainter/qpainter.pro
index 69dc98d6a9..ee624e1ef6 100644
--- a/tests/auto/qpainter/qpainter.pro
+++ b/tests/auto/qpainter/qpainter.pro
@@ -2,7 +2,7 @@ load(qttest_p4)
contains(QT_CONFIG, qt3support): QT += qt3support
SOURCES += tst_qpainter.cpp
wince*|symbian: {
- addFiles.sources = drawEllipse drawLine_rop_bitmap drawPixmap_rop drawPixmap_rop_bitmap task217400.png
+ addFiles.files = drawEllipse drawLine_rop_bitmap drawPixmap_rop drawPixmap_rop_bitmap task217400.png
addFiles.path = .
DEPLOYMENT += addFiles
}
diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp
index f7db6b332c..ab380a6521 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>
@@ -258,6 +259,9 @@ private slots:
void drawPointScaled();
+ void QTBUG14614_gradientCacheRaceCondition();
+ void drawTextOpacity();
+
private:
void fillData();
void setPenColor(QPainter& p);
@@ -4578,32 +4582,6 @@ void tst_QPainter::drawText_subPixelPositionsInRaster_qtbug5053()
#if !defined(Q_WS_MAC) || !defined(QT_MAC_USE_COCOA)
QSKIP("Only Mac/Cocoa supports sub pixel positions in raster engine currently", SkipAll);
#endif
-
- int w = 10, h = 10;
- QImage image(w, h, QImage::Format_RGB32);
- image.fill(0xffffffff);
- QPainter p(&image);
- p.drawText(0, h, "X\\");
- p.end();
-
- bool foundNonGrayPixel = false;
- const int *bits = (const int *) ((const QImage &) image).bits();
- int bpl = image.bytesPerLine() / 4;
- for (int y=0; y<w; ++y) {
- for (int x=0; x<h; ++x) {
- int r = qRed(bits[x]);
- int g = qGreen(bits[x]);
- int b = qBlue(bits[x]);
- if (r != g || r != b) {
- foundNonGrayPixel = true;
- break;
- }
- }
- bits += bpl;
- }
- if (!foundNonGrayPixel)
- QSKIP("Font smoothing must be turned on for this test", SkipAll);
-
QFontMetricsF fm(qApp->font());
QImage baseLine(fm.width(QChar::fromLatin1('e')), fm.height(), QImage::Format_RGB32);
@@ -4652,6 +4630,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/qpainterpath/tst_qpainterpath.cpp b/tests/auto/qpainterpath/tst_qpainterpath.cpp
index d0cdddac07..19b315637c 100644
--- a/tests/auto/qpainterpath/tst_qpainterpath.cpp
+++ b/tests/auto/qpainterpath/tst_qpainterpath.cpp
@@ -60,6 +60,8 @@ public:
private slots:
void getSetCheck();
+ void swap();
+
void contains_QPointF_data();
void contains_QPointF();
@@ -139,6 +141,17 @@ void tst_QPainterPath::getSetCheck()
QCOMPARE(qreal(1.1), obj1.curveThreshold());
}
+void tst_QPainterPath::swap()
+{
+ QPainterPath p1;
+ p1.addRect( 0, 0,10,10);
+ QPainterPath p2;
+ p2.addRect(10,10,10,10);
+ p1.swap(p2);
+ QCOMPARE(p1.boundingRect().toRect(), QRect(10,10,10,10));
+ QCOMPARE(p2.boundingRect().toRect(), QRect( 0, 0,10,10));
+}
+
Q_DECLARE_METATYPE(QPainterPath)
Q_DECLARE_METATYPE(QPointF)
Q_DECLARE_METATYPE(QRectF)
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/qpauseanimation/tst_qpauseanimation.cpp b/tests/auto/qpauseanimation/tst_qpauseanimation.cpp
index 605cee62c7..378eb1c5f0 100644
--- a/tests/auto/qpauseanimation/tst_qpauseanimation.cpp
+++ b/tests/auto/qpauseanimation/tst_qpauseanimation.cpp
@@ -394,7 +394,10 @@ void tst_QPauseAnimation::multipleSequentialGroups()
QVERIFY(subgroup3.state() == QAbstractAnimation::Running);
QVERIFY(subgroup4.state() == QAbstractAnimation::Running);
- QTest::qWait(group.totalDuration() + 100);
+ // This is a pretty long animation so it tends to get rather out of sync
+ // when using the consistent timer, so run for an extra half second for good
+ // measure...
+ QTest::qWait(group.totalDuration() + 500);
#ifdef Q_OS_WIN
if (group.state() != QAbstractAnimation::Stopped)
diff --git a/tests/auto/qpen/tst_qpen.cpp b/tests/auto/qpen/tst_qpen.cpp
index b0c2cad734..674a520f11 100644
--- a/tests/auto/qpen/tst_qpen.cpp
+++ b/tests/auto/qpen/tst_qpen.cpp
@@ -59,6 +59,7 @@ public:
private slots:
void getSetCheck();
+ void swap();
void operator_eq_eq();
void operator_eq_eq_data();
@@ -95,6 +96,14 @@ void tst_QPen::getSetCheck()
}
}
+void tst_QPen::swap()
+{
+ QPen p1(Qt::black), p2(Qt::white);
+ p1.swap(p2);
+ QCOMPARE(p1.color(), QColor(Qt::white));
+ QCOMPARE(p2.color(), QColor(Qt::black));
+}
+
Q_DECLARE_METATYPE(QPen)
Q_DECLARE_METATYPE(QBrush)
diff --git a/tests/auto/qpicture/tst_qpicture.cpp b/tests/auto/qpicture/tst_qpicture.cpp
index 09f650346f..10e5961333 100644
--- a/tests/auto/qpicture/tst_qpicture.cpp
+++ b/tests/auto/qpicture/tst_qpicture.cpp
@@ -64,6 +64,7 @@ private slots:
void devType();
void paintingActive();
void boundingRect();
+ void swap();
void operator_lt_lt();
void save_restore();
@@ -155,6 +156,18 @@ void tst_QPicture::boundingRect()
}
}
+void tst_QPicture::swap()
+{
+ QPicture p1, p2;
+ QPainter(&p1).drawLine(0, 0, 5, 5);
+ QPainter(&p2).drawLine(0, 3, 3, 0);
+ QCOMPARE(p1.boundingRect(), QRect(0,0,5,5));
+ QCOMPARE(p2.boundingRect(), QRect(0,0,3,3));
+ p1.swap(p2);
+ QCOMPARE(p1.boundingRect(), QRect(0,0,3,3));
+ QCOMPARE(p2.boundingRect(), QRect(0,0,5,5));
+}
+
// operator<< and operator>>
void tst_QPicture::operator_lt_lt()
{
diff --git a/tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha_animated.gif b/tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha_animated.gif
new file mode 100644
index 0000000000..86a3a2e17d
--- /dev/null
+++ b/tests/auto/qpixmap/loadFromData/designer_indexed8_no_alpha_animated.gif
Binary files differ
diff --git a/tests/auto/qpixmap/qpixmap.pro b/tests/auto/qpixmap/qpixmap.pro
index ff8258f983..185ec1a02c 100644
--- a/tests/auto/qpixmap/qpixmap.pro
+++ b/tests/auto/qpixmap/qpixmap.pro
@@ -3,16 +3,16 @@ SOURCES += tst_qpixmap.cpp
contains(QT_CONFIG, qt3support): QT += qt3support
wince*|symbian: {
- task31722_0.sources = convertFromImage/task31722_0/*.png
+ task31722_0.files = convertFromImage/task31722_0/*.png
task31722_0.path = convertFromImage/task31722_0
- task31722_1.sources = convertFromImage/task31722_1/*.png
+ task31722_1.files = convertFromImage/task31722_1/*.png
task31722_1.path = convertFromImage/task31722_1
- icons.sources = convertFromToHICON/*
+ icons.files = convertFromToHICON/*
icons.path = convertFromToHICON
- loadFromData.sources = loadFromData/*
+ loadFromData.files = loadFromData/*
loadFromData.path = loadFromData
DEPLOYMENT += task31722_0 task31722_1 icons loadFromData
diff --git a/tests/auto/qpixmap/tst_qpixmap.cpp b/tests/auto/qpixmap/tst_qpixmap.cpp
index 8005ec5d50..2cbd4f180a 100644
--- a/tests/auto/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/qpixmap/tst_qpixmap.cpp
@@ -95,6 +95,8 @@ public slots:
void cleanup();
private slots:
+ void swap();
+
void setAlphaChannel_data();
void setAlphaChannel();
@@ -179,6 +181,7 @@ private slots:
void fromImageReader_data();
void fromImageReader();
+ void fromImageReaderAnimatedGif_data();
void fromImageReaderAnimatedGif();
void preserveDepth();
@@ -246,6 +249,20 @@ void tst_QPixmap::cleanup()
{
}
+void tst_QPixmap::swap()
+{
+ QPixmap p1( 16, 16 ), p2( 32, 32 );
+ p1.fill( Qt::white );
+ p2.fill( Qt::black );
+ const qint64 p1k = p1.cacheKey();
+ const qint64 p2k = p2.cacheKey();
+ p1.swap(p2);
+ QCOMPARE(p1.cacheKey(), p2k);
+ QCOMPARE(p1.size(), QSize(32,32));
+ QCOMPARE(p2.cacheKey(), p1k);
+ QCOMPARE(p2.size(), QSize(16,16));
+}
+
void tst_QPixmap::setAlphaChannel_data()
{
QTest::addColumn<int>("red");
@@ -811,33 +828,43 @@ void tst_QPixmap::drawBitmap()
void tst_QPixmap::grabWidget()
{
- QWidget widget;
- QImage image(128, 128, QImage::Format_ARGB32_Premultiplied);
- for (int row = 0; row < image.height(); ++row) {
- QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(row));
- for (int col = 0; col < image.width(); ++col)
- line[col] = qRgb(rand() & 255, row, col);
- }
+ for (int opaque = 0; opaque < 2; ++opaque) {
+ QWidget widget;
+ QImage image(128, 128, opaque ? QImage::Format_RGB32 : QImage::Format_ARGB32_Premultiplied);
+ for (int row = 0; row < image.height(); ++row) {
+ QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(row));
+ for (int col = 0; col < image.width(); ++col)
+ line[col] = qRgba(rand() & 255, row, col, opaque ? 255 : 127);
+ }
- QPalette pal = widget.palette();
- pal.setBrush(QPalette::Window, QBrush(image));
- widget.setPalette(pal);
- widget.resize(128, 128);
+ QPalette pal = widget.palette();
+ pal.setBrush(QPalette::Window, QBrush(image));
+ widget.setPalette(pal);
+ widget.resize(128, 128);
- QPixmap expected = QPixmap::fromImage(QImage(image.scanLine(64) + 64 * 4, 64, 64, image.bytesPerLine(), image.format()));
- QPixmap actual = QPixmap::grabWidget(&widget, QRect(64, 64, 64, 64));
- QVERIFY(lenientCompare(actual, expected));
+ QPixmap expected(64, 64);
+ if (!opaque)
+ expected.fill(Qt::transparent);
- actual = QPixmap::grabWidget(&widget, 64, 64);
- QVERIFY(lenientCompare(actual, expected));
+ QPainter p(&expected);
+ p.translate(-64, -64);
+ p.drawTiledPixmap(0, 0, 128, 128, pal.brush(QPalette::Window).texture(), 0, 0);
+ p.end();
- // Make sure a widget that is not yet shown is grabbed correctly.
- QTreeWidget widget2;
- actual = QPixmap::grabWidget(&widget2);
- widget2.show();
- expected = QPixmap::grabWidget(&widget2);
+ QPixmap actual = QPixmap::grabWidget(&widget, QRect(64, 64, 64, 64));
+ QVERIFY(lenientCompare(actual, expected));
- QVERIFY(lenientCompare(actual, expected));
+ actual = QPixmap::grabWidget(&widget, 64, 64);
+ QVERIFY(lenientCompare(actual, expected));
+
+ // Make sure a widget that is not yet shown is grabbed correctly.
+ QTreeWidget widget2;
+ actual = QPixmap::grabWidget(&widget2);
+ widget2.show();
+ expected = QPixmap::grabWidget(&widget2);
+
+ QVERIFY(lenientCompare(actual, expected));
+ }
}
void tst_QPixmap::grabWindow()
@@ -1159,6 +1186,8 @@ void tst_QPixmap::fromSymbianCFbsBitmap_data()
const int smallHeight = 20;
const int largeWidth = 240;
const int largeHeight = 320;
+ const int notAlignedWidth = 250;
+ const int notAlignedHeight = 250;
// Indexed Color Formats - Disabled since images seem to be blank -> no palette?
// QTest::newRow("EGray2 small") << EGray2 << smallWidth << smallHeight << QColor(Qt::black);
@@ -1171,14 +1200,19 @@ void tst_QPixmap::fromSymbianCFbsBitmap_data()
// Direct Color Formats
QTest::newRow("EColor4K small") << EColor4K << smallWidth << smallHeight << QColor(Qt::red);
QTest::newRow("EColor4K big") << EColor4K << largeWidth << largeHeight << QColor(Qt::red);
+ QTest::newRow("EColor4K not aligned") << EColor4K << notAlignedWidth << notAlignedHeight << QColor(Qt::red);
QTest::newRow("EColor64K small") << EColor64K << smallWidth << smallHeight << QColor(Qt::green);
QTest::newRow("EColor64K big") << EColor64K << largeWidth << largeHeight << QColor(Qt::green);
+ QTest::newRow("EColor64K not aligned") << EColor64K << notAlignedWidth << notAlignedHeight << QColor(Qt::green);
QTest::newRow("EColor16M small") << EColor16M << smallWidth << smallHeight << QColor(Qt::yellow);
QTest::newRow("EColor16M big") << EColor16M << largeWidth << largeHeight << QColor(Qt::yellow);
+ QTest::newRow("EColor16M not aligned") << EColor16M << notAlignedWidth << notAlignedHeight << QColor(Qt::yellow);
QTest::newRow("EColor16MU small") << EColor16MU << smallWidth << smallHeight << QColor(Qt::red);
QTest::newRow("EColor16MU big") << EColor16MU << largeWidth << largeHeight << QColor(Qt::red);
+ QTest::newRow("EColor16MU not aligned") << EColor16MU << notAlignedWidth << notAlignedHeight << QColor(Qt::red);
QTest::newRow("EColor16MA small opaque") << EColor16MA << smallWidth << smallHeight << QColor(255, 255, 0);
QTest::newRow("EColor16MA big opaque") << EColor16MA << largeWidth << largeHeight << QColor(255, 255, 0);
+ QTest::newRow("EColor16MA not aligned opaque") << EColor16MA << notAlignedWidth << notAlignedHeight << QColor(255, 255, 0);
// Semi-transparent Colors - Disabled for now, since the QCOMPARE fails, but visually confirmed to work
// QTest::newRow("EColor16MA small semi") << EColor16MA << smallWidth << smallHeight << QColor(255, 255, 0, 127);
@@ -1236,6 +1270,10 @@ void tst_QPixmap::fromSymbianCFbsBitmap()
QColor actualColor(image.pixel(1, 1));
QCOMPARE(actualColor, color);
+
+ QImage shouldBe(pixmap.width(), pixmap.height(), image.format());
+ shouldBe.fill(color.rgba());
+ QCOMPARE(image, shouldBe);
}
__UHEAP_MARKEND;
@@ -1605,6 +1643,8 @@ void tst_QPixmap::fromImageReader_data()
QTest::newRow("designer_indexed8_no_alpha.gif") << prefix + "/designer_indexed8_no_alpha.gif";
QTest::newRow("designer_indexed8_with_alpha.gif") << prefix + "/designer_indexed8_with_alpha.gif";
QTest::newRow("designer_rgb32.jpg") << prefix + "/designer_rgb32.jpg";
+ QTest::newRow("designer_indexed8_with_alpha_animated") << prefix + "/designer_indexed8_with_alpha_animated.gif";
+ QTest::newRow("designer_indexed8_with_alpha_animated") << prefix + "/designer_indexed8_no_alpha_animated.gif";
}
void tst_QPixmap::fromImageReader()
@@ -1621,14 +1661,22 @@ void tst_QPixmap::fromImageReader()
QVERIFY(pixmapsAreEqual(&pixmapWithCopy, &directLoadingPixmap));
}
+void tst_QPixmap::fromImageReaderAnimatedGif_data()
+{
+ QTest::addColumn<QString>("imagePath");
+ QTest::newRow("gif with alpha") << QString::fromLatin1("/designer_indexed8_with_alpha_animated.gif");
+ QTest::newRow("gif without alpha") << QString::fromLatin1("/designer_indexed8_no_alpha_animated.gif");
+}
+
void tst_QPixmap::fromImageReaderAnimatedGif()
{
+ QFETCH(QString, imagePath);
#ifdef Q_OS_SYMBIAN
const QString prefix = QLatin1String(SRCDIR) + "loadFromData";
#else
const QString prefix = QLatin1String(SRCDIR) + "/loadFromData";
#endif
- const QString path = prefix + QString::fromLatin1("/designer_indexed8_with_alpha_animated.gif");
+ const QString path = prefix + imagePath;
QImageReader referenceReader(path);
QImageReader pixmapReader(path);
diff --git a/tests/auto/qpixmapfilter/qpixmapfilter.pro b/tests/auto/qpixmapfilter/qpixmapfilter.pro
index e64d68ddbf..964e56d6f3 100644
--- a/tests/auto/qpixmapfilter/qpixmapfilter.pro
+++ b/tests/auto/qpixmapfilter/qpixmapfilter.pro
@@ -2,7 +2,7 @@ load(qttest_p4)
SOURCES += tst_qpixmapfilter.cpp
wince*: {
- addFiles.sources = noise.png
+ addFiles.files = noise.png
addFiles.path = .
DEPLOYMENT += addFiles
}
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/qplugin/qplugin.pro b/tests/auto/qplugin/qplugin.pro
index aafcb36209..37a12da732 100644
--- a/tests/auto/qplugin/qplugin.pro
+++ b/tests/auto/qplugin/qplugin.pro
@@ -25,3 +25,4 @@ mac {
SUBDIRS += tst_qplugin.pro
+CONFIG += parallel_test
diff --git a/tests/auto/qplugin/tst_qplugin.pro b/tests/auto/qplugin/tst_qplugin.pro
index 0d9d809132..3629fb36a1 100644
--- a/tests/auto/qplugin/tst_qplugin.pro
+++ b/tests/auto/qplugin/tst_qplugin.pro
@@ -4,13 +4,13 @@ SOURCES = tst_qplugin.cpp
QT = core
wince*: {
- plugins.sources = plugins/*
+ plugins.files = plugins/*
plugins.path = plugins
DEPLOYMENT += plugins
}
symbian: {
- rpDep.sources = releaseplugin.dll debugplugin.dll
+ rpDep.files = releaseplugin.dll debugplugin.dll
rpDep.path = plugins
DEPLOYMENT += rpDep dpDep
}
diff --git a/tests/auto/qpluginloader/qpluginloader.pro b/tests/auto/qpluginloader/qpluginloader.pro
index 382d6e4e91..6e41b4c96a 100644
--- a/tests/auto/qpluginloader/qpluginloader.pro
+++ b/tests/auto/qpluginloader/qpluginloader.pro
@@ -11,3 +11,4 @@ TARGET = tst_qpluginloader
INSTALLS =
+CONFIG += parallel_test
diff --git a/tests/auto/qpluginloader/tst/tst.pro b/tests/auto/qpluginloader/tst/tst.pro
index e270120a0d..be243b812f 100644
--- a/tests/auto/qpluginloader/tst/tst.pro
+++ b/tests/auto/qpluginloader/tst/tst.pro
@@ -14,15 +14,15 @@ win32 {
wince*: {
- addFiles.sources = $$OUT_PWD/../bin/*.dll
+ addFiles.files = $$OUT_PWD/../bin/*.dll
addFiles.path = bin
DEPLOYMENT += addFiles
}
symbian: {
- libDep.sources = tst_qpluginloaderlib.dll
+ libDep.files = tst_qpluginloaderlib.dll
libDep.path = /sys/bin
- pluginDep.sources = theplugin.dll
+ pluginDep.files = theplugin.dll
pluginDep.path = bin
DEPLOYMENT += libDep pluginDep
diff --git a/tests/auto/qpoint/qpoint.pro b/tests/auto/qpoint/qpoint.pro
index 8b006c2412..fd240461e2 100644
--- a/tests/auto/qpoint/qpoint.pro
+++ b/tests/auto/qpoint/qpoint.pro
@@ -5,3 +5,4 @@
load(qttest_p4)
SOURCES += tst_qpoint.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qpolygon/tst_qpolygon.cpp b/tests/auto/qpolygon/tst_qpolygon.cpp
index eb7cbd517d..a79c0c8a90 100644
--- a/tests/auto/qpolygon/tst_qpolygon.cpp
+++ b/tests/auto/qpolygon/tst_qpolygon.cpp
@@ -63,6 +63,7 @@ public:
private slots:
void makeEllipse();
+ void swap();
};
tst_QPolygon::tst_QPolygon()
@@ -91,5 +92,14 @@ void tst_QPolygon::makeEllipse()
QVERIFY( !err );
}
+void tst_QPolygon::swap()
+{
+ QPolygon p1(QVector<QPoint>() << QPoint(0,0) << QPoint(10,10) << QPoint(-10,10));
+ QPolygon p2(QVector<QPoint>() << QPoint(0,0) << QPoint( 0,10) << QPoint( 10,10) << QPoint(10,0));
+ p1.swap(p2);
+ QCOMPARE(p1.count(),4);
+ QCOMPARE(p2.count(),3);
+}
+
QTEST_APPLESS_MAIN(tst_QPolygon)
#include "tst_qpolygon.moc"
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/qprocess/test/test.pro b/tests/auto/qprocess/test/test.pro
index d555067f88..a91caddd2f 100644
--- a/tests/auto/qprocess/test/test.pro
+++ b/tests/auto/qprocess/test/test.pro
@@ -27,61 +27,61 @@ embedded: QT += gui
wince*: {
- addFile_fileWriterProcess.sources = $$OUT_PWD/../fileWriterProcess/fileWriterProcess.exe
+ addFile_fileWriterProcess.files = $$OUT_PWD/../fileWriterProcess/fileWriterProcess.exe
addFile_fileWriterProcess.path = fileWriterProcess
- addFile_testBatFiles.sources = $$PWD/../testBatFiles/*
+ addFile_testBatFiles.files = $$PWD/../testBatFiles/*
addFile_testBatFiles.path = testBatFiles
- addFile_testDetached.sources = $$OUT_PWD/../testDetached/testDetached.exe
+ addFile_testDetached.files = $$OUT_PWD/../testDetached/testDetached.exe
addFile_testDetached.path = testDetached
- addFile_testExitCodes.sources = $$OUT_PWD/../testExitCodes/testExitCodes.exe
+ addFile_testExitCodes.files = $$OUT_PWD/../testExitCodes/testExitCodes.exe
addFile_testExitCodes.path = testExitCodes
- addFile_testGuiProcess.sources = $$OUT_PWD/../testGuiProcess/testGuiProcess.exe
+ addFile_testGuiProcess.files = $$OUT_PWD/../testGuiProcess/testGuiProcess.exe
addFile_testGuiProcess.path = testGuiProcess
- addFile_testProcessCrash.sources = $$OUT_PWD/../testProcessCrash/testProcessCrash.exe
+ addFile_testProcessCrash.files = $$OUT_PWD/../testProcessCrash/testProcessCrash.exe
addFile_testProcessCrash.path = testProcessCrash
- addFile_testProcessDeadWhileReading.sources = $$OUT_PWD/../testProcessDeadWhileReading/testProcessDeadWhileReading.exe
+ addFile_testProcessDeadWhileReading.files = $$OUT_PWD/../testProcessDeadWhileReading/testProcessDeadWhileReading.exe
addFile_testProcessDeadWhileReading.path = testProcessDeadWhileReading
- addFile_testProcessEcho.sources = $$OUT_PWD/../testProcessEcho/testProcessEcho.exe
+ addFile_testProcessEcho.files = $$OUT_PWD/../testProcessEcho/testProcessEcho.exe
addFile_testProcessEcho.path = testProcessEcho
- addFile_testProcessEcho2.sources = $$OUT_PWD/../testProcessEcho2/testProcessEcho2.exe
+ addFile_testProcessEcho2.files = $$OUT_PWD/../testProcessEcho2/testProcessEcho2.exe
addFile_testProcessEcho2.path = testProcessEcho2
- addFile_testProcessEcho3.sources = $$OUT_PWD/../testProcessEcho3/testProcessEcho3.exe
+ addFile_testProcessEcho3.files = $$OUT_PWD/../testProcessEcho3/testProcessEcho3.exe
addFile_testProcessEcho3.path = testProcessEcho3
- addFile_testProcessEOF.sources = $$OUT_PWD/../testProcessEOF/testProcessEOF.exe
+ addFile_testProcessEOF.files = $$OUT_PWD/../testProcessEOF/testProcessEOF.exe
addFile_testProcessEOF.path = testProcessEOF
- addFile_testProcessLoopback.sources = $$OUT_PWD/../testProcessLoopback/testProcessLoopback.exe
+ addFile_testProcessLoopback.files = $$OUT_PWD/../testProcessLoopback/testProcessLoopback.exe
addFile_testProcessLoopback.path = testProcessLoopback
- addFile_testProcessNormal.sources = $$OUT_PWD/../testProcessNormal/testProcessNormal.exe
+ addFile_testProcessNormal.files = $$OUT_PWD/../testProcessNormal/testProcessNormal.exe
addFile_testProcessNormal.path = testProcessNormal
- addFile_testProcessOutput.sources = $$OUT_PWD/../testProcessOutput/testProcessOutput.exe
+ addFile_testProcessOutput.files = $$OUT_PWD/../testProcessOutput/testProcessOutput.exe
addFile_testProcessOutput.path = testProcessOutput
- addFile_testProcessNoSpacesArgs.sources = $$OUT_PWD/../testProcessSpacesArgs/nospace.exe
+ addFile_testProcessNoSpacesArgs.files = $$OUT_PWD/../testProcessSpacesArgs/nospace.exe
addFile_testProcessNoSpacesArgs.path = testProcessSpacesArgs
- addFile_testProcessOneSpacesArgs.sources = $$OUT_PWD/../testProcessSpacesArgs/"one space".exe
+ addFile_testProcessOneSpacesArgs.files = $$OUT_PWD/../testProcessSpacesArgs/"one space".exe
addFile_testProcessOneSpacesArgs.path = testProcessSpacesArgs
- addFile_testProcessTwoSpacesArgs.sources = $$OUT_PWD/../testProcessSpacesArgs/"two space s".exe
+ addFile_testProcessTwoSpacesArgs.files = $$OUT_PWD/../testProcessSpacesArgs/"two space s".exe
addFile_testProcessTwoSpacesArgs.path = testProcessSpacesArgs
- addFile_testSoftExit.sources = $$OUT_PWD/../testSoftExit/testSoftExit.exe
+ addFile_testSoftExit.files = $$OUT_PWD/../testSoftExit/testSoftExit.exe
addFile_testSoftExit.path = testSoftExit
- addFile_testSpaceInName.sources = $$OUT_PWD/../"test Space In Name"/testSpaceInName.exe
+ addFile_testSpaceInName.files = $$OUT_PWD/../"test Space In Name"/testSpaceInName.exe
addFile_testSpaceInName.path = "test Space In Name"
@@ -108,7 +108,7 @@ wince*: {
}
symbian: {
- binDep.sources = \
+ binDep.files = \
fileWriterProcess.exe \
testDetached.exe \
testExitCodes.exe \
diff --git a/tests/auto/qprocessenvironment/qprocessenvironment.pro b/tests/auto/qprocessenvironment/qprocessenvironment.pro
index 398facc842..60dba50813 100644
--- a/tests/auto/qprocessenvironment/qprocessenvironment.pro
+++ b/tests/auto/qprocessenvironment/qprocessenvironment.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qprocessenvironment.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qqueue/qqueue.pro b/tests/auto/qqueue/qqueue.pro
index ed489f9f81..ce0d8c30ca 100644
--- a/tests/auto/qqueue/qqueue.pro
+++ b/tests/auto/qqueue/qqueue.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qqueue.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qrand/qrand.pro b/tests/auto/qrand/qrand.pro
index c868ed40fa..0db8af821c 100644
--- a/tests/auto/qrand/qrand.pro
+++ b/tests/auto/qrand/qrand.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qrand.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qreadlocker/qreadlocker.pro b/tests/auto/qreadlocker/qreadlocker.pro
index 5919102170..ee533070a7 100644
--- a/tests/auto/qreadlocker/qreadlocker.pro
+++ b/tests/auto/qreadlocker/qreadlocker.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qreadlocker.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qreadwritelock/qreadwritelock.pro b/tests/auto/qreadwritelock/qreadwritelock.pro
index 4318b18178..93f7c68dc3 100644
--- a/tests/auto/qreadwritelock/qreadwritelock.pro
+++ b/tests/auto/qreadwritelock/qreadwritelock.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qreadwritelock.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qrect/qrect.pro b/tests/auto/qrect/qrect.pro
index 75940b3be7..f1ad046e34 100644
--- a/tests/auto/qrect/qrect.pro
+++ b/tests/auto/qrect/qrect.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qrect.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qregexp/qregexp.pro b/tests/auto/qregexp/qregexp.pro
index 80b6827101..e0fef12479 100644
--- a/tests/auto/qregexp/qregexp.pro
+++ b/tests/auto/qregexp/qregexp.pro
@@ -6,3 +6,4 @@ QT = core
QT = core
SOURCES += tst_qregexp.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qregexp/tst_qregexp.cpp b/tests/auto/qregexp/tst_qregexp.cpp
index d0d26ee519..52f204163b 100644
--- a/tests/auto/qregexp/tst_qregexp.cpp
+++ b/tests/auto/qregexp/tst_qregexp.cpp
@@ -77,6 +77,7 @@ private slots:
void caretAnchoredOptimization();
void isEmpty();
void prepareEngineOptimization();
+ void swap();
void operator_eq();
/*
@@ -1290,6 +1291,14 @@ void tst_QRegExp::prepareEngineOptimization()
QCOMPARE(rx11.matchedLength(), -1);
}
+void tst_QRegExp::swap()
+{
+ QRegExp r1(QLatin1String(".*")), r2(QLatin1String("a*"));
+ r1.swap(r2);
+ QCOMPARE(r1.pattern(),QLatin1String("a*"));
+ QCOMPARE(r2.pattern(),QLatin1String(".*"));
+}
+
void tst_QRegExp::operator_eq()
{
const int I = 2;
diff --git a/tests/auto/qregion/tst_qregion.cpp b/tests/auto/qregion/tst_qregion.cpp
index 1716c94ffa..f3350510cb 100644
--- a/tests/auto/qregion/tst_qregion.cpp
+++ b/tests/auto/qregion/tst_qregion.cpp
@@ -64,6 +64,7 @@ public:
private slots:
void boundingRect();
void rects();
+ void swap();
void setRects();
void ellipseRegion();
void polygonRegion();
@@ -168,6 +169,15 @@ void tst_QRegion::rects()
}
}
+void tst_QRegion::swap()
+{
+ QRegion r1(QRect( 0, 0,10,10));
+ QRegion r2(QRect(10,10,10,10));
+ r1.swap(r2);
+ QCOMPARE(r1.rects().front(), QRect(10,10,10,10));
+ QCOMPARE(r2.rects().front(), QRect( 0, 0,10,10));
+}
+
void tst_QRegion::setRects()
{
{
diff --git a/tests/auto/qresourceengine/qresourceengine.pro b/tests/auto/qresourceengine/qresourceengine.pro
index 1ad0f5dbb4..9ca6994716 100644
--- a/tests/auto/qresourceengine/qresourceengine.pro
+++ b/tests/auto/qresourceengine/qresourceengine.pro
@@ -21,25 +21,26 @@ PRE_TARGETDEPS += $${runtime_resource.target}
QT = core
wince*|symbian:{
- deploy.sources += runtime_resource.rcc parentdir.txt
- test.sources = testqrc/*
+ deploy.files += runtime_resource.rcc parentdir.txt
+ test.files = testqrc/*
test.path = testqrc
- alias.sources = testqrc/aliasdir/*
+ alias.files = testqrc/aliasdir/*
alias.path = testqrc/aliasdir
- other.sources = testqrc/otherdir/*
+ other.files = testqrc/otherdir/*
other.path = testqrc/otherdir
- search1.sources = testqrc/searchpath1/*
+ search1.files = testqrc/searchpath1/*
search1.path = testqrc/searchpath1
- search2.sources = testqrc/searchpath2/*
+ search2.files = testqrc/searchpath2/*
search2.path = testqrc/searchpath2
- sub.sources = testqrc/subdir/*
+ sub.files = testqrc/subdir/*
sub.path = testqrc/subdir
- testsub.sources = testqrc/test/*
+ testsub.files = testqrc/test/*
testsub.path = testqrc/test
- testsub2.sources = testqrc/test/test/*
+ testsub2.files = testqrc/test/test/*
testsub2.path = testqrc/test/test
DEPLOYMENT += deploy test alias other search1 search2 sub testsub testsub2
!symbian:DEFINES += SRCDIR=\\\"\\\"
} else {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qringbuffer/qringbuffer.pro b/tests/auto/qringbuffer/qringbuffer.pro
index 91fb0a0dbb..2e4f166619 100644
--- a/tests/auto/qringbuffer/qringbuffer.pro
+++ b/tests/auto/qringbuffer/qringbuffer.pro
@@ -4,3 +4,4 @@ SOURCES += tst_qringbuffer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qscopedpointer/qscopedpointer.pro b/tests/auto/qscopedpointer/qscopedpointer.pro
index 13d8425070..4a3d5b8de8 100644
--- a/tests/auto/qscopedpointer/qscopedpointer.pro
+++ b/tests/auto/qscopedpointer/qscopedpointer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qscopedpointer.cpp
QT -= gui
+CONFIG += parallel_test
diff --git a/tests/auto/qscriptable/tst_qscriptable.cpp b/tests/auto/qscriptable/tst_qscriptable.cpp
index 3c781b1588..86dd80ed0a 100644
--- a/tests/auto/qscriptable/tst_qscriptable.cpp
+++ b/tests/auto/qscriptable/tst_qscriptable.cpp
@@ -131,7 +131,7 @@ QScriptValue MyScriptable::getArguments()
int MyScriptable::getArgumentCount()
{
- return context()->argumentCount();
+ return argumentCount();
}
void MyScriptable::foo()
@@ -283,6 +283,8 @@ void tst_QScriptable::engine()
void tst_QScriptable::thisObject()
{
+ QVERIFY(!m_scriptable.thisObject().isValid());
+
m_engine.evaluate("o = { }");
{
QScriptValue ret = m_engine.evaluate("o.__proto__ = scriptable;"
diff --git a/tests/auto/qscriptclass/tst_qscriptclass.cpp b/tests/auto/qscriptclass/tst_qscriptclass.cpp
index b4dbe73dc8..20d62b4601 100644
--- a/tests/auto/qscriptclass/tst_qscriptclass.cpp
+++ b/tests/auto/qscriptclass/tst_qscriptclass.cpp
@@ -66,8 +66,10 @@ public:
private slots:
void newInstance();
void getAndSetProperty();
+ void getProperty_invalidValue();
void enumerate();
void extension();
+ void defaultImplementations();
};
tst_QScriptClass::tst_QScriptClass()
@@ -603,6 +605,8 @@ void tst_QScriptClass::newInstance()
QVERIFY(obj2.data().strictlyEquals(num));
QVERIFY(obj2.prototype().strictlyEquals(cls.prototype()));
QCOMPARE(obj2.scriptClass(), (QScriptClass*)&cls);
+ QVERIFY(!obj2.equals(obj1));
+ QVERIFY(!obj2.strictlyEquals(obj1));
QScriptValue obj3 = eng.newObject();
QCOMPARE(obj3.scriptClass(), (QScriptClass*)0);
@@ -730,6 +734,14 @@ void tst_QScriptClass::getAndSetProperty()
QCOMPARE(cls.lastPropertyId(), foo2Id);
}
+ // attempt to delete custom property
+ obj1.setProperty(foo2, QScriptValue());
+ // delete real property
+ obj1.setProperty(foo, QScriptValue());
+ QVERIFY(!obj1.property(foo).isValid());
+ obj1.setProperty(foo, num);
+ QVERIFY(obj1.property(foo).equals(num));
+
// remove script class; normal properties should remain
obj1.setScriptClass(0);
QCOMPARE(obj1.scriptClass(), (QScriptClass*)0);
@@ -741,6 +753,26 @@ void tst_QScriptClass::getAndSetProperty()
QVERIFY(!obj1.property(bar).isValid());
}
+void tst_QScriptClass::getProperty_invalidValue()
+{
+ QScriptEngine eng;
+ TestClass cls(&eng);
+ cls.addCustomProperty(eng.toStringHandle("foo"), QScriptClass::HandlesReadAccess,
+ /*id=*/0, QScriptValue::ReadOnly, QScriptValue());
+ QScriptValue obj = eng.newObject(&cls);
+
+ QVERIFY(obj.property("foo").isUndefined());
+
+ eng.globalObject().setProperty("obj", obj);
+ QVERIFY(eng.evaluate("obj.hasOwnProperty('foo'))").toBool());
+ // The JS environment expects that a valid value is returned,
+ // otherwise we could crash.
+ QVERIFY(eng.evaluate("obj.foo").isUndefined());
+ QVERIFY(eng.evaluate("obj.foo + ''").isString());
+ QVERIFY(eng.evaluate("Object.getOwnPropertyDescriptor(obj, 'foo').value").isUndefined());
+ QVERIFY(eng.evaluate("Object.getOwnPropertyDescriptor(obj, 'foo').value +''").isString());
+}
+
void tst_QScriptClass::enumerate()
{
QScriptEngine eng;
@@ -805,6 +837,7 @@ void tst_QScriptClass::extension()
QCOMPARE((int)cls.lastExtensionType(), -1);
QVERIFY(!obj.instanceOf(obj));
QCOMPARE((int)cls.lastExtensionType(), -1);
+ QVERIFY(!obj.construct().isValid());
}
// Callable
{
@@ -1017,5 +1050,33 @@ void tst_QScriptClass::extension()
}
}
+void tst_QScriptClass::defaultImplementations()
+{
+ QScriptEngine eng;
+
+ QScriptClass defaultClass(&eng);
+ QCOMPARE(defaultClass.engine(), &eng);
+ QVERIFY(!defaultClass.prototype().isValid());
+ QCOMPARE(defaultClass.name(), QString());
+
+ QScriptValue obj = eng.newObject(&defaultClass);
+ QCOMPARE(obj.scriptClass(), &defaultClass);
+
+ QScriptString name = eng.toStringHandle("foo");
+ uint id = -1;
+ QCOMPARE(defaultClass.queryProperty(obj, name, QScriptClass::HandlesReadAccess, &id), QScriptClass::QueryFlags(0));
+ QVERIFY(!defaultClass.property(obj, name, id).isValid());
+ QCOMPARE(defaultClass.propertyFlags(obj, name, id), QScriptValue::PropertyFlags(0));
+ defaultClass.setProperty(obj, name, id, 123);
+ QVERIFY(!obj.property(name).isValid());
+
+ QCOMPARE(defaultClass.newIterator(obj), (QScriptClassPropertyIterator*)0);
+
+ QVERIFY(!defaultClass.supportsExtension(QScriptClass::Callable));
+ QVERIFY(!defaultClass.supportsExtension(QScriptClass::HasInstance));
+ QVERIFY(!defaultClass.extension(QScriptClass::Callable).isValid());
+ QVERIFY(!defaultClass.extension(QScriptClass::HasInstance).isValid());
+}
+
QTEST_MAIN(tst_QScriptClass)
#include "tst_qscriptclass.moc"
diff --git a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
index 617c183206..5e7ede848d 100644
--- a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
+++ b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
@@ -44,11 +44,13 @@
#include <QtScript/qscriptcontext.h>
#include <QtScript/qscriptengine.h>
+#include <QtScript/qscriptvalueiterator.h>
//TESTED_CLASS=
//TESTED_FILES=
Q_DECLARE_METATYPE(QScriptValueList)
+Q_DECLARE_METATYPE(QScriptContext::Error)
QT_BEGIN_NAMESPACE
extern bool qt_script_isJITEnabled();
@@ -67,7 +69,11 @@ private slots:
void arguments();
void thisObject();
void returnValue();
- void throwError();
+ void throwError_data();
+ void throwError_fromEvaluate_data();
+ void throwError_fromEvaluate();
+ void throwError_fromCpp_data();
+ void throwError_fromCpp();
void throwValue();
void evaluateInFunction();
void pushAndPopContext();
@@ -77,6 +83,7 @@ private slots:
void scopeChain();
void pushAndPopScope();
void getSetActivationObject();
+ void getSetActivationObject_customContext();
void inheritActivationAndThisObject();
void toString();
void calledAsConstructor();
@@ -85,6 +92,10 @@ private slots:
void qobjectAsActivationObject();
void parentContextCallee_QT2270();
void popNativeContextScope();
+ void throwErrorInGlobalContext();
+ void throwErrorWithTypeInGlobalContext_data();
+ void throwErrorWithTypeInGlobalContext();
+ void throwValueInGlobalContext();
};
tst_QScriptContext::tst_QScriptContext()
@@ -360,73 +371,71 @@ static QScriptValue throw_ErrorAndReturnUndefined(QScriptContext *ctx, QScriptEn
return eng->undefinedValue();
}
-void tst_QScriptContext::throwError()
+static QScriptValue throw_ErrorAndReturnString(QScriptContext *ctx, QScriptEngine *)
{
- QScriptEngine eng;
+ return ctx->throwError(QScriptContext::UnknownError, "foo").toString();
+}
- {
- QScriptValue fun = eng.newFunction(throw_Error);
- eng.globalObject().setProperty("throw_Error", fun);
- QScriptValue result = eng.evaluate("throw_Error()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("Error: foo"));
- }
+static QScriptValue throw_ErrorAndReturnObject(QScriptContext *ctx, QScriptEngine *eng)
+{
+ ctx->throwError(QScriptContext::UnknownError, "foo");
+ return eng->newObject();
+}
- {
- QScriptValue fun = eng.newFunction(throw_TypeError);
- eng.globalObject().setProperty("throw_TypeError", fun);
- QScriptValue result = eng.evaluate("throw_TypeError()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("TypeError: foo"));
- }
+void tst_QScriptContext::throwError_data()
+{
+ QTest::addColumn<void*>("nativeFunctionPtr");
+ QTest::addColumn<QString>("stringRepresentation");
+
+ QTest::newRow("Error") << reinterpret_cast<void*>(throw_Error) << QString("Error: foo");
+ QTest::newRow("TypeError") << reinterpret_cast<void*>(throw_TypeError) << QString("TypeError: foo");
+ QTest::newRow("ReferenceError") << reinterpret_cast<void*>(throw_ReferenceError) << QString("ReferenceError: foo");
+ QTest::newRow("SyntaxError") << reinterpret_cast<void*>(throw_SyntaxError) << QString("SyntaxError: foo");
+ QTest::newRow("RangeError") << reinterpret_cast<void*>(throw_RangeError) << QString("RangeError: foo");
+ QTest::newRow("URIError") << reinterpret_cast<void*>(throw_URIError) << QString("URIError: foo");
+ QTest::newRow("ErrorAndReturnUndefined") << reinterpret_cast<void*>(throw_ErrorAndReturnUndefined) << QString("Error: foo");
+ QTest::newRow("ErrorAndReturnString") << reinterpret_cast<void*>(throw_ErrorAndReturnString) << QString("Error: foo");
+ QTest::newRow("ErrorAndReturnObject") << reinterpret_cast<void*>(throw_ErrorAndReturnObject) << QString("Error: foo");
+}
- {
- QScriptValue fun = eng.newFunction(throw_ReferenceError);
- eng.globalObject().setProperty("throw_ReferenceError", fun);
- QScriptValue result = eng.evaluate("throw_ReferenceError()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("ReferenceError: foo"));
- }
+void tst_QScriptContext::throwError_fromEvaluate_data()
+{
+ throwError_data();
+}
- {
- QScriptValue fun = eng.newFunction(throw_SyntaxError);
- eng.globalObject().setProperty("throw_SyntaxError", fun);
- QScriptValue result = eng.evaluate("throw_SyntaxError()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("SyntaxError: foo"));
- }
+void tst_QScriptContext::throwError_fromEvaluate()
+{
+ QFETCH(void*, nativeFunctionPtr);
+ QScriptEngine::FunctionSignature nativeFunction = reinterpret_cast<QScriptEngine::FunctionSignature>(nativeFunctionPtr);
+ QFETCH(QString, stringRepresentation);
+ QScriptEngine engine;
- {
- QScriptValue fun = eng.newFunction(throw_RangeError);
- eng.globalObject().setProperty("throw_RangeError", fun);
- QScriptValue result = eng.evaluate("throw_RangeError()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("RangeError: foo"));
- }
+ QScriptValue fun = engine.newFunction(nativeFunction);
+ engine.globalObject().setProperty("throw_Error", fun);
+ QScriptValue result = engine.evaluate("throw_Error()");
+ QCOMPARE(engine.hasUncaughtException(), true);
+ QCOMPARE(result.isError(), true);
+ QCOMPARE(result.toString(), stringRepresentation);
+}
- {
- QScriptValue fun = eng.newFunction(throw_URIError);
- eng.globalObject().setProperty("throw_URIError", fun);
- QScriptValue result = eng.evaluate("throw_URIError()");
- QCOMPARE(eng.hasUncaughtException(), true);
- QCOMPARE(result.isError(), true);
- QCOMPARE(result.toString(), QString("URIError: foo"));
- }
+void tst_QScriptContext::throwError_fromCpp_data()
+{
+ throwError_data();
+}
- {
- QScriptValue fun = eng.newFunction(throw_ErrorAndReturnUndefined);
- eng.globalObject().setProperty("throw_ErrorAndReturnUndefined", fun);
- QScriptValue result = eng.evaluate("throw_ErrorAndReturnUndefined()");
- QVERIFY(eng.hasUncaughtException());
- QVERIFY(result.isError());
- QCOMPARE(result.toString(), QString("Error: foo"));
- }
+void tst_QScriptContext::throwError_fromCpp()
+{
+ QFETCH(void*, nativeFunctionPtr);
+ QScriptEngine::FunctionSignature nativeFunction = reinterpret_cast<QScriptEngine::FunctionSignature>(nativeFunctionPtr);
+ QFETCH(QString, stringRepresentation);
+ QScriptEngine engine;
+ QScriptValue fun = engine.newFunction(nativeFunction);
+ engine.globalObject().setProperty("throw_Error", fun);
+ QScriptValue result = fun.call();
+ QCOMPARE(engine.hasUncaughtException(), true);
+ QCOMPARE(result.isError(), true);
+ QCOMPARE(result.toString(), stringRepresentation);
}
static QScriptValue throw_value(QScriptContext *ctx, QScriptEngine *)
@@ -513,8 +522,30 @@ void tst_QScriptContext::pushAndPopContext()
QScriptContext *ctx3 = eng.pushContext();
ctx3->activationObject().setProperty("foo", QScriptValue(&eng, 123));
QVERIFY(eng.evaluate("foo").strictlyEquals(QScriptValue(&eng, 123)));
+ QCOMPARE(ctx3->activationObject().propertyFlags("foo"), QScriptValue::PropertyFlags(0));
+
+ ctx3->activationObject().setProperty(4, 456);
+ QVERIFY(ctx3->activationObject().property(4, QScriptValue::ResolveLocal).equals(456));
+
eng.evaluate("var bar = 'ciao'");
QVERIFY(ctx3->activationObject().property("bar", QScriptValue::ResolveLocal).strictlyEquals(QScriptValue(&eng, "ciao")));
+
+ ctx3->activationObject().setProperty("baz", 789, QScriptValue::ReadOnly);
+ QVERIFY(eng.evaluate("baz").equals(789));
+ QCOMPARE(ctx3->activationObject().propertyFlags("baz"), QScriptValue::ReadOnly);
+
+ QSet<QString> activationPropertyNames;
+ QScriptValueIterator it(ctx3->activationObject());
+ while (it.hasNext()) {
+ it.next();
+ activationPropertyNames.insert(it.name());
+ }
+ QCOMPARE(activationPropertyNames.size(), 4);
+ QVERIFY(activationPropertyNames.contains("foo"));
+ QVERIFY(activationPropertyNames.contains("4"));
+ QVERIFY(activationPropertyNames.contains("bar"));
+ QVERIFY(activationPropertyNames.contains("baz"));
+
eng.popContext();
}
@@ -1054,6 +1085,20 @@ void tst_QScriptContext::getSetActivationObject()
}
}
+void tst_QScriptContext::getSetActivationObject_customContext()
+{
+ QScriptEngine eng;
+ QScriptContext *ctx = eng.pushContext();
+ QVERIFY(ctx->activationObject().isObject());
+ QScriptValue act = eng.newObject();
+ ctx->setActivationObject(act);
+ QVERIFY(ctx->activationObject().equals(act));
+ eng.evaluate("var foo = 123");
+ QCOMPARE(act.property("foo").toInt32(), 123);
+ eng.popContext();
+ QCOMPARE(act.property("foo").toInt32(), 123);
+}
+
static QScriptValue myEval(QScriptContext *ctx, QScriptEngine *eng)
{
QString code = ctx->argument(0).toString();
@@ -1283,5 +1328,49 @@ void tst_QScriptContext::parentContextCallee_QT2270()
QVERIFY(callee.equals(fun));
}
+void tst_QScriptContext::throwErrorInGlobalContext()
+{
+ QScriptEngine eng;
+ QScriptValue ret = eng.currentContext()->throwError("foo");
+ QVERIFY(ret.isError());
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(eng.uncaughtException().strictlyEquals(ret));
+ QCOMPARE(ret.toString(), QString::fromLatin1("Error: foo"));
+}
+
+void tst_QScriptContext::throwErrorWithTypeInGlobalContext_data()
+{
+ QTest::addColumn<QScriptContext::Error>("error");
+ QTest::addColumn<QString>("stringRepresentation");
+ QTest::newRow("ReferenceError") << QScriptContext::ReferenceError << QString::fromLatin1("ReferenceError: foo");
+ QTest::newRow("SyntaxError") << QScriptContext::SyntaxError << QString::fromLatin1("SyntaxError: foo");
+ QTest::newRow("TypeError") << QScriptContext::TypeError << QString::fromLatin1("TypeError: foo");
+ QTest::newRow("RangeError") << QScriptContext::RangeError << QString::fromLatin1("RangeError: foo");
+ QTest::newRow("URIError") << QScriptContext::URIError << QString::fromLatin1("URIError: foo");
+ QTest::newRow("UnknownError") << QScriptContext::UnknownError << QString::fromLatin1("Error: foo");
+}
+
+void tst_QScriptContext::throwErrorWithTypeInGlobalContext()
+{
+ QFETCH(QScriptContext::Error, error);
+ QFETCH(QString, stringRepresentation);
+ QScriptEngine eng;
+ QScriptValue ret = eng.currentContext()->throwError(error, "foo");
+ QVERIFY(ret.isError());
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(eng.uncaughtException().strictlyEquals(ret));
+ QCOMPARE(ret.toString(), stringRepresentation);
+}
+
+void tst_QScriptContext::throwValueInGlobalContext()
+{
+ QScriptEngine eng;
+ QScriptValue val(&eng, 123);
+ QScriptValue ret = eng.currentContext()->throwValue(val);
+ QVERIFY(ret.strictlyEquals(val));
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(eng.uncaughtException().strictlyEquals(val));
+}
+
QTEST_MAIN(tst_QScriptContext)
#include "tst_qscriptcontext.moc"
diff --git a/tests/auto/qscriptengine/idtranslatable-unicode.js b/tests/auto/qscriptengine/idtranslatable-unicode.js
new file mode 100644
index 0000000000..e17d6172bc
--- /dev/null
+++ b/tests/auto/qscriptengine/idtranslatable-unicode.js
@@ -0,0 +1,5 @@
+qsTrId('\u01F8\u01D2\u0199\u01D0\u01E1');
+
+QT_TRID_NOOP("\u0191\u01CE\u0211\u0229\u019C\u018E\u019A\u01D0");
+
+qsTrId("\u0181\u01A1\u0213\u018F\u018C", 10);
diff --git a/tests/auto/qscriptengine/qscriptengine.pro b/tests/auto/qscriptengine/qscriptengine.pro
index fc35f66c92..c5c286167f 100644
--- a/tests/auto/qscriptengine/qscriptengine.pro
+++ b/tests/auto/qscriptengine/qscriptengine.pro
@@ -10,7 +10,7 @@ wince* {
}
wince*|symbian: {
- addFiles.sources = script
+ addFiles.files = script
addFiles.path = .
DEPLOYMENT += addFiles
}
diff --git a/tests/auto/qscriptengine/qscriptengine.qrc b/tests/auto/qscriptengine/qscriptengine.qrc
index fa55a5b5b1..d05d115966 100644
--- a/tests/auto/qscriptengine/qscriptengine.qrc
+++ b/tests/auto/qscriptengine/qscriptengine.qrc
@@ -2,5 +2,7 @@
<qresource>
<file>translations/translatable_la.qm</file>
<file>translations/idtranslatable_la.qm</file>
+ <file>translations/translatable-unicode.qm</file>
+ <file>translations/idtranslatable-unicode.qm</file>
</qresource>
</RCC>
diff --git a/tests/auto/qscriptengine/translatable-unicode.js b/tests/auto/qscriptengine/translatable-unicode.js
new file mode 100644
index 0000000000..afe2aff21c
--- /dev/null
+++ b/tests/auto/qscriptengine/translatable-unicode.js
@@ -0,0 +1,9 @@
+qsTr("H\u2082O");
+qsTranslate("\u010C\u0101\u011F\u0115", "CO\u2082");
+
+var unicode_strings = [
+ QT_TR_NOOP("\u0391\u0392\u0393"),
+ QT_TRANSLATE_NOOP("\u010C\u0101\u011F\u0115", "\u0414\u0415\u0416")
+];
+
+qsTr("H\u2082O", "not the same H\u2082O");
diff --git a/tests/auto/qscriptengine/translations/idtranslatable-unicode.qm b/tests/auto/qscriptengine/translations/idtranslatable-unicode.qm
new file mode 100644
index 0000000000..8c5fb91b1d
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/idtranslatable-unicode.qm
Binary files differ
diff --git a/tests/auto/qscriptengine/translations/idtranslatable-unicode.ts b/tests/auto/qscriptengine/translations/idtranslatable-unicode.ts
new file mode 100644
index 0000000000..74ebf43c47
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/idtranslatable-unicode.ts
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="nb_NO">
+<defaultcodec>UTF-8</defaultcodec>
+<context>
+ <name></name>
+ <message id="Ǹǒƙǐǡ">
+ <location filename="idtranslatable-unicode.js" line="1"/>
+ <source></source>
+ <translation>Ƨưƈȼȝȿș</translation>
+ </message>
+ <message id="ƑǎȑȩƜƎƚǐ">
+ <location filename="idtranslatable-unicode.js" line="3"/>
+ <source></source>
+ <translation>Ǡȡȋȅȕ</translation>
+ </message>
+ <message id="ƁơȓƏƌ" numerus="yes">
+ <location filename="idtranslatable-unicode.js" line="5"/>
+ <source></source>
+ <translation>
+ <numerusform>Ƒưǹ</numerusform>
+ <numerusform>%n ƒơǒ(ș)</numerusform>
+ </translation>
+ </message>
+</context>
+</TS>
diff --git a/tests/auto/qscriptengine/translations/translatable-unicode.qm b/tests/auto/qscriptengine/translations/translatable-unicode.qm
new file mode 100644
index 0000000000..aa75ce61df
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/translatable-unicode.qm
Binary files differ
diff --git a/tests/auto/qscriptengine/translations/translatable-unicode.ts b/tests/auto/qscriptengine/translations/translatable-unicode.ts
new file mode 100644
index 0000000000..1b8b4d2309
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/translatable-unicode.ts
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>UTF-8</defaultcodec>
+<context>
+ <name>translatable-unicode</name>
+ <message>
+ <location filename="translatable-unicode.js" line="1"/>
+ <source>H₂O</source>
+ <translation>ͻͼͽ</translation>
+ </message>
+ <message>
+ <location filename="translatable-unicode.js" line="5"/>
+ <source>ΑΒΓ</source>
+ <translation>ӜҴѼ</translation>
+ </message>
+ <message>
+ <location filename="translatable-unicode.js" line="9"/>
+ <source>H₂O</source>
+ <comment>not the same H₂O</comment>
+ <translation>ԶՊՒ</translation>
+ </message>
+</context>
+<context>
+ <name>Čāğĕ</name>
+ <message>
+ <location filename="translatable-unicode.js" line="2"/>
+ <source>CO₂</source>
+ <translation>בךע</translation>
+ </message>
+ <message>
+ <location filename="translatable-unicode.js" line="6"/>
+ <source>ДЕЖ</source>
+ <translation>خسس</translation>
+ </message>
+</context>
+</TS>
diff --git a/tests/auto/qscriptengine/tst_qscriptengine.cpp b/tests/auto/qscriptengine/tst_qscriptengine.cpp
index 7133a6c288..d529b8b0d2 100644
--- a/tests/auto/qscriptengine/tst_qscriptengine.cpp
+++ b/tests/auto/qscriptengine/tst_qscriptengine.cpp
@@ -95,16 +95,33 @@ private slots:
void pushPopContext();
void getSetDefaultPrototype();
void newFunction();
+ void newFunctionWithArg();
+ void newFunctionWithProto();
void newObject();
void newArray();
+ void newArray_HooliganTask218092();
+ void newArray_HooliganTask233836();
void newVariant();
+ void newVariant_defaultPrototype();
+ void newVariant_promoteObject();
+ void newVariant_replaceValue();
+ void newVariant_valueOfToString();
+ void newVariant_promoteNonObject();
+ void newVariant_promoteNonQScriptObject();
void newRegExp();
void newDate();
void newQObject();
+ void newQObject_ownership();
+ void newQObject_promoteObject();
+ void newQObject_sameQObject();
+ void newQObject_defaultPrototype();
+ void newQObject_promoteNonObject();
+ void newQObject_promoteNonQScriptObject();
void newQMetaObject();
void newActivationObject();
void getSetGlobalObject();
void globalObjectProperties();
+ void createGlobalObjectProperty();
void globalObjectGetterSetterProperty();
void customGlobalObjectWithPrototype();
void globalObjectWithCustomPrototype();
@@ -120,6 +137,7 @@ private slots:
void uncaughtException();
void errorMessage_QT679();
void valueConversion();
+ void qScriptValueFromValue_noEngine();
void importExtension();
void infiniteRecursion();
void castWithPrototypeChain();
@@ -129,6 +147,7 @@ private slots:
void gcWithNestedDataStructure();
void processEventsWhileRunning();
void throwErrorFromProcessEvents();
+ void disableProcessEventsInterval();
void stacktrace();
void numberParsing_data();
void numberParsing();
@@ -144,7 +163,10 @@ private slots:
void forInStatement();
void functionExpression();
void stringObjects();
- void getterSetterThisObject();
+ void getterSetterThisObject_global();
+ void getterSetterThisObject_plain();
+ void getterSetterThisObject_prototypeChain();
+ void getterSetterThisObject_activation();
void continueInSwitch();
void readOnlyPrototypeProperty();
void toObject();
@@ -164,11 +186,21 @@ private slots:
void translationContext_data();
void translationContext();
void translateScriptIdBased();
+ void translateScriptUnicode_data();
+ void translateScriptUnicode();
+ void translateScriptUnicodeIdBased_data();
+ void translateScriptUnicodeIdBased();
void functionScopes();
void nativeFunctionScopes();
void evaluateProgram();
+ void evaluateProgram_customScope();
+ void evaluateProgram_closure();
+ void evaluateProgram_executeLater();
+ void evaluateProgram_multipleEngines();
+ void evaluateProgram_empty();
void collectGarbageAfterConnect();
void promoteThisObjectToQObjectInConstructor();
+ void scriptValueFromQMetaObject();
void qRegExpInport_data();
void qRegExpInport();
@@ -288,8 +320,11 @@ void tst_QScriptEngine::newFunction()
QCOMPARE(fun.call().isNull(), true);
QCOMPARE(fun.construct().isObject(), true);
}
+}
- // the overload that takes a void*
+void tst_QScriptEngine::newFunctionWithArg()
+{
+ QScriptEngine eng;
{
QScriptValue fun = eng.newFunction(myFunctionWithVoidArg, (void*)this);
QVERIFY(fun.isFunction());
@@ -310,8 +345,11 @@ void tst_QScriptEngine::newFunction()
QCOMPARE(fun.call().isNull(), true);
QCOMPARE(fun.construct().isObject(), true);
}
+}
- // the overload that takes a prototype
+void tst_QScriptEngine::newFunctionWithProto()
+{
+ QScriptEngine eng;
{
QScriptValue proto = eng.newObject();
QScriptValue fun = eng.newFunction(myFunction, proto);
@@ -361,8 +399,11 @@ void tst_QScriptEngine::newArray()
QCOMPARE(array.prototype().isValid(), true);
QCOMPARE(array.prototype().isArray(), true);
QCOMPARE(array.prototype().strictlyEquals(eng.evaluate("Array.prototype")), true);
+}
- // task 218092
+void tst_QScriptEngine::newArray_HooliganTask218092()
+{
+ QScriptEngine eng;
{
QScriptValue ret = eng.evaluate("[].splice(0, 0, 'a')");
QVERIFY(ret.isArray());
@@ -388,8 +429,11 @@ void tst_QScriptEngine::newArray()
QVERIFY(ret.isArray());
QCOMPARE(ret.property("length").toInt32(), 2);
}
+}
- // task 233836
+void tst_QScriptEngine::newArray_HooliganTask233836()
+{
+ QScriptEngine eng;
{
QScriptValue ret = eng.evaluate("a = new Array(4294967295); a.push('foo')");
QVERIFY(ret.isNumber());
@@ -423,7 +467,12 @@ void tst_QScriptEngine::newVariant()
QCOMPARE(opaque.prototype().isVariant(), true);
QVERIFY(opaque.property("valueOf").call(opaque).isUndefined());
}
+}
+
+void tst_QScriptEngine::newVariant_defaultPrototype()
+{
// default prototype should be set automatically
+ QScriptEngine eng;
{
QScriptValue proto = eng.newObject();
eng.setDefaultPrototype(qMetaTypeId<QString>(), proto);
@@ -436,7 +485,12 @@ void tst_QScriptEngine::newVariant()
QVERIFY(ret2.isVariant());
QVERIFY(!ret2.prototype().strictlyEquals(proto));
}
+}
+
+void tst_QScriptEngine::newVariant_promoteObject()
+{
// "promote" plain object to variant
+ QScriptEngine eng;
{
QScriptValue object = eng.newObject();
object.setProperty("foo", eng.newObject());
@@ -453,17 +507,28 @@ void tst_QScriptEngine::newVariant()
QCOMPARE(ret.toVariant(), QVariant(123));
QVERIFY(ret.prototype().strictlyEquals(originalProto));
}
+}
+
+void tst_QScriptEngine::newVariant_replaceValue()
+{
// replace value of existing object
+ QScriptEngine eng;
{
QScriptValue object = eng.newVariant(QVariant(123));
- QScriptValue ret = eng.newVariant(object, QVariant(456));
- QVERIFY(ret.isValid());
- QVERIFY(ret.strictlyEquals(object));
- QVERIFY(ret.isVariant());
- QCOMPARE(ret.toVariant(), QVariant(456));
+ for (int x = 0; x < 2; ++x) {
+ QScriptValue ret = eng.newVariant(object, QVariant(456));
+ QVERIFY(ret.isValid());
+ QVERIFY(ret.strictlyEquals(object));
+ QVERIFY(ret.isVariant());
+ QCOMPARE(ret.toVariant(), QVariant(456));
+ }
}
+}
+void tst_QScriptEngine::newVariant_valueOfToString()
+{
// valueOf() and toString()
+ QScriptEngine eng;
{
QScriptValue object = eng.newVariant(QVariant(123));
QScriptValue value = object.property("valueOf").call(object);
@@ -497,6 +562,27 @@ void tst_QScriptEngine::newVariant()
}
}
+void tst_QScriptEngine::newVariant_promoteNonObject()
+{
+ QScriptEngine eng;
+ {
+ QVariant var(456);
+ QScriptValue ret = eng.newVariant(123, var);
+ QVERIFY(ret.isVariant());
+ QCOMPARE(ret.toVariant(), var);
+ }
+}
+
+void tst_QScriptEngine::newVariant_promoteNonQScriptObject()
+{
+ QScriptEngine eng;
+ {
+ QTest::ignoreMessage(QtWarningMsg, "QScriptEngine::newVariant(): changing class of non-QScriptObject not supported");
+ QScriptValue ret = eng.newVariant(eng.newArray(), 123);
+ QVERIFY(!ret.isValid());
+ }
+}
+
void tst_QScriptEngine::newRegExp()
{
QScriptEngine eng;
@@ -645,8 +731,11 @@ void tst_QScriptEngine::newQObject()
QCOMPARE(qobject.prototype().isQObject(), true);
QCOMPARE(qobject.scriptClass(), (QScriptClass*)0);
}
+}
- // test ownership
+void tst_QScriptEngine::newQObject_ownership()
+{
+ QScriptEngine eng;
{
QPointer<QObject> ptr = new QObject();
QVERIFY(ptr != 0);
@@ -701,7 +790,11 @@ void tst_QScriptEngine::newQObject()
QVERIFY(child != 0);
delete parent;
}
+}
+void tst_QScriptEngine::newQObject_promoteObject()
+{
+ QScriptEngine eng;
// "promote" plain object to QObject
{
QScriptValue obj = eng.newObject();
@@ -733,14 +826,20 @@ void tst_QScriptEngine::newQObject()
QScriptValue object = eng.newVariant(123);
QScriptValue originalProto = object.prototype();
QObject otherQObject;
- QScriptValue ret = eng.newQObject(object, &otherQObject);
- QVERIFY(ret.isValid());
- QVERIFY(ret.isQObject());
- QVERIFY(ret.strictlyEquals(object));
- QCOMPARE(ret.toQObject(), (QObject *)&otherQObject);
- QVERIFY(ret.prototype().strictlyEquals(originalProto));
+ for (int x = 0; x < 2; ++x) {
+ QScriptValue ret = eng.newQObject(object, &otherQObject);
+ QVERIFY(ret.isValid());
+ QVERIFY(ret.isQObject());
+ QVERIFY(ret.strictlyEquals(object));
+ QCOMPARE(ret.toQObject(), (QObject *)&otherQObject);
+ QVERIFY(ret.prototype().strictlyEquals(originalProto));
+ }
}
+}
+void tst_QScriptEngine::newQObject_sameQObject()
+{
+ QScriptEngine eng;
// calling newQObject() several times with same object
for (int x = 0; x < 2; ++x) {
QObject qobj;
@@ -771,7 +870,11 @@ void tst_QScriptEngine::newQObject()
QScriptEngine::ExcludeSuperClassMethods | opt);
QCOMPARE(obj8.strictlyEquals(obj7), preferExisting);
}
+}
+void tst_QScriptEngine::newQObject_defaultPrototype()
+{
+ QScriptEngine eng;
// newQObject() should set the default prototype, if one has been registered
{
QScriptValue oldQObjectProto = eng.defaultPrototype(qMetaTypeId<QObject*>());
@@ -795,6 +898,26 @@ void tst_QScriptEngine::newQObject()
}
}
+void tst_QScriptEngine::newQObject_promoteNonObject()
+{
+ QScriptEngine eng;
+ {
+ QScriptValue ret = eng.newQObject(123, this);
+ QVERIFY(ret.isQObject());
+ QCOMPARE(ret.toQObject(), this);
+ }
+}
+
+void tst_QScriptEngine::newQObject_promoteNonQScriptObject()
+{
+ QScriptEngine eng;
+ {
+ QTest::ignoreMessage(QtWarningMsg, "QScriptEngine::newQObject(): changing class of non-QScriptObject not supported");
+ QScriptValue ret = eng.newQObject(eng.newArray(), this);
+ QVERIFY(!ret.isValid());
+ }
+}
+
QT_BEGIN_NAMESPACE
Q_SCRIPT_DECLARE_QMETAOBJECT(QObject, QObject*)
Q_SCRIPT_DECLARE_QMETAOBJECT(QWidget, QWidget*)
@@ -981,6 +1104,11 @@ void tst_QScriptEngine::getSetGlobalObject()
QCOMPARE(glob.prototype().isObject(), true);
QCOMPARE(glob.prototype().strictlyEquals(eng.evaluate("Object.prototype")), true);
+ eng.setGlobalObject(glob);
+ QVERIFY(eng.globalObject().equals(glob));
+ eng.setGlobalObject(123);
+ QVERIFY(eng.globalObject().equals(glob));
+
QScriptValue obj = eng.newObject();
eng.setGlobalObject(obj);
QVERIFY(eng.globalObject().strictlyEquals(obj));
@@ -1030,6 +1158,28 @@ void tst_QScriptEngine::getSetGlobalObject()
QScriptValue ret = eng.evaluate("(function() { return this; })()");
QVERIFY(ret.strictlyEquals(obj));
}
+
+ // Delete property.
+ {
+ QScriptValue ret = eng.evaluate("delete foo");
+ QVERIFY(ret.isBool());
+ QVERIFY(ret.toBool());
+ QVERIFY(!obj.property("foo").isValid());
+ }
+
+ // Getter/setter property.
+ QVERIFY(eng.evaluate("this.__defineGetter__('oof', function() { return this.bar; })").isUndefined());
+ QVERIFY(eng.evaluate("this.__defineSetter__('oof', function(v) { this.bar = v; })").isUndefined());
+ QVERIFY(eng.evaluate("this.__lookupGetter__('oof')").isFunction());
+ QVERIFY(eng.evaluate("this.__lookupSetter__('oof')").isFunction());
+ eng.evaluate("oof = 123");
+ QVERIFY(eng.evaluate("oof").equals(obj.property("bar")));
+
+ // Enumeration.
+ {
+ QScriptValue ret = eng.evaluate("a = []; for (var p in this) a.push(p); a");
+ QCOMPARE(ret.toString(), QString::fromLatin1("bar,baz,oof,p,a"));
+ }
}
static QScriptValue getSetFoo(QScriptContext *ctx, QScriptEngine *)
@@ -1176,7 +1326,12 @@ void tst_QScriptEngine::globalObjectProperties()
}
}
QVERIFY(remainingNames.isEmpty());
+}
+void tst_QScriptEngine::createGlobalObjectProperty()
+{
+ QScriptEngine eng;
+ QScriptValue global = eng.globalObject();
// create property with no attributes
{
QString name = QString::fromLatin1("foo");
@@ -2256,6 +2411,14 @@ void tst_QScriptEngine::valueConversion()
QEXPECT_FAIL("", "QTBUG-6136: JSC-based back-end doesn't preserve QRegExp::minimal (always false)", Continue);
QCOMPARE(val.toRegExp().isMinimal(), in.isMinimal());
}
+
+ QCOMPARE(qscriptvalue_cast<QVariant>(QScriptValue(123)), QVariant(123));
+}
+
+void tst_QScriptEngine::qScriptValueFromValue_noEngine()
+{
+ QVERIFY(!qScriptValueFromValue(0, 123).isValid());
+ QVERIFY(!qScriptValueFromValue(0, QVariant(123)).isValid());
}
static QScriptValue __import__(QScriptContext *ctx, QScriptEngine *eng)
@@ -2694,6 +2857,19 @@ void tst_QScriptEngine::throwErrorFromProcessEvents()
QCOMPARE(ret.toString(), QString::fromLatin1("Error: Killed"));
}
+void tst_QScriptEngine::disableProcessEventsInterval()
+{
+ QScriptEngine eng;
+ eng.setProcessEventsInterval(100);
+ QCOMPARE(eng.processEventsInterval(), 100);
+ eng.setProcessEventsInterval(0);
+ QCOMPARE(eng.processEventsInterval(), 0);
+ eng.setProcessEventsInterval(-1);
+ QCOMPARE(eng.processEventsInterval(), -1);
+ eng.setProcessEventsInterval(-100);
+ QCOMPARE(eng.processEventsInterval(), -100);
+}
+
void tst_QScriptEngine::stacktrace()
{
QString script = QString::fromLatin1(
@@ -3730,9 +3906,8 @@ void tst_QScriptEngine::stringObjects()
}
}
-void tst_QScriptEngine::getterSetterThisObject()
+void tst_QScriptEngine::getterSetterThisObject_global()
{
- // Global Object
{
QScriptEngine eng;
// read
@@ -3790,8 +3965,10 @@ void tst_QScriptEngine::getterSetterThisObject()
QCOMPARE(ret.toString(), QString::fromLatin1("foo"));
}
}
+}
- // other object
+void tst_QScriptEngine::getterSetterThisObject_plain()
+{
{
QScriptEngine eng;
eng.evaluate("o = {}");
@@ -3808,8 +3985,10 @@ void tst_QScriptEngine::getterSetterThisObject()
QVERIFY(eng.evaluate("with (o) x = 'foo'").equals("foo"));
QVERIFY(eng.evaluate("with (o) with (q) x = 'foo'").equals("foo"));
}
+}
- // getter+setter in prototype chain
+void tst_QScriptEngine::getterSetterThisObject_prototypeChain()
+{
{
QScriptEngine eng;
eng.evaluate("o = {}; p = {}; o.__proto__ = p");
@@ -3827,8 +4006,10 @@ void tst_QScriptEngine::getterSetterThisObject()
QVERIFY(eng.evaluate("with (o) x = 'foo'").equals("foo"));
QVERIFY(eng.evaluate("with (o) with (q) x = 'foo'").equals("foo"));
}
+}
- // getter+setter in activation
+void tst_QScriptEngine::getterSetterThisObject_activation()
+{
{
QScriptEngine eng;
QScriptContext *ctx = eng.pushContext();
@@ -4522,6 +4703,17 @@ void tst_QScriptEngine::installTranslatorFunctions()
QVERIFY(ret.isString());
QCOMPARE(ret.toString(), QString::fromLatin1("foobar"));
}
+ {
+ QScriptValue ret = eng.evaluate("'foo%0'.arg(123)");
+ QVERIFY(ret.isString());
+ QCOMPARE(ret.toString(), QString::fromLatin1("foo123"));
+ }
+ {
+ // Maybe this should throw an error?
+ QScriptValue ret = eng.evaluate("'foo%0'.arg()");
+ QVERIFY(ret.isString());
+ QCOMPARE(ret.toString(), QString());
+ }
{
QScriptValue ret = eng.evaluate("qsTrId('foo')");
@@ -4533,6 +4725,7 @@ void tst_QScriptEngine::installTranslatorFunctions()
QVERIFY(ret.isString());
QCOMPARE(ret.toString(), QString::fromLatin1("foo"));
}
+ QVERIFY(eng.evaluate("QT_TRID_NOOP()").isUndefined());
}
static QScriptValue callQsTr(QScriptContext *ctx, QScriptEngine *eng)
@@ -4567,9 +4760,14 @@ void tst_QScriptEngine::translateScript()
QCOMPARE(engine.evaluate("eval('qsTranslate(\\'FooContext\\', \\'Goodbye\\')')", fileName).toString(), QString::fromLatin1("Farvel"));
QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Goodbye', '', 'UnicodeUTF8')", fileName).toString(), QString::fromLatin1("Farvel"));
+ QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Goodbye', '', 'CodecForTr')", fileName).toString(), QString::fromLatin1("Farvel"));
+
+ QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Goodbye', '', 'UnicodeUTF8', 42)", fileName).toString(), QString::fromLatin1("Goodbye"));
QCOMPARE(engine.evaluate("qsTr('One', 'not the same one')", fileName).toString(), QString::fromLatin1("Enda en"));
+ QCOMPARE(engine.evaluate("qsTr('One', 'not the same one', 42)", fileName).toString(), QString::fromLatin1("One"));
+
QVERIFY(engine.evaluate("QT_TR_NOOP()").isUndefined());
QCOMPARE(engine.evaluate("QT_TR_NOOP('One')").toString(), QString::fromLatin1("One"));
@@ -4638,6 +4836,7 @@ void tst_QScriptEngine::translateWithInvalidArgs_data()
QTest::newRow("qsTranslate()") << "qsTranslate()" << "Error: qsTranslate() requires at least two arguments";
QTest::newRow("qsTranslate('foo')") << "qsTranslate('foo')" << "Error: qsTranslate() requires at least two arguments";
+ QTest::newRow("qsTranslate(123, 'foo')") << "qsTranslate(123, 'foo')" << "Error: qsTranslate(): first argument (context) must be a string";
QTest::newRow("qsTranslate('foo', 123)") << "qsTranslate('foo', 123)" << "Error: qsTranslate(): second argument (text) must be a string";
QTest::newRow("qsTranslate('foo', 'bar', 123)") << "qsTranslate('foo', 'bar', 123)" << "Error: qsTranslate(): third argument (comment) must be a string";
QTest::newRow("qsTranslate('foo', 'bar', 'baz', 123)") << "qsTranslate('foo', 'bar', 'baz', 123)" << "Error: qsTranslate(): fourth argument (encoding) must be a string";
@@ -4755,6 +4954,93 @@ void tst_QScriptEngine::translateScriptIdBased()
QString::fromLatin1("qtn_foo_bar")); // Doesn't have plural
}
+// How to add a new test row:
+// - Find a nice list of Unicode characters to choose from
+// - Write source string/context/comment in .js using Unicode escape sequences (\uABCD)
+// - Update corresponding .ts file (e.g. lupdate foo.js -ts foo.ts -codecfortr UTF-8)
+// - Enter translation in Linguist
+// - Update corresponding .qm file (e.g. lrelease foo.ts)
+// - Evaluate script that performs translation; make sure the correct result is returned
+// (e.g. by setting the resulting string as the text of a QLabel and visually verifying
+// that it looks the same as what you entered in Linguist :-) )
+// - Generate the expectedTranslation column data using toUtf8().toHex()
+void tst_QScriptEngine::translateScriptUnicode_data()
+{
+ QTest::addColumn<QString>("expression");
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QString>("expectedTranslation");
+
+ QString fileName = QString::fromLatin1("translatable-unicode.js");
+ QTest::newRow("qsTr('H\\u2082O')@translatable-unicode.js")
+ << QString::fromLatin1("qsTr('H\\u2082O')") << fileName << QString::fromUtf8("\xcd\xbb\xcd\xbc\xcd\xbd");
+ QTest::newRow("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')@translatable-unicode.js")
+ << QString::fromLatin1("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')") << fileName << QString::fromUtf8("\xd7\x91\xd7\x9a\xd7\xa2");
+ QTest::newRow("qsTr('\\u0391\\u0392\\u0393')@translatable-unicode.js")
+ << QString::fromLatin1("qsTr('\\u0391\\u0392\\u0393')") << fileName << QString::fromUtf8("\xd3\x9c\xd2\xb4\xd1\xbc");
+ QTest::newRow("qsTranslate('\\u010C\\u0101\\u011F\\u0115', '\\u0414\\u0415\\u0416')@translatable-unicode.js")
+ << QString::fromLatin1("qsTranslate('\\u010C\\u0101\\u011F\\u0115', '\\u0414\\u0415\\u0416')") << fileName << QString::fromUtf8("\xd8\xae\xd8\xb3\xd8\xb3");
+ QTest::newRow("qsTr('H\\u2082O', 'not the same H\\u2082O')@translatable-unicode.js")
+ << QString::fromLatin1("qsTr('H\\u2082O', 'not the same H\\u2082O')") << fileName << QString::fromUtf8("\xd4\xb6\xd5\x8a\xd5\x92");
+ QTest::newRow("qsTr('H\\u2082O')")
+ << QString::fromLatin1("qsTr('H\\u2082O')") << QString() << QString::fromUtf8("\x48\xe2\x82\x82\x4f");
+ QTest::newRow("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')")
+ << QString::fromLatin1("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')") << QString() << QString::fromUtf8("\xd7\x91\xd7\x9a\xd7\xa2");
+}
+
+void tst_QScriptEngine::translateScriptUnicode()
+{
+ QFETCH(QString, expression);
+ QFETCH(QString, fileName);
+ QFETCH(QString, expectedTranslation);
+
+ QScriptEngine engine;
+
+ QTranslator translator;
+ QVERIFY(translator.load(":/translations/translatable-unicode"));
+ QCoreApplication::instance()->installTranslator(&translator);
+ engine.installTranslatorFunctions();
+
+ QCOMPARE(engine.evaluate(expression, fileName).toString(), expectedTranslation);
+ QVERIFY(!engine.hasUncaughtException());
+
+ QCoreApplication::instance()->removeTranslator(&translator);
+}
+
+void tst_QScriptEngine::translateScriptUnicodeIdBased_data()
+{
+ QTest::addColumn<QString>("expression");
+ QTest::addColumn<QString>("expectedTranslation");
+
+ QTest::newRow("qsTrId('\\u01F8\\u01D2\\u0199\\u01D0\\u01E1'')")
+ << QString::fromLatin1("qsTrId('\\u01F8\\u01D2\\u0199\\u01D0\\u01E1')") << QString::fromUtf8("\xc6\xa7\xc6\xb0\xc6\x88\xc8\xbc\xc8\x9d\xc8\xbf\xc8\x99");
+ QTest::newRow("qsTrId('\\u0191\\u01CE\\u0211\\u0229\\u019C\\u018E\\u019A\\u01D0')")
+ << QString::fromLatin1("qsTrId('\\u0191\\u01CE\\u0211\\u0229\\u019C\\u018E\\u019A\\u01D0')") << QString::fromUtf8("\xc7\xa0\xc8\xa1\xc8\x8b\xc8\x85\xc8\x95");
+ QTest::newRow("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C', 10)")
+ << QString::fromLatin1("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C', 10)") << QString::fromUtf8("\x31\x30\x20\xc6\x92\xc6\xa1\xc7\x92\x28\xc8\x99\x29");
+ QTest::newRow("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C')")
+ << QString::fromLatin1("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C')") << QString::fromUtf8("\xc6\x91\xc6\xb0\xc7\xb9");
+ QTest::newRow("qsTrId('\\u01CD\\u0180\\u01A8\\u0190\\u019E\\u01AB')")
+ << QString::fromLatin1("qsTrId('\\u01CD\\u0180\\u01A8\\u0190\\u019E\\u01AB')") << QString::fromUtf8("\xc7\x8d\xc6\x80\xc6\xa8\xc6\x90\xc6\x9e\xc6\xab");
+}
+
+void tst_QScriptEngine::translateScriptUnicodeIdBased()
+{
+ QFETCH(QString, expression);
+ QFETCH(QString, expectedTranslation);
+
+ QScriptEngine engine;
+
+ QTranslator translator;
+ QVERIFY(translator.load(":/translations/idtranslatable-unicode"));
+ QCoreApplication::instance()->installTranslator(&translator);
+ engine.installTranslatorFunctions();
+
+ QCOMPARE(engine.evaluate(expression).toString(), expectedTranslation);
+ QVERIFY(!engine.hasUncaughtException());
+
+ QCoreApplication::instance()->removeTranslator(&translator);
+}
+
void tst_QScriptEngine::functionScopes()
{
QScriptEngine eng;
@@ -4932,8 +5218,11 @@ void tst_QScriptEngine::evaluateProgram()
QVERIFY(differentProgram != program);
QVERIFY(!eng.evaluate(differentProgram).equals(expected));
}
+}
- // Program that accesses variable in the scope
+void tst_QScriptEngine::evaluateProgram_customScope()
+{
+ QScriptEngine eng;
{
QScriptProgram program("a");
QVERIFY(!program.isNull());
@@ -4970,8 +5259,11 @@ void tst_QScriptEngine::evaluateProgram()
ctx->popScope();
}
+}
- // Program that creates closure
+void tst_QScriptEngine::evaluateProgram_closure()
+{
+ QScriptEngine eng;
{
QScriptProgram program("(function() { var count = 0; return function() { return count++; }; })");
QVERIFY(!program.isNull());
@@ -4991,7 +5283,11 @@ void tst_QScriptEngine::evaluateProgram()
QVERIFY(ret.isNumber());
}
}
+}
+void tst_QScriptEngine::evaluateProgram_executeLater()
+{
+ QScriptEngine eng;
// Program created in a function call, then executed later
{
QScriptValue fun = eng.newFunction(createProgram);
@@ -5012,8 +5308,11 @@ void tst_QScriptEngine::evaluateProgram()
QCOMPARE(ret.toInt32(), 123);
}
}
+}
- // Same program run in different engines
+void tst_QScriptEngine::evaluateProgram_multipleEngines()
+{
+ QScriptEngine eng;
{
QString code("1 + 2");
QScriptProgram program(code);
@@ -5027,8 +5326,11 @@ void tst_QScriptEngine::evaluateProgram()
}
}
}
+}
- // No program
+void tst_QScriptEngine::evaluateProgram_empty()
+{
+ QScriptEngine eng;
{
QScriptProgram program;
QVERIFY(program.isNull());
@@ -5101,6 +5403,10 @@ void tst_QScriptEngine::qRegExpInport_data()
QTest::newRow("aaa") << QRegExp("a{2,5}") << "aAaAaaaaaAa";
QTest::newRow("aaa minimal") << minimal(QRegExp("a{2,5}")) << "aAaAaaaaaAa";
QTest::newRow("minimal") << minimal(QRegExp(".*\\} [*8]")) << "}?} ?} *";
+ QTest::newRow(".? minimal") << minimal(QRegExp(".?")) << ".?";
+ QTest::newRow(".+ minimal") << minimal(QRegExp(".+")) << ".+";
+ QTest::newRow("[.?] minimal") << minimal(QRegExp("[.?]")) << ".?";
+ QTest::newRow("[.+] minimal") << minimal(QRegExp("[.+]")) << ".+";
}
void tst_QScriptEngine::qRegExpInport()
@@ -5445,5 +5751,31 @@ void tst_QScriptEngine::newGrowingStaticScopeObject()
eng.popContext();
}
+QT_BEGIN_NAMESPACE
+Q_SCRIPT_DECLARE_QMETAOBJECT(QStandardItemModel, QObject*)
+QT_END_NAMESPACE
+
+void tst_QScriptEngine::scriptValueFromQMetaObject()
+{
+ QScriptEngine eng;
+ {
+ QScriptValue meta = eng.scriptValueFromQMetaObject<QScriptEngine>();
+ QVERIFY(meta.isQMetaObject());
+ QCOMPARE(meta.toQMetaObject(), &QScriptEngine::staticMetaObject);
+ // Because of missing Q_SCRIPT_DECLARE_QMETAOBJECT() for QScriptEngine.
+ QVERIFY(!meta.construct().isValid());
+ }
+ {
+ QScriptValue meta = eng.scriptValueFromQMetaObject<QStandardItemModel>();
+ QVERIFY(meta.isQMetaObject());
+ QCOMPARE(meta.toQMetaObject(), &QStandardItemModel::staticMetaObject);
+ QScriptValue obj = meta.construct(QScriptValueList() << eng.newQObject(&eng));
+ QVERIFY(obj.isQObject());
+ QStandardItemModel *model = qobject_cast<QStandardItemModel*>(obj.toQObject());
+ QVERIFY(model != 0);
+ QCOMPARE(model->parent(), (QObject*)&eng);
+ }
+}
+
QTEST_MAIN(tst_QScriptEngine)
#include "tst_qscriptengine.moc"
diff --git a/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp b/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp
index c5e4954679..6b49858555 100644
--- a/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp
+++ b/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp
@@ -50,24 +50,11 @@
#include <qmenu.h>
#include <qplaintextedit.h>
#include <qtoolbar.h>
+#include "../../shared/util.h"
//TESTED_CLASS=
//TESTED_FILES=
-// Will try to wait for the condition while allowing event processing
-#define QTRY_COMPARE(__expr, __expected) \
- do { \
- const int __step = 50; \
- const int __timeout = 5000; \
- if ((__expr) != (__expected)) { \
- QTest::qWait(0); \
- } \
- for (int __i = 0; __i < __timeout && ((__expr) != (__expected)); __i+=__step) { \
- QTest::qWait(__step); \
- } \
- QCOMPARE(__expr, __expected); \
- } while(0)
-
// Can't use QTest::qWait() because it causes event loop to hang on some platforms
static void qsWait(int ms)
{
@@ -89,6 +76,9 @@ public:
tst_QScriptEngineDebugger();
virtual ~tst_QScriptEngineDebugger();
+protected slots:
+ void recordDebuggerStateAndContinue();
+
private slots:
void attachAndDetach();
void action();
@@ -97,6 +87,11 @@ private slots:
void debuggerSignals();
void consoleCommands();
void multithreadedDebugging();
+ void autoShowStandardWindow();
+ void standardWindowOwnership();
+
+private:
+ QScriptEngineDebugger::DebuggerState m_recordedDebuggerState;
};
tst_QScriptEngineDebugger::tst_QScriptEngineDebugger()
@@ -107,6 +102,14 @@ tst_QScriptEngineDebugger::~tst_QScriptEngineDebugger()
{
}
+void tst_QScriptEngineDebugger::recordDebuggerStateAndContinue()
+{
+ QScriptEngineDebugger *debugger = qobject_cast<QScriptEngineDebugger*>(sender());
+ Q_ASSERT(debugger != 0);
+ m_recordedDebuggerState = debugger->state();
+ debugger->action(QScriptEngineDebugger::ContinueAction)->trigger();
+}
+
void tst_QScriptEngineDebugger::attachAndDetach()
{
#if defined(Q_OS_WINCE) && _WIN32_WCE < 0x600
@@ -784,5 +787,68 @@ void tst_QScriptEngineDebugger::multithreadedDebugging()
QTRY_COMPARE(threadFinishedSpy.count(), 1);
}
+void tst_QScriptEngineDebugger::autoShowStandardWindow()
+{
+ {
+ QScriptEngine engine;
+ QScriptEngineDebugger debugger;
+ QCOMPARE(debugger.autoShowStandardWindow(), true);
+ debugger.attachTo(&engine);
+ QObject::connect(&debugger, SIGNAL(evaluationSuspended()),
+ debugger.action(QScriptEngineDebugger::ContinueAction),
+ SLOT(trigger()));
+ engine.evaluate("debugger");
+ QTRY_VERIFY(debugger.standardWindow()->isVisible());
+
+ debugger.setAutoShowStandardWindow(true);
+ QCOMPARE(debugger.autoShowStandardWindow(), true);
+
+ debugger.setAutoShowStandardWindow(false);
+ QCOMPARE(debugger.autoShowStandardWindow(), false);
+
+ debugger.setAutoShowStandardWindow(true);
+ QCOMPARE(debugger.autoShowStandardWindow(), true);
+
+ debugger.standardWindow()->hide();
+
+ engine.evaluate("debugger");
+ QTRY_VERIFY(debugger.standardWindow()->isVisible());
+ }
+
+ {
+ QScriptEngine engine;
+ QScriptEngineDebugger debugger;
+ debugger.setAutoShowStandardWindow(false);
+ debugger.attachTo(&engine);
+ QObject::connect(&debugger, SIGNAL(evaluationSuspended()),
+ debugger.action(QScriptEngineDebugger::ContinueAction),
+ SLOT(trigger()));
+ QSignalSpy evaluationResumedSpy(&debugger, SIGNAL(evaluationResumed()));
+ engine.evaluate("debugger");
+ QTRY_COMPARE(evaluationResumedSpy.count(), 1);
+ QVERIFY(!debugger.standardWindow()->isVisible());
+ }
+}
+
+void tst_QScriptEngineDebugger::standardWindowOwnership()
+{
+ QScriptEngine engine;
+ QPointer<QMainWindow> win;
+ {
+ QScriptEngineDebugger debugger;
+ win = debugger.standardWindow();
+ }
+ QVERIFY(win == 0);
+
+ // Reparent the window.
+ QWidget widget;
+ {
+ QScriptEngineDebugger debugger;
+ win = debugger.standardWindow();
+ win->setParent(&widget);
+ }
+ QVERIFY(win != 0);
+}
+
QTEST_MAIN(tst_QScriptEngineDebugger)
#include "tst_qscriptenginedebugger.moc"
diff --git a/tests/auto/qscriptextensionplugin/qscriptextensionplugin.pro b/tests/auto/qscriptextensionplugin/qscriptextensionplugin.pro
new file mode 100644
index 0000000000..d4671c8731
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/qscriptextensionplugin.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+CONFIG -= app_bundle
+SUBDIRS = simpleplugin staticplugin test
diff --git a/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.cpp b/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.cpp
new file mode 100644
index 0000000000..1679512646
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.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 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 <QtScript/qscriptextensionplugin.h>
+#include <QtScript/qscriptengine.h>
+#include <qdebug.h>
+
+class SimplePlugin : public QScriptExtensionPlugin
+{
+public:
+ SimplePlugin(QObject *parent = 0);
+ ~SimplePlugin();
+
+ virtual QStringList keys() const;
+ virtual void initialize(const QString &key, QScriptEngine *engine);
+};
+
+SimplePlugin::SimplePlugin(QObject *parent)
+ : QScriptExtensionPlugin(parent)
+{
+}
+
+SimplePlugin::~SimplePlugin()
+{
+}
+
+QStringList SimplePlugin::keys() const
+{
+ return QStringList() << "simple"
+ << "simple.foo"
+ << "simple.foo.bar";
+}
+
+void SimplePlugin::initialize(const QString &key, QScriptEngine *engine)
+{
+ engine->globalObject().setProperty("pluginKey", key);
+ QScriptValue package = setupPackage(key, engine);
+ engine->globalObject().setProperty("package", package);
+}
+
+Q_EXPORT_PLUGIN2(simpleplugin, SimplePlugin)
diff --git a/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.pro b/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.pro
new file mode 100644
index 0000000000..e184ca4ee5
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/simpleplugin/simpleplugin.pro
@@ -0,0 +1,10 @@
+TEMPLATE = lib
+CONFIG += plugin
+SOURCES = simpleplugin.cpp
+QT = core script
+TARGET = simpleplugin
+DESTDIR = ../plugins/script
+
+symbian {
+ TARGET.EPOCALLOWDLLDATA=1
+}
diff --git a/tests/auto/qscriptextensionplugin/staticplugin/__init__.js b/tests/auto/qscriptextensionplugin/staticplugin/__init__.js
new file mode 100644
index 0000000000..4e462aea98
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/staticplugin/__init__.js
@@ -0,0 +1,6 @@
+spy = {
+ extension: __extension__,
+ setupPackage: __setupPackage__,
+ postInit: __postInit__
+};
+__postInit__ = function() { postInitWasCalled = true; };
diff --git a/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.cpp b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.cpp
new file mode 100644
index 0000000000..b13f723c1f
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.cpp
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** 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 <QtScript/qscriptextensionplugin.h>
+#include <QtScript/qscriptengine.h>
+#include <qdebug.h>
+
+class StaticPlugin : public QScriptExtensionPlugin
+{
+public:
+ StaticPlugin(QObject *parent = 0);
+ ~StaticPlugin();
+
+ virtual QStringList keys() const;
+ virtual void initialize(const QString &key, QScriptEngine *engine);
+};
+
+StaticPlugin::StaticPlugin(QObject *parent)
+ : QScriptExtensionPlugin(parent)
+{
+}
+
+StaticPlugin::~StaticPlugin()
+{
+}
+
+QStringList StaticPlugin::keys() const
+{
+ return QStringList() << "static";
+}
+
+void StaticPlugin::initialize(const QString &key, QScriptEngine *engine)
+{
+ engine->globalObject().setProperty("pluginKey", key);
+}
+
+Q_EXPORT_PLUGIN2(staticplugin, StaticPlugin)
diff --git a/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.pro b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.pro
new file mode 100644
index 0000000000..a003338583
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.pro
@@ -0,0 +1,7 @@
+TEMPLATE = lib
+CONFIG += static plugin
+SOURCES = staticplugin.cpp
+RESOURCES = staticplugin.qrc
+QT = core script
+TARGET = staticplugin
+DESTDIR = ../plugins/script
diff --git a/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.qrc b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.qrc
new file mode 100644
index 0000000000..293bf0e6cb
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/staticplugin/staticplugin.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/qtscriptextension/static/">
+<file>__init__.js</file>
+</qresource>
+</RCC>
+
diff --git a/tests/auto/qscriptextensionplugin/test/test.pro b/tests/auto/qscriptextensionplugin/test/test.pro
new file mode 100644
index 0000000000..549bac266c
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/test/test.pro
@@ -0,0 +1,18 @@
+load(qttest_p4)
+
+QT = core script
+SOURCES = ../tst_qscriptextensionplugin.cpp
+CONFIG -= app_bundle
+LIBS += -L../plugins/script -lstaticplugin
+
+TARGET = tst_qscriptextensionplugin
+CONFIG(debug_and_release) {
+ CONFIG(debug, debug|release) {
+ DESTDIR = ../debug
+ } else {
+ DESTDIR = ../release
+ }
+} else {
+ DESTDIR = ..
+}
+
diff --git a/tests/auto/qscriptextensionplugin/tst_qscriptextensionplugin.cpp b/tests/auto/qscriptextensionplugin/tst_qscriptextensionplugin.cpp
new file mode 100644
index 0000000000..e8b5e0a10c
--- /dev/null
+++ b/tests/auto/qscriptextensionplugin/tst_qscriptextensionplugin.cpp
@@ -0,0 +1,167 @@
+/****************************************************************************
+**
+** 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 <QtScript/qscriptengine.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QScriptExtensionPlugin : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QScriptExtensionPlugin();
+ virtual ~tst_QScriptExtensionPlugin();
+
+private slots:
+ void importSimplePlugin();
+ void importStaticPlugin();
+};
+
+tst_QScriptExtensionPlugin::tst_QScriptExtensionPlugin()
+{
+}
+
+tst_QScriptExtensionPlugin::~tst_QScriptExtensionPlugin()
+{
+}
+
+void tst_QScriptExtensionPlugin::importSimplePlugin()
+{
+ QScriptEngine eng;
+ QCoreApplication::addLibraryPath("plugins");
+
+ QVERIFY(eng.importedExtensions().isEmpty());
+
+ QStringList available = eng.availableExtensions();
+ QVERIFY(available.contains("simple"));
+ QVERIFY(available.contains("simple.foo"));
+ QVERIFY(available.contains("simple.foo.bar"));
+
+ QScriptValue extensionObject;
+ {
+ QVERIFY(eng.importExtension("simple").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 1);
+ QCOMPARE(eng.importedExtensions().at(0), QString::fromLatin1("simple"));
+ QVERIFY(eng.availableExtensions().contains("simple"));
+ QVERIFY(eng.globalObject().property("pluginKey").equals("simple"));
+ QVERIFY(eng.globalObject().property("package").isObject());
+ extensionObject = eng.globalObject().property("simple");
+ QVERIFY(extensionObject.isObject());
+ QVERIFY(extensionObject.equals(eng.globalObject().property("package")));
+ }
+
+ {
+ QVERIFY(eng.importExtension("simple.foo").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 2);
+ QCOMPARE(eng.importedExtensions().at(1), QString::fromLatin1("simple.foo"));
+ QVERIFY(eng.availableExtensions().contains("simple.foo"));
+ QVERIFY(eng.globalObject().property("pluginKey").equals("simple.foo"));
+ QVERIFY(eng.globalObject().property("package").isObject());
+ QVERIFY(!extensionObject.equals(eng.globalObject().property("package")));
+ QVERIFY(extensionObject.equals(eng.globalObject().property("simple")));
+ QVERIFY(extensionObject.property("foo").isObject());
+ QVERIFY(extensionObject.property("foo").equals(eng.globalObject().property("package")));
+ }
+
+ {
+ QVERIFY(eng.importExtension("simple.foo.bar").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 3);
+ QCOMPARE(eng.importedExtensions().at(2), QString::fromLatin1("simple.foo.bar"));
+ QVERIFY(eng.availableExtensions().contains("simple.foo.bar"));
+ QVERIFY(eng.globalObject().property("pluginKey").equals("simple.foo.bar"));
+ QVERIFY(eng.globalObject().property("package").isObject());
+ QVERIFY(!extensionObject.equals(eng.globalObject().property("package")));
+ QVERIFY(extensionObject.equals(eng.globalObject().property("simple")));
+ QVERIFY(extensionObject.property("foo").property("bar").isObject());
+ QVERIFY(extensionObject.property("foo").property("bar").equals(eng.globalObject().property("package")));
+ }
+
+ // Extensions can't be imported multiple times.
+ eng.globalObject().setProperty("pluginKey", QScriptValue());
+ QVERIFY(eng.importExtension("simple").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 3);
+ QVERIFY(!eng.globalObject().property("pluginKey").isValid());
+
+ QVERIFY(eng.importExtension("simple.foo").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 3);
+ QVERIFY(!eng.globalObject().property("pluginKey").isValid());
+
+ QVERIFY(eng.importExtension("simple.foo.bar").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 3);
+ QVERIFY(!eng.globalObject().property("pluginKey").isValid());
+}
+
+void tst_QScriptExtensionPlugin::importStaticPlugin()
+{
+ Q_INIT_RESOURCE(staticplugin);
+ QScriptEngine eng;
+ QVERIFY(eng.availableExtensions().contains("static"));
+ QVERIFY(eng.importExtension("static").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 1);
+ QCOMPARE(eng.importedExtensions().at(0), QString::fromLatin1("static"));
+ QVERIFY(eng.availableExtensions().contains("static"));
+ QVERIFY(eng.globalObject().property("pluginKey").equals("static"));
+
+ // Verify that :/qtscriptextension/static/__init__.js was evaluated.
+ QVERIFY(eng.evaluate("spy").isObject());
+ QVERIFY(eng.evaluate("spy.extension").equals("static"));
+ QVERIFY(eng.evaluate("spy.setupPackage").isFunction());
+ QVERIFY(eng.evaluate("spy.postInit").isUndefined());
+
+ QVERIFY(eng.evaluate("postInitWasCalled").isBool());
+ QVERIFY(eng.evaluate("postInitWasCalled").toBool());
+
+ // Extensions can't be imported multiple times.
+ eng.globalObject().setProperty("pluginKey", QScriptValue());
+ QVERIFY(eng.importExtension("static").isUndefined());
+ QCOMPARE(eng.importedExtensions().size(), 1);
+ QVERIFY(!eng.globalObject().property("pluginKey").isValid());
+}
+
+Q_IMPORT_PLUGIN(staticplugin)
+
+QTEST_MAIN(tst_QScriptExtensionPlugin)
+#include "tst_qscriptextensionplugin.moc"
diff --git a/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp b/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
index 0d57f0c033..29934d55e8 100644
--- a/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
+++ b/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
@@ -329,6 +329,18 @@ public:
{ m_qtFunctionInvoked = 58; m_actuals << int(arg); return arg; }
Q_INVOKABLE MyQObject::Ability myInvokableWithQualifiedFlagsArg(MyQObject::Ability arg)
{ m_qtFunctionInvoked = 59; m_actuals << int(arg); return arg; }
+ Q_INVOKABLE QWidget *myInvokableWithQWidgetStarArg(QWidget *arg)
+ { m_qtFunctionInvoked = 63; m_actuals << qVariantFromValue((QWidget*)arg); return arg; }
+ Q_INVOKABLE short myInvokableWithShortArg(short arg)
+ { m_qtFunctionInvoked = 64; m_actuals << qVariantFromValue(arg); return arg; }
+ Q_INVOKABLE unsigned short myInvokableWithUShortArg(unsigned short arg)
+ { m_qtFunctionInvoked = 65; m_actuals << qVariantFromValue(arg); return arg; }
+ Q_INVOKABLE char myInvokableWithCharArg(char arg)
+ { m_qtFunctionInvoked = 66; m_actuals << qVariantFromValue(arg); return arg; }
+ Q_INVOKABLE unsigned char myInvokableWithUCharArg(unsigned char arg)
+ { m_qtFunctionInvoked = 67; m_actuals << qVariantFromValue(arg); return arg; }
+ Q_INVOKABLE qulonglong myInvokableWithULonglongArg(qulonglong arg)
+ { m_qtFunctionInvoked = 68; m_actuals << qVariantFromValue(arg); return arg; }
Q_INVOKABLE QObjectList findObjects() const
{ return findChildren<QObject *>(); }
@@ -394,6 +406,8 @@ public Q_SLOTS:
{ m_qtFunctionInvoked = 32; m_actuals << arg; }
void myOverloadedSlot(const QDate &arg)
{ m_qtFunctionInvoked = 33; m_actuals << arg; }
+ void myOverloadedSlot(const QTime &arg)
+ { m_qtFunctionInvoked = 69; m_actuals << arg; }
void myOverloadedSlot(const QRegExp &arg)
{ m_qtFunctionInvoked = 34; m_actuals << arg; }
void myOverloadedSlot(const QVariant &arg)
@@ -514,11 +528,26 @@ protected slots:
private slots:
void registeredTypes();
void getSetStaticProperty();
+ void getSetStaticProperty_propertyFlags();
+ void getSetStaticProperty_changeInCpp();
+ void getSetStaticProperty_changeInJS();
+ void getSetStaticProperty_compatibleVariantTypes();
+ void getSetStaticProperty_conversion();
+ void getSetStaticProperty_delete();
+ void getSetStaticProperty_nonScriptable();
+ void getSetStaticProperty_writeOnly();
+ void getSetStaticProperty_readOnly();
+ void getSetStaticProperty_enum();
+ void getSetStaticProperty_qflags();
+ void getSetStaticProperty_pointerDeref();
+ void getSetStaticProperty_customGetterSetter();
+ void getSetStaticProperty_methodPersistence();
void getSetDynamicProperty();
void getSetChildren();
void callQtInvokable();
void connectAndDisconnect();
void connectAndDisconnectWithBadArgs();
+ void connectAndDisconnect_senderDeleted();
void cppConnectAndDisconnect();
void classEnums();
void classConstructor();
@@ -640,7 +669,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QCOMPARE(m_engine->evaluate("myObject.stringListProperty[1]").isString(), true);
QCOMPARE(m_engine->evaluate("myObject.stringListProperty[1]").toString(),
QLatin1String("zag"));
+}
+void tst_QScriptExtQObject::getSetStaticProperty_propertyFlags()
+{
// default flags for "normal" properties
{
QScriptValue mobj = m_engine->globalObject().property("myObject");
@@ -662,7 +694,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QVERIFY(!(mobj.propertyFlags("mySlot()") & QScriptValue::SkipInEnumeration));
QVERIFY(mobj.propertyFlags("mySlot()") & QScriptValue::QObjectMember);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_changeInCpp()
+{
// property change in C++ should be reflected in script
m_myObject->setIntProperty(456);
QCOMPARE(m_engine->evaluate("myObject.intProperty")
@@ -686,7 +721,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
m_myObject->setStringProperty(QLatin1String("zab"));
QCOMPARE(m_engine->evaluate("myObject.stringProperty")
.equals(QScriptValue(m_engine, QLatin1String("zab"))), true);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_changeInJS()
+{
// property change in script should be reflected in C++
QCOMPARE(m_engine->evaluate("myObject.intProperty = 123")
.strictlyEquals(QScriptValue(m_engine, 123)), true);
@@ -769,7 +807,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
<< QLatin1String("two")
<< QLatin1String("true"));
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_compatibleVariantTypes()
+{
// test setting properties where we can't convert the type natively but where the
// types happen to be compatible variant types already
{
@@ -788,7 +829,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
mobj.setProperty("propWithCustomType", m_engine->newVariant(qVariantFromValue(t)));
QVERIFY(m_myObject->propWithCustomType().string == t.string);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_conversion()
+{
// test that we do value conversion if necessary when setting properties
{
QScriptValue br = m_engine->evaluate("myObject.brushProperty");
@@ -808,28 +852,41 @@ void tst_QScriptExtQObject::getSetStaticProperty()
m_engine->globalObject().setProperty("myColor", QScriptValue());
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_delete()
+{
// try to delete
QCOMPARE(m_engine->evaluate("delete myObject.intProperty").toBoolean(), false);
QCOMPARE(m_engine->evaluate("myObject.intProperty").toNumber(), 123.0);
+ m_myObject->setVariantProperty(42);
QCOMPARE(m_engine->evaluate("delete myObject.variantProperty").toBoolean(), false);
QCOMPARE(m_engine->evaluate("myObject.variantProperty").toNumber(), 42.0);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_nonScriptable()
+{
// non-scriptable property
QCOMPARE(m_myObject->hiddenProperty(), 456.0);
QCOMPARE(m_engine->evaluate("myObject.hiddenProperty").isUndefined(), true);
QCOMPARE(m_engine->evaluate("myObject.hiddenProperty = 123;"
"myObject.hiddenProperty").toInt32(), 123);
QCOMPARE(m_myObject->hiddenProperty(), 456.0);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_writeOnly()
+{
// write-only property
QCOMPARE(m_myObject->writeOnlyProperty(), 789);
QCOMPARE(m_engine->evaluate("myObject.writeOnlyProperty").isUndefined(), true);
QCOMPARE(m_engine->evaluate("myObject.writeOnlyProperty = 123;"
"myObject.writeOnlyProperty").isUndefined(), true);
QCOMPARE(m_myObject->writeOnlyProperty(), 123);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_readOnly()
+{
// read-only property
QCOMPARE(m_myObject->readOnlyProperty(), 987);
QCOMPARE(m_engine->evaluate("myObject.readOnlyProperty").toInt32(), 987);
@@ -841,7 +898,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QCOMPARE(mobj.propertyFlags("readOnlyProperty") & QScriptValue::ReadOnly,
QScriptValue::ReadOnly);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_enum()
+{
// enum property
QCOMPARE(m_myObject->enumProperty(), MyQObject::BarPolicy);
{
@@ -866,7 +926,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QCOMPARE(m_myObject->enumProperty(), MyQObject::BazPolicy);
m_engine->evaluate("myObject.enumProperty = 'nada'");
QCOMPARE(m_myObject->enumProperty(), (MyQObject::Policy)-1);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_qflags()
+{
// flags property
QCOMPARE(m_myObject->flagsProperty(), MyQObject::FooAbility);
{
@@ -885,7 +948,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
m_engine->evaluate("myObject.flagsProperty = 'ScoobyDoo'");
// ### ouch! Shouldn't QMetaProperty::write() rather not change the value...?
QCOMPARE(m_myObject->flagsProperty(), (MyQObject::Ability)-1);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_pointerDeref()
+{
// auto-dereferencing of pointers
{
QBrush b = QColor(0xCA, 0xFE, 0xBA, 0xBE);
@@ -905,7 +971,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
}
m_engine->globalObject().setProperty("brushPointer", QScriptValue());
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_customGetterSetter()
+{
// install custom property getter+setter
{
QScriptValue mobj = m_engine->globalObject().property("myObject");
@@ -915,7 +984,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
mobj.setProperty("intProperty", 321);
QCOMPARE(mobj.property("intProperty").toInt32(), 321);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_methodPersistence()
+{
// method properties are persistent
{
QScriptValue slot = m_engine->evaluate("myObject.mySlot");
@@ -1361,6 +1433,17 @@ void tst_QScriptExtQObject::callQtInvokable()
m_myObject->resetQtFunctionInvoked();
{
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithQWidgetStarArg(null)");
+ QVERIFY(ret.isNull());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 63);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::QWidgetStar));
+ QCOMPARE(qvariant_cast<QWidget*>(v), (QObject *)0);
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
// no implicit conversion from integer to QObject*
QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithQObjectStarArg(123)");
QCOMPARE(ret.isError(), true);
@@ -1368,6 +1451,61 @@ void tst_QScriptExtQObject::callQtInvokable()
m_myObject->resetQtFunctionInvoked();
{
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithShortArg(123)");
+ QVERIFY(ret.isNumber());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 64);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::Short));
+ QCOMPARE(qvariant_cast<short>(v), short(123));
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithUShortArg(123)");
+ QVERIFY(ret.isNumber());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 65);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::UShort));
+ QCOMPARE(qvariant_cast<ushort>(v), ushort(123));
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithCharArg(123)");
+ QVERIFY(ret.isNumber());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 66);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::Char));
+ QCOMPARE(qvariant_cast<char>(v), char(123));
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithUCharArg(123)");
+ QVERIFY(ret.isNumber());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 67);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::UChar));
+ QCOMPARE(qvariant_cast<uchar>(v), uchar(123));
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
+ QScriptValue ret = m_engine->evaluate("myObject.myInvokableWithULonglongArg(123)");
+ QVERIFY(ret.isNumber());
+ QCOMPARE(m_myObject->qtFunctionInvoked(), 68);
+ QCOMPARE(m_myObject->qtFunctionActuals().size(), 1);
+ QVariant v = m_myObject->qtFunctionActuals().at(0);
+ QCOMPARE(v.userType(), int(QMetaType::ULongLong));
+ QCOMPARE(qvariant_cast<qulonglong>(v), qulonglong(123));
+ }
+
+ m_myObject->resetQtFunctionInvoked();
+ {
QScriptValue fun = m_engine->evaluate("myObject.myInvokableWithQBrushArg");
QVERIFY(fun.isFunction());
QColor color(10, 20, 30, 40);
@@ -1916,6 +2054,25 @@ void tst_QScriptExtQObject::connectAndDisconnectWithBadArgs()
}
}
+void tst_QScriptExtQObject::connectAndDisconnect_senderDeleted()
+{
+ QScriptEngine eng;
+ QObject *obj = new QObject;
+ eng.globalObject().setProperty("obj", eng.newQObject(obj));
+ eng.evaluate("signal = obj.destroyed");
+ delete obj;
+ {
+ QScriptValue ret = eng.evaluate("signal.connect(function(){})");
+ QVERIFY(ret.isError());
+ QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Function.prototype.connect: cannot connect to deleted QObject"));
+ }
+ {
+ QScriptValue ret = eng.evaluate("signal.disconnect(function(){})");
+ QVERIFY(ret.isError());
+ QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Function.prototype.discconnect: cannot disconnect from deleted QObject"));
+ }
+}
+
void tst_QScriptExtQObject::cppConnectAndDisconnect()
{
QScriptEngine eng;
diff --git a/tests/auto/qscriptjstestsuite/qscriptjstestsuite.pro b/tests/auto/qscriptjstestsuite/qscriptjstestsuite.pro
index 07a4672d36..b1ddd64e08 100644
--- a/tests/auto/qscriptjstestsuite/qscriptjstestsuite.pro
+++ b/tests/auto/qscriptjstestsuite/qscriptjstestsuite.pro
@@ -5,7 +5,7 @@ SOURCES += tst_qscriptjstestsuite.cpp
!symbian: DEFINES += SRCDIR=\\\"$$PWD\\\"
wince*|symbian: {
-testFiles.sources = tests
+testFiles.files = tests
testFiles.path = .
DEPLOYMENT += testFiles
}
diff --git a/tests/auto/qscriptv8testsuite/qscriptv8testsuite.pro b/tests/auto/qscriptv8testsuite/qscriptv8testsuite.pro
index 03e26bd61d..5d8e5af4a9 100644
--- a/tests/auto/qscriptv8testsuite/qscriptv8testsuite.pro
+++ b/tests/auto/qscriptv8testsuite/qscriptv8testsuite.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qscriptv8testsuite.cpp
!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
wince*|symbian: {
-testFiles.sources = tests
+testFiles.files = tests
testFiles.path = .
DEPLOYMENT += testFiles
}
diff --git a/tests/auto/qscriptvalue/qscriptvalue.pro b/tests/auto/qscriptvalue/qscriptvalue.pro
index c3e9912f69..0474c3219a 100644
--- a/tests/auto/qscriptvalue/qscriptvalue.pro
+++ b/tests/auto/qscriptvalue/qscriptvalue.pro
@@ -3,14 +3,6 @@ QT = core gui script
SOURCES += tst_qscriptvalue.cpp
HEADERS += tst_qscriptvalue.h
-# Generated by testgen
-SOURCES += \
- tst_qscriptvalue_generated_init.cpp \
- tst_qscriptvalue_generated_cast.cpp \
- tst_qscriptvalue_generated_comparison.cpp \
- tst_qscriptvalue_generated_isXXX.cpp \
- tst_qscriptvalue_generated_toXXX.cpp
-
win32-msvc* {
# With -O2, MSVC takes up to 24 minutes to compile this test!
QMAKE_CXXFLAGS_RELEASE -= -O1 -O2
diff --git a/tests/auto/qscriptvalue/testgen/data.txt b/tests/auto/qscriptvalue/testgen/data.txt
deleted file mode 100644
index 73677ec0fb..0000000000
--- a/tests/auto/qscriptvalue/testgen/data.txt
+++ /dev/null
@@ -1,161 +0,0 @@
-# Data set for QScriptValue autotest.
-
-# Each line is a c++ code that should return a QScriptValue object.
-# Lines that are empty or start with '#' will be ignored
-
-QScriptValue()
-
-#Unbound values
-QScriptValue(QScriptValue::UndefinedValue)
-QScriptValue(QScriptValue::NullValue)
-QScriptValue(true)
-QScriptValue(false)
-QScriptValue(int(122))
-QScriptValue(uint(124))
-QScriptValue(0)
-QScriptValue(0.0)
-QScriptValue(123.0)
-QScriptValue(6.37e-8)
-QScriptValue(-6.37e-8)
-QScriptValue(0x43211234)
-QScriptValue(0x10000)
-QScriptValue(0x10001)
-QScriptValue(qSNaN())
-QScriptValue(qQNaN())
-QScriptValue(qInf())
-QScriptValue(-qInf())
-QScriptValue("NaN")
-QScriptValue("Infinity")
-QScriptValue("-Infinity")
-QScriptValue("ciao")
-QScriptValue(QString::fromLatin1("ciao"))
-QScriptValue(QString(""))
-QScriptValue(QString())
-QScriptValue(QString("0"))
-QScriptValue(QString("123"))
-QScriptValue(QString("12.4"))
-#QScriptValue(QString::fromUtf8("ąśćżźółńę"))
-
-#Unbound values (bound to a null engine)
-QScriptValue(0, QScriptValue::UndefinedValue)
-QScriptValue(0, QScriptValue::NullValue)
-QScriptValue(0, true)
-QScriptValue(0, false)
-QScriptValue(0, int(122))
-QScriptValue(0, uint(124))
-QScriptValue(0, 0)
-QScriptValue(0, 0.0)
-QScriptValue(0, 123.0)
-QScriptValue(0, 6.37e-8)
-QScriptValue(0, -6.37e-8)
-QScriptValue(0, 0x43211234)
-QScriptValue(0, 0x10000)
-QScriptValue(0, 0x10001)
-QScriptValue(0, qSNaN())
-QScriptValue(0, qQNaN())
-QScriptValue(0, qInf())
-QScriptValue(0, -qInf())
-QScriptValue(0, "NaN")
-QScriptValue(0, "Infinity")
-QScriptValue(0, "-Infinity")
-QScriptValue(0, "ciao")
-QScriptValue(0, QString::fromLatin1("ciao"))
-QScriptValue(0, QString(""))
-QScriptValue(0, QString())
-QScriptValue(0, QString("0"))
-QScriptValue(0, QString("123"))
-QScriptValue(0, QString("12.3"))
-#QScriptValue(0, QString::fromUtf8("ąśćżźółńę"))
-
-#Bound values
-QScriptValue(engine, QScriptValue::UndefinedValue)
-QScriptValue(engine, QScriptValue::NullValue)
-QScriptValue(engine, true)
-QScriptValue(engine, false)
-QScriptValue(engine, int(122))
-QScriptValue(engine, uint(124))
-QScriptValue(engine, 0)
-QScriptValue(engine, 0.0)
-QScriptValue(engine, 123.0)
-QScriptValue(engine, 6.37e-8)
-QScriptValue(engine, -6.37e-8)
-QScriptValue(engine, 0x43211234)
-QScriptValue(engine, 0x10000)
-QScriptValue(engine, 0x10001)
-QScriptValue(engine, qSNaN())
-QScriptValue(engine, qQNaN())
-QScriptValue(engine, qInf())
-QScriptValue(engine, -qInf())
-QScriptValue(engine, "NaN")
-QScriptValue(engine, "Infinity")
-QScriptValue(engine, "-Infinity")
-QScriptValue(engine, "ciao")
-QScriptValue(engine, QString::fromLatin1("ciao"))
-QScriptValue(engine, QString(""))
-QScriptValue(engine, QString())
-QScriptValue(engine, QString("0"))
-QScriptValue(engine, QString("123"))
-QScriptValue(engine, QString("1.23"))
-
-# evaluate
-engine->evaluate("[]")
-engine->evaluate("{}")
-engine->evaluate("Object.prototype")
-engine->evaluate("Date.prototype")
-engine->evaluate("Array.prototype")
-engine->evaluate("Function.prototype")
-engine->evaluate("Error.prototype")
-engine->evaluate("Object")
-engine->evaluate("Array")
-engine->evaluate("Number")
-engine->evaluate("Function")
-engine->evaluate("(function() { return 1; })")
-engine->evaluate("(function() { return 'ciao'; })")
-engine->evaluate("(function() { throw new Error('foo'); })")
-engine->evaluate("/foo/")
-engine->evaluate("new Object()")
-engine->evaluate("new Array()")
-engine->evaluate("new Error()")
-engine->evaluate("a = new Object(); a.foo = 22; a.foo")
-engine->evaluate("Undefined")
-engine->evaluate("Null")
-engine->evaluate("True")
-engine->evaluate("False")
-
-engine->evaluate("undefined")
-engine->evaluate("null")
-engine->evaluate("true")
-engine->evaluate("false")
-engine->evaluate("122")
-engine->evaluate("124")
-engine->evaluate("0")
-engine->evaluate("0.0")
-engine->evaluate("123.0")
-engine->evaluate("6.37e-8")
-engine->evaluate("-6.37e-8")
-engine->evaluate("0x43211234")
-engine->evaluate("0x10000")
-engine->evaluate("0x10001")
-engine->evaluate("NaN")
-engine->evaluate("Infinity")
-engine->evaluate("-Infinity")
-engine->evaluate("'ciao'")
-engine->evaluate("''")
-engine->evaluate("'0'")
-engine->evaluate("'123'")
-engine->evaluate("'12.4'")
-#engine->evaluate(QString::fromUtf8("'ąśćżźółńę'"))
-
-#other
-engine->nullValue()
-engine->undefinedValue()
-engine->newObject()
-engine->newArray()
-engine->newArray(10)
-engine->newDate(QDateTime())
-engine->newQMetaObject(&QObject::staticMetaObject)
-engine->newVariant(QVariant())
-engine->newVariant(QVariant(123))
-engine->newVariant(QVariant(false))
-engine->newQObject(0)
-engine->newQObject(engine) \ No newline at end of file
diff --git a/tests/auto/qscriptvalue/testgen/testgenerator.cpp b/tests/auto/qscriptvalue/testgen/testgenerator.cpp
deleted file mode 100644
index 9d7d33d2e6..0000000000
--- a/tests/auto/qscriptvalue/testgen/testgenerator.cpp
+++ /dev/null
@@ -1,794 +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 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 "testgenerator.h"
-
-#include <QtCore/qdatastream.h>
-#include <QtCore/qdatetime.h>
-#include <QtCore/qdebug.h>
-#include <QtCore/qnumeric.h>
-#include <QtCore/qstringlist.h>
-#include <QtCore/qtextstream.h>
-#include <QtCore/qvariant.h>
-#include <QtScript/qscriptvalue.h>
-
-void TestGenerator::save(const QHash<QString, QString>& data)
-{
- foreach(const QString& name, data.keys()) {
- QFile ofile(m_opath + "tst_qscriptvalue_generated_" + name + ".cpp");
- if (!ofile.open(QIODevice::WriteOnly | QIODevice::Text)) {
- qWarning() << "Can't open output file: " << ofile.fileName();
- exit(2);
- }
- QTextStream out(&ofile);
- out << data[name];
- }
-}
-
-static QString escape(QString txt)
-{
- return txt.replace("\\","\\\\").replace("\"","\\\"").replace("\n","\\n");
-}
-
-template<typename T>
-QString prepareToInsert(T value) {return QString::fromAscii("\"") + escape(value) + "\"";}
-template<>
-QString prepareToInsert<qsreal>(qsreal value)
-{
- if (qIsNaN(value))
- return "qQNaN()";
- if (qIsInf(value))
- return "qInf()";
- return QString::number(value, 'g', 16);
-}
-template<>
-QString prepareToInsert<qint32>(qint32 value) {return QString::number(value);}
-template<>
-QString prepareToInsert<quint32>(quint32 value) {return QString::number(value);}
-template<>
-QString prepareToInsert<quint16>(quint16 value) {return QString::number(value);}
-template<>
-QString prepareToInsert<bool>(bool value) {return value ? "true" : "false";}
-template<>
-QString prepareToInsert<QString>(QString value) {return QString::fromAscii("\"") + escape(value) + "\"";}
-
-template<typename T>
-QString typeName() {return QString();}
-template<>
-QString typeName<qsreal>() {return "qsreal";}
-template<>
-QString typeName<qint32>() {return "qint32";}
-template<>
-QString typeName<quint32>() {return "quint32";}
-template<>
-QString typeName<quint16>() {return "quint16";}
-template<>
-QString typeName<bool>() {return "bool";}
-template<>
-QString typeName<QString>() {return "QString";}
-
-static QString generateLicence()
-{
- return "/****************************************************************************\n"
- "**\n"
- "** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).\n"
- "** All rights reserved.\n"
- "** Contact: Nokia Corporation (qt-info@nokia.com)\n"
- "**\n"
- "** This file is part of the test suite of the Qt Toolkit.\n"
- "**\n"
- "** $QT_BEGIN_LICENSE:LGPL$\n"
- "** No Commercial Usage\n"
- "** This file contains pre-release code and may not be distributed.\n"
- "** You may use this file in accordance with the terms and conditions\n"
- "** contained in the Technology Preview License Agreement accompanying\n"
- "** this package.\n"
- "**\n"
- "** GNU Lesser General Public License Usage\n"
- "** Alternatively, this file may be used under the terms of the GNU Lesser\n"
- "** General Public License version 2.1 as published by the Free Software\n"
- "** Foundation and appearing in the file LICENSE.LGPL included in the\n"
- "** packaging of this file. Please review the following information to\n"
- "** ensure the GNU Lesser General Public License version 2.1 requirements\n"
- "** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\n"
- "**\n"
- "** In addition, as a special exception, Nokia gives you certain additional\n"
- "** rights. These rights are described in the Nokia Qt LGPL Exception\n"
- "** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.\n"
- "**\n"
- "** If you have questions regarding the use of this file, please contact\n"
- "** Nokia at qt-info@nokia.com.\n"
- "**\n"
- "**\n"
- "**\n"
- "**\n"
- "**\n"
- "**\n"
- "**\n"
- "**\n"
- "** $QT_END_LICENSE$\n"
- "**\n"
- "****************************************************************************/\n"
- "\n"\
- "/****************************************************************************\n"\
- "*************** This file has been generated. DO NOT MODIFY! ****************\n"
- "****************************************************************************/\n\n"\
- "#include \"tst_qscriptvalue.h\"\n\n";
-}
-
-static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
-{
- static const QString templ("void tst_QScriptValue::%1_initData()\n"\
- "{\n"\
- " QTest::addColumn<bool>(\"expected\");\n"\
- " initScriptValues();\n"\
- "}\n"\
- "\n"\
- "static QString %1_array[] = {%2};\n\n"\
- "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
- "{\n"\
- " static QSet<QString> %1;\n"\
- " if (%1.isEmpty()) {\n"\
- " %1.reserve(%3);\n"\
- " for (unsigned i = 0; i < %3; ++i)\n"\
- " %1.insert(%1_array[i]);\n"\
- " }\n"\
- " newRow(expr) << %1.contains(expr);\n"\
- "}\n"\
- "\n"\
- "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
- "{\n"\
- " QFETCH(bool, expected);\n"\
- " QCOMPARE(value.%1(), expected);\n"\
- " QCOMPARE(value.%1(), expected);\n"\
- "}\n"\
- "\n"\
- "DEFINE_TEST_FUNCTION(%1)\n"\
- "\n");
-
- if (!list.size()) {
- qWarning() << name << ": nothing to add!" ;
- return QString();
- }
-
- QString result = templ;
- QStringList set;
- set.reserve(3 * list.count());
- foreach(const QString& t, list) {
- if (!set.isEmpty())
- set.append("\",");
- set.append("\n \"");
- set.append(escape(t));
- set.append("\"");
- }
-
- return result.arg(name, set.join(QString()), QString::number(list.count()));
-}
-
-template<typename T>
-static QString generateToXXXDef(const QString& name, const QList<QPair<QString, T> >& list)
-{
- static const QString templ = "\n"\
- "void tst_QScriptValue::%1_initData()\n"\
- "{\n"\
- " QTest::addColumn<%2>(\"expected\");\n"\
- " initScriptValues();\n"\
- "}\n"\
- "\n"\
- "static QString %1_tagArray[] = {%4};\n\n"\
- "static %2 %1_valueArray[] = {%5};\n\n"\
- "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
- "{\n"\
- " static QHash<QString, %2> %1;\n"\
- " if (%1.isEmpty()) {\n"\
- " %1.reserve(%3);\n"\
- " for (unsigned i = 0; i < %3; ++i)\n"\
- " %1.insert(%1_tagArray[i], %1_valueArray[i]);\n"\
- " }\n"\
- " newRow(expr) << %1.value(expr);\n"\
- "}\n"\
- "\n"\
- "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
- "{\n"\
- " QFETCH(%2, expected);\n"\
- " QCOMPARE(value.%1(), expected);\n"\
- " QCOMPARE(value.%1(), expected);\n"\
- "}\n"\
- "\n"\
- "DEFINE_TEST_FUNCTION(%1)\n";
- QString result = templ;
-
- typename QList<QPair<QString, T> >::const_iterator i = list.constBegin();
- QStringList tagSet, valueSet;
- tagSet.reserve(4 * list.count());
- valueSet.reserve(3 * list.count());
- for(int lineBreaker = 0; i != list.constEnd(); ++i) {
- QPair<QString, T> t = *i;
- t.first = escape(t.first);
- if (!valueSet.isEmpty()) {
- valueSet.append(QString(","));
- tagSet.append(QString::fromAscii(","));
- }
- tagSet.append(QString("\n \""));
- tagSet.append(t.first);
- tagSet.append(QString::fromAscii("\""));
- if (!((lineBreaker++)%2))
- valueSet.append(QString("\n "));
- else
- valueSet.append(QString::fromAscii(" "));
- valueSet.append(prepareToInsert<T>(t.second));
- }
- return result.arg(name,
- typeName<T>(),
- QString::number(list.count()),
- tagSet.join(QString()),
- valueSet.join(QString()));
-}
-
-
-template<>
-QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString, qsreal> >& list)
-{
- static const QString templ = "\n"\
- "void tst_QScriptValue::%1_initData()\n"\
- "{\n"\
- " QTest::addColumn<%2>(\"expected\");\n"\
- " initScriptValues();\n"\
- "}\n"\
- "\n"\
- "static QString %1_tagArray[] = {%3};\n"\
- "static %2 %1_valueArray[] = {%4};\n"\
- "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
- "{\n"\
- " static QHash<QString, %2> %1;\n"\
- " if (%1.isEmpty()) {\n"\
- " %1.reserve(%5);\n"\
- " for (unsigned i = 0; i < %5; ++i)\n"\
- " %1.insert(%1_tagArray[i], %1_valueArray[i]);\n"\
- " }\n"\
- " newRow(expr) << %1.value(expr);\n"\
- "}\n"\
- "\n"\
- "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
- "{\n"\
- " QFETCH(%2, expected);\n"\
- "%666"
- " if (qIsInf(expected)) {\n"\
- " QVERIFY(qIsInf(value.%1()));\n"\
- " QVERIFY(qIsInf(value.%1()));\n"\
- " return;\n"\
- " }\n"\
- " QCOMPARE(value.%1(), expected);\n"\
- " QCOMPARE(value.%1(), expected);\n"\
- "}\n"\
- "\n"\
- "DEFINE_TEST_FUNCTION(%1)\n";
- QString result = templ;
-
- QList<QPair<QString, qsreal> >::const_iterator i = list.constBegin();
- QStringList tagSet, valueSet;
- tagSet.reserve(4 * list.count());
- valueSet.reserve(3 * list.count());
- for(int lineBreaker = 0; i != list.constEnd(); ++i) {
- QPair<QString, qsreal> t = *i;
- t.first = escape(t.first);
- if (!valueSet.isEmpty()) {
- valueSet.append(QString(","));
- tagSet.append(QString::fromAscii(","));
- }
- tagSet.append(QString("\n \""));
- tagSet.append(t.first);
- tagSet.append(QString::fromAscii("\""));
- if (!((lineBreaker++)%10))
- valueSet.append(QString("\n "));
- else
- valueSet.append(QString::fromAscii(" "));
- valueSet.append(prepareToInsert<qsreal>(t.second));
- }
-
- // toInteger shouldn't return NaN, so it would be nice to catch the case.
- QString hook;
- if (name == "toNumber") {
- hook =
- " if (qIsNaN(expected)) {\n"\
- " QVERIFY(qIsNaN(value.toNumber()));\n"\
- " return;\n"\
- " }\n";
- }
- return result.arg(name,
- typeName<qsreal>(),
- tagSet.join(QString()),
- valueSet.join(QString()),
- QString::number(list.count()),
- hook);
-}
-
-template<typename T>
-static QString generateCastDef(const QList<QPair<QString, T> >& list)
-{
- static const QString templ = "\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_initData()\n"\
- "{\n"\
- " QTest::addColumn<%1>(\"expected\");\n"\
- " initScriptValues();\n"\
- "}\n"\
- "\n"\
- "static QString qscriptvalue_cast%1_tagArray[] = {%2};\n"\
- "static %1 qscriptvalue_cast%1_valueArray[] = {%3};\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_makeData(const char* expr)\n"\
- "{\n"\
- " static QHash<QString, %1> value;\n"\
- " if (value.isEmpty()) {\n"\
- " value.reserve(%4);\n"\
- " for (unsigned i = 0; i < %4; ++i)\n"\
- " value.insert(qscriptvalue_cast%1_tagArray[i], qscriptvalue_cast%1_valueArray[i]);\n"\
- " }\n"\
- " newRow(expr) << value.value(expr);\n"\
- "}\n"\
- "\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
- "{\n"\
- " QFETCH(%1, expected);\n"\
- " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\
- " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\
- "}\n"\
- "\n"\
- "DEFINE_TEST_FUNCTION(qscriptvalue_cast%1)\n";
- QString result = templ;
-
- typename QList<QPair<QString, T> >::const_iterator i = list.constBegin();
- QStringList tagSet, valueSet;
- tagSet.reserve(4 * list.count());
- valueSet.reserve(3 * list.count());
- for(int lineBreaker = 0; i != list.constEnd(); ++i) {
- QPair<QString, T> t = *i;
- t.first = escape(t.first);
- if (!valueSet.isEmpty()) {
- valueSet.append(QString(","));
- tagSet.append(QString::fromAscii(","));
- }
- tagSet.append(QString("\n \""));
- tagSet.append(t.first);
- tagSet.append(QString::fromAscii("\""));
- if (!((lineBreaker++)%2))
- valueSet.append(QString("\n "));
- else
- valueSet.append(QString::fromAscii(" "));
- valueSet.append(prepareToInsert<T>(t.second));
- }
- return result.arg(typeName<T>(), tagSet.join(QString()), valueSet.join(QString()), QString::number(list.count()));
-}
-
-template<>
-QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
-{
- static const QString templ = "\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_initData()\n"\
- "{\n"\
- " QTest::addColumn<%1>(\"expected\");\n"\
- " initScriptValues();\n"\
- "}\n"\
- "\n"\
- "static QString qscriptvalue_cast%1_tagArray[] = {%2};\n"\
- "static %1 qscriptvalue_cast%1_valueArray[] = {%3};\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_makeData(const char* expr)\n"\
- "{\n"\
- " static QHash<QString, %1> value;\n"\
- " if (value.isEmpty()) {\n"\
- " value.reserve(%4);\n"\
- " for (unsigned i = 0; i < %4; ++i)\n"\
- " value.insert(qscriptvalue_cast%1_tagArray[i], qscriptvalue_cast%1_valueArray[i]);\n"\
- " }\n"\
- " newRow(expr) << value.value(expr);\n"\
- "}\n"\
- "\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
- "{\n"\
- " QFETCH(%1, expected);\n"\
- " if (qIsNaN(expected)) {\n"
- " QVERIFY(qIsNaN(qscriptvalue_cast<%1>(value)));\n"
- " QVERIFY(qIsNaN(qscriptvalue_cast<%1>(value)));\n"
- " return;\n"
- " }\n"\
- " if (qIsInf(expected)) {\n"
- " QVERIFY(qIsInf(qscriptvalue_cast<%1>(value)));\n"
- " QVERIFY(qIsInf(qscriptvalue_cast<%1>(value)));\n"
- " return;\n"
- " }\n"
- " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\
- " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\
- "}\n"\
- "\n"\
- "DEFINE_TEST_FUNCTION(qscriptvalue_cast%1)\n";
- QString result = templ;
-
- QList<QPair<QString, qsreal> >::const_iterator i = list.constBegin();
- QStringList tagSet, valueSet;
- tagSet.reserve(4 * list.count());
- valueSet.reserve(3 * list.count());
- for(int lineBreaker = 0; i != list.constEnd(); ++i) {
- QPair<QString, qsreal> t = *i;
- t.first = escape(t.first);
- if (!valueSet.isEmpty()) {
- valueSet.append(QString(","));
- tagSet.append(QString::fromAscii(","));
- }
- tagSet.append(QString("\n \""));
- tagSet.append(t.first);
- tagSet.append(QString::fromAscii("\""));
- if (!((lineBreaker++)%10))
- valueSet.append(QString("\n "));
- else
- valueSet.append(QString::fromAscii(" "));
- valueSet.append(prepareToInsert<qsreal>(t.second));
- }
- return result.arg(typeName<qsreal>(),
- tagSet.join(QString()),
- valueSet.join(QString()),
- QString::number(list.count()));
-}
-
-static QString generateCompareDef(const QString& comparisionType, const QList<QString> tags)
-{
- static const QString templ = "\n"\
- "void tst_QScriptValue::%1_initData()\n"\
- "{\n"\
- " QTest::addColumn<QScriptValue>(\"other\");\n"\
- " QTest::addColumn<bool>(\"expected\");\n"\
- " initScriptValues();\n"\
- "}\n"\
- "\n"\
- "static QString %1_array[] = {%2};\n\n"\
- "void tst_QScriptValue::%1_makeData(const char *expr)\n"\
- "{\n"\
- " static QSet<QString> equals;\n"\
- " if (equals.isEmpty()) {\n"\
- " equals.reserve(%3);\n"\
- " for (unsigned i = 0; i < %3; ++i)\n"\
- " equals.insert(%1_array[i]);\n"\
- " }\n"\
- " QHash<QString, QScriptValue>::const_iterator it;\n"\
- " for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {\n"\
- " QString tag = QString::fromLatin1(\"%20 <=> %21\").arg(expr).arg(it.key());\n"\
- " newRow(tag.toLatin1()) << it.value() << equals.contains(tag);\n"\
- " }\n"\
- "}\n"\
- "\n"\
- "void tst_QScriptValue::%1_test(const char *, const QScriptValue& value)\n"\
- "{\n"\
- " QFETCH(QScriptValue, other);\n"\
- " QFETCH(bool, expected);\n"\
- " QCOMPARE(value.%1(other), expected);\n"\
- "}\n"\
- "\n"\
- "DEFINE_TEST_FUNCTION(%1)\n";
- Q_ASSERT(comparisionType == "strictlyEquals"
- || comparisionType == "equals"
- || comparisionType == "lessThan"
- || comparisionType == "instanceOf");
- QString result = templ;
-
- QStringList set;
- set.reserve(4 * tags.count());
- foreach(const QString& tmp, tags) {
- if (!set.isEmpty())
- set.append(",");
- set.append("\n \"");
- set.append(escape(tmp));
- set.append("\"");
- }
- return result.arg(comparisionType, set.join(""), QString::number(tags.count()));
-}
-
-static QString generateInitDef(const QVector<QString>& allDataTags)
-{
- static const QString templ = "void tst_QScriptValue::initScriptValues()\n"\
- "{\n"\
- " m_values.clear();\n"\
- " if (engine)\n"\
- " delete engine;\n"\
- " engine = new QScriptEngine;\n"\
- "%1\n}\n\n";
- QString result = templ;
- QStringList set;
- foreach(const QString tag, allDataTags) {
- set.append(" DEFINE_TEST_VALUE(" + tag + ");");
- }
-
- return result.arg(set.join("\n"));
-}
-
-static void squashTags(QString dataTag, const QVector<bool>& results, QList<QString>& tags, QVector<QString> dataTags)
-{
- for(int i = 0; i < results.count(); ++i) {
- if (results.at(i))
- tags.append(dataTag + " <=> " + dataTags[i]);
- }
-}
-
-
-QHash<QString, QString> TestGenerator::generateTest()
-{
- // All data tags keept in one place.
- QVector<QString> dataTags;
-
- // Data tags for values that return true in isXXX call
- QList<QString> isValidList;
- QList<QString> isBoolList;
- QList<QString> isBooleanList;
- QList<QString> isNumberList;
- QList<QString> isFunctionList;
- QList<QString> isNullList;
- QList<QString> isStringList;
- QList<QString> isUndefinedList;
- QList<QString> isVariantList;
- QList<QString> isQObjectList;
- QList<QString> isQMetaObjectList;
- QList<QString> isObjectList;
- QList<QString> isDateList;
- QList<QString> isRegExpList;
- QList<QString> isArrayList;
- QList<QString> isErrorList;
-
- // List of pairs data tag and value returned from toXXX call
- QList<QPair<QString, QString> > toStringList;
- QList<QPair<QString, qsreal> > toNumberList;
- QList<QPair<QString, bool> > toBoolList;
- QList<QPair<QString, bool> > toBooleanList;
- QList<QPair<QString, qsreal> > toIntegerList;
- QList<QPair<QString, qint32> > toInt32List;
- QList<QPair<QString, quint32> > toUInt32List;
- QList<QPair<QString, quint16> > toUInt16List;
-
- // List of complex tags returning true
- QList<QString> equalsList;
- QList<QString> strictlyEqualsList;
- QList<QString> lessThanList;
- QList<QString> instanceOfList;
-
- QList<QPair<QString, QString> > castStringList;
- QList<QPair<QString, qsreal> > castSRealList;
- QList<QPair<QString, bool> > castBoolList;
- QList<QPair<QString, qint32> > castInt32List;
- QList<QPair<QString, quint32> > castUInt32List;
- QList<QPair<QString, quint16> > castUInt16List;
-
- // Load.
- m_tempFile.seek(0);
- QDataStream in(&m_tempFile);
- in >> dataTags;
- Q_ASSERT(in.status() == in.Ok);
-
- while(!in.atEnd())
- {
- bool isValidRes;
- bool isBoolRes;
- bool isBooleanRes;
- bool isNumberRes;
- bool isFunctionRes;
- bool isNullRes;
- bool isStringRes;
- bool isUndefinedRes;
- bool isVariantRes;
- bool isQObjectRes;
- bool isQMetaObjectRes;
- bool isObjectRes;
- bool isDateRes;
- bool isRegExpRes;
- bool isArrayRes;
- bool isErrorRes;
-
- QString toStringRes;
- qsreal toNumberRes;
- bool toBoolRes;
- bool toBooleanRes;
- qsreal toIntegerRes;
- qint32 toInt32Res;
- quint32 toUInt32Res;
- quint16 toUInt16Res;
- //toVariantRes;
- //toDateTimeRes;
-
- QVector<bool> equalsRes;
- QVector<bool> strictlyEqualsRes;
- QVector<bool> lessThanRes;
- QVector<bool> instanceOfRes;
-
- QString castStringRes;
- qsreal castSRealRes;
- bool castBoolRes;
- qint32 castInt32Res;
- quint32 castUInt32Res;
- quint16 castUInt16Res;
-
- QString dataTag;
- in >> dataTag;
- in >> isValidRes;
- in >> isBoolRes;
- in >> isBooleanRes;
- in >> isNumberRes;
- in >> isFunctionRes;
- in >> isNullRes;
- in >> isStringRes;
- in >> isUndefinedRes;
- in >> isVariantRes;
- in >> isQObjectRes;
- in >> isQMetaObjectRes;
- in >> isObjectRes;
- in >> isDateRes;
- in >> isRegExpRes;
- in >> isArrayRes;
- in >> isErrorRes;
-
- if (isValidRes) isValidList.append(dataTag);
- if (isBoolRes) isBoolList.append(dataTag);
- if (isBooleanRes) isBooleanList.append(dataTag);
- if (isNumberRes) isNumberList.append(dataTag);
- if (isFunctionRes) isFunctionList.append(dataTag);
- if (isNullRes) isNullList.append(dataTag);
- if (isStringRes) isStringList.append(dataTag);
- if (isUndefinedRes) isUndefinedList.append(dataTag);
- if (isVariantRes) isVariantList.append(dataTag);
- if (isQObjectRes) isQObjectList.append(dataTag);
- if (isQMetaObjectRes) isQMetaObjectList.append(dataTag);
- if (isObjectRes) isObjectList.append(dataTag);
- if (isDateRes) isDateList.append(dataTag);
- if (isRegExpRes) isRegExpList.append(dataTag);
- if (isArrayRes) isArrayList.append(dataTag);
- if (isErrorRes) isErrorList.append(dataTag);
-
- in >> toStringRes;
- in >> toNumberRes;
- in >> toBoolRes;
- in >> toBooleanRes;
- in >> toIntegerRes;
- in >> toInt32Res;
- in >> toUInt32Res;
- in >> toUInt16Res;
- //in >> toVariantRes;
- //in >> toDateTimeRes;
-
- toStringList.append(QPair<QString, QString>(dataTag, toStringRes));
- toNumberList.append(QPair<QString, qsreal>(dataTag, toNumberRes));
- toBoolList.append(QPair<QString, bool>(dataTag, toBoolRes));
- toBooleanList.append(QPair<QString, bool>(dataTag, toBooleanRes));
- toIntegerList.append(QPair<QString, qsreal>(dataTag, toIntegerRes));
- toInt32List.append(QPair<QString, qint32>(dataTag, toInt32Res));
- toUInt32List.append(QPair<QString, quint32>(dataTag, toUInt32Res));
- toUInt16List.append(QPair<QString, quint16>(dataTag, toUInt16Res));
-
- in >> equalsRes;
- in >> strictlyEqualsRes;
- in >> lessThanRes;
- in >> instanceOfRes;
-
- squashTags(dataTag, equalsRes, equalsList, dataTags);
- squashTags(dataTag, strictlyEqualsRes, strictlyEqualsList, dataTags);
- squashTags(dataTag, lessThanRes, lessThanList, dataTags);
- squashTags(dataTag, instanceOfRes, instanceOfList, dataTags);
-
- in >> castStringRes;
- in >> castSRealRes;
- in >> castBoolRes;
- in >> castInt32Res;
- in >> castUInt32Res;
- in >> castUInt16Res;
-
- castStringList.append(QPair<QString, QString>(dataTag, castStringRes));
- castSRealList.append(QPair<QString, qsreal>(dataTag, castSRealRes));
- castBoolList.append(QPair<QString, bool>(dataTag, castBoolRes));
- castInt32List.append(QPair<QString, qint32>(dataTag, castInt32Res));
- castUInt32List.append(QPair<QString, quint32>(dataTag, castUInt32Res));
- castUInt16List.append(QPair<QString, quint16>(dataTag, castUInt16Res));
-
- Q_ASSERT(in.status() == in.Ok);
- }
-
- Q_ASSERT(in.atEnd());
-
- // Generate.
- QHash<QString, QString> result;
- QStringList tmp;
- tmp.append(generateLicence());
- tmp.append(generateInitDef(dataTags));
- result.insert("init", tmp.join("\n"));
- tmp.clear();
-
- tmp.append(generateLicence());
- tmp.append(generateIsXXXDef("isValid", isValidList));
- tmp.append(generateIsXXXDef("isBool", isBoolList));
- tmp.append(generateIsXXXDef("isBoolean", isBooleanList));
- tmp.append(generateIsXXXDef("isNumber", isNumberList));
- tmp.append(generateIsXXXDef("isFunction", isFunctionList));
- tmp.append(generateIsXXXDef("isNull", isNullList));
- tmp.append(generateIsXXXDef("isString", isStringList));
- tmp.append(generateIsXXXDef("isUndefined", isUndefinedList));
- tmp.append(generateIsXXXDef("isVariant", isVariantList));
- tmp.append(generateIsXXXDef("isQObject", isQObjectList));
- tmp.append(generateIsXXXDef("isQMetaObject", isQMetaObjectList));
- tmp.append(generateIsXXXDef("isObject", isObjectList));
- tmp.append(generateIsXXXDef("isDate", isDateList));
- tmp.append(generateIsXXXDef("isRegExp", isRegExpList));
- tmp.append(generateIsXXXDef("isArray", isArrayList));
- tmp.append(generateIsXXXDef("isError", isErrorList));
- result.insert("isXXX", tmp.join("\n"));
- tmp.clear();
-
- tmp.append(generateLicence());
- tmp.append(generateToXXXDef<QString>("toString", toStringList));
- tmp.append(generateToXXXDef<qsreal>("toNumber", toNumberList));
- tmp.append(generateToXXXDef<bool>("toBool", toBoolList));
- tmp.append(generateToXXXDef<bool>("toBoolean", toBooleanList));
- tmp.append(generateToXXXDef<qsreal>("toInteger", toIntegerList));
- tmp.append(generateToXXXDef<qint32>("toInt32", toInt32List));
- tmp.append(generateToXXXDef<quint32>("toUInt32", toUInt32List));
- tmp.append(generateToXXXDef<quint16>("toUInt16", toUInt16List));
- result.insert("toXXX", tmp.join("\n"));
- tmp.clear();
-
- tmp.append(generateLicence());
- tmp.append(generateCompareDef("equals", equalsList));
- tmp.append(generateCompareDef("strictlyEquals", strictlyEqualsList));
- tmp.append(generateCompareDef("lessThan", lessThanList));
- tmp.append(generateCompareDef("instanceOf", instanceOfList));
- result.insert("comparison", tmp.join("\n"));
- tmp.clear();
-
- tmp.append(generateLicence());
- tmp.append(generateCastDef(castStringList));
- tmp.append(generateCastDef(castSRealList));
- tmp.append(generateCastDef(castBoolList));
- tmp.append(generateCastDef(castInt32List));
- tmp.append(generateCastDef(castUInt32List));
- tmp.append(generateCastDef(castUInt16List));
- result.insert("cast", tmp.join("\n"));
-
- return result;
-}
-
-
-
-
-
-
-
-
-
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
index 18480cceaa..de753d20b7 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
@@ -56,64 +56,11 @@ tst_QScriptValue::tst_QScriptValue()
tst_QScriptValue::~tst_QScriptValue()
{
- delete engine;
+ if (engine)
+ delete engine;
}
-void tst_QScriptValue::dataHelper(InitDataFunction init, DefineDataFunction define)
-{
- QTest::addColumn<QString>("__expression__");
- (this->*init)();
- QHash<QString,QScriptValue>::const_iterator it;
- for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
- m_currentExpression = it.key();
- (this->*define)(it.key().toLatin1());
- }
- m_currentExpression = QString();
-}
-
-QTestData &tst_QScriptValue::newRow(const char *tag)
-{
- return QTest::newRow(tag) << m_currentExpression;
-}
-
-void tst_QScriptValue::testHelper(TestFunction fun)
-{
- QFETCH(QString, __expression__);
- QScriptValue value = m_values.value(__expression__);
- (this->*fun)(__expression__.toLatin1(), value);
-}
-
-void tst_QScriptValue::assignAndCopyConstruct_initData()
-{
- QTest::addColumn<int>("dummy");
- initScriptValues();
-}
-
-void tst_QScriptValue::assignAndCopyConstruct_makeData(const char *expr)
-{
- newRow(expr) << 0;
-}
-
-void tst_QScriptValue::assignAndCopyConstruct_test(const char *, const QScriptValue &value)
-{
- QScriptValue copy(value);
- QCOMPARE(copy.strictlyEquals(value), !value.isNumber() || !qIsNaN(value.toNumber()));
- QCOMPARE(copy.engine(), value.engine());
-
- QScriptValue assigned = copy;
- QCOMPARE(assigned.strictlyEquals(value), !copy.isNumber() || !qIsNaN(copy.toNumber()));
- QCOMPARE(assigned.engine(), assigned.engine());
-
- QScriptValue other(!value.toBool());
- assigned = other;
- QVERIFY(!assigned.strictlyEquals(copy));
- QVERIFY(assigned.strictlyEquals(other));
- QCOMPARE(assigned.engine(), other.engine());
-}
-
-DEFINE_TEST_FUNCTION(assignAndCopyConstruct)
-
-void tst_QScriptValue::ctor()
+void tst_QScriptValue::ctor_invalid()
{
QScriptEngine eng;
{
@@ -121,6 +68,11 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.isValid(), false);
QCOMPARE(v.engine(), (QScriptEngine *)0);
}
+}
+
+void tst_QScriptValue::ctor_undefinedWithEngine()
+{
+ QScriptEngine eng;
{
QScriptValue v(&eng, QScriptValue::UndefinedValue);
QCOMPARE(v.isValid(), true);
@@ -128,6 +80,11 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.isObject(), false);
QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_nullWithEngine()
+{
+ QScriptEngine eng;
{
QScriptValue v(&eng, QScriptValue::NullValue);
QCOMPARE(v.isValid(), true);
@@ -135,6 +92,11 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.isObject(), false);
QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_boolWithEngine()
+{
+ QScriptEngine eng;
{
QScriptValue v(&eng, false);
QCOMPARE(v.isValid(), true);
@@ -144,6 +106,11 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.toBoolean(), false);
QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_intWithEngine()
+{
+ QScriptEngine eng;
{
QScriptValue v(&eng, int(1));
QCOMPARE(v.isValid(), true);
@@ -152,132 +119,102 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.toNumber(), 1.0);
QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_int()
+{
{
QScriptValue v(int(0x43211234));
QVERIFY(v.isNumber());
QCOMPARE(v.toInt32(), 0x43211234);
}
{
- QScriptValue v(&eng, uint(1));
+ QScriptValue v(int(1));
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isNumber(), true);
QCOMPARE(v.isObject(), false);
QCOMPARE(v.toNumber(), 1.0);
- QCOMPARE(v.engine(), &eng);
- }
- {
- QScriptValue v(uint(0x43211234));
- QVERIFY(v.isNumber());
- QCOMPARE(v.toUInt32(), uint(0x43211234));
+ QCOMPARE(v.engine(), (QScriptEngine *)0);
}
+}
+
+void tst_QScriptValue::ctor_uintWithEngine()
+{
+ QScriptEngine eng;
{
- QScriptValue v(&eng, 1.0);
+ QScriptValue v(&eng, uint(1));
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isNumber(), true);
QCOMPARE(v.isObject(), false);
QCOMPARE(v.toNumber(), 1.0);
QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_uint()
+{
{
- QScriptValue v(12345678910.5);
+ QScriptValue v(uint(0x43211234));
QVERIFY(v.isNumber());
- QCOMPARE(v.toNumber(), 12345678910.5);
- }
- {
- QScriptValue v(&eng, "ciao");
- QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isString(), true);
- QCOMPARE(v.isObject(), false);
- QCOMPARE(v.toString(), QLatin1String("ciao"));
- QCOMPARE(v.engine(), &eng);
+ QCOMPARE(v.toUInt32(), uint(0x43211234));
}
{
- QScriptValue v(&eng, QString("ciao"));
+ QScriptValue v(uint(1));
QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isString(), true);
+ QCOMPARE(v.isNumber(), true);
QCOMPARE(v.isObject(), false);
- QCOMPARE(v.toString(), QLatin1String("ciao"));
- QCOMPARE(v.engine(), &eng);
- }
- // copy constructor, operator=
- {
- QScriptValue v(&eng, 1.0);
- QScriptValue v2(v);
- QCOMPARE(v2.strictlyEquals(v), true);
- QCOMPARE(v2.engine(), &eng);
-
- QScriptValue v3(v);
- QCOMPARE(v3.strictlyEquals(v), true);
- QCOMPARE(v3.strictlyEquals(v2), true);
- QCOMPARE(v3.engine(), &eng);
-
- QScriptValue v4(&eng, 2.0);
- QCOMPARE(v4.strictlyEquals(v), false);
- v3 = v4;
- QCOMPARE(v3.strictlyEquals(v), false);
- QCOMPARE(v3.strictlyEquals(v4), true);
-
- v2 = QScriptValue();
- QCOMPARE(v2.strictlyEquals(v), false);
QCOMPARE(v.toNumber(), 1.0);
-
- QScriptValue v5(v);
- QCOMPARE(v5.strictlyEquals(v), true);
- v = QScriptValue();
- QCOMPARE(v5.strictlyEquals(v), false);
- QCOMPARE(v5.toNumber(), 1.0);
- }
-
- // constructors that take no engine argument
- {
- QScriptValue v(QScriptValue::UndefinedValue);
- QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isUndefined(), true);
- QCOMPARE(v.isObject(), false);
- QCOMPARE(v.engine(), (QScriptEngine *)0);
- }
- {
- QScriptValue v(QScriptValue::NullValue);
- QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isNull(), true);
- QCOMPARE(v.isObject(), false);
- QCOMPARE(v.engine(), (QScriptEngine *)0);
- }
- {
- QScriptValue v(false);
- QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isBoolean(), true);
- QCOMPARE(v.isBool(), true);
- QCOMPARE(v.isObject(), false);
- QCOMPARE(v.toBoolean(), false);
QCOMPARE(v.engine(), (QScriptEngine *)0);
}
+}
+
+void tst_QScriptValue::ctor_floatWithEngine()
+{
+ QScriptEngine eng;
{
- QScriptValue v(int(1));
+ QScriptValue v(&eng, 1.0);
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isNumber(), true);
QCOMPARE(v.isObject(), false);
QCOMPARE(v.toNumber(), 1.0);
- QCOMPARE(v.engine(), (QScriptEngine *)0);
+ QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_float()
+{
{
- QScriptValue v(uint(1));
+ QScriptValue v(12345678910.5);
+ QVERIFY(v.isNumber());
+ QCOMPARE(v.toNumber(), 12345678910.5);
+ }
+ {
+ QScriptValue v(1.0);
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isNumber(), true);
QCOMPARE(v.isObject(), false);
QCOMPARE(v.toNumber(), 1.0);
QCOMPARE(v.engine(), (QScriptEngine *)0);
}
+}
+
+void tst_QScriptValue::ctor_stringWithEngine()
+{
+ QScriptEngine eng;
{
- QScriptValue v(1.0);
+ QScriptValue v(&eng, "ciao");
QCOMPARE(v.isValid(), true);
- QCOMPARE(v.isNumber(), true);
+ QCOMPARE(v.isString(), true);
QCOMPARE(v.isObject(), false);
- QCOMPARE(v.toNumber(), 1.0);
- QCOMPARE(v.engine(), (QScriptEngine *)0);
+ QCOMPARE(v.toString(), QLatin1String("ciao"));
+ QCOMPARE(v.engine(), &eng);
}
+}
+
+void tst_QScriptValue::ctor_string()
+{
{
- QScriptValue v("ciao");
+ QScriptValue v(QString("ciao"));
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isString(), true);
QCOMPARE(v.isObject(), false);
@@ -285,26 +222,31 @@ void tst_QScriptValue::ctor()
QCOMPARE(v.engine(), (QScriptEngine *)0);
}
{
- QScriptValue v(QString("ciao"));
+ QScriptValue v("ciao");
QCOMPARE(v.isValid(), true);
QCOMPARE(v.isString(), true);
QCOMPARE(v.isObject(), false);
QCOMPARE(v.toString(), QLatin1String("ciao"));
QCOMPARE(v.engine(), (QScriptEngine *)0);
}
+}
+
+void tst_QScriptValue::ctor_copyAndAssignWithEngine()
+{
+ QScriptEngine eng;
// copy constructor, operator=
{
- QScriptValue v(1.0);
+ QScriptValue v(&eng, 1.0);
QScriptValue v2(v);
QCOMPARE(v2.strictlyEquals(v), true);
- QCOMPARE(v2.engine(), (QScriptEngine *)0);
+ QCOMPARE(v2.engine(), &eng);
QScriptValue v3(v);
QCOMPARE(v3.strictlyEquals(v), true);
QCOMPARE(v3.strictlyEquals(v2), true);
- QCOMPARE(v3.engine(), (QScriptEngine *)0);
+ QCOMPARE(v3.engine(), &eng);
- QScriptValue v4(2.0);
+ QScriptValue v4(&eng, 2.0);
QCOMPARE(v4.strictlyEquals(v), false);
v3 = v4;
QCOMPARE(v3.strictlyEquals(v), false);
@@ -320,7 +262,68 @@ void tst_QScriptValue::ctor()
QCOMPARE(v5.strictlyEquals(v), false);
QCOMPARE(v5.toNumber(), 1.0);
}
+}
+
+void tst_QScriptValue::ctor_undefined()
+{
+ QScriptValue v(QScriptValue::UndefinedValue);
+ QCOMPARE(v.isValid(), true);
+ QCOMPARE(v.isUndefined(), true);
+ QCOMPARE(v.isObject(), false);
+ QCOMPARE(v.engine(), (QScriptEngine *)0);
+}
+
+void tst_QScriptValue::ctor_null()
+{
+ QScriptValue v(QScriptValue::NullValue);
+ QCOMPARE(v.isValid(), true);
+ QCOMPARE(v.isNull(), true);
+ QCOMPARE(v.isObject(), false);
+ QCOMPARE(v.engine(), (QScriptEngine *)0);
+}
+
+void tst_QScriptValue::ctor_bool()
+{
+ QScriptValue v(false);
+ QCOMPARE(v.isValid(), true);
+ QCOMPARE(v.isBoolean(), true);
+ QCOMPARE(v.isBool(), true);
+ QCOMPARE(v.isObject(), false);
+ QCOMPARE(v.toBoolean(), false);
+ QCOMPARE(v.engine(), (QScriptEngine *)0);
+}
+void tst_QScriptValue::ctor_copyAndAssign()
+{
+ QScriptValue v(1.0);
+ QScriptValue v2(v);
+ QCOMPARE(v2.strictlyEquals(v), true);
+ QCOMPARE(v2.engine(), (QScriptEngine *)0);
+
+ QScriptValue v3(v);
+ QCOMPARE(v3.strictlyEquals(v), true);
+ QCOMPARE(v3.strictlyEquals(v2), true);
+ QCOMPARE(v3.engine(), (QScriptEngine *)0);
+
+ QScriptValue v4(2.0);
+ QCOMPARE(v4.strictlyEquals(v), false);
+ v3 = v4;
+ QCOMPARE(v3.strictlyEquals(v), false);
+ QCOMPARE(v3.strictlyEquals(v4), true);
+
+ v2 = QScriptValue();
+ QCOMPARE(v2.strictlyEquals(v), false);
+ QCOMPARE(v.toNumber(), 1.0);
+
+ QScriptValue v5(v);
+ QCOMPARE(v5.strictlyEquals(v), true);
+ v = QScriptValue();
+ QCOMPARE(v5.strictlyEquals(v), false);
+ QCOMPARE(v5.toNumber(), 1.0);
+}
+
+void tst_QScriptValue::ctor_nullEngine()
+{
// 0 engine
QVERIFY(QScriptValue(0, QScriptValue::UndefinedValue).isUndefined());
QVERIFY(QScriptValue(0, QScriptValue::NullValue).isNull());
@@ -337,7 +340,7 @@ static QScriptValue myFunction(QScriptContext *, QScriptEngine *eng)
return eng->undefinedValue();
}
-void tst_QScriptValue::toString_old()
+void tst_QScriptValue::toString()
{
QScriptEngine eng;
@@ -451,7 +454,7 @@ void tst_QScriptValue::toString_old()
QVERIFY(variant.toString().isEmpty());
}
-void tst_QScriptValue::toNumber_old()
+void tst_QScriptValue::toNumber()
{
QScriptEngine eng;
@@ -524,7 +527,7 @@ void tst_QScriptValue::toNumber_old()
}
}
-void tst_QScriptValue::toBoolean_old() // deprecated
+void tst_QScriptValue::toBoolean() // deprecated
{
QScriptEngine eng;
@@ -621,7 +624,7 @@ void tst_QScriptValue::toBoolean_old() // deprecated
}
}
-void tst_QScriptValue::toBool_old()
+void tst_QScriptValue::toBool()
{
QScriptEngine eng;
@@ -718,7 +721,7 @@ void tst_QScriptValue::toBool_old()
}
}
-void tst_QScriptValue::toInteger_old()
+void tst_QScriptValue::toInteger()
{
QScriptEngine eng;
@@ -805,7 +808,7 @@ void tst_QScriptValue::toInteger_old()
QCOMPARE(inv.toInteger(), 0.0);
}
-void tst_QScriptValue::toInt32_old()
+void tst_QScriptValue::toInt32()
{
QScriptEngine eng;
@@ -941,7 +944,7 @@ void tst_QScriptValue::toInt32_old()
QCOMPARE(qscriptvalue_cast<qint32>(inv), 0);
}
-void tst_QScriptValue::toUInt32_old()
+void tst_QScriptValue::toUInt32()
{
QScriptEngine eng;
@@ -1073,7 +1076,7 @@ void tst_QScriptValue::toUInt32_old()
QCOMPARE(qscriptvalue_cast<quint32>(inv), quint32(0));
}
-void tst_QScriptValue::toUInt16_old()
+void tst_QScriptValue::toUInt16()
{
QScriptEngine eng;
@@ -1234,7 +1237,7 @@ void tst_QScriptValue::toUInt16_old()
Q_DECLARE_METATYPE(QVariant)
#endif
-void tst_QScriptValue::toVariant_old()
+void tst_QScriptValue::toVariant()
{
QScriptEngine eng;
@@ -1341,7 +1344,7 @@ void tst_QScriptValue::toVariant_old()
// unfortunately, this is necessary in order to do qscriptvalue_cast<QPushButton*>(...)
Q_DECLARE_METATYPE(QPushButton*)
-void tst_QScriptValue::toQObject_old()
+void tst_QScriptValue::toQObject()
{
QScriptEngine eng;
@@ -1548,7 +1551,7 @@ void tst_QScriptValue::toObject()
}
}
-void tst_QScriptValue::toDateTime_old()
+void tst_QScriptValue::toDateTime()
{
QScriptEngine eng;
QDateTime dt = eng.evaluate("new Date(0)").toDateTime();
@@ -1566,7 +1569,7 @@ void tst_QScriptValue::toDateTime_old()
QVERIFY(!eng.undefinedValue().toDateTime().isValid());
}
-void tst_QScriptValue::toRegExp_old()
+void tst_QScriptValue::toRegExp()
{
QScriptEngine eng;
{
@@ -1596,7 +1599,16 @@ void tst_QScriptValue::toRegExp_old()
QVERIFY(eng.undefinedValue().toRegExp().isEmpty());
}
-void tst_QScriptValue::instanceOf_old()
+void tst_QScriptValue::instanceOf_twoEngines()
+{
+ QScriptEngine eng;
+ QScriptValue obj = eng.newObject();
+ QScriptEngine otherEngine;
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::instanceof: cannot perform operation on a value created in a different engine");
+ QCOMPARE(obj.instanceOf(otherEngine.globalObject().property("Object")), false);
+}
+
+void tst_QScriptValue::instanceOf()
{
QScriptEngine eng;
QScriptValue obj = eng.newObject();
@@ -1626,40 +1638,60 @@ void tst_QScriptValue::instanceOf_old()
QCOMPARE(arr.instanceOf(eng.evaluate("QObject")), false);
QCOMPARE(QScriptValue().instanceOf(arr), false);
+}
- QScriptEngine otherEngine;
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::instanceof: cannot perform operation on a value created in a different engine");
- QCOMPARE(obj.instanceOf(otherEngine.globalObject().property("Object")), false);
+void tst_QScriptValue::isArray_data()
+{
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("value");
+ QTest::addColumn<bool>("array");
+
+ QTest::newRow("[]") << engine->evaluate("[]") << true;
+ QTest::newRow("{}") << engine->evaluate("{}") << false;
+ QTest::newRow("globalObject") << engine->globalObject() << false;
+ QTest::newRow("invalid") << QScriptValue() << false;
+ QTest::newRow("number") << QScriptValue(123) << false;
+ QTest::newRow("bool") << QScriptValue(false) << false;
+ QTest::newRow("null") << engine->nullValue() << false;
+ QTest::newRow("undefined") << engine->undefinedValue() << false;
}
-void tst_QScriptValue::isArray_old()
+void tst_QScriptValue::isArray()
{
- QScriptEngine eng;
- QVERIFY(eng.evaluate("[]").isArray());
- QVERIFY(!eng.evaluate("{}").isArray());
- QVERIFY(!eng.globalObject().isArray());
- QVERIFY(!QScriptValue().isArray());
- QVERIFY(!QScriptValue(123).isArray());
- QVERIFY(!QScriptValue(false).isArray());
- QVERIFY(!eng.nullValue().isArray());
- QVERIFY(!eng.undefinedValue().isArray());
+ QFETCH(QScriptValue, value);
+ QFETCH(bool, array);
+
+ QCOMPARE(value.isArray(), array);
}
-void tst_QScriptValue::isDate_old()
+void tst_QScriptValue::isDate_data()
{
- QScriptEngine eng;
- QVERIFY(eng.evaluate("new Date()").isDate());
- QVERIFY(!eng.evaluate("[]").isDate());
- QVERIFY(!eng.evaluate("{}").isDate());
- QVERIFY(!eng.globalObject().isDate());
- QVERIFY(!QScriptValue().isDate());
- QVERIFY(!QScriptValue(123).isDate());
- QVERIFY(!QScriptValue(false).isDate());
- QVERIFY(!eng.nullValue().isDate());
- QVERIFY(!eng.undefinedValue().isDate());
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("value");
+ QTest::addColumn<bool>("date");
+
+ QTest::newRow("date") << engine->evaluate("new Date()") << true;
+ QTest::newRow("[]") << engine->evaluate("[]") << false;
+ QTest::newRow("{}") << engine->evaluate("{}") << false;
+ QTest::newRow("globalObject") << engine->globalObject() << false;
+ QTest::newRow("invalid") << QScriptValue() << false;
+ QTest::newRow("number") << QScriptValue(123) << false;
+ QTest::newRow("bool") << QScriptValue(false) << false;
+ QTest::newRow("null") << engine->nullValue() << false;
+ QTest::newRow("undefined") << engine->undefinedValue() << false;
+}
+
+void tst_QScriptValue::isDate()
+{
+ QFETCH(QScriptValue, value);
+ QFETCH(bool, date);
+
+ QCOMPARE(value.isDate(), date);
}
-void tst_QScriptValue::isError_old()
+void tst_QScriptValue::isError_propertiesOfGlobalObject()
{
QStringList errors;
errors << "Error"
@@ -1675,27 +1707,60 @@ void tst_QScriptValue::isError_old()
QVERIFY(ctor.isFunction());
QVERIFY(ctor.property("prototype").isError());
}
- QVERIFY(!eng.globalObject().isError());
- QVERIFY(!QScriptValue().isError());
- QVERIFY(!QScriptValue(123).isError());
- QVERIFY(!QScriptValue(false).isError());
- QVERIFY(!eng.nullValue().isError());
- QVERIFY(!eng.undefinedValue().isError());
- QVERIFY(!eng.evaluate("new Object()").isError());
}
-void tst_QScriptValue::isRegExp_old()
+void tst_QScriptValue::isError_data()
{
- QScriptEngine eng;
- QVERIFY(eng.evaluate("/foo/").isRegExp());
- QVERIFY(!eng.evaluate("[]").isRegExp());
- QVERIFY(!eng.evaluate("{}").isRegExp());
- QVERIFY(!eng.globalObject().isRegExp());
- QVERIFY(!QScriptValue().isRegExp());
- QVERIFY(!QScriptValue(123).isRegExp());
- QVERIFY(!QScriptValue(false).isRegExp());
- QVERIFY(!eng.nullValue().isRegExp());
- QVERIFY(!eng.undefinedValue().isRegExp());
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("value");
+ QTest::addColumn<bool>("error");
+
+ QTest::newRow("syntax error") << engine->evaluate("%fsdg's") << true;
+ QTest::newRow("[]") << engine->evaluate("[]") << false;
+ QTest::newRow("{}") << engine->evaluate("{}") << false;
+ QTest::newRow("globalObject") << engine->globalObject() << false;
+ QTest::newRow("invalid") << QScriptValue() << false;
+ QTest::newRow("number") << QScriptValue(123) << false;
+ QTest::newRow("bool") << QScriptValue(false) << false;
+ QTest::newRow("null") << engine->nullValue() << false;
+ QTest::newRow("undefined") << engine->undefinedValue() << false;
+ QTest::newRow("newObject") << engine->newObject() << false;
+ QTest::newRow("new Object") << engine->evaluate("new Object()") << false;
+}
+
+void tst_QScriptValue::isError()
+{
+ QFETCH(QScriptValue, value);
+ QFETCH(bool, error);
+
+ QCOMPARE(value.isError(), error);
+}
+
+void tst_QScriptValue::isRegExp_data()
+{
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("value");
+ QTest::addColumn<bool>("regexp");
+
+ QTest::newRow("/foo/") << engine->evaluate("/foo/") << true;
+ QTest::newRow("[]") << engine->evaluate("[]") << false;
+ QTest::newRow("{}") << engine->evaluate("{}") << false;
+ QTest::newRow("globalObject") << engine->globalObject() << false;
+ QTest::newRow("invalid") << QScriptValue() << false;
+ QTest::newRow("number") << QScriptValue(123) << false;
+ QTest::newRow("bool") << QScriptValue(false) << false;
+ QTest::newRow("null") << engine->nullValue() << false;
+ QTest::newRow("undefined") << engine->undefinedValue() << false;
+}
+
+void tst_QScriptValue::isRegExp()
+{
+ QFETCH(QScriptValue, value);
+ QFETCH(bool, regexp);
+
+ QCOMPARE(value.isRegExp(), regexp);
}
static QScriptValue getter(QScriptContext *ctx, QScriptEngine *)
@@ -1731,48 +1796,9 @@ static QScriptValue getSet__proto__(QScriptContext *ctx, QScriptEngine *)
return ctx->callee().property("value");
}
-void tst_QScriptValue::getSetProperty()
+void tst_QScriptValue::getSetProperty_HooliganTask162051()
{
QScriptEngine eng;
-
- QScriptValue object = eng.newObject();
-
- QScriptValue str = QScriptValue(&eng, "bar");
- object.setProperty("foo", str);
- QCOMPARE(object.property("foo").toString(), str.toString());
-
- QScriptValue num = QScriptValue(&eng, 123.0);
- object.setProperty("baz", num);
- QCOMPARE(object.property("baz").toNumber(), num.toNumber());
-
- QScriptValue strstr = QScriptValue("bar");
- QCOMPARE(strstr.engine(), (QScriptEngine *)0);
- object.setProperty("foo", strstr);
- QCOMPARE(object.property("foo").toString(), strstr.toString());
- QCOMPARE(strstr.engine(), &eng); // the value has been bound to the engine
-
- QScriptValue numnum = QScriptValue(123.0);
- object.setProperty("baz", numnum);
- QCOMPARE(object.property("baz").toNumber(), numnum.toNumber());
-
- QScriptValue inv;
- inv.setProperty("foo", num);
- QCOMPARE(inv.property("foo").isValid(), false);
-
- QScriptValue array = eng.newArray();
- QVERIFY(array.isArray());
- array.setProperty(0, num);
- QCOMPARE(array.property(0).toNumber(), num.toNumber());
- QCOMPARE(array.property("0").toNumber(), num.toNumber());
- QCOMPARE(array.property("length").toUInt32(), quint32(1));
- array.setProperty(1, str);
- QCOMPARE(array.property(1).toString(), str.toString());
- QCOMPARE(array.property("1").toString(), str.toString());
- QCOMPARE(array.property("length").toUInt32(), quint32(2));
- array.setProperty("length", QScriptValue(&eng, 1));
- QCOMPARE(array.property("length").toUInt32(), quint32(1));
- QCOMPARE(array.property(1).isValid(), false);
-
// task 162051 -- detecting whether the property is an array index or not
QVERIFY(eng.evaluate("a = []; a['00'] = 123; a['00']").strictlyEquals(QScriptValue(&eng, 123)));
QVERIFY(eng.evaluate("a.length").strictlyEquals(QScriptValue(&eng, 0)));
@@ -1785,24 +1811,62 @@ void tst_QScriptValue::getSetProperty()
QVERIFY(eng.evaluate("a[0]").isUndefined());
QVERIFY(eng.evaluate("a[0] = 789; a[0]").strictlyEquals(QScriptValue(&eng, 789)));
QVERIFY(eng.evaluate("a.length").strictlyEquals(QScriptValue(&eng, 1)));
+}
+void tst_QScriptValue::getSetProperty_HooliganTask183072()
+{
+ QScriptEngine eng;
// task 183072 -- 0x800000000 is not an array index
eng.evaluate("a = []; a[0x800000000] = 123");
QVERIFY(eng.evaluate("a.length").strictlyEquals(QScriptValue(&eng, 0)));
QVERIFY(eng.evaluate("a[0]").isUndefined());
QVERIFY(eng.evaluate("a[0x800000000]").strictlyEquals(QScriptValue(&eng, 123)));
+}
- QScriptEngine otherEngine;
- QScriptValue otherNum = QScriptValue(&otherEngine, 123);
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty(oof) failed: cannot set value created in a different engine");
- object.setProperty("oof", otherNum);
- QCOMPARE(object.property("oof").isValid(), false);
+void tst_QScriptValue::getSetProperty_propertyRemoval()
+{
+ // test property removal (setProperty(QScriptValue()))
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ QScriptValue str = QScriptValue(&eng, "bar");
+ QScriptValue num = QScriptValue(&eng, 123.0);
+ object.setProperty("foo", num);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+ object.setProperty("bar", str);
+ QCOMPARE(object.property("bar").strictlyEquals(str), true);
+ object.setProperty("foo", QScriptValue());
+ QCOMPARE(object.property("foo").isValid(), false);
+ QCOMPARE(object.property("bar").strictlyEquals(str), true);
+ object.setProperty("foo", num);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+ QCOMPARE(object.property("bar").strictlyEquals(str), true);
+ object.setProperty("bar", QScriptValue());
+ QCOMPARE(object.property("bar").isValid(), false);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+ object.setProperty("foo", QScriptValue());
+ object.setProperty("foo", QScriptValue());
+
+ eng.globalObject().setProperty("object3", object);
+ QCOMPARE(eng.evaluate("object3.hasOwnProperty('foo')")
+ .strictlyEquals(QScriptValue(&eng, false)), true);
+ object.setProperty("foo", num);
+ QCOMPARE(eng.evaluate("object3.hasOwnProperty('foo')")
+ .strictlyEquals(QScriptValue(&eng, true)), true);
+ eng.globalObject().setProperty("object3", QScriptValue());
+ QCOMPARE(eng.evaluate("this.hasOwnProperty('object3')")
+ .strictlyEquals(QScriptValue(&eng, false)), true);
+}
+
+void tst_QScriptValue::getSetProperty_resolveMode()
+{
// test ResolveMode
- QScriptValue object2 = eng.newObject();
- object.setPrototype(object2);
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ QScriptValue prototype = eng.newObject();
+ object.setPrototype(prototype);
QScriptValue num2 = QScriptValue(&eng, 456.0);
- object2.setProperty("propertyInPrototype", num2);
+ prototype.setProperty("propertyInPrototype", num2);
// default is ResolvePrototype
QCOMPARE(object.property("propertyInPrototype")
.strictlyEquals(num2), true);
@@ -1814,199 +1878,247 @@ void tst_QScriptValue::getSetProperty()
.strictlyEquals(num2), false);
QCOMPARE(object.property("propertyInPrototype", QScriptValue::ResolveFull)
.strictlyEquals(num2), true);
+}
- // test property removal (setProperty(QScriptValue()))
- QScriptValue object3 = eng.newObject();
- object3.setProperty("foo", num);
- QCOMPARE(object3.property("foo").strictlyEquals(num), true);
- object3.setProperty("bar", str);
- QCOMPARE(object3.property("bar").strictlyEquals(str), true);
- object3.setProperty("foo", QScriptValue());
- QCOMPARE(object3.property("foo").isValid(), false);
- QCOMPARE(object3.property("bar").strictlyEquals(str), true);
- object3.setProperty("foo", num);
- QCOMPARE(object3.property("foo").strictlyEquals(num), true);
- QCOMPARE(object3.property("bar").strictlyEquals(str), true);
- object3.setProperty("bar", QScriptValue());
- QCOMPARE(object3.property("bar").isValid(), false);
- QCOMPARE(object3.property("foo").strictlyEquals(num), true);
- object3.setProperty("foo", QScriptValue());
- object3.setProperty("foo", QScriptValue());
-
- eng.globalObject().setProperty("object3", object3);
- QCOMPARE(eng.evaluate("object3.hasOwnProperty('foo')")
- .strictlyEquals(QScriptValue(&eng, false)), true);
- object3.setProperty("foo", num);
- QCOMPARE(eng.evaluate("object3.hasOwnProperty('foo')")
- .strictlyEquals(QScriptValue(&eng, true)), true);
- eng.globalObject().setProperty("object3", QScriptValue());
- QCOMPARE(eng.evaluate("this.hasOwnProperty('object3')")
- .strictlyEquals(QScriptValue(&eng, false)), true);
+void tst_QScriptValue::getSetProperty_twoEngines()
+{
+ QScriptEngine engine;
+ QScriptValue object = engine.newObject();
- // getters and setters
- {
- QScriptValue object4 = eng.newObject();
- for (int x = 0; x < 2; ++x) {
- object4.setProperty("foo", QScriptValue());
- // getter() returns this.x
- object4.setProperty("foo", eng.newFunction(getter),
- QScriptValue::PropertyGetter | QScriptValue::UserRange);
- QCOMPARE(object4.propertyFlags("foo") & ~QScriptValue::UserRange,
- QScriptValue::PropertyGetter );
-
- QEXPECT_FAIL("", "User-range flags are not retained for getter/setter properties", Continue);
- QCOMPARE(object4.propertyFlags("foo"),
- QScriptValue::PropertyGetter | QScriptValue::UserRange);
- object4.setProperty("x", num);
- QCOMPARE(object4.property("foo").strictlyEquals(num), true);
-
- // setter() sets this.x
- object4.setProperty("foo", eng.newFunction(setter),
- QScriptValue::PropertySetter);
- QCOMPARE(object4.propertyFlags("foo") & ~QScriptValue::UserRange,
- QScriptValue::PropertySetter | QScriptValue::PropertyGetter);
-
- QCOMPARE(object4.propertyFlags("foo"),
- QScriptValue::PropertySetter | QScriptValue::PropertyGetter);
- object4.setProperty("foo", str);
- QCOMPARE(object4.property("x").strictlyEquals(str), true);
- QCOMPARE(object4.property("foo").strictlyEquals(str), true);
-
- // kill the getter
- object4.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
- QVERIFY(!(object4.propertyFlags("foo") & QScriptValue::PropertyGetter));
- QVERIFY(object4.propertyFlags("foo") & QScriptValue::PropertySetter);
- QCOMPARE(object4.property("foo").isUndefined(), true);
-
- // setter should still work
- object4.setProperty("foo", num);
- QCOMPARE(object4.property("x").strictlyEquals(num), true);
-
- // kill the setter too
- object4.setProperty("foo", QScriptValue(), QScriptValue::PropertySetter);
- QVERIFY(!(object4.propertyFlags("foo") & QScriptValue::PropertySetter));
- // now foo is just a regular property
- object4.setProperty("foo", str);
- QCOMPARE(object4.property("x").strictlyEquals(num), true);
- QCOMPARE(object4.property("foo").strictlyEquals(str), true);
- }
+ QScriptEngine otherEngine;
+ QScriptValue otherNum = QScriptValue(&otherEngine, 123);
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty(oof) failed: cannot set value created in a different engine");
+ object.setProperty("oof", otherNum);
+ QCOMPARE(object.property("oof").isValid(), false);
+}
- for (int x = 0; x < 2; ++x) {
- object4.setProperty("foo", QScriptValue());
- // setter() sets this.x
- object4.setProperty("foo", eng.newFunction(setter), QScriptValue::PropertySetter);
- object4.setProperty("foo", str);
- QCOMPARE(object4.property("x").strictlyEquals(str), true);
- QCOMPARE(object4.property("foo").isUndefined(), true);
-
- // getter() returns this.x
- object4.setProperty("foo", eng.newFunction(getter), QScriptValue::PropertyGetter);
- object4.setProperty("x", num);
- QCOMPARE(object4.property("foo").strictlyEquals(num), true);
-
- // kill the setter
- object4.setProperty("foo", QScriptValue(), QScriptValue::PropertySetter);
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty() failed: property 'foo' has a getter but no setter");
- object4.setProperty("foo", str);
-
- // getter should still work
- QCOMPARE(object4.property("foo").strictlyEquals(num), true);
-
- // kill the getter too
- object4.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
- // now foo is just a regular property
- object4.setProperty("foo", str);
- QCOMPARE(object4.property("x").strictlyEquals(num), true);
- QCOMPARE(object4.property("foo").strictlyEquals(str), true);
- }
- // use a single function as both getter and setter
- object4.setProperty("foo", QScriptValue());
- object4.setProperty("foo", eng.newFunction(getterSetter),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- QCOMPARE(object4.propertyFlags("foo"),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- object4.setProperty("x", num);
- QCOMPARE(object4.property("foo").strictlyEquals(num), true);
-
- // killing the getter will preserve the setter, even though they are the same function
- object4.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
- QVERIFY(object4.propertyFlags("foo") & QScriptValue::PropertySetter);
- QCOMPARE(object4.property("foo").isUndefined(), true);
-
- // getter/setter that throws an error
- {
- QScriptValue object5 = eng.newObject();
- object5.setProperty("foo", eng.newFunction(getterSetterThrowingError),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- QVERIFY(!eng.hasUncaughtException());
- QScriptValue ret = object5.property("foo");
- QVERIFY(ret.isError());
- QVERIFY(eng.hasUncaughtException());
- QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
- eng.evaluate("Object"); // clear exception state...
- QVERIFY(!eng.hasUncaughtException());
- object5.setProperty("foo", str);
- QVERIFY(eng.hasUncaughtException());
- QCOMPARE(eng.uncaughtException().toString(), QLatin1String("Error: set foo"));
- }
+void tst_QScriptValue::getSetProperty_gettersAndSetters()
+{
+ QScriptEngine eng;
+ QScriptValue str = QScriptValue(&eng, "bar");
+ QScriptValue num = QScriptValue(&eng, 123.0);
+ QScriptValue object = eng.newObject();
+ for (int x = 0; x < 2; ++x) {
+ object.setProperty("foo", QScriptValue());
+ // getter() returns this.x
+ object.setProperty("foo", eng.newFunction(getter),
+ QScriptValue::PropertyGetter | QScriptValue::UserRange);
+ QCOMPARE(object.propertyFlags("foo") & ~QScriptValue::UserRange,
+ QScriptValue::PropertyGetter );
+
+ QEXPECT_FAIL("", "User-range flags are not retained for getter/setter properties", Continue);
+ QCOMPARE(object.propertyFlags("foo"),
+ QScriptValue::PropertyGetter | QScriptValue::UserRange);
+ object.setProperty("x", num);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+
+ // setter() sets this.x
+ object.setProperty("foo", eng.newFunction(setter),
+ QScriptValue::PropertySetter);
+ QCOMPARE(object.propertyFlags("foo") & ~QScriptValue::UserRange,
+ QScriptValue::PropertySetter | QScriptValue::PropertyGetter);
+
+ QCOMPARE(object.propertyFlags("foo"),
+ QScriptValue::PropertySetter | QScriptValue::PropertyGetter);
+ object.setProperty("foo", str);
+ QCOMPARE(object.property("x").strictlyEquals(str), true);
+ QCOMPARE(object.property("foo").strictlyEquals(str), true);
+
+ // kill the getter
+ object.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
+ QVERIFY(!(object.propertyFlags("foo") & QScriptValue::PropertyGetter));
+ QVERIFY(object.propertyFlags("foo") & QScriptValue::PropertySetter);
+ QCOMPARE(object.property("foo").isUndefined(), true);
+
+ // setter should still work
+ object.setProperty("foo", num);
+ QCOMPARE(object.property("x").strictlyEquals(num), true);
+
+ // kill the setter too
+ object.setProperty("foo", QScriptValue(), QScriptValue::PropertySetter);
+ QVERIFY(!(object.propertyFlags("foo") & QScriptValue::PropertySetter));
+ // now foo is just a regular property
+ object.setProperty("foo", str);
+ QCOMPARE(object.property("x").strictlyEquals(num), true);
+ QCOMPARE(object.property("foo").strictlyEquals(str), true);
+ }
+
+ for (int x = 0; x < 2; ++x) {
+ object.setProperty("foo", QScriptValue());
+ // setter() sets this.x
+ object.setProperty("foo", eng.newFunction(setter), QScriptValue::PropertySetter);
+ object.setProperty("foo", str);
+ QCOMPARE(object.property("x").strictlyEquals(str), true);
+ QCOMPARE(object.property("foo").isUndefined(), true);
+
+ // getter() returns this.x
+ object.setProperty("foo", eng.newFunction(getter), QScriptValue::PropertyGetter);
+ object.setProperty("x", num);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+
+ // kill the setter
+ object.setProperty("foo", QScriptValue(), QScriptValue::PropertySetter);
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty() failed: property 'foo' has a getter but no setter");
+ object.setProperty("foo", str);
+
+ // getter should still work
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+
+ // kill the getter too
+ object.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
+ // now foo is just a regular property
+ object.setProperty("foo", str);
+ QCOMPARE(object.property("x").strictlyEquals(num), true);
+ QCOMPARE(object.property("foo").strictlyEquals(str), true);
+ }
+
+ // use a single function as both getter and setter
+ object.setProperty("foo", QScriptValue());
+ object.setProperty("foo", eng.newFunction(getterSetter),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ QCOMPARE(object.propertyFlags("foo"),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ object.setProperty("x", num);
+ QCOMPARE(object.property("foo").strictlyEquals(num), true);
+
+ // killing the getter will preserve the setter, even though they are the same function
+ object.setProperty("foo", QScriptValue(), QScriptValue::PropertyGetter);
+ QVERIFY(object.propertyFlags("foo") & QScriptValue::PropertySetter);
+ QCOMPARE(object.property("foo").isUndefined(), true);
+}
- // attempt to install getter+setter on built-in (native) property
- {
- QScriptValue object6 = eng.newObject();
- QVERIFY(object6.property("__proto__").strictlyEquals(object6.prototype()));
-
- QScriptValue fun = eng.newFunction(getSet__proto__);
- fun.setProperty("value", QScriptValue(&eng, "boo"));
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty() failed: "
- "cannot set getter or setter of native property "
- "`__proto__'");
- object6.setProperty("__proto__", fun,
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter
- | QScriptValue::UserRange);
- QVERIFY(object6.property("__proto__").strictlyEquals(object6.prototype()));
-
- object6.setProperty("__proto__", QScriptValue(),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- QVERIFY(object6.property("__proto__").strictlyEquals(object6.prototype()));
- }
+void tst_QScriptValue::getSetProperty_gettersAndSettersThrowError()
+{
+ // getter/setter that throws an error
+ QScriptEngine eng;
+ QScriptValue str = QScriptValue(&eng, "bar");
+ QScriptValue object = eng.newObject();
- // global property that's a getter+setter
- {
- eng.globalObject().setProperty("globalGetterSetterProperty", eng.newFunction(getterSetter),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- eng.evaluate("globalGetterSetterProperty = 123");
- {
- QScriptValue ret = eng.evaluate("globalGetterSetterProperty");
- QVERIFY(ret.isNumber());
- QVERIFY(ret.strictlyEquals(QScriptValue(&eng, 123)));
- }
- QCOMPARE(eng.evaluate("typeof globalGetterSetterProperty").toString(),
- QString::fromLatin1("number"));
- {
- QScriptValue ret = eng.evaluate("this.globalGetterSetterProperty()");
- QVERIFY(ret.isError());
- QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Result of expression 'this.globalGetterSetterProperty' [123] is not a function."));
- }
- {
- QScriptValue ret = eng.evaluate("new this.globalGetterSetterProperty()");
- QVERIFY(ret.isError());
- QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Result of expression 'this.globalGetterSetterProperty' [123] is not a constructor."));
- }
- }
+ object.setProperty("foo", eng.newFunction(getterSetterThrowingError),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ QVERIFY(!eng.hasUncaughtException());
+ QScriptValue ret = object.property("foo");
+ QVERIFY(ret.isError());
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
+ eng.evaluate("Object"); // clear exception state...
+ QVERIFY(!eng.hasUncaughtException());
+ object.setProperty("foo", str);
+ QVERIFY(eng.hasUncaughtException());
+ QCOMPARE(eng.uncaughtException().toString(), QLatin1String("Error: set foo"));
+}
- // "upgrading" an existing property to become a getter+setter
- {
- QScriptValue object7 = eng.newObject();
- QScriptValue num(&eng, 123);
- object7.setProperty("foo", num);
- object7.setProperty("foo", eng.newFunction(getterSetter),
- QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
- QVERIFY(!object7.property("x").isValid());
- object7.setProperty("foo", num);
- QVERIFY(object7.property("x").equals(num));
- }
+void tst_QScriptValue::getSetProperty_gettersAndSettersOnNative()
+{
+ // attempt to install getter+setter on built-in (native) property
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ QVERIFY(object.property("__proto__").strictlyEquals(object.prototype()));
+
+ QScriptValue fun = eng.newFunction(getSet__proto__);
+ fun.setProperty("value", QScriptValue(&eng, "boo"));
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setProperty() failed: "
+ "cannot set getter or setter of native property "
+ "`__proto__'");
+ object.setProperty("__proto__", fun,
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter
+ | QScriptValue::UserRange);
+ QVERIFY(object.property("__proto__").strictlyEquals(object.prototype()));
+
+ object.setProperty("__proto__", QScriptValue(),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ QVERIFY(object.property("__proto__").strictlyEquals(object.prototype()));
+}
+
+void tst_QScriptValue::getSetProperty_gettersAndSettersOnGlobalObject()
+{
+ // global property that's a getter+setter
+ QScriptEngine eng;
+ eng.globalObject().setProperty("globalGetterSetterProperty", eng.newFunction(getterSetter),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ eng.evaluate("globalGetterSetterProperty = 123");
+ {
+ QScriptValue ret = eng.evaluate("globalGetterSetterProperty");
+ QVERIFY(ret.isNumber());
+ QVERIFY(ret.strictlyEquals(QScriptValue(&eng, 123)));
+ }
+ QCOMPARE(eng.evaluate("typeof globalGetterSetterProperty").toString(),
+ QString::fromLatin1("number"));
+ {
+ QScriptValue ret = eng.evaluate("this.globalGetterSetterProperty()");
+ QVERIFY(ret.isError());
+ QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Result of expression 'this.globalGetterSetterProperty' [123] is not a function."));
+ }
+ {
+ QScriptValue ret = eng.evaluate("new this.globalGetterSetterProperty()");
+ QVERIFY(ret.isError());
+ QCOMPARE(ret.toString(), QString::fromLatin1("TypeError: Result of expression 'this.globalGetterSetterProperty' [123] is not a constructor."));
}
+}
+
+void tst_QScriptValue::getSetProperty_gettersAndSettersChange()
+{
+ // "upgrading" an existing property to become a getter+setter
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ QScriptValue num(&eng, 123);
+ object.setProperty("foo", num);
+ object.setProperty("foo", eng.newFunction(getterSetter),
+ QScriptValue::PropertyGetter | QScriptValue::PropertySetter);
+ QVERIFY(!object.property("x").isValid());
+ object.setProperty("foo", num);
+ QVERIFY(object.property("x").equals(num));
+}
+
+void tst_QScriptValue::getSetProperty_array()
+{
+ QScriptEngine eng;
+ QScriptValue str = QScriptValue(&eng, "bar");
+ QScriptValue num = QScriptValue(&eng, 123.0);
+ QScriptValue array = eng.newArray();
+
+ QVERIFY(array.isArray());
+ array.setProperty(0, num);
+ QCOMPARE(array.property(0).toNumber(), num.toNumber());
+ QCOMPARE(array.property("0").toNumber(), num.toNumber());
+ QCOMPARE(array.property("length").toUInt32(), quint32(1));
+ array.setProperty(1, str);
+ QCOMPARE(array.property(1).toString(), str.toString());
+ QCOMPARE(array.property("1").toString(), str.toString());
+ QCOMPARE(array.property("length").toUInt32(), quint32(2));
+ array.setProperty("length", QScriptValue(&eng, 1));
+ QCOMPARE(array.property("length").toUInt32(), quint32(1));
+ QCOMPARE(array.property(1).isValid(), false);
+}
+
+void tst_QScriptValue::getSetProperty()
+{
+ QScriptEngine eng;
+
+ QScriptValue object = eng.newObject();
+
+ QScriptValue str = QScriptValue(&eng, "bar");
+ object.setProperty("foo", str);
+ QCOMPARE(object.property("foo").toString(), str.toString());
+
+ QScriptValue num = QScriptValue(&eng, 123.0);
+ object.setProperty("baz", num);
+ QCOMPARE(object.property("baz").toNumber(), num.toNumber());
+
+ QScriptValue strstr = QScriptValue("bar");
+ QCOMPARE(strstr.engine(), (QScriptEngine *)0);
+ object.setProperty("foo", strstr);
+ QCOMPARE(object.property("foo").toString(), strstr.toString());
+ QCOMPARE(strstr.engine(), &eng); // the value has been bound to the engine
+
+ QScriptValue numnum = QScriptValue(123.0);
+ object.setProperty("baz", numnum);
+ QCOMPARE(object.property("baz").toNumber(), numnum.toNumber());
+
+ QScriptValue inv;
+ inv.setProperty("foo", num);
+ QCOMPARE(inv.property("foo").isValid(), false);
eng.globalObject().setProperty("object", object);
@@ -2155,50 +2267,126 @@ void tst_QScriptValue::arrayElementGetterSetter()
QVERIFY(obj.propertyFlags("1") == 0);
}
-void tst_QScriptValue::getSetPrototype()
+void tst_QScriptValue::getSetPrototype_cyclicPrototype()
{
QScriptEngine eng;
-
+ QScriptValue prototype = eng.newObject();
QScriptValue object = eng.newObject();
+ object.setPrototype(prototype);
- QScriptValue object2 = eng.newObject();
- object2.setPrototype(object);
+ QScriptValue previousPrototype = prototype.prototype();
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setPrototype() failed: cyclic prototype value");
+ prototype.setPrototype(prototype);
+ QCOMPARE(prototype.prototype().strictlyEquals(previousPrototype), true);
+
+ object.setPrototype(prototype);
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setPrototype() failed: cyclic prototype value");
+ prototype.setPrototype(object);
+ QCOMPARE(prototype.prototype().strictlyEquals(previousPrototype), true);
+
+}
+
+void tst_QScriptValue::getSetPrototype_evalCyclicPrototype()
+{
+ QScriptEngine eng;
+ QScriptValue ret = eng.evaluate("o = { }; p = { }; o.__proto__ = p; p.__proto__ = o");
+ QCOMPARE(eng.hasUncaughtException(), true);
+ QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
+ QCOMPARE(ret.isError(), true);
+ QCOMPARE(ret.toString(), QLatin1String("Error: cyclic __proto__ value"));
+}
- QCOMPARE(object2.prototype().strictlyEquals(object), true);
+void tst_QScriptValue::getSetPrototype_eval()
+{
+ QScriptEngine eng;
+ QScriptValue ret = eng.evaluate("p = { }; p.__proto__ = { }");
+ QCOMPARE(eng.hasUncaughtException(), false);
+ QCOMPARE(ret.isError(), false);
+}
+void tst_QScriptValue::getSetPrototype_invalidPrototype()
+{
+ QScriptEngine eng;
QScriptValue inv;
+ QScriptValue object = eng.newObject();
+ QScriptValue proto = object.prototype();
+ QVERIFY(object.prototype().strictlyEquals(proto));
inv.setPrototype(object);
QCOMPARE(inv.prototype().isValid(), false);
+ object.setPrototype(inv);
+ // FIXME should it be invalid or proto?
+ QVERIFY(object.prototype().strictlyEquals(inv));
+}
+void tst_QScriptValue::getSetPrototype_twoEngines()
+{
+ QScriptEngine eng;
+ QScriptValue prototype = eng.newObject();
+ QScriptValue object = eng.newObject();
+ object.setPrototype(prototype);
QScriptEngine otherEngine;
- QScriptValue object3 = otherEngine.newObject();
+ QScriptValue newPrototype = otherEngine.newObject();
QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setPrototype() failed: cannot set a prototype created in a different engine");
- object2.setPrototype(object3);
- QCOMPARE(object2.prototype().strictlyEquals(object), true);
+ object.setPrototype(newPrototype);
+ QCOMPARE(object.prototype().strictlyEquals(prototype), true);
- // cyclic prototypes
- QScriptValue old = object.prototype();
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setPrototype() failed: cyclic prototype value");
- object.setPrototype(object);
- QCOMPARE(object.prototype().strictlyEquals(old), true);
+}
- object2.setPrototype(object);
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::setPrototype() failed: cyclic prototype value");
- object.setPrototype(object2);
- QCOMPARE(object.prototype().strictlyEquals(old), true);
+void tst_QScriptValue::getSetPrototype_null()
+{
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ object.setPrototype(QScriptValue(QScriptValue::NullValue));
+ QVERIFY(object.prototype().isNull());
- {
- QScriptValue ret = eng.evaluate("o = { }; p = { }; o.__proto__ = p; p.__proto__ = o");
- QCOMPARE(eng.hasUncaughtException(), true);
- QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
- QCOMPARE(ret.isError(), true);
- QCOMPARE(ret.toString(), QLatin1String("Error: cyclic __proto__ value"));
- }
- {
- QScriptValue ret = eng.evaluate("p.__proto__ = { }");
- QCOMPARE(eng.hasUncaughtException(), false);
- QCOMPARE(ret.isError(), false);
- }
+ QScriptValue newProto = eng.newObject();
+ object.setPrototype(newProto);
+ QVERIFY(object.prototype().equals(newProto));
+
+ object.setPrototype(QScriptValue(&eng, QScriptValue::NullValue));
+ QVERIFY(object.prototype().isNull());
+}
+
+void tst_QScriptValue::getSetPrototype_notObjectOrNull()
+{
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ QScriptValue originalProto = object.prototype();
+
+ QEXPECT_FAIL("", "QTBUG-15154: QScriptValue::setPrototype() allows a non-Object value to be set as prototype", Abort);
+
+ // bool
+ object.setPrototype(true);
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, true));
+ QVERIFY(object.prototype().equals(originalProto));
+
+ // number
+ object.setPrototype(123);
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, 123));
+ QVERIFY(object.prototype().equals(originalProto));
+
+ // string
+ object.setPrototype("foo");
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, "foo"));
+ QVERIFY(object.prototype().equals(originalProto));
+
+ // undefined
+ object.setPrototype(QScriptValue(QScriptValue::UndefinedValue));
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, QScriptValue::UndefinedValue));
+ QVERIFY(object.prototype().equals(originalProto));
+}
+
+void tst_QScriptValue::getSetPrototype()
+{
+ QScriptEngine eng;
+ QScriptValue prototype = eng.newObject();
+ QScriptValue object = eng.newObject();
+ object.setPrototype(prototype);
+ QCOMPARE(object.prototype().strictlyEquals(prototype), true);
}
void tst_QScriptValue::getSetScope()
@@ -2235,38 +2423,84 @@ void tst_QScriptValue::getSetScope()
QVERIFY(!object2.scope().isValid());
}
-void tst_QScriptValue::getSetData()
+void tst_QScriptValue::getSetData_objects_data()
+{
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("object");
+
+ QTest::newRow("object from evaluate") << engine->evaluate("new Object()");
+ QTest::newRow("object from engine") << engine->newObject();
+ QTest::newRow("Array") << engine->newArray();
+ QTest::newRow("Date") << engine->newDate(12324);
+ QTest::newRow("QObject") << engine->newQObject(this);
+ QTest::newRow("RegExp") << engine->newRegExp(QRegExp());
+}
+
+void tst_QScriptValue::getSetData_objects()
+{
+ QFETCH(QScriptValue, object);
+
+ QVERIFY(!object.data().isValid());
+ QScriptValue v1(true);
+ object.setData(v1);
+ QVERIFY(object.data().strictlyEquals(v1));
+ QScriptValue v2(123);
+ object.setData(v2);
+ QVERIFY(object.data().strictlyEquals(v2));
+ QScriptValue v3 = engine->newObject();
+ object.setData(v3);
+ QVERIFY(object.data().strictlyEquals(v3));
+ object.setData(QScriptValue());
+ QVERIFY(!object.data().isValid());
+}
+
+void tst_QScriptValue::getSetData_nonObjects_data()
+{
+ newEngine();
+
+ QTest::addColumn<QScriptValue>("value");
+
+ QTest::newRow("undefined (bound)") << engine->undefinedValue();
+ QTest::newRow("null (bound)") << engine->nullValue();
+ QTest::newRow("string (bound)") << QScriptValue(engine, "Pong");
+ QTest::newRow("bool (bound)") << QScriptValue(engine, false);
+
+ QTest::newRow("undefined") << QScriptValue(QScriptValue::UndefinedValue);
+ QTest::newRow("null") << QScriptValue(QScriptValue::NullValue);
+ QTest::newRow("string") << QScriptValue("Pong");
+ QTest::newRow("bool") << QScriptValue(true);
+}
+
+void tst_QScriptValue::getSetData_nonObjects()
+{
+ QFETCH(QScriptValue, value);
+
+ QVERIFY(!value.data().isValid());
+ QScriptValue v1(true);
+ value.setData(v1);
+ QVERIFY(!value.data().isValid());
+ QScriptValue v2(123);
+ value.setData(v2);
+ QVERIFY(!value.data().isValid());
+ QScriptValue v3 = engine->newObject();
+ value.setData(v3);
+ QVERIFY(!value.data().isValid());
+ value.setData(QScriptValue());
+ QVERIFY(!value.data().isValid());
+}
+
+void tst_QScriptValue::setData_QTBUG15144()
{
QScriptEngine eng;
- {
- QScriptValue object = eng.newObject();
- QVERIFY(!object.data().isValid());
- QScriptValue v1(true);
- object.setData(v1);
- QVERIFY(object.data().strictlyEquals(v1));
- QScriptValue v2(123);
- object.setData(v2);
- QVERIFY(object.data().strictlyEquals(v2));
- QScriptValue v3 = eng.newObject();
- object.setData(v3);
- QVERIFY(object.data().strictlyEquals(v3));
- object.setData(QScriptValue());
- QVERIFY(!object.data().isValid());
- }
- {
- QScriptValue value = eng.undefinedValue();
- QVERIFY(!value.data().isValid());
- QScriptValue v1(true);
- value.setData(v1);
- QVERIFY(!value.data().isValid());
- QScriptValue v2(123);
- value.setData(v2);
- QVERIFY(!value.data().isValid());
- QScriptValue v3 = eng.newObject();
- value.setData(v3);
- QVERIFY(!value.data().isValid());
- value.setData(QScriptValue());
- QVERIFY(!value.data().isValid());
+ 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");
}
}
@@ -2276,24 +2510,52 @@ public:
TestScriptClass(QScriptEngine *engine) : QScriptClass(engine) {}
};
-void tst_QScriptValue::getSetScriptClass()
+void tst_QScriptValue::getSetScriptClass_emptyClass_data()
{
- QScriptEngine eng;
- QScriptValue inv;
- QCOMPARE(inv.scriptClass(), (QScriptClass*)0);
- QScriptValue num(123);
- QCOMPARE(num.scriptClass(), (QScriptClass*)0);
+ newEngine();
+ QTest::addColumn<QScriptValue>("value");
+
+ QTest::newRow("invalid") << QScriptValue();
+ QTest::newRow("number") << QScriptValue(123);
+ QTest::newRow("string") << QScriptValue("pong");
+ QTest::newRow("bool") << QScriptValue(false);
+ QTest::newRow("null") << QScriptValue(QScriptValue::NullValue);
+ QTest::newRow("undefined") << QScriptValue(QScriptValue::UndefinedValue);
+
+ QTest::newRow("number") << QScriptValue(engine, 123);
+ QTest::newRow("string") << QScriptValue(engine, "pong");
+ QTest::newRow("bool") << QScriptValue(engine, true);
+ QTest::newRow("null") << QScriptValue(engine->nullValue());
+ QTest::newRow("undefined") << QScriptValue(engine->undefinedValue());
+ QTest::newRow("object") << QScriptValue(engine->newObject());
+ QTest::newRow("date") << QScriptValue(engine->evaluate("new Date()"));
+ QTest::newRow("qobject") << QScriptValue(engine->newQObject(this));
+}
+
+void tst_QScriptValue::getSetScriptClass_emptyClass()
+{
+ QFETCH(QScriptValue, value);
+ QCOMPARE(value.scriptClass(), (QScriptClass*)0);
+}
+void tst_QScriptValue::getSetScriptClass_JSObjectFromCpp()
+{
+ QScriptEngine eng;
TestScriptClass testClass(&eng);
// object created in C++ (newObject())
{
QScriptValue obj = eng.newObject();
- QCOMPARE(obj.scriptClass(), (QScriptClass*)0);
obj.setScriptClass(&testClass);
QCOMPARE(obj.scriptClass(), (QScriptClass*)&testClass);
obj.setScriptClass(0);
QCOMPARE(obj.scriptClass(), (QScriptClass*)0);
}
+}
+
+void tst_QScriptValue::getSetScriptClass_JSObjectFromJS()
+{
+ QScriptEngine eng;
+ TestScriptClass testClass(&eng);
// object created in JS
{
QScriptValue obj = eng.evaluate("new Object");
@@ -2308,6 +2570,12 @@ void tst_QScriptValue::getSetScriptClass()
obj.setScriptClass(0);
QCOMPARE(obj.scriptClass(), (QScriptClass*)0);
}
+}
+
+void tst_QScriptValue::getSetScriptClass_QVariant()
+{
+ QScriptEngine eng;
+ TestScriptClass testClass(&eng);
// object that already has a(n internal) class
{
QScriptValue obj = eng.newVariant(QUrl("http://example.com"));
@@ -2319,10 +2587,15 @@ void tst_QScriptValue::getSetScriptClass()
QVERIFY(!obj.isVariant());
QCOMPARE(obj.toVariant(), QVariant(QVariantMap()));
}
+}
+
+void tst_QScriptValue::getSetScriptClass_QObject()
+{
+ QScriptEngine eng;
+ TestScriptClass testClass(&eng);
{
QScriptValue obj = eng.newQObject(this);
QVERIFY(obj.isQObject());
- QCOMPARE(obj.scriptClass(), (QScriptClass*)0);
obj.setScriptClass(&testClass);
QCOMPARE(obj.scriptClass(), (QScriptClass*)&testClass);
QVERIFY(obj.isObject());
@@ -2351,83 +2624,89 @@ static QScriptValue returnInvalidValue(QScriptContext *, QScriptEngine *)
return QScriptValue();
}
-void tst_QScriptValue::call()
+void tst_QScriptValue::call_function()
{
QScriptEngine eng;
+ QScriptValue fun = eng.evaluate("(function() { return 1; })");
+ QVERIFY(fun.isFunction());
+ QScriptValue result = fun.call();
+ QVERIFY(result.isNumber());
+ QCOMPARE(result.toInt32(), 1);
+}
- {
- QScriptValue fun = eng.evaluate("(function() { return 1; })");
- QVERIFY(fun.isFunction());
- QScriptValue result = fun.call();
- QVERIFY(result.isNumber());
- QCOMPARE(result.toInt32(), 1);
- }
-
+void tst_QScriptValue::call_object()
+{
+ QScriptEngine eng;
QScriptValue Object = eng.evaluate("Object");
QCOMPARE(Object.isFunction(), true);
- {
- QScriptValue result = Object.call(Object);
- QCOMPARE(result.isObject(), true);
- }
+ QScriptValue result = Object.call(Object);
+ QCOMPARE(result.isObject(), true);
+}
+void tst_QScriptValue::call_newObjects()
+{
+ QScriptEngine eng;
// test that call() doesn't construct new objects
QScriptValue Number = eng.evaluate("Number");
+ QScriptValue Object = eng.evaluate("Object");
QCOMPARE(Object.isFunction(), true);
- {
- QScriptValueList args;
- args << QScriptValue(&eng, 123);
- QScriptValue result = Number.call(Object, args);
- QCOMPARE(result.strictlyEquals(args.at(0)), true);
- }
+ QScriptValueList args;
+ args << QScriptValue(&eng, 123);
+ QScriptValue result = Number.call(Object, args);
+ QCOMPARE(result.strictlyEquals(args.at(0)), true);
+}
+void tst_QScriptValue::call_this()
+{
+ QScriptEngine eng;
// test that correct "this" object is used
- {
- QScriptValue fun = eng.evaluate("(function() { return this; })");
- QCOMPARE(fun.isFunction(), true);
+ QScriptValue fun = eng.evaluate("(function() { return this; })");
+ QCOMPARE(fun.isFunction(), true);
- {
- QScriptValue numberObject = QScriptValue(&eng, 123.0).toObject();
- QScriptValue result = fun.call(numberObject);
- QCOMPARE(result.isObject(), true);
- QCOMPARE(result.toNumber(), 123.0);
- }
- }
+ QScriptValue numberObject = QScriptValue(&eng, 123.0).toObject();
+ QScriptValue result = fun.call(numberObject);
+ QCOMPARE(result.isObject(), true);
+ QCOMPARE(result.toNumber(), 123.0);
+}
+void tst_QScriptValue::call_arguments()
+{
+ QScriptEngine eng;
// test that correct arguments are passed
- {
- QScriptValue fun = eng.evaluate("(function() { return arguments[0]; })");
- QCOMPARE(fun.isFunction(), true);
-
- {
- QScriptValue result = fun.call(eng.undefinedValue());
- QCOMPARE(result.isUndefined(), true);
- }
-
- {
- QScriptValueList args;
- args << QScriptValue(&eng, 123.0);
- QScriptValue result = fun.call(eng.undefinedValue(), args);
- QCOMPARE(result.isNumber(), true);
- QCOMPARE(result.toNumber(), 123.0);
- }
- // V2 constructors
- {
- QScriptValueList args;
- args << QScriptValue(123.0);
- QScriptValue result = fun.call(eng.undefinedValue(), args);
- QCOMPARE(result.isNumber(), true);
- QCOMPARE(result.toNumber(), 123.0);
- }
- {
- QScriptValue args = eng.newArray();
- args.setProperty(0, 123);
- QScriptValue result = fun.call(eng.undefinedValue(), args);
- QVERIFY(result.isNumber());
- QCOMPARE(result.toNumber(), 123.0);
- }
+ QScriptValue fun = eng.evaluate("(function() { return arguments[0]; })");
+ QCOMPARE(fun.isFunction(), true);
+ {
+ QScriptValue result = fun.call(eng.undefinedValue());
+ QCOMPARE(result.isUndefined(), true);
+ }
+ {
+ QScriptValueList args;
+ args << QScriptValue(&eng, 123.0);
+ QScriptValue result = fun.call(eng.undefinedValue(), args);
+ QCOMPARE(result.isNumber(), true);
+ QCOMPARE(result.toNumber(), 123.0);
+ }
+ // V2 constructors
+ {
+ QScriptValueList args;
+ args << QScriptValue(123.0);
+ QScriptValue result = fun.call(eng.undefinedValue(), args);
+ QCOMPARE(result.isNumber(), true);
+ QCOMPARE(result.toNumber(), 123.0);
+ }
+ {
+ QScriptValue args = eng.newArray();
+ args.setProperty(0, 123);
+ QScriptValue result = fun.call(eng.undefinedValue(), args);
+ QVERIFY(result.isNumber());
+ QCOMPARE(result.toNumber(), 123.0);
}
+}
+void tst_QScriptValue::call()
+{
+ QScriptEngine eng;
{
QScriptValue fun = eng.evaluate("(function() { return arguments[1]; })");
QCOMPARE(fun.isFunction(), true);
@@ -2448,7 +2727,6 @@ void tst_QScriptValue::call()
QCOMPARE(result.toNumber(), 456.0);
}
}
-
{
QScriptValue fun = eng.evaluate("(function() { throw new Error('foo'); })");
QCOMPARE(fun.isFunction(), true);
@@ -2461,7 +2739,6 @@ void tst_QScriptValue::call()
QVERIFY(result.strictlyEquals(eng.uncaughtException()));
}
}
-
{
eng.clearExceptions();
QScriptValue fun = eng.newFunction(getArg);
@@ -2489,7 +2766,6 @@ void tst_QScriptValue::call()
QCOMPARE(result.toNumber(), 123.0);
}
}
-
{
QScriptValue fun = eng.newFunction(evaluateArg);
{
@@ -2501,11 +2777,12 @@ void tst_QScriptValue::call()
QCOMPARE(result.toNumber(), 123.0);
}
}
+}
- QScriptValue inv;
- QCOMPARE(inv.call().isValid(), false);
-
+void tst_QScriptValue::call_invalidArguments()
+{
// test that invalid arguments are handled gracefully
+ QScriptEngine eng;
{
QScriptValue fun = eng.newFunction(getArg);
{
@@ -2538,6 +2815,35 @@ void tst_QScriptValue::call()
QCOMPARE(qIsNaN(ret.toNumber()), true);
}
}
+}
+
+void tst_QScriptValue::call_invalidReturn()
+{
+ // test that invalid return value is handled gracefully
+ QScriptEngine eng;
+ QScriptValue fun = eng.newFunction(returnInvalidValue);
+ eng.globalObject().setProperty("returnInvalidValue", fun);
+ QScriptValue ret = eng.evaluate("returnInvalidValue() + returnInvalidValue()");
+ QCOMPARE(ret.isValid(), true);
+ QCOMPARE(ret.isNumber(), true);
+ QCOMPARE(qIsNaN(ret.toNumber()), true);
+}
+
+void tst_QScriptValue::call_twoEngines()
+{
+ QScriptEngine eng;
+ QScriptValue object = eng.evaluate("Object");
+ QScriptEngine otherEngine;
+ QScriptValue fun = otherEngine.evaluate("(function() { return 1; })");
+ QVERIFY(fun.isFunction());
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call() failed: "
+ "cannot call function with thisObject created in "
+ "a different engine");
+ QCOMPARE(fun.call(object).isValid(), false);
+ QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call() failed: "
+ "cannot call function with argument created in "
+ "a different engine");
+ QCOMPARE(fun.call(QScriptValue(), QScriptValueList() << QScriptValue(&eng, 123)).isValid(), false);
{
QScriptValue fun = eng.evaluate("Object");
QVERIFY(fun.isFunction());
@@ -2548,76 +2854,74 @@ void tst_QScriptValue::call()
QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call() failed: cannot call function with argument created in a different engine");
fun.call(QScriptValue(), args);
}
+}
- // test that invalid return value is handled gracefully
- {
- QScriptValue fun = eng.newFunction(returnInvalidValue);
- eng.globalObject().setProperty("returnInvalidValue", fun);
- QScriptValue ret = eng.evaluate("returnInvalidValue() + returnInvalidValue()");
- QCOMPARE(ret.isValid(), true);
- QCOMPARE(ret.isNumber(), true);
- QCOMPARE(qIsNaN(ret.toNumber()), true);
- }
+void tst_QScriptValue::call_array()
+{
+ QScriptEngine eng;
+ QScriptValue fun = eng.evaluate("(function() { return arguments; })");
+ QVERIFY(fun.isFunction());
+ QScriptValue array = eng.newArray(3);
+ array.setProperty(0, QScriptValue(&eng, 123.0));
+ array.setProperty(1, QScriptValue(&eng, 456.0));
+ array.setProperty(2, QScriptValue(&eng, 789.0));
+ // call with single array object as arguments
+ QScriptValue ret = fun.call(QScriptValue(), array);
+ QVERIFY(!eng.hasUncaughtException());
+ QCOMPARE(ret.isError(), false);
+ QCOMPARE(ret.property(0).strictlyEquals(array.property(0)), true);
+ QCOMPARE(ret.property(1).strictlyEquals(array.property(1)), true);
+ QCOMPARE(ret.property(2).strictlyEquals(array.property(2)), true);
+ // call with arguments object as arguments
+ QScriptValue ret2 = fun.call(QScriptValue(), ret);
+ QCOMPARE(ret2.isError(), false);
+ QCOMPARE(ret2.property(0).strictlyEquals(ret.property(0)), true);
+ QCOMPARE(ret2.property(1).strictlyEquals(ret.property(1)), true);
+ QCOMPARE(ret2.property(2).strictlyEquals(ret.property(2)), true);
+ // call with null as arguments
+ QScriptValue ret3 = fun.call(QScriptValue(), eng.nullValue());
+ QCOMPARE(ret3.isError(), false);
+ QCOMPARE(ret3.property("length").isNumber(), true);
+ QCOMPARE(ret3.property("length").toNumber(), 0.0);
+ // call with undefined as arguments
+ QScriptValue ret4 = fun.call(QScriptValue(), eng.undefinedValue());
+ QCOMPARE(ret4.isError(), false);
+ QCOMPARE(ret4.property("length").isNumber(), true);
+ QCOMPARE(ret4.property("length").toNumber(), 0.0);
+ // call with something else as arguments
+ QScriptValue ret5 = fun.call(QScriptValue(), QScriptValue(&eng, 123.0));
+ QCOMPARE(ret5.isError(), true);
+ // call with a non-array object as arguments
+ QScriptValue ret6 = fun.call(QScriptValue(), eng.globalObject());
+ QVERIFY(ret6.isError());
+ QCOMPARE(ret6.toString(), QString::fromLatin1("TypeError: Arguments must be an array"));
+}
- {
- QScriptEngine otherEngine;
- QScriptValue fun = otherEngine.evaluate("(function() { return 1; })");
- QVERIFY(fun.isFunction());
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call() failed: "
- "cannot call function with thisObject created in "
- "a different engine");
- QCOMPARE(fun.call(Object).isValid(), false);
- QTest::ignoreMessage(QtWarningMsg, "QScriptValue::call() failed: "
- "cannot call function with argument created in "
- "a different engine");
- QCOMPARE(fun.call(QScriptValue(), QScriptValueList() << QScriptValue(&eng, 123)).isValid(), false);
- }
- {
- QScriptValue fun = eng.evaluate("(function() { return arguments; })");
- QVERIFY(fun.isFunction());
- QScriptValue array = eng.newArray(3);
- array.setProperty(0, QScriptValue(&eng, 123.0));
- array.setProperty(1, QScriptValue(&eng, 456.0));
- array.setProperty(2, QScriptValue(&eng, 789.0));
- // call with single array object as arguments
- QScriptValue ret = fun.call(QScriptValue(), array);
- QVERIFY(!eng.hasUncaughtException());
- QCOMPARE(ret.isError(), false);
- QCOMPARE(ret.property(0).strictlyEquals(array.property(0)), true);
- QCOMPARE(ret.property(1).strictlyEquals(array.property(1)), true);
- QCOMPARE(ret.property(2).strictlyEquals(array.property(2)), true);
- // call with arguments object as arguments
- QScriptValue ret2 = fun.call(QScriptValue(), ret);
- QCOMPARE(ret2.isError(), false);
- QCOMPARE(ret2.property(0).strictlyEquals(ret.property(0)), true);
- QCOMPARE(ret2.property(1).strictlyEquals(ret.property(1)), true);
- QCOMPARE(ret2.property(2).strictlyEquals(ret.property(2)), true);
- // call with null as arguments
- QScriptValue ret3 = fun.call(QScriptValue(), eng.nullValue());
- QCOMPARE(ret3.isError(), false);
- QCOMPARE(ret3.property("length").isNumber(), true);
- QCOMPARE(ret3.property("length").toNumber(), 0.0);
- // call with undefined as arguments
- QScriptValue ret4 = fun.call(QScriptValue(), eng.undefinedValue());
- QCOMPARE(ret4.isError(), false);
- QCOMPARE(ret4.property("length").isNumber(), true);
- QCOMPARE(ret4.property("length").toNumber(), 0.0);
- // call with something else as arguments
- QScriptValue ret5 = fun.call(QScriptValue(), QScriptValue(&eng, 123.0));
- QCOMPARE(ret5.isError(), true);
- // call with a non-array object as arguments
- QScriptValue ret6 = fun.call(QScriptValue(), eng.globalObject());
- QVERIFY(ret6.isError());
- QCOMPARE(ret6.toString(), QString::fromLatin1("TypeError: Arguments must be an array"));
- }
+void tst_QScriptValue::call_nonFunction_data()
+{
+ newEngine();
+ QTest::addColumn<QScriptValue>("value");
+
+ QTest::newRow("invalid") << QScriptValue();
+ QTest::newRow("bool") << QScriptValue(false);
+ QTest::newRow("int") << QScriptValue(123);
+ QTest::newRow("string") << QScriptValue(QString::fromLatin1("ciao"));
+ QTest::newRow("undefined") << QScriptValue(QScriptValue::UndefinedValue);
+ QTest::newRow("null") << QScriptValue(QScriptValue::NullValue);
+
+ QTest::newRow("bool bound") << QScriptValue(engine, false);
+ QTest::newRow("int bound") << QScriptValue(engine, 123);
+ QTest::newRow("string bound") << QScriptValue(engine, QString::fromLatin1("ciao"));
+ QTest::newRow("undefined bound") << engine->undefinedValue();
+ QTest::newRow("null bound") << engine->nullValue();
+}
+void tst_QScriptValue::call_nonFunction()
+{
// calling things that are not functions
- QVERIFY(!QScriptValue(false).call().isValid());
- QVERIFY(!QScriptValue(123).call().isValid());
- QVERIFY(!QScriptValue(QString::fromLatin1("ciao")).call().isValid());
- QVERIFY(!QScriptValue(QScriptValue::UndefinedValue).call().isValid());
- QVERIFY(!QScriptValue(QScriptValue::NullValue).call().isValid());
+ QFETCH(QScriptValue, value);
+ QVERIFY(!value.call().isValid());
}
static QScriptValue ctorReturningUndefined(QScriptContext *ctx, QScriptEngine *)
@@ -2756,7 +3060,32 @@ void tst_QScriptValue::construct()
QVERIFY(!QScriptValue(QScriptValue::NullValue).construct().isValid());
}
-void tst_QScriptValue::lessThan_old()
+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()
{
QScriptEngine eng;
@@ -2850,7 +3179,7 @@ void tst_QScriptValue::lessThan_old()
QCOMPARE(date1.lessThan(QScriptValue(&otherEngine, 123)), false);
}
-void tst_QScriptValue::equals_old()
+void tst_QScriptValue::equals()
{
QScriptEngine eng;
@@ -3043,7 +3372,7 @@ void tst_QScriptValue::equals_old()
QCOMPARE(date1.equals(QScriptValue(&otherEngine, 123)), false);
}
-void tst_QScriptValue::strictlyEquals_old()
+void tst_QScriptValue::strictlyEquals()
{
QScriptEngine eng;
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.h b/tests/auto/qscriptvalue/tst_qscriptvalue.h
index 8bfaa6a944..7bf0b66f18 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.h
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.h
@@ -49,8 +49,6 @@
#include <QtScript/qscriptvalue.h>
#include <QtTest/QtTest>
-#define DEFINE_TEST_VALUE(expr) m_values.insert(QString::fromLatin1(#expr), expr)
-
Q_DECLARE_METATYPE(QVariant)
Q_DECLARE_METATYPE(QScriptValue)
@@ -63,162 +61,102 @@ public:
virtual ~tst_QScriptValue();
private slots:
- // Generated test functions
- void isArray_data();
- void isArray();
-
- void isBool_data();
- void isBool();
+ void toObject();
- void isBoolean_data();
- void isBoolean();
+ void ctor_invalid();
+ void ctor_undefinedWithEngine();
+ void ctor_undefined();
+ void ctor_nullWithEngine();
+ void ctor_null();
+ void ctor_boolWithEngine();
+ void ctor_bool();
+ void ctor_intWithEngine();
+ void ctor_int();
+ void ctor_uintWithEngine();
+ void ctor_uint();
+ void ctor_floatWithEngine();
+ void ctor_float();
+ void ctor_stringWithEngine();
+ void ctor_string();
+ void ctor_copyAndAssignWithEngine();
+ void ctor_copyAndAssign();
+ void ctor_nullEngine();
- void isDate_data();
+ void toString();
+ void toNumber();
+ void toBoolean();
+ void toBool();
+ void toInteger();
+ void toInt32();
+ void toUInt32();
+ void toUInt16();
+ void toVariant();
+ void toQObject();
+ void toDateTime();
+ void toRegExp();
+ void instanceOf_twoEngines();
+ void instanceOf();
+ void isArray_data();
+ void isArray();
void isDate();
-
+ void isDate_data();
+ void isError_propertiesOfGlobalObject();
void isError_data();
void isError();
-
- void isFunction_data();
- void isFunction();
-
- void isNull_data();
- void isNull();
-
- void isNumber_data();
- void isNumber();
-
- void isObject_data();
- void isObject();
-
- void isQMetaObject_data();
- void isQMetaObject();
-
- void isQObject_data();
- void isQObject();
-
void isRegExp_data();
void isRegExp();
- void isString_data();
- void isString();
-
- void isUndefined_data();
- void isUndefined();
-
- void isValid_data();
- void isValid();
-
- void isVariant_data();
- void isVariant();
-
- void toBool_data();
- void toBool();
-
- void toBoolean_data();
- void toBoolean();
-
-// void toDateTime_data();
-// void toDateTime();
-
- void toInt32_data();
- void toInt32();
-
- void toInteger_data();
- void toInteger();
-
- void toNumber_data();
- void toNumber();
-
-// void toQMetaObject_data();
-// void toQMetaObject();
-
-// void toQObject_data();
-// void toQObject();
-
-// void toRegExp_data();
-// void toRegExp();
-
- void toString_data();
- void toString();
-
- void toUInt16_data();
- void toUInt16();
-
- void toUInt32_data();
- void toUInt32();
-
-// void toVariant_data();
-// void toVariant();
-
- void equals_data();
+ void lessThan();
void equals();
-
- void strictlyEquals_data();
void strictlyEquals();
- void lessThan_data();
- void lessThan();
-
- void instanceOf_data();
- void instanceOf();
-
- void assignAndCopyConstruct_data();
- void assignAndCopyConstruct();
-
- void qscriptvalue_castQString_data();
- void qscriptvalue_castQString();
-
- void qscriptvalue_castqsreal_data();
- void qscriptvalue_castqsreal();
-
- void qscriptvalue_castbool_data();
- void qscriptvalue_castbool();
-
- void qscriptvalue_castqint32_data();
- void qscriptvalue_castqint32();
-
- void qscriptvalue_castquint32_data();
- void qscriptvalue_castquint32();
-
- void qscriptvalue_castquint16_data();
- void qscriptvalue_castquint16();
-
- // Non-generated test functions
-
- void toObject();
- void ctor();
-
- void toString_old();
- void toNumber_old();
- void toBoolean_old();
- void toBool_old();
- void toInteger_old();
- void toInt32_old();
- void toUInt32_old();
- void toUInt16_old();
- void toVariant_old();
- void toQObject_old();
- void toDateTime_old();
- void toRegExp_old();
- void instanceOf_old();
- void isArray_old();
- void isDate_old();
- void isError_old();
- void isRegExp_old();
-
- void lessThan_old();
- void equals_old();
- void strictlyEquals_old();
-
+ void getSetPrototype_cyclicPrototype();
+ void getSetPrototype_evalCyclicPrototype();
+ void getSetPrototype_eval();
+ void getSetPrototype_invalidPrototype();
+ void getSetPrototype_twoEngines();
+ void getSetPrototype_null();
+ void getSetPrototype_notObjectOrNull();
void getSetPrototype();
void getSetScope();
+ void getSetProperty_HooliganTask162051();
+ void getSetProperty_HooliganTask183072();
+ void getSetProperty_propertyRemoval();
+ void getSetProperty_resolveMode();
+ void getSetProperty_twoEngines();
+ void getSetProperty_gettersAndSetters();
+ void getSetProperty_gettersAndSettersThrowError();
+ void getSetProperty_gettersAndSettersOnNative();
+ void getSetProperty_gettersAndSettersOnGlobalObject();
+ void getSetProperty_gettersAndSettersChange();
+ void getSetProperty_array();
void getSetProperty();
void arrayElementGetterSetter();
- void getSetData();
- void getSetScriptClass();
+ void getSetData_objects_data();
+ void getSetData_objects();
+ void getSetData_nonObjects_data();
+ void getSetData_nonObjects();
+ void setData_QTBUG15144();
+ void getSetScriptClass_emptyClass_data();
+ void getSetScriptClass_emptyClass();
+ void getSetScriptClass_JSObjectFromCpp();
+ void getSetScriptClass_JSObjectFromJS();
+ void getSetScriptClass_QVariant();
+ void getSetScriptClass_QObject();
+ void call_function();
+ void call_object();
+ void call_newObjects();
+ void call_this();
+ void call_arguments();
void call();
+ void call_invalidArguments();
+ void call_invalidReturn();
+ void call_twoEngines();
+ void call_array();
+ void call_nonFunction_data();
+ void call_nonFunction();
void construct();
+ void construct_constructorThrowsPrimitive();
void castToPointer();
void prettyPrinter_data();
void prettyPrinter();
@@ -228,187 +166,15 @@ private slots:
void nestedObjectToVariant_data();
void nestedObjectToVariant();
-private:
- typedef void (tst_QScriptValue::*InitDataFunction)();
- typedef void (tst_QScriptValue::*DefineDataFunction)(const char *);
- void dataHelper(InitDataFunction init, DefineDataFunction define);
- QTestData &newRow(const char *tag);
-
- typedef void (tst_QScriptValue::*TestFunction)(const char *, const QScriptValue &);
- void testHelper(TestFunction fun);
-
- // Generated functions
-
- void initScriptValues();
-
- void isArray_initData();
- void isArray_makeData(const char *expr);
- void isArray_test(const char *expr, const QScriptValue &value);
-
- void isBool_initData();
- void isBool_makeData(const char *expr);
- void isBool_test(const char *expr, const QScriptValue &value);
-
- void isBoolean_initData();
- void isBoolean_makeData(const char *expr);
- void isBoolean_test(const char *expr, const QScriptValue &value);
-
- void isDate_initData();
- void isDate_makeData(const char *expr);
- void isDate_test(const char *expr, const QScriptValue &value);
-
- void isError_initData();
- void isError_makeData(const char *expr);
- void isError_test(const char *expr, const QScriptValue &value);
-
- void isFunction_initData();
- void isFunction_makeData(const char *expr);
- void isFunction_test(const char *expr, const QScriptValue &value);
-
- void isNull_initData();
- void isNull_makeData(const char *expr);
- void isNull_test(const char *expr, const QScriptValue &value);
-
- void isNumber_initData();
- void isNumber_makeData(const char *expr);
- void isNumber_test(const char *expr, const QScriptValue &value);
-
- void isObject_initData();
- void isObject_makeData(const char *expr);
- void isObject_test(const char *expr, const QScriptValue &value);
-
- void isQMetaObject_initData();
- void isQMetaObject_makeData(const char *expr);
- void isQMetaObject_test(const char *expr, const QScriptValue &value);
-
- void isQObject_initData();
- void isQObject_makeData(const char *expr);
- void isQObject_test(const char *expr, const QScriptValue &value);
-
- void isRegExp_initData();
- void isRegExp_makeData(const char *expr);
- void isRegExp_test(const char *expr, const QScriptValue &value);
-
- void isString_initData();
- void isString_makeData(const char *expr);
- void isString_test(const char *expr, const QScriptValue &value);
-
- void isUndefined_initData();
- void isUndefined_makeData(const char *expr);
- void isUndefined_test(const char *expr, const QScriptValue &value);
-
- void isValid_initData();
- void isValid_makeData(const char *expr);
- void isValid_test(const char *expr, const QScriptValue &value);
-
- void isVariant_initData();
- void isVariant_makeData(const char *expr);
- void isVariant_test(const char *expr, const QScriptValue &value);
-
- void toBool_initData();
- void toBool_makeData(const char *);
- void toBool_test(const char *, const QScriptValue &value);
-
- void toBoolean_initData();
- void toBoolean_makeData(const char *);
- void toBoolean_test(const char *, const QScriptValue &value);
-
- void toDateTime_initData();
- void toDateTime_makeData(const char *);
- void toDateTime_test(const char *, const QScriptValue &value);
-
- void toInt32_initData();
- void toInt32_makeData(const char *);
- void toInt32_test(const char *, const QScriptValue &value);
-
- void toInteger_initData();
- void toInteger_makeData(const char *);
- void toInteger_test(const char *, const QScriptValue &value);
-
- void toNumber_initData();
- void toNumber_makeData(const char *);
- void toNumber_test(const char *, const QScriptValue &value);
-
- void toQMetaObject_initData();
- void toQMetaObject_makeData(const char *);
- void toQMetaObject_test(const char *, const QScriptValue &value);
-
- void toQObject_initData();
- void toQObject_makeData(const char *);
- void toQObject_test(const char *, const QScriptValue &value);
-
- void toRegExp_initData();
- void toRegExp_makeData(const char *);
- void toRegExp_test(const char *, const QScriptValue &value);
-
- void toString_initData();
- void toString_makeData(const char *);
- void toString_test(const char *, const QScriptValue &value);
-
- void toUInt16_initData();
- void toUInt16_makeData(const char *);
- void toUInt16_test(const char *, const QScriptValue &value);
-
- void toUInt32_initData();
- void toUInt32_makeData(const char *);
- void toUInt32_test(const char *, const QScriptValue &value);
-
- void toVariant_initData();
- void toVariant_makeData(const char *);
- void toVariant_test(const char *, const QScriptValue &value);
-
- void equals_initData();
- void equals_makeData(const char *);
- void equals_test(const char *, const QScriptValue &value);
-
- void strictlyEquals_initData();
- void strictlyEquals_makeData(const char *);
- void strictlyEquals_test(const char *, const QScriptValue &value);
-
- void lessThan_initData();
- void lessThan_makeData(const char *);
- void lessThan_test(const char *, const QScriptValue &value);
-
- void instanceOf_initData();
- void instanceOf_makeData(const char *);
- void instanceOf_test(const char *, const QScriptValue &value);
-
- void assignAndCopyConstruct_initData();
- void assignAndCopyConstruct_makeData(const char *);
- void assignAndCopyConstruct_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castQString_initData();
- void qscriptvalue_castQString_makeData(const char *);
- void qscriptvalue_castQString_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castqsreal_initData();
- void qscriptvalue_castqsreal_makeData(const char *);
- void qscriptvalue_castqsreal_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castbool_initData();
- void qscriptvalue_castbool_makeData(const char *);
- void qscriptvalue_castbool_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castqint32_initData();
- void qscriptvalue_castqint32_makeData(const char *);
- void qscriptvalue_castqint32_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castquint32_initData();
- void qscriptvalue_castquint32_makeData(const char *);
- void qscriptvalue_castquint32_test(const char *, const QScriptValue &value);
-
- void qscriptvalue_castquint16_initData();
- void qscriptvalue_castquint16_makeData(const char *);
- void qscriptvalue_castquint16_test(const char *, const QScriptValue &value);
private:
+ void newEngine()
+ {
+ if (engine)
+ delete engine;
+ engine = new QScriptEngine();
+ }
QScriptEngine *engine;
- QHash<QString, QScriptValue> m_values;
- QString m_currentExpression;
};
-#define DEFINE_TEST_FUNCTION(name) \
-void tst_QScriptValue::name##_data() { dataHelper(&tst_QScriptValue::name##_initData, &tst_QScriptValue::name##_makeData); } \
-void tst_QScriptValue::name() { testHelper(&tst_QScriptValue::name##_test); }
-
#endif
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_cast.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_cast.cpp
deleted file mode 100644
index e6518100bc..0000000000
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_cast.cpp
+++ /dev/null
@@ -1,1453 +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 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-*************** This file has been generated. DO NOT MODIFY! ****************
-****************************************************************************/
-
-#include "tst_qscriptvalue.h"
-
-
-
-void tst_QScriptValue::qscriptvalue_castQString_initData()
-{
- QTest::addColumn<QString>("expected");
- initScriptValues();
-}
-
-static QString qscriptvalue_castQString_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static QString qscriptvalue_castQString_valueArray [] = {
- "", "",
- "", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.4", "",
- "", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.3", "",
- "", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "1.23", "",
- "", "[object Object]",
- "Invalid Date", "",
- "function () {\n [native code]\n}", "Error: Unknown error",
- "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
- "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
- "function () { return 1; }", "function () { return 'ciao'; }",
- "function () { throw new Error('foo'); }", "/foo/",
- "[object Object]", "",
- "Error: Unknown error", "22",
- "ReferenceError: Can't find variable: Undefined", "ReferenceError: Can't find variable: Null",
- "ReferenceError: Can't find variable: True", "ReferenceError: Can't find variable: False",
- "", "",
- "true", "false",
- "122", "124",
- "0", "0",
- "123", "6.37e-8",
- "-6.37e-8", "1126240820",
- "65536", "65537",
- "NaN", "Infinity",
- "-Infinity", "ciao",
- "", "0",
- "123", "12.4",
- "", "",
- "[object Object]", "",
- ",,,,,,,,,", "Invalid Date",
- "[object QMetaObject]", "undefined",
- "123", "false",
- "", "QScriptEngine(name = \"\")", };
-void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr)
-{
- static QHash<QString, QString> value;
- if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- value.insert(qscriptvalue_castQString_tagArray[i], qscriptvalue_castQString_valueArray[i]);
- }
- newRow(expr) << value.value(expr);
-}
-
-void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptValue& value)
-{
- QFETCH(QString, expected);
- QCOMPARE(qscriptvalue_cast<QString>(value), expected);
- QCOMPARE(qscriptvalue_cast<QString>(value), expected);
-}
-
-DEFINE_TEST_FUNCTION(qscriptvalue_castQString)
-
-
-void tst_QScriptValue::qscriptvalue_castqsreal_initData()
-{
- QTest::addColumn<qsreal>("expected");
- initScriptValues();
-}
-
-static QString qscriptvalue_castqsreal_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qsreal qscriptvalue_castqsreal_valueArray [] = {
- 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
- 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
- qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
- 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
- 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
- qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
- 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
- 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
- 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
- qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
- qQNaN(), 0, qQNaN(), 22, qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0,
- 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820,
- 65536, 65537, qQNaN(), qInf(), qInf(), qQNaN(), 0, 0, 123, 12.4,
- 0, qQNaN(), qQNaN(), 0, qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0,
- 0, qQNaN(), };
-void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr)
-{
- static QHash<QString, qsreal> value;
- if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- value.insert(qscriptvalue_castqsreal_tagArray[i], qscriptvalue_castqsreal_valueArray[i]);
- }
- newRow(expr) << value.value(expr);
-}
-
-void tst_QScriptValue::qscriptvalue_castqsreal_test(const char*, const QScriptValue& value)
-{
- QFETCH(qsreal, expected);
- if (qIsNaN(expected)) {
- QVERIFY(qIsNaN(qscriptvalue_cast<qsreal>(value)));
- QVERIFY(qIsNaN(qscriptvalue_cast<qsreal>(value)));
- return;
- }
- if (qIsInf(expected)) {
- QVERIFY(qIsInf(qscriptvalue_cast<qsreal>(value)));
- QVERIFY(qIsInf(qscriptvalue_cast<qsreal>(value)));
- return;
- }
- QCOMPARE(qscriptvalue_cast<qsreal>(value), expected);
- QCOMPARE(qscriptvalue_cast<qsreal>(value), expected);
-}
-
-DEFINE_TEST_FUNCTION(qscriptvalue_castqsreal)
-
-
-void tst_QScriptValue::qscriptvalue_castbool_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString qscriptvalue_castbool_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static bool qscriptvalue_castbool_valueArray [] = {
- false, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, true,
- false, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, false,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- false, true,
- true, true,
- false, true,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- true, true,
- false, true, };
-void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr)
-{
- static QHash<QString, bool> value;
- if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- value.insert(qscriptvalue_castbool_tagArray[i], qscriptvalue_castbool_valueArray[i]);
- }
- newRow(expr) << value.value(expr);
-}
-
-void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(qscriptvalue_cast<bool>(value), expected);
- QCOMPARE(qscriptvalue_cast<bool>(value), expected);
-}
-
-DEFINE_TEST_FUNCTION(qscriptvalue_castbool)
-
-
-void tst_QScriptValue::qscriptvalue_castqint32_initData()
-{
- QTest::addColumn<qint32>("expected");
- initScriptValues();
-}
-
-static QString qscriptvalue_castqint32_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qint32 qscriptvalue_castqint32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
-void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr)
-{
- static QHash<QString, qint32> value;
- if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- value.insert(qscriptvalue_castqint32_tagArray[i], qscriptvalue_castqint32_valueArray[i]);
- }
- newRow(expr) << value.value(expr);
-}
-
-void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptValue& value)
-{
- QFETCH(qint32, expected);
- QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
- QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
-}
-
-DEFINE_TEST_FUNCTION(qscriptvalue_castqint32)
-
-
-void tst_QScriptValue::qscriptvalue_castquint32_initData()
-{
- QTest::addColumn<quint32>("expected");
- initScriptValues();
-}
-
-static QString qscriptvalue_castquint32_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static quint32 qscriptvalue_castquint32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
-void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr)
-{
- static QHash<QString, quint32> value;
- if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- value.insert(qscriptvalue_castquint32_tagArray[i], qscriptvalue_castquint32_valueArray[i]);
- }
- newRow(expr) << value.value(expr);
-}
-
-void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptValue& value)
-{
- QFETCH(quint32, expected);
- QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
- QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
-}
-
-DEFINE_TEST_FUNCTION(qscriptvalue_castquint32)
-
-
-void tst_QScriptValue::qscriptvalue_castquint16_initData()
-{
- QTest::addColumn<quint16>("expected");
- initScriptValues();
-}
-
-static QString qscriptvalue_castquint16_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static quint16 qscriptvalue_castquint16_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 4660,
- 0, 1,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
-void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr)
-{
- static QHash<QString, quint16> value;
- if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- value.insert(qscriptvalue_castquint16_tagArray[i], qscriptvalue_castquint16_valueArray[i]);
- }
- newRow(expr) << value.value(expr);
-}
-
-void tst_QScriptValue::qscriptvalue_castquint16_test(const char*, const QScriptValue& value)
-{
- QFETCH(quint16, expected);
- QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
- QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
-}
-
-DEFINE_TEST_FUNCTION(qscriptvalue_castquint16)
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp
deleted file mode 100644
index 6e1f8ee8db..0000000000
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp
+++ /dev/null
@@ -1,7026 +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 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-*************** This file has been generated. DO NOT MODIFY! ****************
-****************************************************************************/
-
-#include "tst_qscriptvalue.h"
-
-
-
-void tst_QScriptValue::equals_initData()
-{
- QTest::addColumn<QScriptValue>("other");
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString equals_array [] = {
- "QScriptValue() <=> QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
- "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
- "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")",
- "QScriptValue(QScriptValue::UndefinedValue) <=> engine->nullValue()",
- "QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
- "QScriptValue(QScriptValue::UndefinedValue) <=> engine->newQObject(0)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"{}\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()",
- "QScriptValue(QScriptValue::NullValue) <=> engine->undefinedValue()",
- "QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)",
- "QScriptValue(true) <=> QScriptValue(true)",
- "QScriptValue(true) <=> QScriptValue(0, true)",
- "QScriptValue(true) <=> QScriptValue(engine, true)",
- "QScriptValue(true) <=> engine->evaluate(\"true\")",
- "QScriptValue(false) <=> QScriptValue(false)",
- "QScriptValue(false) <=> QScriptValue(0)",
- "QScriptValue(false) <=> QScriptValue(0.0)",
- "QScriptValue(false) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(false) <=> QScriptValue(QString())",
- "QScriptValue(false) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(false) <=> QScriptValue(0, false)",
- "QScriptValue(false) <=> QScriptValue(0, 0)",
- "QScriptValue(false) <=> QScriptValue(0, 0.0)",
- "QScriptValue(false) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(false) <=> QScriptValue(0, QString())",
- "QScriptValue(false) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(false) <=> QScriptValue(engine, false)",
- "QScriptValue(false) <=> QScriptValue(engine, 0)",
- "QScriptValue(false) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(false) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(false) <=> QScriptValue(engine, QString())",
- "QScriptValue(false) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(false) <=> engine->evaluate(\"[]\")",
- "QScriptValue(false) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(false) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(false) <=> engine->evaluate(\"false\")",
- "QScriptValue(false) <=> engine->evaluate(\"0\")",
- "QScriptValue(false) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(false) <=> engine->evaluate(\"''\")",
- "QScriptValue(false) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(false) <=> engine->newArray()",
- "QScriptValue(false) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(int(122)) <=> QScriptValue(int(122))",
- "QScriptValue(int(122)) <=> QScriptValue(0, int(122))",
- "QScriptValue(int(122)) <=> QScriptValue(engine, int(122))",
- "QScriptValue(int(122)) <=> engine->evaluate(\"122\")",
- "QScriptValue(uint(124)) <=> QScriptValue(uint(124))",
- "QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))",
- "QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(uint(124)) <=> engine->evaluate(\"124\")",
- "QScriptValue(0) <=> QScriptValue(false)",
- "QScriptValue(0) <=> QScriptValue(0)",
- "QScriptValue(0) <=> QScriptValue(0.0)",
- "QScriptValue(0) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(0) <=> QScriptValue(QString())",
- "QScriptValue(0) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0) <=> QScriptValue(0, false)",
- "QScriptValue(0) <=> QScriptValue(0, 0)",
- "QScriptValue(0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(0) <=> QScriptValue(0, QString())",
- "QScriptValue(0) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0) <=> QScriptValue(engine, false)",
- "QScriptValue(0) <=> QScriptValue(engine, 0)",
- "QScriptValue(0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(0) <=> QScriptValue(engine, QString())",
- "QScriptValue(0) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0) <=> engine->evaluate(\"[]\")",
- "QScriptValue(0) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(0) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(0) <=> engine->evaluate(\"false\")",
- "QScriptValue(0) <=> engine->evaluate(\"0\")",
- "QScriptValue(0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0) <=> engine->evaluate(\"''\")",
- "QScriptValue(0) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0) <=> engine->newArray()",
- "QScriptValue(0) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(0.0) <=> QScriptValue(false)",
- "QScriptValue(0.0) <=> QScriptValue(0)",
- "QScriptValue(0.0) <=> QScriptValue(0.0)",
- "QScriptValue(0.0) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(0.0) <=> QScriptValue(QString())",
- "QScriptValue(0.0) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0.0) <=> QScriptValue(0, false)",
- "QScriptValue(0.0) <=> QScriptValue(0, 0)",
- "QScriptValue(0.0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0.0) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(0.0) <=> QScriptValue(0, QString())",
- "QScriptValue(0.0) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0.0) <=> QScriptValue(engine, false)",
- "QScriptValue(0.0) <=> QScriptValue(engine, 0)",
- "QScriptValue(0.0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(0.0) <=> QScriptValue(engine, QString())",
- "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0.0) <=> engine->evaluate(\"[]\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"false\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"0\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"''\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0.0) <=> engine->newArray()",
- "QScriptValue(0.0) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(123.0) <=> QScriptValue(123.0)",
- "QScriptValue(123.0) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(123.0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(123.0) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(123.0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(123.0) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(123.0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(123.0) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(123.0) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(0x43211234) <=> QScriptValue(0x43211234)",
- "QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0x43211234) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0x10000) <=> QScriptValue(0x10000)",
- "QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0x10001) <=> QScriptValue(0x10001)",
- "QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0x10001) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(qInf()) <=> QScriptValue(qInf())",
- "QScriptValue(qInf()) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(qInf()) <=> QScriptValue(0, qInf())",
- "QScriptValue(qInf()) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(qInf()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(qInf()) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(qInf()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(-qInf()) <=> QScriptValue(-qInf())",
- "QScriptValue(-qInf()) <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())",
- "QScriptValue(-qInf()) <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"-Infinity\")",
- "QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(qInf())",
- "QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(0, qInf())",
- "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(engine, qInf())",
- "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(-qInf())",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, -qInf())",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -qInf())",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")",
- "QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(false)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0.0)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(QString())",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, false)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0.0)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, false)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"[]\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"false\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")",
- "QScriptValue(QString(\"\")) <=> engine->newArray()",
- "QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(QString()) <=> QScriptValue(false)",
- "QScriptValue(QString()) <=> QScriptValue(0)",
- "QScriptValue(QString()) <=> QScriptValue(0.0)",
- "QScriptValue(QString()) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(QString()) <=> QScriptValue(QString())",
- "QScriptValue(QString()) <=> QScriptValue(0, false)",
- "QScriptValue(QString()) <=> QScriptValue(0, 0)",
- "QScriptValue(QString()) <=> QScriptValue(0, 0.0)",
- "QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(QString()) <=> QScriptValue(0, QString())",
- "QScriptValue(QString()) <=> QScriptValue(engine, false)",
- "QScriptValue(QString()) <=> QScriptValue(engine, 0)",
- "QScriptValue(QString()) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(QString()) <=> QScriptValue(engine, QString())",
- "QScriptValue(QString()) <=> engine->evaluate(\"[]\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"false\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"0\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"''\")",
- "QScriptValue(QString()) <=> engine->newArray()",
- "QScriptValue(QString()) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(false)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0.0)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, false)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0.0)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, false)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"false\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(123.0)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(QString(\"123\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->nullValue()",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->newQObject(0)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->undefinedValue()",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)",
- "QScriptValue(0, true) <=> QScriptValue(true)",
- "QScriptValue(0, true) <=> QScriptValue(0, true)",
- "QScriptValue(0, true) <=> QScriptValue(engine, true)",
- "QScriptValue(0, true) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, false) <=> QScriptValue(false)",
- "QScriptValue(0, false) <=> QScriptValue(0)",
- "QScriptValue(0, false) <=> QScriptValue(0.0)",
- "QScriptValue(0, false) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(0, false) <=> QScriptValue(QString())",
- "QScriptValue(0, false) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0, false) <=> QScriptValue(0, false)",
- "QScriptValue(0, false) <=> QScriptValue(0, 0)",
- "QScriptValue(0, false) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0, false) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, false) <=> QScriptValue(0, QString())",
- "QScriptValue(0, false) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, false) <=> QScriptValue(engine, false)",
- "QScriptValue(0, false) <=> QScriptValue(engine, 0)",
- "QScriptValue(0, false) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(0, false) <=> QScriptValue(engine, QString())",
- "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0, false) <=> engine->evaluate(\"[]\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"false\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"0\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"''\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0, false) <=> engine->newArray()",
- "QScriptValue(0, false) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(0, int(122)) <=> QScriptValue(int(122))",
- "QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, int(122)) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))",
- "QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, uint(124)) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, 0) <=> QScriptValue(false)",
- "QScriptValue(0, 0) <=> QScriptValue(0)",
- "QScriptValue(0, 0) <=> QScriptValue(0.0)",
- "QScriptValue(0, 0) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(0, 0) <=> QScriptValue(QString())",
- "QScriptValue(0, 0) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0, 0) <=> QScriptValue(0, false)",
- "QScriptValue(0, 0) <=> QScriptValue(0, 0)",
- "QScriptValue(0, 0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, 0) <=> QScriptValue(0, QString())",
- "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, 0) <=> QScriptValue(engine, false)",
- "QScriptValue(0, 0) <=> QScriptValue(engine, 0)",
- "QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(0, 0) <=> QScriptValue(engine, QString())",
- "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0, 0) <=> engine->evaluate(\"[]\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"false\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"0\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"''\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0, 0) <=> engine->newArray()",
- "QScriptValue(0, 0) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(0, 0.0) <=> QScriptValue(false)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0.0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(0, 0.0) <=> QScriptValue(QString())",
- "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, false)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, 0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, QString())",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, false)",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString())",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"[]\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"false\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"''\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0, 0.0) <=> engine->newArray()",
- "QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(0, 123.0) <=> QScriptValue(123.0)",
- "QScriptValue(0, 123.0) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, 123.0) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, 123.0) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, 123.0) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, 123.0) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, 0x43211234) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)",
- "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)",
- "QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, qInf()) <=> QScriptValue(qInf())",
- "QScriptValue(0, qInf()) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, qInf()) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, qInf()) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, qInf()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())",
- "QScriptValue(0, -qInf()) <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"-Infinity\")",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(qInf())",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, qInf())",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(-qInf())",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -qInf())",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -qInf())",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-Infinity\")",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(false)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0.0)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, false)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, false)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"[]\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"false\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")",
- "QScriptValue(0, QString(\"\")) <=> engine->newArray()",
- "QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(0, QString()) <=> QScriptValue(false)",
- "QScriptValue(0, QString()) <=> QScriptValue(0)",
- "QScriptValue(0, QString()) <=> QScriptValue(0.0)",
- "QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(QString())",
- "QScriptValue(0, QString()) <=> QScriptValue(0, false)",
- "QScriptValue(0, QString()) <=> QScriptValue(0, 0)",
- "QScriptValue(0, QString()) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(0, QString())",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, false)",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, 0)",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, QString())",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"[]\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"false\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"0\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"''\")",
- "QScriptValue(0, QString()) <=> engine->newArray()",
- "QScriptValue(0, QString()) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(false)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0.0)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, false)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, false)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"false\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(123.0)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->nullValue()",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->newQObject(0)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->undefinedValue()",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)",
- "QScriptValue(engine, true) <=> QScriptValue(true)",
- "QScriptValue(engine, true) <=> QScriptValue(0, true)",
- "QScriptValue(engine, true) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, true) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, false) <=> QScriptValue(false)",
- "QScriptValue(engine, false) <=> QScriptValue(0)",
- "QScriptValue(engine, false) <=> QScriptValue(0.0)",
- "QScriptValue(engine, false) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(engine, false) <=> QScriptValue(QString())",
- "QScriptValue(engine, false) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(engine, false) <=> QScriptValue(0, false)",
- "QScriptValue(engine, false) <=> QScriptValue(0, 0)",
- "QScriptValue(engine, false) <=> QScriptValue(0, 0.0)",
- "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(engine, false) <=> QScriptValue(0, QString())",
- "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(engine, false) <=> QScriptValue(engine, false)",
- "QScriptValue(engine, false) <=> QScriptValue(engine, 0)",
- "QScriptValue(engine, false) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, false) <=> QScriptValue(engine, QString())",
- "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, false) <=> engine->evaluate(\"[]\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"false\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"0\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"''\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(engine, false) <=> engine->newArray()",
- "QScriptValue(engine, false) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(engine, int(122)) <=> QScriptValue(int(122))",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, int(122)) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, 0) <=> QScriptValue(false)",
- "QScriptValue(engine, 0) <=> QScriptValue(0)",
- "QScriptValue(engine, 0) <=> QScriptValue(0.0)",
- "QScriptValue(engine, 0) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(engine, 0) <=> QScriptValue(QString())",
- "QScriptValue(engine, 0) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(engine, 0) <=> QScriptValue(0, false)",
- "QScriptValue(engine, 0) <=> QScriptValue(0, 0)",
- "QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(engine, 0) <=> QScriptValue(0, QString())",
- "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, false)",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, 0)",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, QString())",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"[]\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"false\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"0\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"''\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(engine, 0) <=> engine->newArray()",
- "QScriptValue(engine, 0) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(false)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0.0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(QString())",
- "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, false)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString())",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, false)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString())",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"[]\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"false\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"''\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(engine, 0.0) <=> engine->newArray()",
- "QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(engine, 123.0) <=> QScriptValue(123.0)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, 123.0) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, 123.0) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, qInf()) <=> QScriptValue(qInf())",
- "QScriptValue(engine, qInf()) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, qInf()) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, qInf()) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, qInf()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-Infinity\")",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(qInf())",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-qInf())",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -qInf())",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-Infinity\")",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(false)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0.0)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, false)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0.0)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, false)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"[]\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"false\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->newArray()",
- "QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(engine, QString()) <=> QScriptValue(false)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0.0)",
- "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(QString())",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, false)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, 0)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, 0.0)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, QString())",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, false)",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0)",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"[]\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"false\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"0\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")",
- "QScriptValue(engine, QString()) <=> engine->newArray()",
- "QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(false)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0.0)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, false)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0.0)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, false)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"false\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(123.0)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(false)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(QString())",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, false)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, QString())",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, false)",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString())",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"false\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"''\")",
- "engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)",
- "engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::NullValue)",
- "engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::NullValue)",
- "engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::NullValue)",
- "engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")",
- "engine->evaluate(\"{}\") <=> engine->evaluate(\"undefined\")",
- "engine->evaluate(\"{}\") <=> engine->evaluate(\"null\")",
- "engine->evaluate(\"{}\") <=> engine->nullValue()",
- "engine->evaluate(\"{}\") <=> engine->undefinedValue()",
- "engine->evaluate(\"{}\") <=> engine->newQObject(0)",
- "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(false)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString())",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, false)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString())",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, false)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString())",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"false\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"''\")",
- "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(false)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(QString())",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, false)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString())",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, false)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString())",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"false\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"''\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)",
- "engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::NullValue)",
- "engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::NullValue)",
- "engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::NullValue)",
- "engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")",
- "engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")",
- "engine->evaluate(\"undefined\") <=> engine->evaluate(\"null\")",
- "engine->evaluate(\"undefined\") <=> engine->nullValue()",
- "engine->evaluate(\"undefined\") <=> engine->undefinedValue()",
- "engine->evaluate(\"undefined\") <=> engine->newQObject(0)",
- "engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::UndefinedValue)",
- "engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)",
- "engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"{}\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"null\")",
- "engine->evaluate(\"null\") <=> engine->nullValue()",
- "engine->evaluate(\"null\") <=> engine->undefinedValue()",
- "engine->evaluate(\"null\") <=> engine->newQObject(0)",
- "engine->evaluate(\"true\") <=> QScriptValue(true)",
- "engine->evaluate(\"true\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"false\") <=> QScriptValue(false)",
- "engine->evaluate(\"false\") <=> QScriptValue(0)",
- "engine->evaluate(\"false\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"false\") <=> QScriptValue(QString(\"\"))",
- "engine->evaluate(\"false\") <=> QScriptValue(QString())",
- "engine->evaluate(\"false\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"false\") <=> QScriptValue(0, false)",
- "engine->evaluate(\"false\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"false\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"\"))",
- "engine->evaluate(\"false\") <=> QScriptValue(0, QString())",
- "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, false)",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"\"))",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, QString())",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"[]\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"false\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"''\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"false\") <=> engine->newArray()",
- "engine->evaluate(\"false\") <=> engine->newVariant(QVariant(false))",
- "engine->evaluate(\"122\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"122\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"122\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"124\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"124\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"0\") <=> QScriptValue(false)",
- "engine->evaluate(\"0\") <=> QScriptValue(0)",
- "engine->evaluate(\"0\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"0\") <=> QScriptValue(QString(\"\"))",
- "engine->evaluate(\"0\") <=> QScriptValue(QString())",
- "engine->evaluate(\"0\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"0\") <=> QScriptValue(0, false)",
- "engine->evaluate(\"0\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"\"))",
- "engine->evaluate(\"0\") <=> QScriptValue(0, QString())",
- "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, false)",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"\"))",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, QString())",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"[]\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"false\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"''\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"0\") <=> engine->newArray()",
- "engine->evaluate(\"0\") <=> engine->newVariant(QVariant(false))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(false)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"\"))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(QString())",
- "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, false)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"\"))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString())",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, false)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"\"))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString())",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"[]\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"false\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"''\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"0.0\") <=> engine->newArray()",
- "engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(false))",
- "engine->evaluate(\"123.0\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"123.0\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"123.0\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"Infinity\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"Infinity\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(\"-Infinity\")",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\") <=> QScriptValue(false)",
- "engine->evaluate(\"''\") <=> QScriptValue(0)",
- "engine->evaluate(\"''\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(QString())",
- "engine->evaluate(\"''\") <=> QScriptValue(0, false)",
- "engine->evaluate(\"''\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"''\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(0, QString())",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, false)",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, QString())",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"[]\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"false\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"''\")",
- "engine->evaluate(\"''\") <=> engine->newArray()",
- "engine->evaluate(\"''\") <=> engine->newVariant(QVariant(false))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(false)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, false)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, false)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"false\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(false))",
- "engine->evaluate(\"'123'\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'123'\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")",
- "engine->nullValue() <=> QScriptValue(QScriptValue::UndefinedValue)",
- "engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)",
- "engine->nullValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)",
- "engine->nullValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)",
- "engine->nullValue() <=> engine->evaluate(\"{}\")",
- "engine->nullValue() <=> engine->evaluate(\"undefined\")",
- "engine->nullValue() <=> engine->evaluate(\"null\")",
- "engine->nullValue() <=> engine->nullValue()",
- "engine->nullValue() <=> engine->undefinedValue()",
- "engine->nullValue() <=> engine->newQObject(0)",
- "engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)",
- "engine->undefinedValue() <=> QScriptValue(QScriptValue::NullValue)",
- "engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "engine->undefinedValue() <=> QScriptValue(0, QScriptValue::NullValue)",
- "engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::NullValue)",
- "engine->undefinedValue() <=> engine->evaluate(\"{}\")",
- "engine->undefinedValue() <=> engine->evaluate(\"undefined\")",
- "engine->undefinedValue() <=> engine->evaluate(\"null\")",
- "engine->undefinedValue() <=> engine->nullValue()",
- "engine->undefinedValue() <=> engine->undefinedValue()",
- "engine->undefinedValue() <=> engine->newQObject(0)",
- "engine->newObject() <=> engine->newObject()",
- "engine->newArray() <=> QScriptValue(false)",
- "engine->newArray() <=> QScriptValue(0)",
- "engine->newArray() <=> QScriptValue(0.0)",
- "engine->newArray() <=> QScriptValue(QString(\"\"))",
- "engine->newArray() <=> QScriptValue(QString())",
- "engine->newArray() <=> QScriptValue(0, false)",
- "engine->newArray() <=> QScriptValue(0, 0)",
- "engine->newArray() <=> QScriptValue(0, 0.0)",
- "engine->newArray() <=> QScriptValue(0, QString(\"\"))",
- "engine->newArray() <=> QScriptValue(0, QString())",
- "engine->newArray() <=> QScriptValue(engine, false)",
- "engine->newArray() <=> QScriptValue(engine, 0)",
- "engine->newArray() <=> QScriptValue(engine, 0.0)",
- "engine->newArray() <=> QScriptValue(engine, QString(\"\"))",
- "engine->newArray() <=> QScriptValue(engine, QString())",
- "engine->newArray() <=> engine->evaluate(\"false\")",
- "engine->newArray() <=> engine->evaluate(\"0\")",
- "engine->newArray() <=> engine->evaluate(\"0.0\")",
- "engine->newArray() <=> engine->evaluate(\"''\")",
- "engine->newArray() <=> engine->newArray()",
- "engine->newArray(10) <=> engine->newArray(10)",
- "engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(123.0)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(QString(\"123\"))",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 123.0)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(0, QString(\"123\"))",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 123.0)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, QString(\"123\"))",
- "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"123.0\")",
- "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"'123'\")",
- "engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(false)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0.0)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"\"))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(QString())",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"0\"))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, false)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0.0)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"\"))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString())",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"0\"))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, false)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0.0)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"\"))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString())",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"0\"))",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"false\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0.0\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"''\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'0'\")",
- "engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))",
- "engine->newQObject(0) <=> QScriptValue(QScriptValue::UndefinedValue)",
- "engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)",
- "engine->newQObject(0) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)",
- "engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "engine->newQObject(0) <=> engine->evaluate(\"{}\")",
- "engine->newQObject(0) <=> engine->evaluate(\"undefined\")",
- "engine->newQObject(0) <=> engine->evaluate(\"null\")",
- "engine->newQObject(0) <=> engine->nullValue()",
- "engine->newQObject(0) <=> engine->undefinedValue()",
- "engine->newQObject(0) <=> engine->newQObject(0)",
- "engine->newQObject(engine) <=> engine->newQObject(engine)",};
-
-void tst_QScriptValue::equals_makeData(const char *expr)
-{
- static QSet<QString> equals;
- if (equals.isEmpty()) {
- equals.reserve(1217);
- for (unsigned i = 0; i < 1217; ++i)
- equals.insert(equals_array[i]);
- }
- QHash<QString, QScriptValue>::const_iterator it;
- for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
- QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
- newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
- }
-}
-
-void tst_QScriptValue::equals_test(const char *, const QScriptValue& value)
-{
- QFETCH(QScriptValue, other);
- QFETCH(bool, expected);
- QCOMPARE(value.equals(other), expected);
-}
-
-DEFINE_TEST_FUNCTION(equals)
-
-
-void tst_QScriptValue::strictlyEquals_initData()
-{
- QTest::addColumn<QScriptValue>("other");
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString strictlyEquals_array [] = {
- "QScriptValue() <=> QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
- "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
- "QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()",
- "QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)",
- "QScriptValue(true) <=> QScriptValue(true)",
- "QScriptValue(true) <=> QScriptValue(0, true)",
- "QScriptValue(true) <=> QScriptValue(engine, true)",
- "QScriptValue(true) <=> engine->evaluate(\"true\")",
- "QScriptValue(false) <=> QScriptValue(false)",
- "QScriptValue(false) <=> QScriptValue(0, false)",
- "QScriptValue(false) <=> QScriptValue(engine, false)",
- "QScriptValue(false) <=> engine->evaluate(\"false\")",
- "QScriptValue(int(122)) <=> QScriptValue(int(122))",
- "QScriptValue(int(122)) <=> QScriptValue(0, int(122))",
- "QScriptValue(int(122)) <=> QScriptValue(engine, int(122))",
- "QScriptValue(int(122)) <=> engine->evaluate(\"122\")",
- "QScriptValue(uint(124)) <=> QScriptValue(uint(124))",
- "QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))",
- "QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(uint(124)) <=> engine->evaluate(\"124\")",
- "QScriptValue(0) <=> QScriptValue(0)",
- "QScriptValue(0) <=> QScriptValue(0.0)",
- "QScriptValue(0) <=> QScriptValue(0, 0)",
- "QScriptValue(0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0) <=> QScriptValue(engine, 0)",
- "QScriptValue(0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0) <=> engine->evaluate(\"0\")",
- "QScriptValue(0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0.0) <=> QScriptValue(0)",
- "QScriptValue(0.0) <=> QScriptValue(0.0)",
- "QScriptValue(0.0) <=> QScriptValue(0, 0)",
- "QScriptValue(0.0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0.0) <=> QScriptValue(engine, 0)",
- "QScriptValue(0.0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0.0) <=> engine->evaluate(\"0\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(123.0) <=> QScriptValue(123.0)",
- "QScriptValue(123.0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(123.0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(123.0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(0x43211234) <=> QScriptValue(0x43211234)",
- "QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0x43211234) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0x10000) <=> QScriptValue(0x10000)",
- "QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0x10001) <=> QScriptValue(0x10001)",
- "QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0x10001) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(qInf()) <=> QScriptValue(qInf())",
- "QScriptValue(qInf()) <=> QScriptValue(0, qInf())",
- "QScriptValue(qInf()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(qInf()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(-qInf()) <=> QScriptValue(-qInf())",
- "QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"-Infinity\")",
- "QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(QString())",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")",
- "QScriptValue(QString()) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(QString()) <=> QScriptValue(QString())",
- "QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(QString()) <=> QScriptValue(0, QString())",
- "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(QString()) <=> QScriptValue(engine, QString())",
- "QScriptValue(QString()) <=> engine->evaluate(\"''\")",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
- "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)",
- "QScriptValue(0, true) <=> QScriptValue(true)",
- "QScriptValue(0, true) <=> QScriptValue(0, true)",
- "QScriptValue(0, true) <=> QScriptValue(engine, true)",
- "QScriptValue(0, true) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, false) <=> QScriptValue(false)",
- "QScriptValue(0, false) <=> QScriptValue(0, false)",
- "QScriptValue(0, false) <=> QScriptValue(engine, false)",
- "QScriptValue(0, false) <=> engine->evaluate(\"false\")",
- "QScriptValue(0, int(122)) <=> QScriptValue(int(122))",
- "QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, int(122)) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))",
- "QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, uint(124)) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, 0) <=> QScriptValue(0)",
- "QScriptValue(0, 0) <=> QScriptValue(0.0)",
- "QScriptValue(0, 0) <=> QScriptValue(0, 0)",
- "QScriptValue(0, 0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0, 0) <=> QScriptValue(engine, 0)",
- "QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0, 0) <=> engine->evaluate(\"0\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0, 0.0) <=> QScriptValue(0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0.0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, 0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0, 123.0) <=> QScriptValue(123.0)",
- "QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, 0x43211234) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)",
- "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)",
- "QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, qInf()) <=> QScriptValue(qInf())",
- "QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, qInf()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"-Infinity\")",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")",
- "QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(QString())",
- "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(0, QString())",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, QString())",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"''\")",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
- "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)",
- "QScriptValue(engine, true) <=> QScriptValue(true)",
- "QScriptValue(engine, true) <=> QScriptValue(0, true)",
- "QScriptValue(engine, true) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, true) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, false) <=> QScriptValue(false)",
- "QScriptValue(engine, false) <=> QScriptValue(0, false)",
- "QScriptValue(engine, false) <=> QScriptValue(engine, false)",
- "QScriptValue(engine, false) <=> engine->evaluate(\"false\")",
- "QScriptValue(engine, int(122)) <=> QScriptValue(int(122))",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, int(122)) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, 0) <=> QScriptValue(0)",
- "QScriptValue(engine, 0) <=> QScriptValue(0.0)",
- "QScriptValue(engine, 0) <=> QScriptValue(0, 0)",
- "QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, 0)",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"0\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0.0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(engine, 123.0) <=> QScriptValue(123.0)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, qInf()) <=> QScriptValue(qInf())",
- "QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, qInf()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-Infinity\")",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(QString())",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, QString())",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)",
- "engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")",
- "engine->evaluate(\"{}\") <=> engine->evaluate(\"undefined\")",
- "engine->evaluate(\"{}\") <=> engine->undefinedValue()",
- "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)",
- "engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")",
- "engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")",
- "engine->evaluate(\"undefined\") <=> engine->undefinedValue()",
- "engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)",
- "engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"null\")",
- "engine->evaluate(\"null\") <=> engine->nullValue()",
- "engine->evaluate(\"null\") <=> engine->newQObject(0)",
- "engine->evaluate(\"true\") <=> QScriptValue(true)",
- "engine->evaluate(\"true\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"false\") <=> QScriptValue(false)",
- "engine->evaluate(\"false\") <=> QScriptValue(0, false)",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, false)",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"false\")",
- "engine->evaluate(\"122\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"122\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"122\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"124\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"124\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"0\") <=> QScriptValue(0)",
- "engine->evaluate(\"0\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"0\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(QString())",
- "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(0, QString())",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, QString())",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")",
- "engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)",
- "engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)",
- "engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)",
- "engine->nullValue() <=> engine->evaluate(\"null\")",
- "engine->nullValue() <=> engine->nullValue()",
- "engine->nullValue() <=> engine->newQObject(0)",
- "engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)",
- "engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)",
- "engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
- "engine->undefinedValue() <=> engine->evaluate(\"{}\")",
- "engine->undefinedValue() <=> engine->evaluate(\"undefined\")",
- "engine->undefinedValue() <=> engine->undefinedValue()",
- "engine->newObject() <=> engine->newObject()",
- "engine->newArray() <=> engine->newArray()",
- "engine->newArray(10) <=> engine->newArray(10)",
- "engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))",
- "engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)",
- "engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)",
- "engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "engine->newQObject(0) <=> engine->evaluate(\"null\")",
- "engine->newQObject(0) <=> engine->nullValue()",
- "engine->newQObject(0) <=> engine->newQObject(0)",
- "engine->newQObject(engine) <=> engine->newQObject(engine)",};
-
-void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
-{
- static QSet<QString> equals;
- if (equals.isEmpty()) {
- equals.reserve(523);
- for (unsigned i = 0; i < 523; ++i)
- equals.insert(strictlyEquals_array[i]);
- }
- QHash<QString, QScriptValue>::const_iterator it;
- for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
- QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
- newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
- }
-}
-
-void tst_QScriptValue::strictlyEquals_test(const char *, const QScriptValue& value)
-{
- QFETCH(QScriptValue, other);
- QFETCH(bool, expected);
- QCOMPARE(value.strictlyEquals(other), expected);
-}
-
-DEFINE_TEST_FUNCTION(strictlyEquals)
-
-
-void tst_QScriptValue::lessThan_initData()
-{
- QTest::addColumn<QScriptValue>("other");
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString lessThan_array [] = {
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(true)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(int(122))",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(uint(124))",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(123.0)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(6.37e-8)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x43211234)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10000)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10001)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(qInf())",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, true)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, int(122))",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, uint(124))",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 123.0)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, qInf())",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, true)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, int(122))",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, qInf())",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"124\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(true) <=> QScriptValue(int(122))",
- "QScriptValue(true) <=> QScriptValue(uint(124))",
- "QScriptValue(true) <=> QScriptValue(123.0)",
- "QScriptValue(true) <=> QScriptValue(0x43211234)",
- "QScriptValue(true) <=> QScriptValue(0x10000)",
- "QScriptValue(true) <=> QScriptValue(0x10001)",
- "QScriptValue(true) <=> QScriptValue(qInf())",
- "QScriptValue(true) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(true) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(true) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(true) <=> QScriptValue(0, int(122))",
- "QScriptValue(true) <=> QScriptValue(0, uint(124))",
- "QScriptValue(true) <=> QScriptValue(0, 123.0)",
- "QScriptValue(true) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(true) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(true) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(true) <=> QScriptValue(0, qInf())",
- "QScriptValue(true) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(true) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(true) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(true) <=> QScriptValue(engine, int(122))",
- "QScriptValue(true) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(true) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(true) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(true) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(true) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(true) <=> QScriptValue(engine, qInf())",
- "QScriptValue(true) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(true) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(true) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(true) <=> engine->evaluate(\"122\")",
- "QScriptValue(true) <=> engine->evaluate(\"124\")",
- "QScriptValue(true) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(true) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(true) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(true) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(true) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(true) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(true) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(true) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(false) <=> QScriptValue(true)",
- "QScriptValue(false) <=> QScriptValue(int(122))",
- "QScriptValue(false) <=> QScriptValue(uint(124))",
- "QScriptValue(false) <=> QScriptValue(123.0)",
- "QScriptValue(false) <=> QScriptValue(6.37e-8)",
- "QScriptValue(false) <=> QScriptValue(0x43211234)",
- "QScriptValue(false) <=> QScriptValue(0x10000)",
- "QScriptValue(false) <=> QScriptValue(0x10001)",
- "QScriptValue(false) <=> QScriptValue(qInf())",
- "QScriptValue(false) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(false) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(false) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(false) <=> QScriptValue(0, true)",
- "QScriptValue(false) <=> QScriptValue(0, int(122))",
- "QScriptValue(false) <=> QScriptValue(0, uint(124))",
- "QScriptValue(false) <=> QScriptValue(0, 123.0)",
- "QScriptValue(false) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(false) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(false) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(false) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(false) <=> QScriptValue(0, qInf())",
- "QScriptValue(false) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(false) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(false) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(false) <=> QScriptValue(engine, true)",
- "QScriptValue(false) <=> QScriptValue(engine, int(122))",
- "QScriptValue(false) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(false) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(false) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(false) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(false) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(false) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(false) <=> QScriptValue(engine, qInf())",
- "QScriptValue(false) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(false) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(false) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(false) <=> engine->evaluate(\"true\")",
- "QScriptValue(false) <=> engine->evaluate(\"122\")",
- "QScriptValue(false) <=> engine->evaluate(\"124\")",
- "QScriptValue(false) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(false) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(false) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(false) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(false) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(false) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(false) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(false) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(false) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(int(122)) <=> QScriptValue(uint(124))",
- "QScriptValue(int(122)) <=> QScriptValue(123.0)",
- "QScriptValue(int(122)) <=> QScriptValue(0x43211234)",
- "QScriptValue(int(122)) <=> QScriptValue(0x10000)",
- "QScriptValue(int(122)) <=> QScriptValue(0x10001)",
- "QScriptValue(int(122)) <=> QScriptValue(qInf())",
- "QScriptValue(int(122)) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(int(122)) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(int(122)) <=> QScriptValue(0, uint(124))",
- "QScriptValue(int(122)) <=> QScriptValue(0, 123.0)",
- "QScriptValue(int(122)) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(int(122)) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(int(122)) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(int(122)) <=> QScriptValue(0, qInf())",
- "QScriptValue(int(122)) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(int(122)) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(int(122)) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(int(122)) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(int(122)) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(int(122)) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(int(122)) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(int(122)) <=> QScriptValue(engine, qInf())",
- "QScriptValue(int(122)) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(int(122)) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(int(122)) <=> engine->evaluate(\"124\")",
- "QScriptValue(int(122)) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(int(122)) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(int(122)) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(int(122)) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(int(122)) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(int(122)) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(int(122)) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(uint(124)) <=> QScriptValue(0x43211234)",
- "QScriptValue(uint(124)) <=> QScriptValue(0x10000)",
- "QScriptValue(uint(124)) <=> QScriptValue(0x10001)",
- "QScriptValue(uint(124)) <=> QScriptValue(qInf())",
- "QScriptValue(uint(124)) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(uint(124)) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(uint(124)) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(uint(124)) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(uint(124)) <=> QScriptValue(0, qInf())",
- "QScriptValue(uint(124)) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(uint(124)) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(uint(124)) <=> QScriptValue(engine, qInf())",
- "QScriptValue(uint(124)) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(uint(124)) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(uint(124)) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(uint(124)) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(uint(124)) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0) <=> QScriptValue(true)",
- "QScriptValue(0) <=> QScriptValue(int(122))",
- "QScriptValue(0) <=> QScriptValue(uint(124))",
- "QScriptValue(0) <=> QScriptValue(123.0)",
- "QScriptValue(0) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0) <=> QScriptValue(0x43211234)",
- "QScriptValue(0) <=> QScriptValue(0x10000)",
- "QScriptValue(0) <=> QScriptValue(0x10001)",
- "QScriptValue(0) <=> QScriptValue(qInf())",
- "QScriptValue(0) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0) <=> QScriptValue(0, true)",
- "QScriptValue(0) <=> QScriptValue(0, int(122))",
- "QScriptValue(0) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0) <=> QScriptValue(0, qInf())",
- "QScriptValue(0) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0) <=> QScriptValue(engine, true)",
- "QScriptValue(0) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0) <=> engine->evaluate(\"true\")",
- "QScriptValue(0) <=> engine->evaluate(\"122\")",
- "QScriptValue(0) <=> engine->evaluate(\"124\")",
- "QScriptValue(0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0.0) <=> QScriptValue(true)",
- "QScriptValue(0.0) <=> QScriptValue(int(122))",
- "QScriptValue(0.0) <=> QScriptValue(uint(124))",
- "QScriptValue(0.0) <=> QScriptValue(123.0)",
- "QScriptValue(0.0) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0.0) <=> QScriptValue(0x43211234)",
- "QScriptValue(0.0) <=> QScriptValue(0x10000)",
- "QScriptValue(0.0) <=> QScriptValue(0x10001)",
- "QScriptValue(0.0) <=> QScriptValue(qInf())",
- "QScriptValue(0.0) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0.0) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0.0) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0.0) <=> QScriptValue(0, true)",
- "QScriptValue(0.0) <=> QScriptValue(0, int(122))",
- "QScriptValue(0.0) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0.0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0.0) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0.0) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0.0) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0.0) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0.0) <=> QScriptValue(0, qInf())",
- "QScriptValue(0.0) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0.0) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0.0) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0.0) <=> QScriptValue(engine, true)",
- "QScriptValue(0.0) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0.0) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0.0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0.0) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0.0) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0.0) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0.0) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0.0) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0.0) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"true\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"122\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"124\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0.0) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0.0) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(123.0) <=> QScriptValue(uint(124))",
- "QScriptValue(123.0) <=> QScriptValue(0x43211234)",
- "QScriptValue(123.0) <=> QScriptValue(0x10000)",
- "QScriptValue(123.0) <=> QScriptValue(0x10001)",
- "QScriptValue(123.0) <=> QScriptValue(qInf())",
- "QScriptValue(123.0) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(123.0) <=> QScriptValue(0, uint(124))",
- "QScriptValue(123.0) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(123.0) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(123.0) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(123.0) <=> QScriptValue(0, qInf())",
- "QScriptValue(123.0) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(123.0) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(123.0) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(123.0) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(123.0) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(123.0) <=> QScriptValue(engine, qInf())",
- "QScriptValue(123.0) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(123.0) <=> engine->evaluate(\"124\")",
- "QScriptValue(123.0) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(123.0) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(123.0) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(123.0) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(6.37e-8) <=> QScriptValue(true)",
- "QScriptValue(6.37e-8) <=> QScriptValue(int(122))",
- "QScriptValue(6.37e-8) <=> QScriptValue(uint(124))",
- "QScriptValue(6.37e-8) <=> QScriptValue(123.0)",
- "QScriptValue(6.37e-8) <=> QScriptValue(0x43211234)",
- "QScriptValue(6.37e-8) <=> QScriptValue(0x10000)",
- "QScriptValue(6.37e-8) <=> QScriptValue(0x10001)",
- "QScriptValue(6.37e-8) <=> QScriptValue(qInf())",
- "QScriptValue(6.37e-8) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(6.37e-8) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, true)",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, int(122))",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, uint(124))",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, 123.0)",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, qInf())",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, true)",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, int(122))",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, qInf())",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"true\")",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"122\")",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"124\")",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(6.37e-8) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(6.37e-8) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(true)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(false)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(int(122))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(uint(124))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0.0)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(123.0)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0x43211234)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0x10000)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0x10001)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(qInf())",
- "QScriptValue(-6.37e-8) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(QString())",
- "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, true)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, false)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, int(122))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, uint(124))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0.0)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, 123.0)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, qInf())",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString())",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, true)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, false)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, int(122))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, qInf())",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString())",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"[]\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"null\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"true\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"false\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"122\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"124\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"''\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(-6.37e-8) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(-6.37e-8) <=> engine->nullValue()",
- "QScriptValue(-6.37e-8) <=> engine->newArray()",
- "QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(-6.37e-8) <=> engine->newQObject(0)",
- "QScriptValue(0x43211234) <=> QScriptValue(qInf())",
- "QScriptValue(0x43211234) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0x43211234) <=> QScriptValue(0, qInf())",
- "QScriptValue(0x43211234) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0x43211234) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0x43211234) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0x43211234) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0x10000) <=> QScriptValue(0x43211234)",
- "QScriptValue(0x10000) <=> QScriptValue(0x10001)",
- "QScriptValue(0x10000) <=> QScriptValue(qInf())",
- "QScriptValue(0x10000) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0x10000) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0x10000) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0x10000) <=> QScriptValue(0, qInf())",
- "QScriptValue(0x10000) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0x10000) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0x10000) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0x10000) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0x10000) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0x10000) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0x10000) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0x10000) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0x10001) <=> QScriptValue(0x43211234)",
- "QScriptValue(0x10001) <=> QScriptValue(qInf())",
- "QScriptValue(0x10001) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0x10001) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0x10001) <=> QScriptValue(0, qInf())",
- "QScriptValue(0x10001) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0x10001) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0x10001) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0x10001) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0x10001) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0x10001) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(-qInf()) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(-qInf()) <=> QScriptValue(true)",
- "QScriptValue(-qInf()) <=> QScriptValue(false)",
- "QScriptValue(-qInf()) <=> QScriptValue(int(122))",
- "QScriptValue(-qInf()) <=> QScriptValue(uint(124))",
- "QScriptValue(-qInf()) <=> QScriptValue(0)",
- "QScriptValue(-qInf()) <=> QScriptValue(0.0)",
- "QScriptValue(-qInf()) <=> QScriptValue(123.0)",
- "QScriptValue(-qInf()) <=> QScriptValue(6.37e-8)",
- "QScriptValue(-qInf()) <=> QScriptValue(-6.37e-8)",
- "QScriptValue(-qInf()) <=> QScriptValue(0x43211234)",
- "QScriptValue(-qInf()) <=> QScriptValue(0x10000)",
- "QScriptValue(-qInf()) <=> QScriptValue(0x10001)",
- "QScriptValue(-qInf()) <=> QScriptValue(qInf())",
- "QScriptValue(-qInf()) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(-qInf()) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(-qInf()) <=> QScriptValue(QString())",
- "QScriptValue(-qInf()) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(-qInf()) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(-qInf()) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(-qInf()) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(-qInf()) <=> QScriptValue(0, true)",
- "QScriptValue(-qInf()) <=> QScriptValue(0, false)",
- "QScriptValue(-qInf()) <=> QScriptValue(0, int(122))",
- "QScriptValue(-qInf()) <=> QScriptValue(0, uint(124))",
- "QScriptValue(-qInf()) <=> QScriptValue(0, 0)",
- "QScriptValue(-qInf()) <=> QScriptValue(0, 0.0)",
- "QScriptValue(-qInf()) <=> QScriptValue(0, 123.0)",
- "QScriptValue(-qInf()) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(-qInf()) <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(-qInf()) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(-qInf()) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(-qInf()) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(-qInf()) <=> QScriptValue(0, qInf())",
- "QScriptValue(-qInf()) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(-qInf()) <=> QScriptValue(0, QString())",
- "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, true)",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, false)",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, int(122))",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, 0)",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, QString())",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"[]\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"null\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"true\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"false\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"122\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"124\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"0\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"''\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(-qInf()) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(-qInf()) <=> engine->nullValue()",
- "QScriptValue(-qInf()) <=> engine->newArray()",
- "QScriptValue(-qInf()) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(-qInf()) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(-qInf()) <=> engine->newQObject(0)",
- "QScriptValue(\"NaN\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(\"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"NaN\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(\"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"NaN\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(\"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"Null\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"True\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"False\")",
- "QScriptValue(\"NaN\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(\"NaN\") <=> engine->newObject()",
- "QScriptValue(\"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(\"NaN\") <=> engine->newQObject(engine)",
- "QScriptValue(\"Infinity\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(\"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Null\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"True\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"False\")",
- "QScriptValue(\"Infinity\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(\"Infinity\") <=> engine->newObject()",
- "QScriptValue(\"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(\"Infinity\") <=> engine->newQObject(engine)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(true)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(false)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(int(122))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(uint(124))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0.0)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(123.0)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(6.37e-8)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(-6.37e-8)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0x43211234)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0x10000)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0x10001)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(qInf())",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, true)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, false)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, int(122))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, uint(124))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0.0)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 123.0)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10000)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10001)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, qInf())",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, true)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, false)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, int(122))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, uint(124))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0.0)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 123.0)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, qInf())",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"/foo/\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Null\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"True\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"False\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"null\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"true\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"false\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"122\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"124\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0.0\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"123.0\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'0'\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'123'\")",
- "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(\"-Infinity\") <=> engine->nullValue()",
- "QScriptValue(\"-Infinity\") <=> engine->newObject()",
- "QScriptValue(\"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(123))",
- "QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(false))",
- "QScriptValue(\"-Infinity\") <=> engine->newQObject(0)",
- "QScriptValue(\"-Infinity\") <=> engine->newQObject(engine)",
- "QScriptValue(\"ciao\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(\"ciao\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(\"ciao\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(\"ciao\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(\"ciao\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(true)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(int(122))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(uint(124))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(123.0)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(6.37e-8)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0x10000)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0x10001)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(qInf())",
- "QScriptValue(QString(\"\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, true)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, int(122))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, true)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, int(122))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"/foo/\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"true\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"122\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(QString(\"\")) <=> engine->newObject()",
- "QScriptValue(QString(\"\")) <=> engine->newArray(10)",
- "QScriptValue(QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(QString(\"\")) <=> engine->newQObject(engine)",
- "QScriptValue(QString()) <=> QScriptValue(true)",
- "QScriptValue(QString()) <=> QScriptValue(int(122))",
- "QScriptValue(QString()) <=> QScriptValue(uint(124))",
- "QScriptValue(QString()) <=> QScriptValue(123.0)",
- "QScriptValue(QString()) <=> QScriptValue(6.37e-8)",
- "QScriptValue(QString()) <=> QScriptValue(0x43211234)",
- "QScriptValue(QString()) <=> QScriptValue(0x10000)",
- "QScriptValue(QString()) <=> QScriptValue(0x10001)",
- "QScriptValue(QString()) <=> QScriptValue(qInf())",
- "QScriptValue(QString()) <=> QScriptValue(\"NaN\")",
- "QScriptValue(QString()) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(QString()) <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(QString()) <=> QScriptValue(\"ciao\")",
- "QScriptValue(QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString()) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(QString()) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(QString()) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(QString()) <=> QScriptValue(0, true)",
- "QScriptValue(QString()) <=> QScriptValue(0, int(122))",
- "QScriptValue(QString()) <=> QScriptValue(0, uint(124))",
- "QScriptValue(QString()) <=> QScriptValue(0, 123.0)",
- "QScriptValue(QString()) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(QString()) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(QString()) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(QString()) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(QString()) <=> QScriptValue(0, qInf())",
- "QScriptValue(QString()) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(QString()) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(QString()) <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(QString()) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString()) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(QString()) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(QString()) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(QString()) <=> QScriptValue(engine, true)",
- "QScriptValue(QString()) <=> QScriptValue(engine, int(122))",
- "QScriptValue(QString()) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(QString()) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(QString()) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(QString()) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(QString()) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(QString()) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(QString()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(QString()) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(QString()) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(QString()) <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(QString()) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(QString()) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"Object\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"Array\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"Number\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"Function\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"/foo/\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"Null\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"True\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"False\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"true\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"122\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"124\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(QString()) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(QString()) <=> engine->newObject()",
- "QScriptValue(QString()) <=> engine->newArray(10)",
- "QScriptValue(QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(QString()) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(QString()) <=> engine->newQObject(engine)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(true)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(int(122))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(uint(124))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(123.0)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(6.37e-8)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0x10000)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0x10001)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(qInf())",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, true)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, int(122))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, true)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, int(122))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"true\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"122\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(QString(\"0\")) <=> engine->newObject()",
- "QScriptValue(QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(QString(\"0\")) <=> engine->newQObject(engine)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(uint(124))",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0x10000)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0x10001)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(qInf())",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(QString(\"123\")) <=> engine->newObject()",
- "QScriptValue(QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(QString(\"123\")) <=> engine->newQObject(engine)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(int(122))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(uint(124))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(123.0)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10000)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10001)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(qInf())",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, int(122))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, int(122))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"122\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(QString(\"12.4\")) <=> engine->newObject()",
- "QScriptValue(QString(\"12.4\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(QString(\"12.4\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(QString(\"12.4\")) <=> engine->newQObject(engine)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(true)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(int(122))",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(uint(124))",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(123.0)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10000)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10001)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(qInf())",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, true)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, true)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, true) <=> QScriptValue(int(122))",
- "QScriptValue(0, true) <=> QScriptValue(uint(124))",
- "QScriptValue(0, true) <=> QScriptValue(123.0)",
- "QScriptValue(0, true) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, true) <=> QScriptValue(0x10000)",
- "QScriptValue(0, true) <=> QScriptValue(0x10001)",
- "QScriptValue(0, true) <=> QScriptValue(qInf())",
- "QScriptValue(0, true) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, true) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, true) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, true) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, true) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, true) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, true) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, true) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, true) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, true) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, true) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, true) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, true) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, true) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, true) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, true) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, true) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, true) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, true) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, true) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, true) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, true) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, true) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, true) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, true) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, true) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, true) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, true) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, true) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, true) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, true) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, true) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, true) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, false) <=> QScriptValue(true)",
- "QScriptValue(0, false) <=> QScriptValue(int(122))",
- "QScriptValue(0, false) <=> QScriptValue(uint(124))",
- "QScriptValue(0, false) <=> QScriptValue(123.0)",
- "QScriptValue(0, false) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, false) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, false) <=> QScriptValue(0x10000)",
- "QScriptValue(0, false) <=> QScriptValue(0x10001)",
- "QScriptValue(0, false) <=> QScriptValue(qInf())",
- "QScriptValue(0, false) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, false) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, false) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, false) <=> QScriptValue(0, true)",
- "QScriptValue(0, false) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, false) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, false) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, false) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, false) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, false) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, false) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, false) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, false) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, false) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, false) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, false) <=> QScriptValue(engine, true)",
- "QScriptValue(0, false) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, false) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, false) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, false) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, false) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, false) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, false) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, false) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, false) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, false) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, false) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, int(122)) <=> QScriptValue(uint(124))",
- "QScriptValue(0, int(122)) <=> QScriptValue(123.0)",
- "QScriptValue(0, int(122)) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, int(122)) <=> QScriptValue(0x10000)",
- "QScriptValue(0, int(122)) <=> QScriptValue(0x10001)",
- "QScriptValue(0, int(122)) <=> QScriptValue(qInf())",
- "QScriptValue(0, int(122)) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, int(122)) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, int(122)) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, int(122)) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, int(122)) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, int(122)) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, int(122)) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, int(122)) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, int(122)) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, int(122)) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, int(122)) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, int(122)) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, int(122)) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, int(122)) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, int(122)) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, int(122)) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, int(122)) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, int(122)) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, int(122)) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, uint(124)) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, uint(124)) <=> QScriptValue(0x10000)",
- "QScriptValue(0, uint(124)) <=> QScriptValue(0x10001)",
- "QScriptValue(0, uint(124)) <=> QScriptValue(qInf())",
- "QScriptValue(0, uint(124)) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, uint(124)) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, uint(124)) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, uint(124)) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, uint(124)) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, uint(124)) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, 0) <=> QScriptValue(true)",
- "QScriptValue(0, 0) <=> QScriptValue(int(122))",
- "QScriptValue(0, 0) <=> QScriptValue(uint(124))",
- "QScriptValue(0, 0) <=> QScriptValue(123.0)",
- "QScriptValue(0, 0) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, 0) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, 0) <=> QScriptValue(0x10000)",
- "QScriptValue(0, 0) <=> QScriptValue(0x10001)",
- "QScriptValue(0, 0) <=> QScriptValue(qInf())",
- "QScriptValue(0, 0) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, 0) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, 0) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, 0) <=> QScriptValue(0, true)",
- "QScriptValue(0, 0) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, 0) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, 0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, 0) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, 0) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, 0) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, 0) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, 0) <=> QScriptValue(engine, true)",
- "QScriptValue(0, 0) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, 0) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, 0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, 0) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, 0) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, 0) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, 0) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, 0) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, 0) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, 0) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, 0) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, 0.0) <=> QScriptValue(true)",
- "QScriptValue(0, 0.0) <=> QScriptValue(int(122))",
- "QScriptValue(0, 0.0) <=> QScriptValue(uint(124))",
- "QScriptValue(0, 0.0) <=> QScriptValue(123.0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0x10000)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0x10001)",
- "QScriptValue(0, 0.0) <=> QScriptValue(qInf())",
- "QScriptValue(0, 0.0) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, true)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, true)",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, 0.0) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, 123.0) <=> QScriptValue(uint(124))",
- "QScriptValue(0, 123.0) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, 123.0) <=> QScriptValue(0x10000)",
- "QScriptValue(0, 123.0) <=> QScriptValue(0x10001)",
- "QScriptValue(0, 123.0) <=> QScriptValue(qInf())",
- "QScriptValue(0, 123.0) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, 123.0) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, 123.0) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, 123.0) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, 123.0) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, 123.0) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, 123.0) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, 123.0) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, 123.0) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, 123.0) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, 123.0) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(true)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(int(122))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(uint(124))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(123.0)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10000)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10001)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(qInf())",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, true)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, true)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, 6.37e-8) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(true)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(false)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(int(122))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(uint(124))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0.0)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(123.0)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10000)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10001)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(qInf())",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString())",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, true)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, false)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString())",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, true)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, false)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString())",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"[]\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"null\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"false\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"''\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, -6.37e-8) <=> engine->nullValue()",
- "QScriptValue(0, -6.37e-8) <=> engine->newArray()",
- "QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(0, -6.37e-8) <=> engine->newQObject(0)",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(qInf())",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, 0x43211234) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, 0x10000) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, 0x10000) <=> QScriptValue(0x10001)",
- "QScriptValue(0, 0x10000) <=> QScriptValue(qInf())",
- "QScriptValue(0, 0x10000) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, 0x10000) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, 0x10000) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, 0x10000) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, 0x10000) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, 0x10000) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, 0x10001) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, 0x10001) <=> QScriptValue(qInf())",
- "QScriptValue(0, 0x10001) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10001) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, 0x10001) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, 0x10001) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, 0x10001) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, 0x10001) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, -qInf()) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(true)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(false)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(int(122))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(uint(124))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0.0)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(123.0)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(-6.37e-8)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0x10000)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0x10001)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(qInf())",
- "QScriptValue(0, -qInf()) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(QString())",
- "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, true)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, false)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0.0)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString())",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, true)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, false)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString())",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"[]\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"null\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"false\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"''\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, -qInf()) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, -qInf()) <=> engine->nullValue()",
- "QScriptValue(0, -qInf()) <=> engine->newArray()",
- "QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(0, -qInf()) <=> engine->newQObject(0)",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Null\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"True\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"False\")",
- "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, \"NaN\") <=> engine->newObject()",
- "QScriptValue(0, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(0, \"NaN\") <=> engine->newQObject(engine)",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Null\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"True\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"False\")",
- "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, \"Infinity\") <=> engine->newObject()",
- "QScriptValue(0, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(0, \"Infinity\") <=> engine->newQObject(engine)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(true)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(false)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(int(122))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(uint(124))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0.0)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(123.0)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(-6.37e-8)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x43211234)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10000)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10001)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(qInf())",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, true)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, false)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, int(122))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0.0)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, qInf())",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, true)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, false)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0.0)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"/foo/\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Null\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"True\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"False\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"null\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"true\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"false\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"122\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"124\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0.0\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, \"-Infinity\") <=> engine->nullValue()",
- "QScriptValue(0, \"-Infinity\") <=> engine->newObject()",
- "QScriptValue(0, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(false))",
- "QScriptValue(0, \"-Infinity\") <=> engine->newQObject(0)",
- "QScriptValue(0, \"-Infinity\") <=> engine->newQObject(engine)",
- "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(true)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(int(122))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(uint(124))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(123.0)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10000)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10001)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(qInf())",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, true)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, true)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"/foo/\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, QString(\"\")) <=> engine->newObject()",
- "QScriptValue(0, QString(\"\")) <=> engine->newArray(10)",
- "QScriptValue(0, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, QString(\"\")) <=> engine->newQObject(engine)",
- "QScriptValue(0, QString()) <=> QScriptValue(true)",
- "QScriptValue(0, QString()) <=> QScriptValue(int(122))",
- "QScriptValue(0, QString()) <=> QScriptValue(uint(124))",
- "QScriptValue(0, QString()) <=> QScriptValue(123.0)",
- "QScriptValue(0, QString()) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, QString()) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, QString()) <=> QScriptValue(0x10000)",
- "QScriptValue(0, QString()) <=> QScriptValue(0x10001)",
- "QScriptValue(0, QString()) <=> QScriptValue(qInf())",
- "QScriptValue(0, QString()) <=> QScriptValue(\"NaN\")",
- "QScriptValue(0, QString()) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, QString()) <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(0, QString()) <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(0, true)",
- "QScriptValue(0, QString()) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, QString()) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, QString()) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, QString()) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, QString()) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, QString()) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, QString()) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, QString()) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, QString()) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(0, QString()) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, QString()) <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, QString()) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, true)",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"Object\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"Array\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"Number\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"Function\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"/foo/\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"Null\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"True\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"False\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, QString()) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, QString()) <=> engine->newObject()",
- "QScriptValue(0, QString()) <=> engine->newArray(10)",
- "QScriptValue(0, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(0, QString()) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, QString()) <=> engine->newQObject(engine)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(true)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(int(122))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(uint(124))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(123.0)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(6.37e-8)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10000)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10001)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(qInf())",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, true)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, true)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"true\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, QString(\"0\")) <=> engine->newObject()",
- "QScriptValue(0, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, QString(\"0\")) <=> engine->newQObject(engine)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(uint(124))",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10000)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10001)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(qInf())",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, QString(\"123\")) <=> engine->newObject()",
- "QScriptValue(0, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(0, QString(\"123\")) <=> engine->newQObject(engine)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(int(122))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(uint(124))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(123.0)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10000)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10001)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(qInf())",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, int(122))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, int(122))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"122\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->newObject()",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(0, QString(\"12.3\")) <=> engine->newQObject(engine)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(true)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(int(122))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(123.0)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(qInf())",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, true)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, true) <=> QScriptValue(int(122))",
- "QScriptValue(engine, true) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, true) <=> QScriptValue(123.0)",
- "QScriptValue(engine, true) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, true) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, true) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, true) <=> QScriptValue(qInf())",
- "QScriptValue(engine, true) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, true) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, true) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, true) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, true) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, true) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, true) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, true) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, true) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, true) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, true) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, true) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, true) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, true) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, true) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, true) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, true) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, true) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, true) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, true) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, true) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, true) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, true) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, true) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, true) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, true) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, true) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, true) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, true) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, true) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, true) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, false) <=> QScriptValue(true)",
- "QScriptValue(engine, false) <=> QScriptValue(int(122))",
- "QScriptValue(engine, false) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, false) <=> QScriptValue(123.0)",
- "QScriptValue(engine, false) <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, false) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, false) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, false) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, false) <=> QScriptValue(qInf())",
- "QScriptValue(engine, false) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, false) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, false) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, false) <=> QScriptValue(0, true)",
- "QScriptValue(engine, false) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, false) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, false) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, false) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, false) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, false) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, false) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, false) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, false) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, false) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, false) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, false) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, false) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, false) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, false) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, false) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, false) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, false) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, false) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, false) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, false) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, int(122)) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, int(122)) <=> QScriptValue(123.0)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(qInf())",
- "QScriptValue(engine, int(122)) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, int(122)) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, int(122)) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, int(122)) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, int(122)) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, int(122)) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, int(122)) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, int(122)) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, int(122)) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, int(122)) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, int(122)) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, int(122)) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(qInf())",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, 0) <=> QScriptValue(true)",
- "QScriptValue(engine, 0) <=> QScriptValue(int(122))",
- "QScriptValue(engine, 0) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, 0) <=> QScriptValue(123.0)",
- "QScriptValue(engine, 0) <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, 0) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, 0) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, 0) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, 0) <=> QScriptValue(qInf())",
- "QScriptValue(engine, 0) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, 0) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, 0) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, 0) <=> QScriptValue(0, true)",
- "QScriptValue(engine, 0) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, 0) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, 0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, 0) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, 0) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, 0) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, 0) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, 0) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, 0) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, 0) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, 0) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(true)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(int(122))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(123.0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(qInf())",
- "QScriptValue(engine, 0.0) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, true)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, 0.0) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, 123.0) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(qInf())",
- "QScriptValue(engine, 123.0) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, 123.0) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, 123.0) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, 123.0) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, 123.0) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, 123.0) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, 123.0) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(true)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(int(122))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(123.0)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(qInf())",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, true)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, 6.37e-8) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(true)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(false)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(int(122))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0.0)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(123.0)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(qInf())",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString())",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, true)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, false)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0.0)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString())",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, false)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString())",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"[]\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"null\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"false\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"''\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, -6.37e-8) <=> engine->nullValue()",
- "QScriptValue(engine, -6.37e-8) <=> engine->newArray()",
- "QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(engine, -6.37e-8) <=> engine->newQObject(0)",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(qInf())",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(qInf())",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(qInf())",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(true)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(false)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(int(122))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0.0)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(123.0)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(-6.37e-8)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(qInf())",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"\"))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(QString())",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, true)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, false)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0.0)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"\"))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString())",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, false)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0.0)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString())",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"[]\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Array.prototype\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Array()\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"null\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"false\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0.0\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"''\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, -qInf()) <=> engine->nullValue()",
- "QScriptValue(engine, -qInf()) <=> engine->newArray()",
- "QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(false))",
- "QScriptValue(engine, -qInf()) <=> engine->newQObject(0)",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Null\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"True\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"False\")",
- "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, \"NaN\") <=> engine->newObject()",
- "QScriptValue(engine, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(engine, \"NaN\") <=> engine->newQObject(engine)",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Null\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"True\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"False\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, \"Infinity\") <=> engine->newObject()",
- "QScriptValue(engine, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(engine, \"Infinity\") <=> engine->newQObject(engine)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(true)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(false)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(int(122))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(uint(124))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0.0)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(123.0)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-6.37e-8)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10000)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10001)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(qInf())",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"NaN\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, true)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, false)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0.0)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, true)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, false)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0.0)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"/foo/\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Null\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"True\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"False\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"null\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"false\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0.0\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'0'\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, \"-Infinity\") <=> engine->nullValue()",
- "QScriptValue(engine, \"-Infinity\") <=> engine->newObject()",
- "QScriptValue(engine, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(false))",
- "QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(0)",
- "QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(engine)",
- "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Object\")",
- "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Array\")",
- "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Number\")",
- "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function\")",
- "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(true)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(int(122))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(123.0)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(qInf())",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, true)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"/foo/\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, QString(\"\")) <=> engine->newObject()",
- "QScriptValue(engine, QString(\"\")) <=> engine->newArray(10)",
- "QScriptValue(engine, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, QString(\"\")) <=> engine->newQObject(engine)",
- "QScriptValue(engine, QString()) <=> QScriptValue(true)",
- "QScriptValue(engine, QString()) <=> QScriptValue(int(122))",
- "QScriptValue(engine, QString()) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, QString()) <=> QScriptValue(123.0)",
- "QScriptValue(engine, QString()) <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, QString()) <=> QScriptValue(qInf())",
- "QScriptValue(engine, QString()) <=> QScriptValue(\"NaN\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(\"-Infinity\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"0\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, true)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, \"-Infinity\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"0\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"Object\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"Array\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"Number\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"Function\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"/foo/\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"Null\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"True\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"False\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"'0'\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, QString()) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, QString()) <=> engine->newObject()",
- "QScriptValue(engine, QString()) <=> engine->newArray(10)",
- "QScriptValue(engine, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, QString()) <=> engine->newQObject(engine)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(true)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(int(122))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(123.0)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(6.37e-8)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(qInf())",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, true)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, true)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"true\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, QString(\"0\")) <=> engine->newObject()",
- "QScriptValue(engine, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, QString(\"0\")) <=> engine->newQObject(engine)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(qInf())",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, QString(\"123\")) <=> engine->newObject()",
- "QScriptValue(engine, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(engine, QString(\"123\")) <=> engine->newQObject(engine)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(int(122))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(uint(124))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(123.0)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x43211234)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10000)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10001)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(qInf())",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"NaN\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"Infinity\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"ciao\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"12.4\"))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, int(122))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, uint(124))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 123.0)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x43211234)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10000)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10001)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, qInf())",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"NaN\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"Infinity\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"ciao\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, int(122))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, uint(124))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 123.0)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, qInf())",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object.prototype\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function.prototype\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Error.prototype\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Array\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Number\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 1; })\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Object()\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Error()\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Undefined\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Null\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"True\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"False\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"122\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"124\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"123.0\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x43211234\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10000\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10001\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Infinity\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'ciao'\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'123'\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'12.4'\")",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->newObject()",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->newVariant(QVariant(123))",
- "QScriptValue(engine, QString(\"1.23\")) <=> engine->newQObject(engine)",
- "engine->evaluate(\"[]\") <=> QScriptValue(true)",
- "engine->evaluate(\"[]\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"[]\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"[]\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"[]\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"[]\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"[]\") <=> QScriptValue(\"NaN\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(\"-Infinity\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, \"NaN\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, \"-Infinity\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"NaN\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"-Infinity\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"[]\") <=> engine->newObject()",
- "engine->evaluate(\"[]\") <=> engine->newArray(10)",
- "engine->evaluate(\"[]\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"[]\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"[]\") <=> engine->newQObject(engine)",
- "engine->evaluate(\"Object.prototype\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"Object.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"Object.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(true)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"NaN\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"-Infinity\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"NaN\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"-Infinity\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"NaN\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"-Infinity\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->newObject()",
- "engine->evaluate(\"Array.prototype\") <=> engine->newArray(10)",
- "engine->evaluate(\"Array.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"Array.prototype\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"Array.prototype\") <=> engine->newQObject(engine)",
- "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"NaN\")",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"NaN\")",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"NaN\")",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->newObject()",
- "engine->evaluate(\"Error.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"Error.prototype\") <=> engine->newQObject(engine)",
- "engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Function\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(\"NaN\")",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"NaN\")",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"NaN\")",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"/foo/\") <=> engine->newObject()",
- "engine->evaluate(\"/foo/\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"/foo/\") <=> engine->newQObject(engine)",
- "engine->evaluate(\"new Object()\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"new Object()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"new Object()\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"new Object()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"new Object()\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"new Object()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"new Object()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(true)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(\"NaN\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(\"-Infinity\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"NaN\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"-Infinity\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"NaN\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"-Infinity\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"new Array()\") <=> engine->newObject()",
- "engine->evaluate(\"new Array()\") <=> engine->newArray(10)",
- "engine->evaluate(\"new Array()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"new Array()\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"new Array()\") <=> engine->newQObject(engine)",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(\"NaN\")",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"NaN\")",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"NaN\")",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"new Error()\") <=> engine->newObject()",
- "engine->evaluate(\"new Error()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"new Error()\") <=> engine->newQObject(engine)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"Undefined\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"Undefined\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Undefined\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"Undefined\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Undefined\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"Undefined\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"Undefined\") <=> engine->newObject()",
- "engine->evaluate(\"Undefined\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"Null\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"Null\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Null\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"Null\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Null\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"Null\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"Null\") <=> engine->newObject()",
- "engine->evaluate(\"Null\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"True\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"True\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"True\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"True\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"True\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"True\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"True\") <=> engine->newObject()",
- "engine->evaluate(\"True\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"False\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"False\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"False\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"False\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"False\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"False\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"False\") <=> engine->newObject()",
- "engine->evaluate(\"False\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"null\") <=> QScriptValue(true)",
- "engine->evaluate(\"null\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"null\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"null\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"null\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"null\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"null\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"null\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"null\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"null\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"null\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"null\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"null\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"null\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"null\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"null\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"null\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"null\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"null\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"null\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"null\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"null\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"null\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"null\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"true\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"true\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"true\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"true\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"true\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"true\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"true\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"true\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"true\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"true\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"true\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"true\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"true\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"true\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"true\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"true\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"true\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"true\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"true\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"true\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"false\") <=> QScriptValue(true)",
- "engine->evaluate(\"false\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"false\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"false\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"false\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"false\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"false\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"false\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"false\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"false\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"false\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"false\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"false\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"false\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"false\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"false\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"false\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"false\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"false\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"false\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"false\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"false\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"false\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"false\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"122\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"122\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"122\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"122\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"122\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"122\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"122\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"122\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"122\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"122\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"122\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"122\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"122\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"122\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"122\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"122\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"122\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"122\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"122\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"122\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"122\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"122\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"122\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"122\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"122\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"122\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"122\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"122\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"122\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"122\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"124\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"124\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"124\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"124\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"124\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"124\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"124\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"124\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"124\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"124\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"124\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"124\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"124\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"124\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"124\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"124\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"124\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"0\") <=> QScriptValue(true)",
- "engine->evaluate(\"0\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"0\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"0\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"0\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"0\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"0\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"0\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"0\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"0\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"0\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"0\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"0\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"0\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"0\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"0\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"0\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"0\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"0\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"0\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"0\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"0\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"0\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"0\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(true)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"0.0\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"0.0\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"123.0\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"123.0\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"123.0\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"123.0\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"123.0\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"123.0\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"123.0\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"123.0\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(true)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"6.37e-8\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QScriptValue::NullValue)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(true)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(false)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"\"))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString())",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QScriptValue::NullValue)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, false)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"\"))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString())",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QScriptValue::NullValue)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, false)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"\"))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString())",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"[]\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"null\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"false\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"''\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"-6.37e-8\") <=> engine->nullValue()",
- "engine->evaluate(\"-6.37e-8\") <=> engine->newArray()",
- "engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(false))",
- "engine->evaluate(\"-6.37e-8\") <=> engine->newQObject(0)",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(true)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(false)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0.0)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(-6.37e-8)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"\"))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString())",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, false)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0.0)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"\"))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString())",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, false)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0.0)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"\"))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString())",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"[]\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"null\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"false\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0.0\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"''\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"-Infinity\") <=> engine->nullValue()",
- "engine->evaluate(\"-Infinity\") <=> engine->newArray()",
- "engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(false))",
- "engine->evaluate(\"-Infinity\") <=> engine->newQObject(0)",
- "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"''\") <=> QScriptValue(true)",
- "engine->evaluate(\"''\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"''\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"''\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"''\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"''\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"''\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"''\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"''\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"''\") <=> QScriptValue(\"NaN\")",
- "engine->evaluate(\"''\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"''\") <=> QScriptValue(\"-Infinity\")",
- "engine->evaluate(\"''\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"''\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(QString(\"0\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"''\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"''\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"''\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"''\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"''\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"''\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"''\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"''\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"''\") <=> QScriptValue(0, \"NaN\")",
- "engine->evaluate(\"''\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"''\") <=> QScriptValue(0, \"-Infinity\")",
- "engine->evaluate(\"''\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"''\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"0\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, \"NaN\")",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, \"-Infinity\")",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"0\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"'0'\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"''\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"''\") <=> engine->newObject()",
- "engine->evaluate(\"''\") <=> engine->newArray(10)",
- "engine->evaluate(\"''\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"''\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"''\") <=> engine->newQObject(engine)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(true)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(6.37e-8)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"'0'\") <=> QScriptValue(\"NaN\")",
- "engine->evaluate(\"'0'\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"'0'\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"'0'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"12.4\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, true)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, 6.37e-8)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, \"NaN\")",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, true)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 6.37e-8)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"NaN\")",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"true\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'12.4'\")",
- "engine->evaluate(\"'0'\") <=> engine->newObject()",
- "engine->evaluate(\"'0'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"'0'\") <=> engine->newQObject(engine)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"'123'\") <=> QScriptValue(\"NaN\")",
- "engine->evaluate(\"'123'\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"'123'\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"'123'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, \"NaN\")",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"'123'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"NaN\")",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"'123'\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"'123'\") <=> engine->newObject()",
- "engine->evaluate(\"'123'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"'123'\") <=> engine->newQObject(engine)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(int(122))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(uint(124))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(123.0)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0x43211234)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10000)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10001)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(qInf())",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(\"NaN\")",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(\"Infinity\")",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(\"ciao\")",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"123\"))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, int(122))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, uint(124))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 123.0)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x43211234)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10000)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10001)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, qInf())",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"NaN\")",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"Infinity\")",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"ciao\")",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString(\"123\"))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, int(122))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, uint(124))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 123.0)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x43211234)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10000)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10001)",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, qInf())",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"NaN\")",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"Infinity\")",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"ciao\")",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString(\"123\"))",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Number\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Null\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"True\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"False\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"122\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"124\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"123.0\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\") <=> engine->newObject()",
- "engine->evaluate(\"'12.4'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->evaluate(\"'12.4'\") <=> engine->newVariant(QVariant(123))",
- "engine->evaluate(\"'12.4'\") <=> engine->newQObject(engine)",
- "engine->nullValue() <=> QScriptValue(true)",
- "engine->nullValue() <=> QScriptValue(int(122))",
- "engine->nullValue() <=> QScriptValue(uint(124))",
- "engine->nullValue() <=> QScriptValue(123.0)",
- "engine->nullValue() <=> QScriptValue(6.37e-8)",
- "engine->nullValue() <=> QScriptValue(0x43211234)",
- "engine->nullValue() <=> QScriptValue(0x10000)",
- "engine->nullValue() <=> QScriptValue(0x10001)",
- "engine->nullValue() <=> QScriptValue(qInf())",
- "engine->nullValue() <=> QScriptValue(\"Infinity\")",
- "engine->nullValue() <=> QScriptValue(QString(\"123\"))",
- "engine->nullValue() <=> QScriptValue(QString(\"12.4\"))",
- "engine->nullValue() <=> QScriptValue(0, true)",
- "engine->nullValue() <=> QScriptValue(0, int(122))",
- "engine->nullValue() <=> QScriptValue(0, uint(124))",
- "engine->nullValue() <=> QScriptValue(0, 123.0)",
- "engine->nullValue() <=> QScriptValue(0, 6.37e-8)",
- "engine->nullValue() <=> QScriptValue(0, 0x43211234)",
- "engine->nullValue() <=> QScriptValue(0, 0x10000)",
- "engine->nullValue() <=> QScriptValue(0, 0x10001)",
- "engine->nullValue() <=> QScriptValue(0, qInf())",
- "engine->nullValue() <=> QScriptValue(0, \"Infinity\")",
- "engine->nullValue() <=> QScriptValue(0, QString(\"123\"))",
- "engine->nullValue() <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->nullValue() <=> QScriptValue(engine, true)",
- "engine->nullValue() <=> QScriptValue(engine, int(122))",
- "engine->nullValue() <=> QScriptValue(engine, uint(124))",
- "engine->nullValue() <=> QScriptValue(engine, 123.0)",
- "engine->nullValue() <=> QScriptValue(engine, 6.37e-8)",
- "engine->nullValue() <=> QScriptValue(engine, 0x43211234)",
- "engine->nullValue() <=> QScriptValue(engine, 0x10000)",
- "engine->nullValue() <=> QScriptValue(engine, 0x10001)",
- "engine->nullValue() <=> QScriptValue(engine, qInf())",
- "engine->nullValue() <=> QScriptValue(engine, \"Infinity\")",
- "engine->nullValue() <=> QScriptValue(engine, QString(\"123\"))",
- "engine->nullValue() <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->nullValue() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->nullValue() <=> engine->evaluate(\"true\")",
- "engine->nullValue() <=> engine->evaluate(\"122\")",
- "engine->nullValue() <=> engine->evaluate(\"124\")",
- "engine->nullValue() <=> engine->evaluate(\"123.0\")",
- "engine->nullValue() <=> engine->evaluate(\"6.37e-8\")",
- "engine->nullValue() <=> engine->evaluate(\"0x43211234\")",
- "engine->nullValue() <=> engine->evaluate(\"0x10000\")",
- "engine->nullValue() <=> engine->evaluate(\"0x10001\")",
- "engine->nullValue() <=> engine->evaluate(\"Infinity\")",
- "engine->nullValue() <=> engine->evaluate(\"'123'\")",
- "engine->nullValue() <=> engine->evaluate(\"'12.4'\")",
- "engine->nullValue() <=> engine->newVariant(QVariant(123))",
- "engine->newObject() <=> QScriptValue(\"ciao\")",
- "engine->newObject() <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->newObject() <=> QScriptValue(0, \"ciao\")",
- "engine->newObject() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->newObject() <=> QScriptValue(engine, \"ciao\")",
- "engine->newObject() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->newObject() <=> engine->evaluate(\"Function.prototype\")",
- "engine->newObject() <=> engine->evaluate(\"Object\")",
- "engine->newObject() <=> engine->evaluate(\"Array\")",
- "engine->newObject() <=> engine->evaluate(\"Number\")",
- "engine->newObject() <=> engine->evaluate(\"Function\")",
- "engine->newObject() <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->newObject() <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->newObject() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->newObject() <=> engine->evaluate(\"'ciao'\")",
- "engine->newObject() <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newArray() <=> QScriptValue(true)",
- "engine->newArray() <=> QScriptValue(int(122))",
- "engine->newArray() <=> QScriptValue(uint(124))",
- "engine->newArray() <=> QScriptValue(123.0)",
- "engine->newArray() <=> QScriptValue(6.37e-8)",
- "engine->newArray() <=> QScriptValue(0x43211234)",
- "engine->newArray() <=> QScriptValue(0x10000)",
- "engine->newArray() <=> QScriptValue(0x10001)",
- "engine->newArray() <=> QScriptValue(qInf())",
- "engine->newArray() <=> QScriptValue(\"NaN\")",
- "engine->newArray() <=> QScriptValue(\"Infinity\")",
- "engine->newArray() <=> QScriptValue(\"-Infinity\")",
- "engine->newArray() <=> QScriptValue(\"ciao\")",
- "engine->newArray() <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->newArray() <=> QScriptValue(QString(\"0\"))",
- "engine->newArray() <=> QScriptValue(QString(\"123\"))",
- "engine->newArray() <=> QScriptValue(QString(\"12.4\"))",
- "engine->newArray() <=> QScriptValue(0, true)",
- "engine->newArray() <=> QScriptValue(0, int(122))",
- "engine->newArray() <=> QScriptValue(0, uint(124))",
- "engine->newArray() <=> QScriptValue(0, 123.0)",
- "engine->newArray() <=> QScriptValue(0, 6.37e-8)",
- "engine->newArray() <=> QScriptValue(0, 0x43211234)",
- "engine->newArray() <=> QScriptValue(0, 0x10000)",
- "engine->newArray() <=> QScriptValue(0, 0x10001)",
- "engine->newArray() <=> QScriptValue(0, qInf())",
- "engine->newArray() <=> QScriptValue(0, \"NaN\")",
- "engine->newArray() <=> QScriptValue(0, \"Infinity\")",
- "engine->newArray() <=> QScriptValue(0, \"-Infinity\")",
- "engine->newArray() <=> QScriptValue(0, \"ciao\")",
- "engine->newArray() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->newArray() <=> QScriptValue(0, QString(\"0\"))",
- "engine->newArray() <=> QScriptValue(0, QString(\"123\"))",
- "engine->newArray() <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->newArray() <=> QScriptValue(engine, true)",
- "engine->newArray() <=> QScriptValue(engine, int(122))",
- "engine->newArray() <=> QScriptValue(engine, uint(124))",
- "engine->newArray() <=> QScriptValue(engine, 123.0)",
- "engine->newArray() <=> QScriptValue(engine, 6.37e-8)",
- "engine->newArray() <=> QScriptValue(engine, 0x43211234)",
- "engine->newArray() <=> QScriptValue(engine, 0x10000)",
- "engine->newArray() <=> QScriptValue(engine, 0x10001)",
- "engine->newArray() <=> QScriptValue(engine, qInf())",
- "engine->newArray() <=> QScriptValue(engine, \"NaN\")",
- "engine->newArray() <=> QScriptValue(engine, \"Infinity\")",
- "engine->newArray() <=> QScriptValue(engine, \"-Infinity\")",
- "engine->newArray() <=> QScriptValue(engine, \"ciao\")",
- "engine->newArray() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->newArray() <=> QScriptValue(engine, QString(\"0\"))",
- "engine->newArray() <=> QScriptValue(engine, QString(\"123\"))",
- "engine->newArray() <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->newArray() <=> engine->evaluate(\"Object.prototype\")",
- "engine->newArray() <=> engine->evaluate(\"Function.prototype\")",
- "engine->newArray() <=> engine->evaluate(\"Error.prototype\")",
- "engine->newArray() <=> engine->evaluate(\"Object\")",
- "engine->newArray() <=> engine->evaluate(\"Array\")",
- "engine->newArray() <=> engine->evaluate(\"Number\")",
- "engine->newArray() <=> engine->evaluate(\"Function\")",
- "engine->newArray() <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->newArray() <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->newArray() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->newArray() <=> engine->evaluate(\"/foo/\")",
- "engine->newArray() <=> engine->evaluate(\"new Object()\")",
- "engine->newArray() <=> engine->evaluate(\"new Error()\")",
- "engine->newArray() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->newArray() <=> engine->evaluate(\"Undefined\")",
- "engine->newArray() <=> engine->evaluate(\"Null\")",
- "engine->newArray() <=> engine->evaluate(\"True\")",
- "engine->newArray() <=> engine->evaluate(\"False\")",
- "engine->newArray() <=> engine->evaluate(\"true\")",
- "engine->newArray() <=> engine->evaluate(\"122\")",
- "engine->newArray() <=> engine->evaluate(\"124\")",
- "engine->newArray() <=> engine->evaluate(\"123.0\")",
- "engine->newArray() <=> engine->evaluate(\"6.37e-8\")",
- "engine->newArray() <=> engine->evaluate(\"0x43211234\")",
- "engine->newArray() <=> engine->evaluate(\"0x10000\")",
- "engine->newArray() <=> engine->evaluate(\"0x10001\")",
- "engine->newArray() <=> engine->evaluate(\"Infinity\")",
- "engine->newArray() <=> engine->evaluate(\"'ciao'\")",
- "engine->newArray() <=> engine->evaluate(\"'0'\")",
- "engine->newArray() <=> engine->evaluate(\"'123'\")",
- "engine->newArray() <=> engine->evaluate(\"'12.4'\")",
- "engine->newArray() <=> engine->newObject()",
- "engine->newArray() <=> engine->newArray(10)",
- "engine->newArray() <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newArray() <=> engine->newVariant(QVariant(123))",
- "engine->newArray() <=> engine->newQObject(engine)",
- "engine->newArray(10) <=> QScriptValue(\"NaN\")",
- "engine->newArray(10) <=> QScriptValue(\"Infinity\")",
- "engine->newArray(10) <=> QScriptValue(\"-Infinity\")",
- "engine->newArray(10) <=> QScriptValue(\"ciao\")",
- "engine->newArray(10) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->newArray(10) <=> QScriptValue(QString(\"0\"))",
- "engine->newArray(10) <=> QScriptValue(QString(\"123\"))",
- "engine->newArray(10) <=> QScriptValue(QString(\"12.4\"))",
- "engine->newArray(10) <=> QScriptValue(0, \"NaN\")",
- "engine->newArray(10) <=> QScriptValue(0, \"Infinity\")",
- "engine->newArray(10) <=> QScriptValue(0, \"-Infinity\")",
- "engine->newArray(10) <=> QScriptValue(0, \"ciao\")",
- "engine->newArray(10) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->newArray(10) <=> QScriptValue(0, QString(\"0\"))",
- "engine->newArray(10) <=> QScriptValue(0, QString(\"123\"))",
- "engine->newArray(10) <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->newArray(10) <=> QScriptValue(engine, \"NaN\")",
- "engine->newArray(10) <=> QScriptValue(engine, \"Infinity\")",
- "engine->newArray(10) <=> QScriptValue(engine, \"-Infinity\")",
- "engine->newArray(10) <=> QScriptValue(engine, \"ciao\")",
- "engine->newArray(10) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->newArray(10) <=> QScriptValue(engine, QString(\"0\"))",
- "engine->newArray(10) <=> QScriptValue(engine, QString(\"123\"))",
- "engine->newArray(10) <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->newArray(10) <=> engine->evaluate(\"Object.prototype\")",
- "engine->newArray(10) <=> engine->evaluate(\"Function.prototype\")",
- "engine->newArray(10) <=> engine->evaluate(\"Error.prototype\")",
- "engine->newArray(10) <=> engine->evaluate(\"Object\")",
- "engine->newArray(10) <=> engine->evaluate(\"Array\")",
- "engine->newArray(10) <=> engine->evaluate(\"Number\")",
- "engine->newArray(10) <=> engine->evaluate(\"Function\")",
- "engine->newArray(10) <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->newArray(10) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->newArray(10) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->newArray(10) <=> engine->evaluate(\"/foo/\")",
- "engine->newArray(10) <=> engine->evaluate(\"new Object()\")",
- "engine->newArray(10) <=> engine->evaluate(\"new Error()\")",
- "engine->newArray(10) <=> engine->evaluate(\"Undefined\")",
- "engine->newArray(10) <=> engine->evaluate(\"Null\")",
- "engine->newArray(10) <=> engine->evaluate(\"True\")",
- "engine->newArray(10) <=> engine->evaluate(\"False\")",
- "engine->newArray(10) <=> engine->evaluate(\"'ciao'\")",
- "engine->newArray(10) <=> engine->evaluate(\"'0'\")",
- "engine->newArray(10) <=> engine->evaluate(\"'123'\")",
- "engine->newArray(10) <=> engine->evaluate(\"'12.4'\")",
- "engine->newArray(10) <=> engine->newObject()",
- "engine->newArray(10) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newArray(10) <=> engine->newQObject(engine)",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(\"ciao\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, \"ciao\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, \"ciao\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function.prototype\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Array\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Number\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"'ciao'\")",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(uint(124))",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(0x43211234)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(0x10000)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(0x10001)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(qInf())",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(\"Infinity\")",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(0, uint(124))",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x43211234)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10000)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10001)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(0, qInf())",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(0, \"Infinity\")",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, uint(124))",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x43211234)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10000)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10001)",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, qInf())",
- "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, \"Infinity\")",
- "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"124\")",
- "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x43211234\")",
- "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10000\")",
- "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10001\")",
- "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Infinity\")",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(true)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(int(122))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(uint(124))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(123.0)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(6.37e-8)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0x43211234)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0x10000)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0x10001)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(qInf())",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(\"Infinity\")",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"123\"))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"12.4\"))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, true)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, int(122))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, uint(124))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 123.0)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 6.37e-8)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x43211234)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10000)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10001)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, qInf())",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, \"Infinity\")",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"123\"))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, true)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, int(122))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, uint(124))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 123.0)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 6.37e-8)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x43211234)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10000)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10001)",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, qInf())",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, \"Infinity\")",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"123\"))",
- "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"true\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"122\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"124\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"123.0\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"6.37e-8\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x43211234\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10000\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10001\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Infinity\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'123'\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'12.4'\")",
- "engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(123))",
- "engine->newQObject(0) <=> QScriptValue(true)",
- "engine->newQObject(0) <=> QScriptValue(int(122))",
- "engine->newQObject(0) <=> QScriptValue(uint(124))",
- "engine->newQObject(0) <=> QScriptValue(123.0)",
- "engine->newQObject(0) <=> QScriptValue(6.37e-8)",
- "engine->newQObject(0) <=> QScriptValue(0x43211234)",
- "engine->newQObject(0) <=> QScriptValue(0x10000)",
- "engine->newQObject(0) <=> QScriptValue(0x10001)",
- "engine->newQObject(0) <=> QScriptValue(qInf())",
- "engine->newQObject(0) <=> QScriptValue(\"Infinity\")",
- "engine->newQObject(0) <=> QScriptValue(QString(\"123\"))",
- "engine->newQObject(0) <=> QScriptValue(QString(\"12.4\"))",
- "engine->newQObject(0) <=> QScriptValue(0, true)",
- "engine->newQObject(0) <=> QScriptValue(0, int(122))",
- "engine->newQObject(0) <=> QScriptValue(0, uint(124))",
- "engine->newQObject(0) <=> QScriptValue(0, 123.0)",
- "engine->newQObject(0) <=> QScriptValue(0, 6.37e-8)",
- "engine->newQObject(0) <=> QScriptValue(0, 0x43211234)",
- "engine->newQObject(0) <=> QScriptValue(0, 0x10000)",
- "engine->newQObject(0) <=> QScriptValue(0, 0x10001)",
- "engine->newQObject(0) <=> QScriptValue(0, qInf())",
- "engine->newQObject(0) <=> QScriptValue(0, \"Infinity\")",
- "engine->newQObject(0) <=> QScriptValue(0, QString(\"123\"))",
- "engine->newQObject(0) <=> QScriptValue(0, QString(\"12.3\"))",
- "engine->newQObject(0) <=> QScriptValue(engine, true)",
- "engine->newQObject(0) <=> QScriptValue(engine, int(122))",
- "engine->newQObject(0) <=> QScriptValue(engine, uint(124))",
- "engine->newQObject(0) <=> QScriptValue(engine, 123.0)",
- "engine->newQObject(0) <=> QScriptValue(engine, 6.37e-8)",
- "engine->newQObject(0) <=> QScriptValue(engine, 0x43211234)",
- "engine->newQObject(0) <=> QScriptValue(engine, 0x10000)",
- "engine->newQObject(0) <=> QScriptValue(engine, 0x10001)",
- "engine->newQObject(0) <=> QScriptValue(engine, qInf())",
- "engine->newQObject(0) <=> QScriptValue(engine, \"Infinity\")",
- "engine->newQObject(0) <=> QScriptValue(engine, QString(\"123\"))",
- "engine->newQObject(0) <=> QScriptValue(engine, QString(\"1.23\"))",
- "engine->newQObject(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->newQObject(0) <=> engine->evaluate(\"true\")",
- "engine->newQObject(0) <=> engine->evaluate(\"122\")",
- "engine->newQObject(0) <=> engine->evaluate(\"124\")",
- "engine->newQObject(0) <=> engine->evaluate(\"123.0\")",
- "engine->newQObject(0) <=> engine->evaluate(\"6.37e-8\")",
- "engine->newQObject(0) <=> engine->evaluate(\"0x43211234\")",
- "engine->newQObject(0) <=> engine->evaluate(\"0x10000\")",
- "engine->newQObject(0) <=> engine->evaluate(\"0x10001\")",
- "engine->newQObject(0) <=> engine->evaluate(\"Infinity\")",
- "engine->newQObject(0) <=> engine->evaluate(\"'123'\")",
- "engine->newQObject(0) <=> engine->evaluate(\"'12.4'\")",
- "engine->newQObject(0) <=> engine->newVariant(QVariant(123))",
- "engine->newQObject(engine) <=> QScriptValue(\"ciao\")",
- "engine->newQObject(engine) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
- "engine->newQObject(engine) <=> QScriptValue(0, \"ciao\")",
- "engine->newQObject(engine) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "engine->newQObject(engine) <=> QScriptValue(engine, \"ciao\")",
- "engine->newQObject(engine) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "engine->newQObject(engine) <=> engine->evaluate(\"Object.prototype\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"Function.prototype\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"Object\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"Array\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"Number\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"Function\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 1; })\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"new Object()\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"Undefined\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"Null\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"True\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"False\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"'ciao'\")",
- "engine->newQObject(engine) <=> engine->newObject()",
- "engine->newQObject(engine) <=> engine->newQMetaObject(&QObject::staticMetaObject)",};
-
-void tst_QScriptValue::lessThan_makeData(const char *expr)
-{
- static QSet<QString> equals;
- if (equals.isEmpty()) {
- equals.reserve(5063);
- for (unsigned i = 0; i < 5063; ++i)
- equals.insert(lessThan_array[i]);
- }
- QHash<QString, QScriptValue>::const_iterator it;
- for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
- QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
- newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
- }
-}
-
-void tst_QScriptValue::lessThan_test(const char *, const QScriptValue& value)
-{
- QFETCH(QScriptValue, other);
- QFETCH(bool, expected);
- QCOMPARE(value.lessThan(other), expected);
-}
-
-DEFINE_TEST_FUNCTION(lessThan)
-
-
-void tst_QScriptValue::instanceOf_initData()
-{
- QTest::addColumn<QScriptValue>("other");
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString instanceOf_array [] = {
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Object\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Number\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")",
- "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")",
- "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")",
- "engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")",
- "engine->newObject() <=> engine->evaluate(\"Object\")",
- "engine->newArray() <=> engine->evaluate(\"Object\")",
- "engine->newArray() <=> engine->evaluate(\"Array\")",
- "engine->newArray(10) <=> engine->evaluate(\"Object\")",
- "engine->newArray(10) <=> engine->evaluate(\"Array\")",
- "engine->newDate(QDateTime()) <=> engine->evaluate(\"Object\")",
- "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")",
- "engine->newVariant(QVariant()) <=> engine->evaluate(\"Object\")",
- "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Object\")",
- "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Object\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"Object\")",};
-
-void tst_QScriptValue::instanceOf_makeData(const char *expr)
-{
- static QSet<QString> equals;
- if (equals.isEmpty()) {
- equals.reserve(40);
- for (unsigned i = 0; i < 40; ++i)
- equals.insert(instanceOf_array[i]);
- }
- QHash<QString, QScriptValue>::const_iterator it;
- for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
- QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
- newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
- }
-}
-
-void tst_QScriptValue::instanceOf_test(const char *, const QScriptValue& value)
-{
- QFETCH(QScriptValue, other);
- QFETCH(bool, expected);
- QCOMPARE(value.instanceOf(other), expected);
-}
-
-DEFINE_TEST_FUNCTION(instanceOf)
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_init.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_init.cpp
deleted file mode 100644
index a9eb2cad87..0000000000
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_init.cpp
+++ /dev/null
@@ -1,198 +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 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-*************** This file has been generated. DO NOT MODIFY! ****************
-****************************************************************************/
-
-#include "tst_qscriptvalue.h"
-
-
-void tst_QScriptValue::initScriptValues()
-{
- m_values.clear();
- if (engine)
- delete engine;
- engine = new QScriptEngine;
- DEFINE_TEST_VALUE(QScriptValue());
- DEFINE_TEST_VALUE(QScriptValue(QScriptValue::UndefinedValue));
- DEFINE_TEST_VALUE(QScriptValue(QScriptValue::NullValue));
- DEFINE_TEST_VALUE(QScriptValue(true));
- DEFINE_TEST_VALUE(QScriptValue(false));
- DEFINE_TEST_VALUE(QScriptValue(int(122)));
- DEFINE_TEST_VALUE(QScriptValue(uint(124)));
- DEFINE_TEST_VALUE(QScriptValue(0));
- DEFINE_TEST_VALUE(QScriptValue(0.0));
- DEFINE_TEST_VALUE(QScriptValue(123.0));
- DEFINE_TEST_VALUE(QScriptValue(6.37e-8));
- DEFINE_TEST_VALUE(QScriptValue(-6.37e-8));
- DEFINE_TEST_VALUE(QScriptValue(0x43211234));
- DEFINE_TEST_VALUE(QScriptValue(0x10000));
- DEFINE_TEST_VALUE(QScriptValue(0x10001));
- DEFINE_TEST_VALUE(QScriptValue(qSNaN()));
- DEFINE_TEST_VALUE(QScriptValue(qQNaN()));
- DEFINE_TEST_VALUE(QScriptValue(qInf()));
- DEFINE_TEST_VALUE(QScriptValue(-qInf()));
- DEFINE_TEST_VALUE(QScriptValue("NaN"));
- DEFINE_TEST_VALUE(QScriptValue("Infinity"));
- DEFINE_TEST_VALUE(QScriptValue("-Infinity"));
- DEFINE_TEST_VALUE(QScriptValue("ciao"));
- DEFINE_TEST_VALUE(QScriptValue(QString::fromLatin1("ciao")));
- DEFINE_TEST_VALUE(QScriptValue(QString("")));
- DEFINE_TEST_VALUE(QScriptValue(QString()));
- DEFINE_TEST_VALUE(QScriptValue(QString("0")));
- DEFINE_TEST_VALUE(QScriptValue(QString("123")));
- DEFINE_TEST_VALUE(QScriptValue(QString("12.4")));
- DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::UndefinedValue));
- DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::NullValue));
- DEFINE_TEST_VALUE(QScriptValue(0, true));
- DEFINE_TEST_VALUE(QScriptValue(0, false));
- DEFINE_TEST_VALUE(QScriptValue(0, int(122)));
- DEFINE_TEST_VALUE(QScriptValue(0, uint(124)));
- DEFINE_TEST_VALUE(QScriptValue(0, 0));
- DEFINE_TEST_VALUE(QScriptValue(0, 0.0));
- DEFINE_TEST_VALUE(QScriptValue(0, 123.0));
- DEFINE_TEST_VALUE(QScriptValue(0, 6.37e-8));
- DEFINE_TEST_VALUE(QScriptValue(0, -6.37e-8));
- DEFINE_TEST_VALUE(QScriptValue(0, 0x43211234));
- DEFINE_TEST_VALUE(QScriptValue(0, 0x10000));
- DEFINE_TEST_VALUE(QScriptValue(0, 0x10001));
- DEFINE_TEST_VALUE(QScriptValue(0, qSNaN()));
- DEFINE_TEST_VALUE(QScriptValue(0, qQNaN()));
- DEFINE_TEST_VALUE(QScriptValue(0, qInf()));
- DEFINE_TEST_VALUE(QScriptValue(0, -qInf()));
- DEFINE_TEST_VALUE(QScriptValue(0, "NaN"));
- DEFINE_TEST_VALUE(QScriptValue(0, "Infinity"));
- DEFINE_TEST_VALUE(QScriptValue(0, "-Infinity"));
- DEFINE_TEST_VALUE(QScriptValue(0, "ciao"));
- DEFINE_TEST_VALUE(QScriptValue(0, QString::fromLatin1("ciao")));
- DEFINE_TEST_VALUE(QScriptValue(0, QString("")));
- DEFINE_TEST_VALUE(QScriptValue(0, QString()));
- DEFINE_TEST_VALUE(QScriptValue(0, QString("0")));
- DEFINE_TEST_VALUE(QScriptValue(0, QString("123")));
- DEFINE_TEST_VALUE(QScriptValue(0, QString("12.3")));
- DEFINE_TEST_VALUE(QScriptValue(engine, QScriptValue::UndefinedValue));
- DEFINE_TEST_VALUE(QScriptValue(engine, QScriptValue::NullValue));
- DEFINE_TEST_VALUE(QScriptValue(engine, true));
- DEFINE_TEST_VALUE(QScriptValue(engine, false));
- DEFINE_TEST_VALUE(QScriptValue(engine, int(122)));
- DEFINE_TEST_VALUE(QScriptValue(engine, uint(124)));
- DEFINE_TEST_VALUE(QScriptValue(engine, 0));
- DEFINE_TEST_VALUE(QScriptValue(engine, 0.0));
- DEFINE_TEST_VALUE(QScriptValue(engine, 123.0));
- DEFINE_TEST_VALUE(QScriptValue(engine, 6.37e-8));
- DEFINE_TEST_VALUE(QScriptValue(engine, -6.37e-8));
- DEFINE_TEST_VALUE(QScriptValue(engine, 0x43211234));
- DEFINE_TEST_VALUE(QScriptValue(engine, 0x10000));
- DEFINE_TEST_VALUE(QScriptValue(engine, 0x10001));
- DEFINE_TEST_VALUE(QScriptValue(engine, qSNaN()));
- DEFINE_TEST_VALUE(QScriptValue(engine, qQNaN()));
- DEFINE_TEST_VALUE(QScriptValue(engine, qInf()));
- DEFINE_TEST_VALUE(QScriptValue(engine, -qInf()));
- DEFINE_TEST_VALUE(QScriptValue(engine, "NaN"));
- DEFINE_TEST_VALUE(QScriptValue(engine, "Infinity"));
- DEFINE_TEST_VALUE(QScriptValue(engine, "-Infinity"));
- DEFINE_TEST_VALUE(QScriptValue(engine, "ciao"));
- DEFINE_TEST_VALUE(QScriptValue(engine, QString::fromLatin1("ciao")));
- DEFINE_TEST_VALUE(QScriptValue(engine, QString("")));
- DEFINE_TEST_VALUE(QScriptValue(engine, QString()));
- DEFINE_TEST_VALUE(QScriptValue(engine, QString("0")));
- DEFINE_TEST_VALUE(QScriptValue(engine, QString("123")));
- DEFINE_TEST_VALUE(QScriptValue(engine, QString("1.23")));
- DEFINE_TEST_VALUE(engine->evaluate("[]"));
- DEFINE_TEST_VALUE(engine->evaluate("{}"));
- DEFINE_TEST_VALUE(engine->evaluate("Object.prototype"));
- DEFINE_TEST_VALUE(engine->evaluate("Date.prototype"));
- DEFINE_TEST_VALUE(engine->evaluate("Array.prototype"));
- DEFINE_TEST_VALUE(engine->evaluate("Function.prototype"));
- DEFINE_TEST_VALUE(engine->evaluate("Error.prototype"));
- DEFINE_TEST_VALUE(engine->evaluate("Object"));
- DEFINE_TEST_VALUE(engine->evaluate("Array"));
- DEFINE_TEST_VALUE(engine->evaluate("Number"));
- DEFINE_TEST_VALUE(engine->evaluate("Function"));
- DEFINE_TEST_VALUE(engine->evaluate("(function() { return 1; })"));
- DEFINE_TEST_VALUE(engine->evaluate("(function() { return 'ciao'; })"));
- DEFINE_TEST_VALUE(engine->evaluate("(function() { throw new Error('foo'); })"));
- DEFINE_TEST_VALUE(engine->evaluate("/foo/"));
- DEFINE_TEST_VALUE(engine->evaluate("new Object()"));
- DEFINE_TEST_VALUE(engine->evaluate("new Array()"));
- DEFINE_TEST_VALUE(engine->evaluate("new Error()"));
- DEFINE_TEST_VALUE(engine->evaluate("a = new Object(); a.foo = 22; a.foo"));
- DEFINE_TEST_VALUE(engine->evaluate("Undefined"));
- DEFINE_TEST_VALUE(engine->evaluate("Null"));
- DEFINE_TEST_VALUE(engine->evaluate("True"));
- DEFINE_TEST_VALUE(engine->evaluate("False"));
- DEFINE_TEST_VALUE(engine->evaluate("undefined"));
- DEFINE_TEST_VALUE(engine->evaluate("null"));
- DEFINE_TEST_VALUE(engine->evaluate("true"));
- DEFINE_TEST_VALUE(engine->evaluate("false"));
- DEFINE_TEST_VALUE(engine->evaluate("122"));
- DEFINE_TEST_VALUE(engine->evaluate("124"));
- DEFINE_TEST_VALUE(engine->evaluate("0"));
- DEFINE_TEST_VALUE(engine->evaluate("0.0"));
- DEFINE_TEST_VALUE(engine->evaluate("123.0"));
- DEFINE_TEST_VALUE(engine->evaluate("6.37e-8"));
- DEFINE_TEST_VALUE(engine->evaluate("-6.37e-8"));
- DEFINE_TEST_VALUE(engine->evaluate("0x43211234"));
- DEFINE_TEST_VALUE(engine->evaluate("0x10000"));
- DEFINE_TEST_VALUE(engine->evaluate("0x10001"));
- DEFINE_TEST_VALUE(engine->evaluate("NaN"));
- DEFINE_TEST_VALUE(engine->evaluate("Infinity"));
- DEFINE_TEST_VALUE(engine->evaluate("-Infinity"));
- DEFINE_TEST_VALUE(engine->evaluate("'ciao'"));
- DEFINE_TEST_VALUE(engine->evaluate("''"));
- DEFINE_TEST_VALUE(engine->evaluate("'0'"));
- DEFINE_TEST_VALUE(engine->evaluate("'123'"));
- DEFINE_TEST_VALUE(engine->evaluate("'12.4'"));
- DEFINE_TEST_VALUE(engine->nullValue());
- DEFINE_TEST_VALUE(engine->undefinedValue());
- DEFINE_TEST_VALUE(engine->newObject());
- DEFINE_TEST_VALUE(engine->newArray());
- DEFINE_TEST_VALUE(engine->newArray(10));
- DEFINE_TEST_VALUE(engine->newDate(QDateTime()));
- DEFINE_TEST_VALUE(engine->newQMetaObject(&QObject::staticMetaObject));
- DEFINE_TEST_VALUE(engine->newVariant(QVariant()));
- DEFINE_TEST_VALUE(engine->newVariant(QVariant(123)));
- DEFINE_TEST_VALUE(engine->newVariant(QVariant(false)));
- DEFINE_TEST_VALUE(engine->newQObject(0));
- DEFINE_TEST_VALUE(engine->newQObject(engine));
-}
-
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_isXXX.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_isXXX.cpp
deleted file mode 100644
index 106043b19f..0000000000
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_isXXX.cpp
+++ /dev/null
@@ -1,830 +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 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-*************** This file has been generated. DO NOT MODIFY! ****************
-****************************************************************************/
-
-#include "tst_qscriptvalue.h"
-
-
-void tst_QScriptValue::isValid_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isValid_array [] = {
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-
-void tst_QScriptValue::isValid_makeData(const char* expr)
-{
- static QSet<QString> isValid;
- if (isValid.isEmpty()) {
- isValid.reserve(141);
- for (unsigned i = 0; i < 141; ++i)
- isValid.insert(isValid_array[i]);
- }
- newRow(expr) << isValid.contains(expr);
-}
-
-void tst_QScriptValue::isValid_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isValid(), expected);
- QCOMPARE(value.isValid(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isValid)
-
-
-void tst_QScriptValue::isBool_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isBool_array [] = {
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",};
-
-void tst_QScriptValue::isBool_makeData(const char* expr)
-{
- static QSet<QString> isBool;
- if (isBool.isEmpty()) {
- isBool.reserve(8);
- for (unsigned i = 0; i < 8; ++i)
- isBool.insert(isBool_array[i]);
- }
- newRow(expr) << isBool.contains(expr);
-}
-
-void tst_QScriptValue::isBool_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isBool(), expected);
- QCOMPARE(value.isBool(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isBool)
-
-
-void tst_QScriptValue::isBoolean_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isBoolean_array [] = {
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",};
-
-void tst_QScriptValue::isBoolean_makeData(const char* expr)
-{
- static QSet<QString> isBoolean;
- if (isBoolean.isEmpty()) {
- isBoolean.reserve(8);
- for (unsigned i = 0; i < 8; ++i)
- isBoolean.insert(isBoolean_array[i]);
- }
- newRow(expr) << isBoolean.contains(expr);
-}
-
-void tst_QScriptValue::isBoolean_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isBoolean(), expected);
- QCOMPARE(value.isBoolean(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isBoolean)
-
-
-void tst_QScriptValue::isNumber_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isNumber_array [] = {
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",};
-
-void tst_QScriptValue::isNumber_makeData(const char* expr)
-{
- static QSet<QString> isNumber;
- if (isNumber.isEmpty()) {
- isNumber.reserve(56);
- for (unsigned i = 0; i < 56; ++i)
- isNumber.insert(isNumber_array[i]);
- }
- newRow(expr) << isNumber.contains(expr);
-}
-
-void tst_QScriptValue::isNumber_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isNumber(), expected);
- QCOMPARE(value.isNumber(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isNumber)
-
-
-void tst_QScriptValue::isFunction_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isFunction_array [] = {
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->newQMetaObject(&QObject::staticMetaObject)",};
-
-void tst_QScriptValue::isFunction_makeData(const char* expr)
-{
- static QSet<QString> isFunction;
- if (isFunction.isEmpty()) {
- isFunction.reserve(10);
- for (unsigned i = 0; i < 10; ++i)
- isFunction.insert(isFunction_array[i]);
- }
- newRow(expr) << isFunction.contains(expr);
-}
-
-void tst_QScriptValue::isFunction_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isFunction(), expected);
- QCOMPARE(value.isFunction(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isFunction)
-
-
-void tst_QScriptValue::isNull_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isNull_array [] = {
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "engine->evaluate(\"null\")",
- "engine->nullValue()",
- "engine->newQObject(0)",};
-
-void tst_QScriptValue::isNull_makeData(const char* expr)
-{
- static QSet<QString> isNull;
- if (isNull.isEmpty()) {
- isNull.reserve(6);
- for (unsigned i = 0; i < 6; ++i)
- isNull.insert(isNull_array[i]);
- }
- newRow(expr) << isNull.contains(expr);
-}
-
-void tst_QScriptValue::isNull_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isNull(), expected);
- QCOMPARE(value.isNull(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isNull)
-
-
-void tst_QScriptValue::isString_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isString_array [] = {
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",};
-
-void tst_QScriptValue::isString_makeData(const char* expr)
-{
- static QSet<QString> isString;
- if (isString.isEmpty()) {
- isString.reserve(35);
- for (unsigned i = 0; i < 35; ++i)
- isString.insert(isString_array[i]);
- }
- newRow(expr) << isString.contains(expr);
-}
-
-void tst_QScriptValue::isString_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isString(), expected);
- QCOMPARE(value.isString(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isString)
-
-
-void tst_QScriptValue::isUndefined_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isUndefined_array [] = {
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"undefined\")",
- "engine->undefinedValue()",};
-
-void tst_QScriptValue::isUndefined_makeData(const char* expr)
-{
- static QSet<QString> isUndefined;
- if (isUndefined.isEmpty()) {
- isUndefined.reserve(6);
- for (unsigned i = 0; i < 6; ++i)
- isUndefined.insert(isUndefined_array[i]);
- }
- newRow(expr) << isUndefined.contains(expr);
-}
-
-void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isUndefined(), expected);
- QCOMPARE(value.isUndefined(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isUndefined)
-
-
-void tst_QScriptValue::isVariant_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isVariant_array [] = {
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",};
-
-void tst_QScriptValue::isVariant_makeData(const char* expr)
-{
- static QSet<QString> isVariant;
- if (isVariant.isEmpty()) {
- isVariant.reserve(3);
- for (unsigned i = 0; i < 3; ++i)
- isVariant.insert(isVariant_array[i]);
- }
- newRow(expr) << isVariant.contains(expr);
-}
-
-void tst_QScriptValue::isVariant_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isVariant(), expected);
- QCOMPARE(value.isVariant(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isVariant)
-
-
-void tst_QScriptValue::isQObject_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isQObject_array [] = {
- "engine->newQObject(engine)",};
-
-void tst_QScriptValue::isQObject_makeData(const char* expr)
-{
- static QSet<QString> isQObject;
- if (isQObject.isEmpty()) {
- isQObject.reserve(1);
- for (unsigned i = 0; i < 1; ++i)
- isQObject.insert(isQObject_array[i]);
- }
- newRow(expr) << isQObject.contains(expr);
-}
-
-void tst_QScriptValue::isQObject_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isQObject(), expected);
- QCOMPARE(value.isQObject(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isQObject)
-
-
-void tst_QScriptValue::isQMetaObject_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isQMetaObject_array [] = {
- "engine->newQMetaObject(&QObject::staticMetaObject)",};
-
-void tst_QScriptValue::isQMetaObject_makeData(const char* expr)
-{
- static QSet<QString> isQMetaObject;
- if (isQMetaObject.isEmpty()) {
- isQMetaObject.reserve(1);
- for (unsigned i = 0; i < 1; ++i)
- isQMetaObject.insert(isQMetaObject_array[i]);
- }
- newRow(expr) << isQMetaObject.contains(expr);
-}
-
-void tst_QScriptValue::isQMetaObject_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isQMetaObject(), expected);
- QCOMPARE(value.isQMetaObject(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isQMetaObject)
-
-
-void tst_QScriptValue::isObject_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isObject_array [] = {
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(engine)",};
-
-void tst_QScriptValue::isObject_makeData(const char* expr)
-{
- static QSet<QString> isObject;
- if (isObject.isEmpty()) {
- isObject.reserve(30);
- for (unsigned i = 0; i < 30; ++i)
- isObject.insert(isObject_array[i]);
- }
- newRow(expr) << isObject.contains(expr);
-}
-
-void tst_QScriptValue::isObject_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isObject(), expected);
- QCOMPARE(value.isObject(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isObject)
-
-
-void tst_QScriptValue::isDate_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isDate_array [] = {
- "engine->evaluate(\"Date.prototype\")",
- "engine->newDate(QDateTime())",};
-
-void tst_QScriptValue::isDate_makeData(const char* expr)
-{
- static QSet<QString> isDate;
- if (isDate.isEmpty()) {
- isDate.reserve(2);
- for (unsigned i = 0; i < 2; ++i)
- isDate.insert(isDate_array[i]);
- }
- newRow(expr) << isDate.contains(expr);
-}
-
-void tst_QScriptValue::isDate_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isDate(), expected);
- QCOMPARE(value.isDate(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isDate)
-
-
-void tst_QScriptValue::isRegExp_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isRegExp_array [] = {
- "engine->evaluate(\"/foo/\")",};
-
-void tst_QScriptValue::isRegExp_makeData(const char* expr)
-{
- static QSet<QString> isRegExp;
- if (isRegExp.isEmpty()) {
- isRegExp.reserve(1);
- for (unsigned i = 0; i < 1; ++i)
- isRegExp.insert(isRegExp_array[i]);
- }
- newRow(expr) << isRegExp.contains(expr);
-}
-
-void tst_QScriptValue::isRegExp_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isRegExp(), expected);
- QCOMPARE(value.isRegExp(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isRegExp)
-
-
-void tst_QScriptValue::isArray_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isArray_array [] = {
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"new Array()\")",
- "engine->newArray()",
- "engine->newArray(10)",};
-
-void tst_QScriptValue::isArray_makeData(const char* expr)
-{
- static QSet<QString> isArray;
- if (isArray.isEmpty()) {
- isArray.reserve(5);
- for (unsigned i = 0; i < 5; ++i)
- isArray.insert(isArray_array[i]);
- }
- newRow(expr) << isArray.contains(expr);
-}
-
-void tst_QScriptValue::isArray_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isArray(), expected);
- QCOMPARE(value.isArray(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isArray)
-
-
-void tst_QScriptValue::isError_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString isError_array [] = {
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",};
-
-void tst_QScriptValue::isError_makeData(const char* expr)
-{
- static QSet<QString> isError;
- if (isError.isEmpty()) {
- isError.reserve(6);
- for (unsigned i = 0; i < 6; ++i)
- isError.insert(isError_array[i]);
- }
- newRow(expr) << isError.contains(expr);
-}
-
-void tst_QScriptValue::isError_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.isError(), expected);
- QCOMPARE(value.isError(), expected);
-}
-
-DEFINE_TEST_FUNCTION(isError)
-
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_toXXX.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_toXXX.cpp
deleted file mode 100644
index 754f4e0b25..0000000000
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_toXXX.cpp
+++ /dev/null
@@ -1,1897 +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 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-*************** This file has been generated. DO NOT MODIFY! ****************
-****************************************************************************/
-
-#include "tst_qscriptvalue.h"
-
-
-
-void tst_QScriptValue::toString_initData()
-{
- QTest::addColumn<QString>("expected");
- initScriptValues();
-}
-
-static QString toString_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-
-static QString toString_valueArray [] = {
- "", "undefined",
- "null", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.4", "undefined",
- "null", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.3", "undefined",
- "null", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "1.23", "",
- "undefined", "[object Object]",
- "Invalid Date", "",
- "function () {\n [native code]\n}", "Error: Unknown error",
- "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
- "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
- "function () { return 1; }", "function () { return 'ciao'; }",
- "function () { throw new Error('foo'); }", "/foo/",
- "[object Object]", "",
- "Error: Unknown error", "22",
- "ReferenceError: Can't find variable: Undefined", "ReferenceError: Can't find variable: Null",
- "ReferenceError: Can't find variable: True", "ReferenceError: Can't find variable: False",
- "undefined", "null",
- "true", "false",
- "122", "124",
- "0", "0",
- "123", "6.37e-8",
- "-6.37e-8", "1126240820",
- "65536", "65537",
- "NaN", "Infinity",
- "-Infinity", "ciao",
- "", "0",
- "123", "12.4",
- "null", "undefined",
- "[object Object]", "",
- ",,,,,,,,,", "Invalid Date",
- "[object QMetaObject]", "undefined",
- "123", "false",
- "null", "QScriptEngine(name = \"\")", };
-
-void tst_QScriptValue::toString_makeData(const char* expr)
-{
- static QHash<QString, QString> toString;
- if (toString.isEmpty()) {
- toString.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- toString.insert(toString_tagArray[i], toString_valueArray[i]);
- }
- newRow(expr) << toString.value(expr);
-}
-
-void tst_QScriptValue::toString_test(const char*, const QScriptValue& value)
-{
- QFETCH(QString, expected);
- QCOMPARE(value.toString(), expected);
- QCOMPARE(value.toString(), expected);
-}
-
-DEFINE_TEST_FUNCTION(toString)
-
-
-void tst_QScriptValue::toNumber_initData()
-{
- QTest::addColumn<qsreal>("expected");
- initScriptValues();
-}
-
-static QString toNumber_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qsreal toNumber_valueArray [] = {
- 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
- 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
- qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
- 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
- 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
- qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
- 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
- 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
- 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
- qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
- qQNaN(), 0, qQNaN(), 22, qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0,
- 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820,
- 65536, 65537, qQNaN(), qInf(), qInf(), qQNaN(), 0, 0, 123, 12.4,
- 0, qQNaN(), qQNaN(), 0, qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0,
- 0, qQNaN(), };
-void tst_QScriptValue::toNumber_makeData(const char* expr)
-{
- static QHash<QString, qsreal> toNumber;
- if (toNumber.isEmpty()) {
- toNumber.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- toNumber.insert(toNumber_tagArray[i], toNumber_valueArray[i]);
- }
- newRow(expr) << toNumber.value(expr);
-}
-
-void tst_QScriptValue::toNumber_test(const char*, const QScriptValue& value)
-{
- QFETCH(qsreal, expected);
- if (qIsNaN(expected)) {
- QVERIFY(qIsNaN(value.toNumber()));
- return;
- }
- if (qIsInf(expected)) {
- QVERIFY(qIsInf(value.toNumber()));
- QVERIFY(qIsInf(value.toNumber()));
- return;
- }
- QCOMPARE(value.toNumber(), expected);
- QCOMPARE(value.toNumber(), expected);
-}
-
-DEFINE_TEST_FUNCTION(toNumber)
-
-
-void tst_QScriptValue::toBool_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString toBool_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-
-static bool toBool_valueArray [] = {
- false, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, true,
- false, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, false,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- false, true,
- true, true,
- false, true,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- true, true,
- false, true, };
-
-void tst_QScriptValue::toBool_makeData(const char* expr)
-{
- static QHash<QString, bool> toBool;
- if (toBool.isEmpty()) {
- toBool.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- toBool.insert(toBool_tagArray[i], toBool_valueArray[i]);
- }
- newRow(expr) << toBool.value(expr);
-}
-
-void tst_QScriptValue::toBool_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.toBool(), expected);
- QCOMPARE(value.toBool(), expected);
-}
-
-DEFINE_TEST_FUNCTION(toBool)
-
-
-void tst_QScriptValue::toBoolean_initData()
-{
- QTest::addColumn<bool>("expected");
- initScriptValues();
-}
-
-static QString toBoolean_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-
-static bool toBoolean_valueArray [] = {
- false, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, true,
- false, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, false,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- false, true,
- true, true,
- false, true,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- true, true,
- false, true, };
-
-void tst_QScriptValue::toBoolean_makeData(const char* expr)
-{
- static QHash<QString, bool> toBoolean;
- if (toBoolean.isEmpty()) {
- toBoolean.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- toBoolean.insert(toBoolean_tagArray[i], toBoolean_valueArray[i]);
- }
- newRow(expr) << toBoolean.value(expr);
-}
-
-void tst_QScriptValue::toBoolean_test(const char*, const QScriptValue& value)
-{
- QFETCH(bool, expected);
- QCOMPARE(value.toBoolean(), expected);
- QCOMPARE(value.toBoolean(), expected);
-}
-
-DEFINE_TEST_FUNCTION(toBoolean)
-
-
-void tst_QScriptValue::toInteger_initData()
-{
- QTest::addColumn<qsreal>("expected");
- initScriptValues();
-}
-
-static QString toInteger_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qsreal toInteger_valueArray [] = {
- 0, 0, 0, 1, 0, 122, 124, 0, 0, 123,
- 0, 0, 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0,
- qInf(), qInf(), 0, 0, 0, 0, 0, 123, 12, 0,
- 0, 1, 0, 122, 124, 0, 0, 123, 0, 0,
- 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(),
- 0, 0, 0, 0, 0, 123, 12, 0, 0, 1,
- 0, 122, 124, 0, 0, 123, 0, 0, 1126240820, 65536,
- 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(), 0, 0,
- 0, 0, 0, 123, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 1, 0, 122, 124, 0, 0, 123, 0, 0, 1126240820,
- 65536, 65537, 0, qInf(), qInf(), 0, 0, 0, 123, 12,
- 0, 0, 0, 0, 0, 0, 0, 0, 123, 0,
- 0, 0, };
-void tst_QScriptValue::toInteger_makeData(const char* expr)
-{
- static QHash<QString, qsreal> toInteger;
- if (toInteger.isEmpty()) {
- toInteger.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- toInteger.insert(toInteger_tagArray[i], toInteger_valueArray[i]);
- }
- newRow(expr) << toInteger.value(expr);
-}
-
-void tst_QScriptValue::toInteger_test(const char*, const QScriptValue& value)
-{
- QFETCH(qsreal, expected);
- if (qIsInf(expected)) {
- QVERIFY(qIsInf(value.toInteger()));
- QVERIFY(qIsInf(value.toInteger()));
- return;
- }
- QCOMPARE(value.toInteger(), expected);
- QCOMPARE(value.toInteger(), expected);
-}
-
-DEFINE_TEST_FUNCTION(toInteger)
-
-
-void tst_QScriptValue::toInt32_initData()
-{
- QTest::addColumn<qint32>("expected");
- initScriptValues();
-}
-
-static QString toInt32_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-
-static qint32 toInt32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
-
-void tst_QScriptValue::toInt32_makeData(const char* expr)
-{
- static QHash<QString, qint32> toInt32;
- if (toInt32.isEmpty()) {
- toInt32.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- toInt32.insert(toInt32_tagArray[i], toInt32_valueArray[i]);
- }
- newRow(expr) << toInt32.value(expr);
-}
-
-void tst_QScriptValue::toInt32_test(const char*, const QScriptValue& value)
-{
- QFETCH(qint32, expected);
- QCOMPARE(value.toInt32(), expected);
- QCOMPARE(value.toInt32(), expected);
-}
-
-DEFINE_TEST_FUNCTION(toInt32)
-
-
-void tst_QScriptValue::toUInt32_initData()
-{
- QTest::addColumn<quint32>("expected");
- initScriptValues();
-}
-
-static QString toUInt32_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-
-static quint32 toUInt32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
-
-void tst_QScriptValue::toUInt32_makeData(const char* expr)
-{
- static QHash<QString, quint32> toUInt32;
- if (toUInt32.isEmpty()) {
- toUInt32.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- toUInt32.insert(toUInt32_tagArray[i], toUInt32_valueArray[i]);
- }
- newRow(expr) << toUInt32.value(expr);
-}
-
-void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue& value)
-{
- QFETCH(quint32, expected);
- QCOMPARE(value.toUInt32(), expected);
- QCOMPARE(value.toUInt32(), expected);
-}
-
-DEFINE_TEST_FUNCTION(toUInt32)
-
-
-void tst_QScriptValue::toUInt16_initData()
-{
- QTest::addColumn<quint16>("expected");
- initScriptValues();
-}
-
-static QString toUInt16_tagArray [] = {
- "QScriptValue()",
- "QScriptValue(QScriptValue::UndefinedValue)",
- "QScriptValue(QScriptValue::NullValue)",
- "QScriptValue(true)",
- "QScriptValue(false)",
- "QScriptValue(int(122))",
- "QScriptValue(uint(124))",
- "QScriptValue(0)",
- "QScriptValue(0.0)",
- "QScriptValue(123.0)",
- "QScriptValue(6.37e-8)",
- "QScriptValue(-6.37e-8)",
- "QScriptValue(0x43211234)",
- "QScriptValue(0x10000)",
- "QScriptValue(0x10001)",
- "QScriptValue(qSNaN())",
- "QScriptValue(qQNaN())",
- "QScriptValue(qInf())",
- "QScriptValue(-qInf())",
- "QScriptValue(\"NaN\")",
- "QScriptValue(\"Infinity\")",
- "QScriptValue(\"-Infinity\")",
- "QScriptValue(\"ciao\")",
- "QScriptValue(QString::fromLatin1(\"ciao\"))",
- "QScriptValue(QString(\"\"))",
- "QScriptValue(QString())",
- "QScriptValue(QString(\"0\"))",
- "QScriptValue(QString(\"123\"))",
- "QScriptValue(QString(\"12.4\"))",
- "QScriptValue(0, QScriptValue::UndefinedValue)",
- "QScriptValue(0, QScriptValue::NullValue)",
- "QScriptValue(0, true)",
- "QScriptValue(0, false)",
- "QScriptValue(0, int(122))",
- "QScriptValue(0, uint(124))",
- "QScriptValue(0, 0)",
- "QScriptValue(0, 0.0)",
- "QScriptValue(0, 123.0)",
- "QScriptValue(0, 6.37e-8)",
- "QScriptValue(0, -6.37e-8)",
- "QScriptValue(0, 0x43211234)",
- "QScriptValue(0, 0x10000)",
- "QScriptValue(0, 0x10001)",
- "QScriptValue(0, qSNaN())",
- "QScriptValue(0, qQNaN())",
- "QScriptValue(0, qInf())",
- "QScriptValue(0, -qInf())",
- "QScriptValue(0, \"NaN\")",
- "QScriptValue(0, \"Infinity\")",
- "QScriptValue(0, \"-Infinity\")",
- "QScriptValue(0, \"ciao\")",
- "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(0, QString(\"\"))",
- "QScriptValue(0, QString())",
- "QScriptValue(0, QString(\"0\"))",
- "QScriptValue(0, QString(\"123\"))",
- "QScriptValue(0, QString(\"12.3\"))",
- "QScriptValue(engine, QScriptValue::UndefinedValue)",
- "QScriptValue(engine, QScriptValue::NullValue)",
- "QScriptValue(engine, true)",
- "QScriptValue(engine, false)",
- "QScriptValue(engine, int(122))",
- "QScriptValue(engine, uint(124))",
- "QScriptValue(engine, 0)",
- "QScriptValue(engine, 0.0)",
- "QScriptValue(engine, 123.0)",
- "QScriptValue(engine, 6.37e-8)",
- "QScriptValue(engine, -6.37e-8)",
- "QScriptValue(engine, 0x43211234)",
- "QScriptValue(engine, 0x10000)",
- "QScriptValue(engine, 0x10001)",
- "QScriptValue(engine, qSNaN())",
- "QScriptValue(engine, qQNaN())",
- "QScriptValue(engine, qInf())",
- "QScriptValue(engine, -qInf())",
- "QScriptValue(engine, \"NaN\")",
- "QScriptValue(engine, \"Infinity\")",
- "QScriptValue(engine, \"-Infinity\")",
- "QScriptValue(engine, \"ciao\")",
- "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
- "QScriptValue(engine, QString(\"\"))",
- "QScriptValue(engine, QString())",
- "QScriptValue(engine, QString(\"0\"))",
- "QScriptValue(engine, QString(\"123\"))",
- "QScriptValue(engine, QString(\"1.23\"))",
- "engine->evaluate(\"[]\")",
- "engine->evaluate(\"{}\")",
- "engine->evaluate(\"Object.prototype\")",
- "engine->evaluate(\"Date.prototype\")",
- "engine->evaluate(\"Array.prototype\")",
- "engine->evaluate(\"Function.prototype\")",
- "engine->evaluate(\"Error.prototype\")",
- "engine->evaluate(\"Object\")",
- "engine->evaluate(\"Array\")",
- "engine->evaluate(\"Number\")",
- "engine->evaluate(\"Function\")",
- "engine->evaluate(\"(function() { return 1; })\")",
- "engine->evaluate(\"(function() { return 'ciao'; })\")",
- "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
- "engine->evaluate(\"/foo/\")",
- "engine->evaluate(\"new Object()\")",
- "engine->evaluate(\"new Array()\")",
- "engine->evaluate(\"new Error()\")",
- "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
- "engine->evaluate(\"Undefined\")",
- "engine->evaluate(\"Null\")",
- "engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",
- "engine->evaluate(\"undefined\")",
- "engine->evaluate(\"null\")",
- "engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",
- "engine->evaluate(\"122\")",
- "engine->evaluate(\"124\")",
- "engine->evaluate(\"0\")",
- "engine->evaluate(\"0.0\")",
- "engine->evaluate(\"123.0\")",
- "engine->evaluate(\"6.37e-8\")",
- "engine->evaluate(\"-6.37e-8\")",
- "engine->evaluate(\"0x43211234\")",
- "engine->evaluate(\"0x10000\")",
- "engine->evaluate(\"0x10001\")",
- "engine->evaluate(\"NaN\")",
- "engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",
- "engine->evaluate(\"'ciao'\")",
- "engine->evaluate(\"''\")",
- "engine->evaluate(\"'0'\")",
- "engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",
- "engine->nullValue()",
- "engine->undefinedValue()",
- "engine->newObject()",
- "engine->newArray()",
- "engine->newArray(10)",
- "engine->newDate(QDateTime())",
- "engine->newQMetaObject(&QObject::staticMetaObject)",
- "engine->newVariant(QVariant())",
- "engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",
- "engine->newQObject(0)",
- "engine->newQObject(engine)",};
-
-static quint16 toUInt16_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 4660,
- 0, 1,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
-
-void tst_QScriptValue::toUInt16_makeData(const char* expr)
-{
- static QHash<QString, quint16> toUInt16;
- if (toUInt16.isEmpty()) {
- toUInt16.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
- toUInt16.insert(toUInt16_tagArray[i], toUInt16_valueArray[i]);
- }
- newRow(expr) << toUInt16.value(expr);
-}
-
-void tst_QScriptValue::toUInt16_test(const char*, const QScriptValue& value)
-{
- QFETCH(quint16, expected);
- QCOMPARE(value.toUInt16(), expected);
- QCOMPARE(value.toUInt16(), expected);
-}
-
-DEFINE_TEST_FUNCTION(toUInt16)
diff --git a/tests/auto/qscriptvaluegenerated/.gitignore b/tests/auto/qscriptvaluegenerated/.gitignore
new file mode 100644
index 0000000000..f724cb900f
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/.gitignore
@@ -0,0 +1 @@
+tst_qscriptvalue
diff --git a/tests/auto/qscriptvaluegenerated/qscriptvaluegenerated.pro b/tests/auto/qscriptvaluegenerated/qscriptvaluegenerated.pro
new file mode 100644
index 0000000000..c3e9912f69
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/qscriptvaluegenerated.pro
@@ -0,0 +1,18 @@
+load(qttest_p4)
+QT = core gui script
+SOURCES += tst_qscriptvalue.cpp
+HEADERS += tst_qscriptvalue.h
+
+# Generated by testgen
+SOURCES += \
+ tst_qscriptvalue_generated_init.cpp \
+ tst_qscriptvalue_generated_cast.cpp \
+ tst_qscriptvalue_generated_comparison.cpp \
+ tst_qscriptvalue_generated_isXXX.cpp \
+ tst_qscriptvalue_generated_toXXX.cpp
+
+win32-msvc* {
+ # With -O2, MSVC takes up to 24 minutes to compile this test!
+ QMAKE_CXXFLAGS_RELEASE -= -O1 -O2
+ QMAKE_CXXFLAGS_RELEASE += -Od
+}
diff --git a/tests/auto/qscriptvaluegenerated/testgen/data.txt b/tests/auto/qscriptvaluegenerated/testgen/data.txt
new file mode 100644
index 0000000000..2cc1229b3f
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/testgen/data.txt
@@ -0,0 +1,167 @@
+# Data set for QScriptValue autotest.
+
+# Each line is a c++ code that should return a QScriptValue object.
+# Lines that are empty or start with '#' will be ignored
+
+QScriptValue()
+
+#Unbound values
+QScriptValue(QScriptValue::UndefinedValue)
+QScriptValue(QScriptValue::NullValue)
+QScriptValue(true)
+QScriptValue(false)
+QScriptValue(int(122))
+QScriptValue(uint(124))
+QScriptValue(0)
+QScriptValue(0.0)
+QScriptValue(123.0)
+QScriptValue(6.37e-8)
+QScriptValue(-6.37e-8)
+QScriptValue(0x43211234)
+QScriptValue(0x10000)
+QScriptValue(0x10001)
+QScriptValue(qSNaN())
+QScriptValue(qQNaN())
+QScriptValue(qInf())
+QScriptValue(-qInf())
+QScriptValue("NaN")
+QScriptValue("Infinity")
+QScriptValue("-Infinity")
+QScriptValue("ciao")
+QScriptValue(QString::fromLatin1("ciao"))
+QScriptValue(QString(""))
+QScriptValue(QString())
+QScriptValue(QString("0"))
+QScriptValue(QString("123"))
+QScriptValue(QString("12.4"))
+#QScriptValue(QString::fromUtf8("ąśćżźółńę"))
+
+#Unbound values (bound to a null engine)
+QScriptValue(0, QScriptValue::UndefinedValue)
+QScriptValue(0, QScriptValue::NullValue)
+QScriptValue(0, true)
+QScriptValue(0, false)
+QScriptValue(0, int(122))
+QScriptValue(0, uint(124))
+QScriptValue(0, 0)
+QScriptValue(0, 0.0)
+QScriptValue(0, 123.0)
+QScriptValue(0, 6.37e-8)
+QScriptValue(0, -6.37e-8)
+QScriptValue(0, 0x43211234)
+QScriptValue(0, 0x10000)
+QScriptValue(0, 0x10001)
+QScriptValue(0, qSNaN())
+QScriptValue(0, qQNaN())
+QScriptValue(0, qInf())
+QScriptValue(0, -qInf())
+QScriptValue(0, "NaN")
+QScriptValue(0, "Infinity")
+QScriptValue(0, "-Infinity")
+QScriptValue(0, "ciao")
+QScriptValue(0, QString::fromLatin1("ciao"))
+QScriptValue(0, QString(""))
+QScriptValue(0, QString())
+QScriptValue(0, QString("0"))
+QScriptValue(0, QString("123"))
+QScriptValue(0, QString("12.3"))
+#QScriptValue(0, QString::fromUtf8("ąśćżźółńę"))
+
+#Bound values
+QScriptValue(engine, QScriptValue::UndefinedValue)
+QScriptValue(engine, QScriptValue::NullValue)
+QScriptValue(engine, true)
+QScriptValue(engine, false)
+QScriptValue(engine, int(122))
+QScriptValue(engine, uint(124))
+QScriptValue(engine, 0)
+QScriptValue(engine, 0.0)
+QScriptValue(engine, 123.0)
+QScriptValue(engine, 6.37e-8)
+QScriptValue(engine, -6.37e-8)
+QScriptValue(engine, 0x43211234)
+QScriptValue(engine, 0x10000)
+QScriptValue(engine, 0x10001)
+QScriptValue(engine, qSNaN())
+QScriptValue(engine, qQNaN())
+QScriptValue(engine, qInf())
+QScriptValue(engine, -qInf())
+QScriptValue(engine, "NaN")
+QScriptValue(engine, "Infinity")
+QScriptValue(engine, "-Infinity")
+QScriptValue(engine, "ciao")
+QScriptValue(engine, QString::fromLatin1("ciao"))
+QScriptValue(engine, QString(""))
+QScriptValue(engine, QString())
+QScriptValue(engine, QString("0"))
+QScriptValue(engine, QString("123"))
+QScriptValue(engine, QString("1.23"))
+
+# evaluate
+engine->evaluate("[]")
+engine->evaluate("{}")
+engine->evaluate("Object.prototype")
+engine->evaluate("Date.prototype")
+engine->evaluate("Array.prototype")
+engine->evaluate("Function.prototype")
+engine->evaluate("Error.prototype")
+engine->evaluate("Object")
+engine->evaluate("Array")
+engine->evaluate("Number")
+engine->evaluate("Function")
+engine->evaluate("(function() { return 1; })")
+engine->evaluate("(function() { return 'ciao'; })")
+engine->evaluate("(function() { throw new Error('foo'); })")
+engine->evaluate("/foo/")
+engine->evaluate("new Object()")
+engine->evaluate("new Array()")
+engine->evaluate("new Error()")
+engine->evaluate("new Boolean(true)")
+engine->evaluate("new Boolean(false)")
+engine->evaluate("new Number(123)")
+engine->evaluate("new RegExp('foo', 'gim')")
+engine->evaluate("new String('ciao')")
+engine->evaluate("a = new Object(); a.foo = 22; a.foo")
+engine->evaluate("Undefined")
+engine->evaluate("Null")
+engine->evaluate("True")
+engine->evaluate("False")
+
+engine->evaluate("undefined")
+engine->evaluate("null")
+engine->evaluate("true")
+engine->evaluate("false")
+engine->evaluate("122")
+engine->evaluate("124")
+engine->evaluate("0")
+engine->evaluate("0.0")
+engine->evaluate("123.0")
+engine->evaluate("6.37e-8")
+engine->evaluate("-6.37e-8")
+engine->evaluate("0x43211234")
+engine->evaluate("0x10000")
+engine->evaluate("0x10001")
+engine->evaluate("NaN")
+engine->evaluate("Infinity")
+engine->evaluate("-Infinity")
+engine->evaluate("'ciao'")
+engine->evaluate("''")
+engine->evaluate("'0'")
+engine->evaluate("'123'")
+engine->evaluate("'12.4'")
+#engine->evaluate(QString::fromUtf8("'ąśćżźółńę'"))
+
+#other
+engine->nullValue()
+engine->undefinedValue()
+engine->newObject()
+engine->newArray()
+engine->newArray(10)
+engine->newDate(QDateTime())
+engine->newQMetaObject(&QObject::staticMetaObject)
+engine->newRegExp("foo", "gim")
+engine->newVariant(QVariant())
+engine->newVariant(QVariant(123))
+engine->newVariant(QVariant(false))
+engine->newQObject(0)
+engine->newQObject(engine)
diff --git a/tests/auto/qscriptvalue/testgen/gen.py b/tests/auto/qscriptvaluegenerated/testgen/gen.py
index 6e48f46d67..6e48f46d67 100755
--- a/tests/auto/qscriptvalue/testgen/gen.py
+++ b/tests/auto/qscriptvaluegenerated/testgen/gen.py
diff --git a/tests/auto/qscriptvalue/testgen/main.cpp b/tests/auto/qscriptvaluegenerated/testgen/main.cpp
index 06726352aa..06726352aa 100644
--- a/tests/auto/qscriptvalue/testgen/main.cpp
+++ b/tests/auto/qscriptvaluegenerated/testgen/main.cpp
diff --git a/tests/auto/qscriptvalue/testgen/testgen.pro b/tests/auto/qscriptvaluegenerated/testgen/testgen.pro
index 47709a811d..47709a811d 100644
--- a/tests/auto/qscriptvalue/testgen/testgen.pro
+++ b/tests/auto/qscriptvaluegenerated/testgen/testgen.pro
diff --git a/tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp b/tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp
new file mode 100644
index 0000000000..183b62c222
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp
@@ -0,0 +1,795 @@
+/****************************************************************************
+**
+** 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 "testgenerator.h"
+
+#include <QtCore/qdatastream.h>
+#include <QtCore/qdatetime.h>
+#include <QtCore/qdebug.h>
+#include <QtCore/qnumeric.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/qtextstream.h>
+#include <QtCore/qvariant.h>
+#include <QtScript/qscriptvalue.h>
+
+void TestGenerator::save(const QHash<QString, QString>& data)
+{
+ foreach(const QString& name, data.keys()) {
+ QFile ofile(m_opath + "tst_qscriptvalue_generated_" + name + ".cpp");
+ if (!ofile.open(QIODevice::WriteOnly | QIODevice::Text)) {
+ qWarning() << "Can't open output file: " << ofile.fileName();
+ exit(2);
+ }
+ QTextStream out(&ofile);
+ out << data[name];
+ }
+}
+
+static QString escape(QString txt)
+{
+ return txt.replace("\\","\\\\").replace("\"","\\\"").replace("\n","\\n");
+}
+
+template<typename T>
+QString prepareToInsert(T value) {return QString::fromAscii("\"") + escape(value) + "\"";}
+template<>
+QString prepareToInsert<qsreal>(qsreal value)
+{
+ if (qIsNaN(value))
+ return "qQNaN()";
+ if (qIsInf(value))
+ return "qInf()";
+ return QString::number(value, 'g', 16);
+}
+template<>
+QString prepareToInsert<qint32>(qint32 value) {return QString::number(value);}
+template<>
+QString prepareToInsert<quint32>(quint32 value) {return QString::number(value);}
+template<>
+QString prepareToInsert<quint16>(quint16 value) {return QString::number(value);}
+template<>
+QString prepareToInsert<bool>(bool value) {return value ? "true" : "false";}
+template<>
+QString prepareToInsert<QString>(QString value) {return QString::fromAscii("\"") + escape(value) + "\"";}
+
+template<typename T>
+QString typeName() {return QString();}
+template<>
+QString typeName<qsreal>() {return "qsreal";}
+template<>
+QString typeName<qint32>() {return "qint32";}
+template<>
+QString typeName<quint32>() {return "quint32";}
+template<>
+QString typeName<quint16>() {return "quint16";}
+template<>
+QString typeName<bool>() {return "bool";}
+template<>
+QString typeName<QString>() {return "QString";}
+
+static QString generateLicence()
+{
+ return "/****************************************************************************\n"
+ "**\n"
+ "** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).\n"
+ "** All rights reserved.\n"
+ "** Contact: Nokia Corporation (qt-info@nokia.com)\n"
+ "**\n"
+ "** This file is part of the test suite of the Qt Toolkit.\n"
+ "**\n"
+ "** $QT_BEGIN_LICENSE:LGPL$\n"
+ "** No Commercial Usage\n"
+ "** This file contains pre-release code and may not be distributed.\n"
+ "** You may use this file in accordance with the terms and conditions\n"
+ "** contained in the Technology Preview License Agreement accompanying\n"
+ "** this package.\n"
+ "**\n"
+ "** GNU Lesser General Public License Usage\n"
+ "** Alternatively, this file may be used under the terms of the GNU Lesser\n"
+ "** General Public License version 2.1 as published by the Free Software\n"
+ "** Foundation and appearing in the file LICENSE.LGPL included in the\n"
+ "** packaging of this file. Please review the following information to\n"
+ "** ensure the GNU Lesser General Public License version 2.1 requirements\n"
+ "** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\n"
+ "**\n"
+ "** In addition, as a special exception, Nokia gives you certain additional\n"
+ "** rights. These rights are described in the Nokia Qt LGPL Exception\n"
+ "** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.\n"
+ "**\n"
+ "** If you have questions regarding the use of this file, please contact\n"
+ "** Nokia at qt-info@nokia.com.\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "** $QT_END_LICENSE$\n"
+ "**\n"
+ "****************************************************************************/\n"
+ "\n"\
+ "/****************************************************************************\n"\
+ "*************** This file has been generated. DO NOT MODIFY! ****************\n"
+ "****************************************************************************/\n\n"\
+ "#include \"tst_qscriptvalue.h\"\n\n";
+}
+
+static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
+{
+ static const QString templ("void tst_QScriptValueGenerated::%1_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<bool>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "static QString %1_array[] = {%2};\n\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char* expr)\n"\
+ "{\n"\
+ " static QSet<QString> %1;\n"\
+ " if (%1.isEmpty()) {\n"\
+ " %1.reserve(%3);\n"\
+ " for (unsigned i = 0; i < %3; ++i)\n"\
+ " %1.insert(%1_array[i]);\n"\
+ " }\n"\
+ " newRow(expr) << %1.contains(expr);\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char*, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(bool, expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(%1)\n"\
+ "\n");
+
+ if (!list.size()) {
+ qWarning() << name << ": nothing to add!" ;
+ return QString();
+ }
+
+ QString result = templ;
+ QStringList set;
+ set.reserve(3 * list.count());
+ foreach(const QString& t, list) {
+ if (!set.isEmpty())
+ set.append("\",");
+ set.append("\n \"");
+ set.append(escape(t));
+ }
+ if (!list.isEmpty())
+ set.append("\"\n");
+
+ return result.arg(name, set.join(QString()), QString::number(list.count()));
+}
+
+template<typename T>
+static QString generateToXXXDef(const QString& name, const QList<QPair<QString, T> >& list)
+{
+ static const QString templ = "\n"\
+ "void tst_QScriptValueGenerated::%1_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<%2>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "static QString %1_tagArray[] = {%4};\n\n"\
+ "static %2 %1_valueArray[] = {%5};\n\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char* expr)\n"\
+ "{\n"\
+ " static QHash<QString, %2> %1;\n"\
+ " if (%1.isEmpty()) {\n"\
+ " %1.reserve(%3);\n"\
+ " for (unsigned i = 0; i < %3; ++i)\n"\
+ " %1.insert(%1_tagArray[i], %1_valueArray[i]);\n"\
+ " }\n"\
+ " newRow(expr) << %1.value(expr);\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char*, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(%2, expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(%1)\n";
+ QString result = templ;
+
+ typename QList<QPair<QString, T> >::const_iterator i = list.constBegin();
+ QStringList tagSet, valueSet;
+ tagSet.reserve(4 * list.count());
+ valueSet.reserve(3 * list.count());
+ for(int lineBreaker = 0; i != list.constEnd(); ++i) {
+ QPair<QString, T> t = *i;
+ t.first = escape(t.first);
+ if (!valueSet.isEmpty()) {
+ valueSet.append(QString(","));
+ tagSet.append(QString::fromAscii(","));
+ }
+ tagSet.append(QString("\n \""));
+ tagSet.append(t.first);
+ tagSet.append(QString::fromAscii("\""));
+ if (!((lineBreaker++)%2))
+ valueSet.append(QString("\n "));
+ else
+ valueSet.append(QString::fromAscii(" "));
+ valueSet.append(prepareToInsert<T>(t.second));
+ }
+ return result.arg(name,
+ typeName<T>(),
+ QString::number(list.count()),
+ tagSet.join(QString()),
+ valueSet.join(QString()));
+}
+
+
+template<>
+QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString, qsreal> >& list)
+{
+ static const QString templ = "\n"\
+ "void tst_QScriptValueGenerated::%1_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<%2>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "static QString %1_tagArray[] = {%3};\n"\
+ "static %2 %1_valueArray[] = {%4};\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char* expr)\n"\
+ "{\n"\
+ " static QHash<QString, %2> %1;\n"\
+ " if (%1.isEmpty()) {\n"\
+ " %1.reserve(%5);\n"\
+ " for (unsigned i = 0; i < %5; ++i)\n"\
+ " %1.insert(%1_tagArray[i], %1_valueArray[i]);\n"\
+ " }\n"\
+ " newRow(expr) << %1.value(expr);\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char*, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(%2, expected);\n"\
+ "%666"
+ " if (qIsInf(expected)) {\n"\
+ " QVERIFY(qIsInf(value.%1()));\n"\
+ " QVERIFY(qIsInf(value.%1()));\n"\
+ " return;\n"\
+ " }\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(%1)\n";
+ QString result = templ;
+
+ QList<QPair<QString, qsreal> >::const_iterator i = list.constBegin();
+ QStringList tagSet, valueSet;
+ tagSet.reserve(4 * list.count());
+ valueSet.reserve(3 * list.count());
+ for(int lineBreaker = 0; i != list.constEnd(); ++i) {
+ QPair<QString, qsreal> t = *i;
+ t.first = escape(t.first);
+ if (!valueSet.isEmpty()) {
+ valueSet.append(QString(","));
+ tagSet.append(QString::fromAscii(","));
+ }
+ tagSet.append(QString("\n \""));
+ tagSet.append(t.first);
+ tagSet.append(QString::fromAscii("\""));
+ if (!((lineBreaker++)%10))
+ valueSet.append(QString("\n "));
+ else
+ valueSet.append(QString::fromAscii(" "));
+ valueSet.append(prepareToInsert<qsreal>(t.second));
+ }
+
+ // toInteger shouldn't return NaN, so it would be nice to catch the case.
+ QString hook;
+ if (name == "toNumber") {
+ hook =
+ " if (qIsNaN(expected)) {\n"\
+ " QVERIFY(qIsNaN(value.toNumber()));\n"\
+ " return;\n"\
+ " }\n";
+ }
+ return result.arg(name,
+ typeName<qsreal>(),
+ tagSet.join(QString()),
+ valueSet.join(QString()),
+ QString::number(list.count()),
+ hook);
+}
+
+template<typename T>
+static QString generateCastDef(const QList<QPair<QString, T> >& list)
+{
+ static const QString templ = "\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<%1>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "static QString qscriptvalue_cast%1_tagArray[] = {%2};\n"\
+ "static %1 qscriptvalue_cast%1_valueArray[] = {%3};\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_makeData(const char* expr)\n"\
+ "{\n"\
+ " static QHash<QString, %1> value;\n"\
+ " if (value.isEmpty()) {\n"\
+ " value.reserve(%4);\n"\
+ " for (unsigned i = 0; i < %4; ++i)\n"\
+ " value.insert(qscriptvalue_cast%1_tagArray[i], qscriptvalue_cast%1_valueArray[i]);\n"\
+ " }\n"\
+ " newRow(expr) << value.value(expr);\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(%1, expected);\n"\
+ " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\
+ " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(qscriptvalue_cast%1)\n";
+ QString result = templ;
+
+ typename QList<QPair<QString, T> >::const_iterator i = list.constBegin();
+ QStringList tagSet, valueSet;
+ tagSet.reserve(4 * list.count());
+ valueSet.reserve(3 * list.count());
+ for(int lineBreaker = 0; i != list.constEnd(); ++i) {
+ QPair<QString, T> t = *i;
+ t.first = escape(t.first);
+ if (!valueSet.isEmpty()) {
+ valueSet.append(QString(","));
+ tagSet.append(QString::fromAscii(","));
+ }
+ tagSet.append(QString("\n \""));
+ tagSet.append(t.first);
+ tagSet.append(QString::fromAscii("\""));
+ if (!((lineBreaker++)%2))
+ valueSet.append(QString("\n "));
+ else
+ valueSet.append(QString::fromAscii(" "));
+ valueSet.append(prepareToInsert<T>(t.second));
+ }
+ return result.arg(typeName<T>(), tagSet.join(QString()), valueSet.join(QString()), QString::number(list.count()));
+}
+
+template<>
+QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
+{
+ static const QString templ = "\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<%1>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "static QString qscriptvalue_cast%1_tagArray[] = {%2};\n"\
+ "static %1 qscriptvalue_cast%1_valueArray[] = {%3};\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_makeData(const char* expr)\n"\
+ "{\n"\
+ " static QHash<QString, %1> value;\n"\
+ " if (value.isEmpty()) {\n"\
+ " value.reserve(%4);\n"\
+ " for (unsigned i = 0; i < %4; ++i)\n"\
+ " value.insert(qscriptvalue_cast%1_tagArray[i], qscriptvalue_cast%1_valueArray[i]);\n"\
+ " }\n"\
+ " newRow(expr) << value.value(expr);\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(%1, expected);\n"\
+ " if (qIsNaN(expected)) {\n"
+ " QVERIFY(qIsNaN(qscriptvalue_cast<%1>(value)));\n"
+ " QVERIFY(qIsNaN(qscriptvalue_cast<%1>(value)));\n"
+ " return;\n"
+ " }\n"\
+ " if (qIsInf(expected)) {\n"
+ " QVERIFY(qIsInf(qscriptvalue_cast<%1>(value)));\n"
+ " QVERIFY(qIsInf(qscriptvalue_cast<%1>(value)));\n"
+ " return;\n"
+ " }\n"
+ " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\
+ " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(qscriptvalue_cast%1)\n";
+ QString result = templ;
+
+ QList<QPair<QString, qsreal> >::const_iterator i = list.constBegin();
+ QStringList tagSet, valueSet;
+ tagSet.reserve(4 * list.count());
+ valueSet.reserve(3 * list.count());
+ for(int lineBreaker = 0; i != list.constEnd(); ++i) {
+ QPair<QString, qsreal> t = *i;
+ t.first = escape(t.first);
+ if (!valueSet.isEmpty()) {
+ valueSet.append(QString(","));
+ tagSet.append(QString::fromAscii(","));
+ }
+ tagSet.append(QString("\n \""));
+ tagSet.append(t.first);
+ tagSet.append(QString::fromAscii("\""));
+ if (!((lineBreaker++)%10))
+ valueSet.append(QString("\n "));
+ else
+ valueSet.append(QString::fromAscii(" "));
+ valueSet.append(prepareToInsert<qsreal>(t.second));
+ }
+ return result.arg(typeName<qsreal>(),
+ tagSet.join(QString()),
+ valueSet.join(QString()),
+ QString::number(list.count()));
+}
+
+static QString generateCompareDef(const QString& comparisionType, const QList<QString> tags)
+{
+ static const QString templ = "\n"\
+ "void tst_QScriptValueGenerated::%1_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<QScriptValue>(\"other\");\n"\
+ " QTest::addColumn<bool>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "static QString %1_array[] = {%2};\n\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char *expr)\n"\
+ "{\n"\
+ " static QSet<QString> equals;\n"\
+ " if (equals.isEmpty()) {\n"\
+ " equals.reserve(%3);\n"\
+ " for (unsigned i = 0; i < %3; ++i)\n"\
+ " equals.insert(%1_array[i]);\n"\
+ " }\n"\
+ " QHash<QString, QScriptValue>::const_iterator it;\n"\
+ " for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {\n"\
+ " QString tag = QString::fromLatin1(\"%20 <=> %21\").arg(expr).arg(it.key());\n"\
+ " newRow(tag.toLatin1()) << it.value() << equals.contains(tag);\n"\
+ " }\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char *, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(QScriptValue, other);\n"\
+ " QFETCH(bool, expected);\n"\
+ " QCOMPARE(value.%1(other), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(%1)\n";
+ Q_ASSERT(comparisionType == "strictlyEquals"
+ || comparisionType == "equals"
+ || comparisionType == "lessThan"
+ || comparisionType == "instanceOf");
+ QString result = templ;
+
+ QStringList set;
+ set.reserve(4 * tags.count());
+ foreach(const QString& tmp, tags) {
+ if (!set.isEmpty())
+ set.append(",");
+ set.append("\n \"");
+ set.append(escape(tmp));
+ set.append("\"");
+ }
+ return result.arg(comparisionType, set.join(""), QString::number(tags.count()));
+}
+
+static QString generateInitDef(const QVector<QString>& allDataTags)
+{
+ static const QString templ = "void tst_QScriptValueGenerated::initScriptValues()\n"\
+ "{\n"\
+ " m_values.clear();\n"\
+ " if (engine)\n"\
+ " delete engine;\n"\
+ " engine = new QScriptEngine;\n"\
+ "%1\n}\n\n";
+ QString result = templ;
+ QStringList set;
+ foreach(const QString tag, allDataTags) {
+ set.append(" DEFINE_TEST_VALUE(" + tag + ");");
+ }
+
+ return result.arg(set.join("\n"));
+}
+
+static void squashTags(QString dataTag, const QVector<bool>& results, QList<QString>& tags, QVector<QString> dataTags)
+{
+ for(int i = 0; i < results.count(); ++i) {
+ if (results.at(i))
+ tags.append(dataTag + " <=> " + dataTags[i]);
+ }
+}
+
+
+QHash<QString, QString> TestGenerator::generateTest()
+{
+ // All data tags keept in one place.
+ QVector<QString> dataTags;
+
+ // Data tags for values that return true in isXXX call
+ QList<QString> isValidList;
+ QList<QString> isBoolList;
+ QList<QString> isBooleanList;
+ QList<QString> isNumberList;
+ QList<QString> isFunctionList;
+ QList<QString> isNullList;
+ QList<QString> isStringList;
+ QList<QString> isUndefinedList;
+ QList<QString> isVariantList;
+ QList<QString> isQObjectList;
+ QList<QString> isQMetaObjectList;
+ QList<QString> isObjectList;
+ QList<QString> isDateList;
+ QList<QString> isRegExpList;
+ QList<QString> isArrayList;
+ QList<QString> isErrorList;
+
+ // List of pairs data tag and value returned from toXXX call
+ QList<QPair<QString, QString> > toStringList;
+ QList<QPair<QString, qsreal> > toNumberList;
+ QList<QPair<QString, bool> > toBoolList;
+ QList<QPair<QString, bool> > toBooleanList;
+ QList<QPair<QString, qsreal> > toIntegerList;
+ QList<QPair<QString, qint32> > toInt32List;
+ QList<QPair<QString, quint32> > toUInt32List;
+ QList<QPair<QString, quint16> > toUInt16List;
+
+ // List of complex tags returning true
+ QList<QString> equalsList;
+ QList<QString> strictlyEqualsList;
+ QList<QString> lessThanList;
+ QList<QString> instanceOfList;
+
+ QList<QPair<QString, QString> > castStringList;
+ QList<QPair<QString, qsreal> > castSRealList;
+ QList<QPair<QString, bool> > castBoolList;
+ QList<QPair<QString, qint32> > castInt32List;
+ QList<QPair<QString, quint32> > castUInt32List;
+ QList<QPair<QString, quint16> > castUInt16List;
+
+ // Load.
+ m_tempFile.seek(0);
+ QDataStream in(&m_tempFile);
+ in >> dataTags;
+ Q_ASSERT(in.status() == in.Ok);
+
+ while(!in.atEnd())
+ {
+ bool isValidRes;
+ bool isBoolRes;
+ bool isBooleanRes;
+ bool isNumberRes;
+ bool isFunctionRes;
+ bool isNullRes;
+ bool isStringRes;
+ bool isUndefinedRes;
+ bool isVariantRes;
+ bool isQObjectRes;
+ bool isQMetaObjectRes;
+ bool isObjectRes;
+ bool isDateRes;
+ bool isRegExpRes;
+ bool isArrayRes;
+ bool isErrorRes;
+
+ QString toStringRes;
+ qsreal toNumberRes;
+ bool toBoolRes;
+ bool toBooleanRes;
+ qsreal toIntegerRes;
+ qint32 toInt32Res;
+ quint32 toUInt32Res;
+ quint16 toUInt16Res;
+ //toVariantRes;
+ //toDateTimeRes;
+
+ QVector<bool> equalsRes;
+ QVector<bool> strictlyEqualsRes;
+ QVector<bool> lessThanRes;
+ QVector<bool> instanceOfRes;
+
+ QString castStringRes;
+ qsreal castSRealRes;
+ bool castBoolRes;
+ qint32 castInt32Res;
+ quint32 castUInt32Res;
+ quint16 castUInt16Res;
+
+ QString dataTag;
+ in >> dataTag;
+ in >> isValidRes;
+ in >> isBoolRes;
+ in >> isBooleanRes;
+ in >> isNumberRes;
+ in >> isFunctionRes;
+ in >> isNullRes;
+ in >> isStringRes;
+ in >> isUndefinedRes;
+ in >> isVariantRes;
+ in >> isQObjectRes;
+ in >> isQMetaObjectRes;
+ in >> isObjectRes;
+ in >> isDateRes;
+ in >> isRegExpRes;
+ in >> isArrayRes;
+ in >> isErrorRes;
+
+ if (isValidRes) isValidList.append(dataTag);
+ if (isBoolRes) isBoolList.append(dataTag);
+ if (isBooleanRes) isBooleanList.append(dataTag);
+ if (isNumberRes) isNumberList.append(dataTag);
+ if (isFunctionRes) isFunctionList.append(dataTag);
+ if (isNullRes) isNullList.append(dataTag);
+ if (isStringRes) isStringList.append(dataTag);
+ if (isUndefinedRes) isUndefinedList.append(dataTag);
+ if (isVariantRes) isVariantList.append(dataTag);
+ if (isQObjectRes) isQObjectList.append(dataTag);
+ if (isQMetaObjectRes) isQMetaObjectList.append(dataTag);
+ if (isObjectRes) isObjectList.append(dataTag);
+ if (isDateRes) isDateList.append(dataTag);
+ if (isRegExpRes) isRegExpList.append(dataTag);
+ if (isArrayRes) isArrayList.append(dataTag);
+ if (isErrorRes) isErrorList.append(dataTag);
+
+ in >> toStringRes;
+ in >> toNumberRes;
+ in >> toBoolRes;
+ in >> toBooleanRes;
+ in >> toIntegerRes;
+ in >> toInt32Res;
+ in >> toUInt32Res;
+ in >> toUInt16Res;
+ //in >> toVariantRes;
+ //in >> toDateTimeRes;
+
+ toStringList.append(QPair<QString, QString>(dataTag, toStringRes));
+ toNumberList.append(QPair<QString, qsreal>(dataTag, toNumberRes));
+ toBoolList.append(QPair<QString, bool>(dataTag, toBoolRes));
+ toBooleanList.append(QPair<QString, bool>(dataTag, toBooleanRes));
+ toIntegerList.append(QPair<QString, qsreal>(dataTag, toIntegerRes));
+ toInt32List.append(QPair<QString, qint32>(dataTag, toInt32Res));
+ toUInt32List.append(QPair<QString, quint32>(dataTag, toUInt32Res));
+ toUInt16List.append(QPair<QString, quint16>(dataTag, toUInt16Res));
+
+ in >> equalsRes;
+ in >> strictlyEqualsRes;
+ in >> lessThanRes;
+ in >> instanceOfRes;
+
+ squashTags(dataTag, equalsRes, equalsList, dataTags);
+ squashTags(dataTag, strictlyEqualsRes, strictlyEqualsList, dataTags);
+ squashTags(dataTag, lessThanRes, lessThanList, dataTags);
+ squashTags(dataTag, instanceOfRes, instanceOfList, dataTags);
+
+ in >> castStringRes;
+ in >> castSRealRes;
+ in >> castBoolRes;
+ in >> castInt32Res;
+ in >> castUInt32Res;
+ in >> castUInt16Res;
+
+ castStringList.append(QPair<QString, QString>(dataTag, castStringRes));
+ castSRealList.append(QPair<QString, qsreal>(dataTag, castSRealRes));
+ castBoolList.append(QPair<QString, bool>(dataTag, castBoolRes));
+ castInt32List.append(QPair<QString, qint32>(dataTag, castInt32Res));
+ castUInt32List.append(QPair<QString, quint32>(dataTag, castUInt32Res));
+ castUInt16List.append(QPair<QString, quint16>(dataTag, castUInt16Res));
+
+ Q_ASSERT(in.status() == in.Ok);
+ }
+
+ Q_ASSERT(in.atEnd());
+
+ // Generate.
+ QHash<QString, QString> result;
+ QStringList tmp;
+ tmp.append(generateLicence());
+ tmp.append(generateInitDef(dataTags));
+ result.insert("init", tmp.join("\n"));
+ tmp.clear();
+
+ tmp.append(generateLicence());
+ tmp.append(generateIsXXXDef("isValid", isValidList));
+ tmp.append(generateIsXXXDef("isBool", isBoolList));
+ tmp.append(generateIsXXXDef("isBoolean", isBooleanList));
+ tmp.append(generateIsXXXDef("isNumber", isNumberList));
+ tmp.append(generateIsXXXDef("isFunction", isFunctionList));
+ tmp.append(generateIsXXXDef("isNull", isNullList));
+ tmp.append(generateIsXXXDef("isString", isStringList));
+ tmp.append(generateIsXXXDef("isUndefined", isUndefinedList));
+ tmp.append(generateIsXXXDef("isVariant", isVariantList));
+ tmp.append(generateIsXXXDef("isQObject", isQObjectList));
+ tmp.append(generateIsXXXDef("isQMetaObject", isQMetaObjectList));
+ tmp.append(generateIsXXXDef("isObject", isObjectList));
+ tmp.append(generateIsXXXDef("isDate", isDateList));
+ tmp.append(generateIsXXXDef("isRegExp", isRegExpList));
+ tmp.append(generateIsXXXDef("isArray", isArrayList));
+ tmp.append(generateIsXXXDef("isError", isErrorList));
+ result.insert("isXXX", tmp.join("\n"));
+ tmp.clear();
+
+ tmp.append(generateLicence());
+ tmp.append(generateToXXXDef<QString>("toString", toStringList));
+ tmp.append(generateToXXXDef<qsreal>("toNumber", toNumberList));
+ tmp.append(generateToXXXDef<bool>("toBool", toBoolList));
+ tmp.append(generateToXXXDef<bool>("toBoolean", toBooleanList));
+ tmp.append(generateToXXXDef<qsreal>("toInteger", toIntegerList));
+ tmp.append(generateToXXXDef<qint32>("toInt32", toInt32List));
+ tmp.append(generateToXXXDef<quint32>("toUInt32", toUInt32List));
+ tmp.append(generateToXXXDef<quint16>("toUInt16", toUInt16List));
+ result.insert("toXXX", tmp.join("\n"));
+ tmp.clear();
+
+ tmp.append(generateLicence());
+ tmp.append(generateCompareDef("equals", equalsList));
+ tmp.append(generateCompareDef("strictlyEquals", strictlyEqualsList));
+ tmp.append(generateCompareDef("lessThan", lessThanList));
+ tmp.append(generateCompareDef("instanceOf", instanceOfList));
+ result.insert("comparison", tmp.join("\n"));
+ tmp.clear();
+
+ tmp.append(generateLicence());
+ tmp.append(generateCastDef(castStringList));
+ tmp.append(generateCastDef(castSRealList));
+ tmp.append(generateCastDef(castBoolList));
+ tmp.append(generateCastDef(castInt32List));
+ tmp.append(generateCastDef(castUInt32List));
+ tmp.append(generateCastDef(castUInt16List));
+ result.insert("cast", tmp.join("\n"));
+
+ return result;
+}
+
+
+
+
+
+
+
+
+
diff --git a/tests/auto/qscriptvalue/testgen/testgenerator.h b/tests/auto/qscriptvaluegenerated/testgen/testgenerator.h
index 1c61fc55dd..1c61fc55dd 100644
--- a/tests/auto/qscriptvalue/testgen/testgenerator.h
+++ b/tests/auto/qscriptvaluegenerated/testgen/testgenerator.h
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.cpp
new file mode 100644
index 0000000000..962a2af14f
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.cpp
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** 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 "tst_qscriptvalue.h"
+#include <QtGui/QPushButton>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+QT_BEGIN_NAMESPACE
+extern bool qt_script_isJITEnabled();
+QT_END_NAMESPACE
+
+tst_QScriptValueGenerated::tst_QScriptValueGenerated()
+ : engine(0)
+{
+}
+
+tst_QScriptValueGenerated::~tst_QScriptValueGenerated()
+{
+ delete engine;
+}
+
+void tst_QScriptValueGenerated::dataHelper(InitDataFunction init, DefineDataFunction define)
+{
+ QTest::addColumn<QString>("__expression__");
+ (this->*init)();
+ QHash<QString,QScriptValue>::const_iterator it;
+ for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+ m_currentExpression = it.key();
+ (this->*define)(it.key().toLatin1());
+ }
+ m_currentExpression = QString();
+}
+
+QTestData &tst_QScriptValueGenerated::newRow(const char *tag)
+{
+ return QTest::newRow(tag) << m_currentExpression;
+}
+
+void tst_QScriptValueGenerated::testHelper(TestFunction fun)
+{
+ QFETCH(QString, __expression__);
+ QScriptValue value = m_values.value(__expression__);
+ (this->*fun)(__expression__.toLatin1(), value);
+}
+
+void tst_QScriptValueGenerated::assignAndCopyConstruct_initData()
+{
+ QTest::addColumn<int>("dummy");
+ initScriptValues();
+}
+
+void tst_QScriptValueGenerated::assignAndCopyConstruct_makeData(const char *expr)
+{
+ newRow(expr) << 0;
+}
+
+void tst_QScriptValueGenerated::assignAndCopyConstruct_test(const char *, const QScriptValue &value)
+{
+ QScriptValue copy(value);
+ QCOMPARE(copy.strictlyEquals(value), !value.isNumber() || !qIsNaN(value.toNumber()));
+ QCOMPARE(copy.engine(), value.engine());
+
+ QScriptValue assigned = copy;
+ QCOMPARE(assigned.strictlyEquals(value), !copy.isNumber() || !qIsNaN(copy.toNumber()));
+ QCOMPARE(assigned.engine(), assigned.engine());
+
+ QScriptValue other(!value.toBool());
+ assigned = other;
+ QVERIFY(!assigned.strictlyEquals(copy));
+ QVERIFY(assigned.strictlyEquals(other));
+ QCOMPARE(assigned.engine(), other.engine());
+}
+
+DEFINE_TEST_FUNCTION(assignAndCopyConstruct)
+
+QTEST_MAIN(tst_QScriptValueGenerated)
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.h b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.h
new file mode 100644
index 0000000000..8248ef3b42
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.h
@@ -0,0 +1,370 @@
+/****************************************************************************
+**
+** 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 TST_QSCRIPTVALUE_H
+#define TST_QSCRIPTVALUE_H
+
+#include <QtCore/qobject.h>
+#include <QtCore/qnumeric.h>
+#include <QtScript/qscriptclass.h>
+#include <QtScript/qscriptengine.h>
+#include <QtScript/qscriptvalue.h>
+#include <QtTest/QtTest>
+
+#define DEFINE_TEST_VALUE(expr) m_values.insert(QString::fromLatin1(#expr), expr)
+
+Q_DECLARE_METATYPE(QVariant)
+Q_DECLARE_METATYPE(QScriptValue)
+
+class tst_QScriptValueGenerated : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QScriptValueGenerated();
+ virtual ~tst_QScriptValueGenerated();
+
+private slots:
+ // Generated test functions
+ void isArray_data();
+ void isArray();
+
+ void isBool_data();
+ void isBool();
+
+ void isBoolean_data();
+ void isBoolean();
+
+ void isDate_data();
+ void isDate();
+
+ void isError_data();
+ void isError();
+
+ void isFunction_data();
+ void isFunction();
+
+ void isNull_data();
+ void isNull();
+
+ void isNumber_data();
+ void isNumber();
+
+ void isObject_data();
+ void isObject();
+
+ void isQMetaObject_data();
+ void isQMetaObject();
+
+ void isQObject_data();
+ void isQObject();
+
+ void isRegExp_data();
+ void isRegExp();
+
+ void isString_data();
+ void isString();
+
+ void isUndefined_data();
+ void isUndefined();
+
+ void isValid_data();
+ void isValid();
+
+ void isVariant_data();
+ void isVariant();
+
+ void toBool_data();
+ void toBool();
+
+ void toBoolean_data();
+ void toBoolean();
+
+// void toDateTime_data();
+// void toDateTime();
+
+ void toInt32_data();
+ void toInt32();
+
+ void toInteger_data();
+ void toInteger();
+
+ void toNumber_data();
+ void toNumber();
+
+// void toQMetaObject_data();
+// void toQMetaObject();
+
+// void toQObject_data();
+// void toQObject();
+
+// void toRegExp_data();
+// void toRegExp();
+
+ void toString_data();
+ void toString();
+
+ void toUInt16_data();
+ void toUInt16();
+
+ void toUInt32_data();
+ void toUInt32();
+
+// void toVariant_data();
+// void toVariant();
+
+ void equals_data();
+ void equals();
+
+ void strictlyEquals_data();
+ void strictlyEquals();
+
+ void lessThan_data();
+ void lessThan();
+
+ void instanceOf_data();
+ void instanceOf();
+
+ void assignAndCopyConstruct_data();
+ void assignAndCopyConstruct();
+
+ void qscriptvalue_castQString_data();
+ void qscriptvalue_castQString();
+
+ void qscriptvalue_castqsreal_data();
+ void qscriptvalue_castqsreal();
+
+ void qscriptvalue_castbool_data();
+ void qscriptvalue_castbool();
+
+ void qscriptvalue_castqint32_data();
+ void qscriptvalue_castqint32();
+
+ void qscriptvalue_castquint32_data();
+ void qscriptvalue_castquint32();
+
+ void qscriptvalue_castquint16_data();
+ void qscriptvalue_castquint16();
+
+private:
+ typedef void (tst_QScriptValueGenerated::*InitDataFunction)();
+ typedef void (tst_QScriptValueGenerated::*DefineDataFunction)(const char *);
+ void dataHelper(InitDataFunction init, DefineDataFunction define);
+ QTestData &newRow(const char *tag);
+
+ typedef void (tst_QScriptValueGenerated::*TestFunction)(const char *, const QScriptValue &);
+ void testHelper(TestFunction fun);
+
+ // Generated functions
+
+ void initScriptValues();
+
+ void isArray_initData();
+ void isArray_makeData(const char *expr);
+ void isArray_test(const char *expr, const QScriptValue &value);
+
+ void isBool_initData();
+ void isBool_makeData(const char *expr);
+ void isBool_test(const char *expr, const QScriptValue &value);
+
+ void isBoolean_initData();
+ void isBoolean_makeData(const char *expr);
+ void isBoolean_test(const char *expr, const QScriptValue &value);
+
+ void isDate_initData();
+ void isDate_makeData(const char *expr);
+ void isDate_test(const char *expr, const QScriptValue &value);
+
+ void isError_initData();
+ void isError_makeData(const char *expr);
+ void isError_test(const char *expr, const QScriptValue &value);
+
+ void isFunction_initData();
+ void isFunction_makeData(const char *expr);
+ void isFunction_test(const char *expr, const QScriptValue &value);
+
+ void isNull_initData();
+ void isNull_makeData(const char *expr);
+ void isNull_test(const char *expr, const QScriptValue &value);
+
+ void isNumber_initData();
+ void isNumber_makeData(const char *expr);
+ void isNumber_test(const char *expr, const QScriptValue &value);
+
+ void isObject_initData();
+ void isObject_makeData(const char *expr);
+ void isObject_test(const char *expr, const QScriptValue &value);
+
+ void isQMetaObject_initData();
+ void isQMetaObject_makeData(const char *expr);
+ void isQMetaObject_test(const char *expr, const QScriptValue &value);
+
+ void isQObject_initData();
+ void isQObject_makeData(const char *expr);
+ void isQObject_test(const char *expr, const QScriptValue &value);
+
+ void isRegExp_initData();
+ void isRegExp_makeData(const char *expr);
+ void isRegExp_test(const char *expr, const QScriptValue &value);
+
+ void isString_initData();
+ void isString_makeData(const char *expr);
+ void isString_test(const char *expr, const QScriptValue &value);
+
+ void isUndefined_initData();
+ void isUndefined_makeData(const char *expr);
+ void isUndefined_test(const char *expr, const QScriptValue &value);
+
+ void isValid_initData();
+ void isValid_makeData(const char *expr);
+ void isValid_test(const char *expr, const QScriptValue &value);
+
+ void isVariant_initData();
+ void isVariant_makeData(const char *expr);
+ void isVariant_test(const char *expr, const QScriptValue &value);
+
+ void toBool_initData();
+ void toBool_makeData(const char *);
+ void toBool_test(const char *, const QScriptValue &value);
+
+ void toBoolean_initData();
+ void toBoolean_makeData(const char *);
+ void toBoolean_test(const char *, const QScriptValue &value);
+
+ void toDateTime_initData();
+ void toDateTime_makeData(const char *);
+ void toDateTime_test(const char *, const QScriptValue &value);
+
+ void toInt32_initData();
+ void toInt32_makeData(const char *);
+ void toInt32_test(const char *, const QScriptValue &value);
+
+ void toInteger_initData();
+ void toInteger_makeData(const char *);
+ void toInteger_test(const char *, const QScriptValue &value);
+
+ void toNumber_initData();
+ void toNumber_makeData(const char *);
+ void toNumber_test(const char *, const QScriptValue &value);
+
+ void toQMetaObject_initData();
+ void toQMetaObject_makeData(const char *);
+ void toQMetaObject_test(const char *, const QScriptValue &value);
+
+ void toQObject_initData();
+ void toQObject_makeData(const char *);
+ void toQObject_test(const char *, const QScriptValue &value);
+
+ void toRegExp_initData();
+ void toRegExp_makeData(const char *);
+ void toRegExp_test(const char *, const QScriptValue &value);
+
+ void toString_initData();
+ void toString_makeData(const char *);
+ void toString_test(const char *, const QScriptValue &value);
+
+ void toUInt16_initData();
+ void toUInt16_makeData(const char *);
+ void toUInt16_test(const char *, const QScriptValue &value);
+
+ void toUInt32_initData();
+ void toUInt32_makeData(const char *);
+ void toUInt32_test(const char *, const QScriptValue &value);
+
+ void toVariant_initData();
+ void toVariant_makeData(const char *);
+ void toVariant_test(const char *, const QScriptValue &value);
+
+ void equals_initData();
+ void equals_makeData(const char *);
+ void equals_test(const char *, const QScriptValue &value);
+
+ void strictlyEquals_initData();
+ void strictlyEquals_makeData(const char *);
+ void strictlyEquals_test(const char *, const QScriptValue &value);
+
+ void lessThan_initData();
+ void lessThan_makeData(const char *);
+ void lessThan_test(const char *, const QScriptValue &value);
+
+ void instanceOf_initData();
+ void instanceOf_makeData(const char *);
+ void instanceOf_test(const char *, const QScriptValue &value);
+
+ void assignAndCopyConstruct_initData();
+ void assignAndCopyConstruct_makeData(const char *);
+ void assignAndCopyConstruct_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castQString_initData();
+ void qscriptvalue_castQString_makeData(const char *);
+ void qscriptvalue_castQString_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castqsreal_initData();
+ void qscriptvalue_castqsreal_makeData(const char *);
+ void qscriptvalue_castqsreal_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castbool_initData();
+ void qscriptvalue_castbool_makeData(const char *);
+ void qscriptvalue_castbool_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castqint32_initData();
+ void qscriptvalue_castqint32_makeData(const char *);
+ void qscriptvalue_castqint32_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castquint32_initData();
+ void qscriptvalue_castquint32_makeData(const char *);
+ void qscriptvalue_castquint32_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castquint16_initData();
+ void qscriptvalue_castquint16_makeData(const char *);
+ void qscriptvalue_castquint16_test(const char *, const QScriptValue &value);
+
+private:
+ QScriptEngine *engine;
+ QHash<QString, QScriptValue> m_values;
+ QString m_currentExpression;
+};
+
+#define DEFINE_TEST_FUNCTION(name) \
+void tst_QScriptValueGenerated::name##_data() { dataHelper(&tst_QScriptValueGenerated::name##_initData, &tst_QScriptValueGenerated::name##_makeData); } \
+void tst_QScriptValueGenerated::name() { testHelper(&tst_QScriptValueGenerated::name##_test); }
+
+#endif
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp
new file mode 100644
index 0000000000..2353116269
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp
@@ -0,0 +1,1504 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+/****************************************************************************
+*************** This file has been generated. DO NOT MODIFY! ****************
+****************************************************************************/
+
+#include "tst_qscriptvalue.h"
+
+
+
+void tst_QScriptValueGenerated::qscriptvalue_castQString_initData()
+{
+ QTest::addColumn<QString>("expected");
+ initScriptValues();
+}
+
+static QString qscriptvalue_castQString_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+static QString qscriptvalue_castQString_valueArray[] = {
+ "", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.4", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.3", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "1.23", "",
+ "", "[object Object]",
+ "Invalid Date", "",
+ "function () {\n [native code]\n}", "Error: Unknown error",
+ "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
+ "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
+ "function () { return 1; }", "function () { return 'ciao'; }",
+ "function () { throw new Error('foo'); }", "/foo/",
+ "[object Object]", "",
+ "Error: Unknown error", "true",
+ "false", "123",
+ "/foo/gim", "ciao",
+ "22", "ReferenceError: Can't find variable: Undefined",
+ "ReferenceError: Can't find variable: Null", "ReferenceError: Can't find variable: True",
+ "ReferenceError: Can't find variable: False", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "",
+ "0", "123",
+ "12.4", "",
+ "", "[object Object]",
+ "", ",,,,,,,,,",
+ "Invalid Date", "[object QMetaObject]",
+ "/foo/gim", "undefined",
+ "123", "false",
+ "", "QScriptEngine(name = \"\")"};
+void tst_QScriptValueGenerated::qscriptvalue_castQString_makeData(const char* expr)
+{
+ static QHash<QString, QString> value;
+ if (value.isEmpty()) {
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ value.insert(qscriptvalue_castQString_tagArray[i], qscriptvalue_castQString_valueArray[i]);
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValueGenerated::qscriptvalue_castQString_test(const char*, const QScriptValue& value)
+{
+ QFETCH(QString, expected);
+ QCOMPARE(qscriptvalue_cast<QString>(value), expected);
+ QCOMPARE(qscriptvalue_cast<QString>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castQString)
+
+
+void tst_QScriptValueGenerated::qscriptvalue_castqsreal_initData()
+{
+ QTest::addColumn<qsreal>("expected");
+ initScriptValues();
+}
+
+static QString qscriptvalue_castqsreal_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+static qsreal qscriptvalue_castqsreal_valueArray[] = {
+ 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
+ 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
+ qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
+ 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
+ 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
+ qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
+ 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
+ 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
+ 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
+ qQNaN(), 0, qQNaN(), 1, 0, 123, qQNaN(), qQNaN(), 22, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0, 1, 0, 122, 124, 0,
+ 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qInf(), qInf(),
+ qQNaN(), 0, 0, 123, 12.4, 0, qQNaN(), qQNaN(), 0, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0, 0, qQNaN()};
+void tst_QScriptValueGenerated::qscriptvalue_castqsreal_makeData(const char* expr)
+{
+ static QHash<QString, qsreal> value;
+ if (value.isEmpty()) {
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ value.insert(qscriptvalue_castqsreal_tagArray[i], qscriptvalue_castqsreal_valueArray[i]);
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValueGenerated::qscriptvalue_castqsreal_test(const char*, const QScriptValue& value)
+{
+ QFETCH(qsreal, expected);
+ if (qIsNaN(expected)) {
+ QVERIFY(qIsNaN(qscriptvalue_cast<qsreal>(value)));
+ QVERIFY(qIsNaN(qscriptvalue_cast<qsreal>(value)));
+ return;
+ }
+ if (qIsInf(expected)) {
+ QVERIFY(qIsInf(qscriptvalue_cast<qsreal>(value)));
+ QVERIFY(qIsInf(qscriptvalue_cast<qsreal>(value)));
+ return;
+ }
+ QCOMPARE(qscriptvalue_cast<qsreal>(value), expected);
+ QCOMPARE(qscriptvalue_cast<qsreal>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castqsreal)
+
+
+void tst_QScriptValueGenerated::qscriptvalue_castbool_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString qscriptvalue_castbool_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+static bool qscriptvalue_castbool_valueArray[] = {
+ false, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, true,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ false, true};
+void tst_QScriptValueGenerated::qscriptvalue_castbool_makeData(const char* expr)
+{
+ static QHash<QString, bool> value;
+ if (value.isEmpty()) {
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ value.insert(qscriptvalue_castbool_tagArray[i], qscriptvalue_castbool_valueArray[i]);
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValueGenerated::qscriptvalue_castbool_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(qscriptvalue_cast<bool>(value), expected);
+ QCOMPARE(qscriptvalue_cast<bool>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castbool)
+
+
+void tst_QScriptValueGenerated::qscriptvalue_castqint32_initData()
+{
+ QTest::addColumn<qint32>("expected");
+ initScriptValues();
+}
+
+static QString qscriptvalue_castqint32_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+static qint32 qscriptvalue_castqint32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
+void tst_QScriptValueGenerated::qscriptvalue_castqint32_makeData(const char* expr)
+{
+ static QHash<QString, qint32> value;
+ if (value.isEmpty()) {
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ value.insert(qscriptvalue_castqint32_tagArray[i], qscriptvalue_castqint32_valueArray[i]);
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValueGenerated::qscriptvalue_castqint32_test(const char*, const QScriptValue& value)
+{
+ QFETCH(qint32, expected);
+ QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
+ QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castqint32)
+
+
+void tst_QScriptValueGenerated::qscriptvalue_castquint32_initData()
+{
+ QTest::addColumn<quint32>("expected");
+ initScriptValues();
+}
+
+static QString qscriptvalue_castquint32_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+static quint32 qscriptvalue_castquint32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
+void tst_QScriptValueGenerated::qscriptvalue_castquint32_makeData(const char* expr)
+{
+ static QHash<QString, quint32> value;
+ if (value.isEmpty()) {
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ value.insert(qscriptvalue_castquint32_tagArray[i], qscriptvalue_castquint32_valueArray[i]);
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValueGenerated::qscriptvalue_castquint32_test(const char*, const QScriptValue& value)
+{
+ QFETCH(quint32, expected);
+ QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
+ QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castquint32)
+
+
+void tst_QScriptValueGenerated::qscriptvalue_castquint16_initData()
+{
+ QTest::addColumn<quint16>("expected");
+ initScriptValues();
+}
+
+static QString qscriptvalue_castquint16_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+static quint16 qscriptvalue_castquint16_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
+void tst_QScriptValueGenerated::qscriptvalue_castquint16_makeData(const char* expr)
+{
+ static QHash<QString, quint16> value;
+ if (value.isEmpty()) {
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ value.insert(qscriptvalue_castquint16_tagArray[i], qscriptvalue_castquint16_valueArray[i]);
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValueGenerated::qscriptvalue_castquint16_test(const char*, const QScriptValue& value)
+{
+ QFETCH(quint16, expected);
+ QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
+ QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castquint16)
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp
new file mode 100644
index 0000000000..f8a6cdad9c
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp
@@ -0,0 +1,7542 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+/****************************************************************************
+*************** This file has been generated. DO NOT MODIFY! ****************
+****************************************************************************/
+
+#include "tst_qscriptvalue.h"
+
+
+
+void tst_QScriptValueGenerated::equals_initData()
+{
+ QTest::addColumn<QScriptValue>("other");
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString equals_array[] = {
+ "QScriptValue() <=> QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> engine->nullValue()",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> engine->newQObject(0)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"{}\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->undefinedValue()",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)",
+ "QScriptValue(true) <=> QScriptValue(true)",
+ "QScriptValue(true) <=> QScriptValue(0, true)",
+ "QScriptValue(true) <=> QScriptValue(engine, true)",
+ "QScriptValue(true) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(true) <=> engine->evaluate(\"true\")",
+ "QScriptValue(false) <=> QScriptValue(false)",
+ "QScriptValue(false) <=> QScriptValue(0)",
+ "QScriptValue(false) <=> QScriptValue(0.0)",
+ "QScriptValue(false) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(false) <=> QScriptValue(QString())",
+ "QScriptValue(false) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(false) <=> QScriptValue(0, false)",
+ "QScriptValue(false) <=> QScriptValue(0, 0)",
+ "QScriptValue(false) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(false) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(false) <=> QScriptValue(0, QString())",
+ "QScriptValue(false) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(false) <=> QScriptValue(engine, false)",
+ "QScriptValue(false) <=> QScriptValue(engine, 0)",
+ "QScriptValue(false) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(false) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(false) <=> QScriptValue(engine, QString())",
+ "QScriptValue(false) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(false) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(false) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(false) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(false) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(false) <=> engine->evaluate(\"false\")",
+ "QScriptValue(false) <=> engine->evaluate(\"0\")",
+ "QScriptValue(false) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(false) <=> engine->evaluate(\"''\")",
+ "QScriptValue(false) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(false) <=> engine->newArray()",
+ "QScriptValue(false) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(int(122)) <=> QScriptValue(int(122))",
+ "QScriptValue(int(122)) <=> QScriptValue(0, int(122))",
+ "QScriptValue(int(122)) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"122\")",
+ "QScriptValue(uint(124)) <=> QScriptValue(uint(124))",
+ "QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(uint(124)) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0) <=> QScriptValue(false)",
+ "QScriptValue(0) <=> QScriptValue(0)",
+ "QScriptValue(0) <=> QScriptValue(0.0)",
+ "QScriptValue(0) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(0) <=> QScriptValue(QString())",
+ "QScriptValue(0) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0) <=> QScriptValue(0, false)",
+ "QScriptValue(0) <=> QScriptValue(0, 0)",
+ "QScriptValue(0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0) <=> QScriptValue(0, QString())",
+ "QScriptValue(0) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0) <=> QScriptValue(engine, false)",
+ "QScriptValue(0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(0) <=> QScriptValue(engine, QString())",
+ "QScriptValue(0) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(0) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0) <=> engine->evaluate(\"false\")",
+ "QScriptValue(0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0) <=> engine->evaluate(\"''\")",
+ "QScriptValue(0) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0) <=> engine->newArray()",
+ "QScriptValue(0) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(0.0) <=> QScriptValue(false)",
+ "QScriptValue(0.0) <=> QScriptValue(0)",
+ "QScriptValue(0.0) <=> QScriptValue(0.0)",
+ "QScriptValue(0.0) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(0.0) <=> QScriptValue(QString())",
+ "QScriptValue(0.0) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0.0) <=> QScriptValue(0, false)",
+ "QScriptValue(0.0) <=> QScriptValue(0, 0)",
+ "QScriptValue(0.0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0.0) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0.0) <=> QScriptValue(0, QString())",
+ "QScriptValue(0.0) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0.0) <=> QScriptValue(engine, false)",
+ "QScriptValue(0.0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0.0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(0.0) <=> QScriptValue(engine, QString())",
+ "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0.0) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"false\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"''\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0.0) <=> engine->newArray()",
+ "QScriptValue(0.0) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(123.0) <=> QScriptValue(123.0)",
+ "QScriptValue(123.0) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(123.0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(123.0) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(123.0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(123.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(123.0) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(123.0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(123.0) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(123.0) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(0x43211234) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0x43211234) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0x10000) <=> QScriptValue(0x10000)",
+ "QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0x10001) <=> QScriptValue(0x10001)",
+ "QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0x10001) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(qInf()) <=> QScriptValue(qInf())",
+ "QScriptValue(qInf()) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(qInf()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(qInf()) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(qInf()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(qInf()) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(qInf()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(-qInf()) <=> QScriptValue(-qInf())",
+ "QScriptValue(-qInf()) <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"-Infinity\")",
+ "QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(qInf())",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(0, qInf())",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(engine, qInf())",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(-qInf())",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, -qInf())",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -qInf())",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")",
+ "QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(false)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0.0)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(QString())",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, false)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, false)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"false\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")",
+ "QScriptValue(QString(\"\")) <=> engine->newArray()",
+ "QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(QString()) <=> QScriptValue(false)",
+ "QScriptValue(QString()) <=> QScriptValue(0)",
+ "QScriptValue(QString()) <=> QScriptValue(0.0)",
+ "QScriptValue(QString()) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(QString()) <=> QScriptValue(QString())",
+ "QScriptValue(QString()) <=> QScriptValue(0, false)",
+ "QScriptValue(QString()) <=> QScriptValue(0, 0)",
+ "QScriptValue(QString()) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(QString()) <=> QScriptValue(0, QString())",
+ "QScriptValue(QString()) <=> QScriptValue(engine, false)",
+ "QScriptValue(QString()) <=> QScriptValue(engine, 0)",
+ "QScriptValue(QString()) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(QString()) <=> QScriptValue(engine, QString())",
+ "QScriptValue(QString()) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"false\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"0\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"''\")",
+ "QScriptValue(QString()) <=> engine->newArray()",
+ "QScriptValue(QString()) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(false)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0.0)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, false)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, false)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"false\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(123.0)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(QString(\"123\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->nullValue()",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->newQObject(0)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->undefinedValue()",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)",
+ "QScriptValue(0, true) <=> QScriptValue(true)",
+ "QScriptValue(0, true) <=> QScriptValue(0, true)",
+ "QScriptValue(0, true) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, true) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, true) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, false) <=> QScriptValue(false)",
+ "QScriptValue(0, false) <=> QScriptValue(0)",
+ "QScriptValue(0, false) <=> QScriptValue(0.0)",
+ "QScriptValue(0, false) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(0, false) <=> QScriptValue(QString())",
+ "QScriptValue(0, false) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0, false) <=> QScriptValue(0, false)",
+ "QScriptValue(0, false) <=> QScriptValue(0, 0)",
+ "QScriptValue(0, false) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0, false) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, false) <=> QScriptValue(0, QString())",
+ "QScriptValue(0, false) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, false) <=> QScriptValue(engine, false)",
+ "QScriptValue(0, false) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0, false) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(0, false) <=> QScriptValue(engine, QString())",
+ "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, false) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"false\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"''\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0, false) <=> engine->newArray()",
+ "QScriptValue(0, false) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(0, int(122)) <=> QScriptValue(int(122))",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, uint(124)) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, 0) <=> QScriptValue(false)",
+ "QScriptValue(0, 0) <=> QScriptValue(0)",
+ "QScriptValue(0, 0) <=> QScriptValue(0.0)",
+ "QScriptValue(0, 0) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(0, 0) <=> QScriptValue(QString())",
+ "QScriptValue(0, 0) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0, 0) <=> QScriptValue(0, false)",
+ "QScriptValue(0, 0) <=> QScriptValue(0, 0)",
+ "QScriptValue(0, 0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, 0) <=> QScriptValue(0, QString())",
+ "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, false)",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, QString())",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"false\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"''\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0, 0) <=> engine->newArray()",
+ "QScriptValue(0, 0) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(false)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0.0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(QString())",
+ "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, false)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, QString())",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, false)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString())",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"false\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"''\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0, 0.0) <=> engine->newArray()",
+ "QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(0, 123.0) <=> QScriptValue(123.0)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, 123.0) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, 123.0) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, 123.0) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, 0x43211234) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, qInf()) <=> QScriptValue(qInf())",
+ "QScriptValue(0, qInf()) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, qInf()) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, qInf()) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, qInf()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"-Infinity\")",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(qInf())",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(-qInf())",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -qInf())",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-Infinity\")",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(false)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0.0)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, false)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, false)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"false\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->newArray()",
+ "QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(0, QString()) <=> QScriptValue(false)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0.0)",
+ "QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(QString())",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, false)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, 0)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, QString())",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, false)",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, QString())",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"false\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"''\")",
+ "QScriptValue(0, QString()) <=> engine->newArray()",
+ "QScriptValue(0, QString()) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(false)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0.0)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, false)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, false)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"false\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(123.0)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->nullValue()",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->newQObject(0)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->undefinedValue()",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)",
+ "QScriptValue(engine, true) <=> QScriptValue(true)",
+ "QScriptValue(engine, true) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, false) <=> QScriptValue(false)",
+ "QScriptValue(engine, false) <=> QScriptValue(0)",
+ "QScriptValue(engine, false) <=> QScriptValue(0.0)",
+ "QScriptValue(engine, false) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(engine, false) <=> QScriptValue(QString())",
+ "QScriptValue(engine, false) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(engine, false) <=> QScriptValue(0, false)",
+ "QScriptValue(engine, false) <=> QScriptValue(0, 0)",
+ "QScriptValue(engine, false) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(engine, false) <=> QScriptValue(0, QString())",
+ "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, false)",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, 0)",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, QString())",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"false\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"0\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"''\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(engine, false) <=> engine->newArray()",
+ "QScriptValue(engine, false) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, 0) <=> QScriptValue(false)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0.0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(engine, 0) <=> QScriptValue(QString())",
+ "QScriptValue(engine, 0) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, false)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, 0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, QString())",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, false)",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, QString())",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"false\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"''\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(engine, 0) <=> engine->newArray()",
+ "QScriptValue(engine, 0) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(false)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0.0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(QString())",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, false)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString())",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, false)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString())",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"false\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"''\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(engine, 0.0) <=> engine->newArray()",
+ "QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, 123.0) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, 123.0) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, 123.0) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, qInf()) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, qInf()) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, qInf()) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, qInf()) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, qInf()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-Infinity\")",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(qInf())",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-qInf())",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -qInf())",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-Infinity\")",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(false)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0.0)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, false)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, false)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"false\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->newArray()",
+ "QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(false)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0.0)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(QString())",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, false)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, 0)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, QString())",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, false)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"false\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"0\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")",
+ "QScriptValue(engine, QString()) <=> engine->newArray()",
+ "QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(false)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0.0)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, false)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, false)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"false\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(false)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::NullValue)",
+ "engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::NullValue)",
+ "engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")",
+ "engine->evaluate(\"{}\") <=> engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"{}\") <=> engine->evaluate(\"null\")",
+ "engine->evaluate(\"{}\") <=> engine->nullValue()",
+ "engine->evaluate(\"{}\") <=> engine->undefinedValue()",
+ "engine->evaluate(\"{}\") <=> engine->newQObject(0)",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(false)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(false)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(true)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(false)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::NullValue)",
+ "engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::NullValue)",
+ "engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")",
+ "engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"undefined\") <=> engine->evaluate(\"null\")",
+ "engine->evaluate(\"undefined\") <=> engine->nullValue()",
+ "engine->evaluate(\"undefined\") <=> engine->undefinedValue()",
+ "engine->evaluate(\"undefined\") <=> engine->newQObject(0)",
+ "engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"{}\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"null\")",
+ "engine->evaluate(\"null\") <=> engine->nullValue()",
+ "engine->evaluate(\"null\") <=> engine->undefinedValue()",
+ "engine->evaluate(\"null\") <=> engine->newQObject(0)",
+ "engine->evaluate(\"true\") <=> QScriptValue(true)",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\") <=> QScriptValue(false)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"false\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"false\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"false\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"[]\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"false\") <=> engine->newArray()",
+ "engine->evaluate(\"false\") <=> engine->newVariant(QVariant(false))",
+ "engine->evaluate(\"122\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"122\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"124\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\") <=> QScriptValue(false)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"0\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"0\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"[]\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"0\") <=> engine->newArray()",
+ "engine->evaluate(\"0\") <=> engine->newVariant(QVariant(false))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(false)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"[]\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"0.0\") <=> engine->newArray()",
+ "engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(false))",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"123.0\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"123.0\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"123.0\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"Infinity\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"Infinity\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(\"-Infinity\")",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(false)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"[]\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"''\") <=> engine->newArray()",
+ "engine->evaluate(\"''\") <=> engine->newVariant(QVariant(false))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(false)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(false))",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'123'\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->nullValue() <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)",
+ "engine->nullValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)",
+ "engine->nullValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->nullValue() <=> engine->evaluate(\"{}\")",
+ "engine->nullValue() <=> engine->evaluate(\"undefined\")",
+ "engine->nullValue() <=> engine->evaluate(\"null\")",
+ "engine->nullValue() <=> engine->nullValue()",
+ "engine->nullValue() <=> engine->undefinedValue()",
+ "engine->nullValue() <=> engine->newQObject(0)",
+ "engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "engine->undefinedValue() <=> QScriptValue(QScriptValue::NullValue)",
+ "engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "engine->undefinedValue() <=> QScriptValue(0, QScriptValue::NullValue)",
+ "engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->undefinedValue() <=> engine->evaluate(\"{}\")",
+ "engine->undefinedValue() <=> engine->evaluate(\"undefined\")",
+ "engine->undefinedValue() <=> engine->evaluate(\"null\")",
+ "engine->undefinedValue() <=> engine->nullValue()",
+ "engine->undefinedValue() <=> engine->undefinedValue()",
+ "engine->undefinedValue() <=> engine->newQObject(0)",
+ "engine->newObject() <=> engine->newObject()",
+ "engine->newArray() <=> QScriptValue(false)",
+ "engine->newArray() <=> QScriptValue(0)",
+ "engine->newArray() <=> QScriptValue(0.0)",
+ "engine->newArray() <=> QScriptValue(QString(\"\"))",
+ "engine->newArray() <=> QScriptValue(QString())",
+ "engine->newArray() <=> QScriptValue(0, false)",
+ "engine->newArray() <=> QScriptValue(0, 0)",
+ "engine->newArray() <=> QScriptValue(0, 0.0)",
+ "engine->newArray() <=> QScriptValue(0, QString(\"\"))",
+ "engine->newArray() <=> QScriptValue(0, QString())",
+ "engine->newArray() <=> QScriptValue(engine, false)",
+ "engine->newArray() <=> QScriptValue(engine, 0)",
+ "engine->newArray() <=> QScriptValue(engine, 0.0)",
+ "engine->newArray() <=> QScriptValue(engine, QString(\"\"))",
+ "engine->newArray() <=> QScriptValue(engine, QString())",
+ "engine->newArray() <=> engine->evaluate(\"false\")",
+ "engine->newArray() <=> engine->evaluate(\"0\")",
+ "engine->newArray() <=> engine->evaluate(\"0.0\")",
+ "engine->newArray() <=> engine->evaluate(\"''\")",
+ "engine->newArray() <=> engine->newArray()",
+ "engine->newArray(10) <=> engine->newArray(10)",
+ "engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(123.0)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(QString(\"123\"))",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 123.0)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(0, QString(\"123\"))",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 123.0)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"123.0\")",
+ "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"'123'\")",
+ "engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(false)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0.0)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"\"))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(QString())",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"0\"))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, false)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0.0)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"\"))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString())",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"0\"))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, false)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0.0)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"\"))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString())",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"false\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0.0\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"''\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'0'\")",
+ "engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))",
+ "engine->newQObject(0) <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)",
+ "engine->newQObject(0) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->newQObject(0) <=> engine->evaluate(\"{}\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"undefined\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"null\")",
+ "engine->newQObject(0) <=> engine->nullValue()",
+ "engine->newQObject(0) <=> engine->undefinedValue()",
+ "engine->newQObject(0) <=> engine->newQObject(0)",
+ "engine->newQObject(engine) <=> engine->newQObject(engine)"};
+
+void tst_QScriptValueGenerated::equals_makeData(const char *expr)
+{
+ static QSet<QString> equals;
+ if (equals.isEmpty()) {
+ equals.reserve(1307);
+ for (unsigned i = 0; i < 1307; ++i)
+ equals.insert(equals_array[i]);
+ }
+ QHash<QString, QScriptValue>::const_iterator it;
+ for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+ QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+ newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+ }
+}
+
+void tst_QScriptValueGenerated::equals_test(const char *, const QScriptValue& value)
+{
+ QFETCH(QScriptValue, other);
+ QFETCH(bool, expected);
+ QCOMPARE(value.equals(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(equals)
+
+
+void tst_QScriptValueGenerated::strictlyEquals_initData()
+{
+ QTest::addColumn<QScriptValue>("other");
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString strictlyEquals_array[] = {
+ "QScriptValue() <=> QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
+ "QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)",
+ "QScriptValue(true) <=> QScriptValue(true)",
+ "QScriptValue(true) <=> QScriptValue(0, true)",
+ "QScriptValue(true) <=> QScriptValue(engine, true)",
+ "QScriptValue(true) <=> engine->evaluate(\"true\")",
+ "QScriptValue(false) <=> QScriptValue(false)",
+ "QScriptValue(false) <=> QScriptValue(0, false)",
+ "QScriptValue(false) <=> QScriptValue(engine, false)",
+ "QScriptValue(false) <=> engine->evaluate(\"false\")",
+ "QScriptValue(int(122)) <=> QScriptValue(int(122))",
+ "QScriptValue(int(122)) <=> QScriptValue(0, int(122))",
+ "QScriptValue(int(122)) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"122\")",
+ "QScriptValue(uint(124)) <=> QScriptValue(uint(124))",
+ "QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(uint(124)) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0) <=> QScriptValue(0)",
+ "QScriptValue(0) <=> QScriptValue(0.0)",
+ "QScriptValue(0) <=> QScriptValue(0, 0)",
+ "QScriptValue(0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0.0) <=> QScriptValue(0)",
+ "QScriptValue(0.0) <=> QScriptValue(0.0)",
+ "QScriptValue(0.0) <=> QScriptValue(0, 0)",
+ "QScriptValue(0.0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0.0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0.0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0.0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(123.0) <=> QScriptValue(123.0)",
+ "QScriptValue(123.0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(123.0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(123.0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(0x43211234) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0x43211234) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0x10000) <=> QScriptValue(0x10000)",
+ "QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0x10001) <=> QScriptValue(0x10001)",
+ "QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0x10001) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(qInf()) <=> QScriptValue(qInf())",
+ "QScriptValue(qInf()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(qInf()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(qInf()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(-qInf()) <=> QScriptValue(-qInf())",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"-Infinity\")",
+ "QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(QString())",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")",
+ "QScriptValue(QString()) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(QString()) <=> QScriptValue(QString())",
+ "QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(QString()) <=> QScriptValue(0, QString())",
+ "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(QString()) <=> QScriptValue(engine, QString())",
+ "QScriptValue(QString()) <=> engine->evaluate(\"''\")",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
+ "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)",
+ "QScriptValue(0, true) <=> QScriptValue(true)",
+ "QScriptValue(0, true) <=> QScriptValue(0, true)",
+ "QScriptValue(0, true) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, true) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, false) <=> QScriptValue(false)",
+ "QScriptValue(0, false) <=> QScriptValue(0, false)",
+ "QScriptValue(0, false) <=> QScriptValue(engine, false)",
+ "QScriptValue(0, false) <=> engine->evaluate(\"false\")",
+ "QScriptValue(0, int(122)) <=> QScriptValue(int(122))",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, uint(124)) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, 0) <=> QScriptValue(0)",
+ "QScriptValue(0, 0) <=> QScriptValue(0.0)",
+ "QScriptValue(0, 0) <=> QScriptValue(0, 0)",
+ "QScriptValue(0, 0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0.0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0, 123.0) <=> QScriptValue(123.0)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, 0x43211234) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, qInf()) <=> QScriptValue(qInf())",
+ "QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, qInf()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"-Infinity\")",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(QString())",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, QString())",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, QString())",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"''\")",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")",
+ "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)",
+ "QScriptValue(engine, true) <=> QScriptValue(true)",
+ "QScriptValue(engine, true) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, false) <=> QScriptValue(false)",
+ "QScriptValue(engine, false) <=> QScriptValue(0, false)",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, false)",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"false\")",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, 0) <=> QScriptValue(0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0.0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, 0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0.0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, qInf()) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, qInf()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-Infinity\")",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(QString())",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, QString())",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")",
+ "engine->evaluate(\"{}\") <=> engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"{}\") <=> engine->undefinedValue()",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")",
+ "engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"undefined\") <=> engine->undefinedValue()",
+ "engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"null\")",
+ "engine->evaluate(\"null\") <=> engine->nullValue()",
+ "engine->evaluate(\"null\") <=> engine->newQObject(0)",
+ "engine->evaluate(\"true\") <=> QScriptValue(true)",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\") <=> QScriptValue(false)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"122\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"124\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\") <=> QScriptValue(0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)",
+ "engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)",
+ "engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->nullValue() <=> engine->evaluate(\"null\")",
+ "engine->nullValue() <=> engine->nullValue()",
+ "engine->nullValue() <=> engine->newQObject(0)",
+ "engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)",
+ "engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)",
+ "engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "engine->undefinedValue() <=> engine->evaluate(\"{}\")",
+ "engine->undefinedValue() <=> engine->evaluate(\"undefined\")",
+ "engine->undefinedValue() <=> engine->undefinedValue()",
+ "engine->newObject() <=> engine->newObject()",
+ "engine->newArray() <=> engine->newArray()",
+ "engine->newArray(10) <=> engine->newArray(10)",
+ "engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))",
+ "engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)",
+ "engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->newQObject(0) <=> engine->evaluate(\"null\")",
+ "engine->newQObject(0) <=> engine->nullValue()",
+ "engine->newQObject(0) <=> engine->newQObject(0)",
+ "engine->newQObject(engine) <=> engine->newQObject(engine)"};
+
+void tst_QScriptValueGenerated::strictlyEquals_makeData(const char *expr)
+{
+ static QSet<QString> equals;
+ if (equals.isEmpty()) {
+ equals.reserve(529);
+ for (unsigned i = 0; i < 529; ++i)
+ equals.insert(strictlyEquals_array[i]);
+ }
+ QHash<QString, QScriptValue>::const_iterator it;
+ for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+ QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+ newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+ }
+}
+
+void tst_QScriptValueGenerated::strictlyEquals_test(const char *, const QScriptValue& value)
+{
+ QFETCH(QScriptValue, other);
+ QFETCH(bool, expected);
+ QCOMPARE(value.strictlyEquals(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(strictlyEquals)
+
+
+void tst_QScriptValueGenerated::lessThan_initData()
+{
+ QTest::addColumn<QScriptValue>("other");
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString lessThan_array[] = {
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(true)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(int(122))",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(uint(124))",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(123.0)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x43211234)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10000)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10001)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(qInf())",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, true)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, int(122))",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, qInf())",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, true)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"124\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(true) <=> QScriptValue(int(122))",
+ "QScriptValue(true) <=> QScriptValue(uint(124))",
+ "QScriptValue(true) <=> QScriptValue(123.0)",
+ "QScriptValue(true) <=> QScriptValue(0x43211234)",
+ "QScriptValue(true) <=> QScriptValue(0x10000)",
+ "QScriptValue(true) <=> QScriptValue(0x10001)",
+ "QScriptValue(true) <=> QScriptValue(qInf())",
+ "QScriptValue(true) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(true) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(true) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(true) <=> QScriptValue(0, int(122))",
+ "QScriptValue(true) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(true) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(true) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(true) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(true) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(true) <=> QScriptValue(0, qInf())",
+ "QScriptValue(true) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(true) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(true) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(true) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(true) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(true) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(true) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(true) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(true) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(true) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(true) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(true) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(true) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(true) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(true) <=> engine->evaluate(\"122\")",
+ "QScriptValue(true) <=> engine->evaluate(\"124\")",
+ "QScriptValue(true) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(true) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(true) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(true) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(true) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(true) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(true) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(true) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(false) <=> QScriptValue(true)",
+ "QScriptValue(false) <=> QScriptValue(int(122))",
+ "QScriptValue(false) <=> QScriptValue(uint(124))",
+ "QScriptValue(false) <=> QScriptValue(123.0)",
+ "QScriptValue(false) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(false) <=> QScriptValue(0x43211234)",
+ "QScriptValue(false) <=> QScriptValue(0x10000)",
+ "QScriptValue(false) <=> QScriptValue(0x10001)",
+ "QScriptValue(false) <=> QScriptValue(qInf())",
+ "QScriptValue(false) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(false) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(false) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(false) <=> QScriptValue(0, true)",
+ "QScriptValue(false) <=> QScriptValue(0, int(122))",
+ "QScriptValue(false) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(false) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(false) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(false) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(false) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(false) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(false) <=> QScriptValue(0, qInf())",
+ "QScriptValue(false) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(false) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(false) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(false) <=> QScriptValue(engine, true)",
+ "QScriptValue(false) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(false) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(false) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(false) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(false) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(false) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(false) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(false) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(false) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(false) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(false) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(false) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(false) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(false) <=> engine->evaluate(\"true\")",
+ "QScriptValue(false) <=> engine->evaluate(\"122\")",
+ "QScriptValue(false) <=> engine->evaluate(\"124\")",
+ "QScriptValue(false) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(false) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(false) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(false) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(false) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(false) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(false) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(false) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(false) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(int(122)) <=> QScriptValue(uint(124))",
+ "QScriptValue(int(122)) <=> QScriptValue(123.0)",
+ "QScriptValue(int(122)) <=> QScriptValue(0x43211234)",
+ "QScriptValue(int(122)) <=> QScriptValue(0x10000)",
+ "QScriptValue(int(122)) <=> QScriptValue(0x10001)",
+ "QScriptValue(int(122)) <=> QScriptValue(qInf())",
+ "QScriptValue(int(122)) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(int(122)) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(int(122)) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(int(122)) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(int(122)) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(int(122)) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(int(122)) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(int(122)) <=> QScriptValue(0, qInf())",
+ "QScriptValue(int(122)) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(int(122)) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(int(122)) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(int(122)) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(int(122)) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(int(122)) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(int(122)) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(int(122)) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(int(122)) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(int(122)) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"124\")",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(int(122)) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(uint(124)) <=> QScriptValue(0x43211234)",
+ "QScriptValue(uint(124)) <=> QScriptValue(0x10000)",
+ "QScriptValue(uint(124)) <=> QScriptValue(0x10001)",
+ "QScriptValue(uint(124)) <=> QScriptValue(qInf())",
+ "QScriptValue(uint(124)) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(uint(124)) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(uint(124)) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(uint(124)) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(uint(124)) <=> QScriptValue(0, qInf())",
+ "QScriptValue(uint(124)) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(uint(124)) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(uint(124)) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(uint(124)) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(uint(124)) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(uint(124)) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(uint(124)) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(uint(124)) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0) <=> QScriptValue(true)",
+ "QScriptValue(0) <=> QScriptValue(int(122))",
+ "QScriptValue(0) <=> QScriptValue(uint(124))",
+ "QScriptValue(0) <=> QScriptValue(123.0)",
+ "QScriptValue(0) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0) <=> QScriptValue(0x10000)",
+ "QScriptValue(0) <=> QScriptValue(0x10001)",
+ "QScriptValue(0) <=> QScriptValue(qInf())",
+ "QScriptValue(0) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0) <=> QScriptValue(0, true)",
+ "QScriptValue(0) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0) <=> QScriptValue(engine, true)",
+ "QScriptValue(0) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0.0) <=> QScriptValue(true)",
+ "QScriptValue(0.0) <=> QScriptValue(int(122))",
+ "QScriptValue(0.0) <=> QScriptValue(uint(124))",
+ "QScriptValue(0.0) <=> QScriptValue(123.0)",
+ "QScriptValue(0.0) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0.0) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0.0) <=> QScriptValue(0x10000)",
+ "QScriptValue(0.0) <=> QScriptValue(0x10001)",
+ "QScriptValue(0.0) <=> QScriptValue(qInf())",
+ "QScriptValue(0.0) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0.0) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0.0) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0.0) <=> QScriptValue(0, true)",
+ "QScriptValue(0.0) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0.0) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0.0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0.0) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0.0) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0.0) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0.0) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0.0) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0.0) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0.0) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0.0) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0.0) <=> QScriptValue(engine, true)",
+ "QScriptValue(0.0) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0.0) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0.0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0.0) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0.0) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0.0) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0.0) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0.0) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0.0) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0.0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0.0) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(123.0) <=> QScriptValue(uint(124))",
+ "QScriptValue(123.0) <=> QScriptValue(0x43211234)",
+ "QScriptValue(123.0) <=> QScriptValue(0x10000)",
+ "QScriptValue(123.0) <=> QScriptValue(0x10001)",
+ "QScriptValue(123.0) <=> QScriptValue(qInf())",
+ "QScriptValue(123.0) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(123.0) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(123.0) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(123.0) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(123.0) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(123.0) <=> QScriptValue(0, qInf())",
+ "QScriptValue(123.0) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(123.0) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(123.0) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(123.0) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(123.0) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(123.0) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(123.0) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(123.0) <=> engine->evaluate(\"124\")",
+ "QScriptValue(123.0) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(123.0) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(123.0) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(123.0) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(6.37e-8) <=> QScriptValue(true)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(int(122))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(uint(124))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(123.0)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0x43211234)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0x10000)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0x10001)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(qInf())",
+ "QScriptValue(6.37e-8) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(6.37e-8) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, true)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, int(122))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, qInf())",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, true)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"true\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"122\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"124\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(6.37e-8) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(true)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(false)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(int(122))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(uint(124))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0.0)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(123.0)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0x43211234)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0x10000)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0x10001)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(qInf())",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(QString())",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, true)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, false)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, int(122))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, qInf())",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString())",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, true)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, false)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString())",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"null\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"true\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"false\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"122\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"124\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"''\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(-6.37e-8) <=> engine->nullValue()",
+ "QScriptValue(-6.37e-8) <=> engine->newArray()",
+ "QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(-6.37e-8) <=> engine->newQObject(0)",
+ "QScriptValue(0x43211234) <=> QScriptValue(qInf())",
+ "QScriptValue(0x43211234) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0x43211234) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0x43211234) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0x43211234) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0x43211234) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0x43211234) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0x10000) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0x10000) <=> QScriptValue(0x10001)",
+ "QScriptValue(0x10000) <=> QScriptValue(qInf())",
+ "QScriptValue(0x10000) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0x10000) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0x10000) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0x10000) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0x10000) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0x10000) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0x10000) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0x10000) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0x10000) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0x10000) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0x10000) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0x10000) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0x10001) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0x10001) <=> QScriptValue(qInf())",
+ "QScriptValue(0x10001) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0x10001) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0x10001) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0x10001) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0x10001) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0x10001) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0x10001) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0x10001) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0x10001) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(-qInf()) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(-qInf()) <=> QScriptValue(true)",
+ "QScriptValue(-qInf()) <=> QScriptValue(false)",
+ "QScriptValue(-qInf()) <=> QScriptValue(int(122))",
+ "QScriptValue(-qInf()) <=> QScriptValue(uint(124))",
+ "QScriptValue(-qInf()) <=> QScriptValue(0)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0.0)",
+ "QScriptValue(-qInf()) <=> QScriptValue(123.0)",
+ "QScriptValue(-qInf()) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(-qInf()) <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0x43211234)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0x10000)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0x10001)",
+ "QScriptValue(-qInf()) <=> QScriptValue(qInf())",
+ "QScriptValue(-qInf()) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(-qInf()) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(-qInf()) <=> QScriptValue(QString())",
+ "QScriptValue(-qInf()) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(-qInf()) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(-qInf()) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, true)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, false)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, int(122))",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, 0)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, QString())",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, true)",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, false)",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, 0)",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, QString())",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"null\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"true\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"false\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"122\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"124\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"0\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"''\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(-qInf()) <=> engine->nullValue()",
+ "QScriptValue(-qInf()) <=> engine->newArray()",
+ "QScriptValue(-qInf()) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(-qInf()) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(-qInf()) <=> engine->newQObject(0)",
+ "QScriptValue(\"NaN\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(\"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"NaN\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(\"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"NaN\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(\"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"Null\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"True\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"False\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(\"NaN\") <=> engine->newObject()",
+ "QScriptValue(\"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(\"NaN\") <=> engine->newQObject(engine)",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(\"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Null\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"True\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"False\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(\"Infinity\") <=> engine->newObject()",
+ "QScriptValue(\"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(\"Infinity\") <=> engine->newQObject(engine)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(true)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(false)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(int(122))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(uint(124))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0.0)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(123.0)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(6.37e-8)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0x43211234)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0x10000)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0x10001)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(qInf())",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, true)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, false)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, int(122))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, uint(124))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0.0)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 123.0)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, qInf())",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, true)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, false)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, int(122))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, qInf())",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"/foo/\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Null\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"True\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"False\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"null\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"true\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"false\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"122\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"124\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(\"-Infinity\") <=> engine->nullValue()",
+ "QScriptValue(\"-Infinity\") <=> engine->newObject()",
+ "QScriptValue(\"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(\"-Infinity\") <=> engine->newRegExp(\"foo\", \"gim\")",
+ "QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(\"-Infinity\") <=> engine->newQObject(0)",
+ "QScriptValue(\"-Infinity\") <=> engine->newQObject(engine)",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(true)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(int(122))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(123.0)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(qInf())",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, true)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, int(122))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, true)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"/foo/\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"true\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"122\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(QString(\"\")) <=> engine->newObject()",
+ "QScriptValue(QString(\"\")) <=> engine->newArray(10)",
+ "QScriptValue(QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(QString(\"\")) <=> engine->newRegExp(\"foo\", \"gim\")",
+ "QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(QString(\"\")) <=> engine->newQObject(engine)",
+ "QScriptValue(QString()) <=> QScriptValue(true)",
+ "QScriptValue(QString()) <=> QScriptValue(int(122))",
+ "QScriptValue(QString()) <=> QScriptValue(uint(124))",
+ "QScriptValue(QString()) <=> QScriptValue(123.0)",
+ "QScriptValue(QString()) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(QString()) <=> QScriptValue(0x43211234)",
+ "QScriptValue(QString()) <=> QScriptValue(0x10000)",
+ "QScriptValue(QString()) <=> QScriptValue(0x10001)",
+ "QScriptValue(QString()) <=> QScriptValue(qInf())",
+ "QScriptValue(QString()) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(QString()) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(QString()) <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(QString()) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString()) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString()) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString()) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(QString()) <=> QScriptValue(0, true)",
+ "QScriptValue(QString()) <=> QScriptValue(0, int(122))",
+ "QScriptValue(QString()) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(QString()) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(QString()) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(QString()) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(QString()) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(QString()) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(QString()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(QString()) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(QString()) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(QString()) <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(QString()) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString()) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(QString()) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(QString()) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(QString()) <=> QScriptValue(engine, true)",
+ "QScriptValue(QString()) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(QString()) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(QString()) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(QString()) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(QString()) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(QString()) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(QString()) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(QString()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(QString()) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(QString()) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(QString()) <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(QString()) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(QString()) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"/foo/\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"True\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"False\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"true\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"122\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"124\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(QString()) <=> engine->newObject()",
+ "QScriptValue(QString()) <=> engine->newArray(10)",
+ "QScriptValue(QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(QString()) <=> engine->newRegExp(\"foo\", \"gim\")",
+ "QScriptValue(QString()) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(QString()) <=> engine->newQObject(engine)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(true)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(int(122))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(123.0)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(qInf())",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, true)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, int(122))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, true)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"true\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"122\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(QString(\"0\")) <=> engine->newObject()",
+ "QScriptValue(QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(QString(\"0\")) <=> engine->newQObject(engine)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(qInf())",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(QString(\"123\")) <=> engine->newObject()",
+ "QScriptValue(QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(QString(\"123\")) <=> engine->newQObject(engine)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(int(122))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(123.0)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(qInf())",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, int(122))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"122\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->newObject()",
+ "QScriptValue(QString(\"12.4\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(QString(\"12.4\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(QString(\"12.4\")) <=> engine->newQObject(engine)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(true)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(int(122))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(123.0)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(qInf())",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, true)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, true) <=> QScriptValue(int(122))",
+ "QScriptValue(0, true) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, true) <=> QScriptValue(123.0)",
+ "QScriptValue(0, true) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, true) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, true) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, true) <=> QScriptValue(qInf())",
+ "QScriptValue(0, true) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, true) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, true) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, true) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, true) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, true) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, true) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, true) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, true) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, true) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, true) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, true) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, true) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, true) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, true) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, true) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, true) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, true) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, true) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, true) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, true) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, true) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, true) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, true) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, true) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, true) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, true) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, true) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, true) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, true) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, true) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, true) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, true) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, true) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, false) <=> QScriptValue(true)",
+ "QScriptValue(0, false) <=> QScriptValue(int(122))",
+ "QScriptValue(0, false) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, false) <=> QScriptValue(123.0)",
+ "QScriptValue(0, false) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, false) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, false) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, false) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, false) <=> QScriptValue(qInf())",
+ "QScriptValue(0, false) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, false) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, false) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, false) <=> QScriptValue(0, true)",
+ "QScriptValue(0, false) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, false) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, false) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, false) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, false) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, false) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, false) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, false) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, false) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, false) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, false) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, false) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, false) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, false) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, false) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, false) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, false) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, false) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, false) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, false) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, false) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, false) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, false) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, int(122)) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, int(122)) <=> QScriptValue(123.0)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(qInf())",
+ "QScriptValue(0, int(122)) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, int(122)) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, int(122)) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, int(122)) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, int(122)) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, int(122)) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, int(122)) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, int(122)) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, int(122)) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(qInf())",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, uint(124)) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, uint(124)) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, 0) <=> QScriptValue(true)",
+ "QScriptValue(0, 0) <=> QScriptValue(int(122))",
+ "QScriptValue(0, 0) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, 0) <=> QScriptValue(123.0)",
+ "QScriptValue(0, 0) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, 0) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, 0) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, 0) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, 0) <=> QScriptValue(qInf())",
+ "QScriptValue(0, 0) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, 0) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, 0) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, 0) <=> QScriptValue(0, true)",
+ "QScriptValue(0, 0) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, 0) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, 0) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, 0) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, 0) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, 0) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, 0) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(true)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(int(122))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(123.0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(qInf())",
+ "QScriptValue(0, 0.0) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, true)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, 123.0) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(qInf())",
+ "QScriptValue(0, 123.0) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, 123.0) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, 123.0) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, 123.0) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, 123.0) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, 123.0) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, 123.0) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, 123.0) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(true)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(int(122))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(123.0)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(qInf())",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, true)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(true)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(false)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(int(122))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0.0)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(123.0)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(qInf())",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString())",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, true)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, false)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString())",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, false)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString())",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"null\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"false\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"''\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->nullValue()",
+ "QScriptValue(0, -6.37e-8) <=> engine->newArray()",
+ "QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(0, -6.37e-8) <=> engine->newQObject(0)",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(qInf())",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, 0x43211234) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(qInf())",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, 0x10000) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, 0x10000) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(qInf())",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, 0x10001) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, 0x10001) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(true)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(false)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(int(122))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0.0)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(123.0)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(qInf())",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(QString())",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, true)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, false)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString())",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, false)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString())",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"null\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"false\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"''\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, -qInf()) <=> engine->nullValue()",
+ "QScriptValue(0, -qInf()) <=> engine->newArray()",
+ "QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(0, -qInf()) <=> engine->newQObject(0)",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Null\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"True\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"False\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, \"NaN\") <=> engine->newObject()",
+ "QScriptValue(0, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, \"NaN\") <=> engine->newQObject(engine)",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Null\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"True\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"False\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->newObject()",
+ "QScriptValue(0, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, \"Infinity\") <=> engine->newQObject(engine)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(true)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(false)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(int(122))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(uint(124))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0.0)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(123.0)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10000)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10001)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(qInf())",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, true)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, false)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0.0)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, true)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, false)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"/foo/\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Null\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"True\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"False\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"null\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"false\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->nullValue()",
+ "QScriptValue(0, \"-Infinity\") <=> engine->newObject()",
+ "QScriptValue(0, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, \"-Infinity\") <=> engine->newRegExp(\"foo\", \"gim\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(0, \"-Infinity\") <=> engine->newQObject(0)",
+ "QScriptValue(0, \"-Infinity\") <=> engine->newQObject(engine)",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(true)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(int(122))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(123.0)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(qInf())",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, true)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"/foo/\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->newObject()",
+ "QScriptValue(0, QString(\"\")) <=> engine->newArray(10)",
+ "QScriptValue(0, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, QString(\"\")) <=> engine->newRegExp(\"foo\", \"gim\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, QString(\"\")) <=> engine->newQObject(engine)",
+ "QScriptValue(0, QString()) <=> QScriptValue(true)",
+ "QScriptValue(0, QString()) <=> QScriptValue(int(122))",
+ "QScriptValue(0, QString()) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, QString()) <=> QScriptValue(123.0)",
+ "QScriptValue(0, QString()) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, QString()) <=> QScriptValue(qInf())",
+ "QScriptValue(0, QString()) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, true)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"/foo/\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"True\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"False\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, QString()) <=> engine->newObject()",
+ "QScriptValue(0, QString()) <=> engine->newArray(10)",
+ "QScriptValue(0, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, QString()) <=> engine->newRegExp(\"foo\", \"gim\")",
+ "QScriptValue(0, QString()) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, QString()) <=> engine->newQObject(engine)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(true)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(int(122))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(123.0)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(qInf())",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, true)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"true\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->newObject()",
+ "QScriptValue(0, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, QString(\"0\")) <=> engine->newQObject(engine)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(qInf())",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->newObject()",
+ "QScriptValue(0, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, QString(\"123\")) <=> engine->newQObject(engine)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(int(122))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(123.0)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(qInf())",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, int(122))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"122\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->newObject()",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->newQObject(engine)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(true)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, true) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, true) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, true) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, true) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, true) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, true) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, true) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, true) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, true) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, true) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, true) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, true) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, true) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, true) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, true) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, true) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, true) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, true) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, true) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, true) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, true) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, false) <=> QScriptValue(true)",
+ "QScriptValue(engine, false) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, false) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, false) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, false) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, false) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, false) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, false) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, false) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, false) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, false) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, false) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, false) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, false) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, false) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, false) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, false) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, false) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, false) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, false) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, false) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, false) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, false) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, int(122)) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, int(122)) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, 0) <=> QScriptValue(true)",
+ "QScriptValue(engine, 0) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, 0) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, 0) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, 0) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, 0) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, 0) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, 0) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, 0) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(true)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, 123.0) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, 123.0) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, 123.0) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(true)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(true)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(false)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0.0)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString())",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, false)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString())",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, false)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString())",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"null\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"false\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"''\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->nullValue()",
+ "QScriptValue(engine, -6.37e-8) <=> engine->newArray()",
+ "QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(engine, -6.37e-8) <=> engine->newQObject(0)",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(true)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(false)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0.0)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"\"))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(QString())",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, false)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0.0)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"\"))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString())",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, false)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString())",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"[]\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Array.prototype\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"null\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"false\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"''\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, -qInf()) <=> engine->nullValue()",
+ "QScriptValue(engine, -qInf()) <=> engine->newArray()",
+ "QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(engine, -qInf()) <=> engine->newQObject(0)",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Null\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"True\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"False\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->newObject()",
+ "QScriptValue(engine, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, \"NaN\") <=> engine->newQObject(engine)",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Null\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"True\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"False\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->newObject()",
+ "QScriptValue(engine, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, \"Infinity\") <=> engine->newQObject(engine)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(true)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(false)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(int(122))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0.0)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(123.0)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-6.37e-8)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(qInf())",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"NaN\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, true)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, false)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0.0)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, false)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"/foo/\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Null\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"True\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"False\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"null\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"false\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0.0\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->nullValue()",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->newObject()",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->newRegExp(\"foo\", \"gim\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(false))",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(0)",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(engine)",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Object\")",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Array\")",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Number\")",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function\")",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(true)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"/foo/\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->newObject()",
+ "QScriptValue(engine, QString(\"\")) <=> engine->newArray(10)",
+ "QScriptValue(engine, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, QString(\"\")) <=> engine->newRegExp(\"foo\", \"gim\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, QString(\"\")) <=> engine->newQObject(engine)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(true)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, QString()) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(\"-Infinity\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"0\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"/foo/\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"True\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"False\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"'0'\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, QString()) <=> engine->newObject()",
+ "QScriptValue(engine, QString()) <=> engine->newArray(10)",
+ "QScriptValue(engine, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, QString()) <=> engine->newRegExp(\"foo\", \"gim\")",
+ "QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, QString()) <=> engine->newQObject(engine)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(true)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(6.37e-8)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, true)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"true\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->newObject()",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->newQObject(engine)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->newObject()",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->newQObject(engine)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(int(122))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(uint(124))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(123.0)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x43211234)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10000)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10001)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(qInf())",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"NaN\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"Infinity\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"ciao\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, int(122))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, uint(124))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 123.0)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x43211234)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10000)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10001)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, qInf())",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"NaN\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"Infinity\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"ciao\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, int(122))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, qInf())",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object.prototype\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function.prototype\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Error.prototype\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Array\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Number\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new String('ciao')\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Undefined\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Null\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"True\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"False\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"122\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"124\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"123.0\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x43211234\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10000\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10001\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Infinity\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'ciao'\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'123'\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'12.4'\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->newObject()",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->newVariant(QVariant(123))",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->newQObject(engine)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(true)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"[]\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(\"-Infinity\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, \"-Infinity\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"-Infinity\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"[]\") <=> engine->newObject()",
+ "engine->evaluate(\"[]\") <=> engine->newArray(10)",
+ "engine->evaluate(\"[]\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"[]\") <=> engine->newRegExp(\"foo\", \"gim\")",
+ "engine->evaluate(\"[]\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"[]\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"Object.prototype\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"Object.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(true)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"-Infinity\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"-Infinity\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"-Infinity\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->newObject()",
+ "engine->evaluate(\"Array.prototype\") <=> engine->newArray(10)",
+ "engine->evaluate(\"Array.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"Array.prototype\") <=> engine->newRegExp(\"foo\", \"gim\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"Array.prototype\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->newObject()",
+ "engine->evaluate(\"Error.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"Error.prototype\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Function\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"/foo/\") <=> engine->newObject()",
+ "engine->evaluate(\"/foo/\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"/foo/\") <=> engine->newRegExp(\"foo\", \"gim\")",
+ "engine->evaluate(\"/foo/\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"new Object()\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"new Object()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new Object()\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"new Object()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new Object()\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"new Object()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"new Object()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(true)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(\"-Infinity\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"-Infinity\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"-Infinity\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"new Array()\") <=> engine->newObject()",
+ "engine->evaluate(\"new Array()\") <=> engine->newArray(10)",
+ "engine->evaluate(\"new Array()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"new Array()\") <=> engine->newRegExp(\"foo\", \"gim\")",
+ "engine->evaluate(\"new Array()\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"new Array()\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"new Error()\") <=> engine->newObject()",
+ "engine->evaluate(\"new Error()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"new Error()\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(true)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->newObject()",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"Undefined\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"Undefined\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Undefined\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"Undefined\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Undefined\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"Undefined\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"Undefined\") <=> engine->newObject()",
+ "engine->evaluate(\"Undefined\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"Null\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"Null\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Null\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"Null\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Null\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"Null\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"Null\") <=> engine->newObject()",
+ "engine->evaluate(\"Null\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"True\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"True\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"True\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"True\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"True\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"True\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"True\") <=> engine->newObject()",
+ "engine->evaluate(\"True\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"False\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"False\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"False\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"False\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"False\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"False\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"False\") <=> engine->newObject()",
+ "engine->evaluate(\"False\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"null\") <=> QScriptValue(true)",
+ "engine->evaluate(\"null\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"null\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"null\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"null\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"null\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"null\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"null\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"null\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"null\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"true\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"true\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"true\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"true\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"true\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"true\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"true\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"true\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"true\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"true\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"true\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"false\") <=> QScriptValue(true)",
+ "engine->evaluate(\"false\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"false\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"false\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"false\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"false\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"false\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"false\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"false\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"false\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"122\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"122\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"122\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"122\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"122\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"122\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"122\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"122\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"122\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"122\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"122\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"122\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"122\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"122\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"122\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"122\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"122\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"122\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"122\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"122\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"122\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"122\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"122\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"124\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"124\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"124\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"124\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"124\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"124\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"124\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"124\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"124\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"124\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"124\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"124\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"124\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"124\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"124\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"124\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"124\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"0\") <=> QScriptValue(true)",
+ "engine->evaluate(\"0\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"0\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"0\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"0\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"0\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"0\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"0\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"0\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(true)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"123.0\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"123.0\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"123.0\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(true)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QScriptValue::NullValue)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(true)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(false)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QScriptValue::NullValue)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"[]\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"null\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->nullValue()",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->newArray()",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(false))",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->newQObject(0)",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(true)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(false)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(-6.37e-8)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"[]\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"null\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->nullValue()",
+ "engine->evaluate(\"-Infinity\") <=> engine->newArray()",
+ "engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(false))",
+ "engine->evaluate(\"-Infinity\") <=> engine->newQObject(0)",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(true)",
+ "engine->evaluate(\"''\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"''\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"''\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"''\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"''\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"''\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(\"-Infinity\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, \"-Infinity\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, \"-Infinity\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"''\") <=> engine->newObject()",
+ "engine->evaluate(\"''\") <=> engine->newArray(10)",
+ "engine->evaluate(\"''\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"''\") <=> engine->newRegExp(\"foo\", \"gim\")",
+ "engine->evaluate(\"''\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"''\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(true)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"'0'\") <=> engine->newObject()",
+ "engine->evaluate(\"'0'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"'0'\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"'123'\") <=> engine->newObject()",
+ "engine->evaluate(\"'123'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"'123'\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->newObject()",
+ "engine->evaluate(\"'12.4'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"'12.4'\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"'12.4'\") <=> engine->newQObject(engine)",
+ "engine->nullValue() <=> QScriptValue(true)",
+ "engine->nullValue() <=> QScriptValue(int(122))",
+ "engine->nullValue() <=> QScriptValue(uint(124))",
+ "engine->nullValue() <=> QScriptValue(123.0)",
+ "engine->nullValue() <=> QScriptValue(6.37e-8)",
+ "engine->nullValue() <=> QScriptValue(0x43211234)",
+ "engine->nullValue() <=> QScriptValue(0x10000)",
+ "engine->nullValue() <=> QScriptValue(0x10001)",
+ "engine->nullValue() <=> QScriptValue(qInf())",
+ "engine->nullValue() <=> QScriptValue(\"Infinity\")",
+ "engine->nullValue() <=> QScriptValue(QString(\"123\"))",
+ "engine->nullValue() <=> QScriptValue(QString(\"12.4\"))",
+ "engine->nullValue() <=> QScriptValue(0, true)",
+ "engine->nullValue() <=> QScriptValue(0, int(122))",
+ "engine->nullValue() <=> QScriptValue(0, uint(124))",
+ "engine->nullValue() <=> QScriptValue(0, 123.0)",
+ "engine->nullValue() <=> QScriptValue(0, 6.37e-8)",
+ "engine->nullValue() <=> QScriptValue(0, 0x43211234)",
+ "engine->nullValue() <=> QScriptValue(0, 0x10000)",
+ "engine->nullValue() <=> QScriptValue(0, 0x10001)",
+ "engine->nullValue() <=> QScriptValue(0, qInf())",
+ "engine->nullValue() <=> QScriptValue(0, \"Infinity\")",
+ "engine->nullValue() <=> QScriptValue(0, QString(\"123\"))",
+ "engine->nullValue() <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->nullValue() <=> QScriptValue(engine, true)",
+ "engine->nullValue() <=> QScriptValue(engine, int(122))",
+ "engine->nullValue() <=> QScriptValue(engine, uint(124))",
+ "engine->nullValue() <=> QScriptValue(engine, 123.0)",
+ "engine->nullValue() <=> QScriptValue(engine, 6.37e-8)",
+ "engine->nullValue() <=> QScriptValue(engine, 0x43211234)",
+ "engine->nullValue() <=> QScriptValue(engine, 0x10000)",
+ "engine->nullValue() <=> QScriptValue(engine, 0x10001)",
+ "engine->nullValue() <=> QScriptValue(engine, qInf())",
+ "engine->nullValue() <=> QScriptValue(engine, \"Infinity\")",
+ "engine->nullValue() <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->nullValue() <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->nullValue() <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->nullValue() <=> engine->evaluate(\"new Number(123)\")",
+ "engine->nullValue() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->nullValue() <=> engine->evaluate(\"true\")",
+ "engine->nullValue() <=> engine->evaluate(\"122\")",
+ "engine->nullValue() <=> engine->evaluate(\"124\")",
+ "engine->nullValue() <=> engine->evaluate(\"123.0\")",
+ "engine->nullValue() <=> engine->evaluate(\"6.37e-8\")",
+ "engine->nullValue() <=> engine->evaluate(\"0x43211234\")",
+ "engine->nullValue() <=> engine->evaluate(\"0x10000\")",
+ "engine->nullValue() <=> engine->evaluate(\"0x10001\")",
+ "engine->nullValue() <=> engine->evaluate(\"Infinity\")",
+ "engine->nullValue() <=> engine->evaluate(\"'123'\")",
+ "engine->nullValue() <=> engine->evaluate(\"'12.4'\")",
+ "engine->nullValue() <=> engine->newVariant(QVariant(123))",
+ "engine->newObject() <=> QScriptValue(\"ciao\")",
+ "engine->newObject() <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->newObject() <=> QScriptValue(0, \"ciao\")",
+ "engine->newObject() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->newObject() <=> QScriptValue(engine, \"ciao\")",
+ "engine->newObject() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->newObject() <=> engine->evaluate(\"Function.prototype\")",
+ "engine->newObject() <=> engine->evaluate(\"Object\")",
+ "engine->newObject() <=> engine->evaluate(\"Array\")",
+ "engine->newObject() <=> engine->evaluate(\"Number\")",
+ "engine->newObject() <=> engine->evaluate(\"Function\")",
+ "engine->newObject() <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->newObject() <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->newObject() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newObject() <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->newObject() <=> engine->evaluate(\"'ciao'\")",
+ "engine->newObject() <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newArray() <=> QScriptValue(true)",
+ "engine->newArray() <=> QScriptValue(int(122))",
+ "engine->newArray() <=> QScriptValue(uint(124))",
+ "engine->newArray() <=> QScriptValue(123.0)",
+ "engine->newArray() <=> QScriptValue(6.37e-8)",
+ "engine->newArray() <=> QScriptValue(0x43211234)",
+ "engine->newArray() <=> QScriptValue(0x10000)",
+ "engine->newArray() <=> QScriptValue(0x10001)",
+ "engine->newArray() <=> QScriptValue(qInf())",
+ "engine->newArray() <=> QScriptValue(\"NaN\")",
+ "engine->newArray() <=> QScriptValue(\"Infinity\")",
+ "engine->newArray() <=> QScriptValue(\"-Infinity\")",
+ "engine->newArray() <=> QScriptValue(\"ciao\")",
+ "engine->newArray() <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->newArray() <=> QScriptValue(QString(\"0\"))",
+ "engine->newArray() <=> QScriptValue(QString(\"123\"))",
+ "engine->newArray() <=> QScriptValue(QString(\"12.4\"))",
+ "engine->newArray() <=> QScriptValue(0, true)",
+ "engine->newArray() <=> QScriptValue(0, int(122))",
+ "engine->newArray() <=> QScriptValue(0, uint(124))",
+ "engine->newArray() <=> QScriptValue(0, 123.0)",
+ "engine->newArray() <=> QScriptValue(0, 6.37e-8)",
+ "engine->newArray() <=> QScriptValue(0, 0x43211234)",
+ "engine->newArray() <=> QScriptValue(0, 0x10000)",
+ "engine->newArray() <=> QScriptValue(0, 0x10001)",
+ "engine->newArray() <=> QScriptValue(0, qInf())",
+ "engine->newArray() <=> QScriptValue(0, \"NaN\")",
+ "engine->newArray() <=> QScriptValue(0, \"Infinity\")",
+ "engine->newArray() <=> QScriptValue(0, \"-Infinity\")",
+ "engine->newArray() <=> QScriptValue(0, \"ciao\")",
+ "engine->newArray() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->newArray() <=> QScriptValue(0, QString(\"0\"))",
+ "engine->newArray() <=> QScriptValue(0, QString(\"123\"))",
+ "engine->newArray() <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->newArray() <=> QScriptValue(engine, true)",
+ "engine->newArray() <=> QScriptValue(engine, int(122))",
+ "engine->newArray() <=> QScriptValue(engine, uint(124))",
+ "engine->newArray() <=> QScriptValue(engine, 123.0)",
+ "engine->newArray() <=> QScriptValue(engine, 6.37e-8)",
+ "engine->newArray() <=> QScriptValue(engine, 0x43211234)",
+ "engine->newArray() <=> QScriptValue(engine, 0x10000)",
+ "engine->newArray() <=> QScriptValue(engine, 0x10001)",
+ "engine->newArray() <=> QScriptValue(engine, qInf())",
+ "engine->newArray() <=> QScriptValue(engine, \"NaN\")",
+ "engine->newArray() <=> QScriptValue(engine, \"Infinity\")",
+ "engine->newArray() <=> QScriptValue(engine, \"-Infinity\")",
+ "engine->newArray() <=> QScriptValue(engine, \"ciao\")",
+ "engine->newArray() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->newArray() <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->newArray() <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->newArray() <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->newArray() <=> engine->evaluate(\"Object.prototype\")",
+ "engine->newArray() <=> engine->evaluate(\"Function.prototype\")",
+ "engine->newArray() <=> engine->evaluate(\"Error.prototype\")",
+ "engine->newArray() <=> engine->evaluate(\"Object\")",
+ "engine->newArray() <=> engine->evaluate(\"Array\")",
+ "engine->newArray() <=> engine->evaluate(\"Number\")",
+ "engine->newArray() <=> engine->evaluate(\"Function\")",
+ "engine->newArray() <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->newArray() <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->newArray() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newArray() <=> engine->evaluate(\"/foo/\")",
+ "engine->newArray() <=> engine->evaluate(\"new Object()\")",
+ "engine->newArray() <=> engine->evaluate(\"new Error()\")",
+ "engine->newArray() <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->newArray() <=> engine->evaluate(\"new Number(123)\")",
+ "engine->newArray() <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newArray() <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->newArray() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->newArray() <=> engine->evaluate(\"Undefined\")",
+ "engine->newArray() <=> engine->evaluate(\"Null\")",
+ "engine->newArray() <=> engine->evaluate(\"True\")",
+ "engine->newArray() <=> engine->evaluate(\"False\")",
+ "engine->newArray() <=> engine->evaluate(\"true\")",
+ "engine->newArray() <=> engine->evaluate(\"122\")",
+ "engine->newArray() <=> engine->evaluate(\"124\")",
+ "engine->newArray() <=> engine->evaluate(\"123.0\")",
+ "engine->newArray() <=> engine->evaluate(\"6.37e-8\")",
+ "engine->newArray() <=> engine->evaluate(\"0x43211234\")",
+ "engine->newArray() <=> engine->evaluate(\"0x10000\")",
+ "engine->newArray() <=> engine->evaluate(\"0x10001\")",
+ "engine->newArray() <=> engine->evaluate(\"Infinity\")",
+ "engine->newArray() <=> engine->evaluate(\"'ciao'\")",
+ "engine->newArray() <=> engine->evaluate(\"'0'\")",
+ "engine->newArray() <=> engine->evaluate(\"'123'\")",
+ "engine->newArray() <=> engine->evaluate(\"'12.4'\")",
+ "engine->newArray() <=> engine->newObject()",
+ "engine->newArray() <=> engine->newArray(10)",
+ "engine->newArray() <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newArray() <=> engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newArray() <=> engine->newVariant(QVariant(123))",
+ "engine->newArray() <=> engine->newQObject(engine)",
+ "engine->newArray(10) <=> QScriptValue(\"NaN\")",
+ "engine->newArray(10) <=> QScriptValue(\"Infinity\")",
+ "engine->newArray(10) <=> QScriptValue(\"-Infinity\")",
+ "engine->newArray(10) <=> QScriptValue(\"ciao\")",
+ "engine->newArray(10) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->newArray(10) <=> QScriptValue(QString(\"0\"))",
+ "engine->newArray(10) <=> QScriptValue(QString(\"123\"))",
+ "engine->newArray(10) <=> QScriptValue(QString(\"12.4\"))",
+ "engine->newArray(10) <=> QScriptValue(0, \"NaN\")",
+ "engine->newArray(10) <=> QScriptValue(0, \"Infinity\")",
+ "engine->newArray(10) <=> QScriptValue(0, \"-Infinity\")",
+ "engine->newArray(10) <=> QScriptValue(0, \"ciao\")",
+ "engine->newArray(10) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->newArray(10) <=> QScriptValue(0, QString(\"0\"))",
+ "engine->newArray(10) <=> QScriptValue(0, QString(\"123\"))",
+ "engine->newArray(10) <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->newArray(10) <=> QScriptValue(engine, \"NaN\")",
+ "engine->newArray(10) <=> QScriptValue(engine, \"Infinity\")",
+ "engine->newArray(10) <=> QScriptValue(engine, \"-Infinity\")",
+ "engine->newArray(10) <=> QScriptValue(engine, \"ciao\")",
+ "engine->newArray(10) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->newArray(10) <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->newArray(10) <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->newArray(10) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->newArray(10) <=> engine->evaluate(\"Object.prototype\")",
+ "engine->newArray(10) <=> engine->evaluate(\"Function.prototype\")",
+ "engine->newArray(10) <=> engine->evaluate(\"Error.prototype\")",
+ "engine->newArray(10) <=> engine->evaluate(\"Object\")",
+ "engine->newArray(10) <=> engine->evaluate(\"Array\")",
+ "engine->newArray(10) <=> engine->evaluate(\"Number\")",
+ "engine->newArray(10) <=> engine->evaluate(\"Function\")",
+ "engine->newArray(10) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->newArray(10) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->newArray(10) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newArray(10) <=> engine->evaluate(\"/foo/\")",
+ "engine->newArray(10) <=> engine->evaluate(\"new Object()\")",
+ "engine->newArray(10) <=> engine->evaluate(\"new Error()\")",
+ "engine->newArray(10) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newArray(10) <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->newArray(10) <=> engine->evaluate(\"Undefined\")",
+ "engine->newArray(10) <=> engine->evaluate(\"Null\")",
+ "engine->newArray(10) <=> engine->evaluate(\"True\")",
+ "engine->newArray(10) <=> engine->evaluate(\"False\")",
+ "engine->newArray(10) <=> engine->evaluate(\"'ciao'\")",
+ "engine->newArray(10) <=> engine->evaluate(\"'0'\")",
+ "engine->newArray(10) <=> engine->evaluate(\"'123'\")",
+ "engine->newArray(10) <=> engine->evaluate(\"'12.4'\")",
+ "engine->newArray(10) <=> engine->newObject()",
+ "engine->newArray(10) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newArray(10) <=> engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newArray(10) <=> engine->newQObject(engine)",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(\"ciao\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, \"ciao\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, \"ciao\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function.prototype\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Array\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Number\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"'ciao'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(\"NaN\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(\"Infinity\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(\"ciao\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString(\"0\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString(\"123\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, \"NaN\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, \"ciao\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Object\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Array\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Number\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Function\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"new Object()\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"new Error()\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Undefined\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Null\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"True\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"False\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'0'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'123'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newObject()",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newQObject(engine)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(uint(124))",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(0x43211234)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(0x10000)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(0x10001)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(qInf())",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(\"Infinity\")",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(0, uint(124))",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x43211234)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10000)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10001)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(0, qInf())",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(0, \"Infinity\")",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, uint(124))",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x43211234)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10000)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10001)",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, qInf())",
+ "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, \"Infinity\")",
+ "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"124\")",
+ "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x43211234\")",
+ "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10000\")",
+ "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10001\")",
+ "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Infinity\")",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(true)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(int(122))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(uint(124))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(123.0)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(6.37e-8)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0x43211234)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0x10000)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0x10001)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(qInf())",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(\"Infinity\")",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"123\"))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"12.4\"))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, true)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, int(122))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, uint(124))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 123.0)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 6.37e-8)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x43211234)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10000)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10001)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, qInf())",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, \"Infinity\")",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"123\"))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, true)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, int(122))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, uint(124))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 123.0)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 6.37e-8)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x43211234)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10000)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10001)",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, qInf())",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, \"Infinity\")",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"new Number(123)\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"true\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"122\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"124\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"123.0\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"6.37e-8\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x43211234\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10000\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10001\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Infinity\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'123'\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'12.4'\")",
+ "engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(123))",
+ "engine->newQObject(0) <=> QScriptValue(true)",
+ "engine->newQObject(0) <=> QScriptValue(int(122))",
+ "engine->newQObject(0) <=> QScriptValue(uint(124))",
+ "engine->newQObject(0) <=> QScriptValue(123.0)",
+ "engine->newQObject(0) <=> QScriptValue(6.37e-8)",
+ "engine->newQObject(0) <=> QScriptValue(0x43211234)",
+ "engine->newQObject(0) <=> QScriptValue(0x10000)",
+ "engine->newQObject(0) <=> QScriptValue(0x10001)",
+ "engine->newQObject(0) <=> QScriptValue(qInf())",
+ "engine->newQObject(0) <=> QScriptValue(\"Infinity\")",
+ "engine->newQObject(0) <=> QScriptValue(QString(\"123\"))",
+ "engine->newQObject(0) <=> QScriptValue(QString(\"12.4\"))",
+ "engine->newQObject(0) <=> QScriptValue(0, true)",
+ "engine->newQObject(0) <=> QScriptValue(0, int(122))",
+ "engine->newQObject(0) <=> QScriptValue(0, uint(124))",
+ "engine->newQObject(0) <=> QScriptValue(0, 123.0)",
+ "engine->newQObject(0) <=> QScriptValue(0, 6.37e-8)",
+ "engine->newQObject(0) <=> QScriptValue(0, 0x43211234)",
+ "engine->newQObject(0) <=> QScriptValue(0, 0x10000)",
+ "engine->newQObject(0) <=> QScriptValue(0, 0x10001)",
+ "engine->newQObject(0) <=> QScriptValue(0, qInf())",
+ "engine->newQObject(0) <=> QScriptValue(0, \"Infinity\")",
+ "engine->newQObject(0) <=> QScriptValue(0, QString(\"123\"))",
+ "engine->newQObject(0) <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->newQObject(0) <=> QScriptValue(engine, true)",
+ "engine->newQObject(0) <=> QScriptValue(engine, int(122))",
+ "engine->newQObject(0) <=> QScriptValue(engine, uint(124))",
+ "engine->newQObject(0) <=> QScriptValue(engine, 123.0)",
+ "engine->newQObject(0) <=> QScriptValue(engine, 6.37e-8)",
+ "engine->newQObject(0) <=> QScriptValue(engine, 0x43211234)",
+ "engine->newQObject(0) <=> QScriptValue(engine, 0x10000)",
+ "engine->newQObject(0) <=> QScriptValue(engine, 0x10001)",
+ "engine->newQObject(0) <=> QScriptValue(engine, qInf())",
+ "engine->newQObject(0) <=> QScriptValue(engine, \"Infinity\")",
+ "engine->newQObject(0) <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->newQObject(0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->newQObject(0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"new Number(123)\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"true\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"122\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"124\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"123.0\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"6.37e-8\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"0x43211234\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"0x10000\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"0x10001\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"Infinity\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"'123'\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"'12.4'\")",
+ "engine->newQObject(0) <=> engine->newVariant(QVariant(123))",
+ "engine->newQObject(engine) <=> QScriptValue(\"ciao\")",
+ "engine->newQObject(engine) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->newQObject(engine) <=> QScriptValue(0, \"ciao\")",
+ "engine->newQObject(engine) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->newQObject(engine) <=> QScriptValue(engine, \"ciao\")",
+ "engine->newQObject(engine) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->newQObject(engine) <=> engine->evaluate(\"Object.prototype\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"Function.prototype\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"Object\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"Array\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"Number\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"Function\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"new Object()\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"Undefined\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"Null\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"True\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"False\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"'ciao'\")",
+ "engine->newQObject(engine) <=> engine->newObject()",
+ "engine->newQObject(engine) <=> engine->newQMetaObject(&QObject::staticMetaObject)"};
+
+void tst_QScriptValueGenerated::lessThan_makeData(const char *expr)
+{
+ static QSet<QString> equals;
+ if (equals.isEmpty()) {
+ equals.reserve(5476);
+ for (unsigned i = 0; i < 5476; ++i)
+ equals.insert(lessThan_array[i]);
+ }
+ QHash<QString, QScriptValue>::const_iterator it;
+ for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+ QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+ newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+ }
+}
+
+void tst_QScriptValueGenerated::lessThan_test(const char *, const QScriptValue& value)
+{
+ QFETCH(QScriptValue, other);
+ QFETCH(bool, expected);
+ QCOMPARE(value.lessThan(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(lessThan)
+
+
+void tst_QScriptValueGenerated::instanceOf_initData()
+{
+ QTest::addColumn<QScriptValue>("other");
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString instanceOf_array[] = {
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Object\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Number\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")",
+ "engine->newObject() <=> engine->evaluate(\"Object\")",
+ "engine->newArray() <=> engine->evaluate(\"Object\")",
+ "engine->newArray() <=> engine->evaluate(\"Array\")",
+ "engine->newArray(10) <=> engine->evaluate(\"Object\")",
+ "engine->newArray(10) <=> engine->evaluate(\"Array\")",
+ "engine->newDate(QDateTime()) <=> engine->evaluate(\"Object\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Object\")",
+ "engine->newVariant(QVariant()) <=> engine->evaluate(\"Object\")",
+ "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Object\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Object\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"Object\")"};
+
+void tst_QScriptValueGenerated::instanceOf_makeData(const char *expr)
+{
+ static QSet<QString> equals;
+ if (equals.isEmpty()) {
+ equals.reserve(47);
+ for (unsigned i = 0; i < 47; ++i)
+ equals.insert(instanceOf_array[i]);
+ }
+ QHash<QString, QScriptValue>::const_iterator it;
+ for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+ QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+ newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+ }
+}
+
+void tst_QScriptValueGenerated::instanceOf_test(const char *, const QScriptValue& value)
+{
+ QFETCH(QScriptValue, other);
+ QFETCH(bool, expected);
+ QCOMPARE(value.instanceOf(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(instanceOf)
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp
new file mode 100644
index 0000000000..ae40684a51
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp
@@ -0,0 +1,204 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+/****************************************************************************
+*************** This file has been generated. DO NOT MODIFY! ****************
+****************************************************************************/
+
+#include "tst_qscriptvalue.h"
+
+
+void tst_QScriptValueGenerated::initScriptValues()
+{
+ m_values.clear();
+ if (engine)
+ delete engine;
+ engine = new QScriptEngine;
+ DEFINE_TEST_VALUE(QScriptValue());
+ DEFINE_TEST_VALUE(QScriptValue(QScriptValue::UndefinedValue));
+ DEFINE_TEST_VALUE(QScriptValue(QScriptValue::NullValue));
+ DEFINE_TEST_VALUE(QScriptValue(true));
+ DEFINE_TEST_VALUE(QScriptValue(false));
+ DEFINE_TEST_VALUE(QScriptValue(int(122)));
+ DEFINE_TEST_VALUE(QScriptValue(uint(124)));
+ DEFINE_TEST_VALUE(QScriptValue(0));
+ DEFINE_TEST_VALUE(QScriptValue(0.0));
+ DEFINE_TEST_VALUE(QScriptValue(123.0));
+ DEFINE_TEST_VALUE(QScriptValue(6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(-6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(0x43211234));
+ DEFINE_TEST_VALUE(QScriptValue(0x10000));
+ DEFINE_TEST_VALUE(QScriptValue(0x10001));
+ DEFINE_TEST_VALUE(QScriptValue(qSNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(qQNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(qInf()));
+ DEFINE_TEST_VALUE(QScriptValue(-qInf()));
+ DEFINE_TEST_VALUE(QScriptValue("NaN"));
+ DEFINE_TEST_VALUE(QScriptValue("Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue("-Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue("ciao"));
+ DEFINE_TEST_VALUE(QScriptValue(QString::fromLatin1("ciao")));
+ DEFINE_TEST_VALUE(QScriptValue(QString("")));
+ DEFINE_TEST_VALUE(QScriptValue(QString()));
+ DEFINE_TEST_VALUE(QScriptValue(QString("0")));
+ DEFINE_TEST_VALUE(QScriptValue(QString("123")));
+ DEFINE_TEST_VALUE(QScriptValue(QString("12.4")));
+ DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::UndefinedValue));
+ DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::NullValue));
+ DEFINE_TEST_VALUE(QScriptValue(0, true));
+ DEFINE_TEST_VALUE(QScriptValue(0, false));
+ DEFINE_TEST_VALUE(QScriptValue(0, int(122)));
+ DEFINE_TEST_VALUE(QScriptValue(0, uint(124)));
+ DEFINE_TEST_VALUE(QScriptValue(0, 0));
+ DEFINE_TEST_VALUE(QScriptValue(0, 0.0));
+ DEFINE_TEST_VALUE(QScriptValue(0, 123.0));
+ DEFINE_TEST_VALUE(QScriptValue(0, 6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(0, -6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(0, 0x43211234));
+ DEFINE_TEST_VALUE(QScriptValue(0, 0x10000));
+ DEFINE_TEST_VALUE(QScriptValue(0, 0x10001));
+ DEFINE_TEST_VALUE(QScriptValue(0, qSNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(0, qQNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(0, qInf()));
+ DEFINE_TEST_VALUE(QScriptValue(0, -qInf()));
+ DEFINE_TEST_VALUE(QScriptValue(0, "NaN"));
+ DEFINE_TEST_VALUE(QScriptValue(0, "Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue(0, "-Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue(0, "ciao"));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString::fromLatin1("ciao")));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString("")));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString()));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString("0")));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString("123")));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString("12.3")));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QScriptValue::UndefinedValue));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QScriptValue::NullValue));
+ DEFINE_TEST_VALUE(QScriptValue(engine, true));
+ DEFINE_TEST_VALUE(QScriptValue(engine, false));
+ DEFINE_TEST_VALUE(QScriptValue(engine, int(122)));
+ DEFINE_TEST_VALUE(QScriptValue(engine, uint(124)));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 0));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 0.0));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 123.0));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(engine, -6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 0x43211234));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 0x10000));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 0x10001));
+ DEFINE_TEST_VALUE(QScriptValue(engine, qSNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(engine, qQNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(engine, qInf()));
+ DEFINE_TEST_VALUE(QScriptValue(engine, -qInf()));
+ DEFINE_TEST_VALUE(QScriptValue(engine, "NaN"));
+ DEFINE_TEST_VALUE(QScriptValue(engine, "Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue(engine, "-Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue(engine, "ciao"));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString::fromLatin1("ciao")));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString("")));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString()));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString("0")));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString("123")));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString("1.23")));
+ DEFINE_TEST_VALUE(engine->evaluate("[]"));
+ DEFINE_TEST_VALUE(engine->evaluate("{}"));
+ DEFINE_TEST_VALUE(engine->evaluate("Object.prototype"));
+ DEFINE_TEST_VALUE(engine->evaluate("Date.prototype"));
+ DEFINE_TEST_VALUE(engine->evaluate("Array.prototype"));
+ DEFINE_TEST_VALUE(engine->evaluate("Function.prototype"));
+ DEFINE_TEST_VALUE(engine->evaluate("Error.prototype"));
+ DEFINE_TEST_VALUE(engine->evaluate("Object"));
+ DEFINE_TEST_VALUE(engine->evaluate("Array"));
+ DEFINE_TEST_VALUE(engine->evaluate("Number"));
+ DEFINE_TEST_VALUE(engine->evaluate("Function"));
+ DEFINE_TEST_VALUE(engine->evaluate("(function() { return 1; })"));
+ DEFINE_TEST_VALUE(engine->evaluate("(function() { return 'ciao'; })"));
+ DEFINE_TEST_VALUE(engine->evaluate("(function() { throw new Error('foo'); })"));
+ DEFINE_TEST_VALUE(engine->evaluate("/foo/"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Object()"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Array()"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Error()"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Boolean(true)"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Boolean(false)"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Number(123)"));
+ DEFINE_TEST_VALUE(engine->evaluate("new RegExp('foo', 'gim')"));
+ DEFINE_TEST_VALUE(engine->evaluate("new String('ciao')"));
+ DEFINE_TEST_VALUE(engine->evaluate("a = new Object(); a.foo = 22; a.foo"));
+ DEFINE_TEST_VALUE(engine->evaluate("Undefined"));
+ DEFINE_TEST_VALUE(engine->evaluate("Null"));
+ DEFINE_TEST_VALUE(engine->evaluate("True"));
+ DEFINE_TEST_VALUE(engine->evaluate("False"));
+ DEFINE_TEST_VALUE(engine->evaluate("undefined"));
+ DEFINE_TEST_VALUE(engine->evaluate("null"));
+ DEFINE_TEST_VALUE(engine->evaluate("true"));
+ DEFINE_TEST_VALUE(engine->evaluate("false"));
+ DEFINE_TEST_VALUE(engine->evaluate("122"));
+ DEFINE_TEST_VALUE(engine->evaluate("124"));
+ DEFINE_TEST_VALUE(engine->evaluate("0"));
+ DEFINE_TEST_VALUE(engine->evaluate("0.0"));
+ DEFINE_TEST_VALUE(engine->evaluate("123.0"));
+ DEFINE_TEST_VALUE(engine->evaluate("6.37e-8"));
+ DEFINE_TEST_VALUE(engine->evaluate("-6.37e-8"));
+ DEFINE_TEST_VALUE(engine->evaluate("0x43211234"));
+ DEFINE_TEST_VALUE(engine->evaluate("0x10000"));
+ DEFINE_TEST_VALUE(engine->evaluate("0x10001"));
+ DEFINE_TEST_VALUE(engine->evaluate("NaN"));
+ DEFINE_TEST_VALUE(engine->evaluate("Infinity"));
+ DEFINE_TEST_VALUE(engine->evaluate("-Infinity"));
+ DEFINE_TEST_VALUE(engine->evaluate("'ciao'"));
+ DEFINE_TEST_VALUE(engine->evaluate("''"));
+ DEFINE_TEST_VALUE(engine->evaluate("'0'"));
+ DEFINE_TEST_VALUE(engine->evaluate("'123'"));
+ DEFINE_TEST_VALUE(engine->evaluate("'12.4'"));
+ DEFINE_TEST_VALUE(engine->nullValue());
+ DEFINE_TEST_VALUE(engine->undefinedValue());
+ DEFINE_TEST_VALUE(engine->newObject());
+ DEFINE_TEST_VALUE(engine->newArray());
+ DEFINE_TEST_VALUE(engine->newArray(10));
+ DEFINE_TEST_VALUE(engine->newDate(QDateTime()));
+ DEFINE_TEST_VALUE(engine->newQMetaObject(&QObject::staticMetaObject));
+ DEFINE_TEST_VALUE(engine->newRegExp("foo", "gim"));
+ DEFINE_TEST_VALUE(engine->newVariant(QVariant()));
+ DEFINE_TEST_VALUE(engine->newVariant(QVariant(123)));
+ DEFINE_TEST_VALUE(engine->newVariant(QVariant(false)));
+ DEFINE_TEST_VALUE(engine->newQObject(0));
+ DEFINE_TEST_VALUE(engine->newQObject(engine));
+}
+
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp
new file mode 100644
index 0000000000..26b8c62451
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp
@@ -0,0 +1,862 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+/****************************************************************************
+*************** This file has been generated. DO NOT MODIFY! ****************
+****************************************************************************/
+
+#include "tst_qscriptvalue.h"
+
+
+void tst_QScriptValueGenerated::isValid_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isValid_array[] = {
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"
+};
+
+void tst_QScriptValueGenerated::isValid_makeData(const char* expr)
+{
+ static QSet<QString> isValid;
+ if (isValid.isEmpty()) {
+ isValid.reserve(147);
+ for (unsigned i = 0; i < 147; ++i)
+ isValid.insert(isValid_array[i]);
+ }
+ newRow(expr) << isValid.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isValid_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isValid(), expected);
+ QCOMPARE(value.isValid(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isValid)
+
+
+void tst_QScriptValueGenerated::isBool_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isBool_array[] = {
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")"
+};
+
+void tst_QScriptValueGenerated::isBool_makeData(const char* expr)
+{
+ static QSet<QString> isBool;
+ if (isBool.isEmpty()) {
+ isBool.reserve(8);
+ for (unsigned i = 0; i < 8; ++i)
+ isBool.insert(isBool_array[i]);
+ }
+ newRow(expr) << isBool.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isBool_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isBool(), expected);
+ QCOMPARE(value.isBool(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isBool)
+
+
+void tst_QScriptValueGenerated::isBoolean_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isBoolean_array[] = {
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")"
+};
+
+void tst_QScriptValueGenerated::isBoolean_makeData(const char* expr)
+{
+ static QSet<QString> isBoolean;
+ if (isBoolean.isEmpty()) {
+ isBoolean.reserve(8);
+ for (unsigned i = 0; i < 8; ++i)
+ isBoolean.insert(isBoolean_array[i]);
+ }
+ newRow(expr) << isBoolean.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isBoolean_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isBoolean(), expected);
+ QCOMPARE(value.isBoolean(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isBoolean)
+
+
+void tst_QScriptValueGenerated::isNumber_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isNumber_array[] = {
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")"
+};
+
+void tst_QScriptValueGenerated::isNumber_makeData(const char* expr)
+{
+ static QSet<QString> isNumber;
+ if (isNumber.isEmpty()) {
+ isNumber.reserve(56);
+ for (unsigned i = 0; i < 56; ++i)
+ isNumber.insert(isNumber_array[i]);
+ }
+ newRow(expr) << isNumber.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isNumber_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isNumber(), expected);
+ QCOMPARE(value.isNumber(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isNumber)
+
+
+void tst_QScriptValueGenerated::isFunction_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isFunction_array[] = {
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")"
+};
+
+void tst_QScriptValueGenerated::isFunction_makeData(const char* expr)
+{
+ static QSet<QString> isFunction;
+ if (isFunction.isEmpty()) {
+ isFunction.reserve(12);
+ for (unsigned i = 0; i < 12; ++i)
+ isFunction.insert(isFunction_array[i]);
+ }
+ newRow(expr) << isFunction.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isFunction_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isFunction(), expected);
+ QCOMPARE(value.isFunction(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isFunction)
+
+
+void tst_QScriptValueGenerated::isNull_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isNull_array[] = {
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "engine->evaluate(\"null\")",
+ "engine->nullValue()",
+ "engine->newQObject(0)"
+};
+
+void tst_QScriptValueGenerated::isNull_makeData(const char* expr)
+{
+ static QSet<QString> isNull;
+ if (isNull.isEmpty()) {
+ isNull.reserve(6);
+ for (unsigned i = 0; i < 6; ++i)
+ isNull.insert(isNull_array[i]);
+ }
+ newRow(expr) << isNull.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isNull_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isNull(), expected);
+ QCOMPARE(value.isNull(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isNull)
+
+
+void tst_QScriptValueGenerated::isString_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isString_array[] = {
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")"
+};
+
+void tst_QScriptValueGenerated::isString_makeData(const char* expr)
+{
+ static QSet<QString> isString;
+ if (isString.isEmpty()) {
+ isString.reserve(35);
+ for (unsigned i = 0; i < 35; ++i)
+ isString.insert(isString_array[i]);
+ }
+ newRow(expr) << isString.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isString_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isString(), expected);
+ QCOMPARE(value.isString(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isString)
+
+
+void tst_QScriptValueGenerated::isUndefined_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isUndefined_array[] = {
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->undefinedValue()"
+};
+
+void tst_QScriptValueGenerated::isUndefined_makeData(const char* expr)
+{
+ static QSet<QString> isUndefined;
+ if (isUndefined.isEmpty()) {
+ isUndefined.reserve(6);
+ for (unsigned i = 0; i < 6; ++i)
+ isUndefined.insert(isUndefined_array[i]);
+ }
+ newRow(expr) << isUndefined.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isUndefined_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isUndefined(), expected);
+ QCOMPARE(value.isUndefined(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isUndefined)
+
+
+void tst_QScriptValueGenerated::isVariant_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isVariant_array[] = {
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))"
+};
+
+void tst_QScriptValueGenerated::isVariant_makeData(const char* expr)
+{
+ static QSet<QString> isVariant;
+ if (isVariant.isEmpty()) {
+ isVariant.reserve(3);
+ for (unsigned i = 0; i < 3; ++i)
+ isVariant.insert(isVariant_array[i]);
+ }
+ newRow(expr) << isVariant.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isVariant_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isVariant(), expected);
+ QCOMPARE(value.isVariant(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isVariant)
+
+
+void tst_QScriptValueGenerated::isQObject_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isQObject_array[] = {
+ "engine->newQObject(engine)"
+};
+
+void tst_QScriptValueGenerated::isQObject_makeData(const char* expr)
+{
+ static QSet<QString> isQObject;
+ if (isQObject.isEmpty()) {
+ isQObject.reserve(1);
+ for (unsigned i = 0; i < 1; ++i)
+ isQObject.insert(isQObject_array[i]);
+ }
+ newRow(expr) << isQObject.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isQObject_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isQObject(), expected);
+ QCOMPARE(value.isQObject(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isQObject)
+
+
+void tst_QScriptValueGenerated::isQMetaObject_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isQMetaObject_array[] = {
+ "engine->newQMetaObject(&QObject::staticMetaObject)"
+};
+
+void tst_QScriptValueGenerated::isQMetaObject_makeData(const char* expr)
+{
+ static QSet<QString> isQMetaObject;
+ if (isQMetaObject.isEmpty()) {
+ isQMetaObject.reserve(1);
+ for (unsigned i = 0; i < 1; ++i)
+ isQMetaObject.insert(isQMetaObject_array[i]);
+ }
+ newRow(expr) << isQMetaObject.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isQMetaObject_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isQMetaObject(), expected);
+ QCOMPARE(value.isQMetaObject(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isQMetaObject)
+
+
+void tst_QScriptValueGenerated::isObject_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isObject_array[] = {
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(engine)"
+};
+
+void tst_QScriptValueGenerated::isObject_makeData(const char* expr)
+{
+ static QSet<QString> isObject;
+ if (isObject.isEmpty()) {
+ isObject.reserve(36);
+ for (unsigned i = 0; i < 36; ++i)
+ isObject.insert(isObject_array[i]);
+ }
+ newRow(expr) << isObject.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isObject_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isObject(), expected);
+ QCOMPARE(value.isObject(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isObject)
+
+
+void tst_QScriptValueGenerated::isDate_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isDate_array[] = {
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->newDate(QDateTime())"
+};
+
+void tst_QScriptValueGenerated::isDate_makeData(const char* expr)
+{
+ static QSet<QString> isDate;
+ if (isDate.isEmpty()) {
+ isDate.reserve(2);
+ for (unsigned i = 0; i < 2; ++i)
+ isDate.insert(isDate_array[i]);
+ }
+ newRow(expr) << isDate.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isDate_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isDate(), expected);
+ QCOMPARE(value.isDate(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isDate)
+
+
+void tst_QScriptValueGenerated::isRegExp_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isRegExp_array[] = {
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newRegExp(\"foo\", \"gim\")"
+};
+
+void tst_QScriptValueGenerated::isRegExp_makeData(const char* expr)
+{
+ static QSet<QString> isRegExp;
+ if (isRegExp.isEmpty()) {
+ isRegExp.reserve(3);
+ for (unsigned i = 0; i < 3; ++i)
+ isRegExp.insert(isRegExp_array[i]);
+ }
+ newRow(expr) << isRegExp.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isRegExp_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isRegExp(), expected);
+ QCOMPARE(value.isRegExp(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isRegExp)
+
+
+void tst_QScriptValueGenerated::isArray_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isArray_array[] = {
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->newArray()",
+ "engine->newArray(10)"
+};
+
+void tst_QScriptValueGenerated::isArray_makeData(const char* expr)
+{
+ static QSet<QString> isArray;
+ if (isArray.isEmpty()) {
+ isArray.reserve(5);
+ for (unsigned i = 0; i < 5; ++i)
+ isArray.insert(isArray_array[i]);
+ }
+ newRow(expr) << isArray.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isArray_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isArray(), expected);
+ QCOMPARE(value.isArray(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isArray)
+
+
+void tst_QScriptValueGenerated::isError_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString isError_array[] = {
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")"
+};
+
+void tst_QScriptValueGenerated::isError_makeData(const char* expr)
+{
+ static QSet<QString> isError;
+ if (isError.isEmpty()) {
+ isError.reserve(6);
+ for (unsigned i = 0; i < 6; ++i)
+ isError.insert(isError_array[i]);
+ }
+ newRow(expr) << isError.contains(expr);
+}
+
+void tst_QScriptValueGenerated::isError_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isError(), expected);
+ QCOMPARE(value.isError(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isError)
+
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp
new file mode 100644
index 0000000000..e663645a35
--- /dev/null
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp
@@ -0,0 +1,1963 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+/****************************************************************************
+*************** This file has been generated. DO NOT MODIFY! ****************
+****************************************************************************/
+
+#include "tst_qscriptvalue.h"
+
+
+
+void tst_QScriptValueGenerated::toString_initData()
+{
+ QTest::addColumn<QString>("expected");
+ initScriptValues();
+}
+
+static QString toString_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+
+static QString toString_valueArray[] = {
+ "", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.4", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.3", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "1.23", "",
+ "undefined", "[object Object]",
+ "Invalid Date", "",
+ "function () {\n [native code]\n}", "Error: Unknown error",
+ "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
+ "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
+ "function () { return 1; }", "function () { return 'ciao'; }",
+ "function () { throw new Error('foo'); }", "/foo/",
+ "[object Object]", "",
+ "Error: Unknown error", "true",
+ "false", "123",
+ "/foo/gim", "ciao",
+ "22", "ReferenceError: Can't find variable: Undefined",
+ "ReferenceError: Can't find variable: Null", "ReferenceError: Can't find variable: True",
+ "ReferenceError: Can't find variable: False", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "",
+ "0", "123",
+ "12.4", "null",
+ "undefined", "[object Object]",
+ "", ",,,,,,,,,",
+ "Invalid Date", "[object QMetaObject]",
+ "/foo/gim", "undefined",
+ "123", "false",
+ "null", "QScriptEngine(name = \"\")"};
+
+void tst_QScriptValueGenerated::toString_makeData(const char* expr)
+{
+ static QHash<QString, QString> toString;
+ if (toString.isEmpty()) {
+ toString.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ toString.insert(toString_tagArray[i], toString_valueArray[i]);
+ }
+ newRow(expr) << toString.value(expr);
+}
+
+void tst_QScriptValueGenerated::toString_test(const char*, const QScriptValue& value)
+{
+ QFETCH(QString, expected);
+ QCOMPARE(value.toString(), expected);
+ QCOMPARE(value.toString(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toString)
+
+
+void tst_QScriptValueGenerated::toNumber_initData()
+{
+ QTest::addColumn<qsreal>("expected");
+ initScriptValues();
+}
+
+static QString toNumber_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+static qsreal toNumber_valueArray[] = {
+ 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
+ 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
+ qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
+ 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
+ 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
+ qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
+ 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
+ 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
+ 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
+ qQNaN(), 0, qQNaN(), 1, 0, 123, qQNaN(), qQNaN(), 22, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0, 1, 0, 122, 124, 0,
+ 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qInf(), qInf(),
+ qQNaN(), 0, 0, 123, 12.4, 0, qQNaN(), qQNaN(), 0, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0, 0, qQNaN()};
+void tst_QScriptValueGenerated::toNumber_makeData(const char* expr)
+{
+ static QHash<QString, qsreal> toNumber;
+ if (toNumber.isEmpty()) {
+ toNumber.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ toNumber.insert(toNumber_tagArray[i], toNumber_valueArray[i]);
+ }
+ newRow(expr) << toNumber.value(expr);
+}
+
+void tst_QScriptValueGenerated::toNumber_test(const char*, const QScriptValue& value)
+{
+ QFETCH(qsreal, expected);
+ if (qIsNaN(expected)) {
+ QVERIFY(qIsNaN(value.toNumber()));
+ return;
+ }
+ if (qIsInf(expected)) {
+ QVERIFY(qIsInf(value.toNumber()));
+ QVERIFY(qIsInf(value.toNumber()));
+ return;
+ }
+ QCOMPARE(value.toNumber(), expected);
+ QCOMPARE(value.toNumber(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toNumber)
+
+
+void tst_QScriptValueGenerated::toBool_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString toBool_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+
+static bool toBool_valueArray[] = {
+ false, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, true,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ false, true};
+
+void tst_QScriptValueGenerated::toBool_makeData(const char* expr)
+{
+ static QHash<QString, bool> toBool;
+ if (toBool.isEmpty()) {
+ toBool.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ toBool.insert(toBool_tagArray[i], toBool_valueArray[i]);
+ }
+ newRow(expr) << toBool.value(expr);
+}
+
+void tst_QScriptValueGenerated::toBool_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.toBool(), expected);
+ QCOMPARE(value.toBool(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toBool)
+
+
+void tst_QScriptValueGenerated::toBoolean_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+static QString toBoolean_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+
+static bool toBoolean_valueArray[] = {
+ false, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, true,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ false, true};
+
+void tst_QScriptValueGenerated::toBoolean_makeData(const char* expr)
+{
+ static QHash<QString, bool> toBoolean;
+ if (toBoolean.isEmpty()) {
+ toBoolean.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ toBoolean.insert(toBoolean_tagArray[i], toBoolean_valueArray[i]);
+ }
+ newRow(expr) << toBoolean.value(expr);
+}
+
+void tst_QScriptValueGenerated::toBoolean_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.toBoolean(), expected);
+ QCOMPARE(value.toBoolean(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toBoolean)
+
+
+void tst_QScriptValueGenerated::toInteger_initData()
+{
+ QTest::addColumn<qsreal>("expected");
+ initScriptValues();
+}
+
+static QString toInteger_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+static qsreal toInteger_valueArray[] = {
+ 0, 0, 0, 1, 0, 122, 124, 0, 0, 123,
+ 0, 0, 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0,
+ qInf(), qInf(), 0, 0, 0, 0, 0, 123, 12, 0,
+ 0, 1, 0, 122, 124, 0, 0, 123, 0, 0,
+ 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(),
+ 0, 0, 0, 0, 0, 123, 12, 0, 0, 1,
+ 0, 122, 124, 0, 0, 123, 0, 0, 1126240820, 65536,
+ 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(), 0, 0,
+ 0, 0, 0, 123, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 123, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 1, 0, 122, 124, 0,
+ 0, 123, 0, 0, 1126240820, 65536, 65537, 0, qInf(), qInf(),
+ 0, 0, 0, 123, 12, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 123, 0, 0, 0};
+void tst_QScriptValueGenerated::toInteger_makeData(const char* expr)
+{
+ static QHash<QString, qsreal> toInteger;
+ if (toInteger.isEmpty()) {
+ toInteger.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ toInteger.insert(toInteger_tagArray[i], toInteger_valueArray[i]);
+ }
+ newRow(expr) << toInteger.value(expr);
+}
+
+void tst_QScriptValueGenerated::toInteger_test(const char*, const QScriptValue& value)
+{
+ QFETCH(qsreal, expected);
+ if (qIsInf(expected)) {
+ QVERIFY(qIsInf(value.toInteger()));
+ QVERIFY(qIsInf(value.toInteger()));
+ return;
+ }
+ QCOMPARE(value.toInteger(), expected);
+ QCOMPARE(value.toInteger(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toInteger)
+
+
+void tst_QScriptValueGenerated::toInt32_initData()
+{
+ QTest::addColumn<qint32>("expected");
+ initScriptValues();
+}
+
+static QString toInt32_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+
+static qint32 toInt32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
+
+void tst_QScriptValueGenerated::toInt32_makeData(const char* expr)
+{
+ static QHash<QString, qint32> toInt32;
+ if (toInt32.isEmpty()) {
+ toInt32.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ toInt32.insert(toInt32_tagArray[i], toInt32_valueArray[i]);
+ }
+ newRow(expr) << toInt32.value(expr);
+}
+
+void tst_QScriptValueGenerated::toInt32_test(const char*, const QScriptValue& value)
+{
+ QFETCH(qint32, expected);
+ QCOMPARE(value.toInt32(), expected);
+ QCOMPARE(value.toInt32(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toInt32)
+
+
+void tst_QScriptValueGenerated::toUInt32_initData()
+{
+ QTest::addColumn<quint32>("expected");
+ initScriptValues();
+}
+
+static QString toUInt32_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+
+static quint32 toUInt32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
+
+void tst_QScriptValueGenerated::toUInt32_makeData(const char* expr)
+{
+ static QHash<QString, quint32> toUInt32;
+ if (toUInt32.isEmpty()) {
+ toUInt32.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ toUInt32.insert(toUInt32_tagArray[i], toUInt32_valueArray[i]);
+ }
+ newRow(expr) << toUInt32.value(expr);
+}
+
+void tst_QScriptValueGenerated::toUInt32_test(const char*, const QScriptValue& value)
+{
+ QFETCH(quint32, expected);
+ QCOMPARE(value.toUInt32(), expected);
+ QCOMPARE(value.toUInt32(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toUInt32)
+
+
+void tst_QScriptValueGenerated::toUInt16_initData()
+{
+ QTest::addColumn<quint16>("expected");
+ initScriptValues();
+}
+
+static QString toUInt16_tagArray[] = {
+ "QScriptValue()",
+ "QScriptValue(QScriptValue::UndefinedValue)",
+ "QScriptValue(QScriptValue::NullValue)",
+ "QScriptValue(true)",
+ "QScriptValue(false)",
+ "QScriptValue(int(122))",
+ "QScriptValue(uint(124))",
+ "QScriptValue(0)",
+ "QScriptValue(0.0)",
+ "QScriptValue(123.0)",
+ "QScriptValue(6.37e-8)",
+ "QScriptValue(-6.37e-8)",
+ "QScriptValue(0x43211234)",
+ "QScriptValue(0x10000)",
+ "QScriptValue(0x10001)",
+ "QScriptValue(qSNaN())",
+ "QScriptValue(qQNaN())",
+ "QScriptValue(qInf())",
+ "QScriptValue(-qInf())",
+ "QScriptValue(\"NaN\")",
+ "QScriptValue(\"Infinity\")",
+ "QScriptValue(\"-Infinity\")",
+ "QScriptValue(\"ciao\")",
+ "QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString(\"\"))",
+ "QScriptValue(QString())",
+ "QScriptValue(QString(\"0\"))",
+ "QScriptValue(QString(\"123\"))",
+ "QScriptValue(QString(\"12.4\"))",
+ "QScriptValue(0, QScriptValue::UndefinedValue)",
+ "QScriptValue(0, QScriptValue::NullValue)",
+ "QScriptValue(0, true)",
+ "QScriptValue(0, false)",
+ "QScriptValue(0, int(122))",
+ "QScriptValue(0, uint(124))",
+ "QScriptValue(0, 0)",
+ "QScriptValue(0, 0.0)",
+ "QScriptValue(0, 123.0)",
+ "QScriptValue(0, 6.37e-8)",
+ "QScriptValue(0, -6.37e-8)",
+ "QScriptValue(0, 0x43211234)",
+ "QScriptValue(0, 0x10000)",
+ "QScriptValue(0, 0x10001)",
+ "QScriptValue(0, qSNaN())",
+ "QScriptValue(0, qQNaN())",
+ "QScriptValue(0, qInf())",
+ "QScriptValue(0, -qInf())",
+ "QScriptValue(0, \"NaN\")",
+ "QScriptValue(0, \"Infinity\")",
+ "QScriptValue(0, \"-Infinity\")",
+ "QScriptValue(0, \"ciao\")",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString(\"\"))",
+ "QScriptValue(0, QString())",
+ "QScriptValue(0, QString(\"0\"))",
+ "QScriptValue(0, QString(\"123\"))",
+ "QScriptValue(0, QString(\"12.3\"))",
+ "QScriptValue(engine, QScriptValue::UndefinedValue)",
+ "QScriptValue(engine, QScriptValue::NullValue)",
+ "QScriptValue(engine, true)",
+ "QScriptValue(engine, false)",
+ "QScriptValue(engine, int(122))",
+ "QScriptValue(engine, uint(124))",
+ "QScriptValue(engine, 0)",
+ "QScriptValue(engine, 0.0)",
+ "QScriptValue(engine, 123.0)",
+ "QScriptValue(engine, 6.37e-8)",
+ "QScriptValue(engine, -6.37e-8)",
+ "QScriptValue(engine, 0x43211234)",
+ "QScriptValue(engine, 0x10000)",
+ "QScriptValue(engine, 0x10001)",
+ "QScriptValue(engine, qSNaN())",
+ "QScriptValue(engine, qQNaN())",
+ "QScriptValue(engine, qInf())",
+ "QScriptValue(engine, -qInf())",
+ "QScriptValue(engine, \"NaN\")",
+ "QScriptValue(engine, \"Infinity\")",
+ "QScriptValue(engine, \"-Infinity\")",
+ "QScriptValue(engine, \"ciao\")",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString(\"\"))",
+ "QScriptValue(engine, QString())",
+ "QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"[]\")",
+ "engine->evaluate(\"{}\")",
+ "engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"Date.prototype\")",
+ "engine->evaluate(\"Array.prototype\")",
+ "engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"Object\")",
+ "engine->evaluate(\"Array\")",
+ "engine->evaluate(\"Number\")",
+ "engine->evaluate(\"Function\")",
+ "engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"Null\")",
+ "engine->evaluate(\"True\")",
+ "engine->evaluate(\"False\")",
+ "engine->evaluate(\"undefined\")",
+ "engine->evaluate(\"null\")",
+ "engine->evaluate(\"true\")",
+ "engine->evaluate(\"false\")",
+ "engine->evaluate(\"122\")",
+ "engine->evaluate(\"124\")",
+ "engine->evaluate(\"0\")",
+ "engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"-6.37e-8\")",
+ "engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"NaN\")",
+ "engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"-Infinity\")",
+ "engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"''\")",
+ "engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"'12.4'\")",
+ "engine->nullValue()",
+ "engine->undefinedValue()",
+ "engine->newObject()",
+ "engine->newArray()",
+ "engine->newArray(10)",
+ "engine->newDate(QDateTime())",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
+ "engine->newVariant(QVariant())",
+ "engine->newVariant(QVariant(123))",
+ "engine->newVariant(QVariant(false))",
+ "engine->newQObject(0)",
+ "engine->newQObject(engine)"};
+
+static quint16 toUInt16_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
+
+void tst_QScriptValueGenerated::toUInt16_makeData(const char* expr)
+{
+ static QHash<QString, quint16> toUInt16;
+ if (toUInt16.isEmpty()) {
+ toUInt16.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
+ toUInt16.insert(toUInt16_tagArray[i], toUInt16_valueArray[i]);
+ }
+ newRow(expr) << toUInt16.value(expr);
+}
+
+void tst_QScriptValueGenerated::toUInt16_test(const char*, const QScriptValue& value)
+{
+ QFETCH(quint16, expected);
+ QCOMPARE(value.toUInt16(), expected);
+ QCOMPARE(value.toUInt16(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toUInt16)
diff --git a/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp b/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp
index 55773f0cfa..df11537f8c 100644
--- a/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp
+++ b/tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp
@@ -71,6 +71,7 @@ private slots:
void iterateString();
void iterateGetterSetter();
void assignObjectToIterator();
+ void iterateNonObject();
};
tst_QScriptValueIterator::tst_QScriptValueIterator()
@@ -583,5 +584,25 @@ void tst_QScriptValueIterator::assignObjectToIterator()
QCOMPARE(it.name(), QString::fromLatin1("bar"));
}
+void tst_QScriptValueIterator::iterateNonObject()
+{
+ QScriptValueIterator it(123);
+ QVERIFY(!it.hasNext());
+ it.next();
+ QVERIFY(!it.hasPrevious());
+ it.previous();
+ it.toFront();
+ it.toBack();
+ it.name();
+ it.scriptName();
+ it.flags();
+ it.value();
+ it.setValue(1);
+ it.remove();
+ QScriptValue num(5);
+ it = num;
+ QVERIFY(!it.hasNext());
+}
+
QTEST_MAIN(tst_QScriptValueIterator)
#include "tst_qscriptvalueiterator.moc"
diff --git a/tests/auto/qsemaphore/qsemaphore.pro b/tests/auto/qsemaphore/qsemaphore.pro
index f720c0b20b..5978215f07 100644
--- a/tests/auto/qsemaphore/qsemaphore.pro
+++ b/tests/auto/qsemaphore/qsemaphore.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qsemaphore.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro b/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro
index 01ef68a585..c0c10c054d 100644
--- a/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro
+++ b/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro
@@ -3,3 +3,4 @@ QT = core
SOURCES += tst_qsequentialanimationgroup.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qset/qset.pro b/tests/auto/qset/qset.pro
index b45a015c23..ebdf0d68f0 100644
--- a/tests/auto/qset/qset.pro
+++ b/tests/auto/qset/qset.pro
@@ -6,3 +6,4 @@ symbian: {
TARGET.EPOCSTACKSIZE =0x5000
TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
}
+CONFIG += parallel_test
diff --git a/tests/auto/qset/tst_qset.cpp b/tests/auto/qset/tst_qset.cpp
index 319cdf42a6..6f377f58c7 100644
--- a/tests/auto/qset/tst_qset.cpp
+++ b/tests/auto/qset/tst_qset.cpp
@@ -65,6 +65,7 @@ public:
private slots:
void operator_eq();
+ void swap();
void size();
void capacity();
void reserve();
@@ -145,6 +146,16 @@ void tst_QSet::operator_eq()
}
}
+void tst_QSet::swap()
+{
+ QSet<int> s1, s2;
+ s1.insert(1);
+ s2.insert(2);
+ s1.swap(s2);
+ QCOMPARE(*s1.begin(),2);
+ QCOMPARE(*s2.begin(),1);
+}
+
void tst_QSet::size()
{
QSet<int> set;
diff --git a/tests/auto/qsharedpointer/qsharedpointer.pro b/tests/auto/qsharedpointer/qsharedpointer.pro
index bbd31d7c7a..014006e782 100644
--- a/tests/auto/qsharedpointer/qsharedpointer.pro
+++ b/tests/auto/qsharedpointer/qsharedpointer.pro
@@ -12,3 +12,4 @@ QT = core
!symbian:DEFINES += SRCDIR=\\\"$$PWD/\\\"
include(externaltests.pri)
+CONFIG += parallel_test
diff --git a/tests/auto/qsignalspy/qsignalspy.pro b/tests/auto/qsignalspy/qsignalspy.pro
index 4bc4a7b751..d3ae63b5bc 100644
--- a/tests/auto/qsignalspy/qsignalspy.pro
+++ b/tests/auto/qsignalspy/qsignalspy.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qsignalspy.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsize/qsize.pro b/tests/auto/qsize/qsize.pro
index 14786b8b35..a1814ac8c5 100644
--- a/tests/auto/qsize/qsize.pro
+++ b/tests/auto/qsize/qsize.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qsize.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsizef/qsizef.pro b/tests/auto/qsizef/qsizef.pro
index 703d721545..5aa07d72a1 100644
--- a/tests/auto/qsizef/qsizef.pro
+++ b/tests/auto/qsizef/qsizef.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qsizef.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index 2b62ccc8e8..bc6ba77837 100644
--- a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -144,6 +144,7 @@ private slots:
void testMultipleProxiesWithSelection();
void mapSelectionFromSource();
+ void testResetInternalData();
protected:
void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
@@ -3176,5 +3177,142 @@ void tst_QSortFilterProxyModel::taskQTBUG_10287_unnecessaryMapCreation()
// No assert failure, it passes.
}
+/**
+ * A proxy which changes the background color for items ending in 'y' or 'r'
+ */
+class CustomDataProxy : public QSortFilterProxyModel
+{
+ Q_OBJECT
+
+public:
+ CustomDataProxy(QObject *parent = 0)
+ : QSortFilterProxyModel(parent)
+ {
+ setDynamicSortFilter(true);
+ }
+
+ void setSourceModel(QAbstractItemModel *sourceModel)
+ {
+ // It would be possible to use only the modelReset signal of the source model to clear
+ // the data in *this, however, this requires that the slot is connected
+ // before QSortFilterProxyModel::setSourceModel is called, and even then depends
+ // on the order of invokation of slots being the same as the order of connection.
+ // ie, not reliable.
+// connect(sourceModel, SIGNAL(modelReset()), SLOT(resetInternalData()));
+ QSortFilterProxyModel::setSourceModel(sourceModel);
+ // Making the connect after the setSourceModel call clears the data too late.
+// connect(sourceModel, SIGNAL(modelReset()), SLOT(resetInternalData()));
+
+ // This could be done in data(), but the point is to need to cache something in the proxy
+ // which needs to be cleared on reset.
+ for (int i = 0; i < sourceModel->rowCount(); ++i)
+ {
+ if (sourceModel->index(i, 0).data().toString().endsWith(QLatin1Char('y')))
+ {
+ m_backgroundColours.insert(i, Qt::blue);
+ } else if (sourceModel->index(i, 0).data().toString().endsWith(QLatin1Char('r')))
+ {
+ m_backgroundColours.insert(i, Qt::red);
+ }
+ }
+ }
+
+ QVariant data(const QModelIndex &index, int role) const
+ {
+ if (role != Qt::BackgroundRole)
+ return QSortFilterProxyModel::data(index, role);
+ return m_backgroundColours.value(index.row());
+ }
+
+private slots:
+ void resetInternalData()
+ {
+ m_backgroundColours.clear();
+ }
+
+private:
+ QHash<int, QColor> m_backgroundColours;
+};
+
+class ModelObserver : public QObject
+{
+ Q_OBJECT
+public:
+ ModelObserver(QAbstractItemModel *model, QObject *parent = 0)
+ : QObject(parent), m_model(model)
+ {
+ connect(m_model, SIGNAL(modelAboutToBeReset()), SLOT(modelAboutToBeReset()));
+ connect(m_model, SIGNAL(modelReset()), SLOT(modelReset()));
+ }
+
+public slots:
+ void modelAboutToBeReset()
+ {
+ int reds = 0, blues = 0;
+ for (int i = 0; i < m_model->rowCount(); ++i)
+ {
+ QColor color = m_model->index(i, 0).data(Qt::BackgroundRole).value<QColor>();
+ if (color == Qt::blue)
+ ++blues;
+ if (color == Qt::red)
+ ++reds;
+ }
+ QCOMPARE(blues, 11);
+ QCOMPARE(reds, 4);
+ }
+
+ void modelReset()
+ {
+ int reds = 0, blues = 0;
+ for (int i = 0; i < m_model->rowCount(); ++i)
+ {
+ QColor color = m_model->index(i, 0).data(Qt::BackgroundRole).value<QColor>();
+ if (color == Qt::blue)
+ ++blues;
+ if (color == Qt::red)
+ ++reds;
+ }
+ QCOMPARE(reds, 0);
+ QCOMPARE(blues, 0);
+ }
+
+private:
+ QAbstractItemModel * const m_model;
+
+};
+
+void tst_QSortFilterProxyModel::testResetInternalData()
+{
+
+ QStringListModel model(QStringList() << "Monday"
+ << "Tuesday"
+ << "Wednesday"
+ << "Thursday"
+ << "Friday"
+ << "January"
+ << "February"
+ << "March"
+ << "April"
+ << "May"
+ << "Saturday"
+ << "June"
+ << "Sunday"
+ << "July"
+ << "August"
+ << "September"
+ << "October"
+ << "November"
+ << "December");
+
+ CustomDataProxy proxy;
+ proxy.setSourceModel(&model);
+
+ ModelObserver observer(&proxy);
+
+ // Cause the source model to reset.
+ model.setStringList(QStringList() << "Spam" << "Eggs");
+
+}
+
QTEST_MAIN(tst_QSortFilterProxyModel)
#include "tst_qsortfilterproxymodel.moc"
diff --git a/tests/auto/qsound/qsound.pro b/tests/auto/qsound/qsound.pro
index e3279f36f7..b69d084326 100644
--- a/tests/auto/qsound/qsound.pro
+++ b/tests/auto/qsound/qsound.pro
@@ -2,7 +2,7 @@ load(qttest_p4)
SOURCES += tst_qsound.cpp
wince*|symbian: {
- deploy.sources += 4.wav
+ deploy.files += 4.wav
DEPLOYMENT += deploy
!symbian:DEFINES += SRCDIR=\\\"\\\"
} else {
diff --git a/tests/auto/qsound/tst_qsound.cpp b/tests/auto/qsound/tst_qsound.cpp
index eda99a1125..295ed91acb 100644
--- a/tests/auto/qsound/tst_qsound.cpp
+++ b/tests/auto/qsound/tst_qsound.cpp
@@ -63,6 +63,9 @@ private slots:
void tst_QSound::checkFinished()
{
+#if defined(Q_WS_QPA)
+ QSKIP("QSound is not implemented on Lighthouse", SkipAll);
+#else
QSound sound(SRCDIR"4.wav");
sound.setLoops(3);
sound.play();
@@ -72,15 +75,17 @@ void tst_QSound::checkFinished()
QEXPECT_FAIL("", "QSound buggy on embedded (task QTBUG-157)", Abort);
#endif
QVERIFY(sound.isFinished() );
+#endif
}
void tst_QSound::staticPlay()
{
QSKIP("Test disabled -- only for manual purposes", SkipAll);
-
+#if !defined(Q_WS_QPA)
// Check that you hear sound with static play also.
QSound::play(SRCDIR"4.wav");
QTest::qWait(2000);
+#endif
}
QTEST_MAIN(tst_QSound);
diff --git a/tests/auto/qsplitter/qsplitter.pro b/tests/auto/qsplitter/qsplitter.pro
index b11e408302..5422fae00c 100644
--- a/tests/auto/qsplitter/qsplitter.pro
+++ b/tests/auto/qsplitter/qsplitter.pro
@@ -5,7 +5,7 @@ SOURCES += tst_qsplitter.cpp
contains(QT_CONFIG, qt3support): QT += qt3support
wince*|symbian: {
- addFiles.sources = extradata.txt setSizes3.dat
+ addFiles.files = extradata.txt setSizes3.dat
addFiles.path = .
DEPLOYMENT += addFiles
!symbian:DEFINES += SRCDIR=\\\"./\\\"
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/qsql/qsql.pro b/tests/auto/qsql/qsql.pro
index 0ec581d71c..9bf30f8055 100644
--- a/tests/auto/qsql/qsql.pro
+++ b/tests/auto/qsql/qsql.pro
@@ -13,7 +13,7 @@ symbian {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
diff --git a/tests/auto/qsqldatabase/qsqldatabase.pro b/tests/auto/qsqldatabase/qsqldatabase.pro
index 6381219696..066c24f395 100644
--- a/tests/auto/qsqldatabase/qsqldatabase.pro
+++ b/tests/auto/qsqldatabase/qsqldatabase.pro
@@ -13,7 +13,7 @@ win32: {
wince*: {
DEPLOYMENT_PLUGIN += qsqlite
- testData.sources = testdata
+ testData.files = testdata
testData.path = .
DEPLOYMENT += testData
@@ -26,7 +26,7 @@ symbian {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
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/qsqldriver/qsqldriver.pro b/tests/auto/qsqldriver/qsqldriver.pro
index 2e9ed67369..c02d74a527 100644
--- a/tests/auto/qsqldriver/qsqldriver.pro
+++ b/tests/auto/qsqldriver/qsqldriver.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qsqldriver.cpp
QT += sql
wince*: {
- plugFiles.sources = ../../../plugins/sqldrivers
+ plugFiles.files = ../../../plugins/sqldrivers
plugFiles.path = .
DEPLOYMENT += plugFiles
LIBS += -lws2
@@ -20,7 +20,7 @@ symbian {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
diff --git a/tests/auto/qsqlerror/qsqlerror.pro b/tests/auto/qsqlerror/qsqlerror.pro
index 456f58529f..ebf6d24381 100644
--- a/tests/auto/qsqlerror/qsqlerror.pro
+++ b/tests/auto/qsqlerror/qsqlerror.pro
@@ -11,7 +11,7 @@ symbian {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
diff --git a/tests/auto/qsqlfield/qsqlfield.pro b/tests/auto/qsqlfield/qsqlfield.pro
index 733985461e..2359151f13 100644
--- a/tests/auto/qsqlfield/qsqlfield.pro
+++ b/tests/auto/qsqlfield/qsqlfield.pro
@@ -7,7 +7,7 @@ symbian {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
diff --git a/tests/auto/qsqlquery/qsqlquery.pro b/tests/auto/qsqlquery/qsqlquery.pro
index 97646ede90..fbcc998900 100644
--- a/tests/auto/qsqlquery/qsqlquery.pro
+++ b/tests/auto/qsqlquery/qsqlquery.pro
@@ -8,7 +8,7 @@ QT = core sql
wince*: {
- plugFiles.sources = ../../../plugins/sqldrivers
+ plugFiles.files = ../../../plugins/sqldrivers
plugFiles.path = .
DEPLOYMENT += plugFiles
LIBS += -lws2
@@ -18,7 +18,7 @@ symbian {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
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/qsqlquerymodel/qsqlquerymodel.pro b/tests/auto/qsqlquerymodel/qsqlquerymodel.pro
index cda8cabf10..4b23e94715 100644
--- a/tests/auto/qsqlquerymodel/qsqlquerymodel.pro
+++ b/tests/auto/qsqlquerymodel/qsqlquerymodel.pro
@@ -10,7 +10,7 @@ wince*: {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
diff --git a/tests/auto/qsqlrecord/qsqlrecord.pro b/tests/auto/qsqlrecord/qsqlrecord.pro
index f36f0768a3..16e3ae4f80 100644
--- a/tests/auto/qsqlrecord/qsqlrecord.pro
+++ b/tests/auto/qsqlrecord/qsqlrecord.pro
@@ -5,7 +5,7 @@ symbian {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
diff --git a/tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro b/tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro
index c6681d53b3..dad42d512c 100644
--- a/tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro
+++ b/tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qsqlrelationaltablemodel.cpp
QT += sql
wince*: {
- plugFiles.sources = ../../../plugins/sqldrivers
+ plugFiles.files = ../../../plugins/sqldrivers
plugFiles.path = .
DEPLOYMENT += plugFiles
LIBS += -lws2
@@ -12,7 +12,7 @@ wince*: {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
diff --git a/tests/auto/qsqltablemodel/qsqltablemodel.pro b/tests/auto/qsqltablemodel/qsqltablemodel.pro
index 9a23237d0d..e49020f0a6 100644
--- a/tests/auto/qsqltablemodel/qsqltablemodel.pro
+++ b/tests/auto/qsqltablemodel/qsqltablemodel.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qsqltablemodel.cpp
QT += sql
wince*: {
- plugFiles.sources = ../../../plugins/sqldrivers
+ plugFiles.files = ../../../plugins/sqldrivers
plugFiles.path = .
DEPLOYMENT += plugFiles
LIBS += -lws2
@@ -12,7 +12,7 @@ wince*: {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
diff --git a/tests/auto/qsqlthread/qsqlthread.pro b/tests/auto/qsqlthread/qsqlthread.pro
index 5522232bac..2e4c72ac92 100644
--- a/tests/auto/qsqlthread/qsqlthread.pro
+++ b/tests/auto/qsqlthread/qsqlthread.pro
@@ -5,7 +5,7 @@ QT = core sql
wince*: {
- plugFiles.sources = ../../../plugins/sqldrivers
+ plugFiles.files = ../../../plugins/sqldrivers
plugFiles.path = .
DEPLOYMENT += plugFiles
LIBS += -lws2
@@ -13,7 +13,7 @@ wince*: {
qt_not_deployed {
contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
sqlite.path = /sys/bin
- sqlite.sources = sqlite3.dll
+ sqlite.files = sqlite3.dll
DEPLOYMENT += sqlite
}
}
diff --git a/tests/auto/qsslcertificate/qsslcertificate.pro b/tests/auto/qsslcertificate/qsslcertificate.pro
index d7671ea23e..05cce8e509 100644
--- a/tests/auto/qsslcertificate/qsslcertificate.pro
+++ b/tests/auto/qsslcertificate/qsslcertificate.pro
@@ -15,7 +15,7 @@ win32 {
}
wince*|symbian: {
- certFiles.sources = certificates more-certificates
+ certFiles.files = certificates more-certificates
certFiles.path = .
DEPLOYMENT += certFiles
}
@@ -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/qsslkey/qsslkey.pro b/tests/auto/qsslkey/qsslkey.pro
index dff0db1b91..5a90b76219 100644
--- a/tests/auto/qsslkey/qsslkey.pro
+++ b/tests/auto/qsslkey/qsslkey.pro
@@ -15,10 +15,10 @@ win32 {
}
wince*|symbian: {
- keyFiles.sources = keys
+ keyFiles.files = keys
keyFiles.path = .
- passphraseFiles.sources = rsa-without-passphrase.pem rsa-with-passphrase.pem
+ passphraseFiles.files = rsa-without-passphrase.pem rsa-with-passphrase.pem
passphraseFiles.path = .
DEPLOYMENT += keyFiles passphraseFiles
diff --git a/tests/auto/qsslsocket/qsslsocket.pro b/tests/auto/qsslsocket/qsslsocket.pro
index accfa89e53..aeeae8ff8b 100644
--- a/tests/auto/qsslsocket/qsslsocket.pro
+++ b/tests/auto/qsslsocket/qsslsocket.pro
@@ -18,7 +18,7 @@ win32 {
wince* {
DEFINES += SRCDIR=\\\"./\\\"
- certFiles.sources = certs ssl.tar.gz
+ certFiles.files = certs ssl.tar.gz
certFiles.path = .
DEPLOYMENT += certFiles
} else:symbian {
@@ -26,7 +26,7 @@ wince* {
TARGET.EPOCHEAPSIZE="0x100 0x1000000"
TARGET.CAPABILITY=NetworkServices
- certFiles.sources = certs ssl.tar.gz
+ certFiles.files = certs ssl.tar.gz
certFiles.path = .
DEPLOYMENT += certFiles
INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE # Needed for e32svr.h in S^3 envs
diff --git a/tests/auto/qstate/qstate.pro b/tests/auto/qstate/qstate.pro
index 9131fa84f8..6ee7e0cd00 100644
--- a/tests/auto/qstate/qstate.pro
+++ b/tests/auto/qstate/qstate.pro
@@ -3,3 +3,4 @@ QT = core
SOURCES += tst_qstate.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstl/qstl.pro b/tests/auto/qstl/qstl.pro
index 5c9987496c..a0c9db1dfc 100644
--- a/tests/auto/qstl/qstl.pro
+++ b/tests/auto/qstl/qstl.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qstl.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qstring/qstring.pro b/tests/auto/qstring/qstring.pro
index ed758c634b..e980042351 100644
--- a/tests/auto/qstring/qstring.pro
+++ b/tests/auto/qstring/qstring.pro
@@ -6,3 +6,4 @@ symbian:LIBS += -llibm
QT = core
DEFINES += QT_NO_CAST_TO_ASCII
+CONFIG += parallel_test
diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp
index af6b371172..5d961df806 100644
--- a/tests/auto/qstring/tst_qstring.cpp
+++ b/tests/auto/qstring/tst_qstring.cpp
@@ -80,6 +80,7 @@ private slots:
void check_QTextStream();
void check_QDataStream();
void fromRawData();
+ void setRawData();
void endsWith();
void startsWith();
void setNum();
@@ -113,6 +114,7 @@ private slots:
void remove_string();
void remove_regexp_data();
void remove_regexp();
+ void swap();
void prepend();
void prepend_bytearray_data();
void prepend_bytearray();
@@ -1851,6 +1853,16 @@ void tst_QString::operator_pluseq_bytearray()
}
}
+void tst_QString::swap()
+{
+ QString s1, s2;
+ s1 = "s1";
+ s2 = "s2";
+ s1.swap(s2);
+ QCOMPARE(s1,QLatin1String("s2"));
+ QCOMPARE(s2,QLatin1String("s1"));
+}
+
void tst_QString::prepend()
{
QString a;
@@ -3077,7 +3089,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();
@@ -3088,6 +3102,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
@@ -4533,8 +4582,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/qstringbuilder1/qstringbuilder1.pro b/tests/auto/qstringbuilder1/qstringbuilder1.pro
index 5bb14d4290..dc9062f4da 100644
--- a/tests/auto/qstringbuilder1/qstringbuilder1.pro
+++ b/tests/auto/qstringbuilder1/qstringbuilder1.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qstringbuilder1.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringbuilder2/qstringbuilder2.pro b/tests/auto/qstringbuilder2/qstringbuilder2.pro
index 4152dc31e3..a57c6f19f2 100644
--- a/tests/auto/qstringbuilder2/qstringbuilder2.pro
+++ b/tests/auto/qstringbuilder2/qstringbuilder2.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qstringbuilder2.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringbuilder3/qstringbuilder3.pro b/tests/auto/qstringbuilder3/qstringbuilder3.pro
index b4d222591d..5aced7c258 100644
--- a/tests/auto/qstringbuilder3/qstringbuilder3.pro
+++ b/tests/auto/qstringbuilder3/qstringbuilder3.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qstringbuilder3.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringbuilder4/qstringbuilder4.pro b/tests/auto/qstringbuilder4/qstringbuilder4.pro
index 6ec522884b..0532a9b925 100644
--- a/tests/auto/qstringbuilder4/qstringbuilder4.pro
+++ b/tests/auto/qstringbuilder4/qstringbuilder4.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qstringbuilder4.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringlist/qstringlist.pro b/tests/auto/qstringlist/qstringlist.pro
index aee074bad3..d82a3487fd 100644
--- a/tests/auto/qstringlist/qstringlist.pro
+++ b/tests/auto/qstringlist/qstringlist.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qstringlist.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qstringmatcher/qstringmatcher.pro b/tests/auto/qstringmatcher/qstringmatcher.pro
index 2c1509746a..c5249ec84a 100644
--- a/tests/auto/qstringmatcher/qstringmatcher.pro
+++ b/tests/auto/qstringmatcher/qstringmatcher.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qstringmatcher.cpp
QT = core
DEFINES += QT_NO_CAST_TO_ASCII
+CONFIG += parallel_test
diff --git a/tests/auto/qstringref/qstringref.pro b/tests/auto/qstringref/qstringref.pro
index 48e7ddf17f..34f2de46ae 100644
--- a/tests/auto/qstringref/qstringref.pro
+++ b/tests/auto/qstringref/qstringref.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qstringref.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qstyle/qstyle.pro b/tests/auto/qstyle/qstyle.pro
index 11f5943df3..eb198e28f5 100644
--- a/tests/auto/qstyle/qstyle.pro
+++ b/tests/auto/qstyle/qstyle.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qstyle.cpp
wince*|symbian: {
!symbian:DEFINES += SRCDIR=\\\".\\\"
- addPixmap.sources = task_25863.png
+ addPixmap.files = task_25863.png
addPixmap.path = .
DEPLOYMENT += addPixmap
} else {
diff --git a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
index 04b1e79f09..efcbc53939 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=
@@ -103,6 +104,7 @@ private slots:
//at the end because it mess with the style.
void widgetStyle();
void appStyle();
+ void QTBUG11658_cachecrash();
private:
QColor COLOR(const QWidget& w) {
w.ensurePolished();
@@ -822,6 +824,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 +983,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);
@@ -1622,6 +1627,37 @@ void tst_QStyleSheetStyle::changeStyleInChangeEvent()
wid.ensurePolished();
}
+void tst_QStyleSheetStyle::QTBUG11658_cachecrash()
+{
+ //should not crash
+ class Widget : public QWidget
+ {
+ public:
+ Widget(QWidget *parent = 0)
+ : QWidget(parent)
+ {
+ QVBoxLayout* pLayout = new QVBoxLayout(this);
+ QCheckBox* pCheckBox = new QCheckBox(this);
+ pLayout->addWidget(pCheckBox);
+ setLayout(pLayout);
+
+ QString szStyleSheet = QLatin1String("* { color: red; }");
+ qApp->setStyleSheet(szStyleSheet);
+ qApp->setStyle(QStyleFactory::create(QLatin1String("Windows")));
+ }
+ };
+
+ Widget *w = new Widget();
+ delete w;
+ w = new Widget();
+ w->show();
+
+ QTest::qWaitForWindowShown(w);
+ delete w;
+ qApp->setStyleSheet(QString());
+}
+
+
QTEST_MAIN(tst_QStyleSheetStyle)
#include "tst_qstylesheetstyle.moc"
diff --git a/tests/auto/qsvggenerator/qsvggenerator.pro b/tests/auto/qsvggenerator/qsvggenerator.pro
index 1ccf8e92f1..2e899a99aa 100644
--- a/tests/auto/qsvggenerator/qsvggenerator.pro
+++ b/tests/auto/qsvggenerator/qsvggenerator.pro
@@ -8,7 +8,7 @@ QT += svg xml
SOURCES += tst_qsvggenerator.cpp
wince*|symbian {
- addFiles.sources = referenceSvgs
+ addFiles.files = referenceSvgs
addFiles.path = .
DEPLOYMENT += addFiles
}
diff --git a/tests/auto/qsvgrenderer/qsvgrenderer.pro b/tests/auto/qsvgrenderer/qsvgrenderer.pro
index 0b785e3dfe..49337e2f5a 100644
--- a/tests/auto/qsvgrenderer/qsvgrenderer.pro
+++ b/tests/auto/qsvgrenderer/qsvgrenderer.pro
@@ -9,7 +9,7 @@ SOURCES += tst_qsvgrenderer.cpp
RESOURCES += resources.qrc
wince*|symbian {
- addFiles.sources = *.svg *.svgz
+ addFiles.files = *.svg *.svgz
addFiles.path = .
DEPLOYMENT += addFiles
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/qtconcurrentfilter/qtconcurrentfilter.pro b/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro
index e93c5d25da..ee2b77d63c 100644
--- a/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro
+++ b/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro
@@ -2,3 +2,5 @@ load(qttest_p4)
DEFINES += QT_STRICT_ITERATORS
SOURCES += tst_qtconcurrentfilter.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro b/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
index 4fdcc222fe..a61d275241 100644
--- a/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
+++ b/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
SOURCES += tst_qtconcurrentiteratekernel.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentmap/qtconcurrentmap.pro b/tests/auto/qtconcurrentmap/qtconcurrentmap.pro
index 8cae71443d..6fc358514e 100644
--- a/tests/auto/qtconcurrentmap/qtconcurrentmap.pro
+++ b/tests/auto/qtconcurrentmap/qtconcurrentmap.pro
@@ -2,3 +2,5 @@ load(qttest_p4)
DEFINES += QT_STRICT_ITERATORS
SOURCES += tst_qtconcurrentmap.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentrun/qtconcurrentrun.pro b/tests/auto/qtconcurrentrun/qtconcurrentrun.pro
index ac29dd425b..24576048e9 100644
--- a/tests/auto/qtconcurrentrun/qtconcurrentrun.pro
+++ b/tests/auto/qtconcurrentrun/qtconcurrentrun.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
SOURCES += tst_qtconcurrentrun.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
index 8fdc50c88e..8b10ea4efa 100644
--- a/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
+++ b/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
@@ -61,6 +61,9 @@ private slots:
void implicitConvertibleTypes();
void runWaitLoop();
void recursive();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
#if 0
void createFunctor();
#endif
@@ -374,6 +377,41 @@ int fn2(double, int *)
return 1;
}
+
+#ifndef QT_NO_EXCEPTIONS
+void throwFunction()
+{
+ throw QtConcurrent::Exception();
+}
+
+int throwFunctionReturn()
+{
+ throw QtConcurrent::Exception();
+ return 0;
+}
+
+void tst_QtConcurrentRun::exceptions()
+{
+ bool caught = false;
+ try {
+ QtConcurrent::run(throwFunction).waitForFinished();
+ } catch (Exception &e) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+
+ caught = false;
+ try {
+ QtConcurrent::run(throwFunctionReturn).waitForFinished();
+ } catch (Exception &e) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+}
+#endif
+
#if 0
void tst_QtConcurrentRun::createFunctor()
{
diff --git a/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro b/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
index cd8d74e6fd..bbfcf5ebe3 100644
--- a/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
+++ b/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
SOURCES += tst_qtconcurrentthreadengine.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtcpserver/test/test.pro b/tests/auto/qtcpserver/test/test.pro
index 123c79e408..e91ba20a13 100644
--- a/tests/auto/qtcpserver/test/test.pro
+++ b/tests/auto/qtcpserver/test/test.pro
@@ -4,7 +4,7 @@ SOURCES += ../tst_qtcpserver.cpp
win32: {
wince*: {
LIBS += -lws2
- crashApp.sources = ../crashingServer/crashingServer.exe
+ crashApp.files = ../crashingServer/crashingServer.exe
crashApp.path = crashingServer
DEPLOYMENT += crashApp
} else {
@@ -13,7 +13,7 @@ wince*: {
}
symbian {
- crashApp.sources = $$QT_BUILD_TREE/examples/widgets/wiggly/$${BUILD_DIR}/crashingServer.exe
+ crashApp.files = $$QT_BUILD_TREE/examples/widgets/wiggly/$${BUILD_DIR}/crashingServer.exe
crashApp.path = .
DEPLOYMENT += crashApp
}
diff --git a/tests/auto/qtemporaryfile/qtemporaryfile.pro b/tests/auto/qtemporaryfile/qtemporaryfile.pro
index c93a2e57e9..543c143879 100644
--- a/tests/auto/qtemporaryfile/qtemporaryfile.pro
+++ b/tests/auto/qtemporaryfile/qtemporaryfile.pro
@@ -4,7 +4,7 @@ QT = core
symbian {
- testData.sources = tst_qtemporaryfile.cpp
+ testData.files = tst_qtemporaryfile.cpp
testData.path = .
DEPLOYMENT += testData
}else {
diff --git a/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro b/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro
index aa1fbb5206..5f3cb119f4 100644
--- a/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro
+++ b/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro
@@ -5,7 +5,8 @@ SOURCES += tst_qtextboundaryfinder.cpp
!symbian:*:DEFINES += SRCDIR=\\\"$$PWD\\\"
wince*|symbian:{
- addFiles.sources = data
+ addFiles.files = data
addFiles.path = .
DEPLOYMENT += addFiles
}
+CONFIG += parallel_test
diff --git a/tests/auto/qtextbrowser/qtextbrowser.pro b/tests/auto/qtextbrowser/qtextbrowser.pro
index 88061a9d7b..773fb975a8 100644
--- a/tests/auto/qtextbrowser/qtextbrowser.pro
+++ b/tests/auto/qtextbrowser/qtextbrowser.pro
@@ -6,9 +6,9 @@ contains(QT_CONFIG, qt3support): QT += qt3support
wince*|symbian: {
- addFiles.sources = *.html
+ addFiles.files = *.html
addFiles.path = .
- addDir.sources = subdir/*
+ addDir.files = subdir/*
addDir.path = subdir
DEPLOYMENT += addFiles addDir
}
diff --git a/tests/auto/qtextcodec/test/test.pro b/tests/auto/qtextcodec/test/test.pro
index b85032a942..2188d2f22f 100644
--- a/tests/auto/qtextcodec/test/test.pro
+++ b/tests/auto/qtextcodec/test/test.pro
@@ -17,7 +17,7 @@ win32: {
}
wince*|symbian {
- addFiles.sources = ../*.txt
+ addFiles.files = ../*.txt
addFiles.path = .
DEPLOYMENT += addFiles
wince*|qt_not_deployed {
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/qtextedit.pro b/tests/auto/qtextedit/qtextedit.pro
index 43813da277..e7d6c039a6 100644
--- a/tests/auto/qtextedit/qtextedit.pro
+++ b/tests/auto/qtextedit/qtextedit.pro
@@ -6,7 +6,7 @@ HEADERS +=
SOURCES += tst_qtextedit.cpp
wince*|symbian: {
- addImages.sources = fullWidthSelection/*
+ addImages.files = fullWidthSelection/*
addImages.path = fullWidthSelection
DEPLOYMENT += addImages
}
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/qtextstream/test/test.pro b/tests/auto/qtextstream/test/test.pro
index 20823de331..8805fb9f61 100644
--- a/tests/auto/qtextstream/test/test.pro
+++ b/tests/auto/qtextstream/test/test.pro
@@ -18,9 +18,9 @@ QT = core network
wince*|symbian: {
- addFiles.sources = ../rfc3261.txt ../shift-jis.txt ../task113817.txt ../qtextstream.qrc ../tst_qtextstream.cpp
+ addFiles.files = ../rfc3261.txt ../shift-jis.txt ../task113817.txt ../qtextstream.qrc ../tst_qtextstream.cpp
addFiles.path = .
- res.sources = ../resources
+ res.files = ../resources
res.path = .
DEPLOYMENT += addFiles
}
@@ -30,7 +30,7 @@ wince*: {
}else:symbian {
# Symbian can't define SRCDIR meaningfully here
qt_not_deployed {
- codecs_plugins.sources = qcncodecs.dll qjpcodecs.dll qtwcodecs.dll qkrcodecs.dll
+ codecs_plugins.files = qcncodecs.dll qjpcodecs.dll qtwcodecs.dll qkrcodecs.dll
codecs_plugins.path = $$QT_PLUGINS_BASE_DIR/codecs
DEPLOYMENT += codecs_plugins
}
diff --git a/tests/auto/qthread/qthread.pro b/tests/auto/qthread/qthread.pro
index 0b042ab8b2..d3b1028034 100644
--- a/tests/auto/qthread/qthread.pro
+++ b/tests/auto/qthread/qthread.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qthread.cpp
QT = core
symbian:LIBS += -llibpthread
+CONFIG += parallel_test
diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp
index 843749a31b..f290a2b0bd 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 connectThreadFinishedSignalToObjectDeleteLaterSlot();
void stressTest();
};
@@ -975,6 +976,19 @@ void tst_QThread::QTBUG13810_exitAndStart()
QCOMPARE(sync1.m_prop, 89);
}
+void tst_QThread::connectThreadFinishedSignalToObjectDeleteLaterSlot()
+{
+ QThread thread;
+ QObject *object = new QObject;
+ QWeakPointer<QObject> p = object;
+ QVERIFY(!p.isNull());
+ connect(&thread, SIGNAL(started()), &thread, SLOT(quit()), Qt::DirectConnection);
+ connect(&thread, SIGNAL(finished()), object, SLOT(deleteLater()));
+ object->moveToThread(&thread);
+ thread.start();
+ QVERIFY(thread.wait(30000));
+ QVERIFY(p.isNull());
+}
QTEST_MAIN(tst_QThread)
#include "tst_qthread.moc"
diff --git a/tests/auto/qthreadonce/qthreadonce.pro b/tests/auto/qthreadonce/qthreadonce.pro
index a672a03f0c..d7ef4d4c23 100644
--- a/tests/auto/qthreadonce/qthreadonce.pro
+++ b/tests/auto/qthreadonce/qthreadonce.pro
@@ -10,3 +10,4 @@ QT = core
# Temporary:
SOURCES += qthreadonce.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qthreadpool/qthreadpool.pro b/tests/auto/qthreadpool/qthreadpool.pro
index 3f6ea64948..dbaeb208dd 100644
--- a/tests/auto/qthreadpool/qthreadpool.pro
+++ b/tests/auto/qthreadpool/qthreadpool.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qthreadpool.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qthreadstorage/qthreadstorage.pro b/tests/auto/qthreadstorage/qthreadstorage.pro
index a06f89c368..0dc8d086df 100644
--- a/tests/auto/qthreadstorage/qthreadstorage.pro
+++ b/tests/auto/qthreadstorage/qthreadstorage.pro
@@ -2,3 +2,4 @@ TEMPLATE = subdirs
SUBDIRS = \
tst_qthreadstorage.pro \
crashOnExit.pro
+CONFIG += parallel_test
diff --git a/tests/auto/qtime/qtime.pro b/tests/auto/qtime/qtime.pro
index 88277a001f..ce4f7ae91f 100644
--- a/tests/auto/qtime/qtime.pro
+++ b/tests/auto/qtime/qtime.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qtime.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtimeline/qtimeline.pro b/tests/auto/qtimeline/qtimeline.pro
index 78204552e5..9be717dba8 100644
--- a/tests/auto/qtimeline/qtimeline.pro
+++ b/tests/auto/qtimeline/qtimeline.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qtimeline.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtimer/qtimer.pro b/tests/auto/qtimer/qtimer.pro
index 79ae7dbd0b..086df1dd18 100644
--- a/tests/auto/qtimer/qtimer.pro
+++ b/tests/auto/qtimer/qtimer.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qtimer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtipc/qsharedmemory/test/test.pro b/tests/auto/qtipc/qsharedmemory/test/test.pro
index 68a5362e2b..50c266986c 100644
--- a/tests/auto/qtipc/qsharedmemory/test/test.pro
+++ b/tests/auto/qtipc/qsharedmemory/test/test.pro
@@ -20,16 +20,16 @@ TARGET = ../tst_qsharedmemory
wince*:{
requires(contains(QT_CONFIG,script))
QT += gui script
-addFiles.sources = $$OUT_PWD/../../lackey/lackey.exe ../../lackey/scripts
+addFiles.files = $$OUT_PWD/../../lackey/lackey.exe ../../lackey/scripts
addFiles.path = .
DEPLOYMENT += addFiles
DEFINES += SRCDIR=\\\".\\\"
}else:symbian{
requires(contains(QT_CONFIG,script))
QT += gui script
-addFiles.sources = ../../lackey/scripts
+addFiles.files = ../../lackey/scripts
addFiles.path = /data/qsharedmemorytemp/lackey
-addBin.sources = lackey.exe
+addBin.files = lackey.exe
addBin.path = /sys/bin
DEPLOYMENT += addFiles addBin
} else {
diff --git a/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp b/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp
index dc071ab564..18a0cb0071 100644
--- a/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp
+++ b/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp
@@ -107,6 +107,10 @@ private slots:
void useTooMuchMemory();
void attachTooMuch();
+ // unique keys
+ void uniqueKey_data();
+ void uniqueKey();
+
protected:
int remove(const QString &key);
@@ -795,6 +799,35 @@ void tst_QSharedMemory::simpleProcessProducerConsumer()
QCOMPARE(failedProcesses, (unsigned int)(0));
}
+void tst_QSharedMemory::uniqueKey_data()
+{
+ QTest::addColumn<QString>("key1");
+ QTest::addColumn<QString>("key2");
+
+ QTest::newRow("null == null") << QString() << QString();
+ QTest::newRow("key == key") << QString("key") << QString("key");
+ QTest::newRow("key1 == key1") << QString("key1") << QString("key1");
+ QTest::newRow("key != key1") << QString("key") << QString("key1");
+ QTest::newRow("ke1y != key1") << QString("ke1y") << QString("key1");
+ QTest::newRow("key1 != key2") << QString("key1") << QString("key2");
+}
+
+void tst_QSharedMemory::uniqueKey()
+{
+ QFETCH(QString, key1);
+ QFETCH(QString, key2);
+
+ QSharedMemory sm1(key1);
+ QSharedMemory sm2(key2);
+
+ bool setEqual = (key1 == key2);
+ bool keyEqual = (sm1.key() == sm2.key());
+ bool nativeEqual = (sm1.nativeKey() == sm2.nativeKey());
+
+ QCOMPARE(keyEqual, setEqual);
+ QCOMPARE(nativeEqual, setEqual);
+}
+
QTEST_MAIN(tst_QSharedMemory)
#include "tst_qsharedmemory.moc"
diff --git a/tests/auto/qtipc/qsystemsemaphore/qsystemsemaphore.pro b/tests/auto/qtipc/qsystemsemaphore/qsystemsemaphore.pro
index 8a5f8b2fa7..bb319ee38e 100644
--- a/tests/auto/qtipc/qsystemsemaphore/qsystemsemaphore.pro
+++ b/tests/auto/qtipc/qsystemsemaphore/qsystemsemaphore.pro
@@ -17,7 +17,7 @@ requires(contains(QT_CONFIG,script))
# this test calls lackey, which then again depends on QtScript.
# let's add it here so that it gets deployed easily
QT += script
-lackey.sources = $$OUT_PWD/../lackey/lackey.exe ../lackey/scripts
+lackey.files = $$OUT_PWD/../lackey/lackey.exe ../lackey/scripts
lackey.path = .
DEPLOYMENT += lackey
}
@@ -28,7 +28,7 @@ requires(contains(QT_CONFIG,script))
# let's add it here so that it gets deployed easily
QT += script
-lackey.sources = ../lackey/lackey.exe
+lackey.files = ../lackey/lackey.exe
lackey.path = /sys/bin
DEPLOYMENT += lackey
}
diff --git a/tests/auto/qtmd5/qtmd5.pro b/tests/auto/qtmd5/qtmd5.pro
index cb4a5398b8..0afc6b1b14 100644
--- a/tests/auto/qtmd5/qtmd5.pro
+++ b/tests/auto/qtmd5/qtmd5.pro
@@ -12,3 +12,4 @@ SOURCES += tst_qtmd5.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtokenautomaton/qtokenautomaton.pro b/tests/auto/qtokenautomaton/qtokenautomaton.pro
index 6ebf7c46d2..5e2e590a4b 100644
--- a/tests/auto/qtokenautomaton/qtokenautomaton.pro
+++ b/tests/auto/qtokenautomaton/qtokenautomaton.pro
@@ -15,3 +15,4 @@ HEADERS += tokenizers/basic/basic.h \
tokenizers/withNamespace/withNamespace.h
QT -= gui
+CONFIG += parallel_test
diff --git a/tests/auto/qtranslator/qtranslator.pro b/tests/auto/qtranslator/qtranslator.pro
index 5b742f76e9..0001d1c329 100644
--- a/tests/auto/qtranslator/qtranslator.pro
+++ b/tests/auto/qtranslator/qtranslator.pro
@@ -3,7 +3,7 @@ SOURCES += tst_qtranslator.cpp
RESOURCES += qtranslator.qrc
wince*|symbian: {
- addFiles.sources = hellotr_la.qm msgfmt_from_po.qm
+ addFiles.files = hellotr_la.qm msgfmt_from_po.qm
addFiles.path = .
DEPLOYMENT += addFiles
}
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/qudpsocket/test/test.pro b/tests/auto/qudpsocket/test/test.pro
index 9c0d009009..7e5ffe493e 100644
--- a/tests/auto/qudpsocket/test/test.pro
+++ b/tests/auto/qudpsocket/test/test.pro
@@ -15,7 +15,7 @@ win32 {
}
wince*|symbian: {
- addApp.sources = ../clientserver/clientserver.exe
+ addApp.files = ../clientserver/clientserver.exe
addApp.path = clientserver
DEPLOYMENT += addApp
}
diff --git a/tests/auto/qurl/qurl.pro b/tests/auto/qurl/qurl.pro
index 018bb38612..a5c39a5a98 100644
--- a/tests/auto/qurl/qurl.pro
+++ b/tests/auto/qurl/qurl.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qurl.cpp
QT = core
symbian: TARGET.CAPABILITY = NetworkServices
+CONFIG += parallel_test
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp
index eff4658a39..c089a59ca4 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/qurl/tst_qurl.cpp
@@ -132,6 +132,7 @@ private slots:
void compat_encode();
void percentEncoding_data();
void percentEncoding();
+ void swap();
void symmetry();
void ipv6_data();
void ipv6();
@@ -2210,6 +2211,14 @@ void tst_QUrl::toPercentEncoding()
QCOMPARE(original, QUrl::fromPercentEncoding(encodedUrl));
}
+void tst_QUrl::swap()
+{
+ QUrl u1(QLatin1String("http://qt.nokia.com")), u2(QLatin1String("http://www.kdab.com"));
+ u1.swap(u2);
+ QCOMPARE(u2.host(),QLatin1String("qt.nokia.com"));
+ QCOMPARE(u1.host(),QLatin1String("www.kdab.com"));
+}
+
void tst_QUrl::symmetry()
{
QUrl url(QString::fromLatin1("http://www.rksmrgs.se/pub?a=b&a=d&a=f#vrl"));
diff --git a/tests/auto/quuid/quuid.pro b/tests/auto/quuid/quuid.pro
index 25e24561ae..461956f313 100644
--- a/tests/auto/quuid/quuid.pro
+++ b/tests/auto/quuid/quuid.pro
@@ -4,3 +4,4 @@ SUBDIRS = testProcessUniqueness
SUBDIRS += test
+CONFIG += parallel_test
diff --git a/tests/auto/quuid/test/test.pro b/tests/auto/quuid/test/test.pro
index 123aa50e4e..06ae3bd362 100644
--- a/tests/auto/quuid/test/test.pro
+++ b/tests/auto/quuid/test/test.pro
@@ -15,14 +15,14 @@ CONFIG(debug_and_release_target) {
}
wince* {
- addFile_processUniqueness.sources = $$OUT_PWD/../testProcessUniqueness/testProcessUniqueness.exe
+ addFile_processUniqueness.files = $$OUT_PWD/../testProcessUniqueness/testProcessUniqueness.exe
addFile_processUniqueness.path = testProcessUniqueness
DEPLOYMENT += addFile_processUniqueness
}
symbian {
- binDep.sources = testProcessUniqueness.exe
+ binDep.files = testProcessUniqueness.exe
binDep.path = \\sys\\bin
DEPLOYMENT += binDep
diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/qvariant/tst_qvariant.cpp
index 98d74361b6..159a8063b7 100644
--- a/tests/auto/qvariant/tst_qvariant.cpp
+++ b/tests/auto/qvariant/tst_qvariant.cpp
@@ -100,6 +100,7 @@ private slots:
void constructor();
void copy_constructor();
void isNull();
+ void swap();
void canConvert_data();
void canConvert();
@@ -372,6 +373,16 @@ void tst_QVariant::isNull()
QVERIFY(var7.isNull());
}
+void tst_QVariant::swap()
+{
+ QVariant v1 = 1, v2 = 2.0;
+ v1.swap(v2);
+ QCOMPARE(v1.type(),QVariant::Double);
+ QCOMPARE(v1.toDouble(),2.0);
+ QCOMPARE(v2.type(),QVariant::Int);
+ QCOMPARE(v2.toInt(),1);
+}
+
void tst_QVariant::canConvert_data()
{
QTest::addColumn<QVariant>("val");
diff --git a/tests/auto/qvarlengtharray/qvarlengtharray.pro b/tests/auto/qvarlengtharray/qvarlengtharray.pro
index 7a02790578..183da1b938 100644
--- a/tests/auto/qvarlengtharray/qvarlengtharray.pro
+++ b/tests/auto/qvarlengtharray/qvarlengtharray.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qvarlengtharray.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qvector/qvector.pro b/tests/auto/qvector/qvector.pro
index 80311b46c6..a7c3957f2c 100644
--- a/tests/auto/qvector/qvector.pro
+++ b/tests/auto/qvector/qvector.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qvector.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qvector/tst_qvector.cpp b/tests/auto/qvector/tst_qvector.cpp
index a04ce604b4..b3decc85c8 100644
--- a/tests/auto/qvector/tst_qvector.cpp
+++ b/tests/auto/qvector/tst_qvector.cpp
@@ -80,6 +80,7 @@ private slots:
void remove() const;
void size() const;
void startsWith() const;
+ void swap() const;
void toList() const;
void toStdVector() const;
void value() const;
@@ -579,6 +580,17 @@ void tst_QVector::startsWith() const
QVERIFY(myvec.startsWith(1));
}
+void tst_QVector::swap() const
+{
+ QVector<int> v1, v2;
+ v1 << 1 << 2 << 3;
+ v2 << 4 << 5 << 6;
+
+ v1.swap(v2);
+ QCOMPARE(v1,QVector<int>() << 4 << 5 << 6);
+ QCOMPARE(v2,QVector<int>() << 1 << 2 << 3);
+}
+
void tst_QVector::toList() const
{
QVector<QString> myvec;
diff --git a/tests/auto/qwaitcondition/qwaitcondition.pro b/tests/auto/qwaitcondition/qwaitcondition.pro
index 4d9a08204d..9af0c71301 100644
--- a/tests/auto/qwaitcondition/qwaitcondition.pro
+++ b/tests/auto/qwaitcondition/qwaitcondition.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qwaitcondition.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/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 a2b8d5bfb5..d230f2cb6e 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -364,7 +364,7 @@ private slots:
void setClearAndResizeMask();
void maskedUpdate();
-#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined(Q_WS_QWS)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_WS_QPA)
void syntheticEnterLeave();
void taskQTBUG_4055_sendSyntheticEnterLeave();
#endif
@@ -1966,7 +1966,7 @@ void tst_QWidget::showMaximized()
layouted.showNormal();
QVERIFY(!(layouted.windowState() & Qt::WindowMaximized));
-#if !defined(Q_WS_QWS) && !defined(Q_OS_WINCE) && !defined(Q_WS_S60)
+#if !defined(Q_WS_QWS) && !defined(Q_OS_WINCE) && !defined(Q_WS_S60) && !defined(Q_WS_QPA)
//embedded may choose a different size to fit on the screen.
QCOMPARE(layouted.size(), layouted.sizeHint());
#endif
@@ -2065,7 +2065,7 @@ void tst_QWidget::showFullScreen()
layouted.showNormal();
QVERIFY(!(layouted.windowState() & Qt::WindowFullScreen));
-#if !defined(Q_WS_QWS) && !defined(Q_OS_WINCE) && !defined (Q_WS_S60)
+#if !defined(Q_WS_QWS) && !defined(Q_OS_WINCE) && !defined (Q_WS_S60) && !defined(Q_WS_QPA)
//embedded may choose a different size to fit on the screen.
QCOMPARE(layouted.size(), layouted.sizeHint());
#endif
@@ -2154,7 +2154,10 @@ void tst_QWidget::resizeEvent()
wParent.show();
QCOMPARE (wChild.m_resizeEventCount, 1); // initial resize event before paint
wParent.hide();
- wChild.resize(QSize(640,480));
+ QSize safeSize(640,480);
+ if (wChild.size() == safeSize)
+ safeSize.setWidth(639);
+ wChild.resize(safeSize);
QCOMPARE (wChild.m_resizeEventCount, 1);
wParent.show();
QCOMPARE (wChild.m_resizeEventCount, 2);
@@ -2165,7 +2168,10 @@ void tst_QWidget::resizeEvent()
wTopLevel.show();
QCOMPARE (wTopLevel.m_resizeEventCount, 1); // initial resize event before paint for toplevels
wTopLevel.hide();
- wTopLevel.resize(QSize(640,480));
+ QSize safeSize(640,480);
+ if (wTopLevel.size() == safeSize)
+ safeSize.setWidth(639);
+ wTopLevel.resize(safeSize);
QCOMPARE (wTopLevel.m_resizeEventCount, 1);
wTopLevel.show();
QCOMPARE (wTopLevel.m_resizeEventCount, 2);
@@ -3362,6 +3368,10 @@ void tst_QWidget::widgetAt()
#if defined(Q_OS_SYMBIAN)
QEXPECT_FAIL("", "Symbian/S60 does only support rectangular regions", Continue); //See also task 147191
#endif
+#if defined(Q_WS_QPA)
+ QEXPECT_FAIL("", "Window mask not implemented on Lighthouse", Continue);
+#endif
+
QTRY_COMPARE(QApplication::widgetAt(100,100)->objectName(), w1->objectName());
QTRY_COMPARE(QApplication::widgetAt(101,101)->objectName(), w2->objectName());
@@ -3380,6 +3390,9 @@ void tst_QWidget::widgetAt()
#if defined(Q_OS_SYMBIAN)
QEXPECT_FAIL("", "Symbian/S60 does only support rectangular regions", Continue); //See also task 147191
#endif
+#if defined(Q_WS_QPA)
+ QEXPECT_FAIL("", "Window mask not implemented on Lighthouse", Continue);
+#endif
QTRY_VERIFY(QApplication::widgetAt(100,100) == w1);
QTRY_VERIFY(QApplication::widgetAt(101,101) == w2);
@@ -5452,9 +5465,12 @@ public:
QCOMPARE(pixmap.size(), rect.size()); \
QPixmap expectedPixmap(pixmap); /* ensure equal formats */ \
expectedPixmap.fill(color); \
- if (pixmap.toImage().pixel(0,0) != QColor(color).rgb() && t < 4 ) \
+ QImage image = pixmap.toImage(); \
+ uint alphaCorrection = image.format() == QImage::Format_RGB32 ? 0xff000000 : 0; \
+ uint firstPixel = image.pixel(0,0) | alphaCorrection; \
+ if ( firstPixel != QColor(color).rgb() && t < 4 ) \
{ QTest::qWait(200); continue; } \
- QCOMPARE(pixmap.toImage().pixel(0,0), QColor(color).rgb()); \
+ QCOMPARE(firstPixel, QColor(color).rgb()); \
QCOMPARE(pixmap, expectedPixmap); \
break; \
} \
@@ -6346,7 +6362,7 @@ void tst_QWidget::compatibilityChildInsertedEvents()
EventRecorder::EventList()
<< qMakePair(&widget, QEvent::PolishRequest)
<< qMakePair(&widget, QEvent::Type(QEvent::User + 1))
-#if defined(Q_WS_X11) || defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_S60)
+#if defined(Q_WS_X11) || defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_S60) || defined(Q_WS_QPA)
<< qMakePair(&widget, QEvent::UpdateRequest)
#endif
;
@@ -6442,7 +6458,7 @@ void tst_QWidget::compatibilityChildInsertedEvents()
<< qMakePair(&widget, QEvent::PolishRequest)
<< qMakePair(&widget, QEvent::Type(QEvent::User + 1))
<< qMakePair(&widget, QEvent::Type(QEvent::User + 2))
-#if defined(Q_WS_X11) || defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_S60)
+#if defined(Q_WS_X11) || defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_S60) || defined(Q_WS_QPA)
<< qMakePair(&widget, QEvent::UpdateRequest)
#endif
;
@@ -6538,7 +6554,7 @@ void tst_QWidget::compatibilityChildInsertedEvents()
<< qMakePair(&widget, QEvent::PolishRequest)
<< qMakePair(&widget, QEvent::Type(QEvent::User + 1))
<< qMakePair(&widget, QEvent::Type(QEvent::User + 2))
-#if defined(Q_WS_X11) || defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_S60)
+#if defined(Q_WS_X11) || defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_S60) || defined(Q_WS_QPA)
<< qMakePair(&widget, QEvent::UpdateRequest)
#endif
;
@@ -9151,7 +9167,7 @@ void tst_QWidget::maskedUpdate()
QTRY_COMPARE(grandChild.paintedRegion, QRegion(grandChild.rect())); // Full update.
}
-#if defined(Q_WS_X11) || defined(Q_WS_WIN) || defined(Q_WS_QWS)
+#if defined(Q_WS_X11) || defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_QPA)
void tst_QWidget::syntheticEnterLeave()
{
class MyWidget : public QWidget
@@ -9692,14 +9708,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
@@ -9708,18 +9735,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.
@@ -9735,11 +9768,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/qwineventnotifier/qwineventnotifier.pro b/tests/auto/qwineventnotifier/qwineventnotifier.pro
index 0c8bd2bd94..62da3a33ea 100644
--- a/tests/auto/qwineventnotifier/qwineventnotifier.pro
+++ b/tests/auto/qwineventnotifier/qwineventnotifier.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qwineventnotifier.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qwritelocker/qwritelocker.pro b/tests/auto/qwritelocker/qwritelocker.pro
index acae4efb28..39a98aaba5 100644
--- a/tests/auto/qwritelocker/qwritelocker.pro
+++ b/tests/auto/qwritelocker/qwritelocker.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qwritelocker.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qxml/qxml.pro b/tests/auto/qxml/qxml.pro
index 5fb7fe2904..c87518a7ff 100644
--- a/tests/auto/qxml/qxml.pro
+++ b/tests/auto/qxml/qxml.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qxml.cpp
QT = core xml
wince*|symbian: {
- addFiles.sources = 0x010D.xml
+ addFiles.files = 0x010D.xml
addFiles.path = .
DEPLOYMENT += addFiles
}
diff --git a/tests/auto/qxmlformatter/qxmlformatter.pro b/tests/auto/qxmlformatter/qxmlformatter.pro
index 339fa55439..bcab0b4c02 100644
--- a/tests/auto/qxmlformatter/qxmlformatter.pro
+++ b/tests/auto/qxmlformatter/qxmlformatter.pro
@@ -4,7 +4,7 @@ SOURCES += tst_qxmlformatter.cpp
include (../xmlpatterns.pri)
wince*|symbian:{
- addFiles.sources = baselines input
+ addFiles.files = baselines input
addFiles.path = .
DEPLOYMENT += addFiles
}
diff --git a/tests/auto/qxmlquery/qxmlquery.pro b/tests/auto/qxmlquery/qxmlquery.pro
index 044b7cec19..d5e822846e 100644
--- a/tests/auto/qxmlquery/qxmlquery.pro
+++ b/tests/auto/qxmlquery/qxmlquery.pro
@@ -19,10 +19,10 @@ wince* {
include (../xmlpatterns.pri)
wince*|symbian: {
- addFiles.sources = pushBaselines input.xml
+ addFiles.files = pushBaselines input.xml
addFiles.path = .
- patternistFiles.sources = ../xmlpatterns/queries
+ patternistFiles.files = ../xmlpatterns/queries
symbian: {
#../xmlpatterns resolves to an illegal path for deployment
patternistFiles.path = xmlpatterns
diff --git a/tests/auto/qxmlquery/tst_qxmlquery.cpp b/tests/auto/qxmlquery/tst_qxmlquery.cpp
index 2187aeb3a4..3c0886e440 100644
--- a/tests/auto/qxmlquery/tst_qxmlquery.cpp
+++ b/tests/auto/qxmlquery/tst_qxmlquery.cpp
@@ -455,6 +455,7 @@ void tst_QXmlQuery::assignmentOperator() const
class ReturnURI : public QAbstractUriResolver
{
public:
+ ReturnURI() {}
virtual QUrl resolve(const QUrl &relative,
const QUrl &baseURI) const
{
@@ -1197,9 +1198,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 +1354,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
@@ -2858,6 +2872,7 @@ void tst_QXmlQuery::useUriResolver() const
, private TestFundament
{
public:
+ TestUriResolver() {}
virtual QUrl resolve(const QUrl &relative,
const QUrl &baseURI) const
{
diff --git a/tests/auto/qxmlsimplereader/qxmlsimplereader.pro b/tests/auto/qxmlsimplereader/qxmlsimplereader.pro
index c107470b4b..bc3cbd2dfd 100644
--- a/tests/auto/qxmlsimplereader/qxmlsimplereader.pro
+++ b/tests/auto/qxmlsimplereader/qxmlsimplereader.pro
@@ -13,7 +13,7 @@ QT -= gui
wince*|symbian: {
- addFiles.sources = encodings parser xmldocs
+ addFiles.files = encodings parser xmldocs
addFiles.path = .
DEPLOYMENT += addFiles
}
diff --git a/tests/auto/qxmlstream/qxmlstream.pro b/tests/auto/qxmlstream/qxmlstream.pro
index 31331cfd74..894801d8dc 100644
--- a/tests/auto/qxmlstream/qxmlstream.pro
+++ b/tests/auto/qxmlstream/qxmlstream.pro
@@ -5,7 +5,7 @@ QT = core xml network
wince*|symbian: {
- addFiles.sources = data XML-Test-Suite
+ addFiles.files = data XML-Test-Suite
addFiles.path = .
DEPLOYMENT += addFiles
wince*:DEFINES += SRCDIR=\\\"\\\"
diff --git a/tests/auto/qzip/qzip.pro b/tests/auto/qzip/qzip.pro
index 632c743f1a..683da62e37 100644
--- a/tests/auto/qzip/qzip.pro
+++ b/tests/auto/qzip/qzip.pro
@@ -2,7 +2,7 @@ load(qttest_p4)
SOURCES += tst_qzip.cpp
wince*|symbian: {
- addFiles.sources = testdata
+ addFiles.files = testdata
addFiles.path = .
DEPLOYMENT += addFiles
!symbian:DEFINES += SRCDIR=\\\".\\\"
diff --git a/tests/auto/script.pro b/tests/auto/script.pro
index 06f51b5b98..c4d05440c6 100644
--- a/tests/auto/script.pro
+++ b/tests/auto/script.pro
@@ -7,10 +7,12 @@ SUBDIRS=\
qscriptengine \
qscriptengineagent \
qscriptenginedebugger \
+ qscriptextensionplugin \
qscriptextqobject \
qscriptjstestsuite \
qscriptstring \
qscriptv8testsuite \
qscriptvalue \
+ qscriptvaluegenerated \
qscriptvalueiterator \
diff --git a/tests/auto/selftests/selftests.pro b/tests/auto/selftests/selftests.pro
index d854b5e5b5..2f1c327e34 100644
--- a/tests/auto/selftests/selftests.pro
+++ b/tests/auto/selftests/selftests.pro
@@ -12,3 +12,4 @@ INSTALLS =
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/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/auto/uic/baseline/gridalignment.ui b/tests/auto/uic/baseline/gridalignment.ui
new file mode 100644
index 0000000000..11c28b1372
--- /dev/null
+++ b/tests/auto/uic/baseline/gridalignment.ui
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>279</width>
+ <height>163</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0" alignment="Qt::AlignLeft">
+ <widget class="QPushButton" name="pushButton">
+ <property name="text">
+ <string>Left</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" alignment="Qt::AlignTop">
+ <widget class="QPushButton" name="pushButton_3">
+ <property name="text">
+ <string>Top</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" alignment="Qt::AlignRight">
+ <widget class="QPushButton" name="pushButton_2">
+ <property name="text">
+ <string>Right</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" alignment="Qt::AlignBottom">
+ <widget class="QPushButton" name="pushButton_4">
+ <property name="text">
+ <string>Bottom</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/tests/auto/uic/baseline/gridalignment.ui.h b/tests/auto/uic/baseline/gridalignment.ui.h
new file mode 100644
index 0000000000..8386190eb0
--- /dev/null
+++ b/tests/auto/uic/baseline/gridalignment.ui.h
@@ -0,0 +1,83 @@
+/********************************************************************************
+** Form generated from reading UI file 'gridalignment.ui'
+**
+** Created: Fri Oct 22 14:33:59 2010
+** by: Qt User Interface Compiler version 4.8.0
+**
+** WARNING! All changes made in this file will be lost when recompiling UI file!
+********************************************************************************/
+
+#ifndef GRIDALIGNMENT_H
+#define GRIDALIGNMENT_H
+
+#include <QtCore/QVariant>
+#include <QtGui/QAction>
+#include <QtGui/QApplication>
+#include <QtGui/QButtonGroup>
+#include <QtGui/QGridLayout>
+#include <QtGui/QHeaderView>
+#include <QtGui/QPushButton>
+#include <QtGui/QWidget>
+
+QT_BEGIN_NAMESPACE
+
+class Ui_Form
+{
+public:
+ QGridLayout *gridLayout;
+ QPushButton *pushButton;
+ QPushButton *pushButton_3;
+ QPushButton *pushButton_2;
+ QPushButton *pushButton_4;
+
+ void setupUi(QWidget *Form)
+ {
+ if (Form->objectName().isEmpty())
+ Form->setObjectName(QString::fromUtf8("Form"));
+ Form->resize(279, 163);
+ gridLayout = new QGridLayout(Form);
+ gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
+ pushButton = new QPushButton(Form);
+ pushButton->setObjectName(QString::fromUtf8("pushButton"));
+
+ gridLayout->addWidget(pushButton, 0, 0, 1, 1, Qt::AlignLeft);
+
+ pushButton_3 = new QPushButton(Form);
+ pushButton_3->setObjectName(QString::fromUtf8("pushButton_3"));
+
+ gridLayout->addWidget(pushButton_3, 0, 1, 1, 1, Qt::AlignTop);
+
+ pushButton_2 = new QPushButton(Form);
+ pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
+
+ gridLayout->addWidget(pushButton_2, 1, 0, 1, 1, Qt::AlignRight);
+
+ pushButton_4 = new QPushButton(Form);
+ pushButton_4->setObjectName(QString::fromUtf8("pushButton_4"));
+
+ gridLayout->addWidget(pushButton_4, 1, 1, 1, 1, Qt::AlignBottom);
+
+
+ retranslateUi(Form);
+
+ QMetaObject::connectSlotsByName(Form);
+ } // setupUi
+
+ void retranslateUi(QWidget *Form)
+ {
+ Form->setWindowTitle(QApplication::translate("Form", "Form", 0, QApplication::UnicodeUTF8));
+ pushButton->setText(QApplication::translate("Form", "Left", 0, QApplication::UnicodeUTF8));
+ pushButton_3->setText(QApplication::translate("Form", "Top", 0, QApplication::UnicodeUTF8));
+ pushButton_2->setText(QApplication::translate("Form", "Right", 0, QApplication::UnicodeUTF8));
+ pushButton_4->setText(QApplication::translate("Form", "Bottom", 0, QApplication::UnicodeUTF8));
+ } // retranslateUi
+
+};
+
+namespace Ui {
+ class Form: public Ui_Form {};
+} // namespace Ui
+
+QT_END_NAMESPACE
+
+#endif // GRIDALIGNMENT_H
diff --git a/tests/auto/uiloader/uiloader/uiloader.pro b/tests/auto/uiloader/uiloader/uiloader.pro
index d99df00e9a..4e95956522 100644
--- a/tests/auto/uiloader/uiloader/uiloader.pro
+++ b/tests/auto/uiloader/uiloader/uiloader.pro
@@ -17,10 +17,10 @@ QT += xml svg network
contains(QT_CONFIG, qt3support): QT += qt3support
wince*|symbian: {
- configuration.sources = ../*.ini
+ configuration.files = ../*.ini
configuration.path = .
- screenapp.sources = ../tst_screenshot/tst_screenshot.exe
+ screenapp.files = ../tst_screenshot/tst_screenshot.exe
screenapp.path = tst_screenshot
DEPLOYMENT += configuration screenapp
diff --git a/tests/auto/utf8/utf8.pro b/tests/auto/utf8/utf8.pro
index 4ec6851b9b..aa133fe3ee 100644
--- a/tests/auto/utf8/utf8.pro
+++ b/tests/auto/utf8/utf8.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
QT -= gui
SOURCES += tst_utf8.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/windowsmobile/test/test.pro b/tests/auto/windowsmobile/test/test.pro
index f3124a31e0..b0536a5e79 100644
--- a/tests/auto/windowsmobile/test/test.pro
+++ b/tests/auto/windowsmobile/test/test.pro
@@ -8,7 +8,7 @@ RESOURCES += windowsmobile.qrc
TARGET = ../tst_windowsmobile
wincewm*: {
- addFiles.sources = $$OUT_PWD/../testQMenuBar/*.exe
+ addFiles.files = $$OUT_PWD/../testQMenuBar/*.exe
addFiles.path = "\\Program Files\\tst_windowsmobile"
diff --git a/tests/auto/xmlpatterns.pri b/tests/auto/xmlpatterns.pri
index 8c8ccadb20..57b85170ca 100644
--- a/tests/auto/xmlpatterns.pri
+++ b/tests/auto/xmlpatterns.pri
@@ -4,9 +4,9 @@ contains(QT_CONFIG,xmlpatterns) {
}
wince*: {
- patternsdk.sources = $$QT_BUILD_TREE/lib/QtXmlPatternsSDK*.dll
+ patternsdk.files = $$QT_BUILD_TREE/lib/QtXmlPatternsSDK*.dll
patternsdk.path = .
- basedata.sources = xmlpaternsxqts/Baseline.xml
+ basedata.files = xmlpaternsxqts/Baseline.xml
basedata.path = .
DEPLOYMENT += patternsdk
QT += network
diff --git a/tests/auto/xmlpatternsdiagnosticsts/xmlpatternsdiagnosticsts.pro b/tests/auto/xmlpatternsdiagnosticsts/xmlpatternsdiagnosticsts.pro
index 981adab764..3e252f68b0 100644
--- a/tests/auto/xmlpatternsdiagnosticsts/xmlpatternsdiagnosticsts.pro
+++ b/tests/auto/xmlpatternsdiagnosticsts/xmlpatternsdiagnosticsts.pro
@@ -21,7 +21,7 @@ INCLUDEPATH += $$(QTSRCDIR)/tests/auto/xmlpatternssdk \
../xmlpatternssdk
wince*|symbian {
- catalog.sources = TestSuite Baseline.xml
+ catalog.files = TestSuite Baseline.xml
catalog.path = .
DEPLOYMENT += catalog
}
diff --git a/tests/auto/xmlpatternsview/xmlpatternsview.pro b/tests/auto/xmlpatternsview/xmlpatternsview.pro
index d93cba3cfb..5ab0f0e010 100644
--- a/tests/auto/xmlpatternsview/xmlpatternsview.pro
+++ b/tests/auto/xmlpatternsview/xmlpatternsview.pro
@@ -6,7 +6,7 @@ include (../xmlpatterns.pri)
TARGET = tst_xmlpatternsview
wince*: {
- viewexe.sources = $$QT_BUILD_TREE/xmlpatternsview.exe
+ viewexe.files = $$QT_BUILD_TREE/xmlpatternsview.exe
viewexe.path = .
DEPLOYMENT += viewexe
}
diff --git a/tests/auto/xmlpatternsxslts/xmlpatternsxslts.pro b/tests/auto/xmlpatternsxslts/xmlpatternsxslts.pro
index 940cc3161f..44c47549d1 100644
--- a/tests/auto/xmlpatternsxslts/xmlpatternsxslts.pro
+++ b/tests/auto/xmlpatternsxslts/xmlpatternsxslts.pro
@@ -18,7 +18,7 @@ INCLUDEPATH += $$(QTSRCDIR)/tests/auto/xmlpatternssdk \
../xmlpatternssdk
wince*: {
- testdata.sources = XSLTS Baseline.xml
+ testdata.files = XSLTS Baseline.xml
testdata.path = .
DEPLOYMENT += testdata
}
diff --git a/tests/benchmarks/benchmarks.pro b/tests/benchmarks/benchmarks.pro
index 01d5cd5c98..00a1b37eb1 100644
--- a/tests/benchmarks/benchmarks.pro
+++ b/tests/benchmarks/benchmarks.pro
@@ -7,3 +7,6 @@ SUBDIRS = \
svg
contains(QT_CONFIG, opengl): SUBDIRS += opengl
contains(QT_CONFIG, declarative): SUBDIRS += declarative
+
+check-trusted.CONFIG += recursive
+QMAKE_EXTRA_TARGETS += check-trusted
diff --git a/tests/benchmarks/corelib/codecs/qtextcodec/qtextcodec.pro b/tests/benchmarks/corelib/codecs/qtextcodec/qtextcodec.pro
index 23f0e0005f..f26d623ad3 100644
--- a/tests/benchmarks/corelib/codecs/qtextcodec/qtextcodec.pro
+++ b/tests/benchmarks/corelib/codecs/qtextcodec/qtextcodec.pro
@@ -6,7 +6,7 @@ SOURCES += main.cpp
wince*:{
DEFINES += SRCDIR=\\\"\\\"
} else:symbian* {
- addFiles.sources = utf-8.txt
+ addFiles.files = utf-8.txt
addFiles.path = .
DEPLOYMENT += addFiles
TARGET.EPOCHEAPSIZE="0x100 0x1000000"
diff --git a/tests/benchmarks/corelib/corelib.pro b/tests/benchmarks/corelib/corelib.pro
index 8a6941bd2e..335280ec21 100644
--- a/tests/benchmarks/corelib/corelib.pro
+++ b/tests/benchmarks/corelib/corelib.pro
@@ -4,5 +4,13 @@ SUBDIRS = \
kernel \
thread \
tools \
- codecs \
+ codecs \
plugin
+
+TRUSTED_BENCHMARKS += \
+ kernel/qmetaobject \
+ kernel/qmetatype \
+ kernel/qobject \
+ thread/qthreadstorage
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro b/tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro
index 320746c1aa..17d164d463 100755
--- a/tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro
+++ b/tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro
@@ -16,7 +16,7 @@ SOURCES += qfilesystemiterator.cpp
HEADERS += qfilesystemiterator.h
wince*|symbian: {
- corelibdir.sources = $$QT_SOURCE_TREE/src/corelib
+ corelibdir.files = $$QT_SOURCE_TREE/src/corelib
corelibdir.path = ./depot/src
DEPLOYMENT += corelibdir
}
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/corelib/tools/qstring/main.cpp b/tests/benchmarks/corelib/tools/qstring/main.cpp
index 961605298c..eafcc24dca 100644
--- a/tests/benchmarks/corelib/tools/qstring/main.cpp
+++ b/tests/benchmarks/corelib/tools/qstring/main.cpp
@@ -1007,6 +1007,7 @@ static inline __attribute__((optimize("no-unroll-loops"))) int ucstrncmp_sse2_al
return ucstrncmp_short_tail(a + counter, b + counter, len);
}
+#ifdef __SSSE3__
static inline __attribute__((optimize("no-unroll-loops"))) int ucstrncmp_ssse3_alignr_aligned(const ushort *a, const ushort *b, int len)
{
quintptr counter = 0;
@@ -1276,6 +1277,7 @@ static int ucstrncmp_ssse3_aligning2(const ushort *a, const ushort *b, int len)
}
#endif
+#endif
typedef int (* UcstrncmpFunction)(const ushort *, const ushort *, int);
Q_DECLARE_METATYPE(UcstrncmpFunction)
diff --git a/tests/benchmarks/corelib/tools/qstring/qstring.pro b/tests/benchmarks/corelib/tools/qstring/qstring.pro
index e8720e1919..e43e400771 100644
--- a/tests/benchmarks/corelib/tools/qstring/qstring.pro
+++ b/tests/benchmarks/corelib/tools/qstring/qstring.pro
@@ -6,7 +6,7 @@ SOURCES += main.cpp data.cpp
wince*:{
DEFINES += SRCDIR=\\\"\\\"
} else:symbian* {
- addFiles.sources = utf-8.txt
+ addFiles.files = utf-8.txt
addFiles.path = .
DEPLOYMENT += addFiles
TARGET.EPOCHEAPSIZE="0x100 0x1000000"
diff --git a/tests/benchmarks/declarative/binding/binding.pro b/tests/benchmarks/declarative/binding/binding.pro
index b93977a53c..bbe8701d32 100644
--- a/tests/benchmarks/declarative/binding/binding.pro
+++ b/tests/benchmarks/declarative/binding/binding.pro
@@ -8,7 +8,7 @@ SOURCES += tst_binding.cpp testtypes.cpp
HEADERS += testtypes.h
symbian {
- data.sources = data
+ data.files = data
data.path = .
DEPLOYMENT += data
} else {
diff --git a/tests/benchmarks/declarative/compilation/compilation.pro b/tests/benchmarks/declarative/compilation/compilation.pro
index 9277187479..9ab2a25731 100644
--- a/tests/benchmarks/declarative/compilation/compilation.pro
+++ b/tests/benchmarks/declarative/compilation/compilation.pro
@@ -9,7 +9,7 @@ CONFIG += release
SOURCES += tst_compilation.cpp
symbian {
- data.sources += data
+ data.files += data
data.path = .
DEPLOYMENT += data
} else {
diff --git a/tests/benchmarks/declarative/creation/creation.pro b/tests/benchmarks/declarative/creation/creation.pro
index 6540fa2e24..74cb47fb73 100644
--- a/tests/benchmarks/declarative/creation/creation.pro
+++ b/tests/benchmarks/declarative/creation/creation.pro
@@ -7,7 +7,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_creation.cpp
symbian {
- data.sources = data
+ data.files = data
data.path = .
DEPLOYMENT += data
} else {
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/declarative.pro b/tests/benchmarks/declarative/declarative.pro
index 5dd31f3d13..cb02a35c27 100644
--- a/tests/benchmarks/declarative/declarative.pro
+++ b/tests/benchmarks/declarative/declarative.pro
@@ -12,4 +12,4 @@ SUBDIRS += \
contains(QT_CONFIG, opengl): SUBDIRS += painting
-
+include(../trusted-benchmarks.pri)
diff --git a/tests/benchmarks/declarative/qdeclarativecomponent/qdeclarativecomponent.pro b/tests/benchmarks/declarative/qdeclarativecomponent/qdeclarativecomponent.pro
index b2f39c1c79..4693a82231 100644
--- a/tests/benchmarks/declarative/qdeclarativecomponent/qdeclarativecomponent.pro
+++ b/tests/benchmarks/declarative/qdeclarativecomponent/qdeclarativecomponent.pro
@@ -8,7 +8,7 @@ SOURCES += tst_qdeclarativecomponent.cpp testtypes.cpp
HEADERS += testtypes.h
symbian {
- data.sources = data
+ data.files = data
data.path = .
DEPLOYMENT += data
} else {
diff --git a/tests/benchmarks/declarative/qdeclarativeimage/qdeclarativeimage.pro b/tests/benchmarks/declarative/qdeclarativeimage/qdeclarativeimage.pro
index 313282bc11..0d7c184f37 100644
--- a/tests/benchmarks/declarative/qdeclarativeimage/qdeclarativeimage.pro
+++ b/tests/benchmarks/declarative/qdeclarativeimage/qdeclarativeimage.pro
@@ -8,7 +8,7 @@ CONFIG += release
SOURCES += tst_qdeclarativeimage.cpp
symbian {
- importFiles.sources = image.png
+ importFiles.files = image.png
importFiles.path =
DEPLOYMENT += importFiles
} else {
diff --git a/tests/benchmarks/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro b/tests/benchmarks/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro
index 65ee7e0cad..765e37a15d 100644
--- a/tests/benchmarks/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro
+++ b/tests/benchmarks/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro
@@ -7,7 +7,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_qdeclarativemetaproperty.cpp
symbian {
- data.sources += data
+ data.files += data
data.path = .
DEPLOYMENT += data
} else {
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/declarative/qmltime/qmltime.pro b/tests/benchmarks/declarative/qmltime/qmltime.pro
index 6f5ad5eff2..273a60ac75 100644
--- a/tests/benchmarks/declarative/qmltime/qmltime.pro
+++ b/tests/benchmarks/declarative/qmltime/qmltime.pro
@@ -8,7 +8,7 @@ SOURCES += qmltime.cpp
symbian {
TARGET.CAPABILITY = "All -TCB"
- example.sources = example.qml tests
+ example.files = example.qml tests
example.path = .
DEPLOYMENT += example
}
diff --git a/tests/benchmarks/declarative/script/script.pro b/tests/benchmarks/declarative/script/script.pro
index 759c6dd4e9..75faa5cf38 100644
--- a/tests/benchmarks/declarative/script/script.pro
+++ b/tests/benchmarks/declarative/script/script.pro
@@ -8,7 +8,7 @@ CONFIG += release
SOURCES += tst_script.cpp
symbian {
- importFiles.sources = data
+ importFiles.files = data
importFiles.path =
DEPLOYMENT += importFiles
} else {
diff --git a/tests/benchmarks/declarative/typeimports/typeimports.pro b/tests/benchmarks/declarative/typeimports/typeimports.pro
index a5df3f0763..56834e6175 100644
--- a/tests/benchmarks/declarative/typeimports/typeimports.pro
+++ b/tests/benchmarks/declarative/typeimports/typeimports.pro
@@ -7,7 +7,7 @@ macx:CONFIG -= app_bundle
SOURCES += tst_typeimports.cpp
symbian {
- data.sources = data
+ data.files = data
data.path = .
DEPLOYMENT += data
} else {
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro b/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro
index 6e044f9375..bfa374cdf8 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro
@@ -9,7 +9,7 @@ include(chiptester/chiptester.pri)
symbian {
qt_not_deployed {
- plugins.sources = qjpeg.dll
+ plugins.files = qjpeg.dll
plugins.path = imageformats
DEPLOYMENT += plugins
}
diff --git a/tests/benchmarks/gui/gui.pro b/tests/benchmarks/gui/gui.pro
index 946f1847fa..d8254583c5 100644
--- a/tests/benchmarks/gui/gui.pro
+++ b/tests/benchmarks/gui/gui.pro
@@ -9,3 +9,10 @@ SUBDIRS = \
painting \
styles \
text
+
+TRUSTED_BENCHMARKS += \
+ graphicsview/functional/GraphicsViewBenchmark \
+ graphicsview/qgraphicsview \
+ painting/qtracebench
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/gui/image/qimagereader/qimagereader.pro b/tests/benchmarks/gui/image/qimagereader/qimagereader.pro
index d67f4bedd4..db5ffcd01d 100644
--- a/tests/benchmarks/gui/image/qimagereader/qimagereader.pro
+++ b/tests/benchmarks/gui/image/qimagereader/qimagereader.pro
@@ -11,15 +11,15 @@ SOURCES += tst_qimagereader.cpp
QT += network
wince*: {
- addFiles.sources = images
+ addFiles.files = images
addFiles.path = .
CONFIG(debug, debug|release):{
- imageFormatsPlugins.sources = $$(QTDIR)/plugins/imageformats/*d4.dll
+ imageFormatsPlugins.files = $$(QTDIR)/plugins/imageformats/*d4.dll
}
CONFIG(release, debug|release):{
- imageFormatsPlugins.sources = $$(QTDIR)/plugins/imageformats/*[^d]4.dll
+ imageFormatsPlugins.files = $$(QTDIR)/plugins/imageformats/*[^d]4.dll
}
imageFormatsPlugins.path = imageformats
DEPLOYMENT += addFiles imageFormatsPlugins
diff --git a/tests/benchmarks/gui/text/qtext/qtext.pro b/tests/benchmarks/gui/text/qtext/qtext.pro
index a1b6a22fca..1c18302a39 100644
--- a/tests/benchmarks/gui/text/qtext/qtext.pro
+++ b/tests/benchmarks/gui/text/qtext/qtext.pro
@@ -6,7 +6,7 @@ SOURCES += main.cpp
symbian* {
TARGET.CAPABILITY = ALL -TCB
- addFiles.sources = bidi.txt
+ addFiles.files = bidi.txt
addFiles.path = .
DEPLOYMENT += addFiles
} else {
diff --git a/tests/benchmarks/network/network.pro b/tests/benchmarks/network/network.pro
index 73de556664..692a0a1b7e 100644
--- a/tests/benchmarks/network/network.pro
+++ b/tests/benchmarks/network/network.pro
@@ -4,3 +4,10 @@ SUBDIRS = \
kernel \
ssl \
socket
+
+TRUSTED_BENCHMARKS += \
+ kernel/qhostinfo \
+ socket/qtcpserver \
+ ssl/qsslsocket
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/opengl/opengl.pro b/tests/benchmarks/opengl/opengl.pro
index 5c58751178..b510c2bb06 100644
--- a/tests/benchmarks/opengl/opengl.pro
+++ b/tests/benchmarks/opengl/opengl.pro
@@ -8,3 +8,5 @@ QT += opengl
# Input
SOURCES += main.cpp
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp b/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp
index 4610046596..6cf6fb3883 100644
--- a/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp
+++ b/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp
@@ -44,6 +44,8 @@
#include <QtScript/private/qscriptdeclarativeclass_p.h>
+Q_DECLARE_METATYPE(QScriptValue)
+
//TESTED_FILES=
class tst_QScriptEngine : public QObject
@@ -60,32 +62,65 @@ public slots:
private slots:
void constructor();
+ void defaultPrototype();
+ void setDefaultPrototype();
void evaluate_data();
void evaluate();
void evaluateProgram_data();
void evaluateProgram();
void connectAndDisconnect();
+ void globalObject();
+ void hasUncaughtException();
+ void isEvaluating();
+ void newArray_data();
+ void newArray();
+ void newDate();
+ void newDateFromMs();
void newObject();
+ void newObjectWithScriptClass();
+ void newQMetaObject();
void newQObject();
void newFunction();
+ void newRegExp();
+ void newRegExpFromString();
void newVariant();
+ void nullValue();
+ void undefinedValue();
void collectGarbage();
+ void currentContext();
void pushAndPopContext();
+ void availableExtensions();
+ void importedExtensions();
+ void toObject_data();
+ void toObject();
void toStringHandle();
void castValueToQreal();
void nativeCall();
+ void installTranslatorFunctions();
void translation_data();
void translation();
void readScopeProperty_data();
void readScopeProperty();
+
+private:
+ void defineStandardTestValues();
+ void newEngine()
+ {
+ delete m_engine;
+ m_engine = new QScriptEngine;
+ }
+
+ QScriptEngine *m_engine;
};
tst_QScriptEngine::tst_QScriptEngine()
+ : m_engine(0)
{
}
tst_QScriptEngine::~tst_QScriptEngine()
{
+ delete m_engine;
}
void tst_QScriptEngine::init()
@@ -104,6 +139,26 @@ void tst_QScriptEngine::constructor()
}
}
+void tst_QScriptEngine::defaultPrototype()
+{
+ newEngine();
+ int type = qMetaTypeId<int>();
+ m_engine->setDefaultPrototype(type, m_engine->newObject());
+ QBENCHMARK {
+ m_engine->defaultPrototype(type);
+ }
+}
+
+void tst_QScriptEngine::setDefaultPrototype()
+{
+ newEngine();
+ int type = qMetaTypeId<int>();
+ QScriptValue proto = m_engine->newObject();
+ QBENCHMARK {
+ m_engine->setDefaultPrototype(type, proto);
+ }
+}
+
void tst_QScriptEngine::evaluate_data()
{
QTest::addColumn<QString>("code");
@@ -144,20 +199,20 @@ void tst_QScriptEngine::evaluate_data()
void tst_QScriptEngine::evaluate()
{
QFETCH(QString, code);
- QScriptEngine engine;
+ newEngine();
QBENCHMARK {
- (void)engine.evaluate(code);
+ (void)m_engine->evaluate(code);
}
}
void tst_QScriptEngine::connectAndDisconnect()
{
- QScriptEngine engine;
- QScriptValue fun = engine.evaluate("(function() { })");
+ newEngine();
+ QScriptValue fun = m_engine->evaluate("(function() { })");
QBENCHMARK {
- qScriptConnect(&engine, SIGNAL(destroyed()), QScriptValue(), fun);
- qScriptDisconnect(&engine, SIGNAL(destroyed()), QScriptValue(), fun);
+ qScriptConnect(m_engine, SIGNAL(destroyed()), QScriptValue(), fun);
+ qScriptDisconnect(m_engine, SIGNAL(destroyed()), QScriptValue(), fun);
}
}
@@ -169,27 +224,105 @@ void tst_QScriptEngine::evaluateProgram_data()
void tst_QScriptEngine::evaluateProgram()
{
QFETCH(QString, code);
- QScriptEngine engine;
QScriptProgram program(code);
+ newEngine();
QBENCHMARK {
- (void)engine.evaluate(program);
+ (void)m_engine->evaluate(program);
+ }
+}
+
+void tst_QScriptEngine::globalObject()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->globalObject();
+ }
+}
+
+void tst_QScriptEngine::hasUncaughtException()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->hasUncaughtException();
+ }
+}
+
+void tst_QScriptEngine::isEvaluating()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->isEvaluating();
+ }
+}
+
+void tst_QScriptEngine::newArray_data()
+{
+ QTest::addColumn<int>("size");
+ QTest::newRow("size=0") << 0;
+ QTest::newRow("size=10") << 10;
+ QTest::newRow("size=100") << 0;
+ QTest::newRow("size=1000") << 0;
+ QTest::newRow("size=10000") << 0;
+ QTest::newRow("size=50000") << 0;
+}
+
+void tst_QScriptEngine::newArray()
+{
+ QFETCH(int, size);
+ newEngine();
+ QBENCHMARK {
+ m_engine->newArray(size);
+ }
+}
+
+void tst_QScriptEngine::newDate()
+{
+ newEngine();
+ QDateTime dt = QDateTime::currentDateTime();
+ QBENCHMARK {
+ m_engine->newDate(dt);
+ }
+}
+
+void tst_QScriptEngine::newDateFromMs()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->newDate(0);
}
}
void tst_QScriptEngine::newObject()
{
- QScriptEngine engine;
+ newEngine();
QBENCHMARK {
- (void)engine.newObject();
+ (void)m_engine->newObject();
+ }
+}
+
+void tst_QScriptEngine::newObjectWithScriptClass()
+{
+ newEngine();
+ QScriptClass cls(m_engine);
+ QBENCHMARK {
+ m_engine->newObject(&cls);
+ }
+}
+
+void tst_QScriptEngine::newQMetaObject()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->newQMetaObject(&QScriptEngine::staticMetaObject);
}
}
void tst_QScriptEngine::newQObject()
{
- QScriptEngine engine;
+ newEngine();
QBENCHMARK {
- (void)engine.newQObject(QCoreApplication::instance());
+ (void)m_engine->newQObject(QCoreApplication::instance());
}
}
@@ -200,50 +333,145 @@ static QScriptValue testFunction(QScriptContext *, QScriptEngine *)
void tst_QScriptEngine::newFunction()
{
- QScriptEngine engine;
+ newEngine();
+ QBENCHMARK {
+ (void)m_engine->newFunction(testFunction);
+ }
+}
+
+void tst_QScriptEngine::newRegExp()
+{
+ newEngine();
+ QRegExp re = QRegExp("foo");
+ QBENCHMARK {
+ m_engine->newRegExp(re);
+ }
+}
+
+void tst_QScriptEngine::newRegExpFromString()
+{
+ newEngine();
+ QString pattern("foo");
+ QString flags("gim");
QBENCHMARK {
- (void)engine.newFunction(testFunction);
+ m_engine->newRegExp(pattern, flags);
}
}
void tst_QScriptEngine::newVariant()
{
- QScriptEngine engine;
+ newEngine();
QVariant var(123);
QBENCHMARK {
- (void)engine.newVariant(var);
+ (void)m_engine->newVariant(var);
+ }
+}
+
+void tst_QScriptEngine::nullValue()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->nullValue();
+ }
+}
+
+void tst_QScriptEngine::undefinedValue()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->undefinedValue();
}
}
void tst_QScriptEngine::collectGarbage()
{
- QScriptEngine engine;
+ newEngine();
+ QBENCHMARK {
+ m_engine->collectGarbage();
+ }
+}
+
+void tst_QScriptEngine::availableExtensions()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->availableExtensions();
+ }
+}
+
+void tst_QScriptEngine::importedExtensions()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->importedExtensions();
+ }
+}
+
+void tst_QScriptEngine::currentContext()
+{
+ newEngine();
QBENCHMARK {
- engine.collectGarbage();
+ m_engine->currentContext();
}
}
void tst_QScriptEngine::pushAndPopContext()
{
- QScriptEngine engine;
+ newEngine();
QBENCHMARK {
- (void)engine.pushContext();
- engine.popContext();
+ (void)m_engine->pushContext();
+ m_engine->popContext();
+ }
+}
+
+void tst_QScriptEngine::toObject_data()
+{
+ newEngine();
+ QTest::addColumn<QScriptValue>("val");
+ QTest::newRow("bool") << m_engine->evaluate("true");
+ QTest::newRow("number") << m_engine->evaluate("123");
+ QTest::newRow("string") << m_engine->evaluate("'ciao'");
+ QTest::newRow("null") << m_engine->evaluate("null");
+ QTest::newRow("undefined") << m_engine->evaluate("undefined");
+ QTest::newRow("object") << m_engine->evaluate("({foo:123})");
+ QTest::newRow("array") << m_engine->evaluate("[10,20,30]");
+ QTest::newRow("function") << m_engine->evaluate("(function foo(a, b, c) { return a + b + c; })");
+ QTest::newRow("date") << m_engine->evaluate("new Date");
+ QTest::newRow("regexp") << m_engine->evaluate("new RegExp('foo')");
+ QTest::newRow("error") << m_engine->evaluate("new Error");
+
+ QTest::newRow("qobject") << m_engine->newQObject(this);
+ QTest::newRow("qmetaobject") << m_engine->newQMetaObject(&QScriptEngine::staticMetaObject);
+ QTest::newRow("variant") << m_engine->newVariant(123);
+ QTest::newRow("qscriptclassobject") << m_engine->newObject(new QScriptClass(m_engine));
+
+ QTest::newRow("invalid") << QScriptValue();
+ QTest::newRow("bool-no-engine") << QScriptValue(true);
+ QTest::newRow("number-no-engine") << QScriptValue(123.0);
+ QTest::newRow("string-no-engine") << QScriptValue(QString::fromLatin1("hello"));
+ QTest::newRow("null-no-engine") << QScriptValue(QScriptValue::NullValue);
+ QTest::newRow("undefined-no-engine") << QScriptValue(QScriptValue::UndefinedValue);
+}
+
+void tst_QScriptEngine::toObject()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ m_engine->toObject(val);
}
}
void tst_QScriptEngine::toStringHandle()
{
- QScriptEngine engine;
+ newEngine();
QString str = QString::fromLatin1("foobarbaz");
QBENCHMARK {
- (void)engine.toStringHandle(str);
+ (void)m_engine->toStringHandle(str);
}
}
void tst_QScriptEngine::castValueToQreal()
{
- QScriptEngine engine;
QScriptValue val(123);
QBENCHMARK {
(void)qscriptvalue_cast<qreal>(val);
@@ -257,19 +485,27 @@ static QScriptValue native_function(QScriptContext *, QScriptEngine *)
void tst_QScriptEngine::nativeCall()
{
- QScriptEngine eng;
- eng.globalObject().setProperty("fun", eng.newFunction(native_function));
+ newEngine();
+ m_engine->globalObject().setProperty("fun", m_engine->newFunction(native_function));
QBENCHMARK{
#if !defined(Q_OS_SYMBIAN)
- eng.evaluate("var w = 0; for (i = 0; i < 100000; ++i) {\n"
+ m_engine->evaluate("var w = 0; for (i = 0; i < 100000; ++i) {\n"
" w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
#else
- eng.evaluate("var w = 0; for (i = 0; i < 25000; ++i) {\n"
+ m_engine->evaluate("var w = 0; for (i = 0; i < 25000; ++i) {\n"
" w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
#endif
}
}
+void tst_QScriptEngine::installTranslatorFunctions()
+{
+ newEngine();
+ QBENCHMARK {
+ m_engine->installTranslatorFunctions();
+ }
+}
+
void tst_QScriptEngine::translation_data()
{
QTest::addColumn<QString>("text");
@@ -284,11 +520,11 @@ void tst_QScriptEngine::translation()
{
QFETCH(QString, text);
QFETCH(QString, fileName);
- QScriptEngine engine;
- engine.installTranslatorFunctions();
+ newEngine();
+ m_engine->installTranslatorFunctions();
QBENCHMARK {
- (void)engine.evaluate(text, fileName);
+ (void)m_engine->evaluate(text, fileName);
}
}
@@ -307,33 +543,33 @@ void tst_QScriptEngine::readScopeProperty()
QFETCH(bool, staticScope);
QFETCH(bool, nestedScope);
- QScriptEngine engine;
- QScriptContext *ctx = engine.pushContext();
+ newEngine();
+ QScriptContext *ctx = m_engine->pushContext();
QScriptValue scope;
if (staticScope)
- scope = QScriptDeclarativeClass::newStaticScopeObject(&engine);
+ scope = QScriptDeclarativeClass::newStaticScopeObject(m_engine);
else
- scope = engine.newObject();
+ scope = m_engine->newObject();
scope.setProperty("foo", 123);
ctx->pushScope(scope);
if (nestedScope) {
QScriptValue scope2;
if (staticScope)
- scope2 = QScriptDeclarativeClass::newStaticScopeObject(&engine);
+ scope2 = QScriptDeclarativeClass::newStaticScopeObject(m_engine);
else
- scope2 = engine.newObject();
+ scope2 = m_engine->newObject();
scope2.setProperty("bar", 456); // ensure a miss in inner scope
ctx->pushScope(scope2);
}
- QScriptValue fun = engine.evaluate("(function() {\n"
+ QScriptValue fun = m_engine->evaluate("(function() {\n"
" for (var i = 0; i < 10000; ++i) {\n"
" foo; foo; foo; foo; foo; foo; foo; foo;\n"
" }\n"
"})");
- engine.popContext();
+ m_engine->popContext();
QVERIFY(fun.isFunction());
QBENCHMARK {
fun.call();
diff --git a/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp b/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp
index e68db066fa..62f3c2a3ff 100644
--- a/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp
+++ b/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp
@@ -309,6 +309,9 @@ private slots:
void qobjectSignalHandler();
void customTypeSignalHandler();
+ void emitSignal_data();
+ void emitSignal();
+
void readButtonMetaProperty_data();
void readButtonMetaProperty();
@@ -948,6 +951,31 @@ void tst_QScriptQObject::customTypeSignalHandler()
}
}
+void tst_QScriptQObject::emitSignal_data()
+{
+ QTest::addColumn<QString>("propertyName");
+ QTest::addColumn<QString>("arguments");
+
+ QTest::newRow("voidSignal()") << "voidSignal" << "";
+
+ QTest::newRow("boolSignal(true)") << "boolSignal" << "true";
+ QTest::newRow("intSignal(123)") << "intSignal" << "123";
+ QTest::newRow("doubleSignal(123)") << "doubleSignal" << "123";
+ QTest::newRow("stringSignal('hello')") << "stringSignal" << "'hello'";
+ QTest::newRow("variantSignal(123)") << "variantSignal" << "123";
+ QTest::newRow("qobjectSignal(this)") << "qobjectSignal" << "this"; // assumes 'this' is a QObject
+}
+
+void tst_QScriptQObject::emitSignal()
+{
+ QFETCH(QString, propertyName);
+ QFETCH(QString, arguments);
+
+ QScriptEngine engine;
+ SignalTestObject testObject;
+ callMethodHelper(engine, &testObject, propertyName, arguments);
+}
+
void tst_QScriptQObject::readButtonMetaProperty_data()
{
readMetaProperty_dataHelper(&QPushButton::staticMetaObject);
diff --git a/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp b/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
index d7bb04bb10..d90edbc4b6 100644
--- a/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
+++ b/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
@@ -42,6 +42,8 @@
#include <qtest.h>
#include <QtScript>
+Q_DECLARE_METATYPE(QScriptValue)
+
//TESTED_FILES=
class tst_QScriptValue : public QObject
@@ -57,28 +59,133 @@ public slots:
void cleanup();
private slots:
+ void boolConstructor();
+ void floatConstructor();
void numberConstructor();
void stringConstructor();
+ void nullConstructor();
+ void undefinedConstructor();
+ void boolConstructorWithEngine();
+ void floatConstructorWithEngine();
+ void intConstructorWithEngine();
+ void stringConstructorWithEngine();
+ void nullConstructorWithEngine();
+ void undefinedConstructorWithEngine();
+ void copyConstructor_data();
+ void copyConstructor();
void call_data();
void call();
void construct_data();
void construct();
+ void data();
+ void setData();
+ void data_noData_data();
+ void data_noData();
+ void engine_data();
+ void engine();
+ void equalsSelf_data();
+ void equalsSelf();
+ void lessThanSelf_data();
+ void lessThanSelf();
+ void strictlyEqualsSelf_data();
+ void strictlyEqualsSelf();
+ void instanceOf();
+ void isArray_data();
+ void isArray();
+ void isBool_data();
+ void isBool();
+ void isDate_data();
+ void isDate();
+ void isError_data();
+ void isError();
+ void isFunction_data();
+ void isFunction();
+ void isNull_data();
+ void isNull();
+ void isNumber_data();
+ void isNumber();
+ void isObject_data();
+ void isObject();
+ void isQMetaObject_data();
+ void isQMetaObject();
+ void isQObject_data();
+ void isQObject();
+ void isRegExp_data();
+ void isRegExp();
+ void isString_data();
+ void isString();
+ void isUndefined_data();
+ void isUndefined();
+ void isValid_data();
+ void isValid();
+ void isVariant_data();
+ void isVariant();
+ void toBool_data();
+ void toBool();
+ void toDateTime_data();
+ void toDateTime();
+ void toInt32_data();
+ void toInt32();
+ void toInteger_data();
+ void toInteger();
+ void toNumber_data();
+ void toNumber();
+ void toRegExp_data();
+ void toRegExp();
void toString_data();
void toString();
+ void toUInt16_data();
+ void toUInt16();
+ void toUInt32_data();
+ void toUInt32();
+ void toQMetaObject_data();
+ void toQMetaObject();
+ void toQObject_data();
void toQObject();
+ void toVariant_data();
+ void toVariant();
+ void property_data();
void property();
+ void propertyById_data();
+ void propertyById();
+ void propertyByIndex();
+ void setProperty_data();
void setProperty();
+ void setPropertyById_data();
+ void setPropertyById();
+ void setPropertyByIndex();
+ void propertyFlags_data();
void propertyFlags();
+ void propertyFlagsById_data();
+ void propertyFlagsById();
+ void prototype_data();
+ void prototype();
+ void setPrototype();
+ void scriptClass_data();
+ void scriptClass();
+ void setScriptClass();
void readMetaProperty();
void writeMetaProperty();
+
+private:
+ void defineStandardTestValues();
+ void newEngine()
+ {
+ delete m_engine;
+ m_engine = new QScriptEngine;
+ }
+
+ QScriptEngine *m_engine;
};
tst_QScriptValue::tst_QScriptValue()
+ : m_engine(0)
{
}
tst_QScriptValue::~tst_QScriptValue()
{
+ delete m_engine;
}
void tst_QScriptValue::init()
@@ -89,6 +196,20 @@ void tst_QScriptValue::cleanup()
{
}
+void tst_QScriptValue::boolConstructor()
+{
+ QBENCHMARK {
+ QScriptValue val(true);
+ }
+}
+
+void tst_QScriptValue::floatConstructor()
+{
+ QBENCHMARK {
+ QScriptValue val(123.0);
+ }
+}
+
void tst_QScriptValue::numberConstructor()
{
QBENCHMARK {
@@ -104,8 +225,85 @@ void tst_QScriptValue::stringConstructor()
}
}
+void tst_QScriptValue::nullConstructor()
+{
+ QBENCHMARK {
+ QScriptValue val(QScriptValue::NullValue);
+ }
+}
+
+void tst_QScriptValue::undefinedConstructor()
+{
+ QBENCHMARK {
+ QScriptValue val(QScriptValue::UndefinedValue);
+ }
+}
+
+void tst_QScriptValue::boolConstructorWithEngine()
+{
+ newEngine();
+ QBENCHMARK {
+ QScriptValue val(m_engine, true);
+ }
+}
+
+void tst_QScriptValue::floatConstructorWithEngine()
+{
+ newEngine();
+ QBENCHMARK {
+ QScriptValue val(m_engine, 123.0);
+ }
+}
+
+void tst_QScriptValue::intConstructorWithEngine()
+{
+ newEngine();
+ QBENCHMARK {
+ (void)QScriptValue(m_engine, 123);
+ }
+}
+
+void tst_QScriptValue::stringConstructorWithEngine()
+{
+ newEngine();
+ QString str = QString::fromLatin1("ciao");
+ QBENCHMARK {
+ (void)QScriptValue(m_engine, str);
+ }
+}
+
+void tst_QScriptValue::nullConstructorWithEngine()
+{
+ newEngine();
+ QBENCHMARK {
+ QScriptValue val(m_engine, QScriptValue::NullValue);
+ }
+}
+
+void tst_QScriptValue::undefinedConstructorWithEngine()
+{
+ newEngine();
+ QBENCHMARK {
+ QScriptValue val(m_engine, QScriptValue::UndefinedValue);
+ }
+}
+
+void tst_QScriptValue::copyConstructor_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::copyConstructor()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ QScriptValue copy(val);
+ }
+}
+
void tst_QScriptValue::call_data()
{
+ newEngine();
QTest::addColumn<QString>("code");
QTest::newRow("empty function") << QString::fromLatin1("(function(){})");
QTest::newRow("function returning number") << QString::fromLatin1("(function(){ return 123; })");
@@ -115,8 +313,7 @@ void tst_QScriptValue::call_data()
void tst_QScriptValue::call()
{
QFETCH(QString, code);
- QScriptEngine engine;
- QScriptValue fun = engine.evaluate(code);
+ QScriptValue fun = m_engine->evaluate(code);
QVERIFY(fun.isFunction());
QBENCHMARK {
(void)fun.call();
@@ -125,6 +322,7 @@ void tst_QScriptValue::call()
void tst_QScriptValue::construct_data()
{
+ newEngine();
QTest::addColumn<QString>("code");
QTest::newRow("empty function") << QString::fromLatin1("(function(){})");
QTest::newRow("simple constructor") << QString::fromLatin1("(function(){ this.x = 10; this.y = 20; })");
@@ -133,81 +331,646 @@ void tst_QScriptValue::construct_data()
void tst_QScriptValue::construct()
{
QFETCH(QString, code);
- QScriptEngine engine;
- QScriptValue fun = engine.evaluate(code);
+ QScriptValue fun = m_engine->evaluate(code);
QVERIFY(fun.isFunction());
QBENCHMARK {
(void)fun.construct();
}
}
+void tst_QScriptValue::data()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ obj.setData(QScriptValue(m_engine, 123));
+ QBENCHMARK {
+ obj.data();
+ }
+}
+
+void tst_QScriptValue::setData()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptValue val(m_engine, 123);
+ QBENCHMARK {
+ obj.setData(val);
+ }
+}
+
+void tst_QScriptValue::data_noData_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::data_noData()
+{
+ QFETCH(QScriptValue, val);
+ QVERIFY(!val.data().isValid());
+ QBENCHMARK {
+ val.data();
+ }
+}
+
+void tst_QScriptValue::engine_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::engine()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.engine();
+ }
+}
+
+void tst_QScriptValue::equalsSelf_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::equalsSelf()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.equals(val);
+ }
+}
+
+void tst_QScriptValue::lessThanSelf_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::lessThanSelf()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.lessThan(val);
+ }
+}
+
+void tst_QScriptValue::strictlyEqualsSelf_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::strictlyEqualsSelf()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.strictlyEquals(val);
+ }
+}
+
+void tst_QScriptValue::instanceOf()
+{
+ newEngine();
+ QScriptValue arrayCtor = m_engine->globalObject().property("Array");
+ QScriptValue array = arrayCtor.construct();
+ QVERIFY(array.instanceOf(arrayCtor));
+ QBENCHMARK {
+ array.instanceOf(arrayCtor);
+ }
+}
+
+void tst_QScriptValue::isArray_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isArray()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isArray();
+ }
+}
+
+void tst_QScriptValue::isBool_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isBool()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isBool();
+ }
+}
+
+void tst_QScriptValue::isDate_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isDate()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isDate();
+ }
+}
+
+void tst_QScriptValue::isError_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isError()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isError();
+ }
+}
+
+void tst_QScriptValue::isFunction_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isFunction()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isFunction();
+ }
+}
+
+void tst_QScriptValue::isNull_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isNull()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isNull();
+ }
+}
+
+void tst_QScriptValue::isNumber_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isNumber()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isNumber();
+ }
+}
+
+void tst_QScriptValue::isObject_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isObject()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isObject();
+ }
+}
+
+void tst_QScriptValue::isQMetaObject_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isQMetaObject()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isQMetaObject();
+ }
+}
+
+void tst_QScriptValue::isQObject_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isQObject()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isQObject();
+ }
+}
+
+void tst_QScriptValue::isRegExp_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isRegExp()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isRegExp();
+ }
+}
+
+void tst_QScriptValue::isString_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isString()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isString();
+ }
+}
+
+void tst_QScriptValue::isUndefined_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isUndefined()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isUndefined();
+ }
+}
+
+void tst_QScriptValue::isValid_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isValid()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isValid();
+ }
+}
+
+void tst_QScriptValue::isVariant_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::isVariant()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.isVariant();
+ }
+}
+
+void tst_QScriptValue::toBool_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toBool()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toBool();
+ }
+}
+
+void tst_QScriptValue::toDateTime_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toDateTime()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toDateTime();
+ }
+}
+
+void tst_QScriptValue::toInt32_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toInt32()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toInt32();
+ }
+}
+
+void tst_QScriptValue::toInteger_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toInteger()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toInteger();
+ }
+}
+
+void tst_QScriptValue::toNumber_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toNumber()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toNumber();
+ }
+}
+
+void tst_QScriptValue::toRegExp_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toRegExp()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toRegExp();
+ }
+}
+
void tst_QScriptValue::toString_data()
{
- QTest::addColumn<QString>("code");
- QTest::newRow("number") << QString::fromLatin1("123");
- QTest::newRow("string") << QString::fromLatin1("'ciao'");
- QTest::newRow("null") << QString::fromLatin1("null");
- QTest::newRow("undefined") << QString::fromLatin1("undefined");
- QTest::newRow("function") << QString::fromLatin1("(function foo(a, b, c) { return a + b + c; })");
+ defineStandardTestValues();
}
void tst_QScriptValue::toString()
{
- QFETCH(QString, code);
- QScriptEngine engine;
- QScriptValue val = engine.evaluate(code);
+ QFETCH(QScriptValue, val);
QBENCHMARK {
(void)val.toString();
}
}
+void tst_QScriptValue::toQMetaObject_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toQMetaObject()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toQMetaObject();
+ }
+}
+
+void tst_QScriptValue::toQObject_data()
+{
+ defineStandardTestValues();
+}
+
void tst_QScriptValue::toQObject()
{
- QScriptEngine engine;
- QScriptValue obj = engine.newQObject(QCoreApplication::instance());
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ (void)val.toQObject();
+ }
+}
+
+void tst_QScriptValue::toUInt16_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toUInt16()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toUInt16();
+ }
+}
+
+void tst_QScriptValue::toUInt32_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toUInt32()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.toUInt32();
+ }
+}
+
+void tst_QScriptValue::toVariant_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::toVariant()
+{
+ QFETCH(QScriptValue, val);
QBENCHMARK {
- (void)obj.toQObject();
+ val.toVariant();
}
}
+void tst_QScriptValue::property_data()
+{
+ QTest::addColumn<QString>("propertyName");
+ QTest::addColumn<bool>("create");
+ QTest::newRow("foo") << QString::fromLatin1("foo") << true;
+ QTest::newRow("hasOwnProperty") << QString::fromLatin1("hasOwnProperty") << false; // From Object.prototype.
+ QTest::newRow("noSuchProperty") << QString::fromLatin1("noSuchProperty") << false;
+}
void tst_QScriptValue::property()
{
- QScriptEngine engine;
- QScriptValue obj = engine.newObject();
- QString propertyName = QString::fromLatin1("foo");
- obj.setProperty(propertyName, 123);
+ QFETCH(QString, propertyName);
+ QFETCH(bool, create);
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ if (create)
+ obj.setProperty(propertyName, 123);
QBENCHMARK {
(void)obj.property(propertyName);
}
}
+void tst_QScriptValue::propertyById_data()
+{
+ property_data();
+}
+
+void tst_QScriptValue::propertyById()
+{
+ QFETCH(QString, propertyName);
+ QFETCH(bool, create);
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptString id = m_engine->toStringHandle(propertyName);
+ if (create)
+ obj.setProperty(id, 123);
+ QBENCHMARK {
+ obj.property(id);
+ }
+}
+
+void tst_QScriptValue::propertyByIndex()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ obj.setProperty(123, 456);
+ QBENCHMARK {
+ obj.property(123);
+ }
+}
+
+void tst_QScriptValue::setProperty_data()
+{
+ newEngine();
+ QTest::addColumn<QString>("propertyName");
+ QTest::addColumn<QScriptValue>("val");
+ QTest::newRow("foo") << QString::fromLatin1("foo") << QScriptValue(123);
+ QTest::newRow("bar") << QString::fromLatin1("bar") << QScriptValue(m_engine, 123);
+ QTest::newRow("baz") << QString::fromLatin1("baz") << QScriptValue();
+ QTest::newRow("toString") << QString::fromLatin1("toString") << QScriptValue(m_engine, true);
+}
+
void tst_QScriptValue::setProperty()
{
- QScriptEngine engine;
- QScriptValue obj = engine.newObject();
- QString propertyName = QString::fromLatin1("foo");
- QScriptValue val(123);
+ QFETCH(QString, propertyName);
+ QFETCH(QScriptValue, val);
+ QScriptValue obj = m_engine->newObject();
QBENCHMARK {
obj.setProperty(propertyName, val);
}
}
+void tst_QScriptValue::setPropertyById_data()
+{
+ setProperty_data();
+}
+
+void tst_QScriptValue::setPropertyById()
+{
+ QFETCH(QString, propertyName);
+ QFETCH(QScriptValue, val);
+ QScriptValue obj = m_engine->newObject();
+ QScriptString id = m_engine->toStringHandle(propertyName);
+ QBENCHMARK {
+ obj.setProperty(id, val);
+ }
+}
+
+void tst_QScriptValue::setPropertyByIndex()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptValue val(456);
+ QBENCHMARK {
+ obj.setProperty(123, 456);
+ }
+}
+
+void tst_QScriptValue::propertyFlags_data()
+{
+ property_data();
+}
+
void tst_QScriptValue::propertyFlags()
{
- QScriptEngine engine;
- QScriptValue obj = engine.newObject();
- QString propertyName = QString::fromLatin1("foo");
- obj.setProperty(propertyName, 123, QScriptValue::SkipInEnumeration | QScriptValue::ReadOnly);
+ QFETCH(QString, propertyName);
+ QFETCH(bool, create);
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ if (create)
+ obj.setProperty(propertyName, 123, QScriptValue::SkipInEnumeration | QScriptValue::ReadOnly);
QBENCHMARK {
(void)obj.propertyFlags(propertyName);
}
}
+void tst_QScriptValue::propertyFlagsById_data()
+{
+ propertyFlags_data();
+}
+
+void tst_QScriptValue::propertyFlagsById()
+{
+ QFETCH(QString, propertyName);
+ QFETCH(bool, create);
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptString id = m_engine->toStringHandle(propertyName);
+ if (create)
+ obj.setProperty(id, 123, QScriptValue::SkipInEnumeration | QScriptValue::ReadOnly);
+ QBENCHMARK {
+ obj.propertyFlags(id);
+ }
+}
+
+void tst_QScriptValue::prototype_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::prototype()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.prototype();
+ }
+}
+
+void tst_QScriptValue::setPrototype()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptValue proto = m_engine->newObject();
+ QBENCHMARK {
+ obj.setPrototype(proto);
+ }
+}
+
+void tst_QScriptValue::scriptClass_data()
+{
+ defineStandardTestValues();
+}
+
+void tst_QScriptValue::scriptClass()
+{
+ QFETCH(QScriptValue, val);
+ QBENCHMARK {
+ val.scriptClass();
+ }
+}
+
+void tst_QScriptValue::setScriptClass()
+{
+ newEngine();
+ QScriptValue obj = m_engine->newObject();
+ QScriptClass cls(m_engine);
+ QBENCHMARK {
+ obj.setScriptClass(&cls);
+ }
+}
+
void tst_QScriptValue::readMetaProperty()
{
- QScriptEngine engine;
- QScriptValue object = engine.newQObject(QCoreApplication::instance());
- QScriptString propertyName = engine.toStringHandle("objectName");
+ newEngine();
+ QScriptValue object = m_engine->newQObject(QCoreApplication::instance());
+ QScriptString propertyName = m_engine->toStringHandle("objectName");
QBENCHMARK {
for (int i = 0; i < 10000; ++i)
object.property(propertyName);
@@ -216,15 +979,44 @@ void tst_QScriptValue::readMetaProperty()
void tst_QScriptValue::writeMetaProperty()
{
- QScriptEngine engine;
- QScriptValue object = engine.newQObject(QCoreApplication::instance());
- QScriptString propertyName = engine.toStringHandle("objectName");
- QScriptValue value(&engine, "foo");
+ newEngine();
+ QScriptValue object = m_engine->newQObject(QCoreApplication::instance());
+ QScriptString propertyName = m_engine->toStringHandle("objectName");
+ QScriptValue value(m_engine, "foo");
QBENCHMARK {
for (int i = 0; i < 10000; ++i)
object.setProperty(propertyName, value);
}
}
+void tst_QScriptValue::defineStandardTestValues()
+{
+ newEngine();
+ QTest::addColumn<QScriptValue>("val");
+ QTest::newRow("bool") << m_engine->evaluate("true");
+ QTest::newRow("number") << m_engine->evaluate("123");
+ QTest::newRow("string") << m_engine->evaluate("'ciao'");
+ QTest::newRow("null") << m_engine->evaluate("null");
+ QTest::newRow("undefined") << m_engine->evaluate("undefined");
+ QTest::newRow("object") << m_engine->evaluate("({foo:123})");
+ QTest::newRow("array") << m_engine->evaluate("[10,20,30]");
+ QTest::newRow("function") << m_engine->evaluate("(function foo(a, b, c) { return a + b + c; })");
+ QTest::newRow("date") << m_engine->evaluate("new Date");
+ QTest::newRow("regexp") << m_engine->evaluate("new RegExp('foo')");
+ QTest::newRow("error") << m_engine->evaluate("new Error");
+
+ QTest::newRow("qobject") << m_engine->newQObject(this);
+ QTest::newRow("qmetaobject") << m_engine->newQMetaObject(&QScriptEngine::staticMetaObject);
+ QTest::newRow("variant") << m_engine->newVariant(123);
+ QTest::newRow("qscriptclassobject") << m_engine->newObject(new QScriptClass(m_engine));
+
+ QTest::newRow("invalid") << QScriptValue();
+ QTest::newRow("bool-no-engine") << QScriptValue(true);
+ QTest::newRow("number-no-engine") << QScriptValue(123.0);
+ QTest::newRow("string-no-engine") << QScriptValue(QString::fromLatin1("hello"));
+ QTest::newRow("null-no-engine") << QScriptValue(QScriptValue::NullValue);
+ QTest::newRow("undefined-no-engine") << QScriptValue(QScriptValue::UndefinedValue);
+}
+
QTEST_MAIN(tst_QScriptValue)
#include "tst_qscriptvalue.moc"
diff --git a/tests/benchmarks/script/script.pro b/tests/benchmarks/script/script.pro
index 8d689b618f..dd17012700 100644
--- a/tests/benchmarks/script/script.pro
+++ b/tests/benchmarks/script/script.pro
@@ -2,4 +2,13 @@ TEMPLATE = subdirs
SUBDIRS = \
qscriptclass \
qscriptengine \
- qscriptvalue
+ qscriptvalue \
+ sunspider \
+ v8
+
+TRUSTED_BENCHMARKS += \
+ qscriptclass \
+ qscriptvalue \
+ qscriptengine
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/script/sunspider/sunspider.pro b/tests/benchmarks/script/sunspider/sunspider.pro
new file mode 100644
index 0000000000..431505b2e4
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/sunspider.pro
@@ -0,0 +1,20 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_bench_sunspider
+
+SOURCES += tst_sunspider.cpp
+
+QT = core script
+
+!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
+
+wince*|symbian: {
+testFiles.sources = tests
+testFiles.path = .
+DEPLOYMENT += testFiles
+}
+
+symbian* {
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 // Min 128kB, Max 32MB
+ TARGET.EPOCSTACKSIZE = 0x14000
+}
diff --git a/tests/benchmarks/script/sunspider/tests/3d-cube.js b/tests/benchmarks/script/sunspider/tests/3d-cube.js
new file mode 100644
index 0000000000..e2cd6f9a5f
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/3d-cube.js
@@ -0,0 +1,337 @@
+// 3D Cube Rotation
+// http://www.speich.net/computer/moztesting/3d.htm
+// Created by Simon Speich
+
+var Q = new Array();
+var MTrans = new Array(); // transformation matrix
+var MQube = new Array(); // position information of qube
+var I = new Array(); // entity matrix
+var Origin = new Object();
+var Testing = new Object();
+var LoopTimer;
+
+var DisplArea = new Object();
+DisplArea.Width = 300;
+DisplArea.Height = 300;
+
+function DrawLine(From, To) {
+ var x1 = From.V[0];
+ var x2 = To.V[0];
+ var y1 = From.V[1];
+ var y2 = To.V[1];
+ var dx = Math.abs(x2 - x1);
+ var dy = Math.abs(y2 - y1);
+ var x = x1;
+ var y = y1;
+ var IncX1, IncY1;
+ var IncX2, IncY2;
+ var Den;
+ var Num;
+ var NumAdd;
+ var NumPix;
+
+ if (x2 >= x1) { IncX1 = 1; IncX2 = 1; }
+ else { IncX1 = -1; IncX2 = -1; }
+ if (y2 >= y1) { IncY1 = 1; IncY2 = 1; }
+ else { IncY1 = -1; IncY2 = -1; }
+ if (dx >= dy) {
+ IncX1 = 0;
+ IncY2 = 0;
+ Den = dx;
+ Num = dx / 2;
+ NumAdd = dy;
+ NumPix = dx;
+ }
+ else {
+ IncX2 = 0;
+ IncY1 = 0;
+ Den = dy;
+ Num = dy / 2;
+ NumAdd = dx;
+ NumPix = dy;
+ }
+
+ NumPix = Math.round(Q.LastPx + NumPix);
+
+ var i = Q.LastPx;
+ for (; i < NumPix; i++) {
+ Num += NumAdd;
+ if (Num >= Den) {
+ Num -= Den;
+ x += IncX1;
+ y += IncY1;
+ }
+ x += IncX2;
+ y += IncY2;
+ }
+ Q.LastPx = NumPix;
+}
+
+function CalcCross(V0, V1) {
+ var Cross = new Array();
+ Cross[0] = V0[1]*V1[2] - V0[2]*V1[1];
+ Cross[1] = V0[2]*V1[0] - V0[0]*V1[2];
+ Cross[2] = V0[0]*V1[1] - V0[1]*V1[0];
+ return Cross;
+}
+
+function CalcNormal(V0, V1, V2) {
+ var A = new Array(); var B = new Array();
+ for (var i = 0; i < 3; i++) {
+ A[i] = V0[i] - V1[i];
+ B[i] = V2[i] - V1[i];
+ }
+ A = CalcCross(A, B);
+ var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
+ for (var i = 0; i < 3; i++) A[i] = A[i] / Length;
+ A[3] = 1;
+ return A;
+}
+
+function CreateP(X,Y,Z) {
+ this.V = [X,Y,Z,1];
+}
+
+// multiplies two matrices
+function MMulti(M1, M2) {
+ var M = [[],[],[],[]];
+ var i = 0;
+ var j = 0;
+ for (; i < 4; i++) {
+ j = 0;
+ for (; j < 4; j++) M[i][j] = M1[i][0] * M2[0][j] + M1[i][1] * M2[1][j] + M1[i][2] * M2[2][j] + M1[i][3] * M2[3][j];
+ }
+ return M;
+}
+
+//multiplies matrix with vector
+function VMulti(M, V) {
+ var Vect = new Array();
+ var i = 0;
+ for (;i < 4; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2] + M[i][3] * V[3];
+ return Vect;
+}
+
+function VMulti2(M, V) {
+ var Vect = new Array();
+ var i = 0;
+ for (;i < 3; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2];
+ return Vect;
+}
+
+// add to matrices
+function MAdd(M1, M2) {
+ var M = [[],[],[],[]];
+ var i = 0;
+ var j = 0;
+ for (; i < 4; i++) {
+ j = 0;
+ for (; j < 4; j++) M[i][j] = M1[i][j] + M2[i][j];
+ }
+ return M;
+}
+
+function Translate(M, Dx, Dy, Dz) {
+ var T = [
+ [1,0,0,Dx],
+ [0,1,0,Dy],
+ [0,0,1,Dz],
+ [0,0,0,1]
+ ];
+ return MMulti(T, M);
+}
+
+function RotateX(M, Phi) {
+ var a = Phi;
+ a *= Math.PI / 180;
+ var Cos = Math.cos(a);
+ var Sin = Math.sin(a);
+ var R = [
+ [1,0,0,0],
+ [0,Cos,-Sin,0],
+ [0,Sin,Cos,0],
+ [0,0,0,1]
+ ];
+ return MMulti(R, M);
+}
+
+function RotateY(M, Phi) {
+ var a = Phi;
+ a *= Math.PI / 180;
+ var Cos = Math.cos(a);
+ var Sin = Math.sin(a);
+ var R = [
+ [Cos,0,Sin,0],
+ [0,1,0,0],
+ [-Sin,0,Cos,0],
+ [0,0,0,1]
+ ];
+ return MMulti(R, M);
+}
+
+function RotateZ(M, Phi) {
+ var a = Phi;
+ a *= Math.PI / 180;
+ var Cos = Math.cos(a);
+ var Sin = Math.sin(a);
+ var R = [
+ [Cos,-Sin,0,0],
+ [Sin,Cos,0,0],
+ [0,0,1,0],
+ [0,0,0,1]
+ ];
+ return MMulti(R, M);
+}
+
+function DrawQube() {
+ // calc current normals
+ var CurN = new Array();
+ var i = 5;
+ Q.LastPx = 0;
+ for (; i > -1; i--) CurN[i] = VMulti2(MQube, Q.Normal[i]);
+ if (CurN[0][2] < 0) {
+ if (!Q.Line[0]) { DrawLine(Q[0], Q[1]); Q.Line[0] = true; };
+ if (!Q.Line[1]) { DrawLine(Q[1], Q[2]); Q.Line[1] = true; };
+ if (!Q.Line[2]) { DrawLine(Q[2], Q[3]); Q.Line[2] = true; };
+ if (!Q.Line[3]) { DrawLine(Q[3], Q[0]); Q.Line[3] = true; };
+ }
+ if (CurN[1][2] < 0) {
+ if (!Q.Line[2]) { DrawLine(Q[3], Q[2]); Q.Line[2] = true; };
+ if (!Q.Line[9]) { DrawLine(Q[2], Q[6]); Q.Line[9] = true; };
+ if (!Q.Line[6]) { DrawLine(Q[6], Q[7]); Q.Line[6] = true; };
+ if (!Q.Line[10]) { DrawLine(Q[7], Q[3]); Q.Line[10] = true; };
+ }
+ if (CurN[2][2] < 0) {
+ if (!Q.Line[4]) { DrawLine(Q[4], Q[5]); Q.Line[4] = true; };
+ if (!Q.Line[5]) { DrawLine(Q[5], Q[6]); Q.Line[5] = true; };
+ if (!Q.Line[6]) { DrawLine(Q[6], Q[7]); Q.Line[6] = true; };
+ if (!Q.Line[7]) { DrawLine(Q[7], Q[4]); Q.Line[7] = true; };
+ }
+ if (CurN[3][2] < 0) {
+ if (!Q.Line[4]) { DrawLine(Q[4], Q[5]); Q.Line[4] = true; };
+ if (!Q.Line[8]) { DrawLine(Q[5], Q[1]); Q.Line[8] = true; };
+ if (!Q.Line[0]) { DrawLine(Q[1], Q[0]); Q.Line[0] = true; };
+ if (!Q.Line[11]) { DrawLine(Q[0], Q[4]); Q.Line[11] = true; };
+ }
+ if (CurN[4][2] < 0) {
+ if (!Q.Line[11]) { DrawLine(Q[4], Q[0]); Q.Line[11] = true; };
+ if (!Q.Line[3]) { DrawLine(Q[0], Q[3]); Q.Line[3] = true; };
+ if (!Q.Line[10]) { DrawLine(Q[3], Q[7]); Q.Line[10] = true; };
+ if (!Q.Line[7]) { DrawLine(Q[7], Q[4]); Q.Line[7] = true; };
+ }
+ if (CurN[5][2] < 0) {
+ if (!Q.Line[8]) { DrawLine(Q[1], Q[5]); Q.Line[8] = true; };
+ if (!Q.Line[5]) { DrawLine(Q[5], Q[6]); Q.Line[5] = true; };
+ if (!Q.Line[9]) { DrawLine(Q[6], Q[2]); Q.Line[9] = true; };
+ if (!Q.Line[1]) { DrawLine(Q[2], Q[1]); Q.Line[1] = true; };
+ }
+ Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];
+ Q.LastPx = 0;
+}
+
+function Loop() {
+ if (Testing.LoopCount > Testing.LoopMax) return;
+ var TestingStr = String(Testing.LoopCount);
+ while (TestingStr.length < 3) TestingStr = "0" + TestingStr;
+ MTrans = Translate(I, -Q[8].V[0], -Q[8].V[1], -Q[8].V[2]);
+ MTrans = RotateX(MTrans, 1);
+ MTrans = RotateY(MTrans, 3);
+ MTrans = RotateZ(MTrans, 5);
+ MTrans = Translate(MTrans, Q[8].V[0], Q[8].V[1], Q[8].V[2]);
+ MQube = MMulti(MTrans, MQube);
+ var i = 8;
+ for (; i > -1; i--) {
+ Q[i].V = VMulti(MTrans, Q[i].V);
+ }
+ DrawQube();
+ Testing.LoopCount++;
+ Loop();
+}
+
+function Init(CubeSize) {
+ // init/reset vars
+ Origin.V = [150,150,20,1];
+ Testing.LoopCount = 0;
+ Testing.LoopMax = 50;
+ Testing.TimeMax = 0;
+ Testing.TimeAvg = 0;
+ Testing.TimeMin = 0;
+ Testing.TimeTemp = 0;
+ Testing.TimeTotal = 0;
+ Testing.Init = false;
+
+ // transformation matrix
+ MTrans = [
+ [1,0,0,0],
+ [0,1,0,0],
+ [0,0,1,0],
+ [0,0,0,1]
+ ];
+
+ // position information of qube
+ MQube = [
+ [1,0,0,0],
+ [0,1,0,0],
+ [0,0,1,0],
+ [0,0,0,1]
+ ];
+
+ // entity matrix
+ I = [
+ [1,0,0,0],
+ [0,1,0,0],
+ [0,0,1,0],
+ [0,0,0,1]
+ ];
+
+ // create qube
+ Q[0] = new CreateP(-CubeSize,-CubeSize, CubeSize);
+ Q[1] = new CreateP(-CubeSize, CubeSize, CubeSize);
+ Q[2] = new CreateP( CubeSize, CubeSize, CubeSize);
+ Q[3] = new CreateP( CubeSize,-CubeSize, CubeSize);
+ Q[4] = new CreateP(-CubeSize,-CubeSize,-CubeSize);
+ Q[5] = new CreateP(-CubeSize, CubeSize,-CubeSize);
+ Q[6] = new CreateP( CubeSize, CubeSize,-CubeSize);
+ Q[7] = new CreateP( CubeSize,-CubeSize,-CubeSize);
+
+ // center of gravity
+ Q[8] = new CreateP(0, 0, 0);
+
+ // anti-clockwise edge check
+ Q.Edge = [[0,1,2],[3,2,6],[7,6,5],[4,5,1],[4,0,3],[1,5,6]];
+
+ // calculate squad normals
+ Q.Normal = new Array();
+ for (var i = 0; i < Q.Edge.length; i++) Q.Normal[i] = CalcNormal(Q[Q.Edge[i][0]].V, Q[Q.Edge[i][1]].V, Q[Q.Edge[i][2]].V);
+
+ // line drawn ?
+ Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];
+
+ // create line pixels
+ Q.NumPx = 9 * 2 * CubeSize;
+ for (var i = 0; i < Q.NumPx; i++) CreateP(0,0,0);
+
+ MTrans = Translate(MTrans, Origin.V[0], Origin.V[1], Origin.V[2]);
+ MQube = MMulti(MTrans, MQube);
+
+ var i = 0;
+ for (; i < 9; i++) {
+ Q[i].V = VMulti(MTrans, Q[i].V);
+ }
+ DrawQube();
+ Testing.Init = true;
+ Loop();
+}
+
+for ( var i = 20; i <= 160; i *= 2 ) {
+ Init(i);
+}
+
+Q = null;
+MTrans = null;
+MQube = null;
+I = null;
+Origin = null;
+Testing = null;
+LoopTime = null;
+DisplArea = null;
diff --git a/tests/benchmarks/script/sunspider/tests/3d-morph.js b/tests/benchmarks/script/sunspider/tests/3d-morph.js
new file mode 100644
index 0000000000..d4238c080b
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/3d-morph.js
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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.
+ */
+
+var loops = 15
+var nx = 120
+var nz = 120
+
+function morph(a, f) {
+ var PI2nx = Math.PI * 8/nx
+ var sin = Math.sin
+ var f30 = -(50 * sin(f*Math.PI*2))
+
+ for (var i = 0; i < nz; ++i) {
+ for (var j = 0; j < nx; ++j) {
+ a[3*(i*nx+j)+1] = sin((j-1) * PI2nx ) * -f30
+ }
+ }
+}
+
+
+var a = Array()
+for (var i=0; i < nx*nz*3; ++i)
+ a[i] = 0
+
+for (var i = 0; i < loops; ++i) {
+ morph(a, i/loops)
+}
+
+testOutput = 0;
+for (var i = 0; i < nx; i++)
+ testOutput += a[3*(i*nx+i)+1];
+a = null;
diff --git a/tests/benchmarks/script/sunspider/tests/3d-raytrace.js b/tests/benchmarks/script/sunspider/tests/3d-raytrace.js
new file mode 100644
index 0000000000..e7b959e1ca
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/3d-raytrace.js
@@ -0,0 +1,441 @@
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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.
+ */
+
+function createVector(x,y,z) {
+ return new Array(x,y,z);
+}
+
+function sqrLengthVector(self) {
+ return self[0] * self[0] + self[1] * self[1] + self[2] * self[2];
+}
+
+function lengthVector(self) {
+ return Math.sqrt(self[0] * self[0] + self[1] * self[1] + self[2] * self[2]);
+}
+
+function addVector(self, v) {
+ self[0] += v[0];
+ self[1] += v[1];
+ self[2] += v[2];
+ return self;
+}
+
+function subVector(self, v) {
+ self[0] -= v[0];
+ self[1] -= v[1];
+ self[2] -= v[2];
+ return self;
+}
+
+function scaleVector(self, scale) {
+ self[0] *= scale;
+ self[1] *= scale;
+ self[2] *= scale;
+ return self;
+}
+
+function normaliseVector(self) {
+ var len = Math.sqrt(self[0] * self[0] + self[1] * self[1] + self[2] * self[2]);
+ self[0] /= len;
+ self[1] /= len;
+ self[2] /= len;
+ return self;
+}
+
+function add(v1, v2) {
+ return new Array(v1[0] + v2[0], v1[1] + v2[1], v1[2] + v2[2]);
+}
+
+function sub(v1, v2) {
+ return new Array(v1[0] - v2[0], v1[1] - v2[1], v1[2] - v2[2]);
+}
+
+function scalev(v1, v2) {
+ return new Array(v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2]);
+}
+
+function dot(v1, v2) {
+ return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
+}
+
+function scale(v, scale) {
+ return [v[0] * scale, v[1] * scale, v[2] * scale];
+}
+
+function cross(v1, v2) {
+ return [v1[1] * v2[2] - v1[2] * v2[1],
+ v1[2] * v2[0] - v1[0] * v2[2],
+ v1[0] * v2[1] - v1[1] * v2[0]];
+
+}
+
+function normalise(v) {
+ var len = lengthVector(v);
+ return [v[0] / len, v[1] / len, v[2] / len];
+}
+
+function transformMatrix(self, v) {
+ var vals = self;
+ var x = vals[0] * v[0] + vals[1] * v[1] + vals[2] * v[2] + vals[3];
+ var y = vals[4] * v[0] + vals[5] * v[1] + vals[6] * v[2] + vals[7];
+ var z = vals[8] * v[0] + vals[9] * v[1] + vals[10] * v[2] + vals[11];
+ return [x, y, z];
+}
+
+function invertMatrix(self) {
+ var temp = new Array(16);
+ var tx = -self[3];
+ var ty = -self[7];
+ var tz = -self[11];
+ for (h = 0; h < 3; h++)
+ for (v = 0; v < 3; v++)
+ temp[h + v * 4] = self[v + h * 4];
+ for (i = 0; i < 11; i++)
+ self[i] = temp[i];
+ self[3] = tx * self[0] + ty * self[1] + tz * self[2];
+ self[7] = tx * self[4] + ty * self[5] + tz * self[6];
+ self[11] = tx * self[8] + ty * self[9] + tz * self[10];
+ return self;
+}
+
+
+// Triangle intersection using barycentric coord method
+function Triangle(p1, p2, p3) {
+ var edge1 = sub(p3, p1);
+ var edge2 = sub(p2, p1);
+ var normal = cross(edge1, edge2);
+ if (Math.abs(normal[0]) > Math.abs(normal[1]))
+ if (Math.abs(normal[0]) > Math.abs(normal[2]))
+ this.axis = 0;
+ else
+ this.axis = 2;
+ else
+ if (Math.abs(normal[1]) > Math.abs(normal[2]))
+ this.axis = 1;
+ else
+ this.axis = 2;
+ var u = (this.axis + 1) % 3;
+ var v = (this.axis + 2) % 3;
+ var u1 = edge1[u];
+ var v1 = edge1[v];
+
+ var u2 = edge2[u];
+ var v2 = edge2[v];
+ this.normal = normalise(normal);
+ this.nu = normal[u] / normal[this.axis];
+ this.nv = normal[v] / normal[this.axis];
+ this.nd = dot(normal, p1) / normal[this.axis];
+ var det = u1 * v2 - v1 * u2;
+ this.eu = p1[u];
+ this.ev = p1[v];
+ this.nu1 = u1 / det;
+ this.nv1 = -v1 / det;
+ this.nu2 = v2 / det;
+ this.nv2 = -u2 / det;
+ this.material = [0.7, 0.7, 0.7];
+}
+
+Triangle.prototype.intersect = function(orig, dir, near, far) {
+ var u = (this.axis + 1) % 3;
+ var v = (this.axis + 2) % 3;
+ var d = dir[this.axis] + this.nu * dir[u] + this.nv * dir[v];
+ var t = (this.nd - orig[this.axis] - this.nu * orig[u] - this.nv * orig[v]) / d;
+ if (t < near || t > far)
+ return null;
+ var Pu = orig[u] + t * dir[u] - this.eu;
+ var Pv = orig[v] + t * dir[v] - this.ev;
+ var a2 = Pv * this.nu1 + Pu * this.nv1;
+ if (a2 < 0)
+ return null;
+ var a3 = Pu * this.nu2 + Pv * this.nv2;
+ if (a3 < 0)
+ return null;
+
+ if ((a2 + a3) > 1)
+ return null;
+ return t;
+}
+
+function Scene(a_triangles) {
+ this.triangles = a_triangles;
+ this.lights = [];
+ this.ambient = [0,0,0];
+ this.background = [0.8,0.8,1];
+}
+var zero = new Array(0,0,0);
+
+Scene.prototype.intersect = function(origin, dir, near, far) {
+ var closest = null;
+ for (i = 0; i < this.triangles.length; i++) {
+ var triangle = this.triangles[i];
+ var d = triangle.intersect(origin, dir, near, far);
+ if (d == null || d > far || d < near)
+ continue;
+ far = d;
+ closest = triangle;
+ }
+
+ if (!closest)
+ return [this.background[0],this.background[1],this.background[2]];
+
+ var normal = closest.normal;
+ var hit = add(origin, scale(dir, far));
+ if (dot(dir, normal) > 0)
+ normal = [-normal[0], -normal[1], -normal[2]];
+
+ var colour = null;
+ if (closest.shader) {
+ colour = closest.shader(closest, hit, dir);
+ } else {
+ colour = closest.material;
+ }
+
+ // do reflection
+ var reflected = null;
+ if (colour.reflection > 0.001) {
+ var reflection = addVector(scale(normal, -2*dot(dir, normal)), dir);
+ reflected = this.intersect(hit, reflection, 0.0001, 1000000);
+ if (colour.reflection >= 0.999999)
+ return reflected;
+ }
+
+ var l = [this.ambient[0], this.ambient[1], this.ambient[2]];
+ for (var i = 0; i < this.lights.length; i++) {
+ var light = this.lights[i];
+ var toLight = sub(light, hit);
+ var distance = lengthVector(toLight);
+ scaleVector(toLight, 1.0/distance);
+ distance -= 0.0001;
+ if (this.blocked(hit, toLight, distance))
+ continue;
+ var nl = dot(normal, toLight);
+ if (nl > 0)
+ addVector(l, scale(light.colour, nl));
+ }
+ l = scalev(l, colour);
+ if (reflected) {
+ l = addVector(scaleVector(l, 1 - colour.reflection), scaleVector(reflected, colour.reflection));
+ }
+ return l;
+}
+
+Scene.prototype.blocked = function(O, D, far) {
+ var near = 0.0001;
+ var closest = null;
+ for (i = 0; i < this.triangles.length; i++) {
+ var triangle = this.triangles[i];
+ var d = triangle.intersect(O, D, near, far);
+ if (d == null || d > far || d < near)
+ continue;
+ return true;
+ }
+
+ return false;
+}
+
+
+// this camera code is from notes i made ages ago, it is from *somewhere* -- i cannot remember where
+// that somewhere is
+function Camera(origin, lookat, up) {
+ var zaxis = normaliseVector(subVector(lookat, origin));
+ var xaxis = normaliseVector(cross(up, zaxis));
+ var yaxis = normaliseVector(cross(xaxis, subVector([0,0,0], zaxis)));
+ var m = new Array(16);
+ m[0] = xaxis[0]; m[1] = xaxis[1]; m[2] = xaxis[2];
+ m[4] = yaxis[0]; m[5] = yaxis[1]; m[6] = yaxis[2];
+ m[8] = zaxis[0]; m[9] = zaxis[1]; m[10] = zaxis[2];
+ invertMatrix(m);
+ m[3] = 0; m[7] = 0; m[11] = 0;
+ this.origin = origin;
+ this.directions = new Array(4);
+ this.directions[0] = normalise([-0.7, 0.7, 1]);
+ this.directions[1] = normalise([ 0.7, 0.7, 1]);
+ this.directions[2] = normalise([ 0.7, -0.7, 1]);
+ this.directions[3] = normalise([-0.7, -0.7, 1]);
+ this.directions[0] = transformMatrix(m, this.directions[0]);
+ this.directions[1] = transformMatrix(m, this.directions[1]);
+ this.directions[2] = transformMatrix(m, this.directions[2]);
+ this.directions[3] = transformMatrix(m, this.directions[3]);
+}
+
+Camera.prototype.generateRayPair = function(y) {
+ rays = new Array(new Object(), new Object());
+ rays[0].origin = this.origin;
+ rays[1].origin = this.origin;
+ rays[0].dir = addVector(scale(this.directions[0], y), scale(this.directions[3], 1 - y));
+ rays[1].dir = addVector(scale(this.directions[1], y), scale(this.directions[2], 1 - y));
+ return rays;
+}
+
+function renderRows(camera, scene, pixels, width, height, starty, stopy) {
+ for (var y = starty; y < stopy; y++) {
+ var rays = camera.generateRayPair(y / height);
+ for (var x = 0; x < width; x++) {
+ var xp = x / width;
+ var origin = addVector(scale(rays[0].origin, xp), scale(rays[1].origin, 1 - xp));
+ var dir = normaliseVector(addVector(scale(rays[0].dir, xp), scale(rays[1].dir, 1 - xp)));
+ var l = scene.intersect(origin, dir);
+ pixels[y][x] = l;
+ }
+ }
+}
+
+Camera.prototype.render = function(scene, pixels, width, height) {
+ var cam = this;
+ var row = 0;
+ renderRows(cam, scene, pixels, width, height, 0, height);
+}
+
+
+
+function raytraceScene()
+{
+ var startDate = new Date().getTime();
+ var numTriangles = 2 * 6;
+ var triangles = new Array();//numTriangles);
+ var tfl = createVector(-10, 10, -10);
+ var tfr = createVector( 10, 10, -10);
+ var tbl = createVector(-10, 10, 10);
+ var tbr = createVector( 10, 10, 10);
+ var bfl = createVector(-10, -10, -10);
+ var bfr = createVector( 10, -10, -10);
+ var bbl = createVector(-10, -10, 10);
+ var bbr = createVector( 10, -10, 10);
+
+ // cube!!!
+ // front
+ var i = 0;
+
+ triangles[i++] = new Triangle(tfl, tfr, bfr);
+ triangles[i++] = new Triangle(tfl, bfr, bfl);
+ // back
+ triangles[i++] = new Triangle(tbl, tbr, bbr);
+ triangles[i++] = new Triangle(tbl, bbr, bbl);
+ // triangles[i-1].material = [0.7,0.2,0.2];
+ // triangles[i-1].material.reflection = 0.8;
+ // left
+ triangles[i++] = new Triangle(tbl, tfl, bbl);
+ // triangles[i-1].reflection = 0.6;
+ triangles[i++] = new Triangle(tfl, bfl, bbl);
+ // triangles[i-1].reflection = 0.6;
+ // right
+ triangles[i++] = new Triangle(tbr, tfr, bbr);
+ triangles[i++] = new Triangle(tfr, bfr, bbr);
+ // top
+ triangles[i++] = new Triangle(tbl, tbr, tfr);
+ triangles[i++] = new Triangle(tbl, tfr, tfl);
+ // bottom
+ triangles[i++] = new Triangle(bbl, bbr, bfr);
+ triangles[i++] = new Triangle(bbl, bfr, bfl);
+
+ //Floor!!!!
+ var green = createVector(0.0, 0.4, 0.0);
+ var grey = createVector(0.4, 0.4, 0.4);
+ grey.reflection = 1.0;
+ var floorShader = function(tri, pos, view) {
+ var x = ((pos[0]/32) % 2 + 2) % 2;
+ var z = ((pos[2]/32 + 0.3) % 2 + 2) % 2;
+ if (x < 1 != z < 1) {
+ //in the real world we use the fresnel term...
+ // var angle = 1-dot(view, tri.normal);
+ // angle *= angle;
+ // angle *= angle;
+ // angle *= angle;
+ //grey.reflection = angle;
+ return grey;
+ } else
+ return green;
+ }
+ var ffl = createVector(-1000, -30, -1000);
+ var ffr = createVector( 1000, -30, -1000);
+ var fbl = createVector(-1000, -30, 1000);
+ var fbr = createVector( 1000, -30, 1000);
+ triangles[i++] = new Triangle(fbl, fbr, ffr);
+ triangles[i-1].shader = floorShader;
+ triangles[i++] = new Triangle(fbl, ffr, ffl);
+ triangles[i-1].shader = floorShader;
+
+ var _scene = new Scene(triangles);
+ _scene.lights[0] = createVector(20, 38, -22);
+ _scene.lights[0].colour = createVector(0.7, 0.3, 0.3);
+ _scene.lights[1] = createVector(-23, 40, 17);
+ _scene.lights[1].colour = createVector(0.7, 0.3, 0.3);
+ _scene.lights[2] = createVector(23, 20, 17);
+ _scene.lights[2].colour = createVector(0.7, 0.7, 0.7);
+ _scene.ambient = createVector(0.1, 0.1, 0.1);
+ // _scene.background = createVector(0.7, 0.7, 1.0);
+
+ var size = 30;
+ var pixels = new Array();
+ for (var y = 0; y < size; y++) {
+ pixels[y] = new Array();
+ for (var x = 0; x < size; x++) {
+ pixels[y][x] = 0;
+ }
+ }
+
+ var _camera = new Camera(createVector(-40, 40, 40), createVector(0, 0, 0), createVector(0, 1, 0));
+ _camera.render(_scene, pixels, size, size);
+
+ return pixels;
+}
+
+function arrayToCanvasCommands(pixels)
+{
+ var s = '<canvas id="renderCanvas" width="30px" height="30px"></canvas><scr' + 'ipt>\nvar pixels = [';
+ var size = 30;
+ for (var y = 0; y < size; y++) {
+ s += "[";
+ for (var x = 0; x < size; x++) {
+ s += "[" + pixels[y][x] + "],";
+ }
+ s+= "],";
+ }
+ s += '];\n var canvas = document.getElementById("renderCanvas").getContext("2d");\n\
+\n\
+\n\
+ var size = 30;\n\
+ canvas.fillStyle = "red";\n\
+ canvas.fillRect(0, 0, size, size);\n\
+ canvas.scale(1, -1);\n\
+ canvas.translate(0, -size);\n\
+\n\
+ if (!canvas.setFillColor)\n\
+ canvas.setFillColor = function(r, g, b, a) {\n\
+ this.fillStyle = "rgb("+[Math.floor(r * 255), Math.floor(g * 255), Math.floor(b * 255)]+")";\n\
+ }\n\
+\n\
+for (var y = 0; y < size; y++) {\n\
+ for (var x = 0; x < size; x++) {\n\
+ var l = pixels[y][x];\n\
+ canvas.setFillColor(l[0], l[1], l[2], 1);\n\
+ canvas.fillRect(x, y, 1, 1);\n\
+ }\n\
+}</scr' + 'ipt>';
+
+ return s;
+}
+
+testOutput = arrayToCanvasCommands(raytraceScene());
diff --git a/tests/benchmarks/script/sunspider/tests/VERSION b/tests/benchmarks/script/sunspider/tests/VERSION
new file mode 100644
index 0000000000..6aa91fb0f5
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/VERSION
@@ -0,0 +1 @@
+SunSpider 0.9.1
diff --git a/tests/benchmarks/script/sunspider/tests/access-binary-trees.js b/tests/benchmarks/script/sunspider/tests/access-binary-trees.js
new file mode 100644
index 0000000000..2f24e7db1f
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/access-binary-trees.js
@@ -0,0 +1,50 @@
+/* The Great Computer Language Shootout
+ http://shootout.alioth.debian.org/
+ contributed by Isaac Gouy */
+
+function TreeNode(left,right,item){
+ this.left = left;
+ this.right = right;
+ this.item = item;
+}
+
+TreeNode.prototype.itemCheck = function(){
+ if (this.left==null) return this.item;
+ else return this.item + this.left.itemCheck() - this.right.itemCheck();
+}
+
+function bottomUpTree(item,depth){
+ if (depth>0){
+ return new TreeNode(
+ bottomUpTree(2*item-1, depth-1)
+ ,bottomUpTree(2*item, depth-1)
+ ,item
+ );
+ }
+ else {
+ return new TreeNode(null,null,item);
+ }
+}
+
+var ret;
+
+for ( var n = 4; n <= 7; n += 1 ) {
+ var minDepth = 4;
+ var maxDepth = Math.max(minDepth + 2, n);
+ var stretchDepth = maxDepth + 1;
+
+ var check = bottomUpTree(0,stretchDepth).itemCheck();
+
+ var longLivedTree = bottomUpTree(0,maxDepth);
+ for (var depth=minDepth; depth<=maxDepth; depth+=2){
+ var iterations = 1 << (maxDepth - depth + minDepth);
+
+ check = 0;
+ for (var i=1; i<=iterations; i++){
+ check += bottomUpTree(i,depth).itemCheck();
+ check += bottomUpTree(-i,depth).itemCheck();
+ }
+ }
+
+ ret = longLivedTree.itemCheck();
+}
diff --git a/tests/benchmarks/script/sunspider/tests/access-fannkuch.js b/tests/benchmarks/script/sunspider/tests/access-fannkuch.js
new file mode 100644
index 0000000000..1ea87b4948
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/access-fannkuch.js
@@ -0,0 +1,66 @@
+/* The Great Computer Language Shootout
+ http://shootout.alioth.debian.org/
+ contributed by Isaac Gouy */
+
+function fannkuch(n) {
+ var check = 0;
+ var perm = Array(n);
+ var perm1 = Array(n);
+ var count = Array(n);
+ var maxPerm = Array(n);
+ var maxFlipsCount = 0;
+ var m = n - 1;
+
+ for (var i = 0; i < n; i++) perm1[i] = i;
+ var r = n;
+
+ while (true) {
+ // write-out the first 30 permutations
+ if (check < 30){
+ var s = "";
+ for(var i=0; i<n; i++) s += (perm1[i]+1).toString();
+ check++;
+ }
+
+ while (r != 1) { count[r - 1] = r; r--; }
+ if (!(perm1[0] == 0 || perm1[m] == m)) {
+ for (var i = 0; i < n; i++) perm[i] = perm1[i];
+
+ var flipsCount = 0;
+ var k;
+
+ while (!((k = perm[0]) == 0)) {
+ var k2 = (k + 1) >> 1;
+ for (var i = 0; i < k2; i++) {
+ var temp = perm[i]; perm[i] = perm[k - i]; perm[k - i] = temp;
+ }
+ flipsCount++;
+ }
+
+ if (flipsCount > maxFlipsCount) {
+ maxFlipsCount = flipsCount;
+ for (var i = 0; i < n; i++) maxPerm[i] = perm1[i];
+ }
+ }
+
+ while (true) {
+ if (r == n) return maxFlipsCount;
+ var perm0 = perm1[0];
+ var i = 0;
+ while (i < r) {
+ var j = i + 1;
+ perm1[i] = perm1[j];
+ i = j;
+ }
+ perm1[r] = perm0;
+
+ count[r] = count[r] - 1;
+ if (count[r] > 0) break;
+ r++;
+ }
+ }
+}
+
+var n = 8;
+var ret = fannkuch(n);
+
diff --git a/tests/benchmarks/script/sunspider/tests/access-nbody.js b/tests/benchmarks/script/sunspider/tests/access-nbody.js
new file mode 100644
index 0000000000..f0d080d12d
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/access-nbody.js
@@ -0,0 +1,169 @@
+/* The Great Computer Language Shootout
+ http://shootout.alioth.debian.org/
+ contributed by Isaac Gouy */
+
+var PI = 3.141592653589793;
+var SOLAR_MASS = 4 * PI * PI;
+var DAYS_PER_YEAR = 365.24;
+
+function Body(x,y,z,vx,vy,vz,mass){
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.vx = vx;
+ this.vy = vy;
+ this.vz = vz;
+ this.mass = mass;
+}
+
+Body.prototype.offsetMomentum = function(px,py,pz) {
+ this.vx = -px / SOLAR_MASS;
+ this.vy = -py / SOLAR_MASS;
+ this.vz = -pz / SOLAR_MASS;
+ return this;
+}
+
+function Jupiter(){
+ return new Body(
+ 4.84143144246472090e+00,
+ -1.16032004402742839e+00,
+ -1.03622044471123109e-01,
+ 1.66007664274403694e-03 * DAYS_PER_YEAR,
+ 7.69901118419740425e-03 * DAYS_PER_YEAR,
+ -6.90460016972063023e-05 * DAYS_PER_YEAR,
+ 9.54791938424326609e-04 * SOLAR_MASS
+ );
+}
+
+function Saturn(){
+ return new Body(
+ 8.34336671824457987e+00,
+ 4.12479856412430479e+00,
+ -4.03523417114321381e-01,
+ -2.76742510726862411e-03 * DAYS_PER_YEAR,
+ 4.99852801234917238e-03 * DAYS_PER_YEAR,
+ 2.30417297573763929e-05 * DAYS_PER_YEAR,
+ 2.85885980666130812e-04 * SOLAR_MASS
+ );
+}
+
+function Uranus(){
+ return new Body(
+ 1.28943695621391310e+01,
+ -1.51111514016986312e+01,
+ -2.23307578892655734e-01,
+ 2.96460137564761618e-03 * DAYS_PER_YEAR,
+ 2.37847173959480950e-03 * DAYS_PER_YEAR,
+ -2.96589568540237556e-05 * DAYS_PER_YEAR,
+ 4.36624404335156298e-05 * SOLAR_MASS
+ );
+}
+
+function Neptune(){
+ return new Body(
+ 1.53796971148509165e+01,
+ -2.59193146099879641e+01,
+ 1.79258772950371181e-01,
+ 2.68067772490389322e-03 * DAYS_PER_YEAR,
+ 1.62824170038242295e-03 * DAYS_PER_YEAR,
+ -9.51592254519715870e-05 * DAYS_PER_YEAR,
+ 5.15138902046611451e-05 * SOLAR_MASS
+ );
+}
+
+function Sun(){
+ return new Body(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, SOLAR_MASS);
+}
+
+
+function NBodySystem(bodies){
+ this.bodies = bodies;
+ var px = 0.0;
+ var py = 0.0;
+ var pz = 0.0;
+ var size = this.bodies.length;
+ for (var i=0; i<size; i++){
+ var b = this.bodies[i];
+ var m = b.mass;
+ px += b.vx * m;
+ py += b.vy * m;
+ pz += b.vz * m;
+ }
+ this.bodies[0].offsetMomentum(px,py,pz);
+}
+
+NBodySystem.prototype.advance = function(dt){
+ var dx, dy, dz, distance, mag;
+ var size = this.bodies.length;
+
+ for (var i=0; i<size; i++) {
+ var bodyi = this.bodies[i];
+ for (var j=i+1; j<size; j++) {
+ var bodyj = this.bodies[j];
+ dx = bodyi.x - bodyj.x;
+ dy = bodyi.y - bodyj.y;
+ dz = bodyi.z - bodyj.z;
+
+ distance = Math.sqrt(dx*dx + dy*dy + dz*dz);
+ mag = dt / (distance * distance * distance);
+
+ bodyi.vx -= dx * bodyj.mass * mag;
+ bodyi.vy -= dy * bodyj.mass * mag;
+ bodyi.vz -= dz * bodyj.mass * mag;
+
+ bodyj.vx += dx * bodyi.mass * mag;
+ bodyj.vy += dy * bodyi.mass * mag;
+ bodyj.vz += dz * bodyi.mass * mag;
+ }
+ }
+
+ for (var i=0; i<size; i++) {
+ var body = this.bodies[i];
+ body.x += dt * body.vx;
+ body.y += dt * body.vy;
+ body.z += dt * body.vz;
+ }
+}
+
+NBodySystem.prototype.energy = function(){
+ var dx, dy, dz, distance;
+ var e = 0.0;
+ var size = this.bodies.length;
+
+ for (var i=0; i<size; i++) {
+ var bodyi = this.bodies[i];
+
+ e += 0.5 * bodyi.mass *
+ ( bodyi.vx * bodyi.vx
+ + bodyi.vy * bodyi.vy
+ + bodyi.vz * bodyi.vz );
+
+ for (var j=i+1; j<size; j++) {
+ var bodyj = this.bodies[j];
+ dx = bodyi.x - bodyj.x;
+ dy = bodyi.y - bodyj.y;
+ dz = bodyi.z - bodyj.z;
+
+ distance = Math.sqrt(dx*dx + dy*dy + dz*dz);
+ e -= (bodyi.mass * bodyj.mass) / distance;
+ }
+ }
+ return e;
+}
+
+var ret;
+
+for ( var n = 3; n <= 24; n *= 2 ) {
+ (function(){
+ var bodies = new NBodySystem( Array(
+ Sun(),Jupiter(),Saturn(),Uranus(),Neptune()
+ ));
+ var max = n * 100;
+
+ ret = bodies.energy();
+ for (var i=0; i<max; i++){
+ bodies.advance(0.01);
+ }
+ ret = bodies.energy();
+ })();
+}
diff --git a/tests/benchmarks/script/sunspider/tests/access-nsieve.js b/tests/benchmarks/script/sunspider/tests/access-nsieve.js
new file mode 100644
index 0000000000..70fdf1aaf3
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/access-nsieve.js
@@ -0,0 +1,38 @@
+// The Great Computer Language Shootout
+// http://shootout.alioth.debian.org/
+//
+// modified by Isaac Gouy
+
+function pad(number,width){
+ var s = number.toString();
+ var prefixWidth = width - s.length;
+ if (prefixWidth>0){
+ for (var i=1; i<=prefixWidth; i++) s = " " + s;
+ }
+ return s;
+}
+
+function nsieve(m, isPrime){
+ var i, k, count;
+
+ for (i=2; i<=m; i++) { isPrime[i] = true; }
+ count = 0;
+
+ for (i=2; i<=m; i++){
+ if (isPrime[i]) {
+ for (k=i+i; k<=m; k+=i) isPrime[k] = false;
+ count++;
+ }
+ }
+ return count;
+}
+
+function sieve() {
+ for (var i = 1; i <= 3; i++ ) {
+ var m = (1<<i)*10000;
+ var flags = Array(m+1);
+ nsieve(m, flags);
+ }
+}
+
+sieve();
diff --git a/tests/benchmarks/script/sunspider/tests/bitops-3bit-bits-in-byte.js b/tests/benchmarks/script/sunspider/tests/bitops-3bit-bits-in-byte.js
new file mode 100644
index 0000000000..1d85406809
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/bitops-3bit-bits-in-byte.js
@@ -0,0 +1,32 @@
+// Copyright (c) 2004 by Arthur Langereis (arthur_ext at domain xfinitegames, tld com
+
+// 1 op = 6 ANDs, 3 SHRs, 3 SHLs, 4 assigns, 2 ADDs
+// O(1)
+function fast3bitlookup(b) {
+var c, bi3b = 0xE994; // 0b1110 1001 1001 0100; // 3 2 2 1 2 1 1 0
+c = 3 & (bi3b >> ((b << 1) & 14));
+c += 3 & (bi3b >> ((b >> 2) & 14));
+c += 3 & (bi3b >> ((b >> 5) & 6));
+return c;
+
+/*
+lir4,0xE994; 9 instructions, no memory access, minimal register dependence, 6 shifts, 2 adds, 1 inline assign
+rlwinmr5,r3,1,28,30
+rlwinmr6,r3,30,28,30
+rlwinmr7,r3,27,29,30
+rlwnmr8,r4,r5,30,31
+rlwnmr9,r4,r6,30,31
+rlwnmr10,r4,r7,30,31
+addr3,r8,r9
+addr3,r3,r10
+*/
+}
+
+
+function TimeFunc(func) {
+var x, y, t;
+for(var x=0; x<500; x++)
+for(var y=0; y<256; y++) func(y);
+}
+
+TimeFunc(fast3bitlookup);
diff --git a/tests/benchmarks/script/sunspider/tests/bitops-bits-in-byte.js b/tests/benchmarks/script/sunspider/tests/bitops-bits-in-byte.js
new file mode 100644
index 0000000000..9a3acd4f77
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/bitops-bits-in-byte.js
@@ -0,0 +1,21 @@
+// Copyright (c) 2004 by Arthur Langereis (arthur_ext at domain xfinitegames, tld com)
+
+
+// 1 op = 2 assigns, 16 compare/branches, 8 ANDs, (0-8) ADDs, 8 SHLs
+// O(n)
+function bitsinbyte(b) {
+var m = 1, c = 0;
+while(m<0x100) {
+if(b & m) c++;
+m <<= 1;
+}
+return c;
+}
+
+function TimeFunc(func) {
+var x, y, t;
+for(var x=0; x<350; x++)
+for(var y=0; y<256; y++) func(y);
+}
+
+TimeFunc(bitsinbyte);
diff --git a/tests/benchmarks/script/sunspider/tests/bitops-bitwise-and.js b/tests/benchmarks/script/sunspider/tests/bitops-bitwise-and.js
new file mode 100644
index 0000000000..7c80e696d9
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/bitops-bitwise-and.js
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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.
+ */
+
+bitwiseAndValue = 4294967296;
+for (var i = 0; i < 600000; i++)
+ bitwiseAndValue = bitwiseAndValue & i;
diff --git a/tests/benchmarks/script/sunspider/tests/bitops-nsieve-bits.js b/tests/benchmarks/script/sunspider/tests/bitops-nsieve-bits.js
new file mode 100644
index 0000000000..6ef0ddb11b
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/bitops-nsieve-bits.js
@@ -0,0 +1,32 @@
+// The Great Computer Language Shootout
+// http://shootout.alioth.debian.org
+//
+// Contributed by Ian Osgood
+
+function pad(n,width) {
+ var s = n.toString();
+ while (s.length < width) s = ' ' + s;
+ return s;
+}
+
+function primes(isPrime, n) {
+ var i, count = 0, m = 10000<<n, size = m+31>>5;
+
+ for (i=0; i<size; i++) isPrime[i] = 0xffffffff;
+
+ for (i=2; i<m; i++)
+ if (isPrime[i>>5] & 1<<(i&31)) {
+ for (var j=i+i; j<m; j+=i)
+ isPrime[j>>5] &= ~(1<<(j&31));
+ count++;
+ }
+}
+
+function sieve() {
+ for (var i = 4; i <= 4; i++) {
+ var isPrime = new Array((10000<<i)+31>>5);
+ primes(isPrime, i);
+ }
+}
+
+sieve();
diff --git a/tests/benchmarks/script/sunspider/tests/controlflow-recursive.js b/tests/benchmarks/script/sunspider/tests/controlflow-recursive.js
new file mode 100644
index 0000000000..fcfe1c40e2
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/controlflow-recursive.js
@@ -0,0 +1,25 @@
+// The Computer Language Shootout
+// http://shootout.alioth.debian.org/
+// contributed by Isaac Gouy
+
+function ack(m,n){
+ if (m==0) { return n+1; }
+ if (n==0) { return ack(m-1,1); }
+ return ack(m-1, ack(m,n-1) );
+}
+
+function fib(n) {
+ if (n < 2){ return 1; }
+ return fib(n-2) + fib(n-1);
+}
+
+function tak(x,y,z) {
+ if (y >= x) return z;
+ return tak(tak(x-1,y,z), tak(y-1,z,x), tak(z-1,x,y));
+}
+
+for ( var i = 3; i <= 5; i++ ) {
+ ack(3,i);
+ fib(17.0+i);
+ tak(3*i+3,2*i+2,i+1);
+}
diff --git a/tests/benchmarks/script/sunspider/tests/crypto-aes.js b/tests/benchmarks/script/sunspider/tests/crypto-aes.js
new file mode 100644
index 0000000000..93a5969353
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/crypto-aes.js
@@ -0,0 +1,422 @@
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+/*
+ * AES Cipher function: encrypt 'input' with Rijndael algorithm
+ *
+ * takes byte-array 'input' (16 bytes)
+ * 2D byte-array key schedule 'w' (Nr+1 x Nb bytes)
+ *
+ * applies Nr rounds (10/12/14) using key schedule w for 'add round key' stage
+ *
+ * returns byte-array encrypted value (16 bytes)
+ */
+function Cipher(input, w) { // main Cipher function [§5.1]
+ var Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES)
+ var Nr = w.length/Nb - 1; // no of rounds: 10/12/14 for 128/192/256-bit keys
+
+ var state = [[],[],[],[]]; // initialise 4xNb byte-array 'state' with input [§3.4]
+ for (var i=0; i<4*Nb; i++) state[i%4][Math.floor(i/4)] = input[i];
+
+ state = AddRoundKey(state, w, 0, Nb);
+
+ for (var round=1; round<Nr; round++) {
+ state = SubBytes(state, Nb);
+ state = ShiftRows(state, Nb);
+ state = MixColumns(state, Nb);
+ state = AddRoundKey(state, w, round, Nb);
+ }
+
+ state = SubBytes(state, Nb);
+ state = ShiftRows(state, Nb);
+ state = AddRoundKey(state, w, Nr, Nb);
+
+ var output = new Array(4*Nb); // convert state to 1-d array before returning [§3.4]
+ for (var i=0; i<4*Nb; i++) output[i] = state[i%4][Math.floor(i/4)];
+ return output;
+}
+
+
+function SubBytes(s, Nb) { // apply SBox to state S [§5.1.1]
+ for (var r=0; r<4; r++) {
+ for (var c=0; c<Nb; c++) s[r][c] = Sbox[s[r][c]];
+ }
+ return s;
+}
+
+
+function ShiftRows(s, Nb) { // shift row r of state S left by r bytes [§5.1.2]
+ var t = new Array(4);
+ for (var r=1; r<4; r++) {
+ for (var c=0; c<4; c++) t[c] = s[r][(c+r)%Nb]; // shift into temp copy
+ for (var c=0; c<4; c++) s[r][c] = t[c]; // and copy back
+ } // note that this will work for Nb=4,5,6, but not 7,8 (always 4 for AES):
+ return s; // see fp.gladman.plus.com/cryptography_technology/rijndael/aes.spec.311.pdf
+}
+
+
+function MixColumns(s, Nb) { // combine bytes of each col of state S [§5.1.3]
+ for (var c=0; c<4; c++) {
+ var a = new Array(4); // 'a' is a copy of the current column from 's'
+ var b = new Array(4); // 'b' is a•{02} in GF(2^8)
+ for (var i=0; i<4; i++) {
+ a[i] = s[i][c];
+ b[i] = s[i][c]&0x80 ? s[i][c]<<1 ^ 0x011b : s[i][c]<<1;
+ }
+ // a[n] ^ b[n] is a•{03} in GF(2^8)
+ s[0][c] = b[0] ^ a[1] ^ b[1] ^ a[2] ^ a[3]; // 2*a0 + 3*a1 + a2 + a3
+ s[1][c] = a[0] ^ b[1] ^ a[2] ^ b[2] ^ a[3]; // a0 * 2*a1 + 3*a2 + a3
+ s[2][c] = a[0] ^ a[1] ^ b[2] ^ a[3] ^ b[3]; // a0 + a1 + 2*a2 + 3*a3
+ s[3][c] = a[0] ^ b[0] ^ a[1] ^ a[2] ^ b[3]; // 3*a0 + a1 + a2 + 2*a3
+ }
+ return s;
+}
+
+
+function AddRoundKey(state, w, rnd, Nb) { // xor Round Key into state S [§5.1.4]
+ for (var r=0; r<4; r++) {
+ for (var c=0; c<Nb; c++) state[r][c] ^= w[rnd*4+c][r];
+ }
+ return state;
+}
+
+
+function KeyExpansion(key) { // generate Key Schedule (byte-array Nr+1 x Nb) from Key [§5.2]
+ var Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES)
+ var Nk = key.length/4 // key length (in words): 4/6/8 for 128/192/256-bit keys
+ var Nr = Nk + 6; // no of rounds: 10/12/14 for 128/192/256-bit keys
+
+ var w = new Array(Nb*(Nr+1));
+ var temp = new Array(4);
+
+ for (var i=0; i<Nk; i++) {
+ var r = [key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]];
+ w[i] = r;
+ }
+
+ for (var i=Nk; i<(Nb*(Nr+1)); i++) {
+ w[i] = new Array(4);
+ for (var t=0; t<4; t++) temp[t] = w[i-1][t];
+ if (i % Nk == 0) {
+ temp = SubWord(RotWord(temp));
+ for (var t=0; t<4; t++) temp[t] ^= Rcon[i/Nk][t];
+ } else if (Nk > 6 && i%Nk == 4) {
+ temp = SubWord(temp);
+ }
+ for (var t=0; t<4; t++) w[i][t] = w[i-Nk][t] ^ temp[t];
+ }
+
+ return w;
+}
+
+function SubWord(w) { // apply SBox to 4-byte word w
+ for (var i=0; i<4; i++) w[i] = Sbox[w[i]];
+ return w;
+}
+
+function RotWord(w) { // rotate 4-byte word w left by one byte
+ w[4] = w[0];
+ for (var i=0; i<4; i++) w[i] = w[i+1];
+ return w;
+}
+
+
+// Sbox is pre-computed multiplicative inverse in GF(2^8) used in SubBytes and KeyExpansion [§5.1.1]
+var Sbox = [0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,
+ 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0,
+ 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15,
+ 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75,
+ 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84,
+ 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf,
+ 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8,
+ 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2,
+ 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73,
+ 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb,
+ 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79,
+ 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08,
+ 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a,
+ 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e,
+ 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf,
+ 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16];
+
+// Rcon is Round Constant used for the Key Expansion [1st col is 2^(r-1) in GF(2^8)] [§5.2]
+var Rcon = [ [0x00, 0x00, 0x00, 0x00],
+ [0x01, 0x00, 0x00, 0x00],
+ [0x02, 0x00, 0x00, 0x00],
+ [0x04, 0x00, 0x00, 0x00],
+ [0x08, 0x00, 0x00, 0x00],
+ [0x10, 0x00, 0x00, 0x00],
+ [0x20, 0x00, 0x00, 0x00],
+ [0x40, 0x00, 0x00, 0x00],
+ [0x80, 0x00, 0x00, 0x00],
+ [0x1b, 0x00, 0x00, 0x00],
+ [0x36, 0x00, 0x00, 0x00] ];
+
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+/*
+ * Use AES to encrypt 'plaintext' with 'password' using 'nBits' key, in 'Counter' mode of operation
+ * - see http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf
+ * for each block
+ * - outputblock = cipher(counter, key)
+ * - cipherblock = plaintext xor outputblock
+ */
+function AESEncryptCtr(plaintext, password, nBits) {
+ if (!(nBits==128 || nBits==192 || nBits==256)) return ''; // standard allows 128/192/256 bit keys
+
+ // for this example script, generate the key by applying Cipher to 1st 16/24/32 chars of password;
+ // for real-world applications, a more secure approach would be to hash the password e.g. with SHA-1
+ var nBytes = nBits/8; // no bytes in key
+ var pwBytes = new Array(nBytes);
+ for (var i=0; i<nBytes; i++) pwBytes[i] = password.charCodeAt(i) & 0xff;
+ var key = Cipher(pwBytes, KeyExpansion(pwBytes));
+ key = key.concat(key.slice(0, nBytes-16)); // key is now 16/24/32 bytes long
+
+ // initialise counter block (NIST SP800-38A §B.2): millisecond time-stamp for nonce in 1st 8 bytes,
+ // block counter in 2nd 8 bytes
+ var blockSize = 16; // block size fixed at 16 bytes / 128 bits (Nb=4) for AES
+ var counterBlock = new Array(blockSize); // block size fixed at 16 bytes / 128 bits (Nb=4) for AES
+ var nonce = (new Date()).getTime(); // milliseconds since 1-Jan-1970
+
+ // encode nonce in two stages to cater for JavaScript 32-bit limit on bitwise ops
+ for (var i=0; i<4; i++) counterBlock[i] = (nonce >>> i*8) & 0xff;
+ for (var i=0; i<4; i++) counterBlock[i+4] = (nonce/0x100000000 >>> i*8) & 0xff;
+
+ // generate key schedule - an expansion of the key into distinct Key Rounds for each round
+ var keySchedule = KeyExpansion(key);
+
+ var blockCount = Math.ceil(plaintext.length/blockSize);
+ var ciphertext = new Array(blockCount); // ciphertext as array of strings
+
+ for (var b=0; b<blockCount; b++) {
+ // set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes)
+ // again done in two stages for 32-bit ops
+ for (var c=0; c<4; c++) counterBlock[15-c] = (b >>> c*8) & 0xff;
+ for (var c=0; c<4; c++) counterBlock[15-c-4] = (b/0x100000000 >>> c*8)
+
+ var cipherCntr = Cipher(counterBlock, keySchedule); // -- encrypt counter block --
+
+ // calculate length of final block:
+ var blockLength = b<blockCount-1 ? blockSize : (plaintext.length-1)%blockSize+1;
+
+ var ct = '';
+ for (var i=0; i<blockLength; i++) { // -- xor plaintext with ciphered counter byte-by-byte --
+ var plaintextByte = plaintext.charCodeAt(b*blockSize+i);
+ var cipherByte = plaintextByte ^ cipherCntr[i];
+ ct += String.fromCharCode(cipherByte);
+ }
+ // ct is now ciphertext for this block
+
+ ciphertext[b] = escCtrlChars(ct); // escape troublesome characters in ciphertext
+ }
+
+ // convert the nonce to a string to go on the front of the ciphertext
+ var ctrTxt = '';
+ for (var i=0; i<8; i++) ctrTxt += String.fromCharCode(counterBlock[i]);
+ ctrTxt = escCtrlChars(ctrTxt);
+
+ // use '-' to separate blocks, use Array.join to concatenate arrays of strings for efficiency
+ return ctrTxt + '-' + ciphertext.join('-');
+}
+
+
+/*
+ * Use AES to decrypt 'ciphertext' with 'password' using 'nBits' key, in Counter mode of operation
+ *
+ * for each block
+ * - outputblock = cipher(counter, key)
+ * - cipherblock = plaintext xor outputblock
+ */
+function AESDecryptCtr(ciphertext, password, nBits) {
+ if (!(nBits==128 || nBits==192 || nBits==256)) return ''; // standard allows 128/192/256 bit keys
+
+ var nBytes = nBits/8; // no bytes in key
+ var pwBytes = new Array(nBytes);
+ for (var i=0; i<nBytes; i++) pwBytes[i] = password.charCodeAt(i) & 0xff;
+ var pwKeySchedule = KeyExpansion(pwBytes);
+ var key = Cipher(pwBytes, pwKeySchedule);
+ key = key.concat(key.slice(0, nBytes-16)); // key is now 16/24/32 bytes long
+
+ var keySchedule = KeyExpansion(key);
+
+ ciphertext = ciphertext.split('-'); // split ciphertext into array of block-length strings
+
+ // recover nonce from 1st element of ciphertext
+ var blockSize = 16; // block size fixed at 16 bytes / 128 bits (Nb=4) for AES
+ var counterBlock = new Array(blockSize);
+ var ctrTxt = unescCtrlChars(ciphertext[0]);
+ for (var i=0; i<8; i++) counterBlock[i] = ctrTxt.charCodeAt(i);
+
+ var plaintext = new Array(ciphertext.length-1);
+
+ for (var b=1; b<ciphertext.length; b++) {
+ // set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes)
+ for (var c=0; c<4; c++) counterBlock[15-c] = ((b-1) >>> c*8) & 0xff;
+ for (var c=0; c<4; c++) counterBlock[15-c-4] = ((b/0x100000000-1) >>> c*8) & 0xff;
+
+ var cipherCntr = Cipher(counterBlock, keySchedule); // encrypt counter block
+
+ ciphertext[b] = unescCtrlChars(ciphertext[b]);
+
+ var pt = '';
+ for (var i=0; i<ciphertext[b].length; i++) {
+ // -- xor plaintext with ciphered counter byte-by-byte --
+ var ciphertextByte = ciphertext[b].charCodeAt(i);
+ var plaintextByte = ciphertextByte ^ cipherCntr[i];
+ pt += String.fromCharCode(plaintextByte);
+ }
+ // pt is now plaintext for this block
+
+ plaintext[b-1] = pt; // b-1 'cos no initial nonce block in plaintext
+ }
+
+ return plaintext.join('');
+}
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+function escCtrlChars(str) { // escape control chars which might cause problems handling ciphertext
+ return str.replace(/[\0\t\n\v\f\r\xa0'"!-]/g, function(c) { return '!' + c.charCodeAt(0) + '!'; });
+} // \xa0 to cater for bug in Firefox; include '-' to leave it free for use as a block marker
+
+function unescCtrlChars(str) { // unescape potentially problematic control characters
+ return str.replace(/!\d\d?\d?!/g, function(c) { return String.fromCharCode(c.slice(1,-1)); });
+}
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+/*
+ * if escCtrlChars()/unescCtrlChars() still gives problems, use encodeBase64()/decodeBase64() instead
+ */
+var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+
+function encodeBase64(str) { // http://tools.ietf.org/html/rfc4648
+ var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
+
+ str = encodeUTF8(str); // encode multi-byte chars into UTF-8 for byte-array
+
+ do { // pack three octets into four hexets
+ o1 = str.charCodeAt(i++);
+ o2 = str.charCodeAt(i++);
+ o3 = str.charCodeAt(i++);
+
+ bits = o1<<16 | o2<<8 | o3;
+
+ h1 = bits>>18 & 0x3f;
+ h2 = bits>>12 & 0x3f;
+ h3 = bits>>6 & 0x3f;
+ h4 = bits & 0x3f;
+
+ // end of string? index to '=' in b64
+ if (isNaN(o3)) h4 = 64;
+ if (isNaN(o2)) h3 = 64;
+
+ // use hexets to index into b64, and append result to encoded string
+ enc += b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
+ } while (i < str.length);
+
+ return enc;
+}
+
+function decodeBase64(str) {
+ var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
+
+ do { // unpack four hexets into three octets using index points in b64
+ h1 = b64.indexOf(str.charAt(i++));
+ h2 = b64.indexOf(str.charAt(i++));
+ h3 = b64.indexOf(str.charAt(i++));
+ h4 = b64.indexOf(str.charAt(i++));
+
+ bits = h1<<18 | h2<<12 | h3<<6 | h4;
+
+ o1 = bits>>16 & 0xff;
+ o2 = bits>>8 & 0xff;
+ o3 = bits & 0xff;
+
+ if (h3 == 64) enc += String.fromCharCode(o1);
+ else if (h4 == 64) enc += String.fromCharCode(o1, o2);
+ else enc += String.fromCharCode(o1, o2, o3);
+ } while (i < str.length);
+
+ return decodeUTF8(enc); // decode UTF-8 byte-array back to Unicode
+}
+
+function encodeUTF8(str) { // encode multi-byte string into utf-8 multiple single-byte characters
+ str = str.replace(
+ /[\u0080-\u07ff]/g, // U+0080 - U+07FF = 2-byte chars
+ function(c) {
+ var cc = c.charCodeAt(0);
+ return String.fromCharCode(0xc0 | cc>>6, 0x80 | cc&0x3f); }
+ );
+ str = str.replace(
+ /[\u0800-\uffff]/g, // U+0800 - U+FFFF = 3-byte chars
+ function(c) {
+ var cc = c.charCodeAt(0);
+ return String.fromCharCode(0xe0 | cc>>12, 0x80 | cc>>6&0x3F, 0x80 | cc&0x3f); }
+ );
+ return str;
+}
+
+function decodeUTF8(str) { // decode utf-8 encoded string back into multi-byte characters
+ str = str.replace(
+ /[\u00c0-\u00df][\u0080-\u00bf]/g, // 2-byte chars
+ function(c) {
+ var cc = (c.charCodeAt(0)&0x1f)<<6 | c.charCodeAt(1)&0x3f;
+ return String.fromCharCode(cc); }
+ );
+ str = str.replace(
+ /[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g, // 3-byte chars
+ function(c) {
+ var cc = (c.charCodeAt(0)&0x0f)<<12 | (c.charCodeAt(1)&0x3f<<6) | c.charCodeAt(2)&0x3f;
+ return String.fromCharCode(cc); }
+ );
+ return str;
+}
+
+
+function byteArrayToHexStr(b) { // convert byte array to hex string for displaying test vectors
+ var s = '';
+ for (var i=0; i<b.length; i++) s += b[i].toString(16) + ' ';
+ return s;
+}
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+
+var plainText = "ROMEO: But, soft! what light through yonder window breaks?\n\
+It is the east, and Juliet is the sun.\n\
+Arise, fair sun, and kill the envious moon,\n\
+Who is already sick and pale with grief,\n\
+That thou her maid art far more fair than she:\n\
+Be not her maid, since she is envious;\n\
+Her vestal livery is but sick and green\n\
+And none but fools do wear it; cast it off.\n\
+It is my lady, O, it is my love!\n\
+O, that she knew she were!\n\
+She speaks yet she says nothing: what of that?\n\
+Her eye discourses; I will answer it.\n\
+I am too bold, 'tis not to me she speaks:\n\
+Two of the fairest stars in all the heaven,\n\
+Having some business, do entreat her eyes\n\
+To twinkle in their spheres till they return.\n\
+What if her eyes were there, they in her head?\n\
+The brightness of her cheek would shame those stars,\n\
+As daylight doth a lamp; her eyes in heaven\n\
+Would through the airy region stream so bright\n\
+That birds would sing and think it were not night.\n\
+See, how she leans her cheek upon her hand!\n\
+O, that I were a glove upon that hand,\n\
+That I might touch that cheek!\n\
+JULIET: Ay me!\n\
+ROMEO: She speaks:\n\
+O, speak again, bright angel! for thou art\n\
+As glorious to this night, being o'er my head\n\
+As is a winged messenger of heaven\n\
+Unto the white-upturned wondering eyes\n\
+Of mortals that fall back to gaze on him\n\
+When he bestrides the lazy-pacing clouds\n\
+And sails upon the bosom of the air.";
+
+var password = "O Romeo, Romeo! wherefore art thou Romeo?";
+
+var cipherText = AESEncryptCtr(plainText, password, 256);
+var decryptedText = AESDecryptCtr(cipherText, password, 256);
diff --git a/tests/benchmarks/script/sunspider/tests/crypto-md5.js b/tests/benchmarks/script/sunspider/tests/crypto-md5.js
new file mode 100644
index 0000000000..cc7a896533
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/crypto-md5.js
@@ -0,0 +1,286 @@
+/*
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
+var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
+var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
+function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
+function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
+function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
+function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
+function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function md5_vm_test()
+{
+ return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
+}
+
+/*
+ * Calculate the MD5 of an array of little-endian words, and a bit length
+ */
+function core_md5(x, len)
+{
+ /* append padding */
+ x[len >> 5] |= 0x80 << ((len) % 32);
+ x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+ var a = 1732584193;
+ var b = -271733879;
+ var c = -1732584194;
+ var d = 271733878;
+
+ for(var i = 0; i < x.length; i += 16)
+ {
+ var olda = a;
+ var oldb = b;
+ var oldc = c;
+ var oldd = d;
+
+ a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
+ d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
+ c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
+ b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
+ a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
+ d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
+ c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
+ b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
+ a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
+ d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
+ c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
+ b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
+ a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
+ d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
+ c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
+ b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
+
+ a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
+ d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
+ c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
+ b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
+ a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
+ d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
+ c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
+ b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
+ a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
+ d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
+ c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
+ b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
+ a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
+ d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
+ c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
+ b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
+
+ a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
+ d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
+ c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
+ b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
+ a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
+ d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
+ c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
+ b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
+ a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
+ d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
+ c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
+ b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
+ a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
+ d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
+ c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
+ b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
+
+ a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
+ d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
+ c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
+ b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
+ a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
+ d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
+ c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
+ b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
+ a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
+ d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
+ c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
+ b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
+ a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
+ d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
+ c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
+ b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
+
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ }
+ return Array(a, b, c, d);
+
+}
+
+/*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+function md5_cmn(q, a, b, x, s, t)
+{
+ return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
+}
+function md5_ff(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
+}
+function md5_gg(a, b, c, d, x, s, t)
+{
+ return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
+}
+function md5_hh(a, b, c, d, x, s, t)
+{
+ return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+}
+function md5_ii(a, b, c, d, x, s, t)
+{
+ return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
+}
+
+/*
+ * Calculate the HMAC-MD5, of a key and some data
+ */
+function core_hmac_md5(key, data)
+{
+ var bkey = str2binl(key);
+ if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
+
+ var ipad = Array(16), opad = Array(16);
+ for(var i = 0; i < 16; i++)
+ {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+
+ var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
+ return core_md5(opad.concat(hash), 512 + 128);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function bit_rol(num, cnt)
+{
+ return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert a string to an array of little-endian words
+ * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
+ */
+function str2binl(str)
+{
+ var bin = Array();
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < str.length * chrsz; i += chrsz)
+ bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
+ return bin;
+}
+
+/*
+ * Convert an array of little-endian words to a string
+ */
+function binl2str(bin)
+{
+ var str = "";
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < bin.length * 32; i += chrsz)
+ str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a hex string.
+ */
+function binl2hex(binarray)
+{
+ var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i++)
+ {
+ str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
+ hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of little-endian words to a base-64 string
+ */
+function binl2b64(binarray)
+{
+ var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i += 3)
+ {
+ var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)
+ | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
+ | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
+ for(var j = 0; j < 4; j++)
+ {
+ if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
+ else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
+ }
+ }
+ return str;
+}
+
+var plainText = "Rebellious subjects, enemies to peace,\n\
+Profaners of this neighbour-stained steel,--\n\
+Will they not hear? What, ho! you men, you beasts,\n\
+That quench the fire of your pernicious rage\n\
+With purple fountains issuing from your veins,\n\
+On pain of torture, from those bloody hands\n\
+Throw your mistemper'd weapons to the ground,\n\
+And hear the sentence of your moved prince.\n\
+Three civil brawls, bred of an airy word,\n\
+By thee, old Capulet, and Montague,\n\
+Have thrice disturb'd the quiet of our streets,\n\
+And made Verona's ancient citizens\n\
+Cast by their grave beseeming ornaments,\n\
+To wield old partisans, in hands as old,\n\
+Canker'd with peace, to part your canker'd hate:\n\
+If ever you disturb our streets again,\n\
+Your lives shall pay the forfeit of the peace.\n\
+For this time, all the rest depart away:\n\
+You Capulet; shall go along with me:\n\
+And, Montague, come you this afternoon,\n\
+To know our further pleasure in this case,\n\
+To old Free-town, our common judgment-place.\n\
+Once more, on pain of death, all men depart."
+
+for (var i = 0; i <4; i++) {
+ plainText += plainText;
+}
+
+var md5Output = hex_md5(plainText);
diff --git a/tests/benchmarks/script/sunspider/tests/crypto-sha1.js b/tests/benchmarks/script/sunspider/tests/crypto-sha1.js
new file mode 100644
index 0000000000..ca8d901a12
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/crypto-sha1.js
@@ -0,0 +1,224 @@
+/*
+ * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
+ * in FIPS PUB 180-1
+ * Version 2.1a Copyright Paul Johnston 2000 - 2002.
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for details.
+ */
+
+/*
+ * Configurable variables. You may need to tweak these to be compatible with
+ * the server-side, but the defaults work in most cases.
+ */
+var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
+var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
+var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
+
+/*
+ * These are the functions you'll usually want to call
+ * They take string arguments and return either hex or base-64 encoded strings
+ */
+function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}
+function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}
+function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}
+function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}
+function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}
+function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}
+
+/*
+ * Perform a simple self-test to see if the VM is working
+ */
+function sha1_vm_test()
+{
+ return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
+}
+
+/*
+ * Calculate the SHA-1 of an array of big-endian words, and a bit length
+ */
+function core_sha1(x, len)
+{
+ /* append padding */
+ x[len >> 5] |= 0x80 << (24 - len % 32);
+ x[((len + 64 >> 9) << 4) + 15] = len;
+
+ var w = Array(80);
+ var a = 1732584193;
+ var b = -271733879;
+ var c = -1732584194;
+ var d = 271733878;
+ var e = -1009589776;
+
+ for(var i = 0; i < x.length; i += 16)
+ {
+ var olda = a;
+ var oldb = b;
+ var oldc = c;
+ var oldd = d;
+ var olde = e;
+
+ for(var j = 0; j < 80; j++)
+ {
+ if(j < 16) w[j] = x[i + j];
+ else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
+ var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
+ safe_add(safe_add(e, w[j]), sha1_kt(j)));
+ e = d;
+ d = c;
+ c = rol(b, 30);
+ b = a;
+ a = t;
+ }
+
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ e = safe_add(e, olde);
+ }
+ return Array(a, b, c, d, e);
+
+}
+
+/*
+ * Perform the appropriate triplet combination function for the current
+ * iteration
+ */
+function sha1_ft(t, b, c, d)
+{
+ if(t < 20) return (b & c) | ((~b) & d);
+ if(t < 40) return b ^ c ^ d;
+ if(t < 60) return (b & c) | (b & d) | (c & d);
+ return b ^ c ^ d;
+}
+
+/*
+ * Determine the appropriate additive constant for the current iteration
+ */
+function sha1_kt(t)
+{
+ return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
+ (t < 60) ? -1894007588 : -899497514;
+}
+
+/*
+ * Calculate the HMAC-SHA1 of a key and some data
+ */
+function core_hmac_sha1(key, data)
+{
+ var bkey = str2binb(key);
+ if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);
+
+ var ipad = Array(16), opad = Array(16);
+ for(var i = 0; i < 16; i++)
+ {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+
+ var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
+ return core_sha1(opad.concat(hash), 512 + 160);
+}
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+function safe_add(x, y)
+{
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+function rol(num, cnt)
+{
+ return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+ * Convert an 8-bit or 16-bit string to an array of big-endian words
+ * In 8-bit function, characters >255 have their hi-byte silently ignored.
+ */
+function str2binb(str)
+{
+ var bin = Array();
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < str.length * chrsz; i += chrsz)
+ bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);
+ return bin;
+}
+
+/*
+ * Convert an array of big-endian words to a string
+ */
+function binb2str(bin)
+{
+ var str = "";
+ var mask = (1 << chrsz) - 1;
+ for(var i = 0; i < bin.length * 32; i += chrsz)
+ str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);
+ return str;
+}
+
+/*
+ * Convert an array of big-endian words to a hex string.
+ */
+function binb2hex(binarray)
+{
+ var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i++)
+ {
+ str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
+ hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
+ }
+ return str;
+}
+
+/*
+ * Convert an array of big-endian words to a base-64 string
+ */
+function binb2b64(binarray)
+{
+ var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var str = "";
+ for(var i = 0; i < binarray.length * 4; i += 3)
+ {
+ var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16)
+ | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
+ | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
+ for(var j = 0; j < 4; j++)
+ {
+ if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
+ else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
+ }
+ }
+ return str;
+}
+
+
+var plainText = "Two households, both alike in dignity,\n\
+In fair Verona, where we lay our scene,\n\
+From ancient grudge break to new mutiny,\n\
+Where civil blood makes civil hands unclean.\n\
+From forth the fatal loins of these two foes\n\
+A pair of star-cross'd lovers take their life;\n\
+Whole misadventured piteous overthrows\n\
+Do with their death bury their parents' strife.\n\
+The fearful passage of their death-mark'd love,\n\
+And the continuance of their parents' rage,\n\
+Which, but their children's end, nought could remove,\n\
+Is now the two hours' traffic of our stage;\n\
+The which if you with patient ears attend,\n\
+What here shall miss, our toil shall strive to mend.";
+
+for (var i = 0; i <4; i++) {
+ plainText += plainText;
+}
+
+var sha1Output = hex_sha1(plainText);
diff --git a/tests/benchmarks/script/sunspider/tests/date-format-tofte.js b/tests/benchmarks/script/sunspider/tests/date-format-tofte.js
new file mode 100644
index 0000000000..66e2cef875
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/date-format-tofte.js
@@ -0,0 +1,299 @@
+function arrayExists(array, x) {
+ for (var i = 0; i < array.length; i++) {
+ if (array[i] == x) return true;
+ }
+ return false;
+}
+
+Date.prototype.formatDate = function (input,time) {
+ // formatDate :
+ // a PHP date like function, for formatting date strings
+ // See: http://www.php.net/date
+ //
+ // input : format string
+ // time : epoch time (seconds, and optional)
+ //
+ // if time is not passed, formatting is based on
+ // the current "this" date object's set time.
+ //
+ // supported:
+ // a, A, B, d, D, F, g, G, h, H, i, j, l (lowercase L), L,
+ // m, M, n, O, r, s, S, t, U, w, W, y, Y, z
+ //
+ // unsupported:
+ // I (capital i), T, Z
+
+ var switches = ["a", "A", "B", "d", "D", "F", "g", "G", "h", "H",
+ "i", "j", "l", "L", "m", "M", "n", "O", "r", "s",
+ "S", "t", "U", "w", "W", "y", "Y", "z"];
+ var daysLong = ["Sunday", "Monday", "Tuesday", "Wednesday",
+ "Thursday", "Friday", "Saturday"];
+ var daysShort = ["Sun", "Mon", "Tue", "Wed",
+ "Thu", "Fri", "Sat"];
+ var monthsShort = ["Jan", "Feb", "Mar", "Apr",
+ "May", "Jun", "Jul", "Aug", "Sep",
+ "Oct", "Nov", "Dec"];
+ var monthsLong = ["January", "February", "March", "April",
+ "May", "June", "July", "August", "September",
+ "October", "November", "December"];
+ var daysSuffix = ["st", "nd", "rd", "th", "th", "th", "th", // 1st - 7th
+ "th", "th", "th", "th", "th", "th", "th", // 8th - 14th
+ "th", "th", "th", "th", "th", "th", "st", // 15th - 21st
+ "nd", "rd", "th", "th", "th", "th", "th", // 22nd - 28th
+ "th", "th", "st"]; // 29th - 31st
+
+ function a() {
+ // Lowercase Ante meridiem and Post meridiem
+ return self.getHours() > 11? "pm" : "am";
+ }
+ function A() {
+ // Uppercase Ante meridiem and Post meridiem
+ return self.getHours() > 11? "PM" : "AM";
+ }
+
+ function B(){
+ // Swatch internet time. code simply grabbed from ppk,
+ // since I was feeling lazy:
+ // http://www.xs4all.nl/~ppk/js/beat.html
+ var off = (self.getTimezoneOffset() + 60)*60;
+ var theSeconds = (self.getHours() * 3600) +
+ (self.getMinutes() * 60) +
+ self.getSeconds() + off;
+ var beat = Math.floor(theSeconds/86.4);
+ if (beat > 1000) beat -= 1000;
+ if (beat < 0) beat += 1000;
+ if ((""+beat).length == 1) beat = "00"+beat;
+ if ((""+beat).length == 2) beat = "0"+beat;
+ return beat;
+ }
+
+ function d() {
+ // Day of the month, 2 digits with leading zeros
+ return new String(self.getDate()).length == 1?
+ "0"+self.getDate() : self.getDate();
+ }
+ function D() {
+ // A textual representation of a day, three letters
+ return daysShort[self.getDay()];
+ }
+ function F() {
+ // A full textual representation of a month
+ return monthsLong[self.getMonth()];
+ }
+ function g() {
+ // 12-hour format of an hour without leading zeros
+ return self.getHours() > 12? self.getHours()-12 : self.getHours();
+ }
+ function G() {
+ // 24-hour format of an hour without leading zeros
+ return self.getHours();
+ }
+ function h() {
+ // 12-hour format of an hour with leading zeros
+ if (self.getHours() > 12) {
+ var s = new String(self.getHours()-12);
+ return s.length == 1?
+ "0"+ (self.getHours()-12) : self.getHours()-12;
+ } else {
+ var s = new String(self.getHours());
+ return s.length == 1?
+ "0"+self.getHours() : self.getHours();
+ }
+ }
+ function H() {
+ // 24-hour format of an hour with leading zeros
+ return new String(self.getHours()).length == 1?
+ "0"+self.getHours() : self.getHours();
+ }
+ function i() {
+ // Minutes with leading zeros
+ return new String(self.getMinutes()).length == 1?
+ "0"+self.getMinutes() : self.getMinutes();
+ }
+ function j() {
+ // Day of the month without leading zeros
+ return self.getDate();
+ }
+ function l() {
+ // A full textual representation of the day of the week
+ return daysLong[self.getDay()];
+ }
+ function L() {
+ // leap year or not. 1 if leap year, 0 if not.
+ // the logic should match iso's 8601 standard.
+ var y_ = Y();
+ if (
+ (y_ % 4 == 0 && y_ % 100 != 0) ||
+ (y_ % 4 == 0 && y_ % 100 == 0 && y_ % 400 == 0)
+ ) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+ function m() {
+ // Numeric representation of a month, with leading zeros
+ return self.getMonth() < 9?
+ "0"+(self.getMonth()+1) :
+ self.getMonth()+1;
+ }
+ function M() {
+ // A short textual representation of a month, three letters
+ return monthsShort[self.getMonth()];
+ }
+ function n() {
+ // Numeric representation of a month, without leading zeros
+ return self.getMonth()+1;
+ }
+ function O() {
+ // Difference to Greenwich time (GMT) in hours
+ var os = Math.abs(self.getTimezoneOffset());
+ var h = ""+Math.floor(os/60);
+ var m = ""+(os%60);
+ h.length == 1? h = "0"+h:1;
+ m.length == 1? m = "0"+m:1;
+ return self.getTimezoneOffset() < 0 ? "+"+h+m : "-"+h+m;
+ }
+ function r() {
+ // RFC 822 formatted date
+ var r; // result
+ // Thu , 21 Dec 2000
+ r = D() + ", " + j() + " " + M() + " " + Y() +
+ // 16 : 01 : 07 +0200
+ " " + H() + ":" + i() + ":" + s() + " " + O();
+ return r;
+ }
+ function S() {
+ // English ordinal suffix for the day of the month, 2 characters
+ return daysSuffix[self.getDate()-1];
+ }
+ function s() {
+ // Seconds, with leading zeros
+ return new String(self.getSeconds()).length == 1?
+ "0"+self.getSeconds() : self.getSeconds();
+ }
+ function t() {
+
+ // thanks to Matt Bannon for some much needed code-fixes here!
+ var daysinmonths = [null,31,28,31,30,31,30,31,31,30,31,30,31];
+ if (L()==1 && n()==2) return 29; // leap day
+ return daysinmonths[n()];
+ }
+ function U() {
+ // Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)
+ return Math.round(self.getTime()/1000);
+ }
+ function W() {
+ // Weeknumber, as per ISO specification:
+ // http://www.cl.cam.ac.uk/~mgk25/iso-time.html
+
+ // if the day is three days before newyears eve,
+ // there's a chance it's "week 1" of next year.
+ // here we check for that.
+ var beforeNY = 364+L() - z();
+ var afterNY = z();
+ var weekday = w()!=0?w()-1:6; // makes sunday (0), into 6.
+ if (beforeNY <= 2 && weekday <= 2-beforeNY) {
+ return 1;
+ }
+ // similarly, if the day is within threedays of newyears
+ // there's a chance it belongs in the old year.
+ var ny = new Date("January 1 " + Y() + " 00:00:00");
+ var nyDay = ny.getDay()!=0?ny.getDay()-1:6;
+ if (
+ (afterNY <= 2) &&
+ (nyDay >=4) &&
+ (afterNY >= (6-nyDay))
+ ) {
+ // Since I'm not sure we can just always return 53,
+ // i call the function here again, using the last day
+ // of the previous year, as the date, and then just
+ // return that week.
+ var prevNY = new Date("December 31 " + (Y()-1) + " 00:00:00");
+ return prevNY.formatDate("W");
+ }
+
+ // week 1, is the week that has the first thursday in it.
+ // note that this value is not zero index.
+ if (nyDay <= 3) {
+ // first day of the year fell on a thursday, or earlier.
+ return 1 + Math.floor( ( z() + nyDay ) / 7 );
+ } else {
+ // first day of the year fell on a friday, or later.
+ return 1 + Math.floor( ( z() - ( 7 - nyDay ) ) / 7 );
+ }
+ }
+ function w() {
+ // Numeric representation of the day of the week
+ return self.getDay();
+ }
+
+ function Y() {
+ // A full numeric representation of a year, 4 digits
+
+ // we first check, if getFullYear is supported. if it
+ // is, we just use that. ppks code is nice, but wont
+ // work with dates outside 1900-2038, or something like that
+ if (self.getFullYear) {
+ var newDate = new Date("January 1 2001 00:00:00 +0000");
+ var x = newDate .getFullYear();
+ if (x == 2001) {
+ // i trust the method now
+ return self.getFullYear();
+ }
+ }
+ // else, do this:
+ // codes thanks to ppk:
+ // http://www.xs4all.nl/~ppk/js/introdate.html
+ var x = self.getYear();
+ var y = x % 100;
+ y += (y < 38) ? 2000 : 1900;
+ return y;
+ }
+ function y() {
+ // A two-digit representation of a year
+ var y = Y()+"";
+ return y.substring(y.length-2,y.length);
+ }
+ function z() {
+ // The day of the year, zero indexed! 0 through 366
+ var t = new Date("January 1 " + Y() + " 00:00:00");
+ var diff = self.getTime() - t.getTime();
+ return Math.floor(diff/1000/60/60/24);
+ }
+
+ var self = this;
+ if (time) {
+ // save time
+ var prevTime = self.getTime();
+ self.setTime(time);
+ }
+
+ var ia = input.split("");
+ var ij = 0;
+ while (ia[ij]) {
+ if (ia[ij] == "\\") {
+ // this is our way of allowing users to escape stuff
+ ia.splice(ij,1);
+ } else {
+ if (arrayExists(switches,ia[ij])) {
+ ia[ij] = eval(ia[ij] + "()");
+ }
+ }
+ ij++;
+ }
+ // reset time, back to what it was
+ if (prevTime) {
+ self.setTime(prevTime);
+ }
+ return ia.join("");
+}
+
+var date = new Date("1/1/2007 1:11:11");
+
+for (i = 0; i < 500; ++i) {
+ var shortFormat = date.formatDate("Y-m-d");
+ var longFormat = date.formatDate("l, F d, Y g:i:s A");
+ date.setTime(date.getTime() + 84266956);
+}
+
diff --git a/tests/benchmarks/script/sunspider/tests/date-format-xparb.js b/tests/benchmarks/script/sunspider/tests/date-format-xparb.js
new file mode 100644
index 0000000000..1f0955649e
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/date-format-xparb.js
@@ -0,0 +1,417 @@
+/*
+ * Copyright (C) 2004 Baron Schwartz <baron at sequent dot org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, version 2.1.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ */
+
+Date.parseFunctions = {count:0};
+Date.parseRegexes = [];
+Date.formatFunctions = {count:0};
+
+Date.prototype.dateFormat = function(format) {
+ if (Date.formatFunctions[format] == null) {
+ Date.createNewFormat(format);
+ }
+ var func = Date.formatFunctions[format];
+ return this[func]();
+}
+
+Date.createNewFormat = function(format) {
+ var funcName = "format" + Date.formatFunctions.count++;
+ Date.formatFunctions[format] = funcName;
+ var code = "Date.prototype." + funcName + " = function(){return ";
+ var special = false;
+ var ch = '';
+ for (var i = 0; i < format.length; ++i) {
+ ch = format.charAt(i);
+ if (!special && ch == "\\") {
+ special = true;
+ }
+ else if (special) {
+ special = false;
+ code += "'" + String.escape(ch) + "' + ";
+ }
+ else {
+ code += Date.getFormatCode(ch);
+ }
+ }
+ eval(code.substring(0, code.length - 3) + ";}");
+}
+
+Date.getFormatCode = function(character) {
+ switch (character) {
+ case "d":
+ return "String.leftPad(this.getDate(), 2, '0') + ";
+ case "D":
+ return "Date.dayNames[this.getDay()].substring(0, 3) + ";
+ case "j":
+ return "this.getDate() + ";
+ case "l":
+ return "Date.dayNames[this.getDay()] + ";
+ case "S":
+ return "this.getSuffix() + ";
+ case "w":
+ return "this.getDay() + ";
+ case "z":
+ return "this.getDayOfYear() + ";
+ case "W":
+ return "this.getWeekOfYear() + ";
+ case "F":
+ return "Date.monthNames[this.getMonth()] + ";
+ case "m":
+ return "String.leftPad(this.getMonth() + 1, 2, '0') + ";
+ case "M":
+ return "Date.monthNames[this.getMonth()].substring(0, 3) + ";
+ case "n":
+ return "(this.getMonth() + 1) + ";
+ case "t":
+ return "this.getDaysInMonth() + ";
+ case "L":
+ return "(this.isLeapYear() ? 1 : 0) + ";
+ case "Y":
+ return "this.getFullYear() + ";
+ case "y":
+ return "('' + this.getFullYear()).substring(2, 4) + ";
+ case "a":
+ return "(this.getHours() < 12 ? 'am' : 'pm') + ";
+ case "A":
+ return "(this.getHours() < 12 ? 'AM' : 'PM') + ";
+ case "g":
+ return "((this.getHours() %12) ? this.getHours() % 12 : 12) + ";
+ case "G":
+ return "this.getHours() + ";
+ case "h":
+ return "String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";
+ case "H":
+ return "String.leftPad(this.getHours(), 2, '0') + ";
+ case "i":
+ return "String.leftPad(this.getMinutes(), 2, '0') + ";
+ case "s":
+ return "String.leftPad(this.getSeconds(), 2, '0') + ";
+ case "O":
+ return "this.getGMTOffset() + ";
+ case "T":
+ return "this.getTimezone() + ";
+ case "Z":
+ return "(this.getTimezoneOffset() * -60) + ";
+ default:
+ return "'" + String.escape(character) + "' + ";
+ }
+}
+
+Date.parseDate = function(input, format) {
+ if (Date.parseFunctions[format] == null) {
+ Date.createParser(format);
+ }
+ var func = Date.parseFunctions[format];
+ return Date[func](input);
+}
+
+Date.createParser = function(format) {
+ var funcName = "parse" + Date.parseFunctions.count++;
+ var regexNum = Date.parseRegexes.length;
+ var currentGroup = 1;
+ Date.parseFunctions[format] = funcName;
+
+ var code = "Date." + funcName + " = function(input){\n"
+ + "var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1;\n"
+ + "var d = new Date();\n"
+ + "y = d.getFullYear();\n"
+ + "m = d.getMonth();\n"
+ + "d = d.getDate();\n"
+ + "var results = input.match(Date.parseRegexes[" + regexNum + "]);\n"
+ + "if (results && results.length > 0) {"
+ var regex = "";
+
+ var special = false;
+ var ch = '';
+ for (var i = 0; i < format.length; ++i) {
+ ch = format.charAt(i);
+ if (!special && ch == "\\") {
+ special = true;
+ }
+ else if (special) {
+ special = false;
+ regex += String.escape(ch);
+ }
+ else {
+ obj = Date.formatCodeToRegex(ch, currentGroup);
+ currentGroup += obj.g;
+ regex += obj.s;
+ if (obj.g && obj.c) {
+ code += obj.c;
+ }
+ }
+ }
+
+ code += "if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"
+ + "{return new Date(y, m, d, h, i, s);}\n"
+ + "else if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"
+ + "{return new Date(y, m, d, h, i);}\n"
+ + "else if (y > 0 && m >= 0 && d > 0 && h >= 0)\n"
+ + "{return new Date(y, m, d, h);}\n"
+ + "else if (y > 0 && m >= 0 && d > 0)\n"
+ + "{return new Date(y, m, d);}\n"
+ + "else if (y > 0 && m >= 0)\n"
+ + "{return new Date(y, m);}\n"
+ + "else if (y > 0)\n"
+ + "{return new Date(y);}\n"
+ + "}return null;}";
+
+ Date.parseRegexes[regexNum] = new RegExp("^" + regex + "$");
+ eval(code);
+}
+
+Date.formatCodeToRegex = function(character, currentGroup) {
+ switch (character) {
+ case "D":
+ return {g:0,
+ c:null,
+ s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};
+ case "j":
+ case "d":
+ return {g:1,
+ c:"d = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{1,2})"};
+ case "l":
+ return {g:0,
+ c:null,
+ s:"(?:" + Date.dayNames.join("|") + ")"};
+ case "S":
+ return {g:0,
+ c:null,
+ s:"(?:st|nd|rd|th)"};
+ case "w":
+ return {g:0,
+ c:null,
+ s:"\\d"};
+ case "z":
+ return {g:0,
+ c:null,
+ s:"(?:\\d{1,3})"};
+ case "W":
+ return {g:0,
+ c:null,
+ s:"(?:\\d{2})"};
+ case "F":
+ return {g:1,
+ c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "].substring(0, 3)], 10);\n",
+ s:"(" + Date.monthNames.join("|") + ")"};
+ case "M":
+ return {g:1,
+ c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "]], 10);\n",
+ s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};
+ case "n":
+ case "m":
+ return {g:1,
+ c:"m = parseInt(results[" + currentGroup + "], 10) - 1;\n",
+ s:"(\\d{1,2})"};
+ case "t":
+ return {g:0,
+ c:null,
+ s:"\\d{1,2}"};
+ case "L":
+ return {g:0,
+ c:null,
+ s:"(?:1|0)"};
+ case "Y":
+ return {g:1,
+ c:"y = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{4})"};
+ case "y":
+ return {g:1,
+ c:"var ty = parseInt(results[" + currentGroup + "], 10);\n"
+ + "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",
+ s:"(\\d{1,2})"};
+ case "a":
+ return {g:1,
+ c:"if (results[" + currentGroup + "] == 'am') {\n"
+ + "if (h == 12) { h = 0; }\n"
+ + "} else { if (h < 12) { h += 12; }}",
+ s:"(am|pm)"};
+ case "A":
+ return {g:1,
+ c:"if (results[" + currentGroup + "] == 'AM') {\n"
+ + "if (h == 12) { h = 0; }\n"
+ + "} else { if (h < 12) { h += 12; }}",
+ s:"(AM|PM)"};
+ case "g":
+ case "G":
+ case "h":
+ case "H":
+ return {g:1,
+ c:"h = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{1,2})"};
+ case "i":
+ return {g:1,
+ c:"i = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{2})"};
+ case "s":
+ return {g:1,
+ c:"s = parseInt(results[" + currentGroup + "], 10);\n",
+ s:"(\\d{2})"};
+ case "O":
+ return {g:0,
+ c:null,
+ s:"[+-]\\d{4}"};
+ case "T":
+ return {g:0,
+ c:null,
+ s:"[A-Z]{3}"};
+ case "Z":
+ return {g:0,
+ c:null,
+ s:"[+-]\\d{1,5}"};
+ default:
+ return {g:0,
+ c:null,
+ s:String.escape(character)};
+ }
+}
+
+Date.prototype.getTimezone = function() {
+ return this.toString().replace(
+ /^.*? ([A-Z]{3}) [0-9]{4}.*$/, "$1").replace(
+ /^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/, "$1$2$3");
+}
+
+Date.prototype.getGMTOffset = function() {
+ return (this.getTimezoneOffset() > 0 ? "-" : "+")
+ + String.leftPad(Math.floor(this.getTimezoneOffset() / 60), 2, "0")
+ + String.leftPad(this.getTimezoneOffset() % 60, 2, "0");
+}
+
+Date.prototype.getDayOfYear = function() {
+ var num = 0;
+ Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
+ for (var i = 0; i < this.getMonth(); ++i) {
+ num += Date.daysInMonth[i];
+ }
+ return num + this.getDate() - 1;
+}
+
+Date.prototype.getWeekOfYear = function() {
+ // Skip to Thursday of this week
+ var now = this.getDayOfYear() + (4 - this.getDay());
+ // Find the first Thursday of the year
+ var jan1 = new Date(this.getFullYear(), 0, 1);
+ var then = (7 - jan1.getDay() + 4);
+ document.write(then);
+ return String.leftPad(((now - then) / 7) + 1, 2, "0");
+}
+
+Date.prototype.isLeapYear = function() {
+ var year = this.getFullYear();
+ return ((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));
+}
+
+Date.prototype.getFirstDayOfMonth = function() {
+ var day = (this.getDay() - (this.getDate() - 1)) % 7;
+ return (day < 0) ? (day + 7) : day;
+}
+
+Date.prototype.getLastDayOfMonth = function() {
+ var day = (this.getDay() + (Date.daysInMonth[this.getMonth()] - this.getDate())) % 7;
+ return (day < 0) ? (day + 7) : day;
+}
+
+Date.prototype.getDaysInMonth = function() {
+ Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
+ return Date.daysInMonth[this.getMonth()];
+}
+
+Date.prototype.getSuffix = function() {
+ switch (this.getDate()) {
+ case 1:
+ case 21:
+ case 31:
+ return "st";
+ case 2:
+ case 22:
+ return "nd";
+ case 3:
+ case 23:
+ return "rd";
+ default:
+ return "th";
+ }
+}
+
+String.escape = function(string) {
+ return string.replace(/('|\\)/g, "\\$1");
+}
+
+String.leftPad = function (val, size, ch) {
+ var result = new String(val);
+ if (ch == null) {
+ ch = " ";
+ }
+ while (result.length < size) {
+ result = ch + result;
+ }
+ return result;
+}
+
+Date.daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
+Date.monthNames =
+ ["January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"];
+Date.dayNames =
+ ["Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"];
+Date.y2kYear = 50;
+Date.monthNumbers = {
+ Jan:0,
+ Feb:1,
+ Mar:2,
+ Apr:3,
+ May:4,
+ Jun:5,
+ Jul:6,
+ Aug:7,
+ Sep:8,
+ Oct:9,
+ Nov:10,
+ Dec:11};
+Date.patterns = {
+ ISO8601LongPattern:"Y-m-d H:i:s",
+ ISO8601ShortPattern:"Y-m-d",
+ ShortDatePattern: "n/j/Y",
+ LongDatePattern: "l, F d, Y",
+ FullDateTimePattern: "l, F d, Y g:i:s A",
+ MonthDayPattern: "F d",
+ ShortTimePattern: "g:i A",
+ LongTimePattern: "g:i:s A",
+ SortableDateTimePattern: "Y-m-d\\TH:i:s",
+ UniversalSortableDateTimePattern: "Y-m-d H:i:sO",
+ YearMonthPattern: "F, Y"};
+
+var date = new Date("1/1/2007 1:11:11");
+
+for (i = 0; i < 4000; ++i) {
+ var shortFormat = date.dateFormat("Y-m-d");
+ var longFormat = date.dateFormat("l, F d, Y g:i:s A");
+ date.setTime(date.getTime() + 84266956);
+}
diff --git a/tests/benchmarks/script/sunspider/tests/math-cordic.js b/tests/benchmarks/script/sunspider/tests/math-cordic.js
new file mode 100644
index 0000000000..4d3833b1ef
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/math-cordic.js
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) Rich Moore. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY 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 APPLE COMPUTER, INC. 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.
+ */
+
+/////. Start CORDIC
+
+var AG_CONST = 0.6072529350;
+
+function FIXED(X)
+{
+ return X * 65536.0;
+}
+
+function FLOAT(X)
+{
+ return X / 65536.0;
+}
+
+function DEG2RAD(X)
+{
+ return 0.017453 * (X);
+}
+
+var Angles = [
+ FIXED(45.0), FIXED(26.565), FIXED(14.0362), FIXED(7.12502),
+ FIXED(3.57633), FIXED(1.78991), FIXED(0.895174), FIXED(0.447614),
+ FIXED(0.223811), FIXED(0.111906), FIXED(0.055953),
+ FIXED(0.027977)
+ ];
+
+
+function cordicsincos() {
+ var X;
+ var Y;
+ var TargetAngle;
+ var CurrAngle;
+ var Step;
+
+ X = FIXED(AG_CONST); /* AG_CONST * cos(0) */
+ Y = 0; /* AG_CONST * sin(0) */
+
+ TargetAngle = FIXED(28.027);
+ CurrAngle = 0;
+ for (Step = 0; Step < 12; Step++) {
+ var NewX;
+ if (TargetAngle > CurrAngle) {
+ NewX = X - (Y >> Step);
+ Y = (X >> Step) + Y;
+ X = NewX;
+ CurrAngle += Angles[Step];
+ } else {
+ NewX = X + (Y >> Step);
+ Y = -(X >> Step) + Y;
+ X = NewX;
+ CurrAngle -= Angles[Step];
+ }
+ }
+}
+
+///// End CORDIC
+
+function cordic( runs ) {
+ var start = new Date();
+
+ for ( var i = 0 ; i < runs ; i++ ) {
+ cordicsincos();
+ }
+
+ var end = new Date();
+
+ return end.getTime() - start.getTime();
+}
+
+cordic(25000);
diff --git a/tests/benchmarks/script/sunspider/tests/math-partial-sums.js b/tests/benchmarks/script/sunspider/tests/math-partial-sums.js
new file mode 100644
index 0000000000..d082d79945
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/math-partial-sums.js
@@ -0,0 +1,33 @@
+// The Computer Language Shootout
+// http://shootout.alioth.debian.org/
+// contributed by Isaac Gouy
+
+function partial(n){
+ var a1 = a2 = a3 = a4 = a5 = a6 = a7 = a8 = a9 = 0.0;
+ var twothirds = 2.0/3.0;
+ var alt = -1.0;
+ var k2 = k3 = sk = ck = 0.0;
+
+ for (var k = 1; k <= n; k++){
+ k2 = k*k;
+ k3 = k2*k;
+ sk = Math.sin(k);
+ ck = Math.cos(k);
+ alt = -alt;
+
+ a1 += Math.pow(twothirds,k-1);
+ a2 += Math.pow(k,-0.5);
+ a3 += 1.0/(k*(k+1.0));
+ a4 += 1.0/(k3 * sk*sk);
+ a5 += 1.0/(k3 * ck*ck);
+ a6 += 1.0/k;
+ a7 += 1.0/k2;
+ a8 += alt/k;
+ a9 += alt/(2*k -1);
+ }
+}
+
+for (var i = 1024; i <= 16384; i *= 2) {
+ partial(i);
+}
+
diff --git a/tests/benchmarks/script/sunspider/tests/math-spectral-norm.js b/tests/benchmarks/script/sunspider/tests/math-spectral-norm.js
new file mode 100644
index 0000000000..8139ef370e
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/math-spectral-norm.js
@@ -0,0 +1,51 @@
+// The Great Computer Language Shootout
+// http://shootout.alioth.debian.org/
+//
+// contributed by Ian Osgood
+
+function A(i,j) {
+ return 1/((i+j)*(i+j+1)/2+i+1);
+}
+
+function Au(u,v) {
+ for (var i=0; i<u.length; ++i) {
+ var t = 0;
+ for (var j=0; j<u.length; ++j)
+ t += A(i,j) * u[j];
+ v[i] = t;
+ }
+}
+
+function Atu(u,v) {
+ for (var i=0; i<u.length; ++i) {
+ var t = 0;
+ for (var j=0; j<u.length; ++j)
+ t += A(j,i) * u[j];
+ v[i] = t;
+ }
+}
+
+function AtAu(u,v,w) {
+ Au(u,w);
+ Atu(w,v);
+}
+
+function spectralnorm(n) {
+ var i, u=[], v=[], w=[], vv=0, vBv=0;
+ for (i=0; i<n; ++i) {
+ u[i] = 1; v[i] = w[i] = 0;
+ }
+ for (i=0; i<10; ++i) {
+ AtAu(u,v,w);
+ AtAu(v,u,w);
+ }
+ for (i=0; i<n; ++i) {
+ vBv += u[i]*v[i];
+ vv += v[i]*v[i];
+ }
+ return Math.sqrt(vBv/vv);
+}
+
+for (var i = 6; i <= 48; i *= 2) {
+ spectralnorm(i);
+}
diff --git a/tests/benchmarks/script/sunspider/tests/regexp-dna.js b/tests/benchmarks/script/sunspider/tests/regexp-dna.js
new file mode 100644
index 0000000000..b500e68ad9
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/regexp-dna.js
@@ -0,0 +1,1712 @@
+// The Computer Language Shootout
+// http://shootout.alioth.debian.org/
+//
+// contributed by Jesse Millikan
+// Base on the Ruby version by jose fco. gonzalez
+
+var l;
+var dnaInput = ">ONE Homo sapiens alu\n\
+GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n\
+TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n\
+AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n\
+GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n\
+CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n\
+GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n\
+GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n\
+TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n\
+AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n\
+GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT\n\
+AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC\n\
+AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG\n\
+GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC\n\
+CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG\n\
+AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT\n\
+TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA\n\
+TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT\n\
+GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG\n\
+TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT\n\
+CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG\n\
+CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG\n\
+TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA\n\
+CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG\n\
+AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG\n\
+GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC\n\
+TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA\n\
+TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA\n\
+GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT\n\
+GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC\n\
+ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT\n\
+TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC\n\
+CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG\n\
+CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG\n\
+GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC\n\
+CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT\n\
+GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC\n\
+GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA\n\
+GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA\n\
+GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA\n\
+GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG\n\
+AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT\n\
+CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA\n\
+GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA\n\
+AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC\n\
+GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT\n\
+ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG\n\
+GAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATC\n\
+GCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGC\n\
+GGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGG\n\
+TCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAA\n\
+AAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAG\n\
+GAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACT\n\
+CCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCC\n\
+TGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAG\n\
+ACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGC\n\
+GTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA\n\
+ACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGA\n\
+CAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCA\n\
+CTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCA\n\
+ACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCG\n\
+CCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGG\n\
+AGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTC\n\
+CGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCG\n\
+AGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACC\n\
+CCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAG\n\
+CTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAG\n\
+CCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGG\n\
+CCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATC\n\
+ACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAA\n\
+AAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGC\n\
+TGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCC\n\
+ACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGG\n\
+CTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGG\n\
+AGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATT\n\
+AGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAA\n\
+TCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGC\n\
+CTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAA\n\
+TCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAG\n\
+CCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGT\n\
+GGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCG\n\
+GGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAG\n\
+CGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG\n\
+GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATG\n\
+GTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGT\n\
+AATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTT\n\
+GCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCT\n\
+CAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCG\n\
+GGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTC\n\
+TCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACT\n\
+CGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAG\n\
+ATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGG\n\
+CGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTG\n\
+AGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATA\n\
+CAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGG\n\
+CAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGC\n\
+ACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCAC\n\
+GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTC\n\
+GAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCG\n\
+GGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCT\n\
+TGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGG\n\
+CGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCA\n\
+GCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGG\n\
+CCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGC\n\
+GCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGG\n\
+CGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGA\n\
+CTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGG\n\
+CCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAA\n\
+ACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCC\n\
+CAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGT\n\
+GAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAA\n\
+AGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGG\n\
+ATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAC\n\
+TAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGA\n\
+GGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGC\n\
+GCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGG\n\
+TGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTC\n\
+AGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAA\n\
+ATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGA\n\
+GAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC\n\
+AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTG\n\
+TAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGAC\n\
+CAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGT\n\
+GGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC\n\
+CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACA\n\
+GAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACT\n\
+TTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAAC\n\
+ATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCC\n\
+TGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAG\n\
+GTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCG\n\
+TCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAG\n\
+GCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCC\n\
+GTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCT\n\
+ACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCC\n\
+GAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCC\n\
+GGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCAC\n\
+CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAA\n\
+ATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTG\n\
+AGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCAC\n\
+TGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCT\n\
+CACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAG\n\
+TTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAG\n\
+CCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATC\n\
+GCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCT\n\
+GGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATC\n\
+CCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCC\n\
+TGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGG\n\
+CGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG\n\
+AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCG\n\
+AGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG\n\
+AGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGT\n\
+GAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAA\n\
+TCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGC\n\
+AGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCA\n\
+AAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGG\n\
+CGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTC\n\
+TACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCG\n\
+GGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGAT\n\
+CGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCG\n\
+CGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAG\n\
+GTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACA\n\
+AAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCA\n\
+GGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCAC\n\
+TCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGC\n\
+CTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA\n\
+GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGG\n\
+CGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTG\n\
+AACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCG\n\
+ACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGC\n\
+ACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCC\n\
+AACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGC\n\
+GCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCG\n\
+GAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACT\n\
+CCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCC\n\
+GAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAAC\n\
+CCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA\n\
+GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGA\n\
+GCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAG\n\
+GCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGAT\n\
+CACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTA\n\
+AAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGG\n\
+CTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGC\n\
+CACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTG\n\
+GCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAG\n\
+GAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAT\n\
+TAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGA\n\
+ATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAG\n\
+CCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTA\n\
+ATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCA\n\
+GCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGG\n\
+TGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCC\n\
+GGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGA\n\
+GCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTT\n\
+GGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACAT\n\
+GGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTG\n\
+TAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGT\n\
+TGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTC\n\
+TCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGC\n\
+GGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGT\n\
+CTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTAC\n\
+TCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGA\n\
+GATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGG\n\
+GCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCT\n\
+GAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT\n\
+ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAG\n\
+GCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTG\n\
+CACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCA\n\
+CGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTT\n\
+CGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCC\n\
+GGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGC\n\
+TTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGG\n\
+GCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCC\n\
+AGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTG\n\
+GCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCG\n\
+CGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAG\n\
+GCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAG\n\
+ACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAG\n\
+GCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGA\n\
+AACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATC\n\
+CCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAG\n\
+TGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAA\n\
+AAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCG\n\
+GATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTA\n\
+CTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGG\n\
+AGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCG\n\
+CGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCG\n\
+GTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGT\n\
+CAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAA\n\
+AATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGG\n\
+AGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTC\n\
+CAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCT\n\
+GTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA\n\
+CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCG\n\
+TGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAA\n\
+CCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGAC\n\
+AGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCAC\n\
+TTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAA\n\
+CATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGC\n\
+CTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGA\n\
+GGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCC\n\
+GTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGA\n\
+GGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCC\n\
+CGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGC\n\
+TACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGC\n\
+CGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGC\n\
+CGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCA\n\
+CCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAA\n\
+AATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCT\n\
+GAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCA\n\
+CTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGC\n\
+TCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGA\n\
+GTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTA\n\
+GCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAAT\n\
+CGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCC\n\
+TGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAAT\n\
+CCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGC\n\
+CTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTG\n\
+GCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGG\n\
+GAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGC\n\
+GAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG\n\
+GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGG\n\
+TGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTA\n\
+ATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTG\n\
+CAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTC\n\
+AAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGG\n\
+GCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCT\n\
+CTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTC\n\
+GGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGA\n\
+TCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGC\n\
+GCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGA\n\
+GGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATAC\n\
+AAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGC\n\
+AGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCA\n\
+CTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACG\n\
+CCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCG\n\
+AGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGG\n\
+GCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTT\n\
+GAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGC\n\
+GACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAG\n\
+CACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGC\n\
+CAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCG\n\
+CGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGC\n\
+GGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGAC\n\
+TCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGC\n\
+CGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAA\n\
+CCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCC\n\
+AGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTG\n\
+AGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA\n\
+GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n\
+TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n\
+AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n\
+GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n\
+CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n\
+GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n\
+GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n\
+TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n\
+AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n\
+GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT\n\
+AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC\n\
+AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG\n\
+GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC\n\
+CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG\n\
+AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT\n\
+TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA\n\
+TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT\n\
+GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG\n\
+TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT\n\
+CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG\n\
+CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG\n\
+TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA\n\
+CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG\n\
+AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG\n\
+GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC\n\
+TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA\n\
+TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA\n\
+GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT\n\
+GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC\n\
+ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT\n\
+TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC\n\
+CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG\n\
+CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG\n\
+GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC\n\
+CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT\n\
+GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC\n\
+GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA\n\
+GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA\n\
+GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA\n\
+GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG\n\
+AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT\n\
+CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA\n\
+GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA\n\
+AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC\n\
+GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT\n\
+ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG\n\
+GAGGCTGAGGCAGGAGAATC\n\
+>TWO IUB ambiguity codes\n\
+cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg\n\
+tactDtDagcctatttSVHtHttKtgtHMaSattgWaHKHttttagacatWatgtRgaaa\n\
+NtactMcSMtYtcMgRtacttctWBacgaaatatagScDtttgaagacacatagtVgYgt\n\
+cattHWtMMWcStgttaggKtSgaYaaccWStcgBttgcgaMttBYatcWtgacaYcaga\n\
+gtaBDtRacttttcWatMttDBcatWtatcttactaBgaYtcttgttttttttYaaScYa\n\
+HgtgttNtSatcMtcVaaaStccRcctDaataataStcYtRDSaMtDttgttSagtRRca\n\
+tttHatSttMtWgtcgtatSSagactYaaattcaMtWatttaSgYttaRgKaRtccactt\n\
+tattRggaMcDaWaWagttttgacatgttctacaaaRaatataataaMttcgDacgaSSt\n\
+acaStYRctVaNMtMgtaggcKatcttttattaaaaagVWaHKYagtttttatttaacct\n\
+tacgtVtcVaattVMBcttaMtttaStgacttagattWWacVtgWYagWVRctDattBYt\n\
+gtttaagaagattattgacVatMaacattVctgtBSgaVtgWWggaKHaatKWcBScSWa\n\
+accRVacacaaactaccScattRatatKVtactatatttHttaagtttSKtRtacaaagt\n\
+RDttcaaaaWgcacatWaDgtDKacgaacaattacaRNWaatHtttStgttattaaMtgt\n\
+tgDcgtMgcatBtgcttcgcgaDWgagctgcgaggggVtaaScNatttacttaatgacag\n\
+cccccacatYScaMgtaggtYaNgttctgaMaacNaMRaacaaacaKctacatagYWctg\n\
+ttWaaataaaataRattagHacacaagcgKatacBttRttaagtatttccgatctHSaat\n\
+actcNttMaagtattMtgRtgaMgcataatHcMtaBSaRattagttgatHtMttaaKagg\n\
+YtaaBataSaVatactWtataVWgKgttaaaacagtgcgRatatacatVtHRtVYataSa\n\
+KtWaStVcNKHKttactatccctcatgWHatWaRcttactaggatctataDtDHBttata\n\
+aaaHgtacVtagaYttYaKcctattcttcttaataNDaaggaaaDYgcggctaaWSctBa\n\
+aNtgctggMBaKctaMVKagBaactaWaDaMaccYVtNtaHtVWtKgRtcaaNtYaNacg\n\
+gtttNattgVtttctgtBaWgtaattcaagtcaVWtactNggattctttaYtaaagccgc\n\
+tcttagHVggaYtgtNcDaVagctctctKgacgtatagYcctRYHDtgBattDaaDgccK\n\
+tcHaaStttMcctagtattgcRgWBaVatHaaaataYtgtttagMDMRtaataaggatMt\n\
+ttctWgtNtgtgaaaaMaatatRtttMtDgHHtgtcattttcWattRSHcVagaagtacg\n\
+ggtaKVattKYagactNaatgtttgKMMgYNtcccgSKttctaStatatNVataYHgtNa\n\
+BKRgNacaactgatttcctttaNcgatttctctataScaHtataRagtcRVttacDSDtt\n\
+aRtSatacHgtSKacYagttMHtWataggatgactNtatSaNctataVtttRNKtgRacc\n\
+tttYtatgttactttttcctttaaacatacaHactMacacggtWataMtBVacRaSaatc\n\
+cgtaBVttccagccBcttaRKtgtgcctttttRtgtcagcRttKtaaacKtaaatctcac\n\
+aattgcaNtSBaaccgggttattaaBcKatDagttactcttcattVtttHaaggctKKga\n\
+tacatcBggScagtVcacattttgaHaDSgHatRMaHWggtatatRgccDttcgtatcga\n\
+aacaHtaagttaRatgaVacttagattVKtaaYttaaatcaNatccRttRRaMScNaaaD\n\
+gttVHWgtcHaaHgacVaWtgttScactaagSgttatcttagggDtaccagWattWtRtg\n\
+ttHWHacgattBtgVcaYatcggttgagKcWtKKcaVtgaYgWctgYggVctgtHgaNcV\n\
+taBtWaaYatcDRaaRtSctgaHaYRttagatMatgcatttNattaDttaattgttctaa\n\
+ccctcccctagaWBtttHtBccttagaVaatMcBHagaVcWcagBVttcBtaYMccagat\n\
+gaaaaHctctaacgttagNWRtcggattNatcRaNHttcagtKttttgWatWttcSaNgg\n\
+gaWtactKKMaacatKatacNattgctWtatctaVgagctatgtRaHtYcWcttagccaa\n\
+tYttWttaWSSttaHcaaaaagVacVgtaVaRMgattaVcDactttcHHggHRtgNcctt\n\
+tYatcatKgctcctctatVcaaaaKaaaagtatatctgMtWtaaaacaStttMtcgactt\n\
+taSatcgDataaactaaacaagtaaVctaggaSccaatMVtaaSKNVattttgHccatca\n\
+cBVctgcaVatVttRtactgtVcaattHgtaaattaaattttYtatattaaRSgYtgBag\n\
+aHSBDgtagcacRHtYcBgtcacttacactaYcgctWtattgSHtSatcataaatataHt\n\
+cgtYaaMNgBaatttaRgaMaatatttBtttaaaHHKaatctgatWatYaacttMctctt\n\
+ttVctagctDaaagtaVaKaKRtaacBgtatccaaccactHHaagaagaaggaNaaatBW\n\
+attccgStaMSaMatBttgcatgRSacgttVVtaaDMtcSgVatWcaSatcttttVatag\n\
+ttactttacgatcaccNtaDVgSRcgVcgtgaacgaNtaNatatagtHtMgtHcMtagaa\n\
+attBgtataRaaaacaYKgtRccYtatgaagtaataKgtaaMttgaaRVatgcagaKStc\n\
+tHNaaatctBBtcttaYaBWHgtVtgacagcaRcataWctcaBcYacYgatDgtDHccta\n\
+aagacYRcaggattHaYgtKtaatgcVcaataMYacccatatcacgWDBtgaatcBaata\n\
+cKcttRaRtgatgaBDacggtaattaaYtataStgVHDtDctgactcaaatKtacaatgc\n\
+gYatBtRaDatHaactgtttatatDttttaaaKVccYcaaccNcBcgHaaVcattHctcg\n\
+attaaatBtatgcaaaaatYMctSactHatacgaWacattacMBgHttcgaatVaaaaca\n\
+BatatVtctgaaaaWtctRacgBMaatSgRgtgtcgactatcRtattaScctaStagKga\n\
+DcWgtYtDDWKRgRtHatRtggtcgaHgggcgtattaMgtcagccaBggWVcWctVaaat\n\
+tcgNaatcKWagcNaHtgaaaSaaagctcYctttRVtaaaatNtataaccKtaRgtttaM\n\
+tgtKaBtRtNaggaSattHatatWactcagtgtactaKctatttgRYYatKatgtccgtR\n\
+tttttatttaatatVgKtttgtatgtNtataRatWYNgtRtHggtaaKaYtKSDcatcKg\n\
+taaYatcSRctaVtSMWtVtRWHatttagataDtVggacagVcgKWagBgatBtaaagNc\n\
+aRtagcataBggactaacacRctKgttaatcctHgDgttKHHagttgttaatgHBtatHc\n\
+DaagtVaBaRccctVgtgDtacRHSctaagagcggWYaBtSaKtHBtaaactYacgNKBa\n\
+VYgtaacttagtVttcttaatgtBtatMtMtttaattaatBWccatRtttcatagVgMMt\n\
+agctStKctaMactacDNYgKYHgaWcgaHgagattacVgtttgtRaSttaWaVgataat\n\
+gtgtYtaStattattMtNgWtgttKaccaatagNYttattcgtatHcWtctaaaNVYKKt\n\
+tWtggcDtcgaagtNcagatacgcattaagaccWctgcagcttggNSgaNcHggatgtVt\n\
+catNtRaaBNcHVagagaaBtaaSggDaatWaatRccaVgggStctDaacataKttKatt\n\
+tggacYtattcSatcttagcaatgaVBMcttDattctYaaRgatgcattttNgVHtKcYR\n\
+aatRKctgtaaacRatVSagctgtWacBtKVatctgttttKcgtctaaDcaagtatcSat\n\
+aWVgcKKataWaYttcccSaatgaaaacccWgcRctWatNcWtBRttYaattataaNgac\n\
+acaatagtttVNtataNaYtaatRaVWKtBatKagtaatataDaNaaaaataMtaagaaS\n\
+tccBcaatNgaataWtHaNactgtcDtRcYaaVaaaaaDgtttRatctatgHtgttKtga\n\
+aNSgatactttcgagWaaatctKaaDaRttgtggKKagcDgataaattgSaacWaVtaNM\n\
+acKtcaDaaatttctRaaVcagNacaScRBatatctRatcctaNatWgRtcDcSaWSgtt\n\
+RtKaRtMtKaatgttBHcYaaBtgatSgaSWaScMgatNtctcctatttctYtatMatMt\n\
+RRtSaattaMtagaaaaStcgVgRttSVaScagtgDtttatcatcatacRcatatDctta\n\
+tcatVRtttataaHtattcYtcaaaatactttgVctagtaaYttagatagtSYacKaaac\n\
+gaaKtaaatagataatSatatgaaatSgKtaatVtttatcctgKHaatHattagaaccgt\n\
+YaaHactRcggSBNgtgctaaBagBttgtRttaaattYtVRaaaattgtaatVatttctc\n\
+ttcatgBcVgtgKgaHaaatattYatagWacNctgaaMcgaattStagWaSgtaaKagtt\n\
+ttaagaDgatKcctgtaHtcatggKttVDatcaaggtYcgccagNgtgcVttttagagat\n\
+gctaccacggggtNttttaSHaNtatNcctcatSaaVgtactgBHtagcaYggYVKNgta\n\
+KBcRttgaWatgaatVtagtcgattYgatgtaatttacDacSctgctaaaStttaWMagD\n\
+aaatcaVYctccgggcgaVtaaWtStaKMgDtttcaaMtVgBaatccagNaaatcYRMBg\n\
+gttWtaaScKttMWtYataRaDBMaDataatHBcacDaaKDactaMgagttDattaHatH\n\
+taYatDtattDcRNStgaatattSDttggtattaaNSYacttcDMgYgBatWtaMagact\n\
+VWttctttgYMaYaacRgHWaattgRtaagcattctMKVStatactacHVtatgatcBtV\n\
+NataaBttYtSttacKgggWgYDtgaVtYgatDaacattYgatggtRDaVDttNactaSa\n\
+MtgNttaacaaSaBStcDctaccacagacgcaHatMataWKYtaYattMcaMtgSttDag\n\
+cHacgatcaHttYaKHggagttccgatYcaatgatRaVRcaagatcagtatggScctata\n\
+ttaNtagcgacgtgKaaWaactSgagtMYtcttccaKtStaacggMtaagNttattatcg\n\
+tctaRcactctctDtaacWYtgaYaSaagaWtNtatttRacatgNaatgttattgWDDcN\n\
+aHcctgaaHacSgaataaRaataMHttatMtgaSDSKatatHHaNtacagtccaYatWtc\n\
+actaactatKDacSaStcggataHgYatagKtaatKagStaNgtatactatggRHacttg\n\
+tattatgtDVagDVaRctacMYattDgtttYgtctatggtKaRSttRccRtaaccttaga\n\
+gRatagSaaMaacgcaNtatgaaatcaRaagataatagatactcHaaYKBctccaagaRa\n\
+BaStNagataggcgaatgaMtagaatgtcaKttaaatgtaWcaBttaatRcggtgNcaca\n\
+aKtttScRtWtgcatagtttWYaagBttDKgcctttatMggNttattBtctagVtacata\n\
+aaYttacacaaRttcYtWttgHcaYYtaMgBaBatctNgcDtNttacgacDcgataaSat\n\
+YaSttWtcctatKaatgcagHaVaacgctgcatDtgttaSataaaaYSNttatagtaNYt\n\
+aDaaaNtggggacttaBggcHgcgtNtaaMcctggtVtaKcgNacNtatVaSWctWtgaW\n\
+cggNaBagctctgaYataMgaagatBSttctatacttgtgtKtaattttRagtDtacata\n\
+tatatgatNHVgBMtKtaKaNttDHaagatactHaccHtcatttaaagttVaMcNgHata\n\
+tKtaNtgYMccttatcaaNagctggacStttcNtggcaVtattactHaSttatgNMVatt\n\
+MMDtMactattattgWMSgtHBttStStgatatRaDaagattttctatMtaaaaaggtac\n\
+taaVttaSacNaatactgMttgacHaHRttgMacaaaatagttaatatWKRgacDgaRta\n\
+tatttattatcYttaWtgtBRtWatgHaaattHataagtVaDtWaVaWtgStcgtMSgaS\n\
+RgMKtaaataVacataatgtaSaatttagtcgaaHtaKaatgcacatcggRaggSKctDc\n\
+agtcSttcccStYtccRtctctYtcaaKcgagtaMttttcRaYDttgttatctaatcata\n\
+NctctgctatcaMatactataggDaHaaSttMtaDtcNatataattctMcStaaBYtaNa\n\
+gatgtaatHagagSttgWHVcttatKaYgDctcttggtgttMcRaVgSgggtagacaata\n\
+aDtaattSaDaNaHaBctattgNtaccaaRgaVtKNtaaYggHtaKKgHcatctWtctDt\n\
+ttctttggSDtNtaStagttataaacaattgcaBaBWggHgcaaaBtYgctaatgaaatW\n\
+cDcttHtcMtWWattBHatcatcaaatctKMagtDNatttWaBtHaaaNgMttaaStagt\n\
+tctctaatDtcRVaYttgttMtRtgtcaSaaYVgSWDRtaatagctcagDgcWWaaaBaa\n\
+RaBctgVgggNgDWStNaNBKcBctaaKtttDcttBaaggBttgaccatgaaaNgttttt\n\
+tttatctatgttataccaaDRaaSagtaVtDtcaWatBtacattaWacttaSgtattggD\n\
+gKaaatScaattacgWcagKHaaccaYcRcaRttaDttRtttHgaHVggcttBaRgtccc\n\
+tDatKaVtKtcRgYtaKttacgtatBtStaagcaattaagaRgBagSaattccSWYttta\n\
+ttVaataNctgHgttaaNBgcVYgtRtcccagWNaaaacaDNaBcaaaaRVtcWMgBagM\n\
+tttattacgDacttBtactatcattggaaatVccggttRttcatagttVYcatYaSHaHc\n\
+ttaaagcNWaHataaaRWtctVtRYtagHtaaaYMataHYtNBctNtKaatattStgaMc\n\
+BtRgctaKtgcScSttDgYatcVtggaaKtaagatWccHccgKYctaNNctacaWctttt\n\
+gcRtgtVcgaKttcMRHgctaHtVaataaDtatgKDcttatBtDttggNtacttttMtga\n\
+acRattaaNagaactcaaaBBVtcDtcgaStaDctgaaaSgttMaDtcgttcaccaaaag\n\
+gWtcKcgSMtcDtatgtttStaaBtatagDcatYatWtaaaBacaKgcaDatgRggaaYc\n\
+taRtccagattDaWtttggacBaVcHtHtaacDacYgtaatataMagaatgHMatcttat\n\
+acgtatttttatattacHactgttataMgStYaattYaccaattgagtcaaattaYtgta\n\
+tcatgMcaDcgggtcttDtKgcatgWRtataatatRacacNRBttcHtBgcRttgtgcgt\n\
+catacMtttBctatctBaatcattMttMYgattaaVYatgDaatVagtattDacaacDMa\n\
+tcMtHcccataagatgBggaccattVWtRtSacatgctcaaggggYtttDtaaNgNtaaB\n\
+atggaatgtctRtaBgBtcNYatatNRtagaacMgagSaSDDSaDcctRagtVWSHtVSR\n\
+ggaacaBVaccgtttaStagaacaMtactccagtttVctaaRaaHttNcttagcaattta\n\
+ttaatRtaaaatctaacDaBttggSagagctacHtaaRWgattcaaBtctRtSHaNtgta\n\
+cattVcaHaNaagtataccacaWtaRtaaVKgMYaWgttaKggKMtKcgWatcaDatYtK\n\
+SttgtacgaccNctSaattcDcatcttcaaaDKttacHtggttHggRRaRcaWacaMtBW\n\
+VHSHgaaMcKattgtaRWttScNattBBatYtaNRgcggaagacHSaattRtttcYgacc\n\
+BRccMacccKgatgaacttcgDgHcaaaaaRtatatDtatYVtttttHgSHaSaatagct\n\
+NYtaHYaVYttattNtttgaaaYtaKttWtctaNtgagaaaNctNDctaaHgttagDcRt\n\
+tatagccBaacgcaRBtRctRtggtaMYYttWtgataatcgaataattattataVaaaaa\n\
+ttacNRVYcaaMacNatRttcKatMctgaagactaattataaYgcKcaSYaatMNctcaa\n\
+cgtgatttttBacNtgatDccaattattKWWcattttatatatgatBcDtaaaagttgaa\n\
+VtaHtaHHtBtataRBgtgDtaataMttRtDgDcttattNtggtctatctaaBcatctaR\n\
+atgNacWtaatgaagtcMNaacNgHttatactaWgcNtaStaRgttaaHacccgaYStac\n\
+aaaatWggaYaWgaattattcMaactcBKaaaRVNcaNRDcYcgaBctKaacaaaaaSgc\n\
+tccYBBHYaVagaatagaaaacagYtctVccaMtcgtttVatcaatttDRtgWctagtac\n\
+RttMctgtDctttcKtWttttataaatgVttgBKtgtKWDaWagMtaaagaaattDVtag\n\
+gttacatcatttatgtcgMHaVcttaBtVRtcgtaYgBRHatttHgaBcKaYWaatcNSc\n\
+tagtaaaaatttacaatcactSWacgtaatgKttWattagttttNaggtctcaagtcact\n\
+attcttctaagKggaataMgtttcataagataaaaatagattatDgcBVHWgaBKttDgc\n\
+atRHaagcaYcRaattattatgtMatatattgHDtcaDtcaaaHctStattaatHaccga\n\
+cNattgatatattttgtgtDtRatagSacaMtcRtcattcccgacacSattgttKaWatt\n\
+NHcaacttccgtttSRtgtctgDcgctcaaMagVtBctBMcMcWtgtaacgactctcttR\n\
+ggRKSttgYtYatDccagttDgaKccacgVatWcataVaaagaataMgtgataaKYaaat\n\
+cHDaacgataYctRtcYatcgcaMgtNttaBttttgatttaRtStgcaacaaaataccVg\n\
+aaDgtVgDcStctatatttattaaaaRKDatagaaagaKaaYYcaYSgKStctccSttac\n\
+agtcNactttDVttagaaagMHttRaNcSaRaMgBttattggtttaRMggatggcKDgWR\n\
+tNaataataWKKacttcKWaaagNaBttaBatMHtccattaacttccccYtcBcYRtaga\n\
+ttaagctaaYBDttaNtgaaaccHcaRMtKtaaHMcNBttaNaNcVcgVttWNtDaBatg\n\
+ataaVtcWKcttRggWatcattgaRagHgaattNtatttctctattaattaatgaDaaMa\n\
+tacgttgggcHaYVaaNaDDttHtcaaHtcVVDgBVagcMacgtgttaaBRNtatRtcag\n\
+taagaggtttaagacaVaaggttaWatctccgtVtaDtcDatttccVatgtacNtttccg\n\
+tHttatKgScBatgtVgHtYcWagcaKtaMYaaHgtaattaSaHcgcagtWNaatNccNN\n\
+YcacgVaagaRacttctcattcccRtgtgtaattagcSttaaStWaMtctNNcSMacatt\n\
+ataaactaDgtatWgtagtttaagaaaattgtagtNagtcaataaatttgatMMYactaa\n\
+tatcggBWDtVcYttcDHtVttatacYaRgaMaacaStaatcRttttVtagaDtcacWat\n\
+ttWtgaaaagaaagNRacDtttStVatBaDNtaactatatcBSMcccaSttccggaMatg\n\
+attaaWatKMaBaBatttgataNctgttKtVaagtcagScgaaaDggaWgtgttttKtWt\n\
+atttHaatgtagttcactaaKMagttSYBtKtaYgaactcagagRtatagtVtatcaaaW\n\
+YagcgNtaDagtacNSaaYDgatBgtcgataacYDtaaactacagWDcYKaagtttatta\n\
+gcatcgagttKcatDaattgattatDtcagRtWSKtcgNtMaaaaacaMttKcaWcaaSV\n\
+MaaaccagMVtaMaDtMaHaBgaacataBBVtaatVYaNSWcSgNtDNaaKacacBttta\n\
+tKtgtttcaaHaMctcagtaacgtcgYtactDcgcctaNgagagcYgatattttaaattt\n\
+ccattttacatttDaaRctattttWctttacgtDatYtttcagacgcaaVttagtaaKaa\n\
+aRtgVtccataBggacttatttgtttaWNtgttVWtaWNVDaattgtatttBaagcBtaa\n\
+BttaaVatcHcaVgacattccNggtcgacKttaaaRtagRtctWagaYggtgMtataatM\n\
+tgaaRttattttgWcttNtDRRgMDKacagaaaaggaaaRStcccagtYccVattaNaaK\n\
+StNWtgacaVtagaagcttSaaDtcacaacgDYacWDYtgtttKatcVtgcMaDaSKStV\n\
+cgtagaaWaKaagtttcHaHgMgMtctataagBtKaaaKKcactggagRRttaagaBaaN\n\
+atVVcgRcKSttDaactagtSttSattgttgaaRYatggttVttaataaHttccaagDtg\n\
+atNWtaagHtgcYtaactRgcaatgMgtgtRaatRaNaacHKtagactactggaatttcg\n\
+ccataacgMctRgatgttaccctaHgtgWaYcactcacYaattcttaBtgacttaaacct\n\
+gYgaWatgBttcttVttcgttWttMcNYgtaaaatctYgMgaaattacNgaHgaacDVVM\n\
+tttggtHtctaaRgtacagacgHtVtaBMNBgattagcttaRcttacaHcRctgttcaaD\n\
+BggttKaacatgKtttYataVaNattccgMcgcgtagtRaVVaattaKaatggttRgaMc\n\
+agtatcWBttNtHagctaatctagaaNaaacaYBctatcgcVctBtgcaaagDgttVtga\n\
+HtactSNYtaaNccatgtgDacgaVtDcgKaRtacDcttgctaagggcagMDagggtBWR\n\
+tttSgccttttttaacgtcHctaVtVDtagatcaNMaVtcVacatHctDWNaataRgcgt\n\
+aVHaggtaaaaSgtttMtattDgBtctgatSgtRagagYtctSaKWaataMgattRKtaa\n\
+catttYcgtaacacattRWtBtcggtaaatMtaaacBatttctKagtcDtttgcBtKYYB\n\
+aKttctVttgttaDtgattttcttccacttgSaaacggaaaNDaattcYNNaWcgaaYat\n\
+tttMgcBtcatRtgtaaagatgaWtgaccaYBHgaatagataVVtHtttVgYBtMctaMt\n\
+cctgaDcYttgtccaaaRNtacagcMctKaaaggatttacatgtttaaWSaYaKttBtag\n\
+DacactagctMtttNaKtctttcNcSattNacttggaacaatDagtattRtgSHaataat\n\
+gccVgacccgatactatccctgtRctttgagaSgatcatatcgDcagWaaHSgctYYWta\n\
+tHttggttctttatVattatcgactaagtgtagcatVgtgHMtttgtttcgttaKattcM\n\
+atttgtttWcaaStNatgtHcaaaDtaagBaKBtRgaBgDtSagtatMtaacYaatYtVc\n\
+KatgtgcaacVaaaatactKcRgtaYtgtNgBBNcKtcttaccttKgaRaYcaNKtactt\n\
+tgagSBtgtRagaNgcaaaNcacagtVtttHWatgttaNatBgtttaatNgVtctgaata\n\
+tcaRtattcttttttttRaaKcRStctcggDgKagattaMaaaKtcaHacttaataataK\n\
+taRgDtKVBttttcgtKaggHHcatgttagHggttNctcgtatKKagVagRaaaggaaBt\n\
+NatttVKcRttaHctaHtcaaatgtaggHccaBataNaNaggttgcWaatctgatYcaaa\n\
+HaatWtaVgaaBttagtaagaKKtaaaKtRHatMaDBtBctagcatWtatttgWttVaaa\n\
+ScMNattRactttgtYtttaaaagtaagtMtaMaSttMBtatgaBtttaKtgaatgagYg\n\
+tNNacMtcNRacMMHcttWtgtRtctttaacaacattattcYaMagBaacYttMatcttK\n\
+cRMtgMNccattaRttNatHaHNaSaaHMacacaVaatacaKaSttHatattMtVatWga\n\
+ttttttaYctttKttHgScWaacgHtttcaVaaMgaacagNatcgttaacaaaaagtaca\n\
+HBNaattgttKtcttVttaaBtctgctacgBgcWtttcaggacacatMgacatcccagcg\n\
+gMgaVKaBattgacttaatgacacacaaaaaatRKaaBctacgtRaDcgtagcVBaacDS\n\
+BHaaaaSacatatacagacRNatcttNaaVtaaaataHattagtaaaaSWccgtatWatg\n\
+gDttaactattgcccatcttHaSgYataBttBaactattBtcHtgatcaataSttaBtat\n\
+KSHYttWggtcYtttBttaataccRgVatStaHaKagaatNtagRMNgtcttYaaSaact\n\
+cagDSgagaaYtMttDtMRVgWKWtgMaKtKaDttttgactatacataatcNtatNaHat\n\
+tVagacgYgatatatttttgtStWaaatctWaMgagaRttRatacgStgattcttaagaD\n\
+taWccaaatRcagcagaaNKagtaaDggcgccBtYtagSBMtactaaataMataBSacRM\n\
+gDgattMMgtcHtcaYDtRaDaacggttDaggcMtttatgttaNctaattaVacgaaMMt\n\
+aatDccSgtattgaRtWWaccaccgagtactMcgVNgctDctaMScatagcgtcaactat\n\
+acRacgHRttgctatttaatgaattataYKttgtaagWgtYttgcHgMtaMattWaWVta\n\
+RgcttgYgttBHtYataSccStBtgtagMgtDtggcVaaSBaatagDttgBgtctttctc\n\
+attttaNagtHKtaMWcYactVcgcgtatMVtttRacVagDaatcttgctBBcRDgcaac\n\
+KttgatSKtYtagBMagaRtcgBattHcBWcaactgatttaatttWDccatttatcgagS\n\
+KaWttataHactaHMttaatHtggaHtHagaatgtKtaaRactgtttMatacgatcaagD\n\
+gatKaDctataMggtHDtggHacctttRtatcttYattttgacttgaaSaataaatYcgB\n\
+aaaaccgNatVBttMacHaKaataagtatKgtcaagactcttaHttcggaattgttDtct\n\
+aaccHttttWaaatgaaatataaaWattccYDtKtaaaacggtgaggWVtctattagtga\n\
+ctattaagtMgtttaagcatttgSgaaatatccHaaggMaaaattttcWtatKctagDtY\n\
+tMcctagagHcactttactatacaaacattaacttaHatcVMYattYgVgtMttaaRtga\n\
+aataaDatcaHgtHHatKcDYaatcttMtNcgatYatgSaMaNtcttKcWataScKggta\n\
+tcttacgcttWaaagNatgMgHtctttNtaacVtgttcMaaRatccggggactcMtttaY\n\
+MtcWRgNctgNccKatcttgYDcMgattNYaRagatHaaHgKctcataRDttacatBatc\n\
+cattgDWttatttaWgtcggagaaaaatacaatacSNtgggtttccttacSMaagBatta\n\
+caMaNcactMttatgaRBacYcYtcaaaWtagctSaacttWgDMHgaggatgBVgcHaDt\n\
+ggaactttggtcNatNgtaKaBcccaNtaagttBaacagtatacDYttcctNgWgcgSMc\n\
+acatStctHatgRcNcgtacacaatRttMggaNKKggataaaSaYcMVcMgtaMaHtgat\n\
+tYMatYcggtcttcctHtcDccgtgRatcattgcgccgatatMaaYaataaYSggatagc\n\
+gcBtNtaaaScaKgttBgagVagttaKagagtatVaactaSacWactSaKatWccaKaaa\n\
+atBKgaaKtDMattttgtaaatcRctMatcaaMagMttDgVatggMaaWgttcgaWatga\n\
+aatttgRtYtattaWHKcRgctacatKttctaccaaHttRatctaYattaaWatVNccat\n\
+NgagtcKttKataStRaatatattcctRWatDctVagttYDgSBaatYgttttgtVaatt\n\
+taatagcagMatRaacttBctattgtMagagattaaactaMatVtHtaaatctRgaaaaa\n\
+aaatttWacaacaYccYDSaattMatgaccKtaBKWBattgtcaagcHKaagttMMtaat\n\
+ttcKcMagNaaKagattggMagaggtaatttYacatcWaaDgatMgKHacMacgcVaaca\n\
+DtaDatatYggttBcgtatgWgaSatttgtagaHYRVacaRtctHaaRtatgaactaata\n\
+tctSSBgggaaHMWtcaagatKgagtDaSatagttgattVRatNtctMtcSaagaSHaat\n\
+aNataataRaaRgattctttaataaagWaRHcYgcatgtWRcttgaaggaMcaataBRaa\n\
+ccagStaaacNtttcaatataYtaatatgHaDgcStcWttaacctaRgtYaRtataKtgM\n\
+ttttatgactaaaatttacYatcccRWtttHRtattaaatgtttatatttgttYaatMca\n\
+RcSVaaDatcgtaYMcatgtagacatgaaattgRtcaaYaaYtRBatKacttataccaNa\n\
+aattVaBtctggacaagKaaYaaatatWtMtatcYaaVNtcgHaactBaagKcHgtctac\n\
+aatWtaDtSgtaHcataHtactgataNctRgttMtDcDttatHtcgtacatcccaggStt\n\
+aBgtcacacWtccNMcNatMVaVgtccDYStatMaccDatggYaRKaaagataRatttHK\n\
+tSaaatDgataaacttaHgttgVBtcttVttHgDacgaKatgtatatNYataactctSat\n\
+atatattgcHRRYttStggaactHgttttYtttaWtatMcttttctatctDtagVHYgMR\n\
+BgtHttcctaatYRttKtaagatggaVRataKDctaMtKBNtMtHNtWtttYcVtattMc\n\
+gRaacMcctNSctcatttaaagDcaHtYccSgatgcaatYaaaaDcttcgtaWtaattct\n\
+cgttttScttggtaatctttYgtctaactKataHacctMctcttacHtKataacacagcN\n\
+RatgKatttttSaaatRYcgDttaMRcgaaattactMtgcgtaagcgttatBtttttaat\n\
+taagtNacatHgttcRgacKcBBtVgatKttcgaBaatactDRgtRtgaNacWtcacYtt\n\
+aaKcgttctHaKttaNaMgWgWaggtctRgaKgWttSttBtDcNtgtttacaaatYcDRt\n\
+gVtgcctattcNtctaaaDMNttttNtggctgagaVctDaacVtWccaagtaacacaNct\n\
+gaScattccDHcVBatcgatgtMtaatBgHaatDctMYgagaatgYWKcctaatNaStHa\n\
+aaKccgHgcgtYaaYtattgtStgtgcaaRtattaKatattagaWVtcaMtBagttatta\n\
+gNaWHcVgcaattttDcMtgtaRHVYtHtctgtaaaaHVtMKacatcgNaatttMatatg\n\
+ttgttactagWYtaRacgataKagYNKcattataNaRtgaacKaYgcaaYYacaNccHat\n\
+MatDcNgtHttRaWttagaaDcaaaaaatagggtKDtStaDaRtaVtHWKNtgtattVct\n\
+SVgRgataDaRaWataBgaagaaKtaataaYgDcaStaNgtaDaaggtattHaRaWMYaY\n\
+aWtggttHYgagVtgtgcttttcaaDKcagVcgttagacNaaWtagtaataDttctggtt\n\
+VcatcataaagtgKaaaNaMtaBBaattaatWaattgctHaVKaSgDaaVKaHtatatat\n\
+HatcatSBagNgHtatcHYMHgttDgtaHtBttWatcgtttaRaattgStKgSKNWKatc\n\
+agDtctcagatttctRtYtBatBgHHtKaWtgYBgacVVWaKtacKcDttKMaKaVcggt\n\
+gttataagaataaHaatattagtataatMHgttYgaRttagtaRtcaaVatacggtcMcg\n\
+agtaaRttacWgactKRYataaaagSattYaWgagatYagKagatgSaagKgttaatMgg\n\
+tataatgttWYttatgagaaacctNVataatHcccKtDctcctaatactggctHggaSag\n\
+gRtKHaWaattcgSatMatttagaggcYtctaMcgctcataSatatgRagacNaaDagga\n\
+VBagaYttKtacNaKgtSYtagttggaWcatcWttaatctatgaVtcgtgtMtatcaYcg\n\
+tRccaaYgDctgcMgtgtWgacWtgataacacgcgctBtgttaKtYDtatDcatcagKaV\n\
+MctaatcttgVcaaRgcRMtDcgattaHttcaNatgaatMtactacVgtRgatggaWttt\n\
+actaaKatgagSaaKggtaNtactVaYtaaKRagaacccacaMtaaMtKtatBcttgtaa\n\
+WBtMctaataaVcDaaYtcRHBtcgttNtaaHatttBNgRStVDattBatVtaagttaYa\n\
+tVattaagaBcacggtSgtVtatttaRattgatgtaHDKgcaatattKtggcctatgaWD\n\
+KRYcggattgRctatNgatacaatMNttctgtcRBYRaaaHctNYattcHtaWcaattct\n\
+BtMKtVgYataatMgYtcagcttMDataVtggRtKtgaatgccNcRttcaMtRgattaac\n\
+attRcagcctHtWMtgtDRagaKaBtgDttYaaaaKatKgatctVaaYaacWcgcatagB\n\
+VtaNtRtYRaggBaaBtgKgttacataagagcatgtRattccacttaccatRaaatgWgD\n\
+aMHaYVgVtaSctatcgKaatatattaDgacccYagtgtaYNaaatKcagtBRgagtcca\n\
+tgKgaaaccBgaagBtgSttWtacgatWHaYatcgatttRaaNRgcaNaKVacaNtDgat\n\
+tgHVaatcDaagcgtatgcNttaDataatcSataaKcaataaHWataBtttatBtcaKtK\n\
+tatagttaDgSaYctacaRatNtaWctSaatatttYaKaKtaccWtatcRagacttaYtt\n\
+VcKgSDcgagaagatccHtaattctSttatggtKYgtMaHagVaBRatttctgtRgtcta\n\
+tgggtaHKgtHacHtSYacgtacacHatacKaaBaVaccaDtatcSaataaHaagagaat\n\
+ScagactataaRttagcaaVcaHataKgDacatWccccaagcaBgagWatctaYttgaaa\n\
+tctVNcYtttWagHcgcgcDcVaaatgttKcHtNtcaatagtgtNRaactttttcaatgg\n\
+WgBcgDtgVgtttctacMtaaataaaRggaaacWaHttaRtNtgctaaRRtVBctYtVta\n\
+tDcattDtgaccYatagatYRKatNYKttNgcctagtaWtgaactaMVaacctgaStttc\n\
+tgaKVtaaVaRKDttVtVctaDNtataaaDtccccaagtWtcgatcactDgYaBcatcct\n\
+MtVtacDaaBtYtMaKNatNtcaNacgDatYcatcgcaRatWBgaacWttKttagYtaat\n\
+tcggttgSWttttDWctttacYtatatWtcatDtMgtBttgRtVDggttaacYtacgtac\n\
+atgaattgaaWcttMStaDgtatattgaDtcRBcattSgaaVBRgagccaaKtttcDgcg\n\
+aSMtatgWattaKttWtgDBMaggBBttBaatWttRtgcNtHcgttttHtKtcWtagHSt\n\
+aacagttgatatBtaWSaWggtaataaMttaKacDaatactcBttcaatatHttcBaaSa\n\
+aatYggtaRtatNtHcaatcaHtagVtgtattataNggaMtcttHtNagctaaaggtaga\n\
+YctMattNaMVNtcKtactBKcaHHcBttaSagaKacataYgctaKaYgttYcgacWVtt\n\
+WtSagcaacatcccHaccKtcttaacgaKttcacKtNtacHtatatRtaaatacactaBt\n\
+ttgaHaRttggttWtatYagcatYDatcggagagcWBataagRtacctataRKgtBgatg\n\
+aDatataSttagBaHtaatNtaDWcWtgtaattacagKttcNtMagtattaNgtctcgtc\n\
+ctcttBaHaKcKccgtRcaaYagSattaagtKataDatatatagtcDtaacaWHcaKttD\n\
+gaaRcgtgYttgtcatatNtatttttatggccHtgDtYHtWgttatYaacaattcaWtat\n\
+NgctcaaaSttRgctaatcaaatNatcgtttaBtNNVtgttataagcaaagattBacgtD\n\
+atttNatttaaaDcBgtaSKgacgtagataatttcHMVNttgttBtDtgtaWKaaRMcKM\n\
+tHtaVtagataWctccNNaSWtVaHatctcMgggDgtNHtDaDttatatVWttgttattt\n\
+aacctttcacaaggaSaDcggttttttatatVtctgVtaacaStDVaKactaMtttaSNa\n\
+gtgaaattaNacttSKctattcctctaSagKcaVttaagNaVcttaVaaRNaHaaHttat\n\
+gtHttgtgatMccaggtaDcgaccgtWgtWMtttaHcRtattgScctatttKtaaccaag\n\
+tYagaHgtWcHaatgccKNRtttagtMYSgaDatctgtgaWDtccMNcgHgcaaacNDaa\n\
+aRaStDWtcaaaaHKtaNBctagBtgtattaactaattttVctagaatggcWSatMaccc\n\
+ttHttaSgSgtgMRcatRVKtatctgaaaccDNatYgaaVHNgatMgHRtacttaaaRta\n\
+tStRtDtatDttYatattHggaBcttHgcgattgaKcKtttcRataMtcgaVttWacatN\n\
+catacctRataDDatVaWNcggttgaHtgtMacVtttaBHtgagVttMaataattatgtt\n\
+cttagtttgtgcDtSatttgBtcaacHattaaBagVWcgcaSYttMgcttacYKtVtatc\n\
+aYaKctgBatgcgggcYcaaaaacgNtctagKBtattatctttKtaVttatagtaYtRag\n\
+NtaYataaVtgaatatcHgcaaRataHtacacatgtaNtgtcgYatWMatttgaactacR\n\
+ctaWtWtatacaatctBatatgYtaagtatgtgtatSttactVatcttYtaBcKgRaSgg\n\
+RaaaaatgcagtaaaWgtaRgcgataatcBaataccgtatttttccatcNHtatWYgatH\n\
+SaaaDHttgctgtccHtggggcctaataatttttctatattYWtcattBtgBRcVttaVM\n\
+RSgctaatMagtYtttaaaaatBRtcBttcaaVtaacagctccSaaSttKNtHtKYcagc\n\
+agaaaccccRtttttaaDcDtaStatccaagcgctHtatcttaDRYgatDHtWcaaaBcW\n\
+gKWHttHataagHacgMNKttMKHccaYcatMVaacgttaKgYcaVaaBtacgcaacttt\n\
+MctaaHaatgtBatgagaSatgtatgSRgHgWaVWgataaatatttccKagVgataattW\n\
+aHNcYggaaatgctHtKtaDtctaaagtMaatVDVactWtSaaWaaMtaHtaSKtcBRaN\n\
+cttStggtBttacNagcatagRgtKtgcgaacaacBcgKaatgataagatgaaaattgta\n\
+ctgcgggtccHHWHaaNacaBttNKtKtcaaBatatgctaHNgtKcDWgtttatNgVDHg\n\
+accaacWctKaaggHttgaRgYaatHcaBacaatgagcaaattactgtaVaaYaDtagat\n\
+tgagNKggtggtgKtWKaatacagDRtatRaMRtgattDggtcaaYRtatttNtagaDtc\n\
+acaaSDctDtataatcgtactaHttatacaatYaacaaHttHatHtgcgatRRttNgcat\n\
+SVtacWWgaaggagtatVMaVaaattScDDKNcaYBYaDatHgtctatBagcaacaagaa\n\
+tgagaaRcataaKNaRtBDatcaaacgcattttttaaBtcSgtacaRggatgtMNaattg\n\
+gatatWtgagtattaaaVctgcaYMtatgatttttYgaHtgtcttaagWBttHttgtctt\n\
+attDtcgtatWtataataSgctaHagcDVcNtaatcaagtaBDaWaDgtttagYctaNcc\n\
+DtaKtaHcttaataacccaRKtacaVaatNgcWRaMgaattatgaBaaagattVYaHMDc\n\
+aDHtcRcgYtcttaaaWaaaVKgatacRtttRRKYgaatacaWVacVcRtatMacaBtac\n\
+tggMataaattttHggNagSctacHgtBagcgtcgtgattNtttgatSaaggMttctttc\n\
+ttNtYNagBtaaacaaatttMgaccttacataattgYtcgacBtVMctgStgMDtagtaR\n\
+ctHtatgttcatatVRNWataDKatWcgaaaaagttaaaagcacgHNacgtaatctttMR\n\
+tgacttttDacctataaacgaaatatgattagaactccSYtaBctttaataacWgaaaYa\n\
+tagatgWttcatKtNgatttttcaagHtaYgaaRaDaagtaggagcttatVtagtctttc\n\
+attaaaatcgKtattaRttacagVaDatgcatVgattgggtctttHVtagKaaRBtaHta\n\
+aggccccaaaaKatggtttaMWgtBtaaacttcactttKHtcgatctccctaYaBacMgt\n\
+cttBaBaNgcgaaacaatctagtHccHtKttcRtRVttccVctttcatacYagMVtMcag\n\
+aMaaacaataBctgYtaatRaaagattaaccatVRatHtaRagcgcaBcgDttStttttc\n\
+VtttaDtKgcaaWaaaaatSccMcVatgtKgtaKgcgatatgtagtSaaaDttatacaaa\n\
+catYaRRcVRHctKtcgacKttaaVctaDaatgttMggRcWaacttttHaDaKaDaBctg\n\
+taggcgtttaHBccatccattcNHtDaYtaataMttacggctNVaacDattgatatttta\n\
+cVttSaattacaaRtataNDgacVtgaacataVRttttaDtcaaacataYDBtttaatBa\n\
+DtttYDaDaMccMttNBttatatgagaaMgaNtattHccNataattcaHagtgaaggDga\n\
+tgtatatatgYatgaStcataaBStWacgtcccataRMaaDattggttaaattcMKtctM\n\
+acaBSactcggaatDDgatDgcWctaacaccgggaVcacWKVacggtaNatatacctMta\n\
+tgatagtgcaKagggVaDtgtaacttggagtcKatatcgMcttRaMagcattaBRaStct\n\
+YSggaHYtacaactMBaagDcaBDRaaacMYacaHaattagcattaaaHgcgctaaggSc\n\
+cKtgaaKtNaBtatDDcKBSaVtgatVYaagVtctSgMctacgttaacWaaattctSgtD\n\
+actaaStaaattgcagBBRVctaatatacctNttMcRggctttMttagacRaHcaBaacV\n\
+KgaataHttttMgYgattcYaNRgttMgcVaaacaVVcDHaatttgKtMYgtatBtVVct\n\
+WgVtatHtacaaHttcacgatagcagtaaNattBatatatttcVgaDagcggttMaagtc\n\
+ScHagaaatgcYNggcgtttttMtStggtRatctacttaaatVVtBacttHNttttaRca\n\
+aatcacagHgagagtMgatcSWaNRacagDtatactaaDKaSRtgattctccatSaaRtt\n\
+aaYctacacNtaRtaactggatgaccYtacactttaattaattgattYgttcagDtNKtt\n\
+agDttaaaaaaaBtttaaNaYWKMBaaaacVcBMtatWtgBatatgaacVtattMtYatM\n\
+NYDKNcKgDttDaVtaaaatgggatttctgtaaatWtctcWgtVVagtcgRgacttcccc\n\
+taDcacagcRcagagtgtWSatgtacatgttaaSttgtaaHcgatgggMagtgaacttat\n\
+RtttaVcaccaWaMgtactaatSSaHtcMgaaYtatcgaaggYgggcgtgaNDtgttMNg\n\
+aNDMtaattcgVttttaacatgVatgtWVMatatcaKgaaattcaBcctccWcttgaaWH\n\
+tWgHtcgNWgaRgctcBgSgaattgcaaHtgattgtgNagtDttHHgBttaaWcaaWagc\n\
+aSaHHtaaaVctRaaMagtaDaatHtDMtcVaWMtagSagcttHSattaacaaagtRacM\n\
+tRtctgttagcMtcaBatVKtKtKacgagaSNatSactgtatatcBctgagVtYactgta\n\
+aattaaaggcYgDHgtaacatSRDatMMccHatKgttaacgactKtgKagtcttcaaHRV\n\
+tccttKgtSataatttacaactggatDNgaacttcaRtVaagDcaWatcBctctHYatHa\n\
+DaaatttagYatSatccaWtttagaaatVaacBatHcatcgtacaatatcgcNYRcaata\n\
+YaRaYtgattVttgaatgaVaactcRcaNStgtgtattMtgaggtNttBaDRcgaaaagc\n\
+tNgBcWaWgtSaDcVtgVaatMKBtttcgtttctaaHctaaagYactgMtatBDtcStga\n\
+ccgtSDattYaataHctgggaYYttcggttaWaatctggtRagWMaDagtaacBccacta\n\
+cgHWMKaatgatWatcctgHcaBaSctVtcMtgtDttacctaVgatYcWaDRaaaaRtag\n\
+atcgaMagtggaRaWctctgMgcWttaagKBRtaaDaaWtctgtaagYMttactaHtaat\n\
+cttcataacggcacBtSgcgttNHtgtHccatgttttaaagtatcgaKtMttVcataYBB\n\
+aKtaMVaVgtattNDSataHcagtWMtaggtaSaaKgttgBtVtttgttatcatKcgHac\n\
+acRtctHatNVagSBgatgHtgaRaSgttRcctaacaaattDNttgacctaaYtBgaaaa\n\
+tagttattactcttttgatgtNNtVtgtatMgtcttRttcatttgatgacacttcHSaaa\n\
+ccaWWDtWagtaRDDVNacVaRatgttBccttaatHtgtaaacStcVNtcacaSRttcYa\n\
+gacagaMMttttgMcNttBcgWBtactgVtaRttctccaaYHBtaaagaBattaYacgat\n\
+ttacatctgtaaMKaRYtttttactaaVatWgctBtttDVttctggcDaHaggDaagtcg\n\
+aWcaagtagtWttHtgKtVataStccaMcWcaagataagatcactctHatgtcYgaKcat\n\
+cagatactaagNSStHcctRRNtattgtccttagttagMVgtatagactaactctVcaat\n\
+MctgtttgtgttgccttatWgtaBVtttctggMcaaKgDWtcgtaaYStgSactatttHg\n\
+atctgKagtagBtVacRaagRtMctatgggcaaaKaaaatacttcHctaRtgtDcttDat\n\
+taggaaatttcYHaRaaBttaatggcacKtgctHVcaDcaaaVDaaaVcgMttgtNagcg\n\
+taDWgtcgttaatDgKgagcSatatcSHtagtagttggtgtHaWtaHKtatagctgtVga\n\
+ttaBVaatgaataagtaatVatSttaHctttKtttgtagttaccttaatcgtagtcctgB\n\
+cgactatttVcMacHaaaggaatgDatggKtaHtgStatattaaSagctWcctccRtata\n\
+BaDYcgttgcNaagaggatRaaaYtaWgNtSMcaatttactaacatttaaWttHtatBat\n\
+tgtcgacaatNgattgcNgtMaaaKaBDattHacttggtRtttaYaacgVactBtaBaKt\n\
+gBttatgVttgtVttcaatcWcNctDBaaBgaDHacBttattNtgtDtatttVSaaacag\n\
+gatgcRatSgtaSaNtgBatagttcHBgcBBaaattaHgtDattatDaKaatBaaYaaMa\n\
+ataaataKtttYtagtBgMatNcatgtttgaNagtgttgtgKaNaSagtttgaSMaYBca\n\
+aaacDStagttVacaaaaactaaWttBaagtctgtgcgtMgtaattctcctacctcaNtt\n\
+taaccaaaaVtBcacataacaccccBcWMtatVtggaatgaWtcaaWaaaaaaaaWtDta\n\
+atatRcctDWtcctaccMtVVatKttaWaaKaaatataaagScHBagaggBaSMtaWaVt\n\
+atattactSaaaKNaactatNatccttgaYctattcaaaVgatttYHcRagattttaSat\n\
+aggttattcVtaaagaKgtattattKtRttNcggcRgtgtgtWYtaacHgKatKgatYta\n\
+cYagDtWcHBDctctgRaYKaYagcactKcacSaRtBttttBHKcMtNtcBatttatttt\n\
+tgSatVgaaagaWtcDtagDatatgMacaacRgatatatgtttgtKtNRaatatNatgYc\n\
+aHtgHataacKtgagtagtaacYttaNccaaatHcacaacaVDtagtaYtccagcattNt\n\
+acKtBtactaaagaBatVtKaaHBctgStgtBgtatgaSNtgDataaccctgtagcaBgt\n\
+gatcttaDataStgaMaccaSBBgWagtacKcgattgaDgNNaaaacacagtSatBacKD\n\
+gcgtataBKcatacactaSaatYtYcDaactHttcatRtttaatcaattataRtttgtaa\n\
+gMcgNttcatcBtYBagtNWNMtSHcattcRctttttRWgaKacKttgggagBcgttcgc\n\
+MaWHtaatactgtctctatttataVgtttaBScttttaBMaNaatMacactYtBMggtHa\n\
+cMagtaRtctgcatttaHtcaaaatttgagKtgNtactBacaHtcgtatttctMaSRagc\n\
+agttaatgtNtaaattgagagWcKtaNttagVtacgatttgaatttcgRtgtWcVatcgt\n\
+taaDVctgtttBWgaccagaaagtcSgtVtatagaBccttttcctaaattgHtatcggRa\n\
+ttttcaaggcYSKaagWaWtRactaaaacccBatMtttBaatYtaagaactSttcgaaSc\n\
+aatagtattgaccaagtgttttctaacatgtttNVaatcaaagagaaaNattaaRtttta\n\
+VaaaccgcaggNMtatattVctcaagaggaacgBgtttaacaagttcKcYaatatactaa\n\
+ccBaaaSggttcNtattctagttRtBacgScVctcaatttaatYtaaaaaaatgSaatga\n\
+tagaMBRatgRcMcgttgaWHtcaVYgaatYtaatctttYttatRaWtctgBtDcgatNa\n\
+tcKaBaDgatgtaNatWKctccgatattaacattNaaacDatgBgttctgtDtaaaMggt\n\
+gaBaSHataacgccSctaBtttaRBtcNHcDatcDcctagagtcRtaBgWttDRVHagat\n\
+tYatgtatcWtaHtttYcattWtaaagtctNgtStggRNcgcggagSSaaagaaaatYcH\n\
+DtcgctttaatgYcKBVSgtattRaYBaDaaatBgtatgaHtaaRaRgcaSWNtagatHa\n\
+acttNctBtcaccatctMcatattccaSatttgcgaDagDgtatYtaaaVDtaagtttWV\n\
+aagtagYatRttaagDcNgacKBcScagHtattatcDaDactaaaaaYgHttBcgaDttg\n\
+gataaaKSRcBMaBcgaBSttcWtgNBatRaccgattcatttataacggHVtaattcaca\n\
+agagVttaaRaatVVRKcgWtVgacctgDgYaaHaWtctttcacMagggatVgactagMa\n\
+aataKaaNWagKatagNaaWtaaaatttgaattttatttgctaaVgaHatBatcaaBWcB\n\
+gttcMatcgBaaNgttcgSNaggSaRtttgHtRtattaNttcDcatSaVttttcgaaaaa\n\
+ttgHatctaRaggSaNatMDaaatDcacgattttagaHgHaWtYgattaatHNSttatMS\n\
+gggNtcKtYatRggtttgtMWVtttaYtagcagBagHaYagttatatggtBacYcattaR\n\
+SataBatMtttaaatctHcaaaSaaaagttNSaaWcWRccRtKaagtBWtcaaattSttM\n\
+tattggaaaccttaacgttBtWatttatatWcDaatagattcctScacctaagggRaaYt\n\
+aNaatgVtBcttaaBaacaMVaaattatStYgRcctgtactatcMcVKatttcgSgatRH\n\
+MaaaHtagtaaHtVgcaaataatatcgKKtgccaatBNgaaWcVttgagttaKatagttc\n\
+aggKDatDtattgaKaVcaKtaataDataataHSaHcattagttaatRVYcNaHtaRcaa\n\
+ggtNHcgtcaaccaBaaagYtHWaaaRcKgaYaaDttgcWYtataRgaatatgtYtgcKt\n\
+aNttWacatYHctRaDtYtattcBttttatcSataYaYgttWaRagcacHMgtttHtYtt\n\
+YaatcggtatStttcgtRSattaaDaKMaatatactaNBaWgctacacYtgaYVgtgHta\n\
+aaRaaRgHtagtWattataaaSDaaWtgMattatcgaaaagtaYRSaWtSgNtBgagcRY\n\
+aMDtactaacttaWgtatctagacaagNtattHggataatYttYatcataDcgHgttBtt\n\
+ctttVttgccgaaWtaaaacgKgtatctaaaaaNtccDtaDatBMaMggaatNKtatBaa\n\
+atVtccRaHtaSacataHattgtttKVYattcataVaattWtcgtgMttcttKtgtctaa\n\
+cVtatctatatBRataactcgKatStatattcatHHRttKtccaacgtgggtgRgtgaMt\n\
+attattggctatcgtgacMtRcBDtcttgtactaatRHttttaagatcgVMDStattatY\n\
+BtttDttgtBtNttgRcMtYtgBacHaWaBaatDKctaagtgaaactaatgRaaKgatcc\n\
+aagNaaaatattaggWNtaagtatacttttKcgtcggSYtcttgRctataYcttatataa\n\
+agtatattaatttataVaacacaDHatctatttttKYVatHRactttaBHccaWagtact\n\
+BtcacgaVgcgttRtttttttSVgtSagtBaaattctgaHgactcttgMcattttagVta\n\
+agaattHctHtcaDaaNtaacRggWatagttcgtSttgaDatcNgNagctagDgatcNtt\n\
+KgttgtaDtctttRaaYStRatDtgMggactSttaDtagSaVtBDttgtDgccatcacaM\n\
+attaaaMtNacaVcgSWcVaaDatcaHaatgaattaMtatccVtctBtaattgtWattat\n\
+BRcWcaatgNNtactWYtDaKttaaatcactcagtRaaRgatggtKgcgccaaHgaggat\n\
+StattYcaNMtcaBttacttatgagDaNtaMgaaWtgtttcttctaHtMNgttatctaWW\n\
+atMtBtaaatagDVatgtBYtatcggcttaagacMRtaHScgatatYgRDtcattatSDa\n\
+HggaaataNgaWSRRaaaBaatagBattaDctttgHWNttacaataaaaaaatacggttt\n\
+gHgVtaHtWMttNtBtctagtMcgKMgHgYtataHaNagWtcaacYattaataYRgtaWK\n\
+gaBctataaccgatttaHaNBRaRaMtccggtNgacMtctcatttgcaattcWgMactta\n\
+caaDaaNtactWatVtttagccttMaatcagVaagtctVaaDaBtattaattaYtNaYtg\n\
+gattaKtaKctYaMtattYgatattataatKtVgDcttatatNBtcgttgtStttttMag\n\
+aggttaHYSttcKgtcKtDNtataagttataagSgttatDtRttattgttttSNggRtca\n\
+aKMNatgaatattgtBWtaMacctgggYgaSgaagYataagattacgagaatBtggtRcV\n\
+HtgYggaDgaYaKagWagctatagacgaaHgtWaNgacttHRatVaWacKYtgRVNgVcS\n\
+gRWctacatcKSactctgWYtBggtataagcttNRttVtgRcaWaaatDMatYattaact\n\
+ttcgaagRatSctgccttgcRKaccHtttSNVagtagHagBagttagaccaRtataBcca\n\
+taatSHatRtcHagacBWatagcaMtacaRtgtgaaBatctKRtScttccaNaatcNgta\n\
+atatWtcaMgactctBtWtaaNactHaaaaRctcgcatggctMcaaNtcagaaaaacaca\n\
+gtggggWttRttagtaagaVctVMtcgaatcttcMaaaHcaHBttcgattatgtcaDagc\n\
+YRtBtYcgacMgtDcagcgaNgttaataatagcagKYYtcgtaBtYctMaRtaRtDagaa\n\
+aacacatgYaBttgattattcgaaNttBctSataaMataWRgaHtttccgtDgaYtatgg\n\
+tDgHKgMtatttVtMtVagttaRatMattRagataaccctKctMtSttgaHagtcStcta\n\
+tttccSagatgttccacgaggYNttHRacgattcDatatDcataaaatBBttatcgaHtN\n\
+HaaatatDNaggctgaNcaaggagttBttMgRagVatBcRtaWgatgBtSgaKtcgHttt\n\
+gaatcaaDaHttcSBgHcagtVaaSttDcagccgttNBtgttHagYtattctttRWaaVt\n\
+SttcatatKaaRaaaNacaVtVctMtSDtDtRHRcgtaatgctcttaaatSacacaatcg\n\
+HattcaWcttaaaatHaaatcNctWttaNMcMtaKctVtcctaagYgatgatcYaaaRac\n\
+tctaRDaYagtaacgtDgaggaaatctcaaacatcaScttcKttNtaccatNtaNataca\n\
+tttHaaDHgcaDatMWaaBttcRggctMaagctVYcacgatcaDttatYtaatcKatWat\n\
+caatVYtNagatttgattgaYttttYgacttVtcKaRagaaaHVgDtaMatKYagagttN\n\
+atWttaccNtYtcDWgSatgaRgtMatgKtcgacaagWtacttaagtcgKtgatccttNc\n\
+ttatagMatHVggtagcgHctatagccctYttggtaattKNaacgaaYatatVctaataM\n\
+aaaYtgVtcKaYtaataacagaatHcacVagatYWHttagaaSMaatWtYtgtaaagNaa\n\
+acaVgaWtcacNWgataNttcaSagctMDaRttgNactaccgataMaaatgtttattDtc\n\
+aagacgctDHYYatggttcaagccNctccttcMctttagacBtaaWtaWVHggaaaaNat\n\
+ttaDtDtgctaaHHtMtatNtMtagtcatttgcaaaRatacagRHtatDNtgtDgaatVg\n\
+tVNtcaaatYBMaaaagcaKgtgatgatMgWWMaHttttMgMagatDtataaattaacca\n\
+actMtacataaattgRataatacgBtKtaataattRgtatDagDtcRDacctatRcagag\n\
+cSHatNtcaScNtttggacNtaaggaccgtgKNttgttNcttgaaRgYgRtNtcagttBc\n\
+ttttcHtKtgcttYaaNgYagtaaatgaatggWaMattBHtatctatSgtcYtgcHtaat\n\
+tHgaaMtHcagaaSatggtatgccaHBtYtcNattWtgtNgctttaggtttgtWatNtgH\n\
+tgcDttactttttttgcNtactKtWRaVcttcatagtgSNKaNccgaataaBttataata\n\
+YtSagctttaaatSttggctaaKSaatRccgWHgagDttaaatcatgagMtcgagtVtaD\n\
+ggaBtatttgDacataaacgtagYRagBWtgDStKDgatgaagttcattatttaKWcata\n\
+aatWRgatataRgttRacaaNKttNtKagaaYaStaactScattattaacgatttaaatg\n\
+DtaattagatHgaYataaactatggggatVHtgccgtNgatNYcaStRtagaccacWcaM\n\
+tatRagHgVactYtWHtcttcatgatWgagaKggagtatgaWtDtVtNaNtcgYYgtaaa\n\
+ctttaDtBactagtaDctatagtaatatttatatataacgHaaaRagKattSagttYtSt\n\
+>THREE Homo sapiens frequency\n\
+agagagacgatgaaaattaatcgtcaatacgctggcgaacactgagggggacccaatgct\n\
+cttctcggtctaaaaaggaatgtgtcagaaattggtcagttcaaaagtagaccggatctt\n\
+tgcggagaacaattcacggaacgtagcgttgggaaatatcctttctaccacacatcggat\n\
+tttcgccctctcccattatttattgtgttctcacatagaattattgtttagacatccctc\n\
+gttgtatggagagttgcccgagcgtaaaggcataatccatataccgccgggtgagtgacc\n\
+tgaaattgtttttagttgggatttcgctatggattagcttacacgaagagattctaatgg\n\
+tactataggataattataatgctgcgtggcgcagtacaccgttacaaacgtcgttcgcat\n\
+atgtggctaacacggtgaaaatacctacatcgtatttgcaatttcggtcgtttcatagag\n\
+cgcattgaattactcaaaaattatatatgttgattatttgattagactgcgtggaaagaa\n\
+ggggtactcaagccatttgtaaaagctgcatctcgcttaagtttgagagcttacattagt\n\
+ctatttcagtcttctaggaaatgtctgtgtgagtggttgtcgtccataggtcactggcat\n\
+atgcgattcatgacatgctaaactaagaaagtagattactattaccggcatgcctaatgc\n\
+gattgcactgctatgaaggtgcggacgtcgcgcccatgtagccctgataataccaatact\n\
+tacatttggtcagcaattctgacattatacctagcacccataaatttactcagacttgag\n\
+gacaggctcttggagtcgatcttctgtttgtatgcatgtgatcatatagatgaataagcg\n\
+atgcgactagttagggcatagtatagatctgtgtatacagttcagctgaacgtccgcgag\n\
+tggaagtacagctgagatctatcctaaaatgcaaccatatcgttcacacatgatatgaac\n\
+ccagggggaaacattgagttcagttaaattggcagcgaatcccccaagaagaaggcggag\n\
+tgacgttgaacgggcttatggtttttcagtacttcctccgtataagttgagcgaaatgta\n\
+aacagaataatcgttgtgttaacaacattaaaatcgcggaatatgatgagaatacacagt\n\
+gtgagcatttcacttgtaaaatatctttggtagaacttactttgctttaaatatgttaaa\n\
+ccgatctaataatctacaaaacggtagattttgcctagcacattgcgtccttctctattc\n\
+agatagaggcaatactcagaaggttttatccaaagcactgtgttgactaacctaagtttt\n\
+agtctaataatcatgattgattataggtgccgtggactacatgactcgtccacaaataat\n\
+acttagcagatcagcaattggccaagcacccgacttttatttaatggttgtgcaatagtc\n\
+cagattcgtattcgggactctttcaaataatagtttcctggcatctaagtaagaaaagct\n\
+cataaggaagcgatattatgacacgctcttccgccgctgttttgaaacttgagtattgct\n\
+cgtccgaaattgagggtcacttcaaaatttactgagaagacgaagatcgactaaagttaa\n\
+aatgctagtccacagttggtcaagttgaattcatccacgagttatatagctattttaatt\n\
+tatagtcgagtgtacaaaaaacatccacaataagatttatcttagaataacaacccccgt\n\
+atcatcgaaatcctccgttatggcctgactcctcgagcttatagcatttgtgctggcgct\n\
+cttgccaggaacttgctcgcgaggtggtgacgagtgagatgatcagtttcattatgatga\n\
+tacgattttatcgcgactagttaatcatcatagcaagtaaaatttgaattatgtcattat\n\
+catgctccattaacaggttatttaattgatactgacgaaattttttcacaatgggttttc\n\
+tagaatttaatatcagtaattgaagccttcataggggtcctactagtatcctacacgacg\n\
+caggtccgcagtatcctggagggacgtgttactgattaaaagggtcaaaggaatgaaggc\n\
+tcacaatgttacctgcttcaccatagtgagccgatgagttttacattagtactaaatccc\n\
+aaatcatactttacgatgaggcttgctagcgctaaagagaatacatacaccaccacatag\n\
+aattgttagcgatgatatcaaatagactcctggaagtgtcagggggaaactgttcaatat\n\
+ttcgtccacaggactgaccaggcatggaaaagactgacgttggaaactataccatctcac\n\
+gcccgacgcttcactaattgatgatccaaaaaatatagcccggattcctgattagcaaag\n\
+ggttcacagagaaagatattatcgacgtatatcccaaaaaacagacgtaatgtgcatctt\n\
+cgaatcgggatgaatacttgtatcataaaaatgtgacctctagtatacaggttaatgtta\n\
+gtgatacacaatactcgtgggccatgggttctcaaataaaatgtaatattgcgtcgatca\n\
+ctcacccacgtatttggtctaattatgttttatttagtgacaatccaatagataaccggt\n\
+cctattaagggctatatttttagcgaccacgcgtttaaacaaaggattgtatgtagatgg\n\
+taccagtttaattgccagtgggcaatcctaagcaaaatgagattctatcctaaagtttgg\n\
+gcttgatataagatttcggatgtatgggttttataatcgttggagagctcaatcatgagc\n\
+taatacatggatttcgctacctcaccgagagaccttgcatgaagaattctaaccaaaagt\n\
+ttaataggccggattggattgagttaattaagaccttgttcagtcatagtaaaaaccctt\n\
+aaattttaccgattgacaaagtgagcagtcgcaataccctatgcgaaacgcctcgatagt\n\
+gactaggtatacaaggtttttgagttcctttgaaatagttaactaatttaaaattaatta\n\
+acgacatggaaatcacagaacctaatgctttgtaggagttatttatgctgtttactgcct\n\
+ctacaaccctaataaagcagtcctaagaatgaaacgcatcttttagttcagaaagtggta\n\
+tccagggtggtcaatttaataaattcaacatcgggtctcaggatattcggtcatataatt\n\
+tattaagggctcttcgagtcttactctgagtgaaattggaaacagtcatccttttcgttg\n\
+tgaggcatcttacaccgctatcgatatacaatgcattccaccgcggtgtcccgtacacaa\n\
+ggaaacttgttaccttggggatataagaaaactcacacgtctcattattaaactgagtac\n\
+aatttttgcacgagaaagtaatgcaatacaatatgatgaaagccagctaatgaaaaggga\n\
+tggaacgcacctcggatctgttgcactggattaaaatccgattatttttaaaaatattca\n\
+gtgctagagcatatcaggtctacttttttatctggtatgtaaagcccacggagcgatagt\n\
+gagatccttacgactcaacgaaaagttataacataactcccgttagccaaagcccaatcc\n\
+cgattactgccctaccctaacgtctgccatctaaatatcgaacttgttatgatcaatgtg\n\
+actacctcccaccctttccccttcatttgttccactggggataagctagcgttttcagaa\n\
+tcaatgcaataagaatagccaattgtctcacttcatcagagctcttggcaattccaggcg\n\
+ctacgtggttctggaatatattcatttttcaaatagtaatacgtttagtgttgctattgt\n\
+ctacacgtttggatattacgttatgtgagcggacatcaatagttgtctaactctttagta\n\
+agccagagatagcactcttagcgaatggataccatcttccataagtttagttaatagtcc\n\
+gaaacaactgcttcgagcatatttgaacctccttgtaggcaaatagcctcttcaaagcaa\n\
+tcttactaatagatagagtttgttttaagggactactagaaatgggacaatcttaatagt\n\
+atgacctaaactgacatttaaagatatatccaggtggcaagcataaagatcattgcgcca\n\
+cctccaccgtgggattacttatcagtcgatatcctatatgctaagtttgcgacggcagaa\n\
+tacaaactaagctgagttgatgctaaccttacctatgataccccattggaccggttaaca\n\
+gccctacttattccaaataaaagaacttttatgctgtagaagctattatagtgatgcctg\n\
+gtaacttcagtatattaaaatgacacacatacgccatatagagctcctggaactttgaat\n\
+aatgagcgaacttcgaagttgaagagcaagaaaccatatgtcacggttgcctaaagcccg\n\
+gtaaccagacatgtgctatcattgatcattatcgaggttttcataaccttgacccattat\n\
+cggctgtgcgcggacaagtacttaaatcactagtttcttcacctgcttatcggtaagaaa\n\
+taaggttggcaaagaatcgcataagacggacgtagagccgcagcgttgtgcgagtccagg\n\
+tgcatgcgcagcaataggattttaaattttgttccatttttaatttagccgtaaggatgt\n\
+ccgtaaatgattgaaaattggattcaatctttgggcctatgctactggaacctgatcgac\n\
+aaaatttcaaacatacgttaactccgaaagaccgtatttttgcggctagaatagtcagtc\n\
+gcttggagccatataccttaccacttaaacgacgtgctcctgtagttgaaatataaacag\n\
+aacacaaagactaccgatcatatcaactgaagatctttgtaactttgaggcgaagcaccc\n\
+tcttcgagacaactaagagtaaagtaccgggcgccgcaaggagtcgattgggaccctaaa\n\
+tcttgacgaattgctaagaggctcagagctaccactgtaatttctctagagcccataata\n\
+aatgaacgatacatccgtaggtagcacctaagggattataatggaagccaaatgcagtta\n\
+ataatattatatactggcgtacacgattcgacggatctctcacatagtgattcacgaccc\n\
+ccccctttgattgacacagcgtcagcattttgcaagaacgatcttctgcatagggtgcgc\n\
+caccgtaaggatgacgtcgaagctacaactgggtataatttaccatgcttccctgatgct\n\
+gagtgcaatacactaagaatgagtttttaccccatatcaccagtatttgttctgttattg\n\
+cgaagaaatggctatgctgagttggcgactaaagtcacccatcctttttattaggtaacc\n\
+ccctcccttaaactaactgatttgctggagctgccctgcatacatatactttatcattta\n\
+tggacgtccgtgacgcttattatccaccatagtcgatatgctacacggattcattaatgg\n\
+atcgtaggagtttaagttatatttactaagatcggtctcggctactatcccgccttaccc\n\
+ggcgctatttacggccatttttaatatattgacggtaattattcctatggtttcgaccgc\n\
+acgtccttggacaagaaagaatggcaaaaaaaatgtaaaagaaaaaaaatattgagtccc\n\
+taccatcatataaaaaatatgtgatgagtaacttgacgaaatgttagtggttattaaaga\n\
+ctatctattacaccttttgttttctgtcgtagtatattaaagtctagaagccttacagga\n\
+aaatcagggttatacagccgatactccgcagcatgaatcatcgaggaggtgtcctaccat\n\
+cgcgccttgtaatcttgtctgtgtatactgtatttagaccttttatacaaagtaaatatc\n\
+tcggctttatgtgattgggaggggcctactcaaacatgatgacttgacctaataatcact\n\
+gtgcgggcgtcttatgactagctattccttgaaatccaccaccaaatggttaatatgtaa\n\
+aaactttgacgatgaaacaaggtgaatgtgtagttactttgtgtaattagctgcgtcgag\n\
+cattgcttgtaaaaccgtcaatcgcacacgttacttccataaaatttctacgaatacacc\n\
+cttcttaaaaaaaacgtaggaattcacgagtttaacaaacgataactgtataaagtggaa\n\
+gtccgaagaaagcagatgcccgaactactcgaagatgtttcgttttcttaaccatagggg\n\
+cttcttaatggcccactacgcacattttgttcaagcccgagagggacatccccattacgg\n\
+gagtattactaaaactgttccgtaatacgttcagcaagggatgaaaaaggccactgctca\n\
+agttattgacgtgggagtattacatcggaagcctgaatcccacactatgatggtctgtac\n\
+aggcctagggactgcgtctagacggtattaccggcttctaatcatacgatcgtgagtctt\n\
+aacgggaagtaaggctcacacctaccccaaaccatttatctatgtaagtataaaattgtg\n\
+cgtaagtgttcaaagtggacaataaagacgtggcaaaaacccccgcacataagccgcttt\n\
+agatttcacaaataccaatgcggttaaaaacatccttgagtcgtacatacaccatactcg\n\
+cgttaaacggatataacagaagataataaatccggatgtggagtcggtgtaactatagaa\n\
+agccaagtgaaataatgcttaccagtcatttagctatacggctttcatttcatgtcaaga\n\
+gggtggagtttgacctgtacagttgatatatcaccgatacttagaactcacctaaagcta\n\
+aaattgctcgcagcgtgtaatccgcatattacaaacaatagatgggattcattatacata\n\
+agacacgatgatctgctttttcaggttgcgagatgttgcctatcgtcaatcgagtcctgc\n\
+cttacaccacttaaacaaaagtattgacagggaacctattttcgaggtattatatagtcc\n\
+agcttgaatatcaatttgacagttaacctagtgaaaatcagtaagaggaaatacgccaca\n\
+ttctccagtgaaattctacgggttatcgtctagtccaactatcaattataactcacgaga\n\
+tataagtaaattctcgtacttggcctgatttttattatactttggatccttagtaaacag\n\
+gaagggagaaaccttcaacgaaaaacactggattttgttttactctcaaagctcttatat\n\
+gacggaaataccctgtcaagtcttaactttattactagactaatgaaatgggcttggggt\n\
+ggccagaatcatagtacaatttagcggatacactattcggactttcctatcggctgtctg\n\
+gttggataagtatggggactaataggctagacatacctatacttaaactatacaggcgtc\n\
+atctatctctgcaactttggagttccctgatgttctcccgccctttgggttcacatcttc\n\
+tataccgacacccctaataacgattagtttgtgggttagagtaaattaatacggttaata\n\
+ttaatgtatcgttgaaaagctggtgtcgccaataaggtaaccggctaggcagagtatatg\n\
+tcacgaagtataactaccctaatgataagctgtaggaataaaattaatgctgtctctaag\n\
+cgaagagatatttccgactctgttttaatgacgaatctcattacttctgacttgcaaatg\n\
+ttcaatatggcacggtttcacggcacctttgtgacgcatataatgaacttagaagattat\n\
+aacgacggaactttatatgataatccgttacgattaaagaatctgttaaatatcataatg\n\
+gcattcagttctagaccgtgcatcatggtaaacttactttctctgcatggcgacatacat\n\
+ttcgctattcaaattcgcgtgtggttacacccactcgcacctttggaatattaagagaag\n\
+atgatcagaaaatccattcgctcaatttttctgacgtacgtctaatttatcctaggagac\n\
+aaatcgttttatgtctctcacatttttgaagaaaggttcgagagacaatactcaggtcct\n\
+gaactgctagaagatactcggtggagcgtggcaacaatgaaaaactcgtgacataaatga\n\
+atgatacttttccaagttcagttaagtgaatatgtttaacatacccggcttttcgatctt\n\
+aagctgacgctggacgtgcgagtaatgtcagtctcttacatacactagtgactccaagtt\n\
+tcgtcaaaaacgccccctcccttctcgagcccactcacgctatgtattgacgcgaacttg\n\
+ttcgggatcagacttttcaggagttcggtcgcgtgtccctatgtgctaatatataagtta\n\
+gatcgcattagatgctaatctgaatacttatagacgaccttcaacgagaacgggtaccac\n\
+cttgaggctagagttaggtgtgaaacgacaggtagggacatataaaatttgagtgcggct\n\
+ttagttaagggtttaattacctactcaaacatcacgctcgcgcccttcgtacgtaatcga\n\
+ccatctagaggctaaggggactgtactaggtagtgattaatgatatcctagacgcacgtg\n\
+ccttagatcttcagactctgatggtccgcgatcaccgtaattgtagtcctccaactcgat\n\
+cactttgttggcgtcaaagaaattacgatatctaaatacttataatacaataaccaagga\n\
+tgagaatgactcatcgcgttggagttatattgcttgaagttctatggaatgaaagcacgt\n\
+tatctgccgtcccaatatctccagtgagctaattcattggacggtccactttgatcaatc\n\
+cccgaggagatgttcggacactttagtctgtaacacttagcgttgagaccacgaacaatt\n\
+gattactcagtcttgaaggtgttttccaaagttcattttaaataagactacgataggcct\n\
+ttcctattgatataaactacccggctctgttgttcgtgtgagtcgtacttctctgtgttt\n\
+ttctgattatagcaagattcgattcttagtgtaaacagcgatttttatttgacccgtcaa\n\
+tgagaagcgcataggatctaagcaaaattatcaagttgtgccacaaggtaagatctttcc\n\
+agttattgcaggtaggatgtatcccacgttgatagtatgaggtctgacgtcaactgtcta\n\
+ggagagttgaccgcgtgcgggtacaccggatttgcatcgatgttgagaacgcagaactcc\n\
+cactgtcgtggcggcgttcctgatatttagcaagaggcgttgataaagccctcatcatct\n\
+agatctcgacctcatctgccctcttgctccatcattttctacacagactactttcctatc\n\
+tacgttagtataattgctttctatcttagtatcatttagagcttctccgtcaacaggttc\n\
+gtgctattaaagttagtacgaaagggacaacttgtagcaacgcatttaatcggttttcga\n\
+ctacttcgcacaaaatcagataaagaagtttgtcattctattagacattgaattgcgcaa\n\
+ttgacttgtaccacttatgatcgaacactgaatcaagactgtgattaactaaaatagaca\n\
+agccactatatcaactaataaaaacgcccctggtggtcgaacatagttgactacaggata\n\
+attaattggactggagccattacattctctacaatcgtatcacttcccaagtagacaact\n\
+ttgaccttgtagtttcatgtacaaaaaaatgctttcgcaggagcacattggtagttcaat\n\
+agtttcatgggaacctcttgagccgtcttctgtgggtgtgttcggatagtaggtactgat\n\
+aaagtcgtgtcgctttcgatgagagggaattcaccggaaaacaccttggttaacaggata\n\
+gtctatgtaaacttcgagacatgtttaagagttaccagcttaatccacggtgctctacta\n\
+gtatcatcagctgtcttgcctcgcctagaaatatgcattctatcgttatcctatcaacgg\n\
+ttgccgtactgagcagccttattgtggaagagtaatatataaatgtagtcttgtctttac\n\
+gaagcagacgtaagtaataatgacttggaataccaaaactaaacatagtggattatcata\n\
+ctcaagaactctccagataaataacagtttttacgatacgtcaccaatgagcttaaagat\n\
+taggatcctcaaaactgatacaaacgctaattcatttgttattggatccagtatcagtta\n\
+aactgaatggagtgaagattgtagaatgttgttctggcctcgcatggggtctaggtgata\n\
+tacaatttctcatacttacacggtagtggaaatctgattctagcttcgtagctgactata\n\
+ctcaaggaaccactgctcaaggtaggagactagttccgaccctacagtcaaagtggccga\n\
+agcttaaactatagactagttgttaaatgctgatttcaagatatcatctatatacagttt\n\
+ggacaattatgtgtgcgaaactaaaattcatgctattcagatggatttcacttatgcctt\n\
+agaaacagatattgcccgagctcaatcaacagttttagccggaaacaatcgaagcatagg\n\
+gacaatgtatcttttcctaaattgccatgtgcagatttctgagtgtcacgaagcgcataa\n\
+tagaatcttgtgttgcctcaactcgttgaaaagtttaaaacaatcgcagcagtctttttg\n\
+gggtctactgtgtgtttgcaaaataactgaaagaaacgcttgaacaactctgaagtagct\n\
+cgagtactcattaaagtgtaacacattagtgaatatcggccaatgaaccaaacgcttccc\n\
+ggtacgctatctctctcatcgggaggcgatgtgcaggttatctacgaaagcatcccttta\n\
+cgttgagagtgtcgatgcatgaacctcattgtaacaatagcccagcaaattctcatacgt\n\
+gcctcagggtccgggcgtactcctccatggaagggcgcgcatctagtgttataccaactc\n\
+gctttttaactactatgctgtagttctacaggcatagtggccagtattttctaacttctc\n\
+tggatagatgctctcactcctcatccatcacggcttcagtttacgtcttacttgcttgtt\n\
+cagcaacggatggaggcattaagtatcttcactgttccctaaaattgctgttcaatatca\n\
+aagtaaggacgatacagggaaagctcaagcacactcattgaatactgccccagttgcaac\n\
+ctcacttaatctgacaaaaataatgactactctaagtgttgcggaagcagtctcttccac\n\
+gagcttgtctgtatcacttcgtataggcatgtaactcgatagacacgaacaccgagtgag\n\
+aaactatattcttgcttccgtgtgtgtgacaccaggtaattgatgcggatataagctgga\n\
+gatcactcacgcccacacaaggcgctgctacctctttattccaatgtgtaagaatttgct\n\
+aacttcatttctagaccgcagctttgcggtcataatttcacggtacggacccttgggtta\n\
+gagacttgataacacacttcgcagtttccaccgcgcacatgttttagtggcttctaacat\n\
+agaatttttgttgtgacataaagagtgcgtgggagacttgcccgaccgttaagccataat\n\
+caattgaaagccccgtgagtcacatctaattggttgtactgcgcatttagctatccttta\n\
+gctgactcgaagagattcgattcctaatataggttaattagatggctgccgcgcgaagta\n\
+aaacgtgaaaaacgtagtgcgcagatctgcataactcgcgcttaattacttatgagtagt\n\
+tccaagttcgctacgttatgagagagattggaattaagcaaatatgttttatggtgattt\n\
+tgggatgagaaggactgctaagtacggctactaaacaaatttctaaaaccgccatctacc\n\
+ttatcttggagacatttaagttgtatatgtcactagtctagcttttgtctgtgggacgcg\n\
+ttctcggaatgagggaaatgcaagagccgattcatcaaatgcttatctaagaaagtagtg\n\
+gactattacaccaagcacgaatgccagggaactgctttcttgctcaggacctcgcgacaa\n\
+ggtaccccgcataagtcctagaattacatttggtcagcaatgctgacatttgaccgtgaa\n\
+aacataattttaatcagaaggcagctcacccgcttgctctagatcttatctttgtatgaa\n\
+tgtcagaatttactgcaatatccgttccgaatagtgagggcttagtatagttctctgtat\n\
+acaggtcacatcaaactccccctgtcctagtacagctctgagctttaattaattgcatac\n\
+atttccttcaatcatcagatgaaaacaccgcgaatcatgctcttctcgtatagggcaaga\n\
+gaagcaacaaacaactagcccgactcacgttcatccgccgtatccttgttcagttcttac\n\
+tccgtattaggtcagcgaaatctaatcagaataatcggtcgcgtatcaaaattaaaatcc\n\
+cgcttgaggttgacaattaaaacgctgagcagttatcggctattagatagtggggtgaaa\n\
+gtaattggctggaattatgttaaaacgtgatattaagctaaaatacgctacttgttgccg\n\
+acctaattcagtcattcgatattcagttagagccaagaataacaagcttgtataaattga\n\
+acggggtgcactaaacgatgtgttactctaatattcagcttggagtatacctgaaggcga\n\
+attcatgtatcggccaataataagacgttgaagatcacaatttggactagcaaaagaagg\n\
+tgatttatgcgtggggattgagtccactgtacgagtacggtctctggaaaattataggtt\n\
+cagggaatataaggaagtaaagataattaccaagagatttttggtatcgctatgacccag\n\
+aggtgttctaacgtctgttttgatccgcagaatttctgcctcaatgcatatttgacggac\n\
+ttgaactagagcctctaaagttaaatggcgacgcaactgttcctaaacttcaattattac\n\
+tactctttttttcctagggtattgtagaggccagtggacaaaataaatcaaatttaagat\n\
+gtttcggacattaacatcccccgtagcatagaaatcatcagttatccaatctctcatcga\n\
+gcttttacaatttctgctggcgctatggacagcatatgccgcgagacctccgcaagactc\n\
+acttgatcactgtaagtatcttcattagaggttagagcctatagttaagctgctgaccta\n\
+gtaaaattggtattttctaattttattgctcaagttaaaggttagtgaagggataatgac\n\
+gttatttttgaacaatgggttgtattcaattttatatcacgaatggaacccttcattccc\n\
+ggcataatactagacgacacgaacaagctccgatctatcagccaggcacgtgttaaggtt\n\
+taattccggcaaaccaatgaagcatcaaaaggtgacctgatgcaacttagggtcacgatg\n\
+agtttttcaggactacttattacctattaataagttaacatgagccttcataccccgtaa\n\
+gacaatacatactccaccaattagaattctgagccatcttatctttttgtatcatcgaag\n\
+ggtatggccgaataggttaattagttactcctaacgtctctacaggcatgcatttgacgc\n\
+accttcgaaaatagtcaatctctcgccacacgcgtctagtatgcagcatcaaaaatatag\n\
+tccacggtttccggattaccaaacgcggcaaagagaaacattgtatcgacggagataact\n\
+taatacagaaggaaggggcatcttcgaatacggatgaataattctatctgtttattctga\n\
+catcttgttttcaggttaatcttacgcattcaaatgacgcctgccccatgcgtgcgcaat\n\
+tattttctaatattgacgagagcaatctcactccttttgggtctatttatgttttattga\n\
+ggcacaagcctatacagaacaggtactattaaggccgtgagtgtgagactcaaaccgtgg\n\
+aaacaaaggatgggttgttcttggtacaagttttagtgcatgtgggcaatccttaccaaa\n\
+atcagatgctatccttaactttgggctgcatttaagatggcggttggaggcctgtgagaa\n\
+tcctgcgtgtcatctttaatgaccgaattcatccatgtagattcagatcacacactcatt\n\
+ccttgatgttgtctaaacaaaagttgttgtggacgcattggagggagttaagtaacaact\n\
+tgggatcgcatacttataaaaattatatgttaaactttcacaaacgctgaagtccaaagt\n\
+aactagcccaaacgcctcgagagtcactaggtattaatggtgtttgagttcctgtgaaat\n\
+agtgttcgaaggtaaaatttatgtaccaaatcgaaagaacacttaataaggcttgcttgc\n\
+acggaggtatgatgtttactgactctacaaccctaattttccagtacgtacattcattcc\n\
+aataggttagttctcaaagtgctatacaggctcctcaattgatgatatgcttcagccgct\n\
+ctatggatattagctcattttatttaggaagcccgcttagaggcttactatgagggaaat\n\
+gccaaaatgtcatacttttcggtgtgtcccatatgacaccgctttacatagaatttgaat\n\
+taaaacgcgctctcccgttcactaccatacttggtaccgtgcgcatattacatatagata\n\
+taggatcattttttaaagctgtactaggtttgatcgacaatcttatgctatactatatga\n\
+tgtaaccctcataatcaataccgatcgtacgatcctagcataggtggcaagcgattttat\n\
+gccgattattgtgttaaatagtctgtgagtgtgattatcagggctacgttggtagagggg\n\
+ttgtatagacctcgcacacattgtgacatacttaacaatatacgaaaactgatataataa\n\
+atccccttacccaaacaccaatcccgttgaatcaactaccataacgtctcccatataaat\n\
+tgcctacttgtttgcataaatctgaatacataacaccattgcaccttcttgtgttccaat\n\
+cccgttaagattgccttgtcagatgatatgcaagaacaatagcatttgctagcaattatt\n\
+aacagctcttcgaattgcctccacataacgcgggagggtatattttaatttggcaaatac\n\
+taagtactgttggcgtcatatgctattaacggttggatattaagttatgtcagccgtaag\n\
+caagagtgggcgaaatattttgttacccagtgagagcactcttagagtttggatacaata\n\
+ggccatatgttgacttaagaggacgtaactacgccgtacaccattgttcaaccgacttct\n\
+tggcaaatagaatcgtattagcaatcttaagaatagagacacgttcgtgttagggtatac\n\
+tacaaatccgaaaatcttaagaggatcacctaaactgaaatttatacatatttcaacgtg\n\
+gatagatttaacataattcagccacctccaacctgggagtaattttcagtagatttacta\n\
+gatgattagtggcccaacgcacttgactatataagatctggggatcctaacctgacctat\n\
+gagacaaaattggaaacgttaacagcccttatgtgtacaaagaaaagtaagttgttgctg\n\
+ttcaacagatgatagtcatgacgcgtaacttcactatagtaaattgaaacaaatacgcaa\n\
+tttagacagaatggtacggtcatgaatgacagtaattcgaagtgctagaccaacttaaaa\n\
+taggtaaacgtgcccgaaaccccccttaacagaaagctgctatcatggtgcagtatcgac\n\
+gtgttcagaaacttgtaacttttgagcaggtccgagcacatggaagtatatcacgtgttt\n\
+ctgaaccggcttatccctaagatatatccgtcgcaaactttcgatttagtcccacgtaga\n\
+gcccaagcgttgtgcgactccacgtgcatgcccagaaatacgagtttaaatttggttaca\n\
+tggttaattttgaccgaagcatcgcactttatgattgataattggattcaatatgtcgcc\n\
+ctatgcgaatgcaacatgatccacaatttggctataagacgtttaatccgtatcacactt\n\
+tgtttgcggctagtatagtaacgcccgtgcaccaagagtcagtaacaattataagtactc\n\
+cgcaggtacttcaaatataaaaactaatcaaacacgacccatatgatcatctgaagatat\n\
+ttggaactttctcgacaaccaccctcgtactcaatacttacactaatcgacaggcacacg\n\
+caacgtgtacagtcgcaccatattgagtcaagatttgcttagtggcgatgagcgtacacg\n\
+cttatttctctagtcacaattagttatctacgagacatcacgagggagcaaataagcgat\n\
+gttatggctacacataggcacgtatgaatatgatataagccagttaaacagtcgaaccat\n\
+cgagcaaattctcatgcaccaacccacacgttgaggcacaaagagtaagctgtttgaatg\n\
+taacttcttctgctgagcgggccccaacgtaaggatcaactagaagagaaaactcggtat\n\
+tagtttaaatgcgtcacggagcatgagtgcatttcactaagaatgtctgtgtaaccaata\n\
+taacatctatttgttatctgattgcctacttatggctttgcggtcgtggcgactaatgtc\n\
+tccaatccttttgaggtcggtaccaactccctttaaattacgctgtgcaggctcatgcac\n\
+tgcatacatatacggtagcaggtagggacctcacgcacccttattataatcaatagtagt\n\
+tatcagtcaacgaggcaggaatgctgaggtcgaggtgttggtatattttctatgtgccgt\n\
+ctaggcgactatcacgcattaccaggcgagatttaagccaattttgaatatagtcaacgt\n\
+aatttttactatgggttccaccgaaacgccttgcacaactaagaatcccataaaatatcg\n\
+atatcaaataaaagattgtgtcaataccttcatatatattttttcggttgactaacgtga\n\
+actaaggttaggggttttgtatgtctatataggaaacagtttcttttctgtcctacttta\n\
+gtaaagtcttcaagccttactccaaaatcacggtgattaagccgttactcagcagcatga\n\
+ttctgcctgctcgggtcctaaaatccagccttgtaagagtcgctgtgtattagctaggga\n\
+gacctttgttaaaaaggatatatcgcggcgggatgtgagtgcgtggcgcatactcaatct\n\
+tcagctcgtgtcattataatatctctcccccacgcttttcactagatatgccgtgtaagc\n\
+aaacaccttatgcttaatttcgaaaatattggtacttgaaaaaagctgtaggggtactta\n\
+atgtctggtaggagatcaggagagaattgagtgtaaaaccgtaaagccctcacctgactt\n\
+catgtaaatggcttagaagactccatgatttaataaatactacgaaggaaagactggatc\n\
+taaagataactctagtaaggccaactcccttcaatgctgttgccagttataatccaagag\n\
+ctgtccttttctgaaccatagcggcttctgaagcgaactagaagcaaagttggttctagc\n\
+cagacagccacataccctgtacgggtgtattactaaaactggtccggtattagttcacca\n\
+agggaggaattaggcaaaggatctaggtatgcaagtcggagtattacatccctaccctga\n\
+atccatcaataggttcctctgtactggccttcgcaatgagtattcaaggttgtacagccg\n\
+tataataataagatagtgactatgaacgggaagtaacccgctcaccttccccaaaacatt\n\
+gttatatctaagtattaaagtctgccgtagtgttaatactcgaaaataaacaactggcaa\n\
+attacaccgcacttaagccgcttttgatttatatttttccaatgcgcttttaaaaataat\n\
+tcagtcctacatactaattaagacccttaaacggagatatcacaagttaagttttaacca\n\
+tctcgactaggtggaactatagatacccaactcaatttatcattacctgtaatgttccta\n\
+gaaggattgcatttcatgtcaagacggtggagtttcacagcgaaacttcagtgtgaacag\n\
+attctgagaaatcacctaaacctattagtcagagcacccggttagaaccagttgtcaaaa\n\
+aatagagcggttgcatgagacagaagtaacgatgagatccgttgtaacgttgagacatct\n\
+ggcctatcgtcaatacagtcctcccttaaaaatatttttaaatactaggcaaacccaaca\n\
+taggttagtcctatgtgatacgccacatggtatatcattttgtaacgttacctagggata\n\
+atcaggaagtggaattacgcaaaagtagacagtgaaatgcttagggttatagtctagtcc\n\
+aaagataaaggataaagcacgtcagagaactatattagccgaatgggaatcattgttagg\n\
+agactgtggatcatgtctaaaaagcaacgcagaaacagtcatcgaaaaaatctcgttttt\n\
+gtttgaatctaaaagagctttgatgaccgatagtacctgtatactagttactgtattacg\n\
+tgtctaatgatttcggattggggtccccagaatcagacgtcattgtagacgattcaagtt\n\
+taccaatttaatttcccagctctccttggagaactatcgccaataattgcagtcactttc\n\
+cttttctgaaacgataaagccgtcagagttctctgcaacgttggacttacctgaggttct\n\
+aacccactttcggttctaatagtagttaacgacacaacgaataacctttactgtggggct\n\
+ttcacgatattttttcgcttattattaatggttacgtcataagctggtgtccaaattaag\n\
+gttaccggcttcgcagagtagttgtatccaagtataacttccctaatcataagatcgagg\n\
+tagaaaattaatgctgtctctaaccgaacagatatgtcccactatgtggtatggacgttg\n\
+ctaattacttctgaagggaaattggtcattatggatacgtgtctaccatcaggtcggacg\n\
+cagatatggttctgtcttcagttgatccaccgttctttataggataataactgacgatta\n\
+aagattatggtaaatagattaagccaattctcttcttgtcagtgaagcatccttaactga\n\
+cttgctctgcagcccctcatacatttagctattcaaagtaccggctcgtttcaaactctc\n\
+ccacctttggaagaggttgtcaacttgataagtatatcatttacagcattttttcggacg\n\
+tacctctaatgtttcattgcagaaaattagttttttctatcgcacattttgcaagtaacg\n\
+ttagagacacaattatctgcgaatgaactgctagatctgacgaccgggagcctcgcaaat\n\
+atcaaaaaagactgacatatatcaaggagtcgttgacaagtgctggtaagtcaattggtt\n\
+tatctgtcccggcgtttcgatcttaagctgaccatgcacggcagagtaatgtcactctcg\n\
+ttcttacaagtctgtctccaagggtcggcaaaaaagacccctccattctcgagcccactc\n\
+acgatatgtagggacgacaacttgtgcggcttatgaattgtctggactgcgggcgagggt\n\
+ccatatctccgaagttagaagggacatacctttagatgataagatcaattcttattgacg\n\
+aaattcatccacaacggggaacaacttcaccctagacttacgtctgaaaagacacctagc\n\
+gtcttataaaaggtcagtgccccgtttcgtaaggctggaattacctacgcaaacttaaac\n\
+ctcgcgcccttccttacgtatcgacaagatagaggctatcgcgaatgtactacggaggca\n\
+tgaatcatatactagaaccaagtgcctgtgatattaacaagatgatccgacgcgagcacc\n\
+gtaattctaggcataaaactccagcaatttgggggccgaaaacaaatgacgttagctaat\n\
+taattatatgacatgatcaaaggaggtcaatcacgcatcgagttcgacgtatattcattg\n\
+aacttcgtgcgtttgaaagaaacttttatgaaggcaaaattgatcctgtctcctatttca\n\
+tgcgtacctcctagttgataattccccgagcagtggttaggacacttttgtcggtatcaa\n\
+gttccggtctcaaaacgtaaaattctgtaatctgtatggatggtctgtgaattagttaat\n\
+ttttatgaagtcgtcgagacgcagttcctattgatttattctaaacggagatgtgcttcg\n\
+tgggactcggaagtagatctgtgtttatgattattgctactttagatgctgactgttaac\n\
+tccgtgttgtttttcaaccgtatatcacaaccgaattggatagaacctatagtttcaagt\n\
+tctgccacaaggtatcatatttacagttagtgctggttgcttctttcaaacgtggtgagt\n\
+ttgtgctatcacgtcaacggtagagctcagtggaccgagtgcgcgttcaaccctgttcca\n\
+gagagggtgtgatagcacatataccacgctcgtcgaggcgttcatgatagtttgcaagag\n\
+ccggtgttaaacacatattattattgttatccaactaatcggacctatgcataaagcatt\n\
+gtctaaacagaataattgcctatatacggtagttttagtgatttatatcttagtatcagt\n\
+tagagcttcgaactcttcaggttcctcatatttaacgttcttcgaaagcgaaaacttcta\n\
+caaacgaatgtaagcggttttccaagtagtacctataaatcacagaaagatctgtctcag\n\
+tatagttgaaatggtattcagctagtgacgtgtaccaattatcatagttcactcaagcaa\n\
+gacgctcattaacgaatatagacaagacactatatcatataataaaaaagaacatggtgc\n\
+tcgaacatagttgaattcaccatattgaaggggaatgctgacatgtaattcgctactaga\n\
+cgatcaattccctacttgtcaaagttgaactggtacgttcttggaattaaatatgattgc\n\
+gctggaccaaattgcgacttcttgagtttcagggcaaacgattgagccggaggatgtccg\n\
+tctcttacctttcttgcttatgataaacgacggtccctgtacatcactgggaattctcag\n\
+caaaaataattgggtaaatcgagactcgatgtattcggccacaaaggtgttagacgttaa\n\
+agattattcaacggggcgataataggatcataaccggtatgcaagcgcattgaaagagcc\n\
+atgagatccttatccgataaacgctgcacggtatgtgcagccttattgtcgatcacgaat\n\
+ttataaatgtagtctgggctgtaagttgaagacctaagttataatgaagtgcaataccaa\n\
+atcgattcatagtggattatcagactcaagatatctcctgataaattacagttgttaaga\n\
+tacggataaaatgagatttaagattagcagcctctaatctgtttcaatcccgttggaatg\n\
+tggtatgcgatcaaggttaagttaaaatcaagcctgtcttcagtcttgattcttgttctg\n\
+ccatcgcatgcggtctacgtgagttaatatgtagcttacgttctagcttgtgctaatctg\n\
+agtatagattcgtagaggaatattatcaagcttccacgcctcaacgtacgtgtattggtc\n\
+acacaagacactaaaagtggaagtagcgtaaactatagtctagttgttaaatgctcagtt\n\
+cttgttatattcgatatactcttggctaatttatgtctgagtatataaaattaatgatat\n\
+taacttgcatttcacggatcccttagaaaaagattttgaccgagcgcattataaacggtt\n\
+acaccgaatcaatagaagcatacccaatagctttctttgaatttattgcctgcgcaactt\n\
+ggctgactctctagatccgaataattctatatggtcgtgacgaaactagttcattactgt\n\
+ttaaaatgccaacatgtcttttgggccgataatggctctttgcaaaattactcaatgata\n\
+cgattgatcaaagcggtagttgctagtggtagcatgtaagtctatcaaatgtctgattat\n\
+ccgaaaatcttccaaaagagtccacgtaccatatctatctcatagcgacgcgaggggaac\n\
+cttatctaactatcattccatttaccgggtgactctcgatgcaggatccgattgggataa\n\
+attgcccagaaatggctcattcctgactaagggtaaggccgttctcagcaagggaacccc\n\
+gcgaatctaggcttataccatctagattgttaactacttgcctgtagttctacagccata\n\
+ctggacagttgtttctaaatgatcgggattcatgctagcactcctctgaatgcaccgcgt\n\
+aagtttaactattacgtccgtgggcagataaggatggaggctgtatgtatcttaactgtt\n\
+acctaatatggctggtaattatcaaagtaaggaccttaatgccatagcgctagcaatcgc\n\
+tttgtatactgaccatgtgccaacctctcttaatctgtaaaatataatgtcttagctaac\n\
+tgtggacgatcatgtctctgcctagagcttcgctgtatcaattcctatagccagcgtact\n\
+agtgacacaacaacaccgtgtgagaaaagatattagtccttacgtctgtctctctacagc\n\
+ttattgatgaggattgaacatggacatatagctccccctcaaaagcagatgctacctctt\n\
+tattccattctcgaacatttgccgaacttaatttcgacaaacctgaggtcacgtcttaat\n\
+ttatcggtaacgtcacgtccctttgagactggataaatatattaccaggggccaacgagc\n\
+aattgttggaggcgcttctataatacaaggtgtcttgtcaaagaaagacggcgtgcgtct\n\
+cgtgcaactcacttaaccaatattaatgtgaaacccccctctctcacatcttatgcggtg\n\
+tactgccctggtacatttcctgtacaggactccaacagtgtagattcctaagatagctgt\n\
+tggagttgcctcacgccagatcgaaaaactgaataaactagtgagctgagctgcagaaat\n\
+accgcttaattacttatgactagttcaaagggacctacgtgatgtcagacattgcaagga\n\
+agaaattaggtttgtgcgtcattttggctggactagcactccttacttcccctactattc\n\
+aaatgtcgtaaacagcatgagacaggatcgtgctgacatttaaggtctattgggaacgag\n\
+gctacctttggtcgcgcgctcgcgttctccgaatgaccgaaatgcatgagcacagtatgc\n\
+aattgcttatagatctaaggtctggtcgttgaaaccaagcacgtaggcctgggaaatcag\n\
+ttcttcctcagcaactacacaaaagcgtccaagcattagtacttgtagtaaatgtccgaa\n\
+cctatgcgctcatttgaaagtcaaaaaatatttttaagcagtaggcacctaacccgattc\n\
+ctctacttagtagctttctttgattctcagaattgactgcaatatcactgcacaattctg\n\
+tgccattactagacttctctgtattaacgtctcatcttactaacactcgcctaggacaca\n\
+tctgagagtgaagtatttcaatacatttactgaaatcttcagttctaaaatccccgaata\n\
+aggctcttatcggtttggccaacacaagaaaaaaacttcttgcaccactcaccttcatac\n\
+gcaggagcctggggaacttagtaataactatttcggcagacaaagcttataacaagttgc\n\
+cggcgcgtataatatttaaaagaccccttgagctgctcaattaaaacgctcacctggtat\n\
+aggctattagatagtgccgtcttagtaaggggcgggaattatcggataaactgatatttt\n\
+gataaaataaccgacttgttcacgacataagtcactaaggagattttatctttctccaaa\n\
+gtatatcttccttggataatttcaaagcgctgcaatttaagttctgttactagtttatgc\n\
+tgctgggaggtgaccggaaggcgtagtaatctagaggcaaattataagaagttcatcata\n\
+tcattttcgactacaaaaacaaggtgttgtatgccggcgcattgtgtaaactggacgagt\n\
+accctagatggaaaattatacgttaagccaagatttcgatgtaatgataattacctacac\n\
+atttttgctatccataggaacaagagctgttctataggctcgtggcatacgaacatttgc\n\
+tgccgctatgaatattggaagctcttcaactacagactctattcttaattgccgtcgaaa\n\
+atgggccgaatcggctattattaatactcggtttttccgaggggattgttgtcgacagtc\n\
+gtaattattattaatattgatgttggtgaggtcatttaaatacaaccttgcagacaatga\n\
+ataagggatccaatctctcatactccttttacaattgctcatgcccctatgcaaacctta\n\
+tgccgccacacctccgcaactctctcttctgaactgtaagtagcttcattactggtttga\n\
+gactatactgaagctgatgacattctaaaatggctattttcgaatgtgattcataatgtt\n\
+tatcgtttgggatggcagaatcacgttatttttgatatagcccgggtattctattgtata\n\
+gaacgtatgctacaagtcattccccgaagaagactagaagtaaacaacatgcgaccatcg\n\
+ttaagccacgcaaggctgtagctttatttcccgataacctatcttccataaatagcggac\n\
+agcaggatactgacgctcaacatcagtggttatggtctaatttttaacttttaataaggt\n\
+aacttcagcaggcatacacagtaactctttaatttataatcaaattagaagtctgacact\n\
+tcttatatttttctatcatccaacgcgatcgcccattagcttattgtgttactaataacg\n\
+tatctaaaccaatccttttcaagctactgcctatattgtcaatatatacaaacaacagga\n\
+tagtaggctgcttaaaaaatattgtcaaccgtgtacgctttacaatacccggaaatcaca\n\
+aactttgtagacaacgagtgaaatttatacactacgaagggccagcgtacaagacccatg\n\
+aattaggcgatatgtttattctgacatattggtttatccttaatctgtcgctgtaaaatg\n\
+aagccgcccccatccctgcgaattttttttcgaagattcacgactgaaatataaatacgt\n\
+ttggctatatttatgttggagggaggcaatagcctttactgttaaccgaagatttagcca\n\
+gtgagtgtgacactaaaacactggaataaatgcaggcgttcttctgggtaaaaggtttag\n\
+tcaatctcgcctataagttcatatagctctggatataattatctggcccatgcatttatc\n\
+atggcgcttggtgccctgtgtgaagccggcctctcatattgaaggtccgaagtattccat\n\
+gtacattaagatcactctctcattcatgcatcttggcttaacaaatctggttgtccaagc\n\
+tttccaggcacgtatggtacaaattcggatcgaatacttataaaaatgatatgttaaact\n\
+gtctaaaacgctcatctacaaagtaaagtgcactaaccaatagagtctcaagaccgtgta\n\
+atgctggtgcactgaatgtgtaatacggttagaagggattagttatgttacaaatccatt\n\
+gaaaacttaagaagcattgcgtgctcggagggtgcatcttttatcaagagactaacatta\n\
+ttttcaacgacgtacatgctttacaatagggtacttatcaaacgccgagaaacgcgccta\n\
+tagtgatgttatgattatgacccgatatccattggaccgaattttatgtaggttcccagc\n\
+gtactcgcgtaatatctcggtattgccataatgtaatacttgtcggtctctcccagatga\n\
+aaaagcgttacagagtatttcaatgaaaaacagcgcgcaacgtcaatacctttaggggta\n\
+acggccgctgatttcatatagatatacgataagttggtatagctctactaggtggcatcc\n\
+acaatcgttgcatttactatagctggttacaatcataatctataccgttccttacatact\n\
+accatagcgggatagcgtttttttgccgttgattgggtttaagaggatgtcagtctcatt\n\
+atatccgattcggtgggagagccgttgttttcaaatcgcacactttgtgacataatgtac\n\
+aagataacaaaactgatataagatataaactgtcaatatcaccttgacacttgaatcaaa\n\
+gtaaattaactcgcaaatataatttgactaattgggtgcagatttctcaattaataaaaa\n\
+aatggcaccggatgggcttacaagccccttatcattcacttgtatcatgatttccaagaa\n\
+caatagaatttgctagcaagtatgaacagagattcgaattgcatccacagtacgccggag\n\
+cgtttattttaatgtggatatgacgatgtactgttggcggcatttgctagtaaccggtcc\n\
+ttatttacgtagcgcacacgtaagcatgtctgggagaaatatggtggtacaatctcagag\n\
+aaagattacagtttggtttaaataggacttatcgggtcggaagtggaacttaataagcag\n\
+tacacaattgggcaacagacgtcttgcctattacaataggattacaatgcgttagatttc\n\
+agacacgttcgtgtttggctattcgtcaattccctaaatagttagacgatcaactattat\n\
+caaagtgattctttgttcatcctccattcatgtaacagatggcacactacgcataacgcc\n\
+gaggaattttaacgagatttaagagagcagttcgggcacaacccacttgactttataaca\n\
+gctcggcagcataaacggtaatatgtgacaaatttccaaacgttataagaacgtatgtgt\n\
+acttagaaaactaagtggttcatgttcaacagatgtgacgcagcaagcctaacttatcta\n\
+ttggttttgctataaaagaacaaagttacacagaatcctaagggcttgtttcacacttat\n\
+gcctagtgcttcaccatcttaaaatagcgaaaccggcacgaatcaaaccttaaaacaatg\n\
+cgcagatattggtgatggtgactccgggtatgataatggtaactgttgaccagcgcccac\n\
+ctcatcgaagtatagaaagtggttaggataaggatgagaccgaacttatttccggccata\n\
+actttagattttctacctagtacacaacatcagggcggacacgaaaccgccatcacatca\n\
+tataccaggtttaatttgcttaatgggggaagtgtcaacgaaccttcgaactttagcagg\n\
+catatggccattatatatggccccagagcagaatgctacagcagacaaaatttggattta\n\
+tgtagtttaatacctatcaaacttggtgtgaccatacttgtctaacgacagtgcacaaag\n\
+tgtaagttacaattattactactcagcagcttctgcaatgataaaatcttatcatacacg\n\
+tcacatatgataatatctacttagggggaacgggctccacaacctacatagtactcaata\n\
+cttacactattcgacaggcacaccaaacctgtacagtcccaaaagattgagtcaactttg\n\
+cagtactgcagatcacagtaatagcttagttagcgagtcaaaattagttttctacgagac\n\
+tgcacgaccgtgcaaatttccgatgtgttggctacaaatagcaacgtatgaatttgtttg\n\
+aagccacgtaaactgtacaaccttagagataagtctcaggctactaaaaacacgttgtgg\n\
+cactaacaggatcatggttgattcttacttattcggctgaccggcccaataagtaacctt\n\
+caactagaacagaataatcgggagtagtttaattcagtcaaggtgcaggtctcattgtaa\n\
+ctaacaagctctgtgtaaccaagttaaaatcgttttcttagcggattccctacttatgga\n\
+tttgagctcgtccacaatattcgatacaagaagtttgtggtccgtaacaacgaaatttta\n\
+attacgctgtgcagcctcatccaaggaattaatagaaggttgatggtaggctccgaacgc\n\
+tccatgattataatcaagtggactgtgcagtaaacgaggaaggtatcctgacgtcgtggt\n\
+gttcgtttttgttatttgtgccctatacgagtagataaaccatgaacagcacagtgtgaa\n\
+cccatggttgattttaggctaccttatttttaatttccgttacacagaaacgaattccac\n\
+aactaacatgccattaatttttcgatatcttataaaagatggtcgaaattcattcattta\n\
+ttttttttcggttctcgaaagtcaactaagctgtcgcgttttgtttctctttagaggtaa\n\
+aagtggctttgatctcctacgtttggatactagtcaaccattactccatttgatccgtga\n\
+gtatcacctgtctaacatccagcattatgactcctcggcgaagaaaagacacacttctta\n\
+gagtcgatgtgtattagctagggacacagttgtttaatacgatagtgagcccagggaggg\n\
+cagtgcgtcccccagtagatttattcagctagtgtaagtataagatatctcacccacgag\n\
+gttcaagtgatatgcagtcttagaataatacttatcctgaatttcgatattatgggtact\n\
+tcaataatccgctagcgctactttatgtctcgttggacagcaggacacatggcagtctta\n\
+aacactaaagacatcacctgaatgaatgtaatgggattacaagaatcaatgaggtattat\n\
+atacgacgtaggaaactctggatatatacagtaatctagttacgccatcgcacttcattc\n\
+ctctggaaacttagaagacatcagctgtacgtggaggaaccagacccccgtatgtagcca\n\
+aatagaaccaaagttgcttatacaaacacacccaatgacaatggaccgctggagttcgta\n\
+aactcggaacgtagtactgcacaaacccagcatttagcaataggagctacgtatgcaact\n\
+cccacgtggtaataccttcaagctatcaatatataggtgcctagctaatcgcattcgcaa\n\
+gcagtattcaagcttgtaaaccagtataataattacagaggctctatgaaacccaacttt\n\
+ccagctaaaagtcccaattaaatggttatttcgtacttttaaagtcgcccgttctgttat\n\
+tacgcgaattgattctactccaaaattaaacacaaattatcaaccgtttcatttatattt\n\
+gtcaatgcagctgtttaaaataaggctctactaaattataattaagacacttattaccag\n\
+atttctctagttaagtttgaaccagctcgactaccgcgaaagatacattcccttctctat\n\
+ttttcagttcatctatgggtcagagaagcattgaatttattctattcaccctcgtcgttc\n\
+acagcgaatcgtcagtgtgatcagtgtatgagaaatatcctaaaccgtttagtcagacca\n\
+cacgcttagaacaagtggtctaaaaagactgccctggaaggagtaagaagtatacagctg\n\
+atccggtgtatccttcagtcatctgccctatactaattacacgacgcaaggaaaaatagg\n\
+tttattttctaggcaaacccttcataggtgactccgatgtgttacgaatcatgcttgaga\n\
+atgtgctatcgttaccgacggataataacgatctccaatgaaccaaatgtagaatgtcta\n\
+ttgattacccttttactattcgacttagagataggagatagaacctcagtgtactttttt\n\
+agccgaatgggaatctttgggaggtgaatggccataaggtcgtaaatccaaccctcttaa\n\
+agtcttccatattatatcgttgttcgtggaatcgataacagatttgttgacccatagtaa\n\
+atgtatactagtttatgttgtaagtgtagattgttttccgattgccgtccaaactttatg\n\
+tcgtaattgtagaccagtaaagttgaccaaggtaagtgcccagcgatcctgcgagatcga\n\
+tcgccaatttttccagtcactgtaagtgtaggtttagataaagccgtatgagttatatca\n\
+taagggcctcggaaagcagcttcgaaccaaagttcccttataatagtagtttaactataa\n\
+aagtatatactggtctgtcgccctttcacgatttgttttaccggtttatgaagcgttacg\n\
+tcattagagcggctccaatttaaggttaacggcttccatgtgtagttgtatacaaggata\n\
+acttaaagtatctgttcagcgagctagttaagttatcctcgatagaacacaactcagagg\n\
+tcccaagatcgggtttgcaacttgctaatttattctcaaggcaaattgggaattatcgat\n\
+acctgtataccataaggtcgctcgatgtgatgcttatgtcttctggtgatcctaccttag\n\
+ttagtgctgattaacggaacattaatgtttatcgttttgagatttagccaattctctgat\n\
+tctaactcaagatgccttatctgacgtgctatgcagcccctaagtattttacattgtaat\n\
+aggacacgctcctttaaaactcgccaaaaggtcgttgtggttctctactggttaactata\n\
+taatttacagctttgttgagctagttcctctttggtttaagtcctcaatattagttggtt\n\
+cgagcgataagttggctagttaccttagtcactatattagatccgaatgttatgcttcat\n\
+ctgaagaccgccaccctccaaaatttcttttaagactcacttattgcaaggtgtaggtga\n\
+attcggctcgtttctcaagtggtgtatctgtacacgagtttccatattttcatcaacagc\n\
+caccgcacacttatgtcactctaggtattaaaagtcgctctacaaggggacgcaattaag\n\
+aaacagacatgctagtcaaaaataaacatagcgaggcaccactaattcggccgcttatca\n\
+atgggatgctctgcgcgagacgcgccagagctcagtagttagttcggacatacatttact\n\
+tcagatgatcaattagttttctacaaatgcttactctaccccgaaaaaagtcaccagact\n\
+cttacgtctctttagtatccttccgtcttatataaggtcagtcccccgtttcggtaccct\n\
+ggaatttactaagaataatgaaacagcccccaaggacgtacgtttacaaatgatagacca\n\
+gatcgcctagcttattccgacgcatgttgcatagaattgaaccaacggaatgtgagagta\n\
+actagatgagccgaccacagcacccgtttgcgtcgcagaatacgcctgatagttcggcca\n\
+cgaaatcatatgtcctttgagtattaagtatttgtaatgatcaatcgagctcaagcaagc\n\
+ttacacttcctcggatattcagggaacttagtgcctttgaaagatacgttgatcaacgaa\n\
+aaattgataatggctcatatggaatgcctacctcatagtgctgaattaacacagcactgc\n\
+ggacctaacttttcgaggtttcaagttcacgtctcaaaacctaataggctggaatatgta\n\
+gggatcctcggtgaatttgtgattgggtttgttgtagtactgaccaagtgaatattcttt\n\
+ttttctaaaagcagatctgctgccgggcactacgaaggagatctctgtgtatcattattg\n\
+cttcttgacatgatgactcttaaatcactgtgggtgtgcaaaacgatagcacaacccaat\n\
+tcgatagtacatattgttgatacttcgcactaaaccgttcatatttaaaggttgtgctcc\n\
+ttccttcgttaaatactggtgacttggtcctatctactattagctagacctctggggaac\n\
+cacgcccccgtaaaacctgtgcaagagagggggtcatacatcttagacatcgcgcctcca\n\
+ccagggaagcattgggtgattgaccaggtgtgtaacaaatatgattattcttatactaat\n\
+attagcaaagatgcataatgatttgtattaaatgtataattgaattgataagggtctttt\n\
+agtcagtgatagagtagtataaggtagacattagaactcttaaccggacgcagatttttc\n\
+ggtcttagtaagccaattagtcgacaaaacaaggtaagagcggttactagtagtacctat\n\
+aatgcactgaatcttcggtcgaagtatagttctaatgctatgcagattgtgacggcgaca\n\
+aatgttcagacttatatcatgaaacaagctcttgtaagtattgacaaatgaaaagattga\n\
+atatttttaaatacaaaatgcgcctacttattaggggaattaaccagattgaaggccaat\n\
+cctcacatgtaatgagataatagacgataaatgaaattcttgtaatagttgaactgctac\n\
+gtgatgggtattatatatgattgagatcctccaattgccgacgtcttgtcttgatgccca\n\
+aaagattgtcaacgaggagctccctcgcgtacctgtcgtccgtatcataaacgacgcgac\n\
+atgtacagcactccgaagtataagcaataataatgcgggtaatccagactagatcttttc\n\
+ggactcaatgcggtttcacggtaaacatgattaataccggagagtagtcgagcttatcag\n\
+cgatgcaagcgaattcattgtgccaggagatacgttgcagataaaaccggcaacgtatgt\n\
+caacaagttttggcgatctcgttgtttgtattcgacgaggcgcgggaacttcaagaacta\n\
+tcgtatattcaagtccattaccttttagtttcagactggtggagctgactaaagttatat\n\
+catcattttgtacactggtttagttaacgataatttcagatttaacatgaccagacgata\n\
+atcgctgtatatccagttggaatgtggtttgccagaaaggttaacttataatcaagcctc\n\
+tcttcagtcttgattcgtcgtatcccatccattgcgctatacctcagtgtatttggagct\n\
+gtagttataccgtgtgctaagatcagtagacatgacgagagcaatattatctaccttaca\n\
+agcatcaacggacgtctagtcggaacaaaagactctaaaactcgaacttcaggttaatat\n\
+actatagttctgtattcagcagttattcttatattcgatattatcttgcctattggatgt\n\
+ctgactttagtatattaatcatagtatctgccatgtaaaggtgccagtactaaatctgtt\n\
+tcacagtgcgaattataaacggttacaaccattaaagacaacaagaccctatagctttat\n\
+ttgaattttgtcaatgcgcaacttggagctcgcgatacatcccaattagtctatagggtc\n\
+gggacgattctacggcatttctggttataatgacaacatggattgtggcccgagaatcgc\n\
+tctttcattaattaagcaatcattacagtcttataagcgctacttccgagtggtagcagg\n\
+taactcgatataaggtcgcatgagccgaatagcttaaaaaacaggccaccgaacattgat\n\
+agagaataccgaccacagcgcaacctttgattactttcattaaattgtacggctcactcg\n\
+acatcaagcttaagattgcgataatgtgaactcaaatggatcagtactgaagaaccgtaa\n\
+cccacttcgcagaaagcgtacccagagaagatacgctgttacaatatacagggtgaaatt\n\
+attgcctgttcttcgtaaccatttcgccaaacttggttagaaatgatagccattcatgat\n\
+agaaataagctgaatgataccagtatctttaactatgtagtcagggggaagataacgatg\n\
+gtccatgtatgtttctgatatgtgacagtattggccgcgtaatttgctaacgaagctact\n\
+taatgcctttgagcttcatatagatttctttaatcaaaatcggcaaaaagatagtatgag\n\
+ctataatatatgctagtagagaactctggaccatcatctatatgaatactgattcgagcg\n\
+tgcaattactttagcctgcgtactactgactctacaaaacactctgagataagtttgtag\n\
+tcagtaagtcgctctctataaaccttttggatgaccattgtacagccacttatagatccc\n\
+aataaatagcacaggagacagagtttttcaatgctcgatcatttgccgatagtattttcg\n\
+tctaacctcagggcacctattatttgatacctaacctaacggccctttcacaatggagaa\n\
+atatatgacatcgggacaaacacaaatggtgggtggccaggagatatgacatggtggcgt\n\
+ctctaagaaacacggactccctctaggcaaactcacgtaaccaattttaatgtcaaacaa\n\
+aacgctcgaaaagattttgccgtgtaatgacctggtacattgactggtcaggaatacatc\n\
+actgtagttgccgtagtgtcctgttggtgttccatcaagacacatcgtataacgcaattt\n\
+acgacggacatcagatcaagttatacagattatttaagtatcacgtgtgcattgggacat\n\
+aagggatctcacacatgccttggaacatttttgctttgtgccgctttttcgctgcactac\n\
+caatccttacttaccagtatattcaaaggtcgttaacagaatgagaaaggttagggctct\n\
+aagttatcgtcgattgggatagacgagacatttgcgagcgccctccacggatacgaatct\n\
+cccatatcaatgtgaactggatgctatgcagtttagttcttacgtctcctagtggtaaaa\n\
+atcaaagtagcactcgcatagcagttattcagaacctaatacacaaaaccgtcaaacatt\n\
+ttctaattctaggtatgggccgatcataggagctaaggtgaaactcataaatgttttgtt\n\
+agatctagcatcctaaaaagatgcatatactgagtagctggcgtgcattctctcaattgt\n\
+atcctttttaactgaactagtcggtcccatttcgtgactgagatctattaaccgataaga\n\
+ttaataacactcgcattcgtatcagctcagagtgaagtttttcaataatttgactgatat\n\
+attaacttctaaaataaccctttaagcctcggatccgtttcccaatcacatcaaaaattc\n\
+ttattccaactatctacggattaacaacgtgcatggggatcgtagtaagaacttgttccg\n\
+atcactttgagtatatcaagttgacggcccggttattattgaatagaaacattcacctgc\n\
+taaattaaataccgcacatcggatacccgatttcagagggccgtcttactaagggcaggc\n\
+tttgttcggtttaactgagatgttcattattttacagtatgcttcaactaatatgtaacg\n\
+aaggacagtggatctgtctccatagtagatcttcagtcgtgaatttcataccgctcctat\n\
+ttaagttcgcgttcgagttgttgatcatggcacgtgaaagcaacccctagtattctagac\n\
+gaaaattttttctagttcatctgataatttgccaattcaaaaacaaccgctggtttcccg\n\
+gcgcattctctaaaatggaagtcgaacctagagccattatttgtcggtaacccatgagtt\n\
+ccttcttttcagaagttaatacactgtggtcctatacagaggaaaaacagcggttatata\n\
+cgatcgtggcataacaacattggatcaagatagcaatttggctacctattctaattctca\n\
+ctagattcggtattccactacaatatcggcagattaggattggatgaataatcggtgttt\n\
+aagtccggttgcgtctccaatctcctaatttttattaatattgatcttggtgacctattg\n\
+taaataaaaacttcaagactttgaataacggtgaaaagatagaagactcatttgaaaatg\n\
+gatcatccacagatccaaacattagcaagacactaatccccaactagctattctgatcgc\n\
+gatcgtgctgcagtactcctgtcacaatagtctgttcatgatctaattctttttgggctt\n\
+tgttcgatggtgattcagaatctttatccggtcgcttccctgtagctactttgtggggat\n\
+attgcccggggattatagggttgagatcgtttcctaaaagtatttaaaccaagtagactt\n\
+caactaaactacatcagaacatcgtgaagacaccatacgcggtacctttatttaccgata\n\
+acatttcttcaagaaataccggtaagcagcataatgaccctaaacagctcggggtatcgt\n\
+cgtagttttaaattttatttaggttactgctcaaggaataaaaactaactatttaattta\n\
+taataatattacaaggctcacactgattagatttgtctataagacttcgcgatcccccat\n\
+taccggattgtcttaagaataaactagataaaccatgcattttctagataaggcctttag\n\
+tctaattagatacaaaaaacacgatagttgcatccttaatttattgtgtcaaacctggaa\n\
+ccttttaattacccgcaaatcactttatgtcgagactacctctgaaatttattatctacc\n\
+taccgcatgaggacttgaaccatcttgtaggagttatgtttattagctaagattcgttta\n\
+tcctgtagcggtccatgtatattcaacaagcaaaaagcactcagaattgtttttagttga\n\
+gtcaagactgatatataaataagtttccctagttttttcgtggtgggacgatattgaatt\n\
+gaatcttaaccgaagagtttcccactctgtcgcacaataatacacgccaatatttccagc\n\
+cctgcttatgccttaatcggttactcaatctcccattgaagttcattttgatctgcatag\n\
+aagtttcgggcccagccttttttctgccaccttcctccaagctctgtagacgcactctaa\n\
+gattgatgctcacatgtattaattctacattaacataaatatataagtcatgcatcttcg\n\
+agtaaaatatctggttctccaacatgtcctggcacgtatcgttataatgcccatacatgt\n\
+agtattaaaatgattgggttaactggatattaagatcatcgaaattgtaaagtcaaatta\n\
+acaatactgtctcaagaccgtgtattcctcgtgctcggaagggctattacgcttacttcc\n\
+gttttggtatcttaatatgactttcaaaaattaagttgcagtgagtcctacctgcgtgca\n\
+tcggttagcaagagtataaaagttgtttaaacgaactacttgctttacaataccggtcgt\n\
+atatatcgccgtgaatccagaagattgtcttctttggattatcaaccgagatcctgtgga\n\
+ccgatgttttgggaccttcacagaggactccaggtagagctcgcttttgcattaatctaa\n\
+gaattgtacctctctaaaagatctaaaacagtgaatgtgtatttcatggaaaaacacaga\n\
+gaaacgtaaattactttaggccgaaaggcacatgagttattatacatatacgagatggtg\n\
+gtatacatcgaattcggggcatacactatagttgcattgtatttagctgctttaaataat\n\
+atgatattaccttccttacataagacattaccggcataccctggttttcaacttgtgggg\n\
+ctttttgacgatcgcactctcatttgatccgagtagggcggtgacccctgcttttcaaat\n\
+acaaaaatttcgctatgaaggtaatagattacttttcgctgttatgatagaaacggtaaa\n\
+tttaaaattgaaacttctagaaaagtaaagtaacgagaaatgattttgtgaataatgcgg\n\
+tcatgattgcgcaagtaagaaaaaaaggcaaaaggatgcgcggaatagaaacttatcagt\n\
+cacgggtatcttgatttcattcttcttgtcaattgccgacataggatgaaatcagattcc\n\
+aatgcaatacacagtaacccccacccttgattgtaatgtcgatttgaagttgtacgcgtc\n\
+gacgaagtggatagtatacgggccttttgtacggtgcgatcaactatgaatctcggcgag\n\
+ttagatggtcgtacaatctcacacatagaggtcacttgcctgtaatgacgaattttcggc\n\
+taggtactcgaactttattagaagtaaaaatgtgggcaaaagaaggattccattttacaa\n\
+gacgattacaatgagttacatgtctctcaacgtagtctttccctagtagtctttgaacta\n\
+tttaggtactccagaaaattttagcaaagggtttctgtgtgaatccgccattcatgttta\n\
+tgatggaacaataagaataacgccctcgtatgttatcgacagtgaagtcagcagttcggc\n\
+caaaaacatattcaatttagtacagatccccagaagttaagctaagtgctctaaaatggc\n\
+ctaaacggttatcaaagtaggtctaattactatactaacgggtgcatcgtaataactgct\n\
+gtcgatgcaacactatatgatagtgtcgttttgctatatatgtacaatgtgacaaagaag\n\
+ccttagcgattcttgcaaacttaggacttcggattctcaatcttaaatgtccgaaaacgc\n\
+aaagattcaaaaatttaatctatgagcagatatgcctgatggtgactacgcgtatgttaa\n\
+ggctaaatgttgacaaccgcacacataatcgaactattgatagtcgggagcataaccagg\n\
+tgaacgtactttgttcacgacatttattgacatgttctaaatacgtctcaaaatcacggc\n\
+gcactagaaaacgcaatcaaatcattgtcctggtttaagggccgtaatgccggtagtgtc\n\
+aaacttcatgagaactttagctggcttttggccagtatttagggaccaagagcactagcc\n\
+ttaagctgaatattttgccatttatctactgttataactttaaaacttggtggcaccaga\n\
+cttgtcgatacacacgcatcaatctgtaacgtaaaaggtttactaagaacaagcgtagga\n\
+attgagtttatattatatttaaactaaaagatgatattagcttctgagggcgatagggct\n\
+ccaaatcataaagaggaatatattattacacgattagaaacccacaacatacctcgaatc\n\
+gcccaaaagtttgacgaaacttggcagtactccacatctcagtaatacagttgggagagt\n\
+ctcaaatgttgttttattactcaatgaaccaccctcataatttcactgctgttccattaa\n\
+atttgcaaacgatcatttgctttgaagaaacgtaaaatcgacaaaattacagataagtag\n\
+atgcataataaaaaaaactgctcgctataacacgatcatcgtgcattcttacttaggagc\n\
+atcacccgcacaataacgtaccttaaactacaacactattagaccgagtactgtaattca\n\
+cgaaagctcaagctcgcattgtaaagaacttgctctctcgtaaaatgtgataatagtttg\n\
+cggagaggattcaattattttccattgcacctactccactagattcgataaaagaaggtg\n\
+gtcctcccttaaaaagaaatgttaagtaacatcggaaccataagcaaagcatgtaagtga\n\
+accgtcatccttccctaagaaacataaaggtttttaataatgtcgactgtgaactataac\n\
+tgcatcctttcctgacctactccggttccttgttgttatttctgaacgagaccagtagat\n\
+aaacaatgtaaaccacagtgggtaccaatggtgcatgtgacgctaccgttgttttaagtg\n\
+cccgtacaaacataagaagtcataatcttacttgaaattaattttgccttttattttttt\n\
+tcaggctcgaaattaatgatttgttttttttgaccttctagttacgctaatatgcggtcg\n\
+cctgtggtttctattgagtcctataacgggatgggatctaatacgtttggttactagtaa\n\
+acaaggtataaatttgataccggagtatcaactgtataacatcaagctttatgactcata\n\
+cgcgaagtaatgacacaaggctttcaggagatcgcgagtacagagccactaaggggtgta\n\
+ttacgatagtgacaccaccgagcgcactcactccccaagtagatttatgatcctacgcta\n\
+agtattagatatataaccaaagaggttctagtcagtgcaactcttagaataataattagc\n\
+cggttttgcctttttaggcctaatgcaatattcagctagcccttatgtatctcgcgttcc\n\
+acagcaccactcatggcacgcgtttaaactaatcaaatataatctatgaatgttatgcca\n\
+gtacttgaataaatcaggttttttataagtccttgcatactctcgttatatactgttaga\n\
+gtcttaccccatagaaattctttcatctgcaaacttagaagaattctcagctacggggag\n\
+cataaagtccccaggatgttgacaaatacaacaaatgtggcttatacaaacactccatat\n\
+gaaaatcgaaccctcgtggtagttttagccgaaccttgtacggataaatccctccatttt\n\
+ccaatagcagatacctatcctactacctcgtggtattaaattaaagcttgaaatatagag\n\
+ctgcatagcttatccaattcccaagcacgagtctaccgtcgtaaccacgatttgatttac\n\
+agacgctagagcaaacccatctttaaacatataagtaaaaattaaagggtgagtgcgtac\n\
+gtgtttactagcaacttcgcttattaagacaattgtttataagccataattaaaaacata\n\
+tgttcaacaggttcattgatatttgtaattgcacaggtttttaataaggatctacgtaag\n\
+tataatgaacaaactttttaccagagttatattctgtactttgaaaatgctcctctaccg\n\
+ccttagagactttcaattagattttttgcagttaatctatgcgtaagtgaaccatgcaag\n\
+ggatgcgattcaaccgcctcgtgctaaccctatcgtctgtctcataactgtaggtctaat\n\
+ataattttcagttttcgaacacataaccctttgaaaatctgctatttaatgtctcacctg\n\
+catgcactatcttctatactgctcagaacggctatacgtcactatgctccaagtgacgat\n\
+ttaaacgaagcaaggaataataggtttattttagtgcaaaacaattaagtgcggactacg\n\
+tgctctttacaataagccttgtgattgggctataggttaagtcccatattaacgatctcc\n\
+aatgtacaaaatcgacaatcgctttgcattacccggttactagtcgaattacagatagct\n\
+gttagatactcactctaattttggacaacaatcccaatcttggggtcgtctatcgcctga\n\
+agctcgtaaatccttccatcttaaacgattacatattatagacttgttcggggtagagat\n\
+atcacagttgtgcaaacattgtaaatcgatactagtttatgttggtagtctagttgcttt\n\
+taccattccccgaaaaacttgatctactatttcgacaacagtaaacttgaactaggtaag\n\
+tgaaaacagagaatgcctcatagtgccactatttgtccactatatgtaagtgtagcttta\n\
+cataatccactatgactgagatcattacggcctaggaaagcagcgtagaaaaaaagggcc\n\
+cggatattacgactgtaactataaaactagttactggtagcgcgccatgtatagatttgt\n\
+tttaccggttgtggttgcgttaacgaatttcagccgcgaaaattgatccgttaaccagtc\n\
+catctcgacttctataaaacgataaagtaaagttgatgttcagcctccttcttatggttg\n\
+catcgagagtacactactcagtgggaaatagatcggggttcctacttcagattgtattat\n\
+ctaggcaattgccgattgtgccatacctggataaaataagctacctacatgtgatgctta\n\
+tctattatcgtcatactaccttagggtgtcctgttgaacgctacattaatctttagccgt\n\
+ttgagatgttccaatggataggagtctaacgcatgatgaagtttaggaaggcagagcatc\n\
+ccactaagtatgtgacagtgtatttcgaaacgagacgttataaatagaaaaaaggtcctt\n\
+ctggttctattctgctgaactattgaatggaaagattggttgacctacgtactatttgct\n\
+tgaagtcatcaatttgacggggtgagagacatatggtgcatactttacggactctatatt\n\
+ttagatcagaagcttagcagtcttctctacaccccctcacgacataattgcttttaagaa\n\
+tctatgtttgattcctctacgggaattcggatccgttcgcatgtgcggtttatctaaacc\n\
+aggggacatatgttcagctaaagcatacgaacactttgctaactagacgtatgtatagta\n\
+gctataaatcccgacgatatttacaaaaagaaatgagactcaaatatatacatagcgacc\n\
+ctacacttattcgcaccctgatctaggcgatcctagcacccacacccgaaagtgagcact\n\
+agtgtcttccgtattaaatttactgcagttgagattttagttgtctactaaggattactc\n\
+taacccgtaataaggatcaagactcggtactagctttactatcattccctatgtgttttc\n\
+ctaactcacaagggtacgtaccagcctatgtaattacaataatgataaagacacaaagga\n\
+agtaactttacaaatgagtctccagttacactagcttagtccctcccatcttgctttgaa\n\
+gtctaaatacgcaatctctgaggatatacagcagaagaacactcataacgttggagtcca\n\
+agaattagactcatagggcccccaacatttaatatgtactgtgagtttgaaggtgttcta\n\
+ttgttaattcctgctcttgatacatgacacgtactccgtgtttaaggcttcggactgact\n\
+ttctttcataagttgagcaacgaaaatttcagaatcgataagttggattcactaactaat\n\
+acggctgattgaaaactccactccggacctatatggtcgacctttatacgtaaccgatat\n\
+aaaacttataggctggtatatcgagccttcctagcgcaatttcggatggggtttcttcta\n\
+ctactcaacaacggaatagtctttgtttagtaaaccagagctcaggacgcccaatacgta\n\
+ggagagcgctgtggagcatgtgtcattatggactggagcactcttaaatcactctgcgtg\n\
+tgctaaacgatagatcataacatgtcctgagtaaattttcttgatacgtcgcaatatacc\n\
+gttattagttaaacgttctcatccgtcatgcgtgaaatacggctgtcgtgctcagatata\n\
+ctattagcgactcatctcgcctaacacgcacacgtataaactcggaatgactgccgctct\n\
+tacatattagaaatacagactacaccacggaagcattgggtcattctcaaccgctgtata\n\
+aaagatgattagtcttataataagattaccaaagaggcagaatcatgggtagtaaatcta\n\
+ttattcaagtgattaccgtcgtgtaggcagggagtgaggacgagatggtactcaggacaa\n\
+atattaaccggacgaagtggtttacgtcgtactttcactattagtagtaaatacaaggta\n\
+acaccggggaatagtactaaatataatgatatctatcttcgggagaacgagtcgtctatt\n\
+gctttgaacattctcaaggcgtaaaatgtgctgacttatagcatgatacaaccgattgtt\n\
+acttttgtctattcaaaagattgaatagttttttatacaaaagccgcatacttatgacgg\n\
+ctagtatacagtttcatcccctagcatcaatgctatggacagtattgaacttataggaaa\n\
+ttcttctaatagggcaaatccgtcgtgatgcctattttttttcagtcacatcctcaaatg\n\
+gcactagtattgtcgggatcccattaacaggctcaaccacgagctcacgcgaggacatgt\n\
+agtccgtatctttaacgaagcgacagcgacagaactcccatggataaccaattataaggc\n\
+ccgtaatcctctagacatcgtttaccaataaatccgctttctccgtaatcatgttgaata\n\
+ccccagagtagtccagatgataaccgatgaaacacaagtctttctcaatgcacttacggt\n\
+gaacttattaccgccaacgtagctcatcaaggttgcgacatctagttgtgtgtttgcgac\n\
+gagcccagcgaacttcatcaactttcgtatattcaacgccttgtaattttactttaagac\n\
+gcctggtgatgtagattcttagataatcagtttgttatcggctgtactttaccataattt\n\
+cacaggtttcaggtcaagaagattatagctgtatatacagttccatgctcggtgcacaga\n\
+aacgtgatcggataataatcaatcgcttatgtcgtctttaggcgtatccaatacatgccc\n\
+cgataccgcagtgtatttcgacatgtaggtataccgtcgcatttgagctcgagtcaggac\n\
+gtcagctagattagattccttaatagaatataccgacctctagtccgaactaaactatag\n\
+ataacgccaacttcaggttaattgtctagtcgtctgtttgcagatgggattcttagatga\n\
+gtgagtatcggccatattggttcgagcactttagtttttgatgcataggatatgcaatgt\n\
+atagctgaaagtactttatctgtttcaaactcacattgattaaaccggtaaacctttaaa\n\
+gactacaagaaaatattcagtgagggcaattttgtcaatcacaatcttccagctagagat\n\
+acttcacaatttgtcttgaggctacgcaacattagacggattttcgcgttttattgaaat\n\
+aatcgaggggcccaagagtatccatagttcattttgtaagatttctttacaggcttatta\n\
+cagcttcttcagactcctacatgcttacgagttatatgctagcatgtgaacaatagatta\n\
+atatacaggaaaacgtacattgagagagatgaccctacacagcgcaaccgttgagtactt\n\
+tcattaaagggtaacgctctcgagacagcatccttaagatggccttattgtcaaatcatt\n\
+tgcagaagtacgcaagatccctaaccaacgtagaagaatccctacaaacacatgagacgc\n\
+ggtgaaaatagacagggtgttagtattcaatcttcggagtatcaatttcgccaatcttgg\n\
+tgagaaagcataccctttcttcagagaaagaagatcaatcataacactatctttaacgag\n\
+gtacgcacgcgcatcattacctgcctccatggatctttaggatagcggaaagtattggca\n\
+gcgtattgtgatttcgttcctactttatcaatttcacattcatatacatgtcttttatca\n\
+aaatcgccaataagataggatgagctatattagatgctagtagagttcgcgccaacatca\n\
+tcgataggaatactcaggacagcgtgataggacttttcaatccctaatactctctataat\n\
+tataactctctcttaagtttggaggcagtaacgcgctctatataatcagtttgctgcacc\n\
+attcttcagcctctgatacatacaaataaattccacagcagtaagagggtttaattgaga\n\
+catcttgggaacttaggattttactctaacatcaccgaaacgattattggataccgtacc\n\
+taaacgaactttctcaaggcagtaatataggacatccgcaataacacaaatgctgcctcc\n\
+ccaggagttatgtcttcctggaggctatatcttacacccactcactataggcaaactaaa\n\
+gtttaaatgttgattgtctaaaaaaaagatagataagagttggccggcgtagcacatgcg\n\
+aaagtgaatcgtaagctataattctctggacttgaagttctgtcctgttcctctgcaaga\n\
+aacaaacttcctttaaagctatttacgacgcacatctcagcaagttataaacatgttgga\n\
+agtttctagtcggaattcccaaagaacggatctatctaatgcattcctacatttttcctg\n\
+tctgccgatggtgccatcctattcaaagaatttcttaaaagtagattaaatgggactttt\n\
+aacaatgagtaaccttacgcctctaagggttcctcgagtgccatacaccagtcaggtccg\n\
+agccacatacacggagaacattctaacatagcattctcaactcgatcatttgcaggttac\n\
+ttctttcctatcctagtgctaaaaatcatacttgcaatcccatagcacggattaagaacc\n\
+taagaaacaattcagtaaaacatgttcgaattcttggtatgggaacatcattgcagctat\n\
+ggtctaacgcattaatgtttgggtacatcttccatcatataaacaggaagagtctgacga\n\
+cagggagtgcttgcgatcatgtctatcattgtgaaatcaaattgtagctcacatgtcgtc\n\
+tatgagagcgtgtatccgataagatttagaaaaatagaagtcgtataagatctcactgaa\n\
+cttttgaatgaatgtgaagcatatatgatctgctttaataaaactttatccataggatac\n\
+gtttccaaatcaattcaataattattagtcaaaatagataaggatgaacaacctgaaggc\n\
+cgatcggacgtagaaagtggtcccatcactttgagttgatattgttgaaccacacgttat\n\
+tatggttttcaaacagtctcaggatattgtatatacagataatccgataccagttgtctg\n\
+acgcccctcttacgtaccccaccctttgtgacgtttaaagcagttgttcagtattttaaa\n\
+ctaggcggcaactaatttggaaagaagcacagtggatatgtctaaattcttgttattcag\n\
+gcctgaatttaatacaccgcatagttaacttcgcggtagagttgttcatcatgcctcctc\n\
+taagctaccacttctatgatacaccaatagttgttctacggaatctgataattggccaag\n\
+tcataaacttccgctgcgttcaacccccttgctcgaatatccaactcgaaaagacagcct\n\
+tttggtgtccggaacaaatcagttacttcttttctgatgttaattctctgtggtcagata\n\
+cagaccaaaaactccgcggatttaccatcctccaagaacaaatttgcatcaacatagcat\n\
+tttggctacatattctaagtctcaatagtttaggttttcaactacattatcccaacatta\n\
+ggattggaggaataatagctgggtaagtccccttgcgtctacaatcgactattttttatg\n\
+aatatgcttctgccgcacctatggttattaaaaaagtcatgactttgaagaaccctgaaa\n\
+agatagatgaatcaggtgtaatggcagcagccaaagagcatataattagcaacactctaa\n\
+gaacattatagatatgatgatagcgatcgtcatgatgttatccggtcacaatagtagctt\n\
+catcagctaattcgttttgccagtggtgacttgcgctggaagaatcgttatacggtccct\n\
+tccctcttgatacggtgggggcttattcaaccgcgtggattgggttgtcatacttgcatt\n\
+aaacgatgtaaaccatctagtagtcaactatactaaatcacaaaatagtgatcaatacat\n\
+acccgcttcatggttttaaccatttaattgattaaagatattccgctaagaaccattatc\n\
+tacctaaactgatcgccgtatcctagtagtttgaaatttgatgtaccgtaatgatcaacg\n\
+aagtaaaacgttatattgtatgtagaataataggtcttggagctaaatgatgtgattggt\n\
+agtgaagacttacccttacaactttaccggtttctcggaagaatatactagagaatcaat\n\
+gcatgggctacataagcactttagtctaatgagataaaaaatacacgagtcttccatcat\n\
+gaattttttgtcgaaaaactcgaacctggtaatttaaaccatatatctttatgtcgtcaa\n\
+taactctcatatgttttatataacttcccaatcacgacttgtaactgcttgttcgactga\n\
+gctgtttgagctatgaggccgggatccggttgagctacatctatttgctacaagaaaaat\n\
+gaaagcacatttgttgggagttctggctacactcatagagaaataagtggcccgagtggg\n\
+tgcggcctgcctccatattcaagtgtatcttaaaccaagtggttccaacgctcgcgctaa\n\
+agaattaaagcctttatttcctccacggagtagcccgtaatccggttcgaaagagaccat\n\
+tgaagttaattttcatatccagtgaagtttaggcacaagcatgtgttctgccacatgcct\n\
+caaagcgctcttcaaccaagatatgattcatcctaacttcgatgaatgcgtctgtaacat\n\
+aaatatagaaggaatgattcggcgagttaattttcgccttctccaacatggcatccctac\n\
+gttcgttataaggaccatacatgtaggttttaaaggtttgcggttaatcgatatttacat\n\
+catagaaattctatagtcaaatttacaagactctagatactcactcgttgcagccggcta\n\
+ggaagcgctttgtaccttacttcccttttcgttgcgtaatatgaatttcatatagtaagt\n\
+tcaaggcactcatacctccgtgaagagggtagatagactattaaagttgtttaatagtac\n\
+gtattgatggaaatgacccgtaggagatttaccactcaatccacaagattcgctgctgtg\n\
+cattatcaaaacagtgcatgtcgaaacatgggttgggtccttcaaacacgaatccaggta\n\
+gagatacctttgcaattttt\n";
+
+dnaInput = dnaInput + dnaInput + dnaInput;
+
+var ilen, clen,
+ seqs = [
+ /agggtaaa|tttaccct/ig,
+ /[cgt]gggtaaa|tttaccc[acg]/ig,
+ /a[act]ggtaaa|tttacc[agt]t/ig,
+ /ag[act]gtaaa|tttac[agt]ct/ig,
+ /agg[act]taaa|ttta[agt]cct/ig,
+ /aggg[acg]aaa|ttt[cgt]ccct/ig,
+ /agggt[cgt]aa|tt[acg]accct/ig,
+ /agggta[cgt]a|t[acg]taccct/ig,
+ /agggtaa[cgt]|[acg]ttaccct/ig],
+ subs = {
+ B: '(c|g|t)', D: '(a|g|t)', H: '(a|c|t)', K: '(g|t)',
+ M: '(a|c)', N: '(a|c|g|t)', R: '(a|g)', S: '(c|t)',
+ V: '(a|c|g)', W: '(a|t)', Y: '(c|t)' }
+
+ilen = dnaInput.length;
+
+// There is no in-place substitution
+dnaInput = dnaInput.replace(/>.*\n|\n/g,"")
+clen = dnaInput.length
+
+var dnaOutputString;
+
+for(i in seqs)
+ dnaOutputString += seqs[i].source + " " + (dnaInput.match(seqs[i]) || []).length + "\n";
+ // match returns null if no matches, so replace with empty
+
+for(k in subs)
+ dnaInput = dnaInput.replace(k, subs[k]) // FIXME: Would like this to be a global substitution in a future version of SunSpider.
+ // search string, replacement string, flags
diff --git a/tests/benchmarks/script/sunspider/tests/string-base64.js b/tests/benchmarks/script/sunspider/tests/string-base64.js
new file mode 100644
index 0000000000..dfc949f70f
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/string-base64.js
@@ -0,0 +1,135 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla XML-RPC Client component.
+ *
+ * The Initial Developer of the Original Code is
+ * Digital Creations 2, Inc.
+ * Portions created by the Initial Developer are Copyright (C) 2000
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Martijn Pieters <mj@digicool.com> (original author)
+ * Samuel Sieb <samuel@sieb.net>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+// From: http://lxr.mozilla.org/mozilla/source/extensions/xml-rpc/src/nsXmlRpcClient.js#956
+
+/* Convert data (an array of integers) to a Base64 string. */
+var toBase64Table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+var base64Pad = '=';
+
+function toBase64(data) {
+ var result = '';
+ var length = data.length;
+ var i;
+ // Convert every three bytes to 4 ascii characters.
+ for (i = 0; i < (length - 2); i += 3) {
+ result += toBase64Table[data.charCodeAt(i) >> 2];
+ result += toBase64Table[((data.charCodeAt(i) & 0x03) << 4) + (data.charCodeAt(i+1) >> 4)];
+ result += toBase64Table[((data.charCodeAt(i+1) & 0x0f) << 2) + (data.charCodeAt(i+2) >> 6)];
+ result += toBase64Table[data.charCodeAt(i+2) & 0x3f];
+ }
+
+ // Convert the remaining 1 or 2 bytes, pad out to 4 characters.
+ if (length%3) {
+ i = length - (length%3);
+ result += toBase64Table[data.charCodeAt(i) >> 2];
+ if ((length%3) == 2) {
+ result += toBase64Table[((data.charCodeAt(i) & 0x03) << 4) + (data.charCodeAt(i+1) >> 4)];
+ result += toBase64Table[(data.charCodeAt(i+1) & 0x0f) << 2];
+ result += base64Pad;
+ } else {
+ result += toBase64Table[(data.charCodeAt(i) & 0x03) << 4];
+ result += base64Pad + base64Pad;
+ }
+ }
+
+ return result;
+}
+
+/* Convert Base64 data to a string */
+var toBinaryTable = [
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
+ 52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1, 0,-1,-1,
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14,
+ 15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
+ -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
+ 41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
+];
+
+function base64ToString(data) {
+ var result = '';
+ var leftbits = 0; // number of bits decoded, but yet to be appended
+ var leftdata = 0; // bits decoded, but yet to be appended
+
+ // Convert one by one.
+ for (var i = 0; i < data.length; i++) {
+ var c = toBinaryTable[data.charCodeAt(i) & 0x7f];
+ var padding = (data.charCodeAt(i) == base64Pad.charCodeAt(0));
+ // Skip illegal characters and whitespace
+ if (c == -1) continue;
+
+ // Collect data into leftdata, update bitcount
+ leftdata = (leftdata << 6) | c;
+ leftbits += 6;
+
+ // If we have 8 or more bits, append 8 bits to the result
+ if (leftbits >= 8) {
+ leftbits -= 8;
+ // Append if not padding.
+ if (!padding)
+ result += String.fromCharCode((leftdata >> leftbits) & 0xff);
+ leftdata &= (1 << leftbits) - 1;
+ }
+ }
+
+ // If there are any bits left, the base64 string was corrupted
+ if (leftbits)
+ throw Components.Exception('Corrupted base64 string');
+
+ return result;
+}
+
+var str = "";
+
+for ( var i = 0; i < 8192; i++ )
+ str += String.fromCharCode( (25 * Math.random()) + 97 );
+
+for ( var i = 8192; i <= 16384; i *= 2 ) {
+
+ var base64;
+
+ base64 = toBase64(str);
+ base64ToString(base64);
+
+ // Double the string
+ str += str;
+}
+
+toBinaryTable = null;
diff --git a/tests/benchmarks/script/sunspider/tests/string-fasta.js b/tests/benchmarks/script/sunspider/tests/string-fasta.js
new file mode 100644
index 0000000000..14a81f3922
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/string-fasta.js
@@ -0,0 +1,85 @@
+// The Great Computer Language Shootout
+// http://shootout.alioth.debian.org
+//
+// Contributed by Ian Osgood
+
+var last = 42, A = 3877, C = 29573, M = 139968;
+
+function rand(max) {
+ last = (last * A + C) % M;
+ return max * last / M;
+}
+
+var ALU =
+ "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" +
+ "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA" +
+ "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT" +
+ "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA" +
+ "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG" +
+ "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC" +
+ "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA";
+
+var IUB = {
+ a:0.27, c:0.12, g:0.12, t:0.27,
+ B:0.02, D:0.02, H:0.02, K:0.02,
+ M:0.02, N:0.02, R:0.02, S:0.02,
+ V:0.02, W:0.02, Y:0.02
+}
+
+var HomoSap = {
+ a: 0.3029549426680,
+ c: 0.1979883004921,
+ g: 0.1975473066391,
+ t: 0.3015094502008
+}
+
+function makeCumulative(table) {
+ var last = null;
+ for (var c in table) {
+ if (last) table[c] += table[last];
+ last = c;
+ }
+}
+
+function fastaRepeat(n, seq) {
+ var seqi = 0, lenOut = 60;
+ while (n>0) {
+ if (n<lenOut) lenOut = n;
+ if (seqi + lenOut < seq.length) {
+ ret = seq.substring(seqi, seqi+lenOut);
+ seqi += lenOut;
+ } else {
+ var s = seq.substring(seqi);
+ seqi = lenOut - s.length;
+ ret = s + seq.substring(0, seqi);
+ }
+ n -= lenOut;
+ }
+}
+
+function fastaRandom(n, table) {
+ var line = new Array(60);
+ makeCumulative(table);
+ while (n>0) {
+ if (n<line.length) line = new Array(n);
+ for (var i=0; i<line.length; i++) {
+ var r = rand(1);
+ for (var c in table) {
+ if (r < table[c]) {
+ line[i] = c;
+ break;
+ }
+ }
+ }
+ ret = line.join('');
+ n -= line.length;
+ }
+}
+
+var ret;
+
+var count = 7;
+ret = fastaRepeat(2*count*100000, ALU);
+ret = fastaRandom(3*count*1000, IUB);
+ret = fastaRandom(5*count*1000, HomoSap);
+
diff --git a/tests/benchmarks/script/sunspider/tests/string-tagcloud.js b/tests/benchmarks/script/sunspider/tests/string-tagcloud.js
new file mode 100644
index 0000000000..d3e5a1fb19
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/string-tagcloud.js
@@ -0,0 +1,265 @@
+
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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.
+ */
+
+/*
+ Portions from:
+ json.js
+ 2007-10-10
+
+ Public Domain
+*/
+
+// This test parses a JSON string giving tag names and popularity, and
+// generates html markup for a "tagcloud" view.
+
+if (!Object.prototype.toJSONString) {
+
+ Array.prototype.toJSONString = function (w) {
+ var a = [], // The array holding the partial texts.
+ i, // Loop counter.
+ l = this.length,
+ v; // The value to be stringified.
+
+ for (i = 0; i < l; i += 1) {
+ v = this[i];
+ switch (typeof v) {
+ case 'object':
+
+ if (v && typeof v.toJSONString === 'function') {
+ a.push(v.toJSONString(w));
+ } else {
+ a.push('null');
+ }
+ break;
+
+ case 'string':
+ case 'number':
+ case 'boolean':
+ a.push(v.toJSONString());
+ break;
+ default:
+ a.push('null');
+ }
+ }
+
+ return '[' + a.join(',') + ']';
+ };
+
+
+ Boolean.prototype.toJSONString = function () {
+ return String(this);
+ };
+
+
+ Date.prototype.toJSONString = function () {
+
+ function f(n) {
+
+ return n < 10 ? '0' + n : n;
+ }
+
+ return '"' + this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z"';
+ };
+
+
+ Number.prototype.toJSONString = function () {
+
+ return isFinite(this) ? String(this) : 'null';
+ };
+
+
+ Object.prototype.toJSONString = function (w) {
+ var a = [], // The array holding the partial texts.
+ k, // The current key.
+ i, // The loop counter.
+ v; // The current value.
+
+ if (w) {
+ for (i = 0; i < w.length; i += 1) {
+ k = w[i];
+ if (typeof k === 'string') {
+ v = this[k];
+ switch (typeof v) {
+ case 'object':
+
+ if (v) {
+ if (typeof v.toJSONString === 'function') {
+ a.push(k.toJSONString() + ':' +
+ v.toJSONString(w));
+ }
+ } else {
+ a.push(k.toJSONString() + ':null');
+ }
+ break;
+
+ case 'string':
+ case 'number':
+ case 'boolean':
+ a.push(k.toJSONString() + ':' + v.toJSONString());
+
+ }
+ }
+ }
+ } else {
+
+ for (k in this) {
+ if (typeof k === 'string' &&
+ Object.prototype.hasOwnProperty.apply(this, [k])) {
+ v = this[k];
+ switch (typeof v) {
+ case 'object':
+
+ if (v) {
+ if (typeof v.toJSONString === 'function') {
+ a.push(k.toJSONString() + ':' +
+ v.toJSONString());
+ }
+ } else {
+ a.push(k.toJSONString() + ':null');
+ }
+ break;
+
+ case 'string':
+ case 'number':
+ case 'boolean':
+ a.push(k.toJSONString() + ':' + v.toJSONString());
+
+ }
+ }
+ }
+ }
+
+ return '{' + a.join(',') + '}';
+ };
+
+
+ (function (s) {
+
+ var m = {
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ };
+
+
+ s.parseJSON = function (filter) {
+ var j;
+
+ function walk(k, v) {
+ var i, n;
+ if (v && typeof v === 'object') {
+ for (i in v) {
+ if (Object.prototype.hasOwnProperty.apply(v, [i])) {
+ n = walk(i, v[i]);
+ if (n !== undefined) {
+ v[i] = n;
+ }
+ }
+ }
+ }
+ return filter(k, v);
+ }
+
+ if (/^[\],:{}\s]*$/.test(this.replace(/\\./g, '@').
+ replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(:?[eE][+\-]?\d+)?/g, ']').
+ replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+ j = eval('(' + this + ')');
+
+ return typeof filter === 'function' ? walk('', j) : j;
+ }
+
+ throw new SyntaxError('parseJSON');
+ };
+
+
+ s.toJSONString = function () {
+
+ if (/["\\\x00-\x1f]/.test(this)) {
+ return '"' + this.replace(/[\x00-\x1f\\"]/g, function (a) {
+ var c = m[a];
+ if (c) {
+ return c;
+ }
+ c = a.charCodeAt();
+ return '\\u00' + Math.floor(c / 16).toString(16) +
+ (c % 16).toString(16);
+ }) + '"';
+ }
+ return '"' + this + '"';
+ };
+ })(String.prototype);
+}
+
+var tagInfoJSON = '[\n {\n \"tag\": "titillation",\n \"popularity\": 4294967296\n },\n {\n \"tag\": "foamless",\n \"popularity\": 1257718401\n },\n {\n \"tag\": "snarler",\n \"popularity\": 613166183\n },\n {\n \"tag\": "multangularness",\n \"popularity\": 368304452\n },\n {\n \"tag\": "Fesapo unventurous",\n \"popularity\": 248026512\n },\n {\n \"tag\": "esthesioblast",\n \"popularity\": 179556755\n },\n {\n \"tag\": "echeneidoid",\n \"popularity\": 136641578\n },\n {\n \"tag\": "embryoctony",\n \"popularity\": 107852576\n },\n {\n \"tag\": "undilatory",\n \"popularity\": 87537981\n },\n {\n \"tag\": "predisregard",\n \"popularity\": 72630939\n },\n {\n \"tag\": "allergenic",\n \"popularity\": 61345190\n },\n {\n \"tag\": "uncloudy",\n \"popularity\": 52580571\n },\n {\n \"tag\": "unforeseeably",\n \"popularity\": 45628109\n },\n {\n \"tag\": "sturniform",\n \"popularity\": 40013489\n },\n {\n \"tag\": "anesthetize",\n \"popularity\": 35409226\n },\n {\n \"tag\": "ametabolia",\n \"popularity\": 31583050\n },\n {\n \"tag\": "angiopathy",\n \"popularity\": 28366350\n },\n {\n \"tag\": "sultanaship",\n \"popularity\": 25634218\n },\n {\n \"tag\": "Frenchwise",\n \"popularity\": 23292461\n },\n {\n \"tag\": "cerviconasal",\n \"popularity\": 21268909\n },\n {\n \"tag\": "mercurialness",\n \"popularity\": 19507481\n },\n {\n \"tag\": "glutelin venditate",\n \"popularity\": 17964042\n },\n {\n \"tag\": "acred overblack",\n \"popularity\": 16603454\n },\n {\n \"tag\": "Atik",\n \"popularity\": 15397451\n },\n {\n \"tag\": "puncturer",\n \"popularity\": 14323077\n },\n {\n \"tag\": "pukatea",\n \"popularity\": 13361525\n },\n {\n \"tag\": "suberize",\n \"popularity\": 12497261\n },\n {\n \"tag\": "Godfrey",\n \"popularity\": 11717365\n },\n {\n \"tag\": "tetraptote",\n \"popularity\": 11011011\n },\n {\n \"tag\": "lucidness",\n \"popularity\": 10369074\n },\n {\n \"tag\": "tartness",\n \"popularity\": 9783815\n },\n {\n \"tag\": "axfetch",\n \"popularity\": 9248634\n },\n {\n \"tag\": "preacquittal",\n \"popularity\": 8757877\n },\n {\n \"tag\": "matris",\n \"popularity\": 8306671\n },\n {\n \"tag\": "hyphenate",\n \"popularity\": 7890801\n },\n {\n \"tag\": "semifabulous",\n \"popularity\": 7506606\n },\n {\n \"tag\": "oppressiveness",\n \"popularity\": 7150890\n },\n {\n \"tag\": "Protococcales",\n \"popularity\": 6820856\n },\n {\n \"tag\": "unpreventive",\n \"popularity\": 6514045\n },\n {\n \"tag\": "Cordia",\n \"popularity\": 6228289\n },\n {\n \"tag\": "Wakamba leaflike",\n \"popularity\": 5961668\n },\n {\n \"tag\": "dacryoma",\n \"popularity\": 5712480\n },\n {\n \"tag\": "inguinal",\n \"popularity\": 5479211\n },\n {\n \"tag\": "responseless",\n \"popularity\": 5260507\n },\n {\n \"tag\": "supplementarily",\n \"popularity\": 5055158\n },\n {\n \"tag\": "emu",\n \"popularity\": 4862079\n },\n {\n \"tag\": "countermeet",\n \"popularity\": 4680292\n },\n {\n \"tag\": "purrer",\n \"popularity\": 4508918\n },\n {\n \"tag\": "Corallinaceae",\n \"popularity\": 4347162\n },\n {\n \"tag\": "speculum",\n \"popularity\": 4194304\n },\n {\n \"tag\": "crimpness",\n \"popularity\": 4049690\n },\n {\n \"tag\": "antidetonant",\n \"popularity\": 3912727\n },\n {\n \"tag\": "topeewallah",\n \"popularity\": 3782875\n },\n {\n \"tag\": "fidalgo ballant",\n \"popularity\": 3659640\n },\n {\n \"tag\": "utriculose",\n \"popularity\": 3542572\n },\n {\n \"tag\": "testata",\n \"popularity\": 3431259\n },\n {\n \"tag\": "beltmaking",\n \"popularity\": 3325322\n },\n {\n \"tag\": "necrotype",\n \"popularity\": 3224413\n },\n {\n \"tag\": "ovistic",\n \"popularity\": 3128215\n },\n {\n \"tag\": "swindlership",\n \"popularity\": 3036431\n },\n {\n \"tag\": "augustal",\n \"popularity\": 2948792\n },\n {\n \"tag\": "Titoist",\n \"popularity\": 2865047\n },\n {\n \"tag\": "trisoctahedral",\n \"popularity\": 2784963\n },\n {\n \"tag\": "sequestrator",\n \"popularity\": 2708327\n },\n {\n \"tag\": "sideburns",\n \"popularity\": 2634939\n },\n {\n \"tag\": "paraphrasia",\n \"popularity\": 2564616\n },\n {\n \"tag\": "graminology unbay",\n \"popularity\": 2497185\n },\n {\n \"tag\": "acaridomatium emargination",\n \"popularity\": 2432487\n },\n {\n \"tag\": "roofward",\n \"popularity\": 2370373\n },\n {\n \"tag\": "lauder",\n \"popularity\": 2310705\n },\n {\n \"tag\": "subjunctive",\n \"popularity\": 2253354\n },\n {\n \"tag\": "subelongate",\n \"popularity\": 2198199\n },\n {\n \"tag\": "guacimo",\n \"popularity\": 2145128\n },\n {\n \"tag\": "cockade",\n \"popularity\": 2094033\n },\n {\n \"tag\": "misgauge",\n \"popularity\": 2044818\n },\n {\n \"tag\": "unexpensive",\n \"popularity\": 1997388\n },\n {\n \"tag\": "chebel",\n \"popularity\": 1951657\n },\n {\n \"tag\": "unpursuing",\n \"popularity\": 1907543\n },\n {\n \"tag\": "kilobar",\n \"popularity\": 1864969\n },\n {\n \"tag\": "obsecration",\n \"popularity\": 1823863\n },\n {\n \"tag\": "nacarine",\n \"popularity\": 1784157\n },\n {\n \"tag\": "spirituosity",\n \"popularity\": 1745787\n },\n {\n \"tag\": "movableness deity",\n \"popularity\": 1708692\n },\n {\n \"tag\": "exostracism",\n \"popularity\": 1672816\n },\n {\n \"tag\": "archipterygium",\n \"popularity\": 1638104\n },\n {\n \"tag\": "monostrophic",\n \"popularity\": 1604506\n },\n {\n \"tag\": "gynecide",\n \"popularity\": 1571974\n },\n {\n \"tag\": "gladden",\n \"popularity\": 1540462\n },\n {\n \"tag\": "throughbred",\n \"popularity\": 1509927\n },\n {\n \"tag\": "groper",\n \"popularity\": 1480329\n },\n {\n \"tag\": "Xenosaurus",\n \"popularity\": 1451628\n },\n {\n \"tag\": "photoetcher",\n \"popularity\": 1423788\n },\n {\n \"tag\": "glucosid",\n \"popularity\": 1396775\n },\n {\n \"tag\": "Galtonian",\n \"popularity\": 1370555\n },\n {\n \"tag\": "mesosporic",\n \"popularity\": 1345097\n },\n {\n \"tag\": "theody",\n \"popularity\": 1320370\n },\n {\n \"tag\": "zaffer",\n \"popularity\": 1296348\n },\n {\n \"tag\": "probiology",\n \"popularity\": 1273003\n },\n {\n \"tag\": "rhizomic",\n \"popularity\": 1250308\n },\n {\n \"tag\": "superphosphate",\n \"popularity\": 1228240\n },\n {\n \"tag\": "Hippolytan",\n \"popularity\": 1206776\n },\n {\n \"tag\": "garget",\n \"popularity\": 1185892\n },\n {\n \"tag\": "diploplacula",\n \"popularity\": 1165568\n },\n {\n \"tag\": "orohydrographical",\n \"popularity\": 1145785\n },\n {\n \"tag\": "enhypostatize",\n \"popularity\": 1126521\n },\n {\n \"tag\": "polisman",\n \"popularity\": 1107759\n },\n {\n \"tag\": "acetometer",\n \"popularity\": 1089482\n },\n {\n \"tag\": "unsnatched",\n \"popularity\": 1071672\n },\n {\n \"tag\": "yabber",\n \"popularity\": 1054313\n },\n {\n \"tag\": "demiwolf",\n \"popularity\": 1037390\n },\n {\n \"tag\": "chromascope",\n \"popularity\": 1020888\n },\n {\n \"tag\": "seamanship",\n \"popularity\": 1004794\n },\n {\n \"tag\": "nonfenestrated",\n \"popularity\": 989092\n },\n {\n \"tag\": "hydrophytism",\n \"popularity\": 973771\n },\n {\n \"tag\": "dotter",\n \"popularity\": 958819\n },\n {\n \"tag\": "thermoperiodism",\n \"popularity\": 944222\n },\n {\n \"tag\": "unlawyerlike",\n \"popularity\": 929970\n },\n {\n \"tag\": "enantiomeride citywards",\n \"popularity\": 916052\n },\n {\n \"tag\": "unmetallurgical",\n \"popularity\": 902456\n },\n {\n \"tag\": "prickled",\n \"popularity\": 889174\n },\n {\n \"tag\": "strangerwise manioc",\n \"popularity\": 876195\n },\n {\n \"tag\": "incisorial",\n \"popularity\": 863510\n },\n {\n \"tag\": "irrationalize",\n \"popularity\": 851110\n },\n {\n \"tag\": "nasology",\n \"popularity\": 838987\n },\n {\n \"tag\": "fatuism",\n \"popularity\": 827131\n },\n {\n \"tag\": "Huk",\n \"popularity\": 815535\n },\n {\n \"tag\": "properispomenon",\n \"popularity\": 804192\n },\n {\n \"tag\": "unpummelled",\n \"popularity\": 793094\n },\n {\n \"tag\": "technographically",\n \"popularity\": 782233\n },\n {\n \"tag\": "underfurnish",\n \"popularity\": 771603\n },\n {\n \"tag\": "sinter",\n \"popularity\": 761198\n },\n {\n \"tag\": "lateroanterior",\n \"popularity\": 751010\n },\n {\n \"tag\": "nonpersonification",\n \"popularity\": 741034\n },\n {\n \"tag\": "Sitophilus",\n \"popularity\": 731264\n },\n {\n \"tag\": "unstudded overexerted",\n \"popularity\": 721694\n },\n {\n \"tag\": "tracheation",\n \"popularity\": 712318\n },\n {\n \"tag\": "thirteenth begloze",\n \"popularity\": 703131\n },\n {\n \"tag\": "bespice",\n \"popularity\": 694129\n },\n {\n \"tag\": "doppia",\n \"popularity\": 685305\n },\n {\n \"tag\": "unadorned",\n \"popularity\": 676656\n },\n {\n \"tag\": "dovelet engraff",\n \"popularity\": 668176\n },\n {\n \"tag\": "diphyozooid",\n \"popularity\": 659862\n },\n {\n \"tag\": "mure",\n \"popularity\": 651708\n },\n {\n \"tag\": "Tripitaka",\n \"popularity\": 643710\n },\n {\n \"tag\": "Billjim",\n \"popularity\": 635865\n },\n {\n \"tag\": "pyramidical",\n \"popularity\": 628169\n },\n {\n \"tag\": "circumlocutionist",\n \"popularity\": 620617\n },\n {\n \"tag\": "slapstick",\n \"popularity\": 613207\n },\n {\n \"tag\": "preobedience",\n \"popularity\": 605934\n },\n {\n \"tag\": "unfriarlike",\n \"popularity\": 598795\n },\n {\n \"tag\": "microchromosome",\n \"popularity\": 591786\n },\n {\n \"tag\": "Orphicism",\n \"popularity\": 584905\n },\n {\n \"tag\": "peel",\n \"popularity\": 578149\n },\n {\n \"tag\": "obediential",\n \"popularity\": 571514\n },\n {\n \"tag\": "Peripatidea",\n \"popularity\": 564997\n },\n {\n \"tag\": "undoubtful",\n \"popularity\": 558596\n },\n {\n \"tag\": "lodgeable",\n \"popularity\": 552307\n },\n {\n \"tag\": "pustulated woodchat",\n \"popularity\": 546129\n },\n {\n \"tag\": "antepast",\n \"popularity\": 540057\n },\n {\n \"tag\": "sagittoid matrimoniously",\n \"popularity\": 534091\n },\n {\n \"tag\": "Albizzia",\n \"popularity\": 528228\n },\n {\n \"tag\": "Elateridae unnewness",\n \"popularity\": 522464\n },\n {\n \"tag\": "convertingness",\n \"popularity\": 516798\n },\n {\n \"tag\": "Pelew",\n \"popularity\": 511228\n },\n {\n \"tag\": "recapitulation",\n \"popularity\": 505751\n },\n {\n \"tag\": "shack",\n \"popularity\": 500365\n },\n {\n \"tag\": "unmellowed",\n \"popularity\": 495069\n },\n {\n \"tag\": "pavis capering",\n \"popularity\": 489859\n },\n {\n \"tag\": "fanfare",\n \"popularity\": 484735\n },\n {\n \"tag\": "sole",\n \"popularity\": 479695\n },\n {\n \"tag\": "subarcuate",\n \"popularity\": 474735\n },\n {\n \"tag\": "multivious",\n \"popularity\": 469856\n },\n {\n \"tag\": "squandermania",\n \"popularity\": 465054\n },\n {\n \"tag\": "scintle",\n \"popularity\": 460329\n },\n {\n \"tag\": "hash chirognomic",\n \"popularity\": 455679\n },\n {\n \"tag\": "linseed",\n \"popularity\": 451101\n },\n {\n \"tag\": "redoubtable",\n \"popularity\": 446596\n },\n {\n \"tag\": "poachy reimpact",\n \"popularity\": 442160\n },\n {\n \"tag\": "limestone",\n \"popularity\": 437792\n },\n {\n \"tag\": "serranid",\n \"popularity\": 433492\n },\n {\n \"tag\": "pohna",\n \"popularity\": 429258\n },\n {\n \"tag\": "warwolf",\n \"popularity\": 425088\n },\n {\n \"tag\": "ruthenous",\n \"popularity\": 420981\n },\n {\n \"tag\": "dover",\n \"popularity\": 416935\n },\n {\n \"tag\": "deuteroalbumose",\n \"popularity\": 412950\n },\n {\n \"tag\": "pseudoprophetic",\n \"popularity\": 409025\n },\n {\n \"tag\": "dissoluteness",\n \"popularity\": 405157\n },\n {\n \"tag\": "preinvention",\n \"popularity\": 401347\n },\n {\n \"tag\": "swagbellied",\n \"popularity\": 397592\n },\n {\n \"tag\": "Ophidia",\n \"popularity\": 393892\n },\n {\n \"tag\": "equanimity",\n \"popularity\": 390245\n },\n {\n \"tag\": "troutful",\n \"popularity\": 386651\n },\n {\n \"tag\": "uke",\n \"popularity\": 383108\n },\n {\n \"tag\": "preacquaint",\n \"popularity\": 379616\n },\n {\n \"tag\": "shoq",\n \"popularity\": 376174\n },\n {\n \"tag\": "yox",\n \"popularity\": 372780\n },\n {\n \"tag\": "unelemental",\n \"popularity\": 369434\n },\n {\n \"tag\": "Yavapai",\n \"popularity\": 366134\n },\n {\n \"tag\": "joulean",\n \"popularity\": 362880\n },\n {\n \"tag\": "dracontine",\n \"popularity\": 359672\n },\n {\n \"tag\": "hardmouth",\n \"popularity\": 356507\n },\n {\n \"tag\": "sylvanize",\n \"popularity\": 353386\n },\n {\n \"tag\": "intraparenchymatous meadowbur",\n \"popularity\": 350308\n },\n {\n \"tag\": "uncharily",\n \"popularity\": 347271\n },\n {\n \"tag\": "redtab flexibly",\n \"popularity\": 344275\n },\n {\n \"tag\": "centervelic",\n \"popularity\": 341319\n },\n {\n \"tag\": "unravellable",\n \"popularity\": 338403\n },\n {\n \"tag\": "infortunately",\n \"popularity\": 335526\n },\n {\n \"tag\": "cannel",\n \"popularity\": 332687\n },\n {\n \"tag\": "oxyblepsia",\n \"popularity\": 329885\n },\n {\n \"tag\": "Damon",\n \"popularity\": 327120\n },\n {\n \"tag\": "etherin",\n \"popularity\": 324391\n },\n {\n \"tag\": "luminal",\n \"popularity\": 321697\n },\n {\n \"tag\": "interrogatorily presbyte",\n \"popularity\": 319038\n },\n {\n \"tag\": "hemiclastic",\n \"popularity\": 316414\n },\n {\n \"tag\": "poh flush",\n \"popularity\": 313823\n },\n {\n \"tag\": "Psoroptes",\n \"popularity\": 311265\n },\n {\n \"tag\": "dispirit",\n \"popularity\": 308740\n },\n {\n \"tag\": "nashgab",\n \"popularity\": 306246\n },\n {\n \"tag\": "Aphidiinae",\n \"popularity\": 303784\n },\n {\n \"tag\": "rhapsody nonconstruction",\n \"popularity\": 301353\n },\n {\n \"tag\": "Osmond",\n \"popularity\": 298952\n },\n {\n \"tag\": "Leonis",\n \"popularity\": 296581\n },\n {\n \"tag\": "Lemnian",\n \"popularity\": 294239\n },\n {\n \"tag\": "acetonic gnathonic",\n \"popularity\": 291926\n },\n {\n \"tag\": "surculus",\n \"popularity\": 289641\n },\n {\n \"tag\": "diagonally",\n \"popularity\": 287384\n },\n {\n \"tag\": "counterpenalty",\n \"popularity\": 285154\n },\n {\n \"tag\": "Eugenie",\n \"popularity\": 282952\n },\n {\n \"tag\": "hornbook",\n \"popularity\": 280776\n },\n {\n \"tag\": "miscoin",\n \"popularity\": 278626\n },\n {\n \"tag\": "admi",\n \"popularity\": 276501\n },\n {\n \"tag\": "Tarmac",\n \"popularity\": 274402\n },\n {\n \"tag\": "inexplicable",\n \"popularity\": 272328\n },\n {\n \"tag\": "rascallion",\n \"popularity\": 270278\n },\n {\n \"tag\": "dusterman",\n \"popularity\": 268252\n },\n {\n \"tag\": "osteostomous unhoroscopic",\n \"popularity\": 266250\n },\n {\n \"tag\": "spinibulbar",\n \"popularity\": 264271\n },\n {\n \"tag\": "phototelegraphically",\n \"popularity\": 262315\n },\n {\n \"tag\": "Manihot",\n \"popularity\": 260381\n },\n {\n \"tag\": "neighborhood",\n \"popularity\": 258470\n },\n {\n \"tag\": "Vincetoxicum",\n \"popularity\": 256581\n },\n {\n \"tag\": "khirka",\n \"popularity\": 254713\n },\n {\n \"tag\": "conscriptive",\n \"popularity\": 252866\n },\n {\n \"tag\": "synechthran",\n \"popularity\": 251040\n },\n {\n \"tag\": "Guttiferales",\n \"popularity\": 249235\n },\n {\n \"tag\": "roomful",\n \"popularity\": 247450\n },\n {\n \"tag\": "germinal",\n \"popularity\": 245685\n },\n {\n \"tag\": "untraitorous",\n \"popularity\": 243939\n },\n {\n \"tag\": "nondissenting",\n \"popularity\": 242213\n },\n {\n \"tag\": "amotion",\n \"popularity\": 240506\n },\n {\n \"tag\": "badious",\n \"popularity\": 238817\n },\n {\n \"tag\": "sumpit",\n \"popularity\": 237147\n },\n {\n \"tag\": "ectozoic",\n \"popularity\": 235496\n },\n {\n \"tag\": "elvet",\n \"popularity\": 233862\n },\n {\n \"tag\": "underclerk",\n \"popularity\": 232246\n },\n {\n \"tag\": "reticency",\n \"popularity\": 230647\n },\n {\n \"tag\": "neutroclusion",\n \"popularity\": 229065\n },\n {\n \"tag\": "unbelieving",\n \"popularity\": 227500\n },\n {\n \"tag\": "histogenetic",\n \"popularity\": 225952\n },\n {\n \"tag\": "dermamyiasis",\n \"popularity\": 224421\n },\n {\n \"tag\": "telenergy",\n \"popularity\": 222905\n },\n {\n \"tag\": "axiomatic",\n \"popularity\": 221406\n },\n {\n \"tag\": "undominoed",\n \"popularity\": 219922\n },\n {\n \"tag\": "periosteoma",\n \"popularity\": 218454\n },\n {\n \"tag\": "justiciaryship",\n \"popularity\": 217001\n },\n {\n \"tag\": "autoluminescence",\n \"popularity\": 215563\n },\n {\n \"tag\": "osmous",\n \"popularity\": 214140\n },\n {\n \"tag\": "borgh",\n \"popularity\": 212731\n },\n {\n \"tag\": "bedebt",\n \"popularity\": 211337\n },\n {\n \"tag\": "considerableness adenoidism",\n \"popularity\": 209957\n },\n {\n \"tag\": "sailorizing",\n \"popularity\": 208592\n },\n {\n \"tag\": "Montauk",\n \"popularity\": 207240\n },\n {\n \"tag\": "Bridget",\n \"popularity\": 205901\n },\n {\n \"tag\": "Gekkota",\n \"popularity\": 204577\n },\n {\n \"tag\": "subcorymbose",\n \"popularity\": 203265\n },\n {\n \"tag\": "undersap",\n \"popularity\": 201967\n },\n {\n \"tag\": "poikilothermic",\n \"popularity\": 200681\n },\n {\n \"tag\": "enneatical",\n \"popularity\": 199409\n },\n {\n \"tag\": "martinetism",\n \"popularity\": 198148\n },\n {\n \"tag\": "sustanedly",\n \"popularity\": 196901\n },\n {\n \"tag\": "declaration",\n \"popularity\": 195665\n },\n {\n \"tag\": "myringoplasty",\n \"popularity\": 194442\n },\n {\n \"tag\": "Ginkgo",\n \"popularity\": 193230\n },\n {\n \"tag\": "unrecurrent",\n \"popularity\": 192031\n },\n {\n \"tag\": "proprecedent",\n \"popularity\": 190843\n },\n {\n \"tag\": "roadman",\n \"popularity\": 189666\n },\n {\n \"tag\": "elemin",\n \"popularity\": 188501\n },\n {\n \"tag\": "maggot",\n \"popularity\": 187347\n },\n {\n \"tag\": "alitrunk",\n \"popularity\": 186204\n },\n {\n \"tag\": "introspection",\n \"popularity\": 185071\n },\n {\n \"tag\": "batiker",\n \"popularity\": 183950\n },\n {\n \"tag\": "backhatch oversettle",\n \"popularity\": 182839\n },\n {\n \"tag\": "thresherman",\n \"popularity\": 181738\n },\n {\n \"tag\": "protemperance",\n \"popularity\": 180648\n },\n {\n \"tag\": "undern",\n \"popularity\": 179568\n },\n {\n \"tag\": "tweeg",\n \"popularity\": 178498\n },\n {\n \"tag\": "crosspath",\n \"popularity\": 177438\n },\n {\n \"tag\": "Tangaridae",\n \"popularity\": 176388\n },\n {\n \"tag\": "scrutation",\n \"popularity\": 175348\n },\n {\n \"tag\": "piecemaker",\n \"popularity\": 174317\n },\n {\n \"tag\": "paster",\n \"popularity\": 173296\n },\n {\n \"tag\": "unpretendingness",\n \"popularity\": 172284\n },\n {\n \"tag\": "inframundane",\n \"popularity\": 171281\n },\n {\n \"tag\": "kiblah",\n \"popularity\": 170287\n },\n {\n \"tag\": "playwrighting",\n \"popularity\": 169302\n },\n {\n \"tag\": "gonepoiesis snowslip",\n \"popularity\": 168326\n },\n {\n \"tag\": "hoodwise",\n \"popularity\": 167359\n },\n {\n \"tag\": "postseason",\n \"popularity\": 166401\n },\n {\n \"tag\": "equivocality",\n \"popularity\": 165451\n },\n {\n \"tag\": "Opiliaceae nuclease",\n \"popularity\": 164509\n },\n {\n \"tag\": "sextipara",\n \"popularity\": 163576\n },\n {\n \"tag\": "weeper",\n \"popularity\": 162651\n },\n {\n \"tag\": "frambesia",\n \"popularity\": 161735\n },\n {\n \"tag\": "answerable",\n \"popularity\": 160826\n },\n {\n \"tag\": "Trichosporum",\n \"popularity\": 159925\n },\n {\n \"tag\": "cajuputol",\n \"popularity\": 159033\n },\n {\n \"tag\": "pleomorphous",\n \"popularity\": 158148\n },\n {\n \"tag\": "aculeolate",\n \"popularity\": 157270\n },\n {\n \"tag\": "wherever",\n \"popularity\": 156400\n },\n {\n \"tag\": "collapse",\n \"popularity\": 155538\n },\n {\n \"tag\": "porky",\n \"popularity\": 154683\n },\n {\n \"tag\": "perule",\n \"popularity\": 153836\n },\n {\n \"tag\": "Nevada",\n \"popularity\": 152996\n },\n {\n \"tag\": "conalbumin",\n \"popularity\": 152162\n },\n {\n \"tag\": "tsunami",\n \"popularity\": 151336\n },\n {\n \"tag\": "Gulf",\n \"popularity\": 150517\n },\n {\n \"tag\": "hertz",\n \"popularity\": 149705\n },\n {\n \"tag\": "limmock",\n \"popularity\": 148900\n },\n {\n \"tag\": "Tartarize",\n \"popularity\": 148101\n },\n {\n \"tag\": "entosphenoid",\n \"popularity\": 147310\n },\n {\n \"tag\": "ibis",\n \"popularity\": 146524\n },\n {\n \"tag\": "unyeaned",\n \"popularity\": 145746\n },\n {\n \"tag\": "tritural",\n \"popularity\": 144973\n },\n {\n \"tag\": "hundredary",\n \"popularity\": 144207\n },\n {\n \"tag\": "stolonlike",\n \"popularity\": 143448\n },\n {\n \"tag\": "chorister",\n \"popularity\": 142694\n },\n {\n \"tag\": "mismove",\n \"popularity\": 141947\n },\n {\n \"tag\": "Andine",\n \"popularity\": 141206\n },\n {\n \"tag\": "Annette proneur escribe",\n \"popularity\": 140471\n },\n {\n \"tag\": "exoperidium",\n \"popularity\": 139742\n },\n {\n \"tag\": "disedge",\n \"popularity\": 139019\n },\n {\n \"tag\": "hypochloruria",\n \"popularity\": 138302\n },\n {\n \"tag\": "prepupa",\n \"popularity\": 137590\n },\n {\n \"tag\": "assent",\n \"popularity\": 136884\n },\n {\n \"tag\": "hydrazobenzene",\n \"popularity\": 136184\n },\n {\n \"tag\": "emballonurid",\n \"popularity\": 135489\n },\n {\n \"tag\": "roselle",\n \"popularity\": 134800\n },\n {\n \"tag\": "unifiedly",\n \"popularity\": 134117\n },\n {\n \"tag\": "clang",\n \"popularity\": 133439\n },\n {\n \"tag\": "acetolytic",\n \"popularity\": 132766\n },\n {\n \"tag\": "cladodont",\n \"popularity\": 132098\n },\n {\n \"tag\": "recoast",\n \"popularity\": 131436\n },\n {\n \"tag\": "celebrated tydie Eocarboniferous",\n \"popularity\": 130779\n },\n {\n \"tag\": "superconsciousness",\n \"popularity\": 130127\n },\n {\n \"tag\": "soberness",\n \"popularity\": 129480\n },\n {\n \"tag\": "panoramist",\n \"popularity\": 128838\n },\n {\n \"tag\": "Orbitolina",\n \"popularity\": 128201\n },\n {\n \"tag\": "overlewd",\n \"popularity\": 127569\n },\n {\n \"tag\": "demiquaver",\n \"popularity\": 126942\n },\n {\n \"tag\": "kamelaukion",\n \"popularity\": 126319\n },\n {\n \"tag\": "flancard",\n \"popularity\": 125702\n },\n {\n \"tag\": "tricuspid",\n \"popularity\": 125089\n },\n {\n \"tag\": "bepelt",\n \"popularity\": 124480\n },\n {\n \"tag\": "decuplet",\n \"popularity\": 123877\n },\n {\n \"tag\": "Rockies",\n \"popularity\": 123278\n },\n {\n \"tag\": "unforgeability",\n \"popularity\": 122683\n },\n {\n \"tag\": "mocha",\n \"popularity\": 122093\n },\n {\n \"tag\": "scrunge",\n \"popularity\": 121507\n },\n {\n \"tag\": "delighter",\n \"popularity\": 120926\n },\n {\n \"tag\": "willey Microtinae",\n \"popularity\": 120349\n },\n {\n \"tag\": "unhuntable",\n \"popularity\": 119777\n },\n {\n \"tag\": "historically",\n \"popularity\": 119208\n },\n {\n \"tag\": "vicegerentship",\n \"popularity\": 118644\n },\n {\n \"tag\": "hemangiosarcoma",\n \"popularity\": 118084\n },\n {\n \"tag\": "harpago",\n \"popularity\": 117528\n },\n {\n \"tag\": "unionoid",\n \"popularity\": 116976\n },\n {\n \"tag\": "wiseman",\n \"popularity\": 116429\n },\n {\n \"tag\": "diclinism",\n \"popularity\": 115885\n },\n {\n \"tag\": "Maud",\n \"popularity\": 115345\n },\n {\n \"tag\": "scaphocephalism",\n \"popularity\": 114809\n },\n {\n \"tag\": "obtenebration",\n \"popularity\": 114277\n },\n {\n \"tag\": "cymar predreadnought",\n \"popularity\": 113749\n },\n {\n \"tag\": "discommend",\n \"popularity\": 113225\n },\n {\n \"tag\": "crude",\n \"popularity\": 112704\n },\n {\n \"tag\": "upflash",\n \"popularity\": 112187\n },\n {\n \"tag\": "saltimbank",\n \"popularity\": 111674\n },\n {\n \"tag\": "posthysterical",\n \"popularity\": 111165\n },\n {\n \"tag\": "trample",\n \"popularity\": 110659\n },\n {\n \"tag\": "ungirthed",\n \"popularity\": 110157\n },\n {\n \"tag\": "unshakable",\n \"popularity\": 109658\n },\n {\n \"tag\": "hepatocystic",\n \"popularity\": 109163\n },\n {\n \"tag\": "psammophyte",\n \"popularity\": 108671\n },\n {\n \"tag\": "millionfold",\n \"popularity\": 108183\n },\n {\n \"tag\": "outtaste",\n \"popularity\": 107698\n },\n {\n \"tag\": "poppycockish",\n \"popularity\": 107217\n },\n {\n \"tag\": "viduine",\n \"popularity\": 106739\n },\n {\n \"tag\": "pleasureman",\n \"popularity\": 106264\n },\n {\n \"tag\": "cholesterolemia",\n \"popularity\": 105792\n },\n {\n \"tag\": "hostlerwife",\n \"popularity\": 105324\n },\n {\n \"tag\": "figure undergrass",\n \"popularity\": 104859\n },\n {\n \"tag\": "bedrape",\n \"popularity\": 104398\n },\n {\n \"tag\": "nuttishness",\n \"popularity\": 103939\n },\n {\n \"tag\": "fow",\n \"popularity\": 103484\n },\n {\n \"tag\": "rachianesthesia",\n \"popularity\": 103031\n },\n {\n \"tag\": "recruitable",\n \"popularity\": 102582\n },\n {\n \"tag\": "semianatomical Oenotheraceae",\n \"popularity\": 102136\n },\n {\n \"tag\": "extracapsular",\n \"popularity\": 101693\n },\n {\n \"tag\": "unsigneted",\n \"popularity\": 101253\n },\n {\n \"tag\": "fissural",\n \"popularity\": 100816\n },\n {\n \"tag\": "ayous",\n \"popularity\": 100381\n },\n {\n \"tag\": "crestfallenness odontograph",\n \"popularity\": 99950\n },\n {\n \"tag\": "monopodium",\n \"popularity\": 99522\n },\n {\n \"tag\": "germfree",\n \"popularity\": 99096\n },\n {\n \"tag\": "dauphin",\n \"popularity\": 98673\n },\n {\n \"tag\": "nonagesimal",\n \"popularity\": 98254\n },\n {\n \"tag\": "waterchat",\n \"popularity\": 97836\n },\n {\n \"tag\": "Entelodon",\n \"popularity\": 97422\n },\n {\n \"tag\": "semischolastic",\n \"popularity\": 97010\n },\n {\n \"tag\": "somata",\n \"popularity\": 96602\n },\n {\n \"tag\": "expositorily",\n \"popularity\": 96195\n },\n {\n \"tag\": "bass",\n \"popularity\": 95792\n },\n {\n \"tag\": "calorimetry",\n \"popularity\": 95391\n },\n {\n \"tag\": "entireness",\n \"popularity\": 94993\n },\n {\n \"tag\": "ratline soppiness",\n \"popularity\": 94597\n },\n {\n \"tag\": "shor",\n \"popularity\": 94204\n },\n {\n \"tag\": "coprecipitation",\n \"popularity\": 93813\n },\n {\n \"tag\": "unblushingly",\n \"popularity\": 93425\n },\n {\n \"tag\": "macarize",\n \"popularity\": 93040\n },\n {\n \"tag\": "scruplesomeness",\n \"popularity\": 92657\n },\n {\n \"tag\": "offsaddle",\n \"popularity\": 92276\n },\n {\n \"tag\": "hypertragical",\n \"popularity\": 91898\n },\n {\n \"tag\": "uncassock loined",\n \"popularity\": 91522\n },\n {\n \"tag\": "interlobate",\n \"popularity\": 91149\n },\n {\n \"tag\": "releasor orrisroot stoloniferously",\n \"popularity\": 90778\n },\n {\n \"tag\": "elementoid",\n \"popularity\": 90410\n },\n {\n \"tag\": "Lentilla",\n \"popularity\": 90043\n },\n {\n \"tag\": "distressing",\n \"popularity\": 89679\n },\n {\n \"tag\": "hydrodrome",\n \"popularity\": 89318\n },\n {\n \"tag\": "Jeannette",\n \"popularity\": 88958\n },\n {\n \"tag\": "Kuli",\n \"popularity\": 88601\n },\n {\n \"tag\": "taxinomist",\n \"popularity\": 88246\n },\n {\n \"tag\": "southwestwardly",\n \"popularity\": 87894\n },\n {\n \"tag\": "polyparia",\n \"popularity\": 87543\n },\n {\n \"tag\": "exmeridian",\n \"popularity\": 87195\n },\n {\n \"tag\": "splenius regimentaled",\n \"popularity\": 86849\n },\n {\n \"tag\": "Sphaeropsidaceae",\n \"popularity\": 86505\n },\n {\n \"tag\": "unbegun",\n \"popularity\": 86163\n },\n {\n \"tag\": "something",\n \"popularity\": 85823\n },\n {\n \"tag\": "contaminable nonexpulsion",\n \"popularity\": 85486\n },\n {\n \"tag\": "douser",\n \"popularity\": 85150\n },\n {\n \"tag\": "prostrike",\n \"popularity\": 84817\n },\n {\n \"tag\": "worky",\n \"popularity\": 84485\n },\n {\n \"tag\": "folliful",\n \"popularity\": 84156\n },\n {\n \"tag\": "prioracy",\n \"popularity\": 83828\n },\n {\n \"tag\": "undermentioned",\n \"popularity\": 83503\n },\n {\n \"tag\": "Judaica",\n \"popularity\": 83179\n },\n {\n \"tag\": "multifarious",\n \"popularity\": 82858\n },\n {\n \"tag\": "poogye",\n \"popularity\": 82538\n },\n {\n \"tag\": "Sparganium",\n \"popularity\": 82221\n },\n {\n \"tag\": "thurrock",\n \"popularity\": 81905\n },\n {\n \"tag\": "outblush",\n \"popularity\": 81591\n },\n {\n \"tag\": "Strophanthus supraordination",\n \"popularity\": 81279\n },\n {\n \"tag\": "gingerroot",\n \"popularity\": 80969\n },\n {\n \"tag\": "unconscient",\n \"popularity\": 80661\n },\n {\n \"tag\": "unconstitutionally",\n \"popularity\": 80354\n },\n {\n \"tag\": "plaguily",\n \"popularity\": 80050\n },\n {\n \"tag\": "waterily equatorwards",\n \"popularity\": 79747\n },\n {\n \"tag\": "nondeposition",\n \"popularity\": 79446\n },\n {\n \"tag\": "dronishly",\n \"popularity\": 79147\n },\n {\n \"tag\": "gateado",\n \"popularity\": 78849\n },\n {\n \"tag\": "dislink",\n \"popularity\": 78553\n },\n {\n \"tag\": "Joceline",\n \"popularity\": 78259\n },\n {\n \"tag\": "amphiboliferous",\n \"popularity\": 77967\n },\n {\n \"tag\": "bushrope",\n \"popularity\": 77676\n },\n {\n \"tag\": "plumicorn sulphosalicylic",\n \"popularity\": 77387\n },\n {\n \"tag\": "nonefficiency",\n \"popularity\": 77100\n },\n {\n \"tag\": "hieroscopy",\n \"popularity\": 76815\n },\n {\n \"tag\": "causativeness",\n \"popularity\": 76531\n },\n {\n \"tag\": "swird paleoeremology",\n \"popularity\": 76249\n },\n {\n \"tag\": "camphoric",\n \"popularity\": 75968\n },\n {\n \"tag\": "retaining",\n \"popularity\": 75689\n },\n {\n \"tag\": "thyreoprotein",\n \"popularity\": 75411\n },\n {\n \"tag\": "carbona",\n \"popularity\": 75136\n },\n {\n \"tag\": "protectively",\n \"popularity\": 74861\n },\n {\n \"tag\": "mosasaur",\n \"popularity\": 74589\n },\n {\n \"tag\": "reciprocator",\n \"popularity\": 74317\n },\n {\n \"tag\": "detentive",\n \"popularity\": 74048\n },\n {\n \"tag\": "supravital",\n \"popularity\": 73780\n },\n {\n \"tag\": "Vespertilionidae",\n \"popularity\": 73513\n },\n {\n \"tag\": "parka",\n \"popularity\": 73248\n },\n {\n \"tag\": "pickaway",\n \"popularity\": 72984\n },\n {\n \"tag\": "oleaceous",\n \"popularity\": 72722\n },\n {\n \"tag\": "anticogitative",\n \"popularity\": 72462\n },\n {\n \"tag\": "woe",\n \"popularity\": 72203\n },\n {\n \"tag\": "skeuomorph",\n \"popularity\": 71945\n },\n {\n \"tag\": "helpmeet",\n \"popularity\": 71689\n },\n {\n \"tag\": "Hexactinellida brickmaking",\n \"popularity\": 71434\n },\n {\n \"tag\": "resink",\n \"popularity\": 71180\n },\n {\n \"tag\": "diluter",\n \"popularity\": 70928\n },\n {\n \"tag\": "micromicron",\n \"popularity\": 70677\n },\n {\n \"tag\": "parentage",\n \"popularity\": 70428\n },\n {\n \"tag\": "galactorrhoea",\n \"popularity\": 70180\n },\n {\n \"tag\": "gey",\n \"popularity\": 69934\n },\n {\n \"tag\": "gesticulatory",\n \"popularity\": 69689\n },\n {\n \"tag\": "wergil",\n \"popularity\": 69445\n },\n {\n \"tag\": "Lecanora",\n \"popularity\": 69202\n },\n {\n \"tag\": "malanders karst",\n \"popularity\": 68961\n },\n {\n \"tag\": "vibetoite",\n \"popularity\": 68721\n },\n {\n \"tag\": "unrequitedness",\n \"popularity\": 68483\n },\n {\n \"tag\": "outwash",\n \"popularity\": 68245\n },\n {\n \"tag\": "unsacred",\n \"popularity\": 68009\n },\n {\n \"tag\": "unabetted dividend",\n \"popularity\": 67775\n },\n {\n \"tag\": "untraveling",\n \"popularity\": 67541\n },\n {\n \"tag\": "thermobattery",\n \"popularity\": 67309\n },\n {\n \"tag\": "polypragmist",\n \"popularity\": 67078\n },\n {\n \"tag\": "irrefutableness",\n \"popularity\": 66848\n },\n {\n \"tag\": "remiges",\n \"popularity\": 66620\n },\n {\n \"tag\": "implode",\n \"popularity\": 66393\n },\n {\n \"tag\": "superfluousness",\n \"popularity\": 66166\n },\n {\n \"tag\": "croakily unalleviated",\n \"popularity\": 65942\n },\n {\n \"tag\": "edicule",\n \"popularity\": 65718\n },\n {\n \"tag\": "entophytous",\n \"popularity\": 65495\n },\n {\n \"tag\": "benefactorship Toryish",\n \"popularity\": 65274\n },\n {\n \"tag\": "pseudoamateurish",\n \"popularity\": 65054\n },\n {\n \"tag\": "flueless Iguanodontoidea snipnose",\n \"popularity\": 64835\n },\n {\n \"tag\": "zealotical Zamicrus interpole",\n \"popularity\": 64617\n },\n {\n \"tag\": "whereabout",\n \"popularity\": 64401\n },\n {\n \"tag\": "benzazide",\n \"popularity\": 64185\n },\n {\n \"tag\": "pokeweed",\n \"popularity\": 63971\n },\n {\n \"tag\": "calamitoid",\n \"popularity\": 63757\n },\n {\n \"tag\": "sporozoal",\n \"popularity\": 63545\n },\n {\n \"tag\": "physcioid Welshwoman",\n \"popularity\": 63334\n },\n {\n \"tag\": "wanting",\n \"popularity\": 63124\n },\n {\n \"tag\": "unencumbering",\n \"popularity\": 62915\n },\n {\n \"tag\": "Tupi",\n \"popularity\": 62707\n },\n {\n \"tag\": "potbank",\n \"popularity\": 62501\n },\n {\n \"tag\": "bulked",\n \"popularity\": 62295\n },\n {\n \"tag\": "uparise",\n \"popularity\": 62090\n },\n {\n \"tag\": "Sudra",\n \"popularity\": 61887\n },\n {\n \"tag\": "hyperscrupulosity",\n \"popularity\": 61684\n },\n {\n \"tag\": "subterraneously unmaid",\n \"popularity\": 61483\n },\n {\n \"tag\": "poisonousness",\n \"popularity\": 61282\n },\n {\n \"tag\": "phare",\n \"popularity\": 61083\n },\n {\n \"tag\": "dicynodont",\n \"popularity\": 60884\n },\n {\n \"tag\": "chewer",\n \"popularity\": 60687\n },\n {\n \"tag\": "uliginous",\n \"popularity\": 60490\n },\n {\n \"tag\": "tinman",\n \"popularity\": 60295\n },\n {\n \"tag\": "coconut",\n \"popularity\": 60100\n },\n {\n \"tag\": "phryganeoid",\n \"popularity\": 59907\n },\n {\n \"tag\": "bismillah",\n \"popularity\": 59714\n },\n {\n \"tag\": "tautomeric",\n \"popularity\": 59523\n },\n {\n \"tag\": "jerquer",\n \"popularity\": 59332\n },\n {\n \"tag\": "Dryopithecinae",\n \"popularity\": 59143\n },\n {\n \"tag\": "ghizite",\n \"popularity\": 58954\n },\n {\n \"tag\": "unliveable",\n \"popularity\": 58766\n },\n {\n \"tag\": "craftsmaster",\n \"popularity\": 58579\n },\n {\n \"tag\": "semiscenic",\n \"popularity\": 58394\n },\n {\n \"tag\": "danaid",\n \"popularity\": 58209\n },\n {\n \"tag\": "flawful",\n \"popularity\": 58025\n },\n {\n \"tag\": "risibleness",\n \"popularity\": 57841\n },\n {\n \"tag\": "Muscovite",\n \"popularity\": 57659\n },\n {\n \"tag\": "snaringly",\n \"popularity\": 57478\n },\n {\n \"tag\": "brilliantwise",\n \"popularity\": 57297\n },\n {\n \"tag\": "plebeity",\n \"popularity\": 57118\n },\n {\n \"tag\": "historicalness",\n \"popularity\": 56939\n },\n {\n \"tag\": "piecemeal",\n \"popularity\": 56761\n },\n {\n \"tag\": "maxillipedary",\n \"popularity\": 56584\n },\n {\n \"tag\": "Hypenantron",\n \"popularity\": 56408\n },\n {\n \"tag\": "quaintness avigate",\n \"popularity\": 56233\n },\n {\n \"tag\": "ave",\n \"popularity\": 56059\n },\n {\n \"tag\": "mediaevally",\n \"popularity\": 55885\n },\n {\n \"tag\": "brucite",\n \"popularity\": 55712\n },\n {\n \"tag\": "Schwendenerian",\n \"popularity\": 55541\n },\n {\n \"tag\": "julole",\n \"popularity\": 55370\n },\n {\n \"tag\": "palaeolith",\n \"popularity\": 55199\n },\n {\n \"tag\": "cotyledonary",\n \"popularity\": 55030\n },\n {\n \"tag\": "rond",\n \"popularity\": 54861\n },\n {\n \"tag\": "boomster tassoo",\n \"popularity\": 54694\n },\n {\n \"tag\": "cattishly",\n \"popularity\": 54527\n },\n {\n \"tag\": "tonguefence",\n \"popularity\": 54360\n },\n {\n \"tag\": "hexastylar triskele",\n \"popularity\": 54195\n },\n {\n \"tag\": "ariot",\n \"popularity\": 54030\n },\n {\n \"tag\": "intarsist",\n \"popularity\": 53867\n },\n {\n \"tag\": "Oscines",\n \"popularity\": 53704\n },\n {\n \"tag\": "Spaniolize",\n \"popularity\": 53541\n },\n {\n \"tag\": "smellfungus",\n \"popularity\": 53380\n },\n {\n \"tag\": "redisplay",\n \"popularity\": 53219\n },\n {\n \"tag\": "phosphene",\n \"popularity\": 53059\n },\n {\n \"tag\": "phycomycete",\n \"popularity\": 52900\n },\n {\n \"tag\": "prophetic",\n \"popularity\": 52741\n },\n {\n \"tag\": "overtrustful",\n \"popularity\": 52584\n },\n {\n \"tag\": "pinitol",\n \"popularity\": 52427\n },\n {\n \"tag\": "asthmatic",\n \"popularity\": 52270\n },\n {\n \"tag\": "convulsive",\n \"popularity\": 52115\n },\n {\n \"tag\": "draughtswoman",\n \"popularity\": 51960\n },\n {\n \"tag\": "unetymologizable",\n \"popularity\": 51806\n },\n {\n \"tag\": "centrarchoid",\n \"popularity\": 51652\n },\n {\n \"tag\": "mesioincisal",\n \"popularity\": 51500\n },\n {\n \"tag\": "transbaikal",\n \"popularity\": 51348\n },\n {\n \"tag\": "silveriness",\n \"popularity\": 51196\n },\n {\n \"tag\": "costotomy",\n \"popularity\": 51046\n },\n {\n \"tag\": "caracore",\n \"popularity\": 50896\n },\n {\n \"tag\": "depotentiation",\n \"popularity\": 50747\n },\n {\n \"tag\": "glossoepiglottidean",\n \"popularity\": 50598\n },\n {\n \"tag\": "upswell",\n \"popularity\": 50450\n },\n {\n \"tag\": "flecnodal",\n \"popularity\": 50303\n },\n {\n \"tag\": "coventrate",\n \"popularity\": 50157\n },\n {\n \"tag\": "duchesse",\n \"popularity\": 50011\n },\n {\n \"tag\": "excisemanship trophied",\n \"popularity\": 49866\n },\n {\n \"tag\": "cytinaceous",\n \"popularity\": 49721\n },\n {\n \"tag\": "assuringly",\n \"popularity\": 49577\n },\n {\n \"tag\": "unconducted upliftitis",\n \"popularity\": 49434\n },\n {\n \"tag\": "rachicentesis",\n \"popularity\": 49292\n },\n {\n \"tag\": "antiangular",\n \"popularity\": 49150\n },\n {\n \"tag\": "advisal",\n \"popularity\": 49008\n },\n {\n \"tag\": "birdcatcher",\n \"popularity\": 48868\n },\n {\n \"tag\": "secularistic",\n \"popularity\": 48728\n },\n {\n \"tag\": "grandeeism superinformal",\n \"popularity\": 48588\n },\n {\n \"tag\": "unapprehension",\n \"popularity\": 48449\n },\n {\n \"tag\": "excipulum",\n \"popularity\": 48311\n },\n {\n \"tag\": "decimole",\n \"popularity\": 48174\n },\n {\n \"tag\": "semidrachm",\n \"popularity\": 48037\n },\n {\n \"tag\": "uvulotome",\n \"popularity\": 47901\n },\n {\n \"tag\": "Lemaneaceae",\n \"popularity\": 47765\n },\n {\n \"tag\": "corrade",\n \"popularity\": 47630\n },\n {\n \"tag\": "Kuroshio",\n \"popularity\": 47495\n },\n {\n \"tag\": "Araliophyllum",\n \"popularity\": 47361\n },\n {\n \"tag\": "victoriousness cardiosphygmograph",\n \"popularity\": 47228\n },\n {\n \"tag\": "reinvent",\n \"popularity\": 47095\n },\n {\n \"tag\": "Macrotolagus",\n \"popularity\": 46963\n },\n {\n \"tag\": "strenuousness",\n \"popularity\": 46831\n },\n {\n \"tag\": "deviability",\n \"popularity\": 46700\n },\n {\n \"tag\": "phyllospondylous",\n \"popularity\": 46570\n },\n {\n \"tag\": "bisect rudderhole",\n \"popularity\": 46440\n },\n {\n \"tag\": "crownwork",\n \"popularity\": 46311\n },\n {\n \"tag\": "Ascalabota",\n \"popularity\": 46182\n },\n {\n \"tag\": "prostatomyomectomy",\n \"popularity\": 46054\n },\n {\n \"tag\": "neurosyphilis",\n \"popularity\": 45926\n },\n {\n \"tag\": "tabloid scraplet",\n \"popularity\": 45799\n },\n {\n \"tag\": "nonmedullated servility",\n \"popularity\": 45673\n },\n {\n \"tag\": "melopoeic practicalization",\n \"popularity\": 45547\n },\n {\n \"tag\": "nonrhythmic",\n \"popularity\": 45421\n },\n {\n \"tag\": "deplorer",\n \"popularity\": 45296\n },\n {\n \"tag\": "Ophion",\n \"popularity\": 45172\n },\n {\n \"tag\": "subprioress",\n \"popularity\": 45048\n },\n {\n \"tag\": "semiregular",\n \"popularity\": 44925\n },\n {\n \"tag\": "praelection",\n \"popularity\": 44802\n },\n {\n \"tag\": "discinct",\n \"popularity\": 44680\n },\n {\n \"tag\": "preplace",\n \"popularity\": 44558\n },\n {\n \"tag\": "paternoster",\n \"popularity\": 44437\n },\n {\n \"tag\": "suboccipital",\n \"popularity\": 44316\n },\n {\n \"tag\": "Teutophil",\n \"popularity\": 44196\n },\n {\n \"tag\": "tracheole",\n \"popularity\": 44076\n },\n {\n \"tag\": "subsmile",\n \"popularity\": 43957\n },\n {\n \"tag\": "nonapostatizing",\n \"popularity\": 43839\n },\n {\n \"tag\": "cleidotomy",\n \"popularity\": 43720\n },\n {\n \"tag\": "hingle",\n \"popularity\": 43603\n },\n {\n \"tag\": "jocoque",\n \"popularity\": 43486\n },\n {\n \"tag\": "trundler notidanian",\n \"popularity\": 43369\n },\n {\n \"tag\": "strangling misdaub",\n \"popularity\": 43253\n },\n {\n \"tag\": "noncancellable",\n \"popularity\": 43137\n },\n {\n \"tag\": "lavabo",\n \"popularity\": 43022\n },\n {\n \"tag\": "lanterloo",\n \"popularity\": 42907\n },\n {\n \"tag\": "uncitizenly",\n \"popularity\": 42793\n },\n {\n \"tag\": "autoturning",\n \"popularity\": 42679\n },\n {\n \"tag\": "Haganah",\n \"popularity\": 42566\n },\n {\n \"tag\": "Glecoma",\n \"popularity\": 42453\n },\n {\n \"tag\": "membered",\n \"popularity\": 42341\n },\n {\n \"tag\": "consuetudinal",\n \"popularity\": 42229\n },\n {\n \"tag\": "gatehouse",\n \"popularity\": 42117\n },\n {\n \"tag\": "tetherball",\n \"popularity\": 42006\n },\n {\n \"tag\": "counterrevolutionist numismatical",\n \"popularity\": 41896\n },\n {\n \"tag\": "pagehood plateiasmus",\n \"popularity\": 41786\n },\n {\n \"tag\": "pelterer",\n \"popularity\": 41676\n },\n {\n \"tag\": "splenemphraxis",\n \"popularity\": 41567\n },\n {\n \"tag\": "Crypturidae",\n \"popularity\": 41458\n },\n {\n \"tag\": "caboodle",\n \"popularity\": 41350\n },\n {\n \"tag\": "Filaria",\n \"popularity\": 41242\n },\n {\n \"tag\": "noninvincibility",\n \"popularity\": 41135\n },\n {\n \"tag\": "preadvertisement",\n \"popularity\": 41028\n },\n {\n \"tag\": "bathrobe",\n \"popularity\": 40921\n },\n {\n \"tag\": "nitrifier",\n \"popularity\": 40815\n },\n {\n \"tag\": "furthermore",\n \"popularity\": 40709\n },\n {\n \"tag\": "recrate",\n \"popularity\": 40604\n },\n {\n \"tag\": "inexist",\n \"popularity\": 40499\n },\n {\n \"tag\": "Mocoan",\n \"popularity\": 40395\n },\n {\n \"tag\": "forint",\n \"popularity\": 40291\n },\n {\n \"tag\": "cardiomyoliposis",\n \"popularity\": 40187\n },\n {\n \"tag\": "channeling",\n \"popularity\": 40084\n },\n {\n \"tag\": "quebrachine",\n \"popularity\": 39981\n },\n {\n \"tag\": "magistery",\n \"popularity\": 39879\n },\n {\n \"tag\": "koko",\n \"popularity\": 39777\n },\n {\n \"tag\": "nobilify",\n \"popularity\": 39676\n },\n {\n \"tag\": "articulate taprooted",\n \"popularity\": 39575\n },\n {\n \"tag\": "cardiotonic Nicaragua",\n \"popularity\": 39474\n },\n {\n \"tag\": "assertiveness",\n \"popularity\": 39374\n },\n {\n \"tag\": "springtail",\n \"popularity\": 39274\n },\n {\n \"tag\": "spontoon",\n \"popularity\": 39174\n },\n {\n \"tag\": "plesiobiosis",\n \"popularity\": 39075\n },\n {\n \"tag\": "rooinek",\n \"popularity\": 38976\n },\n {\n \"tag\": "hairif falsehood",\n \"popularity\": 38878\n },\n {\n \"tag\": "synodally",\n \"popularity\": 38780\n },\n {\n \"tag\": "biodynamics",\n \"popularity\": 38683\n },\n {\n \"tag\": "trickling",\n \"popularity\": 38585\n },\n {\n \"tag\": "oxfly daystar",\n \"popularity\": 38489\n },\n {\n \"tag\": "epicycloidal",\n \"popularity\": 38392\n },\n {\n \"tag\": "shorthand",\n \"popularity\": 38296\n },\n {\n \"tag\": "herpolhode",\n \"popularity\": 38201\n },\n {\n \"tag\": "polysynthesism",\n \"popularity\": 38105\n },\n {\n \"tag\": "cany",\n \"popularity\": 38010\n },\n {\n \"tag\": "sideage",\n \"popularity\": 37916\n },\n {\n \"tag\": "strainableness",\n \"popularity\": 37822\n },\n {\n \"tag\": "superformidable",\n \"popularity\": 37728\n },\n {\n \"tag\": "slendang",\n \"popularity\": 37634\n },\n {\n \"tag\": "impropriation",\n \"popularity\": 37541\n },\n {\n \"tag\": "ficklehearted",\n \"popularity\": 37449\n },\n {\n \"tag\": "wintrify",\n \"popularity\": 37356\n },\n {\n \"tag\": "geomorphogenist",\n \"popularity\": 37264\n },\n {\n \"tag\": "smuggleable",\n \"popularity\": 37173\n },\n {\n \"tag\": "delapsion",\n \"popularity\": 37081\n },\n {\n \"tag\": "projective",\n \"popularity\": 36990\n },\n {\n \"tag\": "unglue exfoliation",\n \"popularity\": 36900\n },\n {\n \"tag\": "Acerae",\n \"popularity\": 36810\n },\n {\n \"tag\": "unstaged",\n \"popularity\": 36720\n },\n {\n \"tag\": "ranal",\n \"popularity\": 36630\n },\n {\n \"tag\": "worrier",\n \"popularity\": 36541\n },\n {\n \"tag\": "unhid",\n \"popularity\": 36452\n },\n {\n \"tag\": "adequation",\n \"popularity\": 36363\n },\n {\n \"tag\": "strongylid Sokotri",\n \"popularity\": 36275\n },\n {\n \"tag\": "fumingly",\n \"popularity\": 36187\n },\n {\n \"tag\": "gynosporangium phaenogenetic",\n \"popularity\": 36100\n },\n {\n \"tag\": "uniunguiculate",\n \"popularity\": 36012\n },\n {\n \"tag\": "prudelike",\n \"popularity\": 35926\n },\n {\n \"tag\": "seminomata",\n \"popularity\": 35839\n },\n {\n \"tag\": "trinklet",\n \"popularity\": 35753\n },\n {\n \"tag\": "risorial",\n \"popularity\": 35667\n },\n {\n \"tag\": "pericardiocentesis",\n \"popularity\": 35581\n },\n {\n \"tag\": "filmist",\n \"popularity\": 35496\n },\n {\n \"tag\": "Nana",\n \"popularity\": 35411\n },\n {\n \"tag\": "cynipoid",\n \"popularity\": 35326\n },\n {\n \"tag\": "cteniform",\n \"popularity\": 35242\n },\n {\n \"tag\": "semiflex",\n \"popularity\": 35158\n },\n {\n \"tag\": "solstitially",\n \"popularity\": 35074\n },\n {\n \"tag\": "Algarsife",\n \"popularity\": 34991\n },\n {\n \"tag\": "noncriminal",\n \"popularity\": 34908\n },\n {\n \"tag\": "compassion",\n \"popularity\": 34825\n },\n {\n \"tag\": "Buddhic",\n \"popularity\": 34743\n },\n {\n \"tag\": "vellicative dactylically hotfoot",\n \"popularity\": 34661\n },\n {\n \"tag\": "chicory",\n \"popularity\": 34579\n },\n {\n \"tag\": "transperitoneally",\n \"popularity\": 34497\n },\n {\n \"tag\": "pennae",\n \"popularity\": 34416\n },\n {\n \"tag\": "Flamandize",\n \"popularity\": 34335\n },\n {\n \"tag\": "underviewer",\n \"popularity\": 34254\n },\n {\n \"tag\": "assoil",\n \"popularity\": 34174\n },\n {\n \"tag\": "saccharobacillus",\n \"popularity\": 34094\n },\n {\n \"tag\": "biacetylene",\n \"popularity\": 34014\n },\n {\n \"tag\": "mouchardism",\n \"popularity\": 33935\n },\n {\n \"tag\": "anisomeric",\n \"popularity\": 33856\n },\n {\n \"tag\": "digestive",\n \"popularity\": 33777\n },\n {\n \"tag\": "darlingly",\n \"popularity\": 33698\n },\n {\n \"tag\": "liman",\n \"popularity\": 33620\n },\n {\n \"tag\": "soldanrie",\n \"popularity\": 33542\n },\n {\n \"tag\": "sully",\n \"popularity\": 33464\n },\n {\n \"tag\": "brightsmith",\n \"popularity\": 33387\n },\n {\n \"tag\": "inwrap antiliturgist ureterocervical",\n \"popularity\": 33309\n },\n {\n \"tag\": "discommodity",\n \"popularity\": 33232\n },\n {\n \"tag\": "typical aggrandizer",\n \"popularity\": 33156\n },\n {\n \"tag\": "xenogeny",\n \"popularity\": 33079\n },\n {\n \"tag\": "uncountrified",\n \"popularity\": 33003\n },\n {\n \"tag\": "Podarge",\n \"popularity\": 32928\n },\n {\n \"tag\": "uninterviewed",\n \"popularity\": 32852\n },\n {\n \"tag\": "underprior",\n \"popularity\": 32777\n },\n {\n \"tag\": "leiomyomatous",\n \"popularity\": 32702\n },\n {\n \"tag\": "postdysenteric",\n \"popularity\": 32627\n },\n {\n \"tag\": "Fusicladium",\n \"popularity\": 32553\n },\n {\n \"tag\": "Dulcinea",\n \"popularity\": 32478\n },\n {\n \"tag\": "interspersion",\n \"popularity\": 32404\n },\n {\n \"tag\": "preobligate",\n \"popularity\": 32331\n },\n {\n \"tag\": "subaggregate",\n \"popularity\": 32257\n },\n {\n \"tag\": "grammarianism",\n \"popularity\": 32184\n },\n {\n \"tag\": "palikar",\n \"popularity\": 32111\n },\n {\n \"tag\": "facileness",\n \"popularity\": 32039\n },\n {\n \"tag\": "deuterofibrinose",\n \"popularity\": 31966\n },\n {\n \"tag\": "pseudesthesia",\n \"popularity\": 31894\n },\n {\n \"tag\": "sedimentary",\n \"popularity\": 31822\n },\n {\n \"tag\": "typewrite",\n \"popularity\": 31751\n },\n {\n \"tag\": "immemorable",\n \"popularity\": 31679\n },\n {\n \"tag\": "Myrtus",\n \"popularity\": 31608\n },\n {\n \"tag\": "hauchecornite",\n \"popularity\": 31537\n },\n {\n \"tag\": "galleylike",\n \"popularity\": 31467\n },\n {\n \"tag\": "thimber",\n \"popularity\": 31396\n },\n {\n \"tag\": "Hegelianism",\n \"popularity\": 31326\n },\n {\n \"tag\": "strig",\n \"popularity\": 31256\n },\n {\n \"tag\": "skyre",\n \"popularity\": 31187\n },\n {\n \"tag\": "eupepticism",\n \"popularity\": 31117\n },\n {\n \"tag\": "eponymism",\n \"popularity\": 31048\n },\n {\n \"tag\": "flunkeyhood",\n \"popularity\": 30979\n },\n {\n \"tag\": "Abama",\n \"popularity\": 30911\n },\n {\n \"tag\": "adiadochokinesis",\n \"popularity\": 30842\n },\n {\n \"tag\": "spendthrifty",\n \"popularity\": 30774\n },\n {\n \"tag\": "chalcedony",\n \"popularity\": 30706\n },\n {\n \"tag\": "authorism",\n \"popularity\": 30638\n },\n {\n \"tag\": "nasturtium",\n \"popularity\": 30571\n },\n {\n \"tag\": "Acanthocereus",\n \"popularity\": 30504\n },\n {\n \"tag\": "uncollapsible",\n \"popularity\": 30437\n },\n {\n \"tag\": "excursionist",\n \"popularity\": 30370\n },\n {\n \"tag\": "fogbow",\n \"popularity\": 30303\n },\n {\n \"tag\": "overlie",\n \"popularity\": 30237\n },\n {\n \"tag\": "velours",\n \"popularity\": 30171\n },\n {\n \"tag\": "zoodendria madrigal stagbush",\n \"popularity\": 30105\n },\n {\n \"tag\": "imi",\n \"popularity\": 30039\n },\n {\n \"tag\": "cojudge",\n \"popularity\": 29974\n },\n {\n \"tag\": "depurate argal",\n \"popularity\": 29909\n },\n {\n \"tag\": "unrecognition",\n \"popularity\": 29844\n },\n {\n \"tag\": "paunchful",\n \"popularity\": 29779\n },\n {\n \"tag\": "invalued",\n \"popularity\": 29714\n },\n {\n \"tag\": "probang",\n \"popularity\": 29650\n },\n {\n \"tag\": "chetvert",\n \"popularity\": 29586\n },\n {\n \"tag\": "enactable",\n \"popularity\": 29522\n },\n {\n \"tag\": "detoxicate adhibit",\n \"popularity\": 29458\n },\n {\n \"tag\": "kullaite",\n \"popularity\": 29395\n },\n {\n \"tag\": "undazzling",\n \"popularity\": 29332\n },\n {\n \"tag\": "excalation",\n \"popularity\": 29269\n },\n {\n \"tag\": "sievings",\n \"popularity\": 29206\n },\n {\n \"tag\": "disenthral",\n \"popularity\": 29143\n },\n {\n \"tag\": "disinterestedly",\n \"popularity\": 29081\n },\n {\n \"tag\": "stanner",\n \"popularity\": 29018\n },\n {\n \"tag\": "recapitulative",\n \"popularity\": 28956\n },\n {\n \"tag\": "objectivist",\n \"popularity\": 28895\n },\n {\n \"tag\": "hypermetropia",\n \"popularity\": 28833\n },\n {\n \"tag\": "incumbency",\n \"popularity\": 28772\n },\n {\n \"tag\": "protegee",\n \"popularity\": 28711\n },\n {\n \"tag\": "zealotic",\n \"popularity\": 28650\n },\n {\n \"tag\": "predebit",\n \"popularity\": 28589\n },\n {\n \"tag\": "cupolar",\n \"popularity\": 28528\n },\n {\n \"tag\": "unattributed",\n \"popularity\": 28468\n },\n {\n \"tag\": "louisine",\n \"popularity\": 28408\n },\n {\n \"tag\": "illustrate",\n \"popularity\": 28348\n },\n {\n \"tag\": "inofficiousness",\n \"popularity\": 28288\n },\n {\n \"tag\": "Americawards",\n \"popularity\": 28228\n },\n {\n \"tag\": "foreflap",\n \"popularity\": 28169\n },\n {\n \"tag\": "eruditeness",\n \"popularity\": 28110\n },\n {\n \"tag\": "copiopsia",\n \"popularity\": 28051\n },\n {\n \"tag\": "sporuliferous",\n \"popularity\": 27992\n },\n {\n \"tag\": "muttering",\n \"popularity\": 27934\n },\n {\n \"tag\": "prepsychology adrip",\n \"popularity\": 27875\n },\n {\n \"tag\": "unfriendly",\n \"popularity\": 27817\n },\n {\n \"tag\": "sulphanilic",\n \"popularity\": 27759\n },\n {\n \"tag\": "Coelococcus",\n \"popularity\": 27701\n },\n {\n \"tag\": "undoubtfulness",\n \"popularity\": 27643\n },\n {\n \"tag\": "flaringly",\n \"popularity\": 27586\n },\n {\n \"tag\": "unordain",\n \"popularity\": 27529\n },\n {\n \"tag\": "fratchety",\n \"popularity\": 27472\n },\n {\n \"tag\": "decadentism dolefully",\n \"popularity\": 27415\n },\n {\n \"tag\": "synthronus",\n \"popularity\": 27358\n },\n {\n \"tag\": "maiid",\n \"popularity\": 27301\n },\n {\n \"tag\": "rhinobyon",\n \"popularity\": 27245\n },\n {\n \"tag\": "Didynamia",\n \"popularity\": 27189\n },\n {\n \"tag\": "millionairedom",\n \"popularity\": 27133\n },\n {\n \"tag\": "mulierine",\n \"popularity\": 27077\n },\n {\n \"tag\": "Mayo",\n \"popularity\": 27021\n },\n {\n \"tag\": "perceivedness",\n \"popularity\": 26966\n },\n {\n \"tag\": "unadoration",\n \"popularity\": 26911\n },\n {\n \"tag\": "regraft",\n \"popularity\": 26856\n },\n {\n \"tag\": "witch",\n \"popularity\": 26801\n },\n {\n \"tag\": "ungrow",\n \"popularity\": 26746\n },\n {\n \"tag\": "glossopharyngeus",\n \"popularity\": 26691\n },\n {\n \"tag\": "unstirrable",\n \"popularity\": 26637\n },\n {\n \"tag\": "synodsman",\n \"popularity\": 26583\n },\n {\n \"tag\": "placentalian",\n \"popularity\": 26529\n },\n {\n \"tag\": "corpulently",\n \"popularity\": 26475\n },\n {\n \"tag\": "photochromoscope",\n \"popularity\": 26421\n },\n {\n \"tag\": "indusiate retinasphaltum chokestrap",\n \"popularity\": 26368\n },\n {\n \"tag\": "murdrum",\n \"popularity\": 26314\n },\n {\n \"tag\": "belatedness",\n \"popularity\": 26261\n },\n {\n \"tag\": "Cochin",\n \"popularity\": 26208\n },\n {\n \"tag\": "Leonist",\n \"popularity\": 26155\n },\n {\n \"tag\": "keeker confined",\n \"popularity\": 26102\n },\n {\n \"tag\": "unintellectual",\n \"popularity\": 26050\n },\n {\n \"tag\": "nymphaline bait",\n \"popularity\": 25997\n },\n {\n \"tag\": "sarcosporidiosis",\n \"popularity\": 25945\n },\n {\n \"tag\": "catawamptiously",\n \"popularity\": 25893\n },\n {\n \"tag\": "outshame",\n \"popularity\": 25841\n },\n {\n \"tag\": "animalism",\n \"popularity\": 25790\n },\n {\n \"tag\": "epithalamial",\n \"popularity\": 25738\n },\n {\n \"tag\": "ganner",\n \"popularity\": 25687\n },\n {\n \"tag\": "desilicify",\n \"popularity\": 25635\n },\n {\n \"tag\": "dandyism",\n \"popularity\": 25584\n },\n {\n \"tag\": "hyleg",\n \"popularity\": 25533\n },\n {\n \"tag\": "photophysical",\n \"popularity\": 25483\n },\n {\n \"tag\": "underload",\n \"popularity\": 25432\n },\n {\n \"tag\": "unintrusive",\n \"popularity\": 25382\n },\n {\n \"tag\": "succinamic",\n \"popularity\": 25331\n },\n {\n \"tag\": "matchy",\n \"popularity\": 25281\n },\n {\n \"tag\": "concordal",\n \"popularity\": 25231\n },\n {\n \"tag\": "exteriority",\n \"popularity\": 25181\n },\n {\n \"tag\": "sterculiad",\n \"popularity\": 25132\n },\n {\n \"tag\": "sulfoxylic",\n \"popularity\": 25082\n },\n {\n \"tag\": "oversubscription",\n \"popularity\": 25033\n },\n {\n \"tag\": "chiasmic",\n \"popularity\": 24984\n },\n {\n \"tag\": "pseudoparthenogenesis",\n \"popularity\": 24935\n },\n {\n \"tag\": "indorse",\n \"popularity\": 24886\n },\n {\n \"tag\": "Krishnaite",\n \"popularity\": 24837\n },\n {\n \"tag\": "calcinize",\n \"popularity\": 24788\n },\n {\n \"tag\": "rhodium",\n \"popularity\": 24740\n },\n {\n \"tag\": "tragopan",\n \"popularity\": 24692\n },\n {\n \"tag\": "overwhelmingly",\n \"popularity\": 24643\n },\n {\n \"tag\": "procidence accorporate",\n \"popularity\": 24595\n },\n {\n \"tag\": "polemize speelless",\n \"popularity\": 24548\n },\n {\n \"tag\": "radiocarpal goran",\n \"popularity\": 24500\n },\n {\n \"tag\": "counteroffer Pelodytes",\n \"popularity\": 24452\n },\n {\n \"tag\": "lionhearted",\n \"popularity\": 24405\n },\n {\n \"tag\": "paramastoid",\n \"popularity\": 24358\n },\n {\n \"tag\": "murine",\n \"popularity\": 24310\n },\n {\n \"tag\": "woodbined",\n \"popularity\": 24263\n },\n {\n \"tag\": "packthread",\n \"popularity\": 24217\n },\n {\n \"tag\": "citreous",\n \"popularity\": 24170\n },\n {\n \"tag\": "unfallaciously",\n \"popularity\": 24123\n },\n {\n \"tag\": "tentwork reincarnadine",\n \"popularity\": 24077\n },\n {\n \"tag\": "verminousness",\n \"popularity\": 24030\n },\n {\n \"tag\": "sillometer",\n \"popularity\": 23984\n },\n {\n \"tag\": "jointy",\n \"popularity\": 23938\n },\n {\n \"tag\": "streptolysin",\n \"popularity\": 23892\n },\n {\n \"tag\": "Florentinism",\n \"popularity\": 23847\n },\n {\n \"tag\": "monosomatous",\n \"popularity\": 23801\n },\n {\n \"tag\": "capsulociliary",\n \"popularity\": 23756\n },\n {\n \"tag\": "organum",\n \"popularity\": 23710\n },\n {\n \"tag\": "overtly",\n \"popularity\": 23665\n },\n {\n \"tag\": "ophthalmoscopical",\n \"popularity\": 23620\n },\n {\n \"tag\": "supposititiously",\n \"popularity\": 23575\n },\n {\n \"tag\": "radiochemistry",\n \"popularity\": 23530\n },\n {\n \"tag\": "flaxtail",\n \"popularity\": 23486\n },\n {\n \"tag\": "pretympanic",\n \"popularity\": 23441\n },\n {\n \"tag\": "auscultation",\n \"popularity\": 23397\n },\n {\n \"tag\": "hairdresser",\n \"popularity\": 23352\n },\n {\n \"tag\": "chaffless",\n \"popularity\": 23308\n },\n {\n \"tag\": "polioencephalitis",\n \"popularity\": 23264\n },\n {\n \"tag\": "axolotl",\n \"popularity\": 23220\n },\n {\n \"tag\": "smous",\n \"popularity\": 23177\n },\n {\n \"tag\": "morgen disenamour toothed",\n \"popularity\": 23133\n },\n {\n \"tag\": "chaiseless",\n \"popularity\": 23089\n },\n {\n \"tag\": "frugally",\n \"popularity\": 23046\n },\n {\n \"tag\": "combustive antievolutionist cinenegative",\n \"popularity\": 23003\n },\n {\n \"tag\": "malacolite",\n \"popularity\": 22960\n },\n {\n \"tag\": "borne",\n \"popularity\": 22917\n },\n {\n \"tag\": "mercaptole",\n \"popularity\": 22874\n },\n {\n \"tag\": "judicatory",\n \"popularity\": 22831\n },\n {\n \"tag\": "noctivagation",\n \"popularity\": 22789\n },\n {\n \"tag\": "synthete",\n \"popularity\": 22746\n },\n {\n \"tag\": "tomboyism",\n \"popularity\": 22704\n },\n {\n \"tag\": "serranoid",\n \"popularity\": 22661\n },\n {\n \"tag\": "impostorism",\n \"popularity\": 22619\n },\n {\n \"tag\": "flagellosis Talitha",\n \"popularity\": 22577\n },\n {\n \"tag\": "pseudoviscous",\n \"popularity\": 22535\n },\n {\n \"tag\": "Galleriidae",\n \"popularity\": 22494\n },\n {\n \"tag\": "undulation didelph Comintern",\n \"popularity\": 22452\n },\n {\n \"tag\": "triangulopyramidal",\n \"popularity\": 22411\n },\n {\n \"tag\": "middlings",\n \"popularity\": 22369\n },\n {\n \"tag\": "piperazin",\n \"popularity\": 22328\n },\n {\n \"tag\": "endostitis",\n \"popularity\": 22287\n },\n {\n \"tag\": "swordlike",\n \"popularity\": 22246\n },\n {\n \"tag\": "forthwith",\n \"popularity\": 22205\n },\n {\n \"tag\": "menaceful",\n \"popularity\": 22164\n },\n {\n \"tag\": "explantation defective",\n \"popularity\": 22123\n },\n {\n \"tag\": "arrear",\n \"popularity\": 22083\n },\n {\n \"tag\": "engraft",\n \"popularity\": 22042\n },\n {\n \"tag\": "revolunteer",\n \"popularity\": 22002\n },\n {\n \"tag\": "foliaceous",\n \"popularity\": 21962\n },\n {\n \"tag\": "pseudograph",\n \"popularity\": 21922\n },\n {\n \"tag\": "maenaite",\n \"popularity\": 21882\n },\n {\n \"tag\": "interfinger",\n \"popularity\": 21842\n },\n {\n \"tag\": "macroscopically",\n \"popularity\": 21802\n },\n {\n \"tag\": "bluewood",\n \"popularity\": 21762\n },\n {\n \"tag\": "chikara",\n \"popularity\": 21723\n },\n {\n \"tag\": "reprehension diazeuxis nickelous",\n \"popularity\": 21683\n },\n {\n \"tag\": "vacuation",\n \"popularity\": 21644\n },\n {\n \"tag\": "Sartish",\n \"popularity\": 21605\n },\n {\n \"tag\": "pseudogyny",\n \"popularity\": 21566\n },\n {\n \"tag\": "friedcake",\n \"popularity\": 21527\n },\n {\n \"tag\": "thraw",\n \"popularity\": 21488\n },\n {\n \"tag\": "bifid",\n \"popularity\": 21449\n },\n {\n \"tag\": "truthlessly",\n \"popularity\": 21411\n },\n {\n \"tag\": "lungy",\n \"popularity\": 21372\n },\n {\n \"tag\": "fluoborite",\n \"popularity\": 21334\n },\n {\n \"tag\": "anthropolithic",\n \"popularity\": 21295\n },\n {\n \"tag\": "coachee straw",\n \"popularity\": 21257\n },\n {\n \"tag\": "dehorner Grecize",\n \"popularity\": 21219\n },\n {\n \"tag\": "spondylopyosis",\n \"popularity\": 21181\n },\n {\n \"tag\": "institutionary",\n \"popularity\": 21143\n },\n {\n \"tag\": "agentry",\n \"popularity\": 21105\n },\n {\n \"tag\": "musing bietle",\n \"popularity\": 21068\n },\n {\n \"tag\": "cormophyte",\n \"popularity\": 21030\n },\n {\n \"tag\": "semielliptic",\n \"popularity\": 20993\n },\n {\n \"tag\": "ependytes",\n \"popularity\": 20955\n },\n {\n \"tag\": "coachmaster",\n \"popularity\": 20918\n },\n {\n \"tag\": "overexuberant",\n \"popularity\": 20881\n },\n {\n \"tag\": "selectable",\n \"popularity\": 20844\n },\n {\n \"tag\": "saclike",\n \"popularity\": 20807\n },\n {\n \"tag\": "mullion",\n \"popularity\": 20770\n },\n {\n \"tag\": "pantheonize prevalency",\n \"popularity\": 20733\n },\n {\n \"tag\": "trophosperm",\n \"popularity\": 20697\n },\n {\n \"tag\": "paraphrasist",\n \"popularity\": 20660\n },\n {\n \"tag\": "undercarry",\n \"popularity\": 20624\n },\n {\n \"tag\": "thallogenic",\n \"popularity\": 20587\n },\n {\n \"tag\": "bulgy forbid",\n \"popularity\": 20551\n },\n {\n \"tag\": "proliquor gratulatory",\n \"popularity\": 20515\n },\n {\n \"tag\": "booker",\n \"popularity\": 20479\n },\n {\n \"tag\": "wizen",\n \"popularity\": 20443\n },\n {\n \"tag\": "synchondrosially",\n \"popularity\": 20407\n },\n {\n \"tag\": "herbless",\n \"popularity\": 20371\n },\n {\n \"tag\": "arfvedsonite",\n \"popularity\": 20336\n },\n {\n \"tag\": "Neuroptera",\n \"popularity\": 20300\n },\n {\n \"tag\": "fingerstone",\n \"popularity\": 20265\n },\n {\n \"tag\": "Odontoglossae",\n \"popularity\": 20229\n },\n {\n \"tag\": "transmigrator",\n \"popularity\": 20194\n },\n {\n \"tag\": "Dehaites",\n \"popularity\": 20159\n },\n {\n \"tag\": "Molinist",\n \"popularity\": 20124\n },\n {\n \"tag\": "novelistic",\n \"popularity\": 20089\n },\n {\n \"tag\": "astelic",\n \"popularity\": 20054\n },\n {\n \"tag\": "pyelometry",\n \"popularity\": 20019\n },\n {\n \"tag\": "pigmentation",\n \"popularity\": 19984\n },\n {\n \"tag\": "epinaos",\n \"popularity\": 19950\n },\n {\n \"tag\": "outdare",\n \"popularity\": 19915\n },\n {\n \"tag\": "Funje philaristocracy",\n \"popularity\": 19881\n },\n {\n \"tag\": "keddah",\n \"popularity\": 19846\n },\n {\n \"tag\": "axoidean",\n \"popularity\": 19812\n },\n {\n \"tag\": "ovule",\n \"popularity\": 19778\n },\n {\n \"tag\": "solidify",\n \"popularity\": 19744\n },\n {\n \"tag\": "noncelestial",\n \"popularity\": 19710\n },\n {\n \"tag\": "overmultiplication",\n \"popularity\": 19676\n },\n {\n \"tag\": "hexatetrahedron",\n \"popularity\": 19642\n },\n {\n \"tag\": "pliciform",\n \"popularity\": 19609\n },\n {\n \"tag\": "zimbalon",\n \"popularity\": 19575\n },\n {\n \"tag\": "annexational",\n \"popularity\": 19542\n },\n {\n \"tag\": "eurhodol",\n \"popularity\": 19508\n },\n {\n \"tag\": "yark",\n \"popularity\": 19475\n },\n {\n \"tag\": "illegality nitroalizarin",\n \"popularity\": 19442\n },\n {\n \"tag\": "quadratum",\n \"popularity\": 19409\n },\n {\n \"tag\": "saccharine",\n \"popularity\": 19376\n },\n {\n \"tag\": "unemploy",\n \"popularity\": 19343\n },\n {\n \"tag\": "uniclinal unipotent",\n \"popularity\": 19310\n },\n {\n \"tag\": "turbo",\n \"popularity\": 19277\n },\n {\n \"tag\": "sybarism",\n \"popularity\": 19244\n },\n {\n \"tag\": "motacilline",\n \"popularity\": 19212\n },\n {\n \"tag\": "weaselly",\n \"popularity\": 19179\n },\n {\n \"tag\": "plastid",\n \"popularity\": 19147\n },\n {\n \"tag\": "wasting",\n \"popularity\": 19114\n },\n {\n \"tag\": "begrime fluting",\n \"popularity\": 19082\n },\n {\n \"tag\": "Nephilinae",\n \"popularity\": 19050\n },\n {\n \"tag\": "disregardance",\n \"popularity\": 19018\n },\n {\n \"tag\": "Shakerlike",\n \"popularity\": 18986\n },\n {\n \"tag\": "uniped",\n \"popularity\": 18954\n },\n {\n \"tag\": "knap",\n \"popularity\": 18922\n },\n {\n \"tag\": "electivism undergardener",\n \"popularity\": 18890\n },\n {\n \"tag\": "hulverheaded",\n \"popularity\": 18858\n },\n {\n \"tag\": "unruptured",\n \"popularity\": 18827\n },\n {\n \"tag\": "solemnize credently",\n \"popularity\": 18795\n },\n {\n \"tag\": "pentastomoid possessingly",\n \"popularity\": 18764\n },\n {\n \"tag\": "octose",\n \"popularity\": 18733\n },\n {\n \"tag\": "psithurism indefensibility",\n \"popularity\": 18701\n },\n {\n \"tag\": "torrentuous cyanometer subcrenate",\n \"popularity\": 18670\n },\n {\n \"tag\": "photoplaywright tapaculo",\n \"popularity\": 18639\n },\n {\n \"tag\": "univalence",\n \"popularity\": 18608\n },\n {\n \"tag\": "Porthetria",\n \"popularity\": 18577\n },\n {\n \"tag\": "funambulo",\n \"popularity\": 18546\n },\n {\n \"tag\": "pedion",\n \"popularity\": 18515\n },\n {\n \"tag\": "horticulturally",\n \"popularity\": 18485\n },\n {\n \"tag\": "marennin",\n \"popularity\": 18454\n },\n {\n \"tag\": "horselaugh",\n \"popularity\": 18423\n },\n {\n \"tag\": "semiexecutive",\n \"popularity\": 18393\n },\n {\n \"tag\": "Monopteridae",\n \"popularity\": 18363\n },\n {\n \"tag\": "commonable",\n \"popularity\": 18332\n },\n {\n \"tag\": "dreariment",\n \"popularity\": 18302\n },\n {\n \"tag\": "disbud",\n \"popularity\": 18272\n },\n {\n \"tag\": "monocled",\n \"popularity\": 18242\n },\n {\n \"tag\": "hurlbarrow",\n \"popularity\": 18212\n },\n {\n \"tag\": "opiateproof",\n \"popularity\": 18182\n },\n {\n \"tag\": "Fahrenheit",\n \"popularity\": 18152\n },\n {\n \"tag\": "writhed",\n \"popularity\": 18122\n },\n {\n \"tag\": "Volstead",\n \"popularity\": 18093\n },\n {\n \"tag\": "yesternight",\n \"popularity\": 18063\n },\n {\n \"tag\": "readmittance",\n \"popularity\": 18033\n },\n {\n \"tag\": "reiterable",\n \"popularity\": 18004\n },\n {\n \"tag\": "triquetral",\n \"popularity\": 17975\n },\n {\n \"tag\": "guillotinement",\n \"popularity\": 17945\n },\n {\n \"tag\": "repermission",\n \"popularity\": 17916\n },\n {\n \"tag\": "assishly",\n \"popularity\": 17887\n },\n {\n \"tag\": "daidle",\n \"popularity\": 17858\n },\n {\n \"tag\": "prismatoid",\n \"popularity\": 17829\n },\n {\n \"tag\": "irreptitious",\n \"popularity\": 17800\n },\n {\n \"tag\": "sourdeline",\n \"popularity\": 17771\n },\n {\n \"tag\": "Austrian",\n \"popularity\": 17742\n },\n {\n \"tag\": "psychorrhagic",\n \"popularity\": 17713\n },\n {\n \"tag\": "Monumbo",\n \"popularity\": 17685\n },\n {\n \"tag\": "cloiochoanitic",\n \"popularity\": 17656\n },\n {\n \"tag\": "hant",\n \"popularity\": 17628\n },\n {\n \"tag\": "roily pulldown",\n \"popularity\": 17599\n },\n {\n \"tag\": "recongratulation",\n \"popularity\": 17571\n },\n {\n \"tag\": "Peking",\n \"popularity\": 17543\n },\n {\n \"tag\": "erdvark",\n \"popularity\": 17514\n },\n {\n \"tag\": "antimnemonic",\n \"popularity\": 17486\n },\n {\n \"tag\": "noncapillarity",\n \"popularity\": 17458\n },\n {\n \"tag\": "irrepressive",\n \"popularity\": 17430\n },\n {\n \"tag\": "Petromyzontes",\n \"popularity\": 17402\n },\n {\n \"tag\": "piscatorially",\n \"popularity\": 17374\n },\n {\n \"tag\": "cholesterosis",\n \"popularity\": 17346\n },\n {\n \"tag\": "denunciate",\n \"popularity\": 17319\n },\n {\n \"tag\": "unmetalled",\n \"popularity\": 17291\n },\n {\n \"tag\": "Tigris enruin",\n \"popularity\": 17263\n },\n {\n \"tag\": "anaspalin",\n \"popularity\": 17236\n },\n {\n \"tag\": "monodromy",\n \"popularity\": 17208\n },\n {\n \"tag\": "Canichanan",\n \"popularity\": 17181\n },\n {\n \"tag\": "mesolabe",\n \"popularity\": 17154\n },\n {\n \"tag\": "trichothallic overcunningness",\n \"popularity\": 17127\n },\n {\n \"tag\": "spinsterishly",\n \"popularity\": 17099\n },\n {\n \"tag\": "sensilla",\n \"popularity\": 17072\n },\n {\n \"tag\": "wifelkin",\n \"popularity\": 17045\n },\n {\n \"tag\": "suppositionless",\n \"popularity\": 17018\n },\n {\n \"tag\": "irksomeness",\n \"popularity\": 16991\n },\n {\n \"tag\": "sanbenito",\n \"popularity\": 16964\n },\n {\n \"tag\": "nonstatement",\n \"popularity\": 16938\n },\n {\n \"tag\": "phenoloid",\n \"popularity\": 16911\n },\n {\n \"tag\": "Steinberger",\n \"popularity\": 16884\n },\n {\n \"tag\": "replicated boom",\n \"popularity\": 16858\n },\n {\n \"tag\": "sciomachiology",\n \"popularity\": 16831\n },\n {\n \"tag\": "starwise",\n \"popularity\": 16805\n },\n {\n \"tag\": "prerich",\n \"popularity\": 16778\n },\n {\n \"tag\": "unspawned",\n \"popularity\": 16752\n },\n {\n \"tag\": "unindentable",\n \"popularity\": 16726\n },\n {\n \"tag\": "stromatic",\n \"popularity\": 16700\n },\n {\n \"tag\": "fetishize",\n \"popularity\": 16673\n },\n {\n \"tag\": "dihydroxy",\n \"popularity\": 16647\n },\n {\n \"tag\": "precaudal",\n \"popularity\": 16621\n },\n {\n \"tag\": "Madagascar",\n \"popularity\": 16595\n },\n {\n \"tag\": "repinement",\n \"popularity\": 16570\n },\n {\n \"tag\": "noncathedral wenzel",\n \"popularity\": 16544\n },\n {\n \"tag\": "corollike",\n \"popularity\": 16518\n },\n {\n \"tag\": "pubes unamortization",\n \"popularity\": 16492\n },\n {\n \"tag\": "brickcroft",\n \"popularity\": 16467\n },\n {\n \"tag\": "intertrabecular",\n \"popularity\": 16441\n },\n {\n \"tag\": "formulaic",\n \"popularity\": 16416\n },\n {\n \"tag\": "arienzo",\n \"popularity\": 16390\n },\n {\n \"tag\": "Mazzinian",\n \"popularity\": 16365\n },\n {\n \"tag\": "wallowishly",\n \"popularity\": 16339\n },\n {\n \"tag\": "sysselman",\n \"popularity\": 16314\n },\n {\n \"tag\": "seligmannite",\n \"popularity\": 16289\n },\n {\n \"tag\": "harlequinery",\n \"popularity\": 16264\n },\n {\n \"tag\": "zucchetto",\n \"popularity\": 16239\n },\n {\n \"tag\": "malonyl",\n \"popularity\": 16214\n },\n {\n \"tag\": "patwari",\n \"popularity\": 16189\n },\n {\n \"tag\": "neoholmia venturesomeness",\n \"popularity\": 16164\n },\n {\n \"tag\": "Dehwar",\n \"popularity\": 16139\n },\n {\n \"tag\": "fetiferous",\n \"popularity\": 16114\n },\n {\n \"tag\": "chromatophore",\n \"popularity\": 16090\n },\n {\n \"tag\": "reregistration",\n \"popularity\": 16065\n },\n {\n \"tag\": "alienor",\n \"popularity\": 16040\n },\n {\n \"tag\": "Hexagynia",\n \"popularity\": 16016\n },\n {\n \"tag\": "cerebrotonia",\n \"popularity\": 15991\n },\n {\n \"tag\": "deedbox",\n \"popularity\": 15967\n },\n {\n \"tag\": "staab",\n \"popularity\": 15943\n },\n {\n \"tag\": "uratemia",\n \"popularity\": 15918\n },\n {\n \"tag\": "flaunt",\n \"popularity\": 15894\n },\n {\n \"tag\": "bogy",\n \"popularity\": 15870\n },\n {\n \"tag\": "subcartilaginous",\n \"popularity\": 15846\n },\n {\n \"tag\": "protonephridial",\n \"popularity\": 15822\n },\n {\n \"tag\": "Boswellia",\n \"popularity\": 15798\n },\n {\n \"tag\": "relaxant untiaraed protoepiphyte",\n \"popularity\": 15774\n },\n {\n \"tag\": "nesslerization",\n \"popularity\": 15750\n },\n {\n \"tag\": "precession",\n \"popularity\": 15726\n },\n {\n \"tag\": "peat",\n \"popularity\": 15702\n },\n {\n \"tag\": "unbit",\n \"popularity\": 15678\n },\n {\n \"tag\": "snailish",\n \"popularity\": 15655\n },\n {\n \"tag\": "porismatical",\n \"popularity\": 15631\n },\n {\n \"tag\": "hooflike",\n \"popularity\": 15608\n },\n {\n \"tag\": "resuppose phene cranic",\n \"popularity\": 15584\n },\n {\n \"tag\": "peptonization kipskin",\n \"popularity\": 15561\n },\n {\n \"tag\": "birdstone",\n \"popularity\": 15537\n },\n {\n \"tag\": "empty inferoanterior",\n \"popularity\": 15514\n },\n {\n \"tag\": "androtauric",\n \"popularity\": 15491\n },\n {\n \"tag\": "triamide",\n \"popularity\": 15467\n },\n {\n \"tag\": "showmanry",\n \"popularity\": 15444\n },\n {\n \"tag\": "doing",\n \"popularity\": 15421\n },\n {\n \"tag\": "bouchaleen",\n \"popularity\": 15398\n },\n {\n \"tag\": "precollude",\n \"popularity\": 15375\n },\n {\n \"tag\": "finger",\n \"popularity\": 15352\n },\n {\n \"tag\": "limnetic intermessenger",\n \"popularity\": 15329\n },\n {\n \"tag\": "uncharitable picrotoxic",\n \"popularity\": 15306\n },\n {\n \"tag\": "nationalizer Phasmidae",\n \"popularity\": 15283\n },\n {\n \"tag\": "laughingstock",\n \"popularity\": 15261\n },\n {\n \"tag\": "nondeferential",\n \"popularity\": 15238\n },\n {\n \"tag\": "uproariously",\n \"popularity\": 15215\n },\n {\n \"tag\": "manzanilla",\n \"popularity\": 15193\n },\n {\n \"tag\": "khahoon",\n \"popularity\": 15170\n },\n {\n \"tag\": "olericulturally longshanks",\n \"popularity\": 15148\n },\n {\n \"tag\": "enthusiastically methionic",\n \"popularity\": 15125\n },\n {\n \"tag\": "pobs",\n \"popularity\": 15103\n },\n {\n \"tag\": "tricarpellate",\n \"popularity\": 15081\n },\n {\n \"tag\": "souterrain",\n \"popularity\": 15058\n },\n {\n \"tag\": "tethelin",\n \"popularity\": 15036\n },\n {\n \"tag\": "tartle",\n \"popularity\": 15014\n },\n {\n \"tag\": "tidelike",\n \"popularity\": 14992\n },\n {\n \"tag\": "cosmoramic",\n \"popularity\": 14970\n },\n {\n \"tag\": "pretardiness",\n \"popularity\": 14948\n },\n {\n \"tag\": "insoul",\n \"popularity\": 14926\n },\n {\n \"tag\": "anthroxan",\n \"popularity\": 14904\n },\n {\n \"tag\": "jilter",\n \"popularity\": 14882\n },\n {\n \"tag\": "pectinibranchian trematode",\n \"popularity\": 14860\n },\n {\n \"tag\": "Renaissancist",\n \"popularity\": 14838\n },\n {\n \"tag\": "imaginant",\n \"popularity\": 14817\n },\n {\n \"tag\": "supercensure",\n \"popularity\": 14795\n },\n {\n \"tag\": "festilogy",\n \"popularity\": 14773\n },\n {\n \"tag\": "regression",\n \"popularity\": 14752\n },\n {\n \"tag\": "mesobregmate languorously",\n \"popularity\": 14730\n },\n {\n \"tag\": "unsupernaturalized",\n \"popularity\": 14709\n },\n {\n \"tag\": "boobyish",\n \"popularity\": 14687\n },\n {\n \"tag\": "scopolamine",\n \"popularity\": 14666\n },\n {\n \"tag\": "reamputation unchristianly",\n \"popularity\": 14645\n },\n {\n \"tag\": "cuneatic",\n \"popularity\": 14623\n },\n {\n \"tag\": "heathberry",\n \"popularity\": 14602\n },\n {\n \"tag\": "hate",\n \"popularity\": 14581\n },\n {\n \"tag\": "redeemableness",\n \"popularity\": 14560\n },\n {\n \"tag\": "damasse",\n \"popularity\": 14539\n },\n {\n \"tag\": "thrillsome",\n \"popularity\": 14518\n },\n {\n \"tag\": "disseverment",\n \"popularity\": 14497\n },\n {\n \"tag\": "underbishopric Ostyak",\n \"popularity\": 14476\n },\n {\n \"tag\": "Exoascales",\n \"popularity\": 14455\n },\n {\n \"tag\": "soiled",\n \"popularity\": 14434\n },\n {\n \"tag\": "Cain",\n \"popularity\": 14413\n },\n {\n \"tag\": "mismanageable arenae",\n \"popularity\": 14392\n },\n {\n \"tag\": "manducate unhinderably",\n \"popularity\": 14372\n },\n {\n \"tag\": "peregrin",\n \"popularity\": 14351\n },\n {\n \"tag\": "musicianly",\n \"popularity\": 14330\n },\n {\n \"tag\": "aln",\n \"popularity\": 14310\n },\n {\n \"tag\": "intercentrum",\n \"popularity\": 14289\n },\n {\n \"tag\": "roothold",\n \"popularity\": 14269\n },\n {\n \"tag\": "jane aneurism",\n \"popularity\": 14248\n },\n {\n \"tag\": "insinuatively forefeel phytolatrous",\n \"popularity\": 14228\n },\n {\n \"tag\": "kanchil",\n \"popularity\": 14208\n },\n {\n \"tag\": "Austrophile",\n \"popularity\": 14187\n },\n {\n \"tag\": "unterrorized",\n \"popularity\": 14167\n },\n {\n \"tag\": "admeasure",\n \"popularity\": 14147\n },\n {\n \"tag\": "electrodissolution",\n \"popularity\": 14127\n },\n {\n \"tag\": "unweddedly",\n \"popularity\": 14107\n },\n {\n \"tag\": "unannoying",\n \"popularity\": 14087\n },\n {\n \"tag\": "uningenuous",\n \"popularity\": 14067\n },\n {\n \"tag\": "omnibenevolent",\n \"popularity\": 14047\n },\n {\n \"tag\": "commissure",\n \"popularity\": 14027\n },\n {\n \"tag\": "tellureted",\n \"popularity\": 14007\n },\n {\n \"tag\": "suffragan",\n \"popularity\": 13987\n },\n {\n \"tag\": "sphaeriaceous",\n \"popularity\": 13967\n },\n {\n \"tag\": "unfearing",\n \"popularity\": 13947\n },\n {\n \"tag\": "stentoriousness precounsellor",\n \"popularity\": 13928\n },\n {\n \"tag\": "haemaspectroscope",\n \"popularity\": 13908\n },\n {\n \"tag\": "teras",\n \"popularity\": 13888\n },\n {\n \"tag\": "pulicine",\n \"popularity\": 13869\n },\n {\n \"tag\": "colicystopyelitis",\n \"popularity\": 13849\n },\n {\n \"tag\": "Physalia",\n \"popularity\": 13830\n },\n {\n \"tag\": "Saxicolidae",\n \"popularity\": 13810\n },\n {\n \"tag\": "peritonital",\n \"popularity\": 13791\n },\n {\n \"tag\": "dysphotic",\n \"popularity\": 13771\n },\n {\n \"tag\": "unabandoned",\n \"popularity\": 13752\n },\n {\n \"tag\": "rashful",\n \"popularity\": 13733\n },\n {\n \"tag\": "goodyness Manobo",\n \"popularity\": 13714\n },\n {\n \"tag\": "glaring",\n \"popularity\": 13694\n },\n {\n \"tag\": "horrorful",\n \"popularity\": 13675\n },\n {\n \"tag\": "intercepting",\n \"popularity\": 13656\n },\n {\n \"tag\": "semifine",\n \"popularity\": 13637\n },\n {\n \"tag\": "Gaypoo",\n \"popularity\": 13618\n },\n {\n \"tag\": "Metrosideros",\n \"popularity\": 13599\n },\n {\n \"tag\": "thoracicolumbar",\n \"popularity\": 13580\n },\n {\n \"tag\": "unserried",\n \"popularity\": 13561\n },\n {\n \"tag\": "keeperess cauterization",\n \"popularity\": 13542\n },\n {\n \"tag\": "administrant",\n \"popularity\": 13523\n },\n {\n \"tag\": "unpropitiatedness",\n \"popularity\": 13505\n },\n {\n \"tag\": "pensileness",\n \"popularity\": 13486\n },\n {\n \"tag\": "quinaldic unreceivable",\n \"popularity\": 13467\n },\n {\n \"tag\": "Carnaria",\n \"popularity\": 13448\n },\n {\n \"tag\": "azothionium wurrus",\n \"popularity\": 13430\n },\n {\n \"tag\": "mistresshood",\n \"popularity\": 13411\n },\n {\n \"tag\": "Savara",\n \"popularity\": 13393\n },\n {\n \"tag\": "dasyurine",\n \"popularity\": 13374\n },\n {\n \"tag\": "superideal",\n \"popularity\": 13356\n },\n {\n \"tag\": "Parisianize",\n \"popularity\": 13337\n },\n {\n \"tag\": "underearth",\n \"popularity\": 13319\n },\n {\n \"tag\": "athrogenic",\n \"popularity\": 13301\n },\n {\n \"tag\": "communicate",\n \"popularity\": 13282\n },\n {\n \"tag\": "denervation enworthed",\n \"popularity\": 13264\n },\n {\n \"tag\": "subbromide",\n \"popularity\": 13246\n },\n {\n \"tag\": "stenocoriasis",\n \"popularity\": 13228\n },\n {\n \"tag\": "facetiousness",\n \"popularity\": 13209\n },\n {\n \"tag\": "twaddling",\n \"popularity\": 13191\n },\n {\n \"tag\": "tetartoconid",\n \"popularity\": 13173\n },\n {\n \"tag\": "audiophile",\n \"popularity\": 13155\n },\n {\n \"tag\": "fustigate",\n \"popularity\": 13137\n },\n {\n \"tag\": "Sorbian cacophonia",\n \"popularity\": 13119\n },\n {\n \"tag\": "fondish",\n \"popularity\": 13101\n },\n {\n \"tag\": "endomastoiditis",\n \"popularity\": 13084\n },\n {\n \"tag\": "sniptious",\n \"popularity\": 13066\n },\n {\n \"tag\": "glochidiate",\n \"popularity\": 13048\n },\n {\n \"tag\": "polycarboxylic",\n \"popularity\": 13030\n },\n {\n \"tag\": "stamp",\n \"popularity\": 13012\n },\n {\n \"tag\": "tritonymph endotoxoid",\n \"popularity\": 12995\n },\n {\n \"tag\": "wolfskin",\n \"popularity\": 12977\n },\n {\n \"tag\": "oncosimeter",\n \"popularity\": 12959\n },\n {\n \"tag\": "outward",\n \"popularity\": 12942\n },\n {\n \"tag\": "circumscribed",\n \"popularity\": 12924\n },\n {\n \"tag\": "autohemolytic",\n \"popularity\": 12907\n },\n {\n \"tag\": "isorhamnose",\n \"popularity\": 12889\n },\n {\n \"tag\": "monarchomachic",\n \"popularity\": 12872\n },\n {\n \"tag\": "phaenomenon",\n \"popularity\": 12855\n },\n {\n \"tag\": "angiopressure",\n \"popularity\": 12837\n },\n {\n \"tag\": "similarize",\n \"popularity\": 12820\n },\n {\n \"tag\": "unseeable",\n \"popularity\": 12803\n },\n {\n \"tag\": "Toryize",\n \"popularity\": 12785\n },\n {\n \"tag\": "fruitling",\n \"popularity\": 12768\n },\n {\n \"tag\": "axle",\n \"popularity\": 12751\n },\n {\n \"tag\": "priestal cocked",\n \"popularity\": 12734\n },\n {\n \"tag\": "serotoxin",\n \"popularity\": 12717\n },\n {\n \"tag\": "unmovably",\n \"popularity\": 12700\n },\n {\n \"tag\": "darbha",\n \"popularity\": 12683\n },\n {\n \"tag\": "Mongolize",\n \"popularity\": 12666\n },\n {\n \"tag\": "clusteringly",\n \"popularity\": 12649\n },\n {\n \"tag\": "tendence",\n \"popularity\": 12632\n },\n {\n \"tag\": "foziness",\n \"popularity\": 12615\n },\n {\n \"tag\": "brickkiln lithify",\n \"popularity\": 12598\n },\n {\n \"tag\": "unpriest",\n \"popularity\": 12581\n },\n {\n \"tag\": "convincer",\n \"popularity\": 12564\n },\n {\n \"tag\": "mornlike",\n \"popularity\": 12548\n },\n {\n \"tag\": "overaddiction ostentatiousness",\n \"popularity\": 12531\n },\n {\n \"tag\": "diffusively moccasin pendom",\n \"popularity\": 12514\n },\n {\n \"tag\": "boose",\n \"popularity\": 12498\n },\n {\n \"tag\": "myonosus",\n \"popularity\": 12481\n },\n {\n \"tag\": "handsome",\n \"popularity\": 12464\n },\n {\n \"tag\": "paroxysmic",\n \"popularity\": 12448\n },\n {\n \"tag\": "Ulidian",\n \"popularity\": 12431\n },\n {\n \"tag\": "heartache",\n \"popularity\": 12415\n },\n {\n \"tag\": "torporize",\n \"popularity\": 12398\n },\n {\n \"tag\": "hippish",\n \"popularity\": 12382\n },\n {\n \"tag\": "stigmal militation",\n \"popularity\": 12366\n },\n {\n \"tag\": "matmaker",\n \"popularity\": 12349\n },\n {\n \"tag\": "marantaceous bivoluminous",\n \"popularity\": 12333\n },\n {\n \"tag\": "Uraniidae",\n \"popularity\": 12317\n },\n {\n \"tag\": "risper",\n \"popularity\": 12301\n },\n {\n \"tag\": "tintinnabulation",\n \"popularity\": 12284\n },\n {\n \"tag\": "tributorian",\n \"popularity\": 12268\n },\n {\n \"tag\": "ashamedly",\n \"popularity\": 12252\n },\n {\n \"tag\": "Macrourus",\n \"popularity\": 12236\n },\n {\n \"tag\": "Chora",\n \"popularity\": 12220\n },\n {\n \"tag\": "caul",\n \"popularity\": 12204\n },\n {\n \"tag\": "exsector",\n \"popularity\": 12188\n },\n {\n \"tag\": "acutish",\n \"popularity\": 12172\n },\n {\n \"tag\": "amphichrome",\n \"popularity\": 12156\n },\n {\n \"tag\": "guarder",\n \"popularity\": 12140\n },\n {\n \"tag\": "sculpturally",\n \"popularity\": 12124\n },\n {\n \"tag\": "benightmare",\n \"popularity\": 12108\n },\n {\n \"tag\": "chucky",\n \"popularity\": 12093\n },\n {\n \"tag\": "Venetian",\n \"popularity\": 12077\n },\n {\n \"tag\": "autotheater",\n \"popularity\": 12061\n },\n {\n \"tag\": "planarioid",\n \"popularity\": 12045\n },\n {\n \"tag\": "handkerchiefful",\n \"popularity\": 12030\n },\n {\n \"tag\": "fuliginousness potentize",\n \"popularity\": 12014\n },\n {\n \"tag\": "pantheum",\n \"popularity\": 11998\n },\n {\n \"tag\": "heavyweight",\n \"popularity\": 11983\n },\n {\n \"tag\": "unbrick",\n \"popularity\": 11967\n },\n {\n \"tag\": "duomachy",\n \"popularity\": 11952\n },\n {\n \"tag\": "polyphyodont",\n \"popularity\": 11936\n },\n {\n \"tag\": "hibernacle",\n \"popularity\": 11921\n },\n {\n \"tag\": "undistend",\n \"popularity\": 11905\n },\n {\n \"tag\": "hystericky",\n \"popularity\": 11890\n },\n {\n \"tag\": "paleolimnology",\n \"popularity\": 11875\n },\n {\n \"tag\": "cedarware",\n \"popularity\": 11859\n },\n {\n \"tag\": "overwrested",\n \"popularity\": 11844\n },\n {\n \"tag\": "Syriacism",\n \"popularity\": 11829\n },\n {\n \"tag\": "pretan",\n \"popularity\": 11813\n },\n {\n \"tag\": "formant",\n \"popularity\": 11798\n },\n {\n \"tag\": "pharmacopoeist Fedia",\n \"popularity\": 11783\n },\n {\n \"tag\": "exorcist eerisome",\n \"popularity\": 11768\n },\n {\n \"tag\": "separation",\n \"popularity\": 11753\n },\n {\n \"tag\": "infancy",\n \"popularity\": 11738\n },\n {\n \"tag\": "ecrasite",\n \"popularity\": 11723\n },\n {\n \"tag\": "propolize",\n \"popularity\": 11708\n },\n {\n \"tag\": "uncram phyllin",\n \"popularity\": 11693\n },\n {\n \"tag\": "thymopathy",\n \"popularity\": 11678\n },\n {\n \"tag\": "omniscient",\n \"popularity\": 11663\n },\n {\n \"tag\": "coussinet hazer",\n \"popularity\": 11648\n },\n {\n \"tag\": "contributiveness",\n \"popularity\": 11633\n },\n {\n \"tag\": "septifluous",\n \"popularity\": 11618\n },\n {\n \"tag\": "halfness",\n \"popularity\": 11603\n },\n {\n \"tag\": "tocher",\n \"popularity\": 11589\n },\n {\n \"tag\": "monotonist",\n \"popularity\": 11574\n },\n {\n \"tag\": "headchair",\n \"popularity\": 11559\n },\n {\n \"tag\": "everywhence",\n \"popularity\": 11544\n },\n {\n \"tag\": "gerate",\n \"popularity\": 11530\n },\n {\n \"tag\": "unrepellent",\n \"popularity\": 11515\n },\n {\n \"tag\": "inidoneous",\n \"popularity\": 11500\n },\n {\n \"tag\": "Rifi",\n \"popularity\": 11486\n },\n {\n \"tag\": "unstop",\n \"popularity\": 11471\n },\n {\n \"tag\": "conformer",\n \"popularity\": 11457\n },\n {\n \"tag\": "vivisectionally",\n \"popularity\": 11442\n },\n {\n \"tag\": "nonfinishing",\n \"popularity\": 11428\n },\n {\n \"tag\": "tyranness",\n \"popularity\": 11413\n },\n {\n \"tag\": "shepherdage havoc",\n \"popularity\": 11399\n },\n {\n \"tag\": "coronale",\n \"popularity\": 11385\n },\n {\n \"tag\": "airmarker",\n \"popularity\": 11370\n },\n {\n \"tag\": "subpanel",\n \"popularity\": 11356\n },\n {\n \"tag\": "conciliation",\n \"popularity\": 11342\n },\n {\n \"tag\": "supergun",\n \"popularity\": 11327\n },\n {\n \"tag\": "photoheliography",\n \"popularity\": 11313\n },\n {\n \"tag\": "cacosmia",\n \"popularity\": 11299\n },\n {\n \"tag\": "caressant",\n \"popularity\": 11285\n },\n {\n \"tag\": "swivet",\n \"popularity\": 11270\n },\n {\n \"tag\": "coddler",\n \"popularity\": 11256\n },\n {\n \"tag\": "rakehellish",\n \"popularity\": 11242\n },\n {\n \"tag\": "recohabitation",\n \"popularity\": 11228\n },\n {\n \"tag\": "postillator",\n \"popularity\": 11214\n },\n {\n \"tag\": "receipt",\n \"popularity\": 11200\n },\n {\n \"tag\": "nonconformistical",\n \"popularity\": 11186\n },\n {\n \"tag\": "unglorified",\n \"popularity\": 11172\n },\n {\n \"tag\": "unordinariness",\n \"popularity\": 11158\n },\n {\n \"tag\": "tetrahydroxy",\n \"popularity\": 11144\n },\n {\n \"tag\": "haploperistomic corporeity",\n \"popularity\": 11130\n },\n {\n \"tag\": "varical",\n \"popularity\": 11117\n },\n {\n \"tag\": "pilferment",\n \"popularity\": 11103\n },\n {\n \"tag\": "reverentially playcraft",\n \"popularity\": 11089\n },\n {\n \"tag\": "unretentive",\n \"popularity\": 11075\n },\n {\n \"tag\": "readiness",\n \"popularity\": 11061\n },\n {\n \"tag\": "thermomagnetism",\n \"popularity\": 11048\n },\n {\n \"tag\": "spotless",\n \"popularity\": 11034\n },\n {\n \"tag\": "semishrubby",\n \"popularity\": 11020\n },\n {\n \"tag\": "metrotomy",\n \"popularity\": 11007\n },\n {\n \"tag\": "hocker",\n \"popularity\": 10993\n },\n {\n \"tag\": "anecdotal",\n \"popularity\": 10979\n },\n {\n \"tag\": "tetrabelodont",\n \"popularity\": 10966\n },\n {\n \"tag\": "Ramillied",\n \"popularity\": 10952\n },\n {\n \"tag\": "sympatheticism",\n \"popularity\": 10939\n },\n {\n \"tag\": "kiskatom",\n \"popularity\": 10925\n },\n {\n \"tag\": "concyclically",\n \"popularity\": 10912\n },\n {\n \"tag\": "tunicless",\n \"popularity\": 10899\n },\n {\n \"tag\": "formalistic",\n \"popularity\": 10885\n },\n {\n \"tag\": "thermacogenesis",\n \"popularity\": 10872\n },\n {\n \"tag\": "multimotored",\n \"popularity\": 10858\n },\n {\n \"tag\": "inversive",\n \"popularity\": 10845\n },\n {\n \"tag\": "Jatki",\n \"popularity\": 10832\n },\n {\n \"tag\": "highest",\n \"popularity\": 10818\n },\n {\n \"tag\": "rubidic",\n \"popularity\": 10805\n },\n {\n \"tag\": "acranial",\n \"popularity\": 10792\n },\n {\n \"tag\": "pulvinulus",\n \"popularity\": 10779\n },\n {\n \"tag\": "nattiness",\n \"popularity\": 10766\n },\n {\n \"tag\": "antisimoniacal",\n \"popularity\": 10752\n },\n {\n \"tag\": "tetanize",\n \"popularity\": 10739\n },\n {\n \"tag\": "spectrophobia",\n \"popularity\": 10726\n },\n {\n \"tag\": "monopolitical",\n \"popularity\": 10713\n },\n {\n \"tag\": "teallite",\n \"popularity\": 10700\n },\n {\n \"tag\": "alicyclic interpellator",\n \"popularity\": 10687\n },\n {\n \"tag\": "nonsynthesized",\n \"popularity\": 10674\n },\n {\n \"tag\": "wheelwrighting",\n \"popularity\": 10661\n },\n {\n \"tag\": "pelliculate",\n \"popularity\": 10648\n },\n {\n \"tag\": "Euphyllopoda",\n \"popularity\": 10635\n },\n {\n \"tag\": "graver",\n \"popularity\": 10622\n },\n {\n \"tag\": "automorph",\n \"popularity\": 10609\n },\n {\n \"tag\": "underhanded",\n \"popularity\": 10597\n },\n {\n \"tag\": "causal",\n \"popularity\": 10584\n },\n {\n \"tag\": "odoom",\n \"popularity\": 10571\n },\n {\n \"tag\": "apodictical",\n \"popularity\": 10558\n },\n {\n \"tag\": "foundery",\n \"popularity\": 10545\n },\n {\n \"tag\": "unneighbored",\n \"popularity\": 10533\n },\n {\n \"tag\": "woolshearing",\n \"popularity\": 10520\n },\n {\n \"tag\": "boschveld",\n \"popularity\": 10507\n },\n {\n \"tag\": "unhardened lipopod",\n \"popularity\": 10495\n },\n {\n \"tag\": "unenriching",\n \"popularity\": 10482\n },\n {\n \"tag\": "spak",\n \"popularity\": 10469\n },\n {\n \"tag\": "yogasana",\n \"popularity\": 10457\n },\n {\n \"tag\": "depoetize",\n \"popularity\": 10444\n },\n {\n \"tag\": "parousiamania",\n \"popularity\": 10432\n },\n {\n \"tag\": "longlegs",\n \"popularity\": 10419\n },\n {\n \"tag\": "gelatinizability",\n \"popularity\": 10407\n },\n {\n \"tag\": "edeology",\n \"popularity\": 10394\n },\n {\n \"tag\": "sodwork",\n \"popularity\": 10382\n },\n {\n \"tag\": "somnambule",\n \"popularity\": 10369\n },\n {\n \"tag\": "antiquing",\n \"popularity\": 10357\n },\n {\n \"tag\": "intaker",\n \"popularity\": 10344\n },\n {\n \"tag\": "Gerberia",\n \"popularity\": 10332\n },\n {\n \"tag\": "preadmit",\n \"popularity\": 10320\n },\n {\n \"tag\": "bullhorn",\n \"popularity\": 10307\n },\n {\n \"tag\": "sororal",\n \"popularity\": 10295\n },\n {\n \"tag\": "phaeophyceous",\n \"popularity\": 10283\n },\n {\n \"tag\": "omphalopsychite",\n \"popularity\": 10271\n },\n {\n \"tag\": "substantious",\n \"popularity\": 10258\n },\n {\n \"tag\": "undemonstratively",\n \"popularity\": 10246\n },\n {\n \"tag\": "corallike blackit",\n \"popularity\": 10234\n },\n {\n \"tag\": "amoebous",\n \"popularity\": 10222\n },\n {\n \"tag\": "Polypodium",\n \"popularity\": 10210\n },\n {\n \"tag\": "blodite",\n \"popularity\": 10198\n },\n {\n \"tag\": "hordarian",\n \"popularity\": 10186\n },\n {\n \"tag\": "nonmoral",\n \"popularity\": 10174\n },\n {\n \"tag\": "dredgeful",\n \"popularity\": 10162\n },\n {\n \"tag\": "nourishingly",\n \"popularity\": 10150\n },\n {\n \"tag\": "seamy",\n \"popularity\": 10138\n },\n {\n \"tag\": "vara",\n \"popularity\": 10126\n },\n {\n \"tag\": "incorruptibleness",\n \"popularity\": 10114\n },\n {\n \"tag\": "manipulator",\n \"popularity\": 10102\n },\n {\n \"tag\": "chromodiascope uncountably",\n \"popularity\": 10090\n },\n {\n \"tag\": "typhemia",\n \"popularity\": 10078\n },\n {\n \"tag\": "Smalcaldic",\n \"popularity\": 10066\n },\n {\n \"tag\": "precontrive",\n \"popularity\": 10054\n },\n {\n \"tag\": "sowarry",\n \"popularity\": 10042\n },\n {\n \"tag\": "monopodic",\n \"popularity\": 10031\n },\n {\n \"tag\": "recodify",\n \"popularity\": 10019\n },\n {\n \"tag\": "phosphowolframic rimple",\n \"popularity\": 10007\n },\n {\n \"tag\": "triconch",\n \"popularity\": 9995\n },\n {\n \"tag\": "pycnodontoid",\n \"popularity\": 9984\n },\n {\n \"tag\": "bradyspermatism",\n \"popularity\": 9972\n },\n {\n \"tag\": "extensionist",\n \"popularity\": 9960\n },\n {\n \"tag\": "characterize",\n \"popularity\": 9949\n },\n {\n \"tag\": "anatreptic proteolytic",\n \"popularity\": 9937\n },\n {\n \"tag\": "waterboard",\n \"popularity\": 9925\n },\n {\n \"tag\": "allopathically",\n \"popularity\": 9914\n },\n {\n \"tag\": "arithmetician",\n \"popularity\": 9902\n },\n {\n \"tag\": "subsist",\n \"popularity\": 9891\n },\n {\n \"tag\": "Islamitish",\n \"popularity\": 9879\n },\n {\n \"tag\": "biddy",\n \"popularity\": 9868\n },\n {\n \"tag\": "reverberation",\n \"popularity\": 9856\n },\n {\n \"tag\": "Zaporogue",\n \"popularity\": 9845\n },\n {\n \"tag\": "soapberry",\n \"popularity\": 9833\n },\n {\n \"tag\": "physiognomics",\n \"popularity\": 9822\n },\n {\n \"tag\": "hospitalization",\n \"popularity\": 9810\n },\n {\n \"tag\": "dissembler",\n \"popularity\": 9799\n },\n {\n \"tag\": "festinate",\n \"popularity\": 9788\n },\n {\n \"tag\": "angiectopia",\n \"popularity\": 9776\n },\n {\n \"tag\": "Pulicidae",\n \"popularity\": 9765\n },\n {\n \"tag\": "beslimer",\n \"popularity\": 9754\n },\n {\n \"tag\": "nontreaty",\n \"popularity\": 9743\n },\n {\n \"tag\": "unhaggled",\n \"popularity\": 9731\n },\n {\n \"tag\": "catfall",\n \"popularity\": 9720\n },\n {\n \"tag\": "stola",\n \"popularity\": 9709\n },\n {\n \"tag\": "pataco",\n \"popularity\": 9698\n },\n {\n \"tag\": "ontologistic",\n \"popularity\": 9686\n },\n {\n \"tag\": "aerosphere",\n \"popularity\": 9675\n },\n {\n \"tag\": "deobstruent",\n \"popularity\": 9664\n },\n {\n \"tag\": "threepence",\n \"popularity\": 9653\n },\n {\n \"tag\": "cyprinoid",\n \"popularity\": 9642\n },\n {\n \"tag\": "overbank",\n \"popularity\": 9631\n },\n {\n \"tag\": "prostyle",\n \"popularity\": 9620\n },\n {\n \"tag\": "photoactivation",\n \"popularity\": 9609\n },\n {\n \"tag\": "homothetic",\n \"popularity\": 9598\n },\n {\n \"tag\": "roguedom",\n \"popularity\": 9587\n },\n {\n \"tag\": "underschool",\n \"popularity\": 9576\n },\n {\n \"tag\": "tractility",\n \"popularity\": 9565\n },\n {\n \"tag\": "gardenin",\n \"popularity\": 9554\n },\n {\n \"tag\": "Micromastictora",\n \"popularity\": 9543\n },\n {\n \"tag\": "gossypine",\n \"popularity\": 9532\n },\n {\n \"tag\": "amylodyspepsia",\n \"popularity\": 9521\n },\n {\n \"tag\": "Luciana",\n \"popularity\": 9510\n },\n {\n \"tag\": "meetly nonfisherman",\n \"popularity\": 9500\n },\n {\n \"tag\": "backhanded",\n \"popularity\": 9489\n },\n {\n \"tag\": "decrustation",\n \"popularity\": 9478\n },\n {\n \"tag\": "pinrail",\n \"popularity\": 9467\n },\n {\n \"tag\": "Mahori",\n \"popularity\": 9456\n },\n {\n \"tag\": "unsizable",\n \"popularity\": 9446\n },\n {\n \"tag\": "disawa",\n \"popularity\": 9435\n },\n {\n \"tag\": "launderability inconsidered",\n \"popularity\": 9424\n },\n {\n \"tag\": "unclassical",\n \"popularity\": 9414\n },\n {\n \"tag\": "inobtrusiveness",\n \"popularity\": 9403\n },\n {\n \"tag\": "sialogenous",\n \"popularity\": 9392\n },\n {\n \"tag\": "sulphonamide",\n \"popularity\": 9382\n },\n {\n \"tag\": "diluvion",\n \"popularity\": 9371\n },\n {\n \"tag\": "deuteranope",\n \"popularity\": 9361\n },\n {\n \"tag\": "addition",\n \"popularity\": 9350\n },\n {\n \"tag\": "bockeret",\n \"popularity\": 9339\n },\n {\n \"tag\": "unidentified",\n \"popularity\": 9329\n },\n {\n \"tag\": "caryatic",\n \"popularity\": 9318\n },\n {\n \"tag\": "misattribution",\n \"popularity\": 9308\n },\n {\n \"tag\": "outray",\n \"popularity\": 9297\n },\n {\n \"tag\": "areometrical",\n \"popularity\": 9287\n },\n {\n \"tag\": "antilogism",\n \"popularity\": 9277\n },\n {\n \"tag\": "inadjustable",\n \"popularity\": 9266\n },\n {\n \"tag\": "byssus",\n \"popularity\": 9256\n },\n {\n \"tag\": "trun",\n \"popularity\": 9245\n },\n {\n \"tag\": "thereology",\n \"popularity\": 9235\n },\n {\n \"tag\": "extort",\n \"popularity\": 9225\n },\n {\n \"tag\": "bumpkin",\n \"popularity\": 9214\n },\n {\n \"tag\": "sulphobenzide",\n \"popularity\": 9204\n },\n {\n \"tag\": "hydrogeology",\n \"popularity\": 9194\n },\n {\n \"tag\": "nidulariaceous",\n \"popularity\": 9183\n },\n {\n \"tag\": "propodiale",\n \"popularity\": 9173\n },\n {\n \"tag\": "fierily",\n \"popularity\": 9163\n },\n {\n \"tag\": "aerotonometry",\n \"popularity\": 9153\n },\n {\n \"tag\": "pelobatid oversuperstitious",\n \"popularity\": 9142\n },\n {\n \"tag\": "restringent",\n \"popularity\": 9132\n },\n {\n \"tag\": "tetrapodic",\n \"popularity\": 9122\n },\n {\n \"tag\": "heroicness Vendidad",\n \"popularity\": 9112\n },\n {\n \"tag\": "Sphingurus",\n \"popularity\": 9102\n },\n {\n \"tag\": "sclerote",\n \"popularity\": 9092\n },\n {\n \"tag\": "unkeyed",\n \"popularity\": 9082\n },\n {\n \"tag\": "superparliamentary",\n \"popularity\": 9072\n },\n {\n \"tag\": "hetericism",\n \"popularity\": 9061\n },\n {\n \"tag\": "hucklebone",\n \"popularity\": 9051\n },\n {\n \"tag\": "yojan",\n \"popularity\": 9041\n },\n {\n \"tag\": "bossed",\n \"popularity\": 9031\n },\n {\n \"tag\": "spiderwork",\n \"popularity\": 9021\n },\n {\n \"tag\": "millfeed dullery",\n \"popularity\": 9011\n },\n {\n \"tag\": "adnoun",\n \"popularity\": 9001\n },\n {\n \"tag\": "mesometric",\n \"popularity\": 8992\n },\n {\n \"tag\": "doublehandedness",\n \"popularity\": 8982\n },\n {\n \"tag\": "suppurant",\n \"popularity\": 8972\n },\n {\n \"tag\": "Berlinize",\n \"popularity\": 8962\n },\n {\n \"tag\": "sontag",\n \"popularity\": 8952\n },\n {\n \"tag\": "biplane",\n \"popularity\": 8942\n },\n {\n \"tag\": "insula",\n \"popularity\": 8932\n },\n {\n \"tag\": "unbrand",\n \"popularity\": 8922\n },\n {\n \"tag\": "Basilosaurus",\n \"popularity\": 8913\n },\n {\n \"tag\": "prenomination",\n \"popularity\": 8903\n },\n {\n \"tag\": "untextual",\n \"popularity\": 8893\n },\n {\n \"tag\": "coleslaw",\n \"popularity\": 8883\n },\n {\n \"tag\": "langsyne",\n \"popularity\": 8874\n },\n {\n \"tag\": "impede",\n \"popularity\": 8864\n },\n {\n \"tag\": "irrigator",\n \"popularity\": 8854\n },\n {\n \"tag\": "deflocculation",\n \"popularity\": 8844\n },\n {\n \"tag\": "narghile",\n \"popularity\": 8835\n },\n {\n \"tag\": "unguardedly ebenaceous",\n \"popularity\": 8825\n },\n {\n \"tag\": "conversantly subocular",\n \"popularity\": 8815\n },\n {\n \"tag\": "hydroponic",\n \"popularity\": 8806\n },\n {\n \"tag\": "anthropopsychism",\n \"popularity\": 8796\n },\n {\n \"tag\": "panoptic",\n \"popularity\": 8787\n },\n {\n \"tag\": "insufferable",\n \"popularity\": 8777\n },\n {\n \"tag\": "salema",\n \"popularity\": 8768\n },\n {\n \"tag\": "Myriapoda",\n \"popularity\": 8758\n },\n {\n \"tag\": "regarrison",\n \"popularity\": 8748\n },\n {\n \"tag\": "overlearned",\n \"popularity\": 8739\n },\n {\n \"tag\": "ultraroyalist conventical bureaucratical",\n \"popularity\": 8729\n },\n {\n \"tag\": "epicaridan",\n \"popularity\": 8720\n },\n {\n \"tag\": "poetastress",\n \"popularity\": 8711\n },\n {\n \"tag\": "monophthalmus",\n \"popularity\": 8701\n },\n {\n \"tag\": "simnel",\n \"popularity\": 8692\n },\n {\n \"tag\": "compotor",\n \"popularity\": 8682\n },\n {\n \"tag\": "hydrolase",\n \"popularity\": 8673\n },\n {\n \"tag\": "attemptless",\n \"popularity\": 8663\n },\n {\n \"tag\": "visceroptosis",\n \"popularity\": 8654\n },\n {\n \"tag\": "unpreparedly",\n \"popularity\": 8645\n },\n {\n \"tag\": "mastage",\n \"popularity\": 8635\n },\n {\n \"tag\": "preinfluence",\n \"popularity\": 8626\n },\n {\n \"tag\": "Siwan",\n \"popularity\": 8617\n },\n {\n \"tag\": "ceratotheca belvedere",\n \"popularity\": 8607\n },\n {\n \"tag\": "disenablement",\n \"popularity\": 8598\n },\n {\n \"tag\": "nine",\n \"popularity\": 8589\n },\n {\n \"tag\": "spellingdown abridgment",\n \"popularity\": 8580\n },\n {\n \"tag\": "twilightless",\n \"popularity\": 8571\n },\n {\n \"tag\": "overflow",\n \"popularity\": 8561\n },\n {\n \"tag\": "mismeasurement",\n \"popularity\": 8552\n },\n {\n \"tag\": "nawabship",\n \"popularity\": 8543\n },\n {\n \"tag\": "Phrynosoma",\n \"popularity\": 8534\n },\n {\n \"tag\": "unanticipatingly",\n \"popularity\": 8525\n },\n {\n \"tag\": "blankite",\n \"popularity\": 8516\n },\n {\n \"tag\": "role",\n \"popularity\": 8506\n },\n {\n \"tag\": "peperine edelweiss",\n \"popularity\": 8497\n },\n {\n \"tag\": "unhysterical",\n \"popularity\": 8488\n },\n {\n \"tag\": "attentiveness",\n \"popularity\": 8479\n },\n {\n \"tag\": "scintillant",\n \"popularity\": 8470\n },\n {\n \"tag\": "stenostomatous",\n \"popularity\": 8461\n },\n {\n \"tag\": "pectinite",\n \"popularity\": 8452\n },\n {\n \"tag\": "herring",\n \"popularity\": 8443\n },\n {\n \"tag\": "interroom",\n \"popularity\": 8434\n },\n {\n \"tag\": "laccol",\n \"popularity\": 8425\n },\n {\n \"tag\": "unpartably kylite",\n \"popularity\": 8416\n },\n {\n \"tag\": "spirivalve",\n \"popularity\": 8407\n },\n {\n \"tag\": "hoosegow",\n \"popularity\": 8398\n },\n {\n \"tag\": "doat",\n \"popularity\": 8389\n },\n {\n \"tag\": "amphibian",\n \"popularity\": 8380\n },\n {\n \"tag\": "exposit",\n \"popularity\": 8371\n },\n {\n \"tag\": "canopy",\n \"popularity\": 8363\n },\n {\n \"tag\": "houndlike",\n \"popularity\": 8354\n },\n {\n \"tag\": "spikebill",\n \"popularity\": 8345\n },\n {\n \"tag\": "wiseacre pyrotechnic",\n \"popularity\": 8336\n },\n {\n \"tag\": "confessingly woodman",\n \"popularity\": 8327\n },\n {\n \"tag\": "overside",\n \"popularity\": 8318\n },\n {\n \"tag\": "oftwhiles",\n \"popularity\": 8310\n },\n {\n \"tag\": "Musophagidae",\n \"popularity\": 8301\n },\n {\n \"tag\": "slumberer",\n \"popularity\": 8292\n },\n {\n \"tag\": "leiotrichy",\n \"popularity\": 8283\n },\n {\n \"tag\": "Mantispidae",\n \"popularity\": 8275\n },\n {\n \"tag\": "perceptually",\n \"popularity\": 8266\n },\n {\n \"tag\": "biller",\n \"popularity\": 8257\n },\n {\n \"tag\": "eudaemonical",\n \"popularity\": 8249\n },\n {\n \"tag\": "underfiend",\n \"popularity\": 8240\n },\n {\n \"tag\": "impartible",\n \"popularity\": 8231\n },\n {\n \"tag\": "saxicavous",\n \"popularity\": 8223\n },\n {\n \"tag\": "yapster",\n \"popularity\": 8214\n },\n {\n \"tag\": "aliseptal",\n \"popularity\": 8205\n },\n {\n \"tag\": "omniparient",\n \"popularity\": 8197\n },\n {\n \"tag\": "nishiki",\n \"popularity\": 8188\n },\n {\n \"tag\": "yuzluk",\n \"popularity\": 8180\n },\n {\n \"tag\": "solderer",\n \"popularity\": 8171\n },\n {\n \"tag\": "Pinna",\n \"popularity\": 8162\n },\n {\n \"tag\": "reinterfere",\n \"popularity\": 8154\n },\n {\n \"tag\": "superepic",\n \"popularity\": 8145\n },\n {\n \"tag\": "ronquil",\n \"popularity\": 8137\n },\n {\n \"tag\": "bratstvo",\n \"popularity\": 8128\n },\n {\n \"tag\": "Thea",\n \"popularity\": 8120\n },\n {\n \"tag\": "hermaphroditical",\n \"popularity\": 8111\n },\n {\n \"tag\": "enlief",\n \"popularity\": 8103\n },\n {\n \"tag\": "Jesuate",\n \"popularity\": 8095\n },\n {\n \"tag\": "gaysome",\n \"popularity\": 8086\n },\n {\n \"tag\": "iliohypogastric",\n \"popularity\": 8078\n },\n {\n \"tag\": "regardance",\n \"popularity\": 8069\n },\n {\n \"tag\": "cumulately",\n \"popularity\": 8061\n },\n {\n \"tag\": "haustorial nucleolocentrosome",\n \"popularity\": 8053\n },\n {\n \"tag\": "cosmocrat",\n \"popularity\": 8044\n },\n {\n \"tag\": "onyxitis",\n \"popularity\": 8036\n },\n {\n \"tag\": "Cabinda",\n \"popularity\": 8028\n },\n {\n \"tag\": "coresort",\n \"popularity\": 8019\n },\n {\n \"tag\": "drusy preformant",\n \"popularity\": 8011\n },\n {\n \"tag\": "piningly",\n \"popularity\": 8003\n },\n {\n \"tag\": "bootlessly",\n \"popularity\": 7994\n },\n {\n \"tag\": "talari",\n \"popularity\": 7986\n },\n {\n \"tag\": "amidoacetal",\n \"popularity\": 7978\n },\n {\n \"tag\": "pschent",\n \"popularity\": 7970\n },\n {\n \"tag\": "consumptional scarer titivate",\n \"popularity\": 7962\n },\n {\n \"tag\": "Anserinae",\n \"popularity\": 7953\n },\n {\n \"tag\": "flaunter",\n \"popularity\": 7945\n },\n {\n \"tag\": "reindeer",\n \"popularity\": 7937\n },\n {\n \"tag\": "disparage",\n \"popularity\": 7929\n },\n {\n \"tag\": "superheat",\n \"popularity\": 7921\n },\n {\n \"tag\": "Chromatium",\n \"popularity\": 7912\n },\n {\n \"tag\": "Tina",\n \"popularity\": 7904\n },\n {\n \"tag\": "rededicatory",\n \"popularity\": 7896\n },\n {\n \"tag\": "nontransient",\n \"popularity\": 7888\n },\n {\n \"tag\": "Phocaean brinkless",\n \"popularity\": 7880\n },\n {\n \"tag\": "ventriculose",\n \"popularity\": 7872\n },\n {\n \"tag\": "upplough",\n \"popularity\": 7864\n },\n {\n \"tag\": "succorless",\n \"popularity\": 7856\n },\n {\n \"tag\": "hayrake",\n \"popularity\": 7848\n },\n {\n \"tag\": "merriness amorphia",\n \"popularity\": 7840\n },\n {\n \"tag\": "merycism",\n \"popularity\": 7832\n },\n {\n \"tag\": "checkrow",\n \"popularity\": 7824\n },\n {\n \"tag\": "scry",\n \"popularity\": 7816\n },\n {\n \"tag\": "obvolve",\n \"popularity\": 7808\n },\n {\n \"tag\": "orchard",\n \"popularity\": 7800\n },\n {\n \"tag\": "isomerize",\n \"popularity\": 7792\n },\n {\n \"tag\": "competitrix",\n \"popularity\": 7784\n },\n {\n \"tag\": "unbannered",\n \"popularity\": 7776\n },\n {\n \"tag\": "undoctrined",\n \"popularity\": 7768\n },\n {\n \"tag\": "theologian",\n \"popularity\": 7760\n },\n {\n \"tag\": "nebby",\n \"popularity\": 7752\n },\n {\n \"tag\": "Cardiazol",\n \"popularity\": 7745\n },\n {\n \"tag\": "phagedenic",\n \"popularity\": 7737\n },\n {\n \"tag\": "nostalgic",\n \"popularity\": 7729\n },\n {\n \"tag\": "orthodoxy",\n \"popularity\": 7721\n },\n {\n \"tag\": "oversanguine",\n \"popularity\": 7713\n },\n {\n \"tag\": "lish",\n \"popularity\": 7705\n },\n {\n \"tag\": "ketogenic",\n \"popularity\": 7698\n },\n {\n \"tag\": "syndicalize",\n \"popularity\": 7690\n },\n {\n \"tag\": "leeftail",\n \"popularity\": 7682\n },\n {\n \"tag\": "bulbomedullary",\n \"popularity\": 7674\n },\n {\n \"tag\": "reletter",\n \"popularity\": 7667\n },\n {\n \"tag\": "bitterly",\n \"popularity\": 7659\n },\n {\n \"tag\": "participatory",\n \"popularity\": 7651\n },\n {\n \"tag\": "baldberry",\n \"popularity\": 7643\n },\n {\n \"tag\": "prowaterpower",\n \"popularity\": 7636\n },\n {\n \"tag\": "lexicographical",\n \"popularity\": 7628\n },\n {\n \"tag\": "Anisodactyli",\n \"popularity\": 7620\n },\n {\n \"tag\": "amphipodous",\n \"popularity\": 7613\n },\n {\n \"tag\": "triglandular",\n \"popularity\": 7605\n },\n {\n \"tag\": "xanthopsin",\n \"popularity\": 7597\n },\n {\n \"tag\": "indefinitude",\n \"popularity\": 7590\n },\n {\n \"tag\": "bookworm",\n \"popularity\": 7582\n },\n {\n \"tag\": "suffocative",\n \"popularity\": 7574\n },\n {\n \"tag\": "uncongested tyrant",\n \"popularity\": 7567\n },\n {\n \"tag\": "alow harmoniously Pamir",\n \"popularity\": 7559\n },\n {\n \"tag\": "monander",\n \"popularity\": 7552\n },\n {\n \"tag\": "bagatelle",\n \"popularity\": 7544\n },\n {\n \"tag\": "membranology",\n \"popularity\": 7537\n },\n {\n \"tag\": "parturifacient",\n \"popularity\": 7529\n },\n {\n \"tag\": "excitovascular",\n \"popularity\": 7522\n },\n {\n \"tag\": "homopolar",\n \"popularity\": 7514\n },\n {\n \"tag\": "phobiac",\n \"popularity\": 7507\n },\n {\n \"tag\": "clype",\n \"popularity\": 7499\n },\n {\n \"tag\": "unsubversive",\n \"popularity\": 7492\n },\n {\n \"tag\": "bostrychoidal scorpionwort",\n \"popularity\": 7484\n },\n {\n \"tag\": "biliteralism",\n \"popularity\": 7477\n },\n {\n \"tag\": "dentatocostate",\n \"popularity\": 7469\n },\n {\n \"tag\": "Pici",\n \"popularity\": 7462\n },\n {\n \"tag\": "sideritic",\n \"popularity\": 7454\n },\n {\n \"tag\": "syntaxis",\n \"popularity\": 7447\n },\n {\n \"tag\": "ingest",\n \"popularity\": 7440\n },\n {\n \"tag\": "rigmarolish",\n \"popularity\": 7432\n },\n {\n \"tag\": "ocreaceous",\n \"popularity\": 7425\n },\n {\n \"tag\": "hyperbrachyskelic",\n \"popularity\": 7418\n },\n {\n \"tag\": "basophobia",\n \"popularity\": 7410\n },\n {\n \"tag\": "substantialness",\n \"popularity\": 7403\n },\n {\n \"tag\": "agglutinoid",\n \"popularity\": 7396\n },\n {\n \"tag\": "longleaf",\n \"popularity\": 7388\n },\n {\n \"tag\": "electroengraving",\n \"popularity\": 7381\n },\n {\n \"tag\": "laparoenterotomy",\n \"popularity\": 7374\n },\n {\n \"tag\": "oxalylurea",\n \"popularity\": 7366\n },\n {\n \"tag\": "unattaintedly",\n \"popularity\": 7359\n },\n {\n \"tag\": "pennystone",\n \"popularity\": 7352\n },\n {\n \"tag\": "Plumbaginaceae",\n \"popularity\": 7345\n },\n {\n \"tag\": "horntip",\n \"popularity\": 7337\n },\n {\n \"tag\": "begrudge",\n \"popularity\": 7330\n },\n {\n \"tag\": "bechignoned",\n \"popularity\": 7323\n },\n {\n \"tag\": "hologonidium",\n \"popularity\": 7316\n },\n {\n \"tag\": "Pulian",\n \"popularity\": 7309\n },\n {\n \"tag\": "gratulation",\n \"popularity\": 7301\n },\n {\n \"tag\": "Sebright",\n \"popularity\": 7294\n },\n {\n \"tag\": "coinstantaneous emotionally",\n \"popularity\": 7287\n },\n {\n \"tag\": "thoracostracan",\n \"popularity\": 7280\n },\n {\n \"tag\": "saurodont",\n \"popularity\": 7273\n },\n {\n \"tag\": "coseat",\n \"popularity\": 7266\n },\n {\n \"tag\": "irascibility",\n \"popularity\": 7259\n },\n {\n \"tag\": "occlude",\n \"popularity\": 7251\n },\n {\n \"tag\": "metallurgist",\n \"popularity\": 7244\n },\n {\n \"tag\": "extraviolet",\n \"popularity\": 7237\n },\n {\n \"tag\": "clinic",\n \"popularity\": 7230\n },\n {\n \"tag\": "skater",\n \"popularity\": 7223\n },\n {\n \"tag\": "linguistic",\n \"popularity\": 7216\n },\n {\n \"tag\": "attacheship",\n \"popularity\": 7209\n },\n {\n \"tag\": "Rachianectes",\n \"popularity\": 7202\n },\n {\n \"tag\": "foliolose",\n \"popularity\": 7195\n },\n {\n \"tag\": "claudetite",\n \"popularity\": 7188\n },\n {\n \"tag\": "aphidian scratching",\n \"popularity\": 7181\n },\n {\n \"tag\": "Carida",\n \"popularity\": 7174\n },\n {\n \"tag\": "tiepin polymicroscope",\n \"popularity\": 7167\n },\n {\n \"tag\": "telpherage",\n \"popularity\": 7160\n },\n {\n \"tag\": "meek",\n \"popularity\": 7153\n },\n {\n \"tag\": "swiftness",\n \"popularity\": 7146\n },\n {\n \"tag\": "gentes",\n \"popularity\": 7139\n },\n {\n \"tag\": "uncommemorated",\n \"popularity\": 7132\n },\n {\n \"tag\": "Lazarus",\n \"popularity\": 7125\n },\n {\n \"tag\": "redivive",\n \"popularity\": 7119\n },\n {\n \"tag\": "nonfebrile",\n \"popularity\": 7112\n },\n {\n \"tag\": "nymphet",\n \"popularity\": 7105\n },\n {\n \"tag\": "areologically",\n \"popularity\": 7098\n },\n {\n \"tag\": "undonkey",\n \"popularity\": 7091\n },\n {\n \"tag\": "projecting",\n \"popularity\": 7084\n },\n {\n \"tag\": "pinnigrade",\n \"popularity\": 7077\n },\n {\n \"tag\": "butylation",\n \"popularity\": 7071\n },\n {\n \"tag\": "philologistic lenticle",\n \"popularity\": 7064\n },\n {\n \"tag\": "nooky",\n \"popularity\": 7057\n },\n {\n \"tag\": "incestuousness",\n \"popularity\": 7050\n },\n {\n \"tag\": "palingenetically",\n \"popularity\": 7043\n },\n {\n \"tag\": "mitochondria",\n \"popularity\": 7037\n },\n {\n \"tag\": "truthify",\n \"popularity\": 7030\n },\n {\n \"tag\": "titanyl",\n \"popularity\": 7023\n },\n {\n \"tag\": "bestride",\n \"popularity\": 7016\n },\n {\n \"tag\": "chende",\n \"popularity\": 7010\n },\n {\n \"tag\": "Chaucerian monophote",\n \"popularity\": 7003\n },\n {\n \"tag\": "cutback",\n \"popularity\": 6996\n },\n {\n \"tag\": "unpatiently",\n \"popularity\": 6989\n },\n {\n \"tag\": "subvitreous",\n \"popularity\": 6983\n },\n {\n \"tag\": "organizable",\n \"popularity\": 6976\n },\n {\n \"tag\": "anniverse uncomprehensible",\n \"popularity\": 6969\n },\n {\n \"tag\": "hyalescence",\n \"popularity\": 6963\n },\n {\n \"tag\": "amniochorial",\n \"popularity\": 6956\n },\n {\n \"tag\": "Corybantian",\n \"popularity\": 6949\n },\n {\n \"tag\": "genocide Scaphitidae",\n \"popularity\": 6943\n },\n {\n \"tag\": "accordionist",\n \"popularity\": 6936\n },\n {\n \"tag\": "becheck",\n \"popularity\": 6930\n },\n {\n \"tag\": "overproduce",\n \"popularity\": 6923\n },\n {\n \"tag\": "unmaniac frijolillo",\n \"popularity\": 6916\n },\n {\n \"tag\": "multisulcated",\n \"popularity\": 6910\n },\n {\n \"tag\": "wennebergite",\n \"popularity\": 6903\n },\n {\n \"tag\": "tautousious mowth",\n \"popularity\": 6897\n },\n {\n \"tag\": "marigold",\n \"popularity\": 6890\n },\n {\n \"tag\": "affray",\n \"popularity\": 6884\n },\n {\n \"tag\": "nonidolatrous",\n \"popularity\": 6877\n },\n {\n \"tag\": "aphrasia",\n \"popularity\": 6871\n },\n {\n \"tag\": "muddlingly",\n \"popularity\": 6864\n },\n {\n \"tag\": "clear",\n \"popularity\": 6858\n },\n {\n \"tag\": "Clitoria",\n \"popularity\": 6851\n },\n {\n \"tag\": "apportionment underwaist",\n \"popularity\": 6845\n },\n {\n \"tag\": "kodakist",\n \"popularity\": 6838\n },\n {\n \"tag\": "Momotidae",\n \"popularity\": 6832\n },\n {\n \"tag\": "cryptovalency",\n \"popularity\": 6825\n },\n {\n \"tag\": "floe",\n \"popularity\": 6819\n },\n {\n \"tag\": "aphagia",\n \"popularity\": 6812\n },\n {\n \"tag\": "brontograph",\n \"popularity\": 6806\n },\n {\n \"tag\": "tubulous",\n \"popularity\": 6799\n },\n {\n \"tag\": "unhorse",\n \"popularity\": 6793\n },\n {\n \"tag\": "chlordane",\n \"popularity\": 6787\n },\n {\n \"tag\": "colloquy brochan",\n \"popularity\": 6780\n },\n {\n \"tag\": "sloosh",\n \"popularity\": 6774\n },\n {\n \"tag\": "battered",\n \"popularity\": 6767\n },\n {\n \"tag\": "monocularity pluriguttulate",\n \"popularity\": 6761\n },\n {\n \"tag\": "chiastoneury",\n \"popularity\": 6755\n },\n {\n \"tag\": "Sanguinaria",\n \"popularity\": 6748\n },\n {\n \"tag\": "confessionary",\n \"popularity\": 6742\n },\n {\n \"tag\": "enzymic",\n \"popularity\": 6736\n },\n {\n \"tag\": "cord",\n \"popularity\": 6729\n },\n {\n \"tag\": "oviducal",\n \"popularity\": 6723\n },\n {\n \"tag\": "crozzle outsea",\n \"popularity\": 6717\n },\n {\n \"tag\": "balladical",\n \"popularity\": 6710\n },\n {\n \"tag\": "uncollectibleness",\n \"popularity\": 6704\n },\n {\n \"tag\": "predorsal",\n \"popularity\": 6698\n },\n {\n \"tag\": "reauthenticate",\n \"popularity\": 6692\n },\n {\n \"tag\": "ravissant",\n \"popularity\": 6685\n },\n {\n \"tag\": "advantageousness",\n \"popularity\": 6679\n },\n {\n \"tag\": "rung",\n \"popularity\": 6673\n },\n {\n \"tag\": "duncedom",\n \"popularity\": 6667\n },\n {\n \"tag\": "hematolite",\n \"popularity\": 6660\n },\n {\n \"tag\": "thisness",\n \"popularity\": 6654\n },\n {\n \"tag\": "mapau",\n \"popularity\": 6648\n },\n {\n \"tag\": "Hecatic",\n \"popularity\": 6642\n },\n {\n \"tag\": "meningoencephalocele",\n \"popularity\": 6636\n },\n {\n \"tag\": "confection sorra",\n \"popularity\": 6630\n },\n {\n \"tag\": "unsedate",\n \"popularity\": 6623\n },\n {\n \"tag\": "meningocerebritis",\n \"popularity\": 6617\n },\n {\n \"tag\": "biopsychological",\n \"popularity\": 6611\n },\n {\n \"tag\": "clavicithern",\n \"popularity\": 6605\n },\n {\n \"tag\": "resun",\n \"popularity\": 6599\n },\n {\n \"tag\": "bayamo",\n \"popularity\": 6593\n },\n {\n \"tag\": "seeableness",\n \"popularity\": 6587\n },\n {\n \"tag\": "hypsidolichocephalism",\n \"popularity\": 6581\n },\n {\n \"tag\": "salivous",\n \"popularity\": 6574\n },\n {\n \"tag\": "neumatize",\n \"popularity\": 6568\n },\n {\n \"tag\": "stree",\n \"popularity\": 6562\n },\n {\n \"tag\": "markshot",\n \"popularity\": 6556\n },\n {\n \"tag\": "phraseologically",\n \"popularity\": 6550\n },\n {\n \"tag\": "yealing",\n \"popularity\": 6544\n },\n {\n \"tag\": "puggy",\n \"popularity\": 6538\n },\n {\n \"tag\": "sexadecimal",\n \"popularity\": 6532\n },\n {\n \"tag\": "unofficerlike",\n \"popularity\": 6526\n },\n {\n \"tag\": "curiosa",\n \"popularity\": 6520\n },\n {\n \"tag\": "pedomotor",\n \"popularity\": 6514\n },\n {\n \"tag\": "astrally",\n \"popularity\": 6508\n },\n {\n \"tag\": "prosomatic",\n \"popularity\": 6502\n },\n {\n \"tag\": "bulletheaded",\n \"popularity\": 6496\n },\n {\n \"tag\": "fortuned",\n \"popularity\": 6490\n },\n {\n \"tag\": "pixy",\n \"popularity\": 6484\n },\n {\n \"tag\": "protectrix",\n \"popularity\": 6478\n },\n {\n \"tag\": "arthritical",\n \"popularity\": 6472\n },\n {\n \"tag\": "coction",\n \"popularity\": 6466\n },\n {\n \"tag\": "Anthropos",\n \"popularity\": 6460\n },\n {\n \"tag\": "runer",\n \"popularity\": 6454\n },\n {\n \"tag\": "prenotify",\n \"popularity\": 6449\n },\n {\n \"tag\": "microspheric gastroparalysis",\n \"popularity\": 6443\n },\n {\n \"tag\": "Jovicentrical",\n \"popularity\": 6437\n },\n {\n \"tag\": "ceratopsid",\n \"popularity\": 6431\n },\n {\n \"tag\": "Theodoric",\n \"popularity\": 6425\n },\n {\n \"tag\": "Pactolus",\n \"popularity\": 6419\n },\n {\n \"tag\": "spawning",\n \"popularity\": 6413\n },\n {\n \"tag\": "nonconfidential",\n \"popularity\": 6407\n },\n {\n \"tag\": "halotrichite infumate",\n \"popularity\": 6402\n },\n {\n \"tag\": "undiscriminatingly",\n \"popularity\": 6396\n },\n {\n \"tag\": "unexasperated",\n \"popularity\": 6390\n },\n {\n \"tag\": "isoeugenol",\n \"popularity\": 6384\n },\n {\n \"tag\": "pressboard",\n \"popularity\": 6378\n },\n {\n \"tag\": "unshrew",\n \"popularity\": 6372\n },\n {\n \"tag\": "huffingly",\n \"popularity\": 6367\n },\n {\n \"tag\": "wagaun",\n \"popularity\": 6361\n },\n {\n \"tag\": "squirt Philistine",\n \"popularity\": 6355\n },\n {\n \"tag\": "kryptic",\n \"popularity\": 6349\n },\n {\n \"tag\": "paraform",\n \"popularity\": 6344\n },\n {\n \"tag\": "preverify",\n \"popularity\": 6338\n },\n {\n \"tag\": "dalar",\n \"popularity\": 6332\n },\n {\n \"tag\": "interdictor appraisingly",\n \"popularity\": 6326\n },\n {\n \"tag\": "chipped",\n \"popularity\": 6321\n },\n {\n \"tag\": "Pteropoda",\n \"popularity\": 6315\n },\n {\n \"tag\": "Bohairic",\n \"popularity\": 6309\n },\n {\n \"tag\": "felting",\n \"popularity\": 6303\n },\n {\n \"tag\": "compurgatorial",\n \"popularity\": 6298\n },\n {\n \"tag\": "unclead",\n \"popularity\": 6292\n },\n {\n \"tag\": "stockish",\n \"popularity\": 6286\n },\n {\n \"tag\": "mulligatawny",\n \"popularity\": 6281\n },\n {\n \"tag\": "Monotheletism",\n \"popularity\": 6275\n },\n {\n \"tag\": "lutanist",\n \"popularity\": 6269\n },\n {\n \"tag\": "gluttonize",\n \"popularity\": 6264\n },\n {\n \"tag\": "hackneyed",\n \"popularity\": 6258\n },\n {\n \"tag\": "yield",\n \"popularity\": 6253\n },\n {\n \"tag\": "sulphonamido",\n \"popularity\": 6247\n },\n {\n \"tag\": "granulative",\n \"popularity\": 6241\n },\n {\n \"tag\": "swingy",\n \"popularity\": 6236\n },\n {\n \"tag\": "Desmidiales",\n \"popularity\": 6230\n },\n {\n \"tag\": "tootlish",\n \"popularity\": 6224\n },\n {\n \"tag\": "unsatisfiedly",\n \"popularity\": 6219\n },\n {\n \"tag\": "burucha",\n \"popularity\": 6213\n },\n {\n \"tag\": "premeditatingly",\n \"popularity\": 6208\n },\n {\n \"tag\": "cowrie",\n \"popularity\": 6202\n },\n {\n \"tag\": "pleurolysis",\n \"popularity\": 6197\n },\n {\n \"tag\": "nationalist",\n \"popularity\": 6191\n },\n {\n \"tag\": "Pholadacea",\n \"popularity\": 6186\n },\n {\n \"tag\": "anakrousis",\n \"popularity\": 6180\n },\n {\n \"tag\": "proctorial",\n \"popularity\": 6175\n },\n {\n \"tag\": "cavillation",\n \"popularity\": 6169\n },\n {\n \"tag\": "cervicobregmatic",\n \"popularity\": 6163\n },\n {\n \"tag\": "interspecific",\n \"popularity\": 6158\n },\n {\n \"tag\": "Teutonity",\n \"popularity\": 6152\n },\n {\n \"tag\": "snakeholing",\n \"popularity\": 6147\n },\n {\n \"tag\": "balcony",\n \"popularity\": 6142\n },\n {\n \"tag\": "latchless",\n \"popularity\": 6136\n },\n {\n \"tag\": "Mithraea",\n \"popularity\": 6131\n },\n {\n \"tag\": "pseudepigraph",\n \"popularity\": 6125\n },\n {\n \"tag\": "flosser",\n \"popularity\": 6120\n },\n {\n \"tag\": "kotyle",\n \"popularity\": 6114\n },\n {\n \"tag\": "outdo",\n \"popularity\": 6109\n },\n {\n \"tag\": "interclerical",\n \"popularity\": 6103\n },\n {\n \"tag\": "aurar",\n \"popularity\": 6098\n },\n {\n \"tag\": "apophyseal",\n \"popularity\": 6093\n },\n {\n \"tag\": "Miro",\n \"popularity\": 6087\n },\n {\n \"tag\": "Priscillian",\n \"popularity\": 6082\n },\n {\n \"tag\": "alluvia",\n \"popularity\": 6076\n },\n {\n \"tag\": "exordize",\n \"popularity\": 6071\n },\n {\n \"tag\": "breakage",\n \"popularity\": 6066\n },\n {\n \"tag\": "unclosable",\n \"popularity\": 6060\n },\n {\n \"tag\": "monocondylous",\n \"popularity\": 6055\n },\n {\n \"tag\": "dyarchy",\n \"popularity\": 6050\n },\n {\n \"tag\": "subchelate",\n \"popularity\": 6044\n },\n {\n \"tag\": "hearsay",\n \"popularity\": 6039\n },\n {\n \"tag\": "prestigiously",\n \"popularity\": 6034\n },\n {\n \"tag\": "unimuscular",\n \"popularity\": 6028\n },\n {\n \"tag\": "lingwort",\n \"popularity\": 6023\n },\n {\n \"tag\": "jealous",\n \"popularity\": 6018\n },\n {\n \"tag\": "artilleryman",\n \"popularity\": 6012\n },\n {\n \"tag\": "phantasmagorially",\n \"popularity\": 6007\n },\n {\n \"tag\": "stagnum",\n \"popularity\": 6002\n },\n {\n \"tag\": "organotropism shatteringly",\n \"popularity\": 5997\n },\n {\n \"tag\": "Mytilus Hebraist",\n \"popularity\": 5991\n },\n {\n \"tag\": "returf",\n \"popularity\": 5986\n },\n {\n \"tag\": "townfolk",\n \"popularity\": 5981\n },\n {\n \"tag\": "propitiative",\n \"popularity\": 5976\n },\n {\n \"tag\": "Anita unsullied",\n \"popularity\": 5970\n },\n {\n \"tag\": "bandoleered",\n \"popularity\": 5965\n },\n {\n \"tag\": "cubby",\n \"popularity\": 5960\n },\n {\n \"tag\": "Hexanchus",\n \"popularity\": 5955\n },\n {\n \"tag\": "circuminsular",\n \"popularity\": 5949\n },\n {\n \"tag\": "chamberletted eumycete",\n \"popularity\": 5944\n },\n {\n \"tag\": "secure",\n \"popularity\": 5939\n },\n {\n \"tag\": "Edwardean",\n \"popularity\": 5934\n },\n {\n \"tag\": "strenth",\n \"popularity\": 5929\n },\n {\n \"tag\": "exhaustless",\n \"popularity\": 5923\n },\n {\n \"tag\": "electioneerer",\n \"popularity\": 5918\n },\n {\n \"tag\": "estoile",\n \"popularity\": 5913\n },\n {\n \"tag\": "redden",\n \"popularity\": 5908\n },\n {\n \"tag\": "solicitee",\n \"popularity\": 5903\n },\n {\n \"tag\": "nonpatented",\n \"popularity\": 5898\n },\n {\n \"tag\": "lemming",\n \"popularity\": 5893\n },\n {\n \"tag\": "marled subalate",\n \"popularity\": 5887\n },\n {\n \"tag\": "premial horizonward",\n \"popularity\": 5882\n },\n {\n \"tag\": "nonrefueling",\n \"popularity\": 5877\n },\n {\n \"tag\": "rupturewort",\n \"popularity\": 5872\n },\n {\n \"tag\": "unfed",\n \"popularity\": 5867\n },\n {\n \"tag\": "empanelment",\n \"popularity\": 5862\n },\n {\n \"tag\": "isoosmosis",\n \"popularity\": 5857\n },\n {\n \"tag\": "jipijapa",\n \"popularity\": 5852\n },\n {\n \"tag\": "Fiji",\n \"popularity\": 5847\n },\n {\n \"tag\": "interferant",\n \"popularity\": 5842\n },\n {\n \"tag\": "reconstitution",\n \"popularity\": 5837\n },\n {\n \"tag\": "dockyardman",\n \"popularity\": 5832\n },\n {\n \"tag\": "dolichopodous",\n \"popularity\": 5826\n },\n {\n \"tag\": "whiteworm",\n \"popularity\": 5821\n },\n {\n \"tag\": "atheistically",\n \"popularity\": 5816\n },\n {\n \"tag\": "nonconcern",\n \"popularity\": 5811\n },\n {\n \"tag\": "scarabaeidoid",\n \"popularity\": 5806\n },\n {\n \"tag\": "triumviri",\n \"popularity\": 5801\n },\n {\n \"tag\": "rakit",\n \"popularity\": 5796\n },\n {\n \"tag\": "leecheater",\n \"popularity\": 5791\n },\n {\n \"tag\": "Arthrostraca",\n \"popularity\": 5786\n },\n {\n \"tag\": "upknit",\n \"popularity\": 5781\n },\n {\n \"tag\": "tymbalon",\n \"popularity\": 5776\n },\n {\n \"tag\": "inventurous",\n \"popularity\": 5771\n },\n {\n \"tag\": "perradiate",\n \"popularity\": 5766\n },\n {\n \"tag\": "seer",\n \"popularity\": 5762\n },\n {\n \"tag\": "Auricularia",\n \"popularity\": 5757\n },\n {\n \"tag\": "wettish exclusivity",\n \"popularity\": 5752\n },\n {\n \"tag\": "arteriosympathectomy",\n \"popularity\": 5747\n },\n {\n \"tag\": "tunlike",\n \"popularity\": 5742\n },\n {\n \"tag\": "cephalocercal",\n \"popularity\": 5737\n },\n {\n \"tag\": "meaninglessness",\n \"popularity\": 5732\n },\n {\n \"tag\": "fountful",\n \"popularity\": 5727\n },\n {\n \"tag\": "appraisement",\n \"popularity\": 5722\n },\n {\n \"tag\": "geniculated",\n \"popularity\": 5717\n },\n {\n \"tag\": "rotator",\n \"popularity\": 5712\n },\n {\n \"tag\": "foremarch biography",\n \"popularity\": 5707\n },\n {\n \"tag\": "arid",\n \"popularity\": 5703\n },\n {\n \"tag\": "inapprehensible",\n \"popularity\": 5698\n },\n {\n \"tag\": "chlorosulphonic",\n \"popularity\": 5693\n },\n {\n \"tag\": "braguette",\n \"popularity\": 5688\n },\n {\n \"tag\": "panophthalmitis",\n \"popularity\": 5683\n },\n {\n \"tag\": "pro objurgatorily",\n \"popularity\": 5678\n },\n {\n \"tag\": "zooplasty",\n \"popularity\": 5673\n },\n {\n \"tag\": "Terebratulidae",\n \"popularity\": 5669\n },\n {\n \"tag\": "Mahran",\n \"popularity\": 5664\n },\n {\n \"tag\": "anthologize merocele",\n \"popularity\": 5659\n },\n {\n \"tag\": "firecracker chiropractic",\n \"popularity\": 5654\n },\n {\n \"tag\": "tenorist",\n \"popularity\": 5649\n },\n {\n \"tag\": "amphitene",\n \"popularity\": 5645\n },\n {\n \"tag\": "silverbush toadstone",\n \"popularity\": 5640\n },\n {\n \"tag\": "entozoological",\n \"popularity\": 5635\n },\n {\n \"tag\": "trustlessness",\n \"popularity\": 5630\n },\n {\n \"tag\": "reassay",\n \"popularity\": 5625\n },\n {\n \"tag\": "chrysalides",\n \"popularity\": 5621\n },\n {\n \"tag\": "truncation",\n \"popularity\": 5616\n },\n {\n \"tag\": "unwavered mausoleal",\n \"popularity\": 5611\n },\n {\n \"tag\": "unserrated",\n \"popularity\": 5606\n },\n {\n \"tag\": "frampler",\n \"popularity\": 5602\n },\n {\n \"tag\": "celestial",\n \"popularity\": 5597\n },\n {\n \"tag\": "depreter",\n \"popularity\": 5592\n },\n {\n \"tag\": "retaliate",\n \"popularity\": 5588\n },\n {\n \"tag\": "decempunctate",\n \"popularity\": 5583\n },\n {\n \"tag\": "submitter",\n \"popularity\": 5578\n },\n {\n \"tag\": "phenothiazine",\n \"popularity\": 5573\n },\n {\n \"tag\": "hobbledehoyish",\n \"popularity\": 5569\n },\n {\n \"tag\": "erraticness",\n \"popularity\": 5564\n },\n {\n \"tag\": "ovariodysneuria",\n \"popularity\": 5559\n },\n {\n \"tag\": "puja",\n \"popularity\": 5555\n },\n {\n \"tag\": "cesspool",\n \"popularity\": 5550\n },\n {\n \"tag\": "sonation",\n \"popularity\": 5545\n },\n {\n \"tag\": "moggan",\n \"popularity\": 5541\n },\n {\n \"tag\": "overjutting",\n \"popularity\": 5536\n },\n {\n \"tag\": "cohobate",\n \"popularity\": 5531\n },\n {\n \"tag\": "Distoma",\n \"popularity\": 5527\n },\n {\n \"tag\": "Plectognathi",\n \"popularity\": 5522\n },\n {\n \"tag\": "dumple caliphate",\n \"popularity\": 5517\n },\n {\n \"tag\": "shiko",\n \"popularity\": 5513\n },\n {\n \"tag\": "downness",\n \"popularity\": 5508\n },\n {\n \"tag\": "whippletree",\n \"popularity\": 5504\n },\n {\n \"tag\": "nymphaeum",\n \"popularity\": 5499\n },\n {\n \"tag\": "there trest",\n \"popularity\": 5494\n },\n {\n \"tag\": "psychrometer",\n \"popularity\": 5490\n },\n {\n \"tag\": "pyelograph",\n \"popularity\": 5485\n },\n {\n \"tag\": "unsalvable",\n \"popularity\": 5481\n },\n {\n \"tag\": "bescreen",\n \"popularity\": 5476\n },\n {\n \"tag\": "cushy",\n \"popularity\": 5471\n },\n {\n \"tag\": "plicatolobate",\n \"popularity\": 5467\n },\n {\n \"tag\": "lakie",\n \"popularity\": 5462\n },\n {\n \"tag\": "anthropodeoxycholic",\n \"popularity\": 5458\n },\n {\n \"tag\": "resatisfaction",\n \"popularity\": 5453\n },\n {\n \"tag\": "unravelment unaccidental",\n \"popularity\": 5449\n },\n {\n \"tag\": "telewriter monogeneous",\n \"popularity\": 5444\n },\n {\n \"tag\": "unsabred",\n \"popularity\": 5440\n },\n {\n \"tag\": "startlingly",\n \"popularity\": 5435\n },\n {\n \"tag\": "Aralia",\n \"popularity\": 5431\n },\n {\n \"tag\": "alamonti",\n \"popularity\": 5426\n },\n {\n \"tag\": "Franklinization",\n \"popularity\": 5422\n },\n {\n \"tag\": "parliament",\n \"popularity\": 5417\n },\n {\n \"tag\": "schoolkeeper",\n \"popularity\": 5413\n },\n {\n \"tag\": "nonsociety",\n \"popularity\": 5408\n },\n {\n \"tag\": "parenthetic",\n \"popularity\": 5404\n },\n {\n \"tag\": "stog",\n \"popularity\": 5399\n },\n {\n \"tag\": "Pristipomidae",\n \"popularity\": 5395\n },\n {\n \"tag\": "exocarp",\n \"popularity\": 5390\n },\n {\n \"tag\": "monaxonial",\n \"popularity\": 5386\n },\n {\n \"tag\": "tramroad",\n \"popularity\": 5381\n },\n {\n \"tag\": "hookah",\n \"popularity\": 5377\n },\n {\n \"tag\": "saccharonic",\n \"popularity\": 5372\n },\n {\n \"tag\": "perimetrium",\n \"popularity\": 5368\n },\n {\n \"tag\": "libelluloid",\n \"popularity\": 5364\n },\n {\n \"tag\": "overrunningly",\n \"popularity\": 5359\n },\n {\n \"tag\": "untwister",\n \"popularity\": 5355\n },\n {\n \"tag\": "ninnyhammer",\n \"popularity\": 5350\n },\n {\n \"tag\": "metranate",\n \"popularity\": 5346\n },\n {\n \"tag\": "sarcoblast",\n \"popularity\": 5341\n },\n {\n \"tag\": "porkish",\n \"popularity\": 5337\n },\n {\n \"tag\": "chauvinistic",\n \"popularity\": 5333\n },\n {\n \"tag\": "sexagesimal",\n \"popularity\": 5328\n },\n {\n \"tag\": "hematogenic",\n \"popularity\": 5324\n },\n {\n \"tag\": "selfpreservatory",\n \"popularity\": 5320\n },\n {\n \"tag\": "myelauxe",\n \"popularity\": 5315\n },\n {\n \"tag\": "triply",\n \"popularity\": 5311\n },\n {\n \"tag\": "metaphysicous",\n \"popularity\": 5306\n },\n {\n \"tag\": "vitrinoid",\n \"popularity\": 5302\n },\n {\n \"tag\": "glabellae",\n \"popularity\": 5298\n },\n {\n \"tag\": "moonlighter",\n \"popularity\": 5293\n },\n {\n \"tag\": "monotheistically epexegetical",\n \"popularity\": 5289\n },\n {\n \"tag\": "pseudolateral",\n \"popularity\": 5285\n },\n {\n \"tag\": "heptamethylene",\n \"popularity\": 5280\n },\n {\n \"tag\": "salvadora",\n \"popularity\": 5276\n },\n {\n \"tag\": "unjovial diphenylthiourea",\n \"popularity\": 5272\n },\n {\n \"tag\": "thievishness",\n \"popularity\": 5268\n },\n {\n \"tag\": "unridable",\n \"popularity\": 5263\n },\n {\n \"tag\": "underhandedly",\n \"popularity\": 5259\n },\n {\n \"tag\": "fungiform",\n \"popularity\": 5255\n },\n {\n \"tag\": "scruffle",\n \"popularity\": 5250\n },\n {\n \"tag\": "preindisposition",\n \"popularity\": 5246\n },\n {\n \"tag\": "Amadis",\n \"popularity\": 5242\n },\n {\n \"tag\": "Culex",\n \"popularity\": 5238\n },\n {\n \"tag\": "churning",\n \"popularity\": 5233\n },\n {\n \"tag\": "imperite",\n \"popularity\": 5229\n },\n {\n \"tag\": "levorotation",\n \"popularity\": 5225\n },\n {\n \"tag\": "barbate",\n \"popularity\": 5221\n },\n {\n \"tag\": "knotwort",\n \"popularity\": 5216\n },\n {\n \"tag\": "gypsiferous",\n \"popularity\": 5212\n },\n {\n \"tag\": "tourmalinic",\n \"popularity\": 5208\n },\n {\n \"tag\": "helleboric",\n \"popularity\": 5204\n },\n {\n \"tag\": "pneumograph",\n \"popularity\": 5199\n },\n {\n \"tag\": "Peltigeraceae",\n \"popularity\": 5195\n },\n {\n \"tag\": "busine",\n \"popularity\": 5191\n },\n {\n \"tag\": "Ailuridae",\n \"popularity\": 5187\n },\n {\n \"tag\": "azotate",\n \"popularity\": 5183\n },\n {\n \"tag\": "unlikable",\n \"popularity\": 5178\n },\n {\n \"tag\": "sloyd",\n \"popularity\": 5174\n },\n {\n \"tag\": "biblioclasm",\n \"popularity\": 5170\n },\n {\n \"tag\": "Seres",\n \"popularity\": 5166\n },\n {\n \"tag\": "unaccurateness",\n \"popularity\": 5162\n },\n {\n \"tag\": "scrollwise",\n \"popularity\": 5157\n },\n {\n \"tag\": "flandowser",\n \"popularity\": 5153\n },\n {\n \"tag\": "unblackened",\n \"popularity\": 5149\n },\n {\n \"tag\": "schistosternia",\n \"popularity\": 5145\n },\n {\n \"tag\": "fuse",\n \"popularity\": 5141\n },\n {\n \"tag\": "narthecal",\n \"popularity\": 5137\n },\n {\n \"tag\": "Cueva",\n \"popularity\": 5133\n },\n {\n \"tag\": "appositeness",\n \"popularity\": 5128\n },\n {\n \"tag\": "proindustrial",\n \"popularity\": 5124\n },\n {\n \"tag\": "dermatorrhoea",\n \"popularity\": 5120\n },\n {\n \"tag\": "oxyurous tendential",\n \"popularity\": 5116\n },\n {\n \"tag\": "isopurpurin",\n \"popularity\": 5112\n },\n {\n \"tag\": "impose",\n \"popularity\": 5108\n },\n {\n \"tag\": "wordsmanship",\n \"popularity\": 5104\n },\n {\n \"tag\": "saturator",\n \"popularity\": 5100\n },\n {\n \"tag\": "Nordicity",\n \"popularity\": 5096\n },\n {\n \"tag\": "interaccuse",\n \"popularity\": 5092\n },\n {\n \"tag\": "acridinic",\n \"popularity\": 5087\n },\n {\n \"tag\": "scholion",\n \"popularity\": 5083\n },\n {\n \"tag\": "pseudoaconitine",\n \"popularity\": 5079\n },\n {\n \"tag\": "doctorial",\n \"popularity\": 5075\n },\n {\n \"tag\": "Etchimin",\n \"popularity\": 5071\n },\n {\n \"tag\": "oliviform",\n \"popularity\": 5067\n },\n {\n \"tag\": "Pele",\n \"popularity\": 5063\n },\n {\n \"tag\": "Chiromantis Progymnasium",\n \"popularity\": 5059\n },\n {\n \"tag\": "toxosis",\n \"popularity\": 5055\n },\n {\n \"tag\": "spadilla",\n \"popularity\": 5051\n },\n {\n \"tag\": "Actinopterygii",\n \"popularity\": 5047\n },\n {\n \"tag\": "untiring",\n \"popularity\": 5043\n },\n {\n \"tag\": "butyral",\n \"popularity\": 5039\n },\n {\n \"tag\": "Gymnoderinae",\n \"popularity\": 5035\n },\n {\n \"tag\": "testudo",\n \"popularity\": 5031\n },\n {\n \"tag\": "frigorify",\n \"popularity\": 5027\n },\n {\n \"tag\": "aliency",\n \"popularity\": 5023\n },\n {\n \"tag\": "jargon",\n \"popularity\": 5019\n },\n {\n \"tag\": "counterservice",\n \"popularity\": 5015\n },\n {\n \"tag\": "isostrychnine",\n \"popularity\": 5011\n },\n {\n \"tag\": "tellership",\n \"popularity\": 5007\n },\n {\n \"tag\": "miscegenetic",\n \"popularity\": 5003\n },\n {\n \"tag\": "sorcer",\n \"popularity\": 4999\n },\n {\n \"tag\": "tilewright",\n \"popularity\": 4995\n },\n {\n \"tag\": "cyanoplastid",\n \"popularity\": 4991\n },\n {\n \"tag\": "fluxionally",\n \"popularity\": 4987\n },\n {\n \"tag\": "proudhearted",\n \"popularity\": 4983\n },\n {\n \"tag\": "blithely",\n \"popularity\": 4979\n },\n {\n \"tag\": "jestproof",\n \"popularity\": 4975\n },\n {\n \"tag\": "jestwise",\n \"popularity\": 4971\n },\n {\n \"tag\": "nonassimilable",\n \"popularity\": 4967\n },\n {\n \"tag\": "compurgation",\n \"popularity\": 4964\n },\n {\n \"tag\": "unhate",\n \"popularity\": 4960\n },\n {\n \"tag\": "haplodonty",\n \"popularity\": 4956\n },\n {\n \"tag\": "cardholder",\n \"popularity\": 4952\n },\n {\n \"tag\": "rainlight megohmmeter overstout",\n \"popularity\": 4948\n },\n {\n \"tag\": "itchless",\n \"popularity\": 4944\n },\n {\n \"tag\": "begiggle",\n \"popularity\": 4940\n },\n {\n \"tag\": "chromatosphere",\n \"popularity\": 4936\n },\n {\n \"tag\": "typicality",\n \"popularity\": 4932\n },\n {\n \"tag\": "overgrown",\n \"popularity\": 4928\n },\n {\n \"tag\": "envolume",\n \"popularity\": 4925\n },\n {\n \"tag\": "pachycholia",\n \"popularity\": 4921\n },\n {\n \"tag\": "passageable",\n \"popularity\": 4917\n },\n {\n \"tag\": "pathopoiesis",\n \"popularity\": 4913\n },\n {\n \"tag\": "overbreak",\n \"popularity\": 4909\n },\n {\n \"tag\": "satyric",\n \"popularity\": 4905\n },\n {\n \"tag\": "unaudited",\n \"popularity\": 4901\n },\n {\n \"tag\": "whimble",\n \"popularity\": 4898\n },\n {\n \"tag\": "pressureless",\n \"popularity\": 4894\n },\n {\n \"tag\": "Selene",\n \"popularity\": 4890\n },\n {\n \"tag\": "slithery",\n \"popularity\": 4886\n },\n {\n \"tag\": "nondisfigurement",\n \"popularity\": 4882\n },\n {\n \"tag\": "overdelicious",\n \"popularity\": 4878\n },\n {\n \"tag\": "Perca",\n \"popularity\": 4875\n },\n {\n \"tag\": "Palladium",\n \"popularity\": 4871\n },\n {\n \"tag\": "insagacity",\n \"popularity\": 4867\n },\n {\n \"tag\": "peristoma",\n \"popularity\": 4863\n },\n {\n \"tag\": "uncreativeness",\n \"popularity\": 4859\n },\n {\n \"tag\": "incomparability surfboarding",\n \"popularity\": 4856\n },\n {\n \"tag\": "bacillar",\n \"popularity\": 4852\n },\n {\n \"tag\": "ulcerative",\n \"popularity\": 4848\n },\n {\n \"tag\": "stychomythia",\n \"popularity\": 4844\n },\n {\n \"tag\": "sesma somatics nonentry",\n \"popularity\": 4840\n },\n {\n \"tag\": "unsepulchred",\n \"popularity\": 4837\n },\n {\n \"tag\": "cephalanthium",\n \"popularity\": 4833\n },\n {\n \"tag\": "Asiaticization",\n \"popularity\": 4829\n },\n {\n \"tag\": "killeen",\n \"popularity\": 4825\n },\n {\n \"tag\": "Pseudococcus",\n \"popularity\": 4822\n },\n {\n \"tag\": "untractable",\n \"popularity\": 4818\n },\n {\n \"tag\": "apolegamic",\n \"popularity\": 4814\n },\n {\n \"tag\": "hyperpnea",\n \"popularity\": 4810\n },\n {\n \"tag\": "martyrolatry",\n \"popularity\": 4807\n },\n {\n \"tag\": "Sarmatic",\n \"popularity\": 4803\n },\n {\n \"tag\": "nonsurface",\n \"popularity\": 4799\n },\n {\n \"tag\": "adjoined",\n \"popularity\": 4796\n },\n {\n \"tag\": "vasiform",\n \"popularity\": 4792\n },\n {\n \"tag\": "tastelessness",\n \"popularity\": 4788\n },\n {\n \"tag\": "rumbo",\n \"popularity\": 4784\n },\n {\n \"tag\": "subdititious",\n \"popularity\": 4781\n },\n {\n \"tag\": "reparticipation",\n \"popularity\": 4777\n },\n {\n \"tag\": "Yorkshireism",\n \"popularity\": 4773\n },\n {\n \"tag\": "outcrow",\n \"popularity\": 4770\n },\n {\n \"tag\": "casserole",\n \"popularity\": 4766\n },\n {\n \"tag\": "semideltaic",\n \"popularity\": 4762\n },\n {\n \"tag\": "freemason",\n \"popularity\": 4759\n },\n {\n \"tag\": "catkin",\n \"popularity\": 4755\n },\n {\n \"tag\": "conscient",\n \"popularity\": 4751\n },\n {\n \"tag\": "reliably",\n \"popularity\": 4748\n },\n {\n \"tag\": "Telembi",\n \"popularity\": 4744\n },\n {\n \"tag\": "hide",\n \"popularity\": 4740\n },\n {\n \"tag\": "social",\n \"popularity\": 4737\n },\n {\n \"tag\": "ichneutic",\n \"popularity\": 4733\n },\n {\n \"tag\": "polypotome blouse pentagrammatic",\n \"popularity\": 4729\n },\n {\n \"tag\": "airdrome pesthole",\n \"popularity\": 4726\n },\n {\n \"tag\": "unportended",\n \"popularity\": 4722\n },\n {\n \"tag\": "sheerly",\n \"popularity\": 4719\n },\n {\n \"tag\": "acardiac",\n \"popularity\": 4715\n },\n {\n \"tag\": "fetor",\n \"popularity\": 4711\n },\n {\n \"tag\": "storax",\n \"popularity\": 4708\n },\n {\n \"tag\": "syndactylic",\n \"popularity\": 4704\n },\n {\n \"tag\": "otiatrics",\n \"popularity\": 4700\n },\n {\n \"tag\": "range",\n \"popularity\": 4697\n },\n {\n \"tag\": "branchway",\n \"popularity\": 4693\n },\n {\n \"tag\": "beatific",\n \"popularity\": 4690\n },\n {\n \"tag\": "Rugosa",\n \"popularity\": 4686\n },\n {\n \"tag\": "rafty",\n \"popularity\": 4682\n },\n {\n \"tag\": "gapy",\n \"popularity\": 4679\n },\n {\n \"tag\": "heterocercal",\n \"popularity\": 4675\n },\n {\n \"tag\": "actinopterygious",\n \"popularity\": 4672\n },\n {\n \"tag\": "glauconite",\n \"popularity\": 4668\n },\n {\n \"tag\": "limbless priest",\n \"popularity\": 4665\n },\n {\n \"tag\": "chrysene",\n \"popularity\": 4661\n },\n {\n \"tag\": "isentropic",\n \"popularity\": 4658\n },\n {\n \"tag\": "lairdess",\n \"popularity\": 4654\n },\n {\n \"tag\": "butterhead choliambic",\n \"popularity\": 4650\n },\n {\n \"tag\": "hexaseme",\n \"popularity\": 4647\n },\n {\n \"tag\": "treeify",\n \"popularity\": 4643\n },\n {\n \"tag\": "coronetted fructify",\n \"popularity\": 4640\n },\n {\n \"tag\": "admiralty",\n \"popularity\": 4636\n },\n {\n \"tag\": "Flosculariidae",\n \"popularity\": 4633\n },\n {\n \"tag\": "limaceous",\n \"popularity\": 4629\n },\n {\n \"tag\": "subterconscious",\n \"popularity\": 4626\n },\n {\n \"tag\": "stayless",\n \"popularity\": 4622\n },\n {\n \"tag\": "psha",\n \"popularity\": 4619\n },\n {\n \"tag\": "Mediterraneanize",\n \"popularity\": 4615\n },\n {\n \"tag\": "impenetrably",\n \"popularity\": 4612\n },\n {\n \"tag\": "Myrmeleonidae",\n \"popularity\": 4608\n },\n {\n \"tag\": "germander",\n \"popularity\": 4605\n },\n {\n \"tag\": "Buri",\n \"popularity\": 4601\n },\n {\n \"tag\": "papyrotamia",\n \"popularity\": 4598\n },\n {\n \"tag\": "Toxylon",\n \"popularity\": 4594\n },\n {\n \"tag\": "batatilla",\n \"popularity\": 4591\n },\n {\n \"tag\": "fabella assumer",\n \"popularity\": 4587\n },\n {\n \"tag\": "macromethod",\n \"popularity\": 4584\n },\n {\n \"tag\": "Blechnum",\n \"popularity\": 4580\n },\n {\n \"tag\": "pantography",\n \"popularity\": 4577\n },\n {\n \"tag\": "seminovel",\n \"popularity\": 4574\n },\n {\n \"tag\": "disembarrassment",\n \"popularity\": 4570\n },\n {\n \"tag\": "bushmaking",\n \"popularity\": 4567\n },\n {\n \"tag\": "neurosis",\n \"popularity\": 4563\n },\n {\n \"tag\": "Animalia",\n \"popularity\": 4560\n },\n {\n \"tag\": "Bernice",\n \"popularity\": 4556\n },\n {\n \"tag\": "wisen",\n \"popularity\": 4553\n },\n {\n \"tag\": "subhymenium",\n \"popularity\": 4549\n },\n {\n \"tag\": "esophagomycosis",\n \"popularity\": 4546\n },\n {\n \"tag\": "wireworks",\n \"popularity\": 4543\n },\n {\n \"tag\": "Sabellidae",\n \"popularity\": 4539\n },\n {\n \"tag\": "fustianish",\n \"popularity\": 4536\n },\n {\n \"tag\": "professively",\n \"popularity\": 4532\n },\n {\n \"tag\": "overcorruptly",\n \"popularity\": 4529\n },\n {\n \"tag\": "overcreep",\n \"popularity\": 4526\n },\n {\n \"tag\": "Castilloa",\n \"popularity\": 4522\n },\n {\n \"tag\": "forelady Georgie",\n \"popularity\": 4519\n },\n {\n \"tag\": "outsider",\n \"popularity\": 4515\n },\n {\n \"tag\": "Enukki",\n \"popularity\": 4512\n },\n {\n \"tag\": "gypsy",\n \"popularity\": 4509\n },\n {\n \"tag\": "Passamaquoddy",\n \"popularity\": 4505\n },\n {\n \"tag\": "reposit",\n \"popularity\": 4502\n },\n {\n \"tag\": "overtenderness",\n \"popularity\": 4499\n },\n {\n \"tag\": "keratome",\n \"popularity\": 4495\n },\n {\n \"tag\": "interclavicular hypermonosyllable Susanna",\n \"popularity\": 4492\n },\n {\n \"tag\": "mispropose",\n \"popularity\": 4489\n },\n {\n \"tag\": "Membranipora",\n \"popularity\": 4485\n },\n {\n \"tag\": "lampad",\n \"popularity\": 4482\n },\n {\n \"tag\": "header",\n \"popularity\": 4479\n },\n {\n \"tag\": "triseriate",\n \"popularity\": 4475\n },\n {\n \"tag\": "distrainment",\n \"popularity\": 4472\n },\n {\n \"tag\": "staphyloplastic",\n \"popularity\": 4469\n },\n {\n \"tag\": "outscour",\n \"popularity\": 4465\n },\n {\n \"tag\": "tallowmaking",\n \"popularity\": 4462\n },\n {\n \"tag\": "plugger",\n \"popularity\": 4459\n },\n {\n \"tag\": "fashionize",\n \"popularity\": 4455\n },\n {\n \"tag\": "puzzle",\n \"popularity\": 4452\n },\n {\n \"tag\": "imbrue",\n \"popularity\": 4449\n },\n {\n \"tag\": "osteoblast",\n \"popularity\": 4445\n },\n {\n \"tag\": "Hydrocores",\n \"popularity\": 4442\n },\n {\n \"tag\": "Lutra",\n \"popularity\": 4439\n },\n {\n \"tag\": "upridge scarfy",\n \"popularity\": 4435\n },\n {\n \"tag\": "ancon taffle",\n \"popularity\": 4432\n },\n {\n \"tag\": "impest",\n \"popularity\": 4429\n },\n {\n \"tag\": "uncollatedness",\n \"popularity\": 4426\n },\n {\n \"tag\": "hypersensitize",\n \"popularity\": 4422\n },\n {\n \"tag\": "autographically",\n \"popularity\": 4419\n },\n {\n \"tag\": "louther",\n \"popularity\": 4416\n },\n {\n \"tag\": "Ollie",\n \"popularity\": 4413\n },\n {\n \"tag\": "recompensate",\n \"popularity\": 4409\n },\n {\n \"tag\": "Shan",\n \"popularity\": 4406\n },\n {\n \"tag\": "brachycnemic",\n \"popularity\": 4403\n },\n {\n \"tag\": "Carinatae",\n \"popularity\": 4399\n },\n {\n \"tag\": "geotherm",\n \"popularity\": 4396\n },\n {\n \"tag\": "sawback",\n \"popularity\": 4393\n },\n {\n \"tag\": "Novatianist",\n \"popularity\": 4390\n },\n {\n \"tag\": "reapproach",\n \"popularity\": 4387\n },\n {\n \"tag\": "myelopoietic",\n \"popularity\": 4383\n },\n {\n \"tag\": "cyanin",\n \"popularity\": 4380\n },\n {\n \"tag\": "unsmutted",\n \"popularity\": 4377\n },\n {\n \"tag\": "nonpapist",\n \"popularity\": 4374\n },\n {\n \"tag\": "transbaikalian",\n \"popularity\": 4370\n },\n {\n \"tag\": "connately",\n \"popularity\": 4367\n },\n {\n \"tag\": "tenderize iterance",\n \"popularity\": 4364\n },\n {\n \"tag\": "hydrostatical",\n \"popularity\": 4361\n },\n {\n \"tag\": "unflag",\n \"popularity\": 4358\n },\n {\n \"tag\": "translate",\n \"popularity\": 4354\n },\n {\n \"tag\": "Scorzonera",\n \"popularity\": 4351\n },\n {\n \"tag\": "uncomforted",\n \"popularity\": 4348\n },\n {\n \"tag\": "risser varied",\n \"popularity\": 4345\n },\n {\n \"tag\": "plumbate",\n \"popularity\": 4342\n },\n {\n \"tag\": "Usneaceae",\n \"popularity\": 4338\n },\n {\n \"tag\": "fohat",\n \"popularity\": 4335\n },\n {\n \"tag\": "slagging",\n \"popularity\": 4332\n },\n {\n \"tag\": "superserious",\n \"popularity\": 4329\n },\n {\n \"tag\": "theocracy",\n \"popularity\": 4326\n },\n {\n \"tag\": "valonia",\n \"popularity\": 4323\n },\n {\n \"tag\": "Sapindales",\n \"popularity\": 4319\n },\n {\n \"tag\": "palaeozoologist",\n \"popularity\": 4316\n },\n {\n \"tag\": "yalb",\n \"popularity\": 4313\n },\n {\n \"tag\": "unviewed",\n \"popularity\": 4310\n },\n {\n \"tag\": "polyarteritis",\n \"popularity\": 4307\n },\n {\n \"tag\": "vectorial",\n \"popularity\": 4304\n },\n {\n \"tag\": "skimpingly",\n \"popularity\": 4301\n },\n {\n \"tag\": "athort",\n \"popularity\": 4297\n },\n {\n \"tag\": "tribofluorescence",\n \"popularity\": 4294\n },\n {\n \"tag\": "benzonitrol",\n \"popularity\": 4291\n },\n {\n \"tag\": "swiller subobtuse subjacency",\n \"popularity\": 4288\n },\n {\n \"tag\": "uncompassed",\n \"popularity\": 4285\n },\n {\n \"tag\": "cacochymia",\n \"popularity\": 4282\n },\n {\n \"tag\": "commensalist butadiene",\n \"popularity\": 4279\n },\n {\n \"tag\": "culpable",\n \"popularity\": 4276\n },\n {\n \"tag\": "contributive",\n \"popularity\": 4273\n },\n {\n \"tag\": "attemperately",\n \"popularity\": 4269\n },\n {\n \"tag\": "spelt",\n \"popularity\": 4266\n },\n {\n \"tag\": "exoneration",\n \"popularity\": 4263\n },\n {\n \"tag\": "antivivisectionist",\n \"popularity\": 4260\n },\n {\n \"tag\": "granitification",\n \"popularity\": 4257\n },\n {\n \"tag\": "palladize",\n \"popularity\": 4254\n },\n {\n \"tag\": "marksmanship",\n \"popularity\": 4251\n },\n {\n \"tag\": "bullydom",\n \"popularity\": 4248\n },\n {\n \"tag\": "spirality",\n \"popularity\": 4245\n },\n {\n \"tag\": "caliginous",\n \"popularity\": 4242\n },\n {\n \"tag\": "reportedly",\n \"popularity\": 4239\n },\n {\n \"tag\": "polyad",\n \"popularity\": 4236\n },\n {\n \"tag\": "arthroempyesis",\n \"popularity\": 4233\n },\n {\n \"tag\": "semibay facultatively",\n \"popularity\": 4229\n },\n {\n \"tag\": "metastatically",\n \"popularity\": 4226\n },\n {\n \"tag\": "prophetically",\n \"popularity\": 4223\n },\n {\n \"tag\": "Linguatula elapid",\n \"popularity\": 4220\n },\n {\n \"tag\": "pyknatom",\n \"popularity\": 4217\n },\n {\n \"tag\": "centimeter",\n \"popularity\": 4214\n },\n {\n \"tag\": "mensurate",\n \"popularity\": 4211\n },\n {\n \"tag\": "migraine",\n \"popularity\": 4208\n },\n {\n \"tag\": "pentagamist",\n \"popularity\": 4205\n },\n {\n \"tag\": "querken",\n \"popularity\": 4202\n },\n {\n \"tag\": "ambulance",\n \"popularity\": 4199\n },\n {\n \"tag\": "Stokavian",\n \"popularity\": 4196\n },\n {\n \"tag\": "malvasian",\n \"popularity\": 4193\n },\n {\n \"tag\": "uncouthsome",\n \"popularity\": 4190\n },\n {\n \"tag\": "readable",\n \"popularity\": 4187\n },\n {\n \"tag\": "enlodge",\n \"popularity\": 4184\n },\n {\n \"tag\": "plasterwise Appendiculariidae perspectograph",\n \"popularity\": 4181\n },\n {\n \"tag\": "inkweed",\n \"popularity\": 4178\n },\n {\n \"tag\": "streep",\n \"popularity\": 4175\n },\n {\n \"tag\": "diadelphian cultured",\n \"popularity\": 4172\n },\n {\n \"tag\": "hymenopterous",\n \"popularity\": 4169\n },\n {\n \"tag\": "unexorableness",\n \"popularity\": 4166\n },\n {\n \"tag\": "cascaron",\n \"popularity\": 4163\n },\n {\n \"tag\": "undaintiness",\n \"popularity\": 4160\n },\n {\n \"tag\": "Curtana",\n \"popularity\": 4157\n },\n {\n \"tag\": "scurvied",\n \"popularity\": 4154\n },\n {\n \"tag\": "molluscoidal",\n \"popularity\": 4151\n },\n {\n \"tag\": "yurt",\n \"popularity\": 4148\n },\n {\n \"tag\": "deciduitis",\n \"popularity\": 4145\n },\n {\n \"tag\": "creephole",\n \"popularity\": 4142\n },\n {\n \"tag\": "quatrefeuille",\n \"popularity\": 4139\n },\n {\n \"tag\": "bicapitate adenomatome",\n \"popularity\": 4136\n },\n {\n \"tag\": "damassin",\n \"popularity\": 4134\n },\n {\n \"tag\": "planching",\n \"popularity\": 4131\n },\n {\n \"tag\": "dashedly inferential",\n \"popularity\": 4128\n },\n {\n \"tag\": "lobe",\n \"popularity\": 4125\n },\n {\n \"tag\": "Hyrachyus",\n \"popularity\": 4122\n },\n {\n \"tag\": "knab",\n \"popularity\": 4119\n },\n {\n \"tag\": "discohexaster",\n \"popularity\": 4116\n },\n {\n \"tag\": "malign",\n \"popularity\": 4113\n },\n {\n \"tag\": "pedagoguism",\n \"popularity\": 4110\n },\n {\n \"tag\": "shrubbery",\n \"popularity\": 4107\n },\n {\n \"tag\": "undershrub",\n \"popularity\": 4104\n },\n {\n \"tag\": "bureaucrat",\n \"popularity\": 4101\n },\n {\n \"tag\": "pantaleon",\n \"popularity\": 4098\n },\n {\n \"tag\": "mesoventral",\n \"popularity\": 4096\n }]';
+
+var log2 = Math.log(2);
+var tagInfo = tagInfoJSON.parseJSON(function(a, b) { if (a == "popularity") { return Math.log(b) / log2; } else {return b; } });
+
+function makeTagCloud(tagInfo)
+{
+ var output = '<div class="tagCloud" style="width: 100%">';
+
+ tagInfo.sort(function(a, b) { if (a.tag < b.tag) { return -1; } else if (a.tag == b.tag) { return 0; } else return 1; });
+
+ for (var i = 0; i < tagInfo.length; i++) {
+ var tag = tagInfo[i].tag;
+
+ var validates = true;
+ for (var j = 0; j < tag.length; j++) {
+ var ch = tag.charCodeAt(j);
+ if (ch < 0x20 || ch >= 0x7f) {
+ validates = false;
+ break;
+ }
+ }
+
+ if (!validates)
+ continue;
+
+ var url = "http://example.com/tag/" + tag.replace(" ", "").toLowerCase();
+ var popularity = tagInfo[i].popularity;
+ var color = 'rgb(' + Math.floor(255 * (popularity - 12) / 20) + ', 0, 255)';
+ output += ' <a href="' + url + '" style="font-size: ' + popularity + 'px; color: ' + color + '">' + tag + '</a> \n';
+ }
+
+ output += '</div>';
+ output.replace(" ", "&nbsp;");
+
+ return output;
+}
+
+var tagcloud = makeTagCloud(tagInfo);
+tagInfo = null;
diff --git a/tests/benchmarks/script/sunspider/tests/string-unpack-code.js b/tests/benchmarks/script/sunspider/tests/string-unpack-code.js
new file mode 100644
index 0000000000..e6330f15f3
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/string-unpack-code.js
@@ -0,0 +1,68 @@
+// This test case unpacks the compressed code for the MochiKit,
+// jQuery, Dojo and Prototype JavaScript libraries.
+
+/***
+ MochiKit.MochiKit 1.3.1 : PACKED VERSION
+ THIS FILE IS AUTOMATICALLY GENERATED. If creating patches, please
+ diff against the source tree, not this file.
+
+ See <http://mochikit.com/> for documentation, downloads, license, etc.
+
+ (c) 2005 Bob Ippolito. All rights Reserved.
+***/
+
+for (var i = 0; i < 2; i++) {
+
+var decompressedMochiKit = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('if(H(1q)!="L"){1q.2X("B.J")}if(H(B)=="L"){B={}}if(H(B.J)=="L"){B.J={}}B.J.1Y="1.3.1";B.J.1r="B.J";B.J.2l=G(7V,vR){if(7V===O){7V={}}R(u i=1;i<M.K;i++){u o=M[i];if(H(o)!="L"&&o!==O){R(u k in o){7V[k]=o[k]}}}F 7V};B.J.2l(B.J,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},4f:G(n){if(M.K===0){n=1}F G(){F n++}},4L:G(mw){u me=M.2U;if(M.K==1){me.1U=mw;F Y me()}},bg:G(vQ){u X=[];u m=B.J;u aw=m.1R(O,M);1M(aw.K){u o=aw.2P();if(o&&H(o)=="3n"&&H(o.K)=="2y"){R(u i=o.K-1;i>=0;i--){aw.e9(o[i])}}N{X.1c(o)}}F X},1R:G(7U,1i,av){if(!av){av=0}if(1i){u l=1i.K;if(H(l)!="2y"){if(H(B.15)!="L"){1i=B.15.2G(1i);l=1i.K}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(!7U){7U=[]}R(u i=av;i<l;i++){7U.1c(1i[i])}}F 7U},8Z:G(5g,1i){if(5g===O){5g={}}R(u i=1;i<M.K;i++){u o=M[i];if(H(o)!="L"&&o!==O){R(u k in o){u v=o[k];if(H(5g[k])=="3n"&&H(v)=="3n"){M.2U(5g[k],v)}N{5g[k]=v}}}}F 5g},lO:G(6c,1i){if(6c===O){6c={}}R(u i=1;i<M.K;i++){u o=M[i];R(u k in o){if(!(k in 6c)){6c[k]=o[k]}}}F 6c},lN:G(1i){u fj=[];R(u mv in 1i){fj.1c(mv)}F fj},lM:G(1i){u fh=[];u e;R(u fi in 1i){u v;1f{v=1i[fi]}1e(e){2V}fh.1c([fi,v])}F fh},jq:G(fg,ff,fe){fe.1U=Y B.J.5a(fg.1r+"."+ff);fg[ff]=fe},4i:{7L:G(a){F!!a},vP:G(a){F!a},eE:G(a){F a},2E:G(a){F~a},vO:G(a){F-a},vN:G(a,b){F a+b},vM:G(a,b){F a-b},4u:G(a,b){F a/b},vL:G(a,b){F a%b},vK:G(a,b){F a*b},3W:G(a,b){F a&b},or:G(a,b){F a|b},vJ:G(a,b){F a^b},vI:G(a,b){F a<<b},vH:G(a,b){F a>>b},vG:G(a,b){F a>>>b},eq:G(a,b){F a==b},ne:G(a,b){F a!=b},gt:G(a,b){F a>b},ge:G(a,b){F a>=b},lt:G(a,b){F a<b},le:G(a,b){F a<=b},vF:G(a,b){F B.J.2f(a,b)===0},vE:G(a,b){F B.J.2f(a,b)!==0},vD:G(a,b){F B.J.2f(a,b)==1},vC:G(a,b){F B.J.2f(a,b)!=-1},vB:G(a,b){F B.J.2f(a,b)==-1},vA:G(a,b){F B.J.2f(a,b)!=1},vz:G(a,b){F a&&b},vy:G(a,b){F a||b},vx:G(a,b){F b in a}},24:G(mu){F G(){F D[mu].1w(D,M)}},lL:G(mt){F G(a9){F a9[mt]}},66:G(){u fd={};R(u i=0;i<M.K;i++){u 6b=M[i];fd[6b]=6b}F G(){R(u i=0;i<M.K;i++){if(!(H(M[i])in fd)){F 1m}}F 1h}},lJ:G(){R(u i=0;i<M.K;i++){if(M[i]!==O){F 1m}}F 1h},lK:G(){R(u i=0;i<M.K;i++){u o=M[i];if(!(H(o)=="L"||o===O)){F 1m}}F 1h},lI:G(1i){F!B.J.7e.1w(D,M)},7e:G(1i){R(u i=0;i<M.K;i++){u o=M[i];if(!(o&&o.K)){F 1m}}F 1h},3A:G(){R(u i=0;i<M.K;i++){u o=M[i];u 6b=H(o);if((6b!="3n"&&!(6b=="G"&&H(o.vw)=="G"))||o===O||H(o.K)!="2y"){F 1m}}F 1h},eN:G(){R(u i=0;i<M.K;i++){u o=M[i];if(H(o)!="3n"||o===O||H(o.9P)!="G"){F 1m}}F 1h},lH:G(fn){if(fn===O){F B.J.1R(O,M,1)}u fc=[];R(u i=1;i<M.K;i++){fc.1c(fn(M[i]))}F fc},2r:G(fn,1g){u m=B.J;u 6a=B.15;u fb=m.3A;if(M.K<=2){if(!fb(1g)){if(6a){1g=6a.2G(1g);if(fn===O){F 1g}}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(fn===O){F m.1R(O,1g)}u 69=[];R(u i=0;i<1g.K;i++){69.1c(fn(1g[i]))}F 69}N{if(fn===O){fn=7o}u 7T=O;R(i=1;i<M.K;i++){if(!fb(M[i])){if(6a){F 6a.2G(6a.4c.1w(O,M))}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}u l=M[i].K;if(7T===O||7T>l){7T=l}}69=[];R(i=0;i<7T;i++){u fa=[];R(u j=1;j<M.K;j++){fa.1c(M[j][i])}69.1c(fn.1w(D,fa))}F 69}},lG:G(fn){u f9=[];if(fn===O){fn=B.J.4i.7L}R(u i=1;i<M.K;i++){u o=M[i];if(fn(o)){f9.1c(o)}}F f9},47:G(fn,1g,7S){u aq=[];u m=B.J;if(!m.3A(1g)){if(B.15){1g=B.15.2G(1g)}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(fn===O){fn=m.4i.7L}if(H(7o.1U.47)=="G"){F 7o.1U.47.cz(1g,fn,7S)}N{if(H(7S)=="L"||7S===O){R(u i=0;i<1g.K;i++){u o=1g[i];if(fn(o)){aq.1c(o)}}}N{R(i=0;i<1g.K;i++){o=1g[i];if(fn.cz(7S,o)){aq.1c(o)}}}}F aq},mq:G(7R){F G(){hd(M.K){3j 0:F 7R();3j 1:F 7R(M[0]);3j 2:F 7R(M[0],M[1]);3j 3:F 7R(M[0],M[1],M[2])}u f8=[];R(u i=0;i<M.K;i++){f8.1c("M["+i+"]")}F dB("(1A("+f8.2b(",")+"))")}},lv:G(mr,ms){u m=B.J;F m.1O.1w(D,m.1R([ms,mr],M,2))},1O:G(3c,4o){if(H(3c)=="1n"){3c=4o[3c]}u ao=3c.f5;u 5f=3c.am;u f6=3c.f7;u m=B.J;if(H(3c)=="G"&&H(3c.1w)=="L"){3c=m.mq(3c)}if(H(ao)!="G"){ao=3c}if(H(4o)!="L"){f6=4o}if(H(5f)=="L"){5f=[]}N{5f=5f.9T()}m.1R(5f,M,2);u 7Q=G(){u ap=M;u me=M.2U;if(me.am.K>0){ap=m.2o(me.am,ap)}u 4o=me.f7;if(!4o){4o=D}F me.f5.1w(4o,ap)};7Q.f7=f6;7Q.f5=ao;7Q.am=5f;F 7Q},lF:G(7P){u mp=B.J.1O;R(u k in 7P){u f4=7P[k];if(H(f4)=="G"){7P[k]=mp(f4,7P)}}},5u:G(mo,mn,ml,mk){B.J.ae.5M(mo,mn,ml,mk)},mj:{"5L":1h,"1n":1h,"2y":1h},2f:G(a,b){if(a==b){F 0}u f3=(H(a)=="L"||a===O);u f2=(H(b)=="L"||b===O);if(f3&&f2){F 0}N{if(f3){F-1}N{if(f2){F 1}}}u m=B.J;u f1=m.mj;if(!(H(a)in f1&&H(b)in f1)){1f{F m.ae.3C(a,b)}1e(e){if(e!=m.4d){14 e}}}if(a<b){F-1}N{if(a>b){F 1}}u f0=m.U;14 Y 3p(f0(a)+" 3W "+f0(b)+" 9v 2E be vv")},eM:G(a,b){F B.J.2f(a.9P(),b.9P())},eL:G(a,b){u mi=B.J.2f;u 7O=a.K;u al=0;if(7O>b.K){al=1;7O=b.K}N{if(7O<b.K){al=-1}}R(u i=0;i<7O;i++){u 4j=mi(a[i],b[i]);if(4j){F 4j}}F al},7M:G(mh,mg,mf,md){B.J.ad.5M(mh,mg,mf,md)},U:G(o){if(H(o)=="L"){F"L"}N{if(o===O){F"O"}}1f{if(H(o.1K)=="G"){F o.1K()}N{if(H(o.U)=="G"&&o.U!=M.2U){F o.U()}}F B.J.ad.3C(o)}1e(e){if(H(o.1r)=="1n"&&(o.1l==cZ.1U.1l||o.1l==vu.1U.1l)){F o.1r}}1f{u eZ=(o+"")}1e(e){F"["+H(o)+"]"}if(H(o)=="G"){o=eZ.23(/^\\s+/,"");u 5n=o.2A("{");if(5n!=-1){o=o.3H(0,5n)+"{...}"}}F eZ},eK:G(o){u m=B.J;F"["+m.2r(m.U,o).2b(", ")+"]"},ac:G(o){F("\\""+o.23(/(["\\\\])/g,"\\\\$1")+"\\"").23(/[\\f]/g,"\\\\f").23(/[\\b]/g,"\\\\b").23(/[\\n]/g,"\\\\n").23(/[\\t]/g,"\\\\t").23(/[\\r]/g,"\\\\r")},eJ:G(o){F o+""},ly:G(mc,mb,ma,m9){B.J.ab.5M(mc,mb,ma,m9)},lx:G(){F dB("("+M[0]+")")},lz:G(o){u 5e=H(o);if(5e=="L"){F"L"}N{if(5e=="2y"||5e=="5L"){F o+""}N{if(o===O){F"O"}}}u m=B.J;u eY=m.ac;if(5e=="1n"){F eY(o)}u me=M.2U;u 3S;if(H(o.m8)=="G"){3S=o.m8();if(o!==3S){F me(3S)}}if(H(o.m7)=="G"){3S=o.m7();if(o!==3S){F me(3S)}}if(5e!="G"&&H(o.K)=="2y"){u X=[];R(u i=0;i<o.K;i++){u 2i=me(o[i]);if(H(2i)!="1n"){2i="L"}X.1c(2i)}F"["+X.2b(", ")+"]"}1f{3S=m.ab.3C(o);F me(3S)}1e(e){if(e!=m.4d){14 e}}if(5e=="G"){F O}X=[];R(u k in o){u ak;if(H(k)=="2y"){ak="\\""+k+"\\""}N{if(H(k)=="1n"){ak=eY(k)}N{2V}}2i=me(o[k]);if(H(2i)!="1n"){2V}X.1c(ak+":"+2i)}F"{"+X.2b(", ")+"}"},lE:G(a,b){F(B.J.2f(a,b)===0)},lD:G(eX,4n){if(eX.K!=4n.K){F 1m}F(B.J.2f(eX,4n)===0)},2o:G(){u eW=[];u m6=B.J.1R;R(u i=0;i<M.K;i++){m6(eW,M[i])}F eW},eR:G(2h){u m=B.J;u eU=m.2f;if(M.K==1){F G(a,b){F eU(a[2h],b[2h])}}u eV=m.1R(O,M);F G(a,b){u aj=0;R(u i=0;(aj===0)&&(i<eV.K);i++){u 2h=eV[i];aj=eU(a[2h],b[2h])}F aj}},lC:G(2h){u m5=B.J.eR.1w(D,M);F G(a,b){F m5(b,a)}},2z:G(m4){u m=B.J;F m.1O.1w(D,m.1R([m4,L],M,1))},67:G(m0,1g){if(1g.K===0){F O}u ai=1g[0];u m3=B.J.2f;R(u i=1;i<1g.K;i++){u o=1g[i];if(m3(o,ai)==m0){ai=o}}F ai},lB:G(){F B.J.67(1,M)},lA:G(){F B.J.67(-1,M)},bi:G(1g,lY,lZ,3B){if(H(3B)=="L"||3B===O){3B=1g.K}R(u i=(lZ||0);i<3B;i++){if(1g[i]===lY){F i}}F-1},eO:G(1g,lW,lX,3B){if(H(3B)=="L"||3B===O){3B=1g.K}u 4j=B.J.2f;R(u i=(lX||0);i<3B;i++){if(4j(1g[i],lW)===0){F i}}F-1},d4:G(1j,lV){u ah=[1j];u lU=B.J.1R;1M(ah.K){u X=lV(ah.2P());if(X){lU(ah,X)}}},3f:G(ag){u 2w=ag.1r;if(H(2w)=="L"){2w=""}N{2w=2w+"."}R(u 1b in ag){u o=ag[1b];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+1b}1e(e){}}}},dw:G(3s,68){if(H(B.S)!="L"&&M.K==1&&(H(3s)=="1n"||(H(3s.3T)!="L"&&3s.3T>0))){u kv=B.S.d5(3s);3s=kv[0];68=kv[1]}N{if(M.K==1){u o=3s;3s=[];68=[];R(u k in o){u v=o[k];if(H(v)!="G"){3s.1c(k);68.1c(v)}}}}u W=[];u lT=28.2a(3s.K,68.K);u eT=B.J.af;R(u i=0;i<lT;i++){v=68[i];if(H(v)!="L"&&v!==O){W.1c(eT(3s[i])+"="+eT(v))}}F W.2b("&")},lw:G(lS,lQ){u 7N=lS.23(/\\+/g,"%20").2R("&");u o={};u 5d;if(H(lR)!="L"){5d=lR}N{5d=vt}if(lQ){R(u i=0;i<7N.K;i++){u 2n=7N[i].2R("=");u 1b=5d(2n[0]);u 4n=o[1b];if(!(4n 2C 7o)){4n=[];o[1b]=4n}4n.1c(5d(2n[1]))}}N{R(i=0;i<7N.K;i++){2n=7N[i].2R("=");o[5d(2n[0])]=5d(2n[1])}}F o}});B.J.4a=G(){D.4m=[]};B.J.4a.1U={5M:G(1b,eS,3y,lP){if(lP){D.4m.e9([1b,eS,3y])}N{D.4m.1c([1b,eS,3y])}},3C:G(){R(u i=0;i<D.4m.K;i++){u 2n=D.4m[i];if(2n[1].1w(D,M)){F 2n[2].1w(D,M)}}14 B.J.4d},vs:G(1b){R(u i=0;i<D.4m.K;i++){u 2n=D.4m[i];if(2n[0]==1b){D.4m.4y(i,1);F 1h}}F 1m}};B.J.1z=["4f","4L","1R","2l","8Z","lO","lN","lM","5a","4i","24","lL","66","lo","ln","lK","lJ","lI","7e","3A","eN","lH","2r","lG","47","1O","lF","4d","4a","5u","2f","7M","U","lE","lD","2o","eR","lC","2z","lm","67","lp","eI","lB","lA","d4","ll","af","dw","lz","ly","lx","lw","eO","bi","bg","lv"];B.J.1W=["3f","ae","ad","ab","eM","eL","eK","ac","eJ"];B.J.2Y=G(lu,eP){if(H(B.eQ)=="L"){B.eQ=(B.3d||(H(1x)=="L"&&H(1q)=="L"))}if(!B.eQ){F}u 1p=eP.2k[":1p"];R(u i=0;i<1p.K;i++){lu[1p[i]]=eP[1p[i]]}};B.J.2d=G(){u m=D;m.vr=m.24;m.vq=m.eO;if(H(ls)!="L"){m.af=G(lr){F ls(lr).23(/\\\'/g,"%27")}}N{m.af=G(lq){F vp(lq).23(/\\+/g,"%2B").23(/\\"/g,"%22").W.23(/\\\'/g,"%27")}}m.5a=G(1b){D.43=1b;D.1b=1b};m.5a.1U=Y 2x();m.2l(m.5a.1U,{U:G(){if(D.43&&D.43!=D.1b){F D.1b+"("+m.U(D.43)+")"}N{F D.1b+"()"}},1l:m.24("U")});m.4d=Y m.5a("B.J.4d");m.lp=m.2z(m.67,1);m.eI=m.2z(m.67,-1);m.lo=m.66("G");m.ln=m.66("L");m.lm=m.2z(m.2l,O);m.ll=m.2z(m.2r,O);m.ae=Y m.4a();m.5u("vo",m.eN,m.eM);m.5u("ej",m.3A,m.eL);m.ad=Y m.4a();m.7M("ej",m.3A,m.eK);m.7M("1n",m.66("1n"),m.ac);m.7M("vn",m.66("2y","5L"),m.eJ);m.ab=Y m.4a();u 1p=m.2o(m.1z,m.1W);m.2k={":3e":m.2o(m.1W),":1p":1p};m.3f(D)};B.J.2d();if(!B.3d){2f=B.J.2f}B.J.2Y(D,B.J);if(H(1q)!="L"){1q.2X("B.15");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.15 3F on B.J!"}if(H(B.15)=="L"){B.15={}}B.15.1r="B.15";B.15.1Y="1.3.1";B.J.2l(B.15,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},9W:G(1b,lk,lj,lh){B.15.9Y.5M(1b,lk,lj,lh)},1Q:G(3R,lg){u I=B.15;if(M.K==2){F I.9Z(G(a){F a!=lg},3R)}if(H(3R.1a)=="G"){F 3R}N{if(H(3R.1Q)=="G"){F 3R.1Q()}}1f{F I.9Y.3C(3R)}1e(e){u m=B.J;if(e==m.4d){e=Y 3p(H(3R)+": "+m.U(3R)+" is 2E vm")}14 e}},eu:G(n){if(!n){n=0}u m=B.J;F{U:G(){F"eu("+n+")"},1l:m.24("U"),1a:m.4f(n)}},et:G(p){u I=B.15;u m=B.J;u 1g=[];u lf=I.1Q(p);F{U:G(){F"et(...)"},1l:m.24("U"),1a:G(){1f{u W=lf.1a();1g.1c(W);F W}1e(e){if(e!=I.25){14 e}if(1g.K===0){D.1a=G(){14 I.25}}N{u i=-1;D.1a=G(){i=(i+1)%1g.K;F 1g[i]}}F D.1a()}}}},7b:G(Q,n){u m=B.J;if(H(n)=="L"){F{U:G(){F"7b("+m.U(Q)+")"},1l:m.24("U"),1a:G(){F Q}}}F{U:G(){F"7b("+m.U(Q)+", "+n+")"},1l:m.24("U"),1a:G(){if(n<=0){14 B.15.25}n-=1;F Q}}},1a:G(ld){F ld.1a()},es:G(p,q){u m=B.J;u 1a=B.15.1a;u lc=m.2r(1Q,M);F{U:G(){F"es(...)"},1l:m.24("U"),1a:G(){F m.2r(1a,lc)}}},a1:G(3b,1V){u m=B.J;1V=B.15.1Q(1V);if(3b===O){3b=m.4i.7L}F{U:G(){F"a1(...)"},1l:m.24("U"),1a:G(){1M(1h){u W=1V.1a();if(3b(W)){F W}}F L}}},a0:G(3b,1V){u m=B.J;1V=B.15.1Q(1V);if(3b===O){3b=m.4i.7L}F{U:G(){F"a0(...)"},1l:m.24("U"),1a:G(){1M(1h){u W=1V.1a();if(!3b(W)){F W}}F L}}},er:G(1V){u I=B.15;u m=B.J;1V=I.1Q(1V);u 5c=0;u 2J=0;u 3a=1;u i=-1;if(M.K==2){2J=M[1]}N{if(M.K==3){5c=M[1];2J=M[2]}N{5c=M[1];2J=M[2];3a=M[3]}}F{U:G(){F"er("+["...",5c,2J,3a].2b(", ")+")"},1l:m.24("U"),1a:G(){u W;1M(i<5c){W=1V.1a();i++}if(5c>=2J){14 I.25}5c+=3a;F W}}},4c:G(aa,p,q){u m=B.J;u I=B.15;u lb=m.2r(I.1Q,m.1R(O,M,1));u 2r=m.2r;u 1a=I.1a;F{U:G(){F"4c(...)"},1l:m.24("U"),1a:G(){F aa.1w(D,2r(1a,lb))}}},ep:G(aa,1V,I){1V=B.15.1Q(1V);u m=B.J;F{U:G(){F"ep(...)"},1l:m.24("U"),1a:G(){F aa.1w(I,1V.1a())}}},55:G(p,q){u I=B.15;u m=B.J;if(M.K==1){F I.1Q(M[0])}u 64=m.2r(I.1Q,M);F{U:G(){F"55(...)"},1l:m.24("U"),1a:G(){1M(64.K>1){1f{F 64[0].1a()}1e(e){if(e!=I.25){14 e}64.2P()}}if(64.K==1){u a9=64.2P();D.1a=m.1O("1a",a9);F D.1a()}14 I.25}}},9Z:G(3b,1V){u I=B.15;1V=I.1Q(1V);F{U:G(){F"9Z(...)"},1l:B.J.24("U"),1a:G(){u W=1V.1a();if(!3b(W)){D.1a=G(){14 I.25};D.1a()}F W}}},eo:G(3b,1V){1V=B.15.1Q(1V);u m=B.J;u 1O=m.1O;F{"U":G(){F"eo(...)"},"1l":m.24("U"),"1a":G(){1M(1h){u W=1V.1a();if(!3b(W)){2K}}D.1a=1O("1a",1V);F W}}},a7:G(63,2u,la){2u.62[63]=-1;u m=B.J;u l9=m.eI;F{U:G(){F"en("+63+", ...)"},1l:m.24("U"),1a:G(){u W;u i=2u.62[63];if(i==2u.29){W=la.1a();2u.a8.1c(W);2u.29+=1;2u.62[63]+=1}N{W=2u.a8[i-2u.2a];2u.62[63]+=1;if(i==2u.2a&&l9(2u.62)!=2u.2a){2u.2a+=1;2u.a8.2P()}}F W}}},en:G(a6,n){u W=[];u 2u={"62":[],"a8":[],"29":-1,"2a":-1};if(M.K==1){n=2}u I=B.15;a6=I.1Q(a6);u a7=I.a7;R(u i=0;i<n;i++){W.1c(a7(i,2u,a6))}F W},2G:G(4l){u m=B.J;if(H(4l.9T)=="G"){F 4l.9T()}N{if(m.3A(4l)){F m.2o(4l)}}u I=B.15;4l=I.1Q(4l);u W=[];1f{1M(1h){W.1c(4l.1a())}}1e(e){if(e!=I.25){14 e}F W}F L},7H:G(fn,7K,l8){u i=0;u x=l8;u I=B.15;7K=I.1Q(7K);if(M.K<3){1f{x=7K.1a()}1e(e){if(e==I.25){e=Y 3p("7H() of vl vk vj no vi 3m")}14 e}i++}1f{1M(1h){x=fn(x,7K.1a())}}1e(e){if(e!=I.25){14 e}}F x},7I:G(){u 4k=0;u 2J=0;u 3a=1;if(M.K==1){2J=M[0]}N{if(M.K==2){4k=M[0];2J=M[1]}N{if(M.K==3){4k=M[0];2J=M[1];3a=M[2]}N{14 Y 3p("7I() vh 1, 2, or 3 M!")}}}if(3a===0){14 Y 3p("7I() 3a 5p 2E be 0")}F{1a:G(){if((3a>0&&4k>=2J)||(3a<0&&4k<=2J)){14 B.15.25}u W=4k;4k+=3a;F W},U:G(){F"7I("+[4k,2J,3a].2b(", ")+")"},1l:B.J.24("U")}},l0:G(a5,l7){u x=l7||0;u I=B.15;a5=I.1Q(a5);1f{1M(1h){x+=a5.1a()}}1e(e){if(e!=I.25){14 e}}F x},em:G(a4){u I=B.15;a4=I.1Q(a4);1f{1M(1h){a4.1a()}}1e(e){if(e!=I.25){14 e}}},9a:G(7J,1A,I){u m=B.J;if(M.K>2){1A=m.1O(1A,I)}if(m.3A(7J)){1f{R(u i=0;i<7J.K;i++){1A(7J[i])}}1e(e){if(e!=B.15.25){14 e}}}N{I=B.15;I.em(I.4c(1A,7J))}},kZ:G(l6,1A){u I=B.15;1f{I.a0(1A,l6).1a();F 1m}1e(e){if(e!=I.25){14 e}F 1h}},kY:G(l5,4j){u W=B.15.2G(l5);if(M.K==1){4j=B.J.2f}W.iz(4j);F W},kX:G(l4){u W=B.15.2G(l4);W.vg();F W},kW:G(l3,1A){u I=B.15;1f{I.a1(1A,l3).1a();F 1h}1e(e){if(e!=I.25){14 e}F 1m}},kV:G(1g,5b){if(B.J.3A(5b)){R(u i=0;i<5b.K;i++){1g.1c(5b[i])}}N{u I=B.15;5b=I.1Q(5b);1f{1M(1h){1g.1c(5b.1a())}}1e(e){if(e!=I.25){14 e}}}F 1g},ek:G(a3,eH){u m=B.J;u I=B.15;if(M.K<2){eH=m.4i.eE}a3=I.1Q(a3);u pk=L;u k=L;u v;G eF(){v=a3.1a();k=eH(v)}G l2(){u 7j=v;v=L;F 7j}u eG=1h;F{U:G(){F"ek(...)"},1a:G(){1M(k==pk){eF();if(eG){eG=1m;2K}}pk=k;F[k,{1a:G(){if(v==L){eF()}if(k!=pk){14 I.25}F l2()}}]}}},kU:G(a2,eD){u m=B.J;u I=B.15;if(M.K<2){eD=m.4i.eE}a2=I.1Q(a2);u ey=[];u eA=1h;u ez;1M(1h){1f{u eB=a2.1a();u 2h=eD(eB)}1e(e){if(e==I.25){2K}14 e}if(eA||2h!=ez){u eC=[];ey.1c([2h,eC])}eC.1c(eB);eA=1m;ez=2h}F ey},9X:G(ex){u i=0;F{U:G(){F"9X(...)"},1l:B.J.24("U"),1a:G(){if(i>=ex.K){14 B.15.25}F ex[i++]}}},eh:G(ew){F(ew&&H(ew.ei)=="G")},9V:G(l1){F{U:G(){F"9V(...)"},1l:B.J.24("U"),1a:G(){u W=l1.ei();if(W===O||W===L){14 B.15.25}F W}}}});B.15.1W=["9Y","9X","eh","9V",];B.15.1z=["25","9W","1Q","eu","et","7b","1a","es","a1","a0","er","4c","ep","55","9Z","eo","en","2G","7H","7I","l0","em","9a","kZ","kY","kX","kW","kV","ek","kU"];B.15.2d=G(){u m=B.J;D.25=Y m.5a("25");D.9Y=Y m.4a();D.9W("ej",m.3A,D.9X);D.9W("ei",D.eh,D.9V);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.15.2d();if(!B.3d){7H=B.15.7H}B.J.2Y(D,B.15);if(H(1q)!="L"){1q.2X("B.1H");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1H 3F on B.J!"}if(H(B.1H)=="L"){B.1H={}}B.1H.1r="B.1H";B.1H.1Y="1.3.1";B.1H.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1H.1l=G(){F D.1K()};B.1H.1z=["5C","49","7A","kR","2L","5Z","kG","ch","kE","kC"];B.1H.1W=["ef","e8","e7"];B.1H.49=G(1P,kT,3z){D.1P=1P;D.3N=kT;D.3z=3z;D.vf=Y 3Q()};B.1H.49.1U={U:G(){u m=B.J;F"49("+m.2r(m.U,[D.1P,D.3N,D.3z]).2b(", ")+")"},1l:B.J.24("U")};B.J.2l(B.1H,{ef:G(7F){u I=B.1H;if(H(7F)=="1n"){7F=I.5C[7F]}F G(1t){u 7G=1t.3N;if(H(7G)=="1n"){7G=I.5C[7G]}F 7G>=7F}},e8:G(){u kS=B.1H.49;R(u i=0;i<M.K;i++){if(!(M[i]2C kS)){F 1m}}F 1h},e7:G(a,b){F B.J.2f([a.3N,a.3z],[b.3N,b.3z])},kR:G(1t){cq("1P: "+1t.1P+"\\ve: "+1t.3N+"\\vd: "+1t.3z.2b(" "))}});B.1H.7A=G(7E){D.4f=0;if(H(7E)=="L"||7E===O){7E=-1}D.ec=7E;D.4h=[];D.7C={};D.e5=1m};B.1H.7A.1U={vc:G(){D.4h.4y(0,D.4h.K)},kK:G(1t){if(H(2O)!="L"&&2O.eg&&2O.eg.5Z){2O.eg.5Z(1t)}N{if(H(7h)!="L"&&7h.kQ){7h.kQ(1t)}N{if(H(5X)=="G"){5X(1t)}}}},kL:G(1t){R(u k in D.7C){u 2n=D.7C[k];if(2n.kO!=k||(2n[0]&&!2n[0](1t))){2V}2n[1](1t)}},hE:G(ee,7D,kP){if(H(7D)=="1n"){7D=B.1H.ef(7D)}u ed=[7D,kP];ed.kO=ee;D.7C[ee]=ed},c9:G(kN){gi D.7C[kN]},kH:G(kM,vb){u 1t=Y B.1H.49(D.4f,kM,B.J.1R(O,M,1));D.4h.1c(1t);D.kL(1t);if(D.e5){D.kK(1t.3N+": "+1t.3z.2b(" "))}D.4f+=1;1M(D.ec>=0&&D.4h.K>D.ec){D.4h.2P()}},c8:G(9U){u ea=0;if(!(H(9U)=="L"||9U===O)){ea=28.29(0,D.4h.K-9U)}F D.4h.9T(ea)},kJ:G(7B){if(H(7B)=="L"||7B===O){7B=30}u 9S=D.c8(7B);if(9S.K){u 1g=2r(G(m){F"\\n ["+m.1P+"] "+m.3N+": "+m.3z.2b(" ")},9S);1g.e9("va "+9S.K+" v9:");F 1g.2b("")}F""},v8:G(kI){if(H(B.1I)=="L"){cq(D.kJ())}N{B.1I.bY(kI||1m)}}};B.1H.2d=G(){D.5C={8M:40,8L:50,8K:30,8J:20,8I:10};u m=B.J;m.5u("49",D.e8,D.e7);u 61=m.2z;u e6=D.7A;u 60=e6.1U.kH;m.2l(D.7A.1U,{kF:61(60,"8I"),5Z:61(60,"8J"),dE:61(60,"8M"),kD:61(60,"8L"),kB:61(60,"8K")});u I=D;u 5Y=G(1b){F G(){I.2L[1b].1w(I.2L,M)}};D.5Z=5Y("5Z");D.kG=5Y("dE");D.ch=5Y("kF");D.kE=5Y("kD");D.kC=5Y("kB");D.2L=Y e6();D.2L.e5=1h;D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};if(H(5X)=="L"&&H(2v)!="L"&&2v.kA&&H(kz)!="L"){5X=G(){5X.3G=M;u ev=2v.kA("v7");ev.v6("5X",1m,1h);kz(ev)}}B.1H.2d();B.J.2Y(D,B.1H);if(H(1q)!="L"){1q.2X("B.1D")}if(H(B)=="L"){B={}}if(H(B.1D)=="L"){B.1D={}}B.1D.1r="B.1D";B.1D.1Y="1.3.1";B.1D.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1D.1l=G(){F D.1K()};B.1D.ks=G(1y){1y=1y+"";if(H(1y)!="1n"||1y.K===0){F O}u 7z=1y.2R("-");if(7z.K===0){F O}F Y 3Q(7z[0],7z[1]-1,7z[2])};B.1D.ky=/(\\d{4,})(?:-(\\d{1,2})(?:-(\\d{1,2})(?:[T ](\\d{1,2}):(\\d{1,2})(?::(\\d{1,2})(?:\\.(\\d+))?)?(?:(Z)|([+-])(\\d{1,2})(?::(\\d{1,2}))?)?)?)?)?/;B.1D.kr=G(1y){1y=1y+"";if(H(1y)!="1n"||1y.K===0){F O}u X=1y.3C(B.1D.ky);if(H(X)=="L"||X===O){F O}u 5W,7y,7x,9R,2a,9Q,7w;5W=3w(X[1],10);if(H(X[2])=="L"||X[2]===""){F Y 3Q(5W)}7y=3w(X[2],10)-1;7x=3w(X[3],10);if(H(X[4])=="L"||X[4]===""){F Y 3Q(5W,7y,7x)}9R=3w(X[4],10);2a=3w(X[5],10);9Q=(H(X[6])!="L"&&X[6]!=="")?3w(X[6],10):0;if(H(X[7])!="L"&&X[7]!==""){7w=28.ha(c5*4M("0."+X[7]))}N{7w=0}if((H(X[8])=="L"||X[8]==="")&&(H(X[9])=="L"||X[9]==="")){F Y 3Q(5W,7y,7x,9R,2a,9Q,7w)}u 58;if(H(X[9])!="L"&&X[9]!==""){58=3w(X[10],10)*v5;if(H(X[11])!="L"&&X[11]!==""){58+=3w(X[11],10)*kw}if(X[9]=="-"){58=-58}}N{58=0}F Y 3Q(3Q.v4(5W,7y,7x,9R,2a,9Q,7w)-58)};B.1D.dY=G(2g,kx){if(H(2g)=="L"||2g===O){F O}u hh=2g.v3();u mm=2g.v2();u ss=2g.v1();u 1g=[((kx&&(hh<10))?"0"+hh:hh),((mm<10)?"0"+mm:mm),((ss<10)?"0"+ss:ss)];F 1g.2b(":")};B.1D.kq=G(2g,7v){if(H(2g)=="L"||2g===O){F O}u ku=7v?"T":" ";u kt=7v?"Z":"";if(7v){2g=Y 3Q(2g.9P()+(2g.v0()*kw))}F B.1D.dX(2g)+ku+B.1D.dY(2g,7v)+kt};B.1D.dX=G(2g){if(H(2g)=="L"||2g===O){F O}u e4=B.1D.e3;F[2g.dZ(),e4(2g.e1()+1),e4(2g.e0())].2b("-")};B.1D.kp=G(d){d=d+"";if(H(d)!="1n"||d.K===0){F O}u a=d.2R("/");F Y 3Q(a[2],a[0]-1,a[1])};B.1D.e3=G(n){F(n>9)?n:"0"+n};B.1D.ko=G(d){if(H(d)=="L"||d===O){F O}u e2=B.1D.e3;F[e2(d.e1()+1),e2(d.e0()),d.dZ()].2b("/")};B.1D.kn=G(d){if(H(d)=="L"||d===O){F O}F[d.e1()+1,d.e0(),d.dZ()].2b("/")};B.1D.1z=["ks","kr","dY","kq","dX","kp","ko","kn"];B.1D.1W=[];B.1D.2k={":3e":B.1D.1z,":1p":B.1D.1z};B.1D.2d=G(){u 2w=D.1r+".";R(u k in D){u o=D[k];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+k}1e(e){}}}};B.1D.2d();if(H(B.J)!="L"){B.J.2Y(D,B.1D)}N{(G(km,dW){if((H(1x)=="L"&&H(1q)=="L")||(H(B.3d)=="5L"&&B.3d)){u 1p=dW.2k[":1p"];R(u i=0;i<1p.K;i++){km[1p[i]]=dW[1p[i]]}}})(D,B.1D)}if(H(1q)!="L"){1q.2X("B.1s")}if(H(B)=="L"){B={}}if(H(B.1s)=="L"){B.1s={}}B.1s.1r="B.1s";B.1s.1Y="1.3.1";B.1s.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1s.1l=G(){F D.1K()};B.1s.ke=G(kl,kk,kj,ki,kh,dV,kg,9N,kf){F G(1P){1P=4M(1P);if(H(1P)=="L"||1P===O||k8(1P)){F kl}u 9L=kk;u 9K=kj;if(1P<0){1P=-1P}N{9L=9L.23(/-/,"")}u me=M.2U;u 9M=B.1s.dJ(ki);if(kh){1P=1P*3k;9K=9M.9y+9K}1P=B.1s.dK(1P,dV);u 9O=1P.2R(/\\./);u 3r=9O[0];u 3P=(9O.K==1)?"":9O[1];u X="";1M(3r.K<kg){3r="0"+3r}if(9N){1M(3r.K>9N){u i=3r.K-9N;X=9M.9A+3r.2W(i,3r.K)+X;3r=3r.2W(0,i)}}X=3r+X;if(dV>0){1M(3P.K<kf){3P=3P+"0"}X=X+9M.9z+3P}F 9L+X+9K}};B.1s.k5=G(9J,9H,9G){if(H(9H)=="L"){9H=""}u 3q=9J.3C(/((?:[0#]+,)?[0#]+)(?:\\.([0#]+))?(%)?/);if(!3q){14 3p("uZ uY")}u 7u=9J.3H(0,3q.c6);u kd=9J.3H(3q.c6+3q[0].K);if(7u.uX(/-/)==-1){7u=7u+"-"}u 9I=3q[1];u 3P=(H(3q[2])=="1n"&&3q[2]!="")?3q[2]:"";u kc=(H(3q[3])=="1n"&&3q[3]!="");u dU=9I.2R(/,/);u 9F;if(H(9G)=="L"){9G="dG"}if(dU.K==1){9F=O}N{9F=dU[1].K}u ka=9I.K-9I.23(/0/g,"").K;u k9=3P.K-3P.23(/0/g,"").K;u kb=3P.K;u W=B.1s.ke(9H,7u,kd,9G,kc,kb,ka,9F,k9);u m=B.J;if(m){u fn=M.2U;u 3G=m.2o(M);W.U=G(){F[I.1r,"(",2r(m.U,3G).2b(", "),")"].2b("")}}F W};B.1s.dJ=G(4g){if(H(4g)=="L"||4g===O){4g="dG"}if(H(4g)=="1n"){u W=B.1s.5V[4g];if(H(W)=="1n"){W=M.2U(W);B.1s.5V[4g]=W}F W}N{F 4g}};B.1s.k4=G(dT,9E){if(9E){u X=dT/9E;if(!k8(X)){F B.1s.9B(dT/9E)}}F"0"};B.1s.9B=G(dS){u dR=(dS<0?"-":"");u s=28.8B(28.uW(dS)*3k).1l();if(s=="0"){F s}if(s.K<3){1M(s.3Z(s.K-1)=="0"){s=s.2W(0,s.K-1)}F dR+"0."+s}u 5E=dR+s.2W(0,s.K-2);u 7t=s.2W(s.K-2,s.K);if(7t=="uV"){F 5E}N{if(7t.3Z(1)=="0"){F 5E+"."+7t.3Z(0)}N{F 5E+"."+7t}}};B.1s.dI=G(1y,dQ){1y=1y+"";if(H(1y)!="1n"){F O}if(!dQ){F 1y.23(/^\\s+/,"")}N{F 1y.23(Y 8V("^["+dQ+"]+"),"")}};B.1s.dH=G(1y,dP){1y=1y+"";if(H(1y)!="1n"){F O}if(!dP){F 1y.23(/\\s+$/,"")}N{F 1y.23(Y 8V("["+dP+"]+$"),"")}};B.1s.k2=G(1y,dO){u I=B.1s;F I.dH(I.dI(1y,dO),dO)};B.1s.dL=G(9D,9C){9D=28.8B(9D*28.dN(10,9C));u X=(9D*28.dN(10,-9C)).6I(9C);if(X.3Z(0)=="."){X="0"+X}F X};B.1s.dK=G(k7,dM){F B.1s.dL(k7+0.5*28.dN(10,-dM),dM)};B.1s.k3=G(k6){F B.1s.9B(3k*k6)+"%"};B.1s.1z=["dL","dK","k5","dJ","k4","9B","k3","dI","dH","k2"];B.1s.5V={k1:{9A:",",9z:".",9y:"%"},uU:{9A:".",9z:",",9y:"%"},uT:{9A:" ",9z:",",9y:"%"},"dG":"k1"};B.1s.1W=[];B.1s.2k={":1p":B.1s.1z,":3e":B.1s.1z};B.1s.2d=G(){u 2w=D.1r+".";u k,v,o;R(k in D.5V){o=D.5V[k];if(H(o)=="3n"){o.U=G(){F D.1r};o.1r=2w+"5V."+k}}R(k in D){o=D[k];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+k}1e(e){}}}};B.1s.2d();if(H(B.J)!="L"){B.J.2Y(D,B.1s)}N{(G(k0,dF){if((H(1x)=="L"&&H(1q)=="L")||(H(B.3d)=="5L"&&B.3d)){u 1p=dF.2k[":1p"];R(u i=0;i<1p.K;i++){k0[1p[i]]=dF[1p[i]]}}})(D,B.1s)}if(H(1q)!="L"){1q.2X("B.1k");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1k 3F on B.J!"}if(H(B.1k)=="L"){B.1k={}}B.1k.1r="B.1k";B.1k.1Y="1.3.1";B.1k.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1k.1l=G(){F D.1K()};B.1k.2t=G(jZ){D.55=[];D.id=D.7n();D.2H=-1;D.54=0;D.53=[O,O];D.7m=jZ;D.7l=1m;D.7r=1m};B.1k.2t.1U={U:G(){u 7s;if(D.2H==-1){7s="uS"}N{if(D.2H===0){7s="uR"}N{7s="dE"}}F"2t("+D.id+", "+7s+")"},1l:B.J.24("U"),7n:B.J.4f(),jY:G(){u I=B.1k;if(D.2H==-1){if(D.7m){D.7m(D)}N{D.7l=1h}if(D.2H==-1){D.52(Y I.di(D))}}N{if((D.2H===0)&&(D.53[0]2C I.2t)){D.53[0].jY()}}},jQ:G(){D.54++},jX:G(){D.54--;if((D.54===0)&&(D.2H>=0)){D.9u()}},jR:G(X){D.9x(X);D.jX()},9x:G(X){D.2H=((X 2C 2x)?1:0);D.53[D.2H]=X;D.9u()},dD:G(){if(D.2H!=-1){if(!D.7l){14 Y B.1k.dj(D)}D.7l=1m;F}},3o:G(X){D.dD();if(X 2C B.1k.2t){14 Y 2x("2t jW 9v aB be 7r if jV jU jT jS of a 3o")}D.9x(X)},52:G(X){D.dD();u I=B.1k;if(X 2C I.2t){14 Y 2x("2t jW 9v aB be 7r if jV jU jT jS of a 3o")}if(!(X 2C 2x)){X=Y I.9p(X)}D.9x(X)},jP:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(fn,fn)},5Q:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(fn,O)},jA:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(O,fn)},9w:G(cb,eb){if(D.7r){14 Y 2x("uQ uP 9v 2E be re-uO")}D.55.1c([cb,eb]);if(D.2H>=0){D.9u()}F D},9u:G(){u dC=D.55;u 56=D.2H;u X=D.53[56];u I=D;u cb=O;1M(dC.K>0&&D.54===0){u 2n=dC.2P();u f=2n[56];if(f===O){2V}1f{X=f(X);56=((X 2C 2x)?1:0);if(X 2C B.1k.2t){cb=G(X){I.jR(X)};D.jQ()}}1e(3O){56=1;if(!(3O 2C 2x)){3O=Y B.1k.9p(3O)}X=3O}}D.2H=56;D.53[56]=X;if(cb&&D.54){X.jP(cb);X.7r=1h}}};B.J.2l(B.1k,{dk:G(){F dB("("+M[0].jN+")")},dp:G(uN){u d=Y B.1k.2t();d.3o.1w(d,M);F d},9q:G(uM){u d=Y B.1k.2t();d.52.1w(d,M);F d},do:G(){u I=M.2U;if(!I.7q){u dy=[G(){F Y 7q()},G(){F Y dA("jO.dz")},G(){F Y dA("uL.dz")},G(){F Y dA("jO.dz.4.0")},G(){14 Y B.1k.dh("uK uJ 2E uI 7q")}];R(u i=0;i<dy.K;i++){u 1A=dy[i];1f{I.7q=1A;F 1A()}1e(e){}}}F I.7q()},dx:G(){},jK:G(d){if(D.uH==4){1f{D.5T=O}1e(e){1f{D.5T=B.1k.dx}1e(e){}}u 5U=O;1f{5U=D.jm;if(!5U&&B.J.7e(D.jN)){5U=jM}}1e(e){}if(5U==hQ||5U==jM){d.3o(D)}N{u 3O=Y B.1k.dg(D,"uG uF");if(3O.2y){d.52(3O)}N{d.52(3O)}}}},jL:G(2s){1f{2s.5T=O}1e(e){1f{2s.5T=B.1k.dx}1e(e){}}2s.uE()},dl:G(2s,7p){if(H(7p)=="L"||7p===O){7p=""}u m=B.J;u I=B.1k;u d=Y I.2t(m.2z(I.jL,2s));1f{2s.5T=m.1O(I.jK,2s,d);2s.uD(7p)}1e(e){1f{2s.5T=O}1e(uC){}d.52(e)}F d},dn:G(5F){u I=B.1k;u 2s=I.do();if(M.K>1){u m=B.J;u qs=m.dw.1w(O,m.1R(O,M,1));if(qs){5F+="?"+qs}}2s.cp("uB",5F,1h);F I.dl(2s)},jv:G(5F){u I=B.1k;u d=I.dn.1w(I,M);d=d.5Q(I.dk);F d},dm:G(jJ,dv){u d=Y B.1k.2t();u m=B.J;if(H(dv)!="L"){d.5Q(G(){F dv})}u jI=uA(m.1O("3o",d),28.8B(jJ*c5));d.7m=G(){1f{uz(jI)}1e(e){}};F d},ju:G(jH,1A){u m=B.J;u jG=m.2z.1w(m,m.1R(O,M,1));F B.1k.dm(jH).5Q(G(X){F jG()})}});B.1k.5O=G(){D.5S=[];D.4e=1m;D.id=D.7n()};B.1k.5O.1U={bX:B.1k.5O,uy:G(){d=Y B.1k.2t();if(D.4e){D.5S.1c(d)}N{D.4e=1h;d.3o(D)}F d},jF:G(){if(!D.4e){14 3p("ux to jF an jE 5O")}D.4e=1m;if(D.5S.K>0){D.4e=1h;D.5S.2P().3o(D)}},7n:B.J.4f(),U:G(){u 9t;if(D.4e){9t="4e, "+D.5S.K+" 5S"}N{9t="jE"}F"5O("+D.id+", "+9t+")"},1l:B.J.24("U")};B.1k.7i=G(2G,du,jC,jB,jD){D.2G=2G;D.9r=Y 7o(D.2G.K);D.55=[];D.id=D.7n();D.2H=-1;D.54=0;D.53=[O,O];D.7m=jD;D.7l=1m;if(D.2G.K===0&&!du){D.3o(D.9r)}D.dr=0;D.jz=du;D.jy=jC;D.jx=jB;u 9s=0;B.J.2r(B.J.1O(G(d){d.5Q(B.J.1O(D.dt,D),9s,1h);d.jA(B.J.1O(D.dt,D),9s,1m);9s+=1},D),D.2G)};B.J.2l(B.1k.7i.1U,B.1k.2t.1U);B.J.2l(B.1k.7i.1U,{dt:G(ds,7k,5R){D.9r[ds]=[7k,5R];D.dr+=1;if(D.2H!==0){if(7k&&D.jz){D.3o([ds,5R])}N{if(!7k&&D.jy){D.52(5R)}N{if(D.dr==D.2G.K){D.3o(D.9r)}}}}if(!7k&&D.jx){5R=O}F 5R}});B.1k.jt=G(jw){u d=Y B.1k.7i(jw,1m,1h,1m);d.5Q(G(dq){u 7j=[];R(u i=0;i<dq.K;i++){7j.1c(dq[i][1])}F 7j});F d};B.1k.jr=G(1A){u I=B.1k;u 5P;1f{u r=1A.1w(O,B.J.1R([],M,1));if(r 2C I.2t){5P=r}N{if(r 2C 2x){5P=I.9q(r)}N{5P=I.dp(r)}}}1e(e){5P=I.9q(e)}F 5P};B.1k.1z=["dj","di","dh","9p","dg","2t","dp","9q","do","dn","jv","dm","ju","dl","5O","7i","jt","jr"];B.1k.1W=["dk"];B.1k.2d=G(){u m=B.J;u ne=m.2z(m.jq,D);ne("dj",G(jp){D.jo=jp});ne("di",G(jn){D.jo=jn});ne("dh",G(1t){D.43=1t});ne("9p",G(1t){D.43=1t});ne("dg",G(2s,1t){D.2s=2s;D.43=1t;1f{D.2y=2s.jm}1e(e){}});D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.1k.2d();B.J.2Y(D,B.1k);if(H(1q)!="L"){1q.2X("B.S");1q.2M("B.15")}if(H(1x)!="L"){1x.26("B.15",[])}1f{if(H(B.15)=="L"){14""}}1e(e){14"B.S 3F on B.15!"}if(H(B.S)=="L"){B.S={}}B.S.1r="B.S";B.S.1Y="1.3.1";B.S.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.S.1l=G(){F D.1K()};B.S.1z=["d5","cr","b9","95","94","j3","9k","cX","cw","iT","iV","4X","9j","iQ","hS","cs","ia","i9","i8","i7","i6","i5","i4","hV","i3","i2","i1","cu","hW","ct","i0","hZ","hY","hX","P","io","il","ik","ij","cm","ih","ii","ig","ie","ic","cv","8d","A","6m","ib","1E","$","4q","aH","cO","cN","iM","5G","iK","9d","9e","iH","iD","9c","iB","cG","97","hU","hT","iw","jh","jb","j6","j5","jk","jl"];B.S.1W=["9b"];B.S.5N=G(w,h){D.w=w;D.h=h};B.S.5N.1U.U=G(){u U=B.J.U;F"{w: "+U(D.w)+", h: "+U(D.h)+"}"};B.S.5t=G(x,y){D.x=x;D.y=y};B.S.5t.1U.U=G(){u U=B.J.U;F"{x: "+U(D.x)+", y: "+U(D.y)+"}"};B.S.5t.1U.1l=G(){F D.U()};B.J.2l(B.S,{jl:G(Q,o){Q=B.S.1E(Q);B.S.4X(Q,{"1T":{"9o":o,"-hL-9o":o,"-uw-9o":o,"47":" uv(9o="+(o*3k)+")"}})},jk:G(){u d=Y B.S.5N();u w=B.S.3X;u b=B.S.1Z.5s;if(w.jj){d.w=w.jj;d.h=w.uu}N{if(b.dd.9n){d.w=b.dd.9n;d.h=b.dd.ji}N{if(b&&b.9n){d.w=b.9n;d.h=b.ji}}}F d},jh:G(Q){u I=B.S;if(H(Q.w)=="2y"||H(Q.h)=="2y"){F Y I.5N(Q.w||0,Q.h||0)}Q=I.1E(Q);if(!Q){F L}if(I.4q(Q,"3u")!="98"){F Y I.5N(Q.jg||0,Q.ci||0)}u s=Q.1T;u je=s.dc;u jf=s.6P;s.dc="fR";s.6P="j8";s.3u="";u jd=Q.jg;u jc=Q.ci;s.3u="98";s.6P=jf;s.dc=je;F Y I.5N(jd,jc)},jb:G(Q,4Z){u I=B.S;Q=I.1E(Q);if(!Q){F L}u c=Y I.5t(0,0);if(Q.x&&Q.y){c.x+=Q.x||0;c.y+=Q.y||0;F c}N{if(Q.3t===O||I.4q(Q,"3u")=="98"){F L}}u 51=O;u 2j=O;u d=B.S.1Z;u de=d.7Z;u b=d.5s;if(Q.ja){51=Q.ja();c.x+=51.2I+(de.6y||b.6y)-(de.8q||b.8q);c.y+=51.3D+(de.4C||b.4C)-(de.8p||b.8p)}N{if(d.j9){51=d.j9(Q);c.x+=51.x;c.y+=51.y}N{if(Q.8g){c.x+=Q.db;c.y+=Q.da;2j=Q.8g;if(2j!=Q){1M(2j){c.x+=2j.db;c.y+=2j.da;2j=2j.8g}}u ua=ut.us.8G();if((H(7h)!="L"&&4M(7h.ur())<9)||(ua.2A("uq")!=-1&&I.4q(Q,"6P")=="j8")){c.x-=b.db;c.y-=b.da}}}}if(H(4Z)!="L"){4Z=M.2U(4Z);if(4Z){c.x-=(4Z.x||0);c.y-=(4Z.y||0)}}if(Q.3t){2j=Q.3t}N{2j=O}1M(2j&&2j.j7!="uo"&&2j.j7!="co"){c.x-=2j.6y;c.y-=2j.4C;if(2j.3t){2j=2j.3t}N{2j=O}}F c},j6:G(Q,d9,7g){Q=B.S.1E(Q);if(H(7g)=="L"){7g="px"}B.S.4X(Q,{"1T":{"5A":d9.w+7g,"3V":d9.h+7g}})},j5:G(Q,d8,7f){Q=B.S.1E(Q);if(H(7f)=="L"){7f="px"}B.S.4X(Q,{"1T":{"2I":d8.x+7f,"3D":d8.y+7f}})},cr:G(){F B.S.3X},b9:G(){F B.S.1Z},95:G(2m,1A){u I=B.S;u d6=I.1Z;u d7=I.un;u W;1f{I.3X=2m;I.1Z=2m.2v;W=1A()}1e(e){I.3X=d7;I.1Z=d6;14 e}I.3X=d7;I.1Z=d6;F W},d5:G(Q){u 7d=[];u 7c=[];u m=B.J;u I=B.S;if(H(Q)=="L"||Q===O){Q=I.1Z}N{Q=I.1E(Q)}m.d4(Q,G(Q){u 1b=Q.1b;if(m.7e(1b)){u 4Y=Q.cD;if(4Y=="cv"&&(Q.1J=="um"||Q.1J=="uk")&&!Q.ip){F O}if(4Y=="ct"){if(Q.j4>=0){u 9m=Q.1S[Q.j4];7d.1c(1b);7c.1c((9m.3m)?9m.3m:9m.7X);F O}7d.1c(1b);7c.1c("");F O}if(4Y=="cu"||4Y=="P"||4Y=="8d"||4Y=="6m"){F Q.5h}7d.1c(1b);7c.1c(Q.3m||"");F O}F Q.5h});F[7d,7c]},94:G(1N,1A){u I=B.S;u d3=I.1Z;u W;1f{I.1Z=1N;W=1A()}1e(e){I.1Z=d3;14 e}I.1Z=d3;F W},j3:G(1b,j2,3y,j1){B.S.9b.5M(1b,j2,3y,j1)},9k:G(1j,7a){u im=B.15;u I=B.S;u 1Q=im.1Q;u iY=im.7b;u 4c=im.4c;u iX=I.9b;u iZ=I.9k;u iW=B.J.4d;1M(1h){if(H(1j)=="L"||1j===O){F O}if(H(1j.3T)!="L"&&1j.3T>0){F 1j}if(H(1j)=="2y"||H(1j)=="5L"){1j=1j.1l()}if(H(1j)=="1n"){F I.1Z.4S(1j)}if(H(1j.j0)=="G"){1j=1j.j0(7a);2V}if(H(1j)=="G"){1j=1j(7a);2V}u 9l=O;1f{9l=1Q(1j)}1e(e){}if(9l){F 4c(iZ,9l,iY(7a))}1f{1j=iX.3C(1j,7a);2V}1e(e){if(e!=iW){14 e}}F I.1Z.4S(1j.1l())}F L},iV:G(1j,79,iU){u o={};o[79]=iU;1f{F B.S.4X(1j,o)}1e(e){}F O},iT:G(1j,79){u I=B.S;u d2=I.4U.99[79];1j=I.1E(1j);1f{if(d2){F 1j[d2]}F 1j.fm(79)}1e(e){}F O},4X:G(1j,5K){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j)}if(5K){u d0=B.J.8Z;if(I.4U.6X){R(u k in 5K){u v=5K[k];if(H(v)=="3n"&&H(Q[k])=="3n"){d0(Q[k],v)}N{if(k.2W(0,2)=="on"){if(H(v)=="1n"){v=Y cZ(v)}Q[k]=v}N{Q.4p(k,v)}}}}N{u iS=I.4U.99;R(k in 5K){v=5K[k];u d1=iS[k];if(k=="1T"&&H(v)=="1n"){Q.1T.3x=v}N{if(H(d1)=="1n"){Q[d1]=v}N{if(H(Q[k])=="3n"&&H(v)=="3n"){d0(Q[k],v)}N{if(k.2W(0,2)=="on"){if(H(v)=="1n"){v=Y cZ(v)}Q[k]=v}N{Q.4p(k,v)}}}}}}}F Q},9j:G(1j){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j)}u 78=[I.9k(B.J.1R(O,M,1),Q)];u iR=B.J.2o;1M(78.K){u n=78.2P();if(H(n)=="L"||n===O){}N{if(H(n.3T)=="2y"){Q.2c(n)}N{78=iR(n,78)}}}F Q},iQ:G(1j){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j);M[0]=Q}u cY;1M((cY=Q.6n)){Q.6S(cY)}if(M.K<2){F Q}N{F I.9j.1w(D,M)}},cX:G(1b,4b){u Q;u I=B.S;u m=B.J;if(H(4b)=="1n"||H(4b)=="2y"){u 3G=m.1R([1b,O],M,1);F M.2U.1w(D,3G)}if(H(1b)=="1n"){if(4b&&"1b"in 4b&&!I.4U.6X){1b=("<"+1b+" 1b=\\""+I.9c(4b.1b)+"\\">")}Q=I.1Z.2S(1b)}N{Q=1b}if(4b){I.4X(Q,4b)}if(M.K<=2){F Q}N{u 3G=m.1R([Q],M,2);F I.9j.1w(D,3G)}},cw:G(){u m=B.J;F m.2z.1w(D,m.1R([B.S.cX],M))},cs:G(5J,1d){u I=B.S;5J=I.1E(5J);u cW=5J.3t;if(1d){1d=I.1E(1d);cW.uj(1d,5J)}N{cW.6S(5J)}F 1d},1E:G(id){u I=B.S;if(M.K==1){F((H(id)=="1n")?I.1Z.hN(id):id)}N{F B.J.2r(I.1E,M)}},4q:G(iP,cV,cU){if(M.K==2){cU=cV}u I=B.S;u el=I.1E(iP);u 77=I.1Z;if(!el||el==77){F L}if(el.iO){F el.iO[cV]}if(H(77.5k)=="L"){F L}if(77.5k===O){F L}u 9i=77.5k.g4(el,O);if(H(9i)=="L"||9i===O){F L}F 9i.6q(cU)},aH:G(76,9g,4W){u I=B.S;if(H(76)=="L"||76===O){76="*"}if(H(4W)=="L"||4W===O){4W=I.1Z}4W=I.1E(4W);u 9h=(4W.fr(76)||I.1Z.1p);if(H(9g)=="L"||9g===O){F B.J.1R(O,9h)}u cR=[];R(u i=0;i<9h.K;i++){u cS=9h[i];u cT=cS.3M.2R(" ");R(u j=0;j<cT.K;j++){if(cT[j]==9g){cR.1c(cS);2K}}}F cR},iN:G(5I,9f){u W=G(){u cQ=M.2U.5H;R(u i=0;i<cQ.K;i++){if(cQ[i].1w(D,M)===1m){2K}}if(9f){1f{D[5I]=O}1e(e){}}};W.5H=[];F W},cO:G(cP,5I,1A,9f){u I=B.S;u 4V=cP[5I];u 75=4V;if(!(H(4V)=="G"&&H(4V.5H)=="3n"&&4V.5H!==O)){75=I.iN(5I,9f);if(H(4V)=="G"){75.5H.1c(4V)}cP[5I]=75}75.5H.1c(1A)},cN:G(1A){u I=B.S;I.cO(I.3X,"gh",1A,1h)},iM:G(74){u I=B.S;I.cN(G(){74=I.1E(74);if(74){74.ui()}})},5G:G(iL,cM){u I=B.S;u 1i=I.1E(iL);if(I.4U.6X){1i.4p("iq",cM)}N{1i.4p("3M",cM)}},iK:G(cL){u I=B.S;R(u i=1;i<M.K;i++){u 1i=I.1E(M[i]);if(!I.9d(1i,cL)){I.9e(1i,cL)}}},9d:G(iJ,73){u I=B.S;u 1i=I.1E(iJ);u 2F=1i.3M;if(2F.K===0){I.5G(1i,73);F 1h}if(2F==73){F 1m}u cK=1i.3M.2R(" ");R(u i=0;i<cK.K;i++){if(cK[i]==73){F 1m}}I.5G(1i,2F+" "+73);F 1h},9e:G(iI,cJ){u I=B.S;u 1i=I.1E(iI);u 2F=1i.3M;if(2F.K===0){F 1m}if(2F==cJ){I.5G(1i,"");F 1h}u 72=1i.3M.2R(" ");R(u i=0;i<72.K;i++){if(72[i]==cJ){72.4y(i,1);I.5G(1i,72.2b(" "));F 1h}}F 1m},iH:G(iG,iF,iE){u 1i=B.S.1E(iG);u X=B.S.9e(1i,iF);if(X){B.S.9d(1i,iE)}F X},iD:G(iC,uh){u 1i=B.S.1E(iC);u cI=1i.3M.2R(" ");R(u i=1;i<M.K;i++){u cH=1m;R(u j=0;j<cI.K;j++){if(cI[j]==M[i]){cH=1h;2K}}if(!cH){F 1m}}F 1h},9c:G(s){F s.23(/&/g,"&ug;").23(/"/g,"&uf;").23(/</g,"&lt;").23(/>/g,"&gt;")},iB:G(2q){F B.S.cG(2q).2b("")},cG:G(2q,1g){if(H(1g)=="L"||1g===O){1g=[]}u 70=[2q];u I=B.S;u cB=I.9c;u iA=I.4U;1M(70.K){2q=70.hP();if(H(2q)=="1n"){1g.1c(2q)}N{if(2q.3T==1){1g.1c("<"+2q.cD.8G());u 71=[];u cF=iA(2q);R(u i=0;i<cF.K;i++){u a=cF[i];71.1c([" ",a.1b,"=\\"",cB(a.3m),"\\""])}71.iz();R(i=0;i<71.K;i++){u cE=71[i];R(u j=0;j<cE.K;j++){1g.1c(cE[j])}}if(2q.ue()){1g.1c(">");70.1c("</"+2q.cD.8G()+">");u cC=2q.5h;R(i=cC.K-1;i>=0;i--){70.1c(cC[i])}}N{1g.1c("/>")}}N{if(2q.3T==3){1g.1c(cB(2q.iv))}}}}F 1g},97:G(ix,cA){u m=B.J;u iy=m.1R(O,M,1);B.15.9a(m.47(O,m.2r(B.S.1E,iy)),G(cA){cA.1T.3u=ix})},iw:G(1j,iu){u W=[];(G(1j){u cn=1j.5h;if(cn){R(u i=0;i<cn.K;i++){M.2U.cz(D,cn[i])}}u cy=1j.iv;if(H(cy)=="1n"){W.1c(cy)}})(B.S.1E(1j));if(iu){F W}N{F W.2b("")}},2d:G(2m){u m=B.J;D.1Z=2v;D.3X=2m;D.9b=Y m.4a();u 6Z=D.1Z.2S("cj");u 2T;if(6Z&&6Z.6Y&&6Z.6Y.K>0){u it=m.47;2T=G(1j){F it(2T.ir,1j.6Y)};2T.cx={};B.15.9a(6Z.6Y,G(a){2T.cx[a.1b]=a.3m});2T.ir=G(a){F(2T.cx[a.1b]!=a.3m)};2T.6X=1m;2T.99={"iq":"3M","ip":"ud","uc":"ub","R":"u9"}}N{2T=G(1j){F 1j.6Y};2T.6X=1h;2T.99={}}D.4U=2T;u 1C=D.cw;D.io=1C("ul");D.il=1C("ol");D.ik=1C("li");D.ij=1C("td");D.cm=1C("tr");D.ii=1C("u8");D.ih=1C("u7");D.ig=1C("u6");D.ie=1C("u5");D.ic=1C("th");D.cv=1C("ck");D.8d=1C("cj");D.A=1C("a");D.6m=1C("4u");D.ib=1C("u4");D.ia=1C("2e");D.i9=1C("tt");D.i8=1C("4O");D.i7=1C("h1");D.i6=1C("h2");D.i5=1C("h3");D.i4=1C("br");D.i3=1C("hr");D.i2=1C("u3");D.i1=1C("u2");D.cu=1C("u1");D.P=1C("p");D.ct=1C("u0");D.i0=1C("hJ");D.hZ=1C("tZ");D.hY=1C("tY");D.hX=1C("tX");D.hW=1C("tW");D.hV=1C("tV");D.hU=m.2z(D.97,"98");D.hT=m.2z(D.97,"8c");D.hS=D.cs;D.$=D.1E;D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)}});B.S.2d(((H(2O)=="L")?D:2O));if(!B.3d){95=B.S.95;94=B.S.94}B.J.2Y(D,B.S);if(H(1q)!="L"){1q.2X("B.1I");1q.2M("B.1H");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.1H",[]);1x.26("B.J",[])}1f{if(H(B.J)=="L"||H(B.1H)=="L"){14""}}1e(e){14"B.1I 3F on B.J 3W B.1H!"}if(H(B.1I)=="L"){B.1I={}}B.1I.1r="B.1I";B.1I.1Y="1.3.1";B.1I.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1I.1l=G(){F D.1K()};B.1I.bY=G(6W){u m=B.1I;6W=!(!6W);if(m.3l&&m.3l.8Q!=6W){m.3l.hA();m.3l=O}if(!m.3l||m.3l.8P){m.3l=Y m.1I(6W,B.1H.2L)}F m.3l};B.1I.1I=G(4R,6V){if(H(6V)=="L"||6V===O){6V=B.1H.2L}D.2L=6V;u tU=B.J.2l;u c3=B.J.8Z;u 1O=B.J.1O;u hM=B.J.4L;u 2m=2O;u 6U="tT";if(H(B.S)!="L"){2m=B.S.cr()}if(!4R){u 5F=2m.tS.tR.2R("?")[0].23(/[:\\/.><&]/g,"hR");u 1b=6U+"hR"+5F;u 5D=2m.cp("",1b,"tQ,tP,3V=hQ");if(!5D){cq("tO tN to cp tM 2O tL to hP-up tK.");F L}5D.2v.fl("<!tJ co tI \\"-//tH//tG co 4.0 tF//tE\\" "+"\\"fq://fp.tD.fo/cm/tC/tB.tA\\">"+"<hO><5E><8Y>[B.1I]</8Y></5E>"+"<5s></5s></hO>");5D.2v.hG();5D.2v.8Y+=" "+2m.2v.8Y;2m=5D}u 1N=2m.2v;D.1N=1N;u 21=1N.hN(6U);u c4=!!21;if(21&&H(21.5B)!="L"){21.5B.2L=D.2L;21.5B.6K();F 21.5B}if(c4){u cl;1M((cl=21.6n)){21.6S(cl)}}N{21=1N.2S("4u");21.id=6U}21.5B=D;u 8T=1N.2S("ck");u 8S=1N.2S("ck");u 6O=1N.2S("2e");u 6N=1N.2S("2e");u 6M=1N.2S("2e");u 6L=1N.2S("2e");u 3L=1N.2S("4u");u 42=1N.2S("4u");u 8U=6U+"tz";D.8N=hM(D.8N);u 4T=[];u 6R=O;u cf=G(1t){u 6T=1t.3N;if(H(6T)=="2y"){6T=B.1H.5C[6T]}F 6T};u cd=G(1t){F 1t.3z.2b(" ")};u ca=1O(G(1t){u 8W=cf(1t);u 7X=cd(1t);u c=D.8N[8W];u p=1N.2S("cj");p.3M="B-49 B-5C-"+8W;p.1T.3x="ty: 2N; 4F-8X: -hL-4O-3y; 4F-8X: -o-4O-3y; 4F-8X: 4O-3y; 4F-8X: 4O-tx; hK-3y: 2K-hK; 3y-hJ: tw; 3U: "+c;p.2c(1N.4S(8W+": "+7X));42.2c(p);42.2c(1N.2S("br"));if(3L.ci>3L.hI){3L.4C=0}N{3L.4C=3L.hI}},D);u hD=G(1t){4T[4T.K]=1t;ca(1t)};u hF=G(){u cg,ce;1f{cg=Y 8V(8T.3m);ce=Y 8V(8S.3m)}1e(e){ch("2x in 47 tv: "+e.43);F O}F G(1t){F(cg.hH(cf(1t))&&ce.hH(cd(1t)))}};u cc=G(){1M(42.6n){42.6S(42.6n)}};u hB=G(){4T=[];cc()};u bZ=1O(G(){if(D.8P){F}D.8P=1h;if(B.1I.3l==D){B.1I.3l=O}D.2L.c9(8U);21.5B=O;if(4R){21.3t.6S(21)}N{D.2m.hG()}},D);u c7=G(){cc();R(u i=0;i<4T.K;i++){u 1t=4T[i];if(6R===O||6R(1t)){ca(1t)}}};D.6K=G(){6R=hF();c7();D.2L.c9(8U);D.2L.hE(8U,6R,hD)};u c0=1O(G(){4T=D.2L.c8();c7()},D);u c2=1O(G(6Q){6Q=6Q||2O.6D;2h=6Q.6w||6Q.8t;if(2h==13){D.6K()}},D);u 31="3u: 8c; z-c6: c5; 2I: 2N; 6f: 2N; 6P: tu; 5A: 3k%; he-3U: 4F; c1: "+D.8O;if(4R){31+="; 3V: ts; 3E-3D: fO 8a 8y"}N{31+="; 3V: 3k%;"}21.1T.3x=31;if(!c4){1N.5s.2c(21)}31={"3x":"5A: 33%; 3u: 8Q; c1: "+D.8O};c3(8T,{"3m":"8L|8M|8K|8J|8I","hC":c2,"1T":31});21.2c(8T);c3(8S,{"3m":".*","hC":c2,"1T":31});21.2c(8S);31="5A: 8%; 3u:8Q; c1: "+D.8O;6O.2c(1N.4S("tq"));6O.8R=1O("6K",D);6O.1T.3x=31;21.2c(6O);6N.2c(1N.4S("tp"));6N.8R=c0;6N.1T.3x=31;21.2c(6N);6M.2c(1N.4S("tn"));6M.8R=hB;6M.1T.3x=31;21.2c(6M);6L.2c(1N.4S("tm"));6L.8R=bZ;6L.1T.3x=31;21.2c(6L);3L.1T.3x="fS: tk; 5A: 3k%";42.1T.3x="5A: 3k%; 3V: "+(4R?"tj":"3k%");3L.2c(42);21.2c(3L);D.6K();c0();if(4R){D.2m=L}N{D.2m=2m}D.8Q=4R;D.hA=bZ;D.8P=1m;F D};B.1I.1I.1U={"8O":"ti tg,tf-te","8N":{"8M":"1v","8L":"gU","8K":"1F","8J":"8y","8I":"bx"}};B.1I.1W=["1I"];B.1I.1z=["bY"];B.1I.2d=G(){D.2k={":3e":D.1z,":1p":B.J.2o(D.1z,D.1W)};B.J.3f(D);B.1I.3l=O};B.1I.2d();B.J.2Y(D,B.1I);if(H(1q)!="L"){1q.2X("B.V");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.V 3F on B.J"}if(H(B.V)=="L"){B.V={}}B.V.1r="B.V";B.V.1Y="1.3.1";B.V.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.V.1l=G(){F D.1K()};B.V.V=G(1v,hz,1F,6J){if(H(6J)=="L"||6J===O){6J=1}D.1B={r:1v,g:hz,b:1F,a:6J}};B.V.V.1U={bX:B.V.V,tc:G(hy){u 1B=D.1B;u m=B.V;F m.V.3Y(1B.r,1B.g,1B.b,hy)},tb:G(1o){u 1G=D.41();1G.h=1o;u m=B.V;F m.V.4H(1G)},ta:G(hx){u 1G=D.41();1G.s=hx;u m=B.V;F m.V.4H(1G)},t9:G(hw){u 1G=D.41();1G.l=hw;u m=B.V;F m.V.4H(1G)},t8:G(hv){u 1G=D.41();1G.l=28.29(1G.l-hv,0);u m=B.V;F m.V.4H(1G)},t7:G(hu){u 1G=D.41();1G.l=28.2a(1G.l+hu,1);u m=B.V;F m.V.4H(1G)},fJ:G(ht,5z){if(H(5z)=="L"||5z===O){5z=0.5}u sf=1-5z;u s=D.1B;u d=ht.1B;u df=5z;F B.V.V.3Y((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df))},h4:G(hs){u a=D.6r();u b=hs.6r();F B.J.2f([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a])},hq:G(){F D.41().b>0.5},t6:G(){F(!D.hq())},t5:G(){u c=D.41();u 2Z=B.V.6F;u W=D.ho;if(!W){u 5y=(2Z(c.h,bF).6I(0)+","+2Z(c.s,3k).hp(4)+"%"+","+2Z(c.l,3k).hp(4)+"%");u a=c.a;if(a>=1){a=1;W="1G("+5y+")"}N{if(a<=0){a=0}W="t4("+5y+","+a+")"}D.ho=W}F W},hl:G(){u c=D.1B;u 2Z=B.V.6F;u W=D.hn;if(!W){u 5y=(2Z(c.r,3h).6I(0)+","+2Z(c.g,3h).6I(0)+","+2Z(c.b,3h).6I(0));if(c.a!=1){W="t3("+5y+","+c.a+")"}N{W="1B("+5y+")"}D.hn=W}F W},6r:G(){F B.J.4L(D.1B)},t2:G(){u m=B.V;u c=D.1B;u 2Z=B.V.6F;u W=D.hm;if(!W){W=("#"+m.6E(2Z(c.r,3h))+m.6E(2Z(c.g,3h))+m.6E(2Z(c.b,3h)));D.hm=W}F W},t1:G(){u 2Q=D.2Q;u c=D.1B;if(H(2Q)=="L"||2Q===O){2Q=B.V.bA(D.1B);D.2Q=2Q}F B.J.4L(2Q)},41:G(){u 1G=D.1G;u c=D.1B;if(H(1G)=="L"||1G===O){1G=B.V.bC(D.1B);D.1G=1G}F B.J.4L(1G)},1l:G(){F D.hl()},U:G(){u c=D.1B;u hk=[c.r,c.g,c.b,c.a];F D.bX.1r+"("+hk.2b(", ")+")"}};B.J.2l(B.V.V,{3Y:G(1v,bW,1F,8H){u hj=B.V.V;if(M.K==1){u 1B=1v;1v=1B.r;bW=1B.g;1F=1B.b;if(H(1B.a)=="L"){8H=L}N{8H=1B.a}}F Y hj(1v,bW,1F,8H)},4H:G(1o,t0,sZ,sY){u m=B.V;F m.V.3Y(m.bB.1w(m,M))},sX:G(1o,sW,sV,sU){u m=B.V;F m.V.3Y(m.bz.1w(m,M))},hi:G(1b){u 8F=B.V.V;if(1b.3Z(0)=="\\""){1b=1b.3H(1,1b.K-2)}u bV=8F.by[1b.8G()];if(H(bV)=="1n"){F 8F.bT(bV)}N{if(1b=="aP"){F 8F.sT()}}F O},8f:G(4Q){u I=B.V.V;u bU=4Q.3H(0,3);if(bU=="1B"){F I.h9(4Q)}N{if(bU=="1G"){F I.h8(4Q)}N{if(4Q.3Z(0)=="#"){F I.bT(4Q)}}}F I.hi(4Q)},bT:G(4P){if(4P.3Z(0)=="#"){4P=4P.2W(1)}u 8E=[];u i,5x;if(4P.K==3){R(i=0;i<3;i++){5x=4P.3H(i,1);8E.1c(3w(5x+5x,16)/3h)}}N{R(i=0;i<6;i+=2){5x=4P.3H(i,2);8E.1c(3w(5x,16)/3h)}}u bS=B.V.V;F bS.3Y.1w(bS,8E)},bG:G(4O,hf,hg,4N){if(4N.2A(4O)===0){4N=4N.2W(4N.2A("(",3)+1,4N.K-1)}u bR=4N.2R(/\\s*,\\s*/);u bP=[];R(u i=0;i<bR.K;i++){u c=bR[i];u 2i;u bQ=c.2W(c.K-3);if(c.3Z(c.K-1)=="%"){2i=0.bE*4M(c.2W(0,c.K-1))}N{if(bQ=="sS"){2i=4M(c)/bF}N{if(bQ=="sR"){2i=4M(c)/(28.sQ*2)}N{2i=hg[i]*4M(c)}}}bP.1c(2i)}F D[hf].1w(D,bP)},bN:G(Q,sP,sO){u d=B.S;u 2F=B.V.V;R(Q=d.1E(Q);Q;Q=Q.3t){u bO=d.4q.1w(d,M);if(!bO){2V}u 8D=2F.8f(bO);if(!8D){2K}if(8D.6r().a>0){F 8D}}F O},ba:G(Q){u 2F=B.V.V;F 2F.bN(Q,"aZ","he-3U")||2F.sN()},sM:G(Q){u 2F=B.V.V;F 2F.bN(Q,"3U","3U")||2F.sL()},sK:G(){F B.J.4L(B.V.V.by)}});B.J.2l(B.V,{6F:G(v,8C){v*=8C;if(v<0){F 0}N{if(v>8C){F 8C}N{F v}}},hc:G(n1,n2,1o){if(1o>6){1o-=6}N{if(1o<0){1o+=6}}u 2i;if(1o<1){2i=n1+(n2-n1)*1o}N{if(1o<3){2i=n2}N{if(1o<4){2i=n1+(n2-n1)*(4-1o)}N{2i=n1}}}F 2i},bz:G(1o,5w,3i,bM){if(M.K==1){u 2Q=1o;1o=2Q.h;5w=2Q.s;3i=2Q.v;bM=2Q.a}u 1v;u 3K;u 1F;if(5w===0){1v=0;3K=0;1F=0}N{u i=28.8B(1o*6);u f=(1o*6)-i;u p=3i*(1-5w);u q=3i*(1-(5w*f));u t=3i*(1-(5w*(1-f)));hd(i){3j 1:1v=q;3K=3i;1F=p;2K;3j 2:1v=p;3K=3i;1F=t;2K;3j 3:1v=p;3K=q;1F=3i;2K;3j 4:1v=t;3K=p;1F=3i;2K;3j 5:1v=3i;3K=p;1F=q;2K;3j 6:3j 0:1v=3i;3K=t;1F=p;2K}}F{r:1v,g:3K,b:1F,a:bM}},bB:G(1o,5v,3v,bL){if(M.K==1){u 1G=1o;1o=1G.h;5v=1G.s;3v=1G.l;bL=1G.a}u 1v;u 8A;u 1F;if(5v===0){1v=3v;8A=3v;1F=3v}N{u m2;if(3v<=0.5){m2=3v*(1+5v)}N{m2=3v+5v-(3v*5v)}u m1=(2*3v)-m2;u f=B.V.hc;u h6=1o*6;1v=f(m1,m2,h6+2);8A=f(m1,m2,h6);1F=f(m1,m2,h6-2)}F{r:1v,g:8A,b:1F,a:bL}},bA:G(1v,4K,1F,bK){if(M.K==1){u 1B=1v;1v=1B.r;4K=1B.g;1F=1B.b;bK=1B.a}u 29=28.29(28.29(1v,4K),1F);u 2a=28.2a(28.2a(1v,4K),1F);u 1o;u 8z;u hb=29;if(2a==29){1o=0;8z=0}N{u 6H=(29-2a);8z=6H/29;if(1v==29){1o=(4K-1F)/6H}N{if(4K==29){1o=2+((1F-1v)/6H)}N{1o=4+((1v-4K)/6H)}}1o/=6;if(1o<0){1o+=1}if(1o>1){1o-=1}}F{h:1o,s:8z,v:hb,a:bK}},bC:G(1v,4J,1F,bI){if(M.K==1){u 1B=1v;1v=1B.r;4J=1B.g;1F=1B.b;bI=1B.a}u 29=28.29(1v,28.29(4J,1F));u 2a=28.2a(1v,28.2a(4J,1F));u 1o;u 6G;u bJ=(29+2a)/2;u 4I=29-2a;if(4I===0){1o=0;6G=0}N{if(bJ<=0.5){6G=4I/(29+2a)}N{6G=4I/(2-29-2a)}if(1v==29){1o=(4J-1F)/4I}N{if(4J==29){1o=2+((1F-1v)/4I)}N{1o=4+((1v-4J)/4I)}}1o/=6;if(1o<0){1o+=1}if(1o>1){1o-=1}}F{h:1o,s:6G,l:bJ,a:bI}},6E:G(1P){1P=28.ha(1P);u bH=1P.1l(16);if(1P<16){F"0"+bH}F bH},2d:G(){u m=B.J;D.V.h9=m.1O(D.V.bG,D.V,"1B","3Y",[1/3h,1/3h,1/3h,1]);D.V.h8=m.1O(D.V.bG,D.V,"1G","4H",[1/bF,0.bE,0.bE,1]);u 4G=1/3;u bD={8y:[0,0,0],1F:[0,0,1],gY:[0.6,0.4,0.2],gX:[0,1,1],sJ:[4G,4G,4G],gR:[0.5,0.5,0.5],bx:[0,1,0],sI:[2*4G,2*4G,2*4G],gN:[1,0,1],gL:[1,0.5,0],gK:[0.5,0,0.5],1v:[1,0,0],aP:[0,0,0,0],4F:[1,1,1],gI:[1,1,0]};u h7=G(1b,r,g,b,a){u W=D.3Y(r,g,b,a);D[1b]=G(){F W};F W};R(u k in bD){u 1b=k+"V";u h5=m.2o([h7,D.V,1b],bD[k]);D.V[1b]=m.1O.1w(O,h5)}u h0=G(){R(u i=0;i<M.K;i++){if(!(M[i]2C V)){F 1m}}F 1h};u gZ=G(a,b){F a.h4(b)};m.3f(D);m.5u(D.V.1r,h0,gZ);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)}}});B.V.1z=["V"];B.V.1W=["6F","bC","bB","bA","bz","6E"];B.V.2d();B.J.2Y(D,B.V);B.V.V.by={sH:"#sG",sF:"#sE",sD:"#gW",sC:"#sB",sA:"#sz",sy:"#sx",sw:"#sv",8y:"#su",st:"#sr",1F:"#sq",sp:"#so",gY:"#sn",sm:"#sl",sk:"#sj",si:"#sh",sg:"#se",sd:"#sc",sb:"#sa",s9:"#s8",s7:"#s6",gX:"#gW",s5:"#s4",s3:"#s2",s1:"#s0",rZ:"#gV",rY:"#rX",rW:"#gV",rV:"#rU",rT:"#rS",rR:"#rQ",rP:"#rO",rN:"#rM",gU:"#rL",rK:"#rJ",rI:"#rH",rG:"#rF",rE:"#gT",rD:"#gT",rC:"#rB",rA:"#rz",ry:"#rx",rw:"#rv",ru:"#gS",rt:"#gS",rs:"#rr",rq:"#rp",ro:"#rn",rm:"#rl",rk:"#gM",rj:"#ri",rh:"#rg",rf:"#rd",rc:"#rb",gR:"#gQ",bx:"#ra",r9:"#r8",r7:"#gQ",r6:"#r5",r4:"#r3",r2:"#r1",r0:"#qZ",qY:"#qX",qW:"#qV",qU:"#qT",qS:"#qR",qQ:"#qP",qO:"#qN",qM:"#qL",qK:"#qJ",qI:"#qH",qG:"#qF",qE:"#gP",qD:"#qC",qB:"#gP",qA:"#qz",qy:"#qx",qw:"#qv",qu:"#qt",qr:"#gO",qq:"#gO",qp:"#qo",qn:"#qm",ql:"#qk",qj:"#qi",qh:"#qg",gN:"#gM",qf:"#qe",qd:"#qc",qb:"#qa",q9:"#q8",q7:"#q6",q5:"#q4",q3:"#q2",q1:"#q0",pZ:"#pY",pX:"#pW",pV:"#pU",pT:"#pS",pR:"#pQ",pP:"#pO",pN:"#pM",pL:"#pK",pJ:"#pI",pH:"#pG",pF:"#pE",gL:"#pD",pC:"#pB",pA:"#pz",py:"#pw",pv:"#pu",pt:"#ps",pr:"#pq",pp:"#po",pn:"#pm",pl:"#pj",pi:"#ph",pg:"#pf",pe:"#pd",gK:"#pc",1v:"#pb",pa:"#p9",p8:"#p7",p6:"#p5",p4:"#p3",p2:"#p1",p0:"#oZ",oY:"#oX",oW:"#oV",oU:"#oT",oS:"#oR",oQ:"#oP",oO:"#gJ",oN:"#gJ",oM:"#oL",oK:"#oJ",oI:"#oH",oG:"#oF",oE:"#oD",oC:"#oB",oA:"#oz",oy:"#ox",ow:"#ov",ou:"#ot",4F:"#os",oq:"#op",gI:"#oo",om:"#ok"};if(H(1q)!="L"){1q.2X("B.1u");1q.2M("B.J");1q.2M("B.S")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.S",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1u 3F on B.J!"}1f{if(H(B.S)=="L"){14""}}1e(e){14"B.1u 3F on B.S!"}if(H(B.1u)=="L"){B.1u={}}B.1u.1r="B.1u";B.1u.1Y="1.3.1";B.1u.4x=[];B.1u.bq=G(1d,e){D.1L=e||2O.6D;D.gH=1d};B.J.2l(B.1u.bq.1U,{1K:G(){u U=B.J.U;u 1y="{6D(): "+U(D.6D())+", 1d(): "+U(D.1d())+", 1J(): "+U(D.1J())+", 8x(): "+U(D.8x())+", 4E(): "+"{8w: "+U(D.4E().8w)+", 8v: "+U(D.4E().8v)+", 8u: "+U(D.4E().8u)+", 2P: "+U(D.4E().2P)+", bw: "+U(D.4E().bw)+"}";if(D.1J()&&D.1J().2A("2h")===0){1y+=", 2h(): {3J: "+U(D.2h().3J)+", 1n: "+U(D.2h().1n)+"}"}if(D.1J()&&(D.1J().2A("3I")===0||D.1J().2A("gE")!=-1||D.1J()=="gD")){1y+=", 3I(): {4D: "+U(D.3I().4D)+", 6A: "+U(D.3I().6A);if(D.1J()!="gC"){1y+=", 2e: {2I: "+U(D.3I().2e.2I)+", 6v: "+U(D.3I().2e.6v)+", 3g: "+U(D.3I().2e.3g)+"}}"}N{1y+="}"}}if(D.1J()=="gG"||D.1J()=="gF"){1y+=", 6C(): "+U(D.6C())}1y+="}";F 1y},1l:G(){F D.1K()},1d:G(){F D.gH},6D:G(){F D.1L},1J:G(){F D.1L.1J||L},8x:G(){F D.1L.8x||D.1L.oj},6C:G(){if(D.1J()=="gG"){F(D.1L.6C||D.1L.aW)}N{if(D.1J()=="gF"){F(D.1L.6C||D.1L.oi)}}F L},4E:G(){u m={};m.8w=D.1L.oh;m.8v=D.1L.og;m.8u=D.1L.oe||1m;m.2P=D.1L.od;m.bw=m.8w||m.8v||m.2P||m.8u;F m},2h:G(){u k={};if(D.1J()&&D.1J().2A("2h")===0){if(D.1J()=="oc"||D.1J()=="ob"){k.3J=D.1L.8t;k.1n=(B.1u.5r[k.3J]||"oa");F k}N{if(D.1J()=="o9"){k.3J=0;k.1n="";if(H(D.1L.6B)!="L"&&D.1L.6B!==0&&!B.1u.bv[D.1L.6B]){k.3J=D.1L.6B;k.1n=bu.bt(k.3J)}N{if(D.1L.8t&&H(D.1L.6B)=="L"){k.3J=D.1L.8t;k.1n=bu.bt(k.3J)}}F k}}}F L},3I:G(){u m={};u e=D.1L;if(D.1J()&&(D.1J().2A("3I")===0||D.1J().2A("gE")!=-1||D.1J()=="gD")){m.6A=Y B.S.5t(0,0);if(e.6z||e.6x){m.6A.x=(!e.6z||e.6z<0)?0:e.6z;m.6A.y=(!e.6x||e.6x<0)?0:e.6x}m.4D=Y B.S.5t(0,0);if(e.8s||e.8r){m.4D.x=(!e.8s||e.8s<0)?0:e.8s;m.4D.y=(!e.8r||e.8r<0)?0:e.8r}N{u de=B.S.1Z.7Z;u b=B.S.1Z.5s;m.4D.x=e.6z+(de.6y||b.6y)-(de.8q||b.8q);m.4D.y=e.6x+(de.4C||b.4C)-(de.8p||b.8p)}if(D.1J()!="gC"){m.2e={};m.2e.2I=1m;m.2e.3g=1m;m.2e.6v=1m;if(e.6w){m.2e.2I=(e.6w==1);m.2e.6v=(e.6w==2);m.2e.3g=(e.6w==3)}N{m.2e.2I=!!(e.2e&1);m.2e.3g=!!(e.2e&2);m.2e.6v=!!(e.2e&4)}}F m}F L},2J:G(){D.8o();D.8n()},8o:G(){if(D.1L.8o){D.1L.8o()}N{D.1L.o8=1h}},8n:G(){if(D.1L.8n){D.1L.8n()}N{D.1L.o7=1m}}});B.1u.bv={3:"gz",o6:"gA",o5:"gy",o4:"gx",o3:"gw",o2:"gv",o1:"gu",o0:"gs",nZ:"gr",nY:"gq",nX:"gp",nW:"go"};R(i=gB;i<=nV;i++){B.1u.bv[i]="gk"+(i-gB+1)}B.1u.5r={8:"nU",9:"nT",12:"gA",13:"gz",16:"nS",17:"nR",18:"nQ",19:"nP",20:"nO",27:"nN",32:"nM",33:"gy",34:"gx",35:"gw",36:"gv",37:"gu",38:"gs",39:"gr",40:"gq",44:"nL",45:"gp",46:"go",59:"gn",91:"nK",92:"nJ",93:"nI",nH:"nG",nF:"nE",nD:"nC-gm",nB:"nA",nz:"ny",nx:"nw",nv:"nu",nt:"gn",ns:"nr",nq:"np",nn:"nm-gm",nl:"nk",nj:"ni",nh:"ng",nf:"nd",nc:"nb",na:"n9",n8:"n7"};R(u i=48;i<=57;i++){B.1u.5r[i]="gl"+(i-48)}R(i=65;i<=90;i++){B.1u.5r[i]="gl"+bu.bt(i)}R(i=96;i<=n6;i++){B.1u.5r[i]="n5"+(i-96)}R(i=gj;i<=n4;i++){B.1u.5r[i]="gk"+(i-gj+1)}B.J.2l(B.1u,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},g7:G(){u I=B.1u;u bs=I.4x;R(u i=0;i<bs.K;i++){I.6t(bs[i])}gi I.4x;1f{2O.gh=L}1e(e){}1f{2O.g8=L}1e(e){}},gb:G(1d,1A,1i,gg){u E=B.1u.bq;if(!gg){F B.J.1O(1A,1i)}1i=1i||1d;if(H(1A)=="1n"){F G(gf){1i[1A].1w(1i,[Y E(1d,gf)])}}N{F G(gd){1A.1w(1i,[Y E(1d,gd)])}}},6s:G(1d,2D,5q,4B){1d=B.S.1E(1d);u I=B.1u;if(H(2D)!="1n"){14 Y 2x("\'2D\' 5p be a 1n")}u 1i=O;u 1A=O;if(H(4B)!="L"){1i=5q;1A=4B;if(H(4B)=="1n"){if(H(5q[4B])!="G"){14 Y 2x("\'bp\' 5p be a G on \'gc\'")}}N{if(H(4B)!="G"){14 Y 2x("\'bp\' 5p be a G or 1n")}}}N{if(H(5q)!="G"){14 Y 2x("\'gc\' 5p be a G if \'bp\' is 2E n3")}N{1A=5q}}if(H(1i)=="L"||1i===O){1i=1d}u bm=!!(1d.bo||1d.bn);u 8m=I.gb(1d,1A,1i,bm);if(1d.bo){1d.bo(2D.3H(2),8m,1m)}N{if(1d.bn){1d.bn(2D,8m)}}u bk=[1d,2D,8m,bm,5q,4B];I.4x.1c(bk);F bk},6t:G(6u){if(!6u[3]){F}u 1d=6u[0];u 2D=6u[1];u bj=6u[2];if(1d.ga){1d.ga(2D.3H(2),bj,1m)}N{if(1d.g9){1d.g9(2D,bj)}N{14 Y 2x("\'1d\' 5p be a S n0")}}},8j:G(bh){u I=B.1u;u 5o=I.4x;u m=B.J;if(M.K>1){u 1d=B.S.1E(M[0]);u 2D=M[1];u 1i=M[2];u 1A=M[3];R(u i=5o.K-1;i>=0;i--){u o=5o[i];if(o[0]===1d&&o[1]===2D&&o[4]===1i&&o[5]===1A){I.6t(o);5o.4y(i,1);F 1h}}}N{u 5n=m.bi(5o,bh);if(5n>=0){I.6t(bh);5o.4y(5n,1);F 1h}}F 1m},8i:G(1d,2D){1d=B.S.1E(1d);u m=B.J;u 8l=m.bg(m.1R(O,M,1));u I=B.1u;u bd=I.6t;u 4z=I.4x;if(8l.K===0){R(u i=4z.K-1;i>=0;i--){u 4A=4z[i];if(4A[0]===1d){bd(4A);4z.4y(i,1)}}}N{u bf={};R(u i=0;i<8l.K;i++){bf[8l[i]]=1h}R(u i=4z.K-1;i>=0;i--){u 4A=4z[i];if(4A[0]===1d&&4A[1]in bf){bd(4A);4z.4y(i,1)}}}},8h:G(1d,2D){u bc=B.1u.4x;1d=B.S.1E(1d);u 3G=B.J.1R(O,M,2);u 5m=[];R(u i=0;i<bc.K;i++){u 8k=bc[i];if(8k[0]===1d&&8k[1]===2D){1f{8k[2].1w(1d,3G)}1e(e){5m.1c(e)}}}if(5m.K==1){14 5m[0]}N{if(5m.K>1){u e=Y 2x("mZ bb mY in mX \'2D\', mW bb mV");e.bb=5m;14 e}}}});B.1u.1W=[];B.1u.1z=["6s","8j","8h","8i"];B.1u.2d=G(2m){u m=B.J;D.1Z=2v;D.3X=2m;1f{D.6s(2O,"g8",D.g7)}1e(e){}D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.1u.2d(D);if(!B.3d){6s=B.1u.6s;8j=B.1u.8j;8i=B.1u.8i;8h=B.1u.8h}B.J.2Y(D,B.1u);if(H(1q)!="L"){1q.2X("B.1X");1q.2M("B.J");1q.2M("B.S");1q.2M("B.V")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.S",[]);1x.26("B.V",[])}1f{if(H(B.J)=="L"||H(B.S)=="L"||H(B.V)=="L"){14""}}1e(e){14"B.1X 3F on B.J, B.S 3W B.V!"}if(H(B.1X)=="L"){B.1X={}}B.1X.1r="B.1X";B.1X.1Y="1.3.1";B.1X.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1X.1l=G(){F D.1K()};B.1X.aI=G(e,g6){e=B.S.1E(e);D.fN(g6);if(D.1S.fL){e=D.g5(e)}u 4w=D.1S.3U;u C=B.V.V;if(D.1S.3U=="aW"){4w=C.ba(e)}N{if(!(4w 2C C)){4w=C.8f(4w)}}D.82=(4w.6r().a<=0);u 5l=D.1S.aV;if(D.1S.aV=="fM"){5l=C.ba(e.8g)}N{if(!(5l 2C C)){5l=C.8f(5l)}}D.g3(e,4w,5l)};B.1X.aI.1U={g5:G(e){u mU=e.3t;u 1N=B.S.b9();if(H(1N.5k)=="L"||1N.5k===O){F e}u 4v=1N.5k.g4(e,O);if(H(4v)=="L"||4v===O){F e}u b8=B.S.6m({"1T":{3u:"8c",mT:4v.6q("6p-3D"),85:4v.6q("6p-3g"),mS:4v.6q("6p-6f"),86:4v.6q("6p-2I"),6p:"2N"}});b8.6o=e.6o;e.6o="";e.2c(b8);F e},g3:G(e,b7,8e){if(D.1S.3E){D.g2(e,8e)}if(D.fy()){D.fX(e,b7,8e)}if(D.fx()){D.fV(e,b7,8e)}},g2:G(el,g1){u b6="6l 8a "+D.aQ(g1);u g0="3E-2I: "+b6;u fZ="3E-3g: "+b6;u fY="1T=\'"+g0+";"+fZ+"\'";el.6o="<4u "+fY+">"+el.6o+"</4u>"},fX:G(el,fW,b5){u b4=D.b1(b5);R(u i=0;i<D.1S.89;i++){b4.2c(D.b0(fW,b5,i,"3D"))}el.1T.mR=0;el.mQ(b4,el.6n)},fV:G(el,fU,b3){u b2=D.b1(b3);R(u i=(D.1S.89-1);i>=0;i--){b2.2c(D.b0(fU,b3,i,"6f"))}el.1T.mP=0;el.2c(b2)},b1:G(fT){u 2q=B.S;F 2q.6m({1T:{aZ:fT.1l()}})},b0:G(aY,fQ,n,aX){u 6k=B.S.8d();u 2p=6k.1T;2p.aZ=aY.1l();2p.3u="8c";2p.3V="6l";2p.fS="fR";2p.mO="6l";u 8b=D.aQ(aY,fQ);if(D.1S.3E&&n===0){2p.mN="8a";2p.mM="6l";2p.84="2N";2p.83="2N";2p.mL="2N";2p.3V="2N";2p.fP=8b.1l()}N{if(8b){2p.fP=8b.1l();2p.mK="8a";2p.mJ="2N 6l"}}if(!D.1S.4r&&(n==(D.1S.89-1))){2p.3V="fO"}D.fI(6k,n,aX);D.fG(6k,n,aX);F 6k},fN:G(fK){D.1S={6g:"1p",3U:"aW",aV:"fM",5j:1h,3E:1m,4r:1m,fL:1m};B.J.2l(D.1S,fK);D.1S.89=(D.1S.4r?2:4)},aL:G(){u 88=D.1S.6g;if(D.6h(88,"1p","3D")){F""}u aU=(88.2A("tl")!=-1);u aT=(88.2A("tr")!=-1);if(aU&&aT){F""}if(aU){F"2I"}if(aT){F"3g"}F""},aK:G(){u 87=D.1S.6g;if(D.6h(87,"1p","6f")){F""}u aS=(87.2A("bl")!=-1);u aR=(87.2A("br")!=-1);if(aS&&aR){F""}if(aS){F"2I"}if(aR){F"3g"}F""},aQ:G(aN,aO){if(aN=="aP"){F aO}N{if(D.1S.3E){F D.1S.3E}N{if(D.1S.5j){F aO.fJ(aN)}}}F""},fI:G(el,n,fH){u 6j=D.fE(n)+"px";u aM=(fH=="3D"?D.aL():D.aK());u 4t=el.1T;if(aM=="2I"){4t.86=6j;4t.85="2N"}N{if(aM=="3g"){4t.85=6j;4t.86="2N"}N{4t.86=6j;4t.85=6j}}},fG:G(el,n,fF){u 6i=D.fz(n)+"px";u aJ=(fF=="3D"?D.aL():D.aK());u 4s=el.1T;if(aJ=="2I"){4s.84=6i;4s.83="2N"}N{if(aJ=="3g"){4s.83=6i;4s.84="2N"}N{4s.84=6i;4s.83=6i}}},fE:G(n){if(D.82){F 0}u o=D.1S;if(o.4r&&o.5j){u fD=[1,0];F fD[n]}N{if(o.4r){u fC=[2,1];F fC[n]}N{if(o.5j){u fB=[3,2,1,0];F fB[n]}N{u fA=[5,3,2,1];F fA[n]}}}},fz:G(n){u o=D.1S;u 5i;if(o.4r&&(o.5j||D.82)){F 1}N{if(o.4r){5i=[1,0]}N{if(o.5j){5i=[2,1,1,1]}N{if(o.3E){5i=[0,2,0,0]}N{if(D.82){5i=[5,3,2,1]}N{F 0}}}}}F 5i[n]},6h:G(1y){R(u i=1;i<M.K;i++){if(1y.2A(M[i])!=-1){F 1h}}F 1m},fy:G(){F D.6h(D.1S.6g,"1p","3D","tl","tr")},fx:G(){F D.6h(D.1S.6g,"1p","6f","bl","br")},mI:G(el){F(el.5h.K==1&&el.5h[0].3T==3)}};B.1X.aF=G(e,fw){Y B.1X.aI(e,fw)};B.1X.fs=G(fv,fu,ft){u aG=B.S.aH(fv,fu);R(u i=0;i<aG.K;i++){B.1X.aF(aG[i],ft)}};B.1X.V=B.V.V;B.1X.mH=B.S.4q;B.1X.2d=G(){u m=B.J;m.3f(D);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)}};B.1X.1z=["aF","fs"];B.1X.1W=[];B.1X.2d();B.J.2Y(D,B.1X);if(H(B)=="L"){B={}}if(H(B.B)=="L"){B.B={}}B.B.1r="B.B";B.B.1Y="1.3.1";B.B.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.B.1l=G(){F D.1K()};B.B.aA=["J","15","1H","1D","1s","1k","S","1I","V","1u","1X"];if(H(1x)!="L"||H(1q)!="L"){if(H(1q)!="L"){1q.2X("B.B");1q.2M("B.*")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.15",[]);1x.26("B.1H",[]);1x.26("B.1D",[]);1x.26("B.1s",[]);1x.26("B.1k",[]);1x.26("B.S",[]);1x.26("B.1I",[]);1x.26("B.V",[]);1x.26("B.1u",[]);1x.26("B.1X",[])}(G(){u 6e=B.J.1R;u I=B.B;u aE=I.aA;u aD=[];u aC=[];u 81={};u i,k,m,1p;R(i=0;i<aE.K;i++){m=B[aE[i]];6e(aD,m.1z);6e(aC,m.1W);R(k in m.2k){81[k]=6e(81[k],m.2k[k])}1p=m.2k[":1p"];if(!1p){1p=6e(O,m.1z,m.1W)}u j;R(j=0;j<1p.K;j++){k=1p[j];I[k]=m[k]}}I.1z=aD;I.1W=aC;I.2k=81}())}N{if(H(B.3d)=="L"){B.3d=1h}(G(){u 80=2v.fr("7W");u ay="fq://fp.mG.fo/mF/mE/mD.is.aB.mC";u 2w=O;u ax=O;u az={};u i;R(i=0;i<80.K;i++){u 1d=80[i].fm("1d");if(!1d){2V}az[1d]=1h;if(1d.3C(/B.js$/)){2w=1d.2W(0,1d.mB("B.js"));ax=80[i]}}if(2w===O){F}u 6d=B.B.aA;R(u i=0;i<6d.K;i++){if(B[6d[i]]){2V}u 7Y=2w+6d[i]+".js";if(7Y in az){2V}if(2v.7Z&&2v.7Z.mA==ay){u s=2v.mz(ay,"7W");s.4p("id","my"+2w+6d[i]);s.4p("1d",7Y);s.4p("1J","mx/x-fk");ax.3t.2c(s)}N{2v.fl("<7W 1d=\\""+7Y+"\\" 1J=\\"7X/fk\\"></7W>")}}})()}',62,1976,'||||||||||||||||||||||||||||||var|||||||MochiKit||this||return|function|typeof|self|Base|length|undefined|arguments|else|null||elem|for|DOM||repr|Color|rval|res|new||||||throw|Iter|||||next|name|push|src|catch|try|lst|true|obj|node|Async|toString|false|string|hue|all|dojo|NAME|Format|msg|Signal|red|apply|JSAN|str|EXPORT|func|rgb|_425|DateTime|getElement|blue|hsl|Logging|LoggingPane|type|__repr__|_event|while|doc|bind|num|iter|extend|options|style|prototype|seq|EXPORT_OK|Visual|VERSION|_document||_434||replace|forwardCall|StopIteration|use||Math|max|min|join|appendChild|__new__|button|compare|date|key|val|_329|EXPORT_TAGS|update|win|pair|concat|_596|dom|map|req|Deferred|sync|document|base|Error|number|partial|indexOf||instanceof|sig|not|cls|list|fired|left|stop|break|logger|require|0px|window|shift|hsv|split|createElement|_423|callee|continue|substring|provide|_exportSymbols|ccc||_464|||||||||step|pred|_51|__compat__|common|nameFunctions|right|255|_517|case|100|_loggingPane|value|object|callback|TypeError|_251|_246|_113|parentNode|display|_522|parseInt|cssText|wrap|info|isArrayLike|end|match|top|border|depends|args|substr|mouse|code|_519|_443|className|level|err|frac|Date|_135|_85|nodeType|color|height|and|_window|fromRGB|charAt||asHSL|_444|message||||filter||LogMessage|AdapterRegistry|_366|imap|NotFound|locked|counter|_262|_messages|operator|cmp|_165|_161|pairs|arr|_52|setAttribute|computedStyle|compact|_614|_610|div|_576|_572|_observers|splice|_565|_566|_555|scrollTop|page|modifier|white|_541|fromHSL|_539|_535|_528|clone|parseFloat|_505|pre|_499|_497|_427|createTextNode|_446|attributeArray|_388|_379|updateNodeAttributes|_341|_326||box|errback|results|paused|chain|_285||ofs||NamedError|_175|_147|_122|_83|_54|_17|childNodes|_619|blend|defaultView|_574|_569|idx|_562|must|_554|_specialKeys|body|Coordinates|registerComparator|_521|_516|hex|mid|_478|width|loggingPane|LogLevel|nwin|head|url|setElementClass|callStack|path|dest|_359|boolean|register|Dimensions|DeferredLock|_313|addCallback|_310|waiting|onreadystatechange|_290|LOCALE|year|printfire|_214|log|_213|_211|pos|_155|_153||typeMatcher|listMinMax|_114|_40|itr|typ|_19|_634|_625|bottom|corners|_hasString|_612|_608|_595|1px|DIV|firstChild|innerHTML|padding|getPropertyValue|asRGB|connect|_disconnect|_559|middle|which|clientY|scrollLeft|clientX|client|charCode|relatedTarget|event|toColorPart|clampColorComponent|_537|_534|toFixed|_468|buildAndApplyFilter|_442|_441|_440|_439|position|_463|_447|removeChild|_449|uid|_428|_426|compliant|attributes|_422|_409|_412|_400|_395|_390|_389|_377|_375|_363|attr|ctx|repeat|_340|_339|isNotEmpty|_335|_333|opera|DeferredList|ret|_309|silentlyCancelled|canceller|_nextId|Array|_293|XMLHttpRequest|chained|_281|tail|_252|_225|msec|day|month|iso|Logger|_208|listeners|_200|_198|_194|_196|reduce|range|_169|_162|truth|registerRepr|_121|_70|_58|_56|_47|_45|_41|_13|_1|script|text|uri|documentElement|_630|_629|isTransparent|borderRightWidth|borderLeftWidth|marginRight|marginLeft|_602|_599|numSlices|solid|_597|block|SPAN|_579|fromString|offsetParent|signal|disconnectAll|disconnect|_570|_563|_557|preventDefault|stopPropagation|clientTop|clientLeft|pageY|pageX|keyCode|meta|ctrl|alt|target|black|_532|_524|floor|_513|_512|_500|_495|toLowerCase|_487|DEBUG|INFO|WARNING|FATAL|ERROR|colorTable|logFont|closed|inline|onclick|_438|_437|_445|RegExp|_452|space|title|updatetree|||||withDocument|withWindow||setDisplayForElement|none|renames|forEach|domConverters|escapeHTML|addElementClass|removeElementClass|once|_378|_380|_376|appendChildNodes|coerceToDOM|_355|opt|clientWidth|opacity|GenericError|fail|resultList|_307|_301|_fire|can|addCallbacks|_resback|percent|decimal|separator|twoDigitFloat|_274|_273|_264|_257|_250|_249|_254|_248|_243|_242|fmt|_240|_245|getTime|sec|hour|_209|slice|_206|iterateNextIter|registerIteratorFactory|arrayLikeIter|iteratorRegistry|takewhile|ifilterfalse|ifilter|_181|_176|_168|_166|_159|_tee|deque|arg|fun|jsonRegistry|reprString|reprRegistry|comparatorRegistry|urlEncode|_110|_108|cur|_95|_87|_71|im_preargs||_53|_57|_46|present|like|array|Argument|_15|_12|_632|_631|_633|SUBMODULES|only|_628|_627|_626|roundElement|_624|getElementsByTagAndClassName|_RoundCorners|_613|_whichSideBottom|_whichSideTop|_609|_605|_606|transparent|_borderColor|_604|_603|_601|_600|bgColor|fromElement|_594|_592|backgroundColor|_createCornerSlice|_createCorner|_590|_589|_587|_586|_581|_578|_577|currentDocument|fromBackground|errors|_568|_564||sigs|flattenArguments|_561|findIdentical|_560|_558||_556|attachEvent|addEventListener|funcOrStr|Event||_548|fromCharCode|String|_specialMacKeys|any|green|_namedColors|hsvToRGB|rgbToHSV|hslToRGB|rgbToHSL|_542|01|360|_fromColorString|_540|_536|_538|_529|_523|_518|fromComputedStyle|_511|_507|_508|_506|_501|fromHexString|_498|_496|_486|__class__|createLoggingPane|_459|_461|font|_462|_430|_435|1000|index|_460|getMessages|removeListener|_451||_457|_450|infore|_448|_456|logDebug|offsetHeight|span|input|_436|TR||HTML|open|alert|currentWindow|swapDOM|SELECT|FORM|INPUT|createDOMFunc|ignoreAttr|_421|call|_417|_410|_415|nodeName|_414|_413|emitHTML|good|_406|_399|_397|_393|_392|addLoadEvent|addToCallStack|_387|_386|_381|_382|_383|_373|_372|_369|createDOM|_365|Function|_360|_362|_358|_344|nodeWalk|formContents|_337|_338|_334|_332|offsetTop|offsetLeft|visibility|parentElement|||XMLHttpRequestError|BrowserComplianceError|CancelledError|AlreadyCalledError|evalJSONRequest|sendXMLHttpRequest|wait|doSimpleXMLHttpRequest|getXMLHttpRequest|succeed|_312|finishedCount|_308|_cbDeferred|_303|_297|queryString|_nothing|_289|XMLHTTP|ActiveXObject|eval|_284|_check|error|_279|default|rstrip|lstrip|formatLocale|roundToFixed|truncToFixed|_276|pow|_272|_271|_270|sign|_265|_263|tmp|_238|_232|toISODate|toISOTime|getFullYear|getDate|getMonth|_230|_padTwo|_228|useNativeConsole|_212|compareLogMessage|isLogMessage|unshift|_207||maxSize|_202|_199|logLevelAtLeast|console|hasIterateNext|iterateNext|arrayLike|groupby||exhaust|tee|dropwhile|applymap||islice|izip|cycle|count||_189|_188|_183|_185|_184|_186|_187|_182|identity|fetch|_180|_177|listMin|reprNumber|reprArrayLike|compareArrayLike|compareDateLike|isDateLike|findValue|_128|__export__|keyComparator|_124|_118|_93|_94|_90|_88|_84|_77|_68|_67|_66|_65|_60|im_func|_55|im_self|_48|_44|_42|_39|_36|_33|_27|_26|_25|_22|_24|_20|javascript|write|getAttribute||org|www|http|getElementsByTagName|roundClass|_623|_622|_621|_620|_isBottomRounded|_isTopRounded|_borderSize|_618|_617|_616|_615|_marginSize|_611|_setBorder|_607|_setMargin|blendedColor|_598|__unstable__wrapElement|fromParent|_setOptions|2px|borderColor|_593|hidden|overflow|_591|_588|_roundBottomCorners|_585|_roundTopCorners|_584|_583|_582|_580|_renderBorder|_roundCornersImpl|getComputedStyle|_doWrap|_571|_unloadCache|onunload|detachEvent|removeEventListener|_listener|objOrFunc|_552||_551|_549|onload|delete|112|KEY_F|KEY_|MINUS|KEY_SEMICOLON|KEY_DELETE|KEY_INSERT|KEY_ARROW_DOWN|KEY_ARROW_RIGHT|KEY_ARROW_UP||KEY_ARROW_LEFT|KEY_HOME|KEY_END|KEY_PAGE_DOWN|KEY_PAGE_UP|KEY_ENTER|KEY_NUM_PAD_CLEAR|63236|mousemove|contextmenu|click|mouseout|mouseover|_src|yellow|708090|purple|orange|ff00ff|magenta|778899|d3d3d3|808080|gray|696969|2f4f4f|darkred|a9a9a9|00ffff|cyan|brown|_547|_546||||compareRGB|_545||_543|fromHSLString|fromRGBString|round|_533|_hslValue|switch|background|_503|_504||fromName|_488|col|toRGBString|_hexString|_rgbString|_hslString|toPrecision|isLight||_481|_477|_476|_475|_474|_473|_469|_466|closePane|_458|onkeypress|_454|addListener|_455|close|test|scrollHeight|option|word|moz|_431|getElementById|html|pop|200|_|removeElement|showElement|hideElement|CANVAS|STRONG|FIELDSET|LEGEND|OPTGROUP|OPTION|TEXTAREA|LABEL|HR|BR|H3|H2|H1|PRE|TT|BUTTON|IMG|TH||TABLE||TFOOT|THEAD|TBODY|TD|LI|OL|||UL|checked|class|ignoreAttrFilter||_424|_419|nodeValue|scrapeText|_416|_418|sort|_411|toHTML|_404|hasElementClass|_403|_402|_401|swapElementClass|_398|_394|toggleElementClass|_391|focusOnLoad|_newCallStack|currentStyle|_371|replaceChildNodes|_364|_361|getNodeAttribute|_357|setNodeAttribute|_354|_352|_350|_353|toDOM|_346|_345|registerDOMConverter|selectedIndex|setElementPosition|setElementDimensions|tagName|absolute|getBoxObjectFor|getBoundingClientRect|elementPosition|_325|_324|_322|_323|offsetWidth|elementDimensions|clientHeight|innerWidth|getViewportDimensions|setOpacity|status|_317|deferred|_316|_newNamedError|maybeDeferred||gatherResults|callLater|loadJSONDoc|_311|consumeErrors|fireOnOneErrback|fireOnOneCallback|addErrback|_305|_304|_306|unlocked|release|_300|_299|_298|_296|_xhr_onreadystatechange|_xhr_canceller|304|responseText|Msxml2|addBoth|_pause|_continue|result|the|are|they|instances|_unpause|cancel|_280|_278|en_US|strip|percentFormat|twoDigitAverage|numberFormatter|_277|_275|isNaN|_259|_258|_260|_255|_253|_numberFormatter|_241|_239|_237|_236|_235|_234|_233|_231|toAmericanDate|toPaddedAmericanDate|americanDate|toISOTimestamp|isoTimestamp|isoDate|foot|sep||60000|_221|_isoRegexp|dispatchEvent|createEvent|warning|logWarning|fatal|logFatal|debug|logError|baseLog|_210|getMessageText|logToConsole|dispatchListeners|_204|_203|ident|_201|postError|alertListener|_197|_192|groupby_as_array|iextend|some|reversed|sorted|every|sum|_190|eat|_174|_173|_172|_171|_167|_163|_158|_157|_151|_144|_141||_139|_136|_134||_133|_132|zip|merge|isUndefined|isCallable|listMax|_131|_130|encodeURIComponent||_127|method|parseQueryString|evalJSON|registerJSON|serializeJSON|objMin|objMax|reverseKeyComparator|arrayEqual|objEqual|bindMethods|xfilter|xmap|isEmpty|isNull|isUndefinedOrNull|itemgetter|items|keys|setdefault|_126|_120|decodeURIComponent|_119|len|_109|_107|_104|_105|_101|_102|_98|||_100|_97|_96|_91|json|__json__|_82|_81|_80|_79|_76||_75|_74|_73|_69|_primitives|_64|_63||_62|_61|_59|_wrapDumbFunction|_49|_50|_31|_30|_21|_7|application|MochiKit_|createElementNS|namespaceURI|lastIndexOf|xul|there|gatekeeper|keymaster|mozilla|getElementsComputedStyle|_hasSingleTextChild|borderWidth|borderStyle|borderBottomWidth|borderTopWidth|borderTopStyle|fontSize|paddingBottom|insertBefore|paddingTop|marginBottom|marginTop|_575|property|see|handling|thrown|Multiple|element|||given|123|KEY_NUM_PAD_|105|KEY_APOSTROPHE|222|KEY_RIGHT_SQUARE_BRACKET|221|KEY_REVERSE_SOLIDUS|220|KEY_LEFT_SQUARE_BRACKET||219|KEY_GRAVE_ACCENT|192|KEY_SOLIDUS|191|KEY_FULL_STOP|190|KEY_HYPHEN|189||KEY_COMMA|188|KEY_EQUALS_SIGN|187|186|KEY_SCROLL_LOCK|145|KEY_NUM_LOCK|144|KEY_NUM_PAD_SOLIDUS|111|KEY_NUM_PAD_FULL_STOP|110|KEY_NUM_PAD_HYPHEN|109|KEY_NUM_PAD_PLUS_SIGN|107|KEY_NUM_PAD_ASTERISK|106|KEY_SELECT|KEY_WINDOWS_RIGHT|KEY_WINDOWS_LEFT|KEY_PRINT_SCREEN|KEY_SPACEBAR|KEY_ESCAPE|KEY_CAPS_LOCK|KEY_PAUSE|KEY_ALT|KEY_CTRL|KEY_SHIFT|KEY_TAB|KEY_BACKSPACE|63242|63272|63302|63233|63235|63232|63234|63273|63275|63277|63276|63289|returnValue|cancelBubble|keypress|KEY_UNKNOWN|keyup|keydown|shiftKey|metaKey||ctrlKey|altKey|toElement|srcElement|9acd32||yellowgreen||ffff00|f5f5f5|whitesmoke||ffffff|f5deb3|wheat|ee82ee|violet|40e0d0|turquoise|ff6347|tomato|d8bfd8|thistle|008080|teal|d2b48c|tan|4682b4|steelblue|00ff7f|springgreen|fffafa|snow|slategrey|slategray|6a5acd|slateblue|87ceeb|skyblue|c0c0c0|silver|a0522d|sienna|fff5ee|seashell|2e8b57|seagreen|f4a460|sandybrown|fa8072|salmon|8b4513|saddlebrown|4169e1|royalblue|bc8f8f|rosybrown|ff0000|800080|b0e0e6|powderblue|dda0dd|plum|ffc0cb|pink|cd853f||peru|ffdab9|peachpuff|ffefd5|papayawhip|db7093|palevioletred|afeeee|paleturquoise|98fb98|palegreen|eee8aa||palegoldenrod|da70d6|orchid|ff4500|orangered|ffa500|6b8e23|olivedrab|808000|olive|fdf5e6|oldlace|000080|navy|ffdead|navajowhite|ffe4b5|moccasin|ffe4e1|mistyrose|f5fffa|mintcream|191970|midnightblue|c71585|mediumvioletred|48d1cc|mediumturquoise|00fa9a|mediumspringgreen|7b68ee|mediumslateblue|3cb371|mediumseagreen|9370db|mediumpurple|ba55d3|mediumorchid|0000cd|mediumblue|66cdaa|mediumaquamarine|800000|maroon|faf0e6|linen|32cd32|limegreen|00ff00|lime|ffffe0|lightyellow|b0c4de|lightsteelblue|lightslategrey|lightslategray||87cefa|lightskyblue|20b2aa|lightseagreen|ffa07a|lightsalmon|ffb6c1|lightpink|lightgrey|90ee90|lightgreen|lightgray|fafad2|lightgoldenrodyellow|e0ffff|lightcyan|f08080|lightcoral|add8e6|lightblue|fffacd|lemonchiffon|7cfc00|lawngreen|fff0f5|lavenderblush|e6e6fa|lavender|f0e68c|khaki|fffff0|ivory|4b0082|indigo|cd5c5c|indianred|ff69b4|hotpink|f0fff0|honeydew|grey|adff2f|greenyellow|008000|daa520|goldenrod|ffd700||gold|f8f8ff|ghostwhite|dcdcdc|gainsboro|fuchsia|228b22|forestgreen|fffaf0|floralwhite|b22222|firebrick|1e90ff|dodgerblue|dimgrey|dimgray|00bfff|deepskyblue|ff1493|deeppink|9400d3|darkviolet|00ced1|darkturquoise|darkslategrey|darkslategray|483d8b|darkslateblue|8fbc8f|darkseagreen|e9967a|darksalmon|8b0000|9932cc|darkorchid|ff8c00|darkorange|556b2f|darkolivegreen|8b008b|darkmagenta|bdb76b|darkkhaki|darkgrey|006400|darkgreen|darkgray|b8860b|darkgoldenrod|008b8b|darkcyan|00008b|darkblue|dc143c|crimson|fff8dc|cornsilk|6495ed|cornflowerblue|ff7f50|coral|d2691e||chocolate|7fff00|chartreuse|5f9ea0|cadetblue|deb887|burlywood|a52a2a|8a2be2|blueviolet|0000ff|ffebcd||blanchedalmond|000000|ffe4c4|bisque|f5f5dc|beige|f0ffff|azure|7fffd4|aquamarine|aqua|faebd7|antiquewhite|f0f8ff|aliceblue|lightGray|darkGray|namedColors|blackColor|fromText|whiteColor|_510|_509|PI|rad|deg|transparentColor|_494|_493|_492|fromHSV|_491|_490|_489|asHSV|toHexString|rgba|hsla|toHSLString|isDark|lighterColorWithLevel|darkerColorWithLevel|colorWithLightness|colorWithSaturation|colorWithHue|colorWithAlpha||serif|sans|Verdana||8pt|8em|auto||Close|Clear||Load|Filter||10em||fixed|regex|emergency|line|margin|_Listener|dtd|loose|html4|w3|EN|Transitional|DTD|W3C|PUBLIC|DOCTYPE|blocking|due|debugging|able|Not|resizable|dependent|href|location|_MochiKit_LoggingPane|_429|canvas|strong|fieldset|legend|optgroup|select|form|textarea|label|img|table|tfoot|thead|tbody|htmlFor||useMap|usemap|defaultChecked|hasChildNodes|quot|amp|_405|focus|replaceChild|checkbox||radio|_win|BODY||safari|version|userAgent|navigator|innerHeight|alpha|khtml|Tried|acquire|clearTimeout|setTimeout|GET|ignore|send|abort|failed|Request|readyState|support|does|Browser|Microsoft|_288|_287|used|Deferreds|Chained|success|unfired|fr_FR|de_DE|00|abs|search|pattern|Invalid|getTimezoneOffset|getSeconds|getMinutes|getHours|UTC|3600000|initEvent|Events|debuggingBookmarklet|MESSAGES|LAST|_205|clear|ninfo|nlevel|timestamp|reverse|takes|initial|with|sequence|empty|iterable|numbers|dateLike|escape|find|forward|unregister|unescape|Object|compared|item|contains|logor|logand|cle|clt|cge|cgt|cne|ceq|zrshift|rshift|lshift|xor|mul|mod|sub|add|neg|lognot|_9|_2'.split('|'),0,{})
+
+
+/*
+ * jQuery 1.2.1 - New Wave Javascript
+ *
+ * Copyright (c) 2007 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2007-09-16 23:42:06 -0400 (Sun, 16 Sep 2007) $
+ * $Rev: 3353 $
+ */
+
+var decompressedJQuery = function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(G(){9(1m E!="W")H w=E;H E=18.15=G(a,b){I 6 7u E?6.5N(a,b):1u E(a,b)};9(1m $!="W")H D=$;18.$=E;H u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/;E.1b=E.3A={5N:G(c,a){c=c||U;9(1m c=="1M"){H m=u.2S(c);9(m&&(m[1]||!a)){9(m[1])c=E.4D([m[1]],a);J{H b=U.3S(m[3]);9(b)9(b.22!=m[3])I E().1Y(c);J{6[0]=b;6.K=1;I 6}J c=[]}}J I 1u E(a).1Y(c)}J 9(E.1n(c))I 1u E(U)[E.1b.2d?"2d":"39"](c);I 6.6v(c.1c==1B&&c||(c.4c||c.K&&c!=18&&!c.1y&&c[0]!=W&&c[0].1y)&&E.2h(c)||[c])},4c:"1.2.1",7Y:G(){I 6.K},K:0,21:G(a){I a==W?E.2h(6):6[a]},2o:G(a){H b=E(a);b.4Y=6;I b},6v:G(a){6.K=0;1B.3A.1a.16(6,a);I 6},N:G(a,b){I E.N(6,a,b)},4I:G(a){H b=-1;6.N(G(i){9(6==a)b=i});I b},1x:G(f,d,e){H c=f;9(f.1c==3X)9(d==W)I 6.K&&E[e||"1x"](6[0],f)||W;J{c={};c[f]=d}I 6.N(G(a){L(H b 1i c)E.1x(e?6.R:6,b,E.1e(6,c[b],e,a,b))})},17:G(b,a){I 6.1x(b,a,"3C")},2g:G(e){9(1m e!="5i"&&e!=S)I 6.4n().3g(U.6F(e));H t="";E.N(e||6,G(){E.N(6.3j,G(){9(6.1y!=8)t+=6.1y!=1?6.6x:E.1b.2g([6])})});I t},5m:G(b){9(6[0])E(b,6[0].3H).6u().3d(6[0]).1X(G(){H a=6;1W(a.1w)a=a.1w;I a}).3g(6);I 6},8m:G(a){I 6.N(G(){E(6).6q().5m(a)})},8d:G(a){I 6.N(G(){E(6).5m(a)})},3g:G(){I 6.3z(1q,Q,1,G(a){6.58(a)})},6j:G(){I 6.3z(1q,Q,-1,G(a){6.3d(a,6.1w)})},6g:G(){I 6.3z(1q,P,1,G(a){6.12.3d(a,6)})},50:G(){I 6.3z(1q,P,-1,G(a){6.12.3d(a,6.2q)})},2D:G(){I 6.4Y||E([])},1Y:G(t){H b=E.1X(6,G(a){I E.1Y(t,a)});I 6.2o(/[^+>] [^+>]/.14(t)||t.1g("..")>-1?E.4V(b):b)},6u:G(e){H f=6.1X(G(){I 6.67?E(6.67)[0]:6.4R(Q)});H d=f.1Y("*").4O().N(G(){9(6[F]!=W)6[F]=S});9(e===Q)6.1Y("*").4O().N(G(i){H c=E.M(6,"2P");L(H a 1i c)L(H b 1i c[a])E.1j.1f(d[i],a,c[a][b],c[a][b].M)});I f},1E:G(t){I 6.2o(E.1n(t)&&E.2W(6,G(b,a){I t.16(b,[a])})||E.3m(t,6))},5V:G(t){I 6.2o(t.1c==3X&&E.3m(t,6,Q)||E.2W(6,G(a){I(t.1c==1B||t.4c)?E.2A(a,t)<0:a!=t}))},1f:G(t){I 6.2o(E.1R(6.21(),t.1c==3X?E(t).21():t.K!=W&&(!t.11||E.11(t,"2Y"))?t:[t]))},3t:G(a){I a?E.3m(a,6).K>0:P},7c:G(a){I 6.3t("."+a)},3i:G(b){9(b==W){9(6.K){H c=6[0];9(E.11(c,"24")){H e=c.4Z,a=[],Y=c.Y,2G=c.O=="24-2G";9(e<0)I S;L(H i=2G?e:0,33=2G?e+1:Y.K;i<33;i++){H d=Y[i];9(d.26){H b=E.V.1h&&!d.9V["1Q"].9L?d.2g:d.1Q;9(2G)I b;a.1a(b)}}I a}J I 6[0].1Q.1p(/\\r/g,"")}}J I 6.N(G(){9(b.1c==1B&&/4k|5j/.14(6.O))6.2Q=(E.2A(6.1Q,b)>=0||E.2A(6.2H,b)>=0);J 9(E.11(6,"24")){H a=b.1c==1B?b:[b];E("9h",6).N(G(){6.26=(E.2A(6.1Q,a)>=0||E.2A(6.2g,a)>=0)});9(!a.K)6.4Z=-1}J 6.1Q=b})},4o:G(a){I a==W?(6.K?6[0].3O:S):6.4n().3g(a)},6H:G(a){I 6.50(a).28()},6E:G(i){I 6.2J(i,i+1)},2J:G(){I 6.2o(1B.3A.2J.16(6,1q))},1X:G(b){I 6.2o(E.1X(6,G(a,i){I b.2O(a,i,a)}))},4O:G(){I 6.1f(6.4Y)},3z:G(f,d,g,e){H c=6.K>1,a;I 6.N(G(){9(!a){a=E.4D(f,6.3H);9(g<0)a.8U()}H b=6;9(d&&E.11(6,"1I")&&E.11(a[0],"4m"))b=6.4l("1K")[0]||6.58(U.5B("1K"));E.N(a,G(){H a=c?6.4R(Q):6;9(!5A(0,a))e.2O(b,a)})})}};G 5A(i,b){H a=E.11(b,"1J");9(a){9(b.3k)E.3G({1d:b.3k,3e:P,1V:"1J"});J E.5f(b.2g||b.6s||b.3O||"");9(b.12)b.12.3b(b)}J 9(b.1y==1)E("1J",b).N(5A);I a}E.1k=E.1b.1k=G(){H c=1q[0]||{},a=1,2c=1q.K,5e=P;9(c.1c==8o){5e=c;c=1q[1]||{}}9(2c==1){c=6;a=0}H b;L(;a<2c;a++)9((b=1q[a])!=S)L(H i 1i b){9(c==b[i])6r;9(5e&&1m b[i]==\'5i\'&&c[i])E.1k(c[i],b[i]);J 9(b[i]!=W)c[i]=b[i]}I c};H F="15"+(1u 3D()).3B(),6p=0,5c={};E.1k({8a:G(a){18.$=D;9(a)18.15=w;I E},1n:G(a){I!!a&&1m a!="1M"&&!a.11&&a.1c!=1B&&/G/i.14(a+"")},4a:G(a){I a.2V&&!a.1G||a.37&&a.3H&&!a.3H.1G},5f:G(a){a=E.36(a);9(a){9(18.6l)18.6l(a);J 9(E.V.1N)18.56(a,0);J 3w.2O(18,a)}},11:G(b,a){I b.11&&b.11.27()==a.27()},1L:{},M:G(c,d,b){c=c==18?5c:c;H a=c[F];9(!a)a=c[F]=++6p;9(d&&!E.1L[a])E.1L[a]={};9(b!=W)E.1L[a][d]=b;I d?E.1L[a][d]:a},30:G(c,b){c=c==18?5c:c;H a=c[F];9(b){9(E.1L[a]){2E E.1L[a][b];b="";L(b 1i E.1L[a])1T;9(!b)E.30(c)}}J{2a{2E c[F]}29(e){9(c.53)c.53(F)}2E E.1L[a]}},N:G(a,b,c){9(c){9(a.K==W)L(H i 1i a)b.16(a[i],c);J L(H i=0,48=a.K;i<48;i++)9(b.16(a[i],c)===P)1T}J{9(a.K==W)L(H i 1i a)b.2O(a[i],i,a[i]);J L(H i=0,48=a.K,3i=a[0];i<48&&b.2O(3i,i,3i)!==P;3i=a[++i]){}}I a},1e:G(c,b,d,e,a){9(E.1n(b))b=b.2O(c,[e]);H f=/z-?4I|7T-?7Q|1r|69|7P-?1H/i;I b&&b.1c==4W&&d=="3C"&&!f.14(a)?b+"2T":b},1o:{1f:G(b,c){E.N((c||"").2l(/\\s+/),G(i,a){9(!E.1o.3K(b.1o,a))b.1o+=(b.1o?" ":"")+a})},28:G(b,c){b.1o=c!=W?E.2W(b.1o.2l(/\\s+/),G(a){I!E.1o.3K(c,a)}).66(" "):""},3K:G(t,c){I E.2A(c,(t.1o||t).3s().2l(/\\s+/))>-1}},2k:G(e,o,f){L(H i 1i o){e.R["3r"+i]=e.R[i];e.R[i]=o[i]}f.16(e,[]);L(H i 1i o)e.R[i]=e.R["3r"+i]},17:G(e,p){9(p=="1H"||p=="2N"){H b={},42,41,d=["7J","7I","7G","7F"];E.N(d,G(){b["7C"+6]=0;b["7B"+6+"5Z"]=0});E.2k(e,b,G(){9(E(e).3t(\':3R\')){42=e.7A;41=e.7w}J{e=E(e.4R(Q)).1Y(":4k").5W("2Q").2D().17({4C:"1P",2X:"4F",19:"2Z",7o:"0",1S:"0"}).5R(e.12)[0];H a=E.17(e.12,"2X")||"3V";9(a=="3V")e.12.R.2X="7g";42=e.7e;41=e.7b;9(a=="3V")e.12.R.2X="3V";e.12.3b(e)}});I p=="1H"?42:41}I E.3C(e,p)},3C:G(h,j,i){H g,2w=[],2k=[];G 3n(a){9(!E.V.1N)I P;H b=U.3o.3Z(a,S);I!b||b.4y("3n")==""}9(j=="1r"&&E.V.1h){g=E.1x(h.R,"1r");I g==""?"1":g}9(j.1t(/4u/i))j=y;9(!i&&h.R[j])g=h.R[j];J 9(U.3o&&U.3o.3Z){9(j.1t(/4u/i))j="4u";j=j.1p(/([A-Z])/g,"-$1").2p();H d=U.3o.3Z(h,S);9(d&&!3n(h))g=d.4y(j);J{L(H a=h;a&&3n(a);a=a.12)2w.4w(a);L(a=0;a<2w.K;a++)9(3n(2w[a])){2k[a]=2w[a].R.19;2w[a].R.19="2Z"}g=j=="19"&&2k[2w.K-1]!=S?"2s":U.3o.3Z(h,S).4y(j)||"";L(a=0;a<2k.K;a++)9(2k[a]!=S)2w[a].R.19=2k[a]}9(j=="1r"&&g=="")g="1"}J 9(h.3Q){H f=j.1p(/\\-(\\w)/g,G(m,c){I c.27()});g=h.3Q[j]||h.3Q[f];9(!/^\\d+(2T)?$/i.14(g)&&/^\\d/.14(g)){H k=h.R.1S;H e=h.4v.1S;h.4v.1S=h.3Q.1S;h.R.1S=g||0;g=h.R.71+"2T";h.R.1S=k;h.4v.1S=e}}I g},4D:G(a,e){H r=[];e=e||U;E.N(a,G(i,d){9(!d)I;9(d.1c==4W)d=d.3s();9(1m d=="1M"){d=d.1p(/(<(\\w+)[^>]*?)\\/>/g,G(m,a,b){I b.1t(/^(70|6Z|6Y|9Q|4t|9N|9K|3a|9G|9E)$/i)?m:a+"></"+b+">"});H s=E.36(d).2p(),1s=e.5B("1s"),2x=[];H c=!s.1g("<9y")&&[1,"<24>","</24>"]||!s.1g("<9w")&&[1,"<6T>","</6T>"]||s.1t(/^<(9u|1K|9t|9r|9p)/)&&[1,"<1I>","</1I>"]||!s.1g("<4m")&&[2,"<1I><1K>","</1K></1I>"]||(!s.1g("<9m")||!s.1g("<9k"))&&[3,"<1I><1K><4m>","</4m></1K></1I>"]||!s.1g("<6Y")&&[2,"<1I><1K></1K><6L>","</6L></1I>"]||E.V.1h&&[1,"1s<1s>","</1s>"]||[0,"",""];1s.3O=c[1]+d+c[2];1W(c[0]--)1s=1s.5p;9(E.V.1h){9(!s.1g("<1I")&&s.1g("<1K")<0)2x=1s.1w&&1s.1w.3j;J 9(c[1]=="<1I>"&&s.1g("<1K")<0)2x=1s.3j;L(H n=2x.K-1;n>=0;--n)9(E.11(2x[n],"1K")&&!2x[n].3j.K)2x[n].12.3b(2x[n]);9(/^\\s/.14(d))1s.3d(e.6F(d.1t(/^\\s*/)[0]),1s.1w)}d=E.2h(1s.3j)}9(0===d.K&&(!E.11(d,"2Y")&&!E.11(d,"24")))I;9(d[0]==W||E.11(d,"2Y")||d.Y)r.1a(d);J r=E.1R(r,d)});I r},1x:G(c,d,a){H e=E.4a(c)?{}:E.5o;9(d=="26"&&E.V.1N)c.12.4Z;9(e[d]){9(a!=W)c[e[d]]=a;I c[e[d]]}J 9(E.V.1h&&d=="R")I E.1x(c.R,"9e",a);J 9(a==W&&E.V.1h&&E.11(c,"2Y")&&(d=="9d"||d=="9a"))I c.97(d).6x;J 9(c.37){9(a!=W){9(d=="O"&&E.11(c,"4t")&&c.12)6G"O 94 93\'t 92 91";c.90(d,a)}9(E.V.1h&&/6C|3k/.14(d)&&!E.4a(c))I c.4p(d,2);I c.4p(d)}J{9(d=="1r"&&E.V.1h){9(a!=W){c.69=1;c.1E=(c.1E||"").1p(/6O\\([^)]*\\)/,"")+(3I(a).3s()=="8S"?"":"6O(1r="+a*6A+")")}I c.1E?(3I(c.1E.1t(/1r=([^)]*)/)[1])/6A).3s():""}d=d.1p(/-([a-z])/8Q,G(z,b){I b.27()});9(a!=W)c[d]=a;I c[d]}},36:G(t){I(t||"").1p(/^\\s+|\\s+$/g,"")},2h:G(a){H r=[];9(1m a!="8P")L(H i=0,2c=a.K;i<2c;i++)r.1a(a[i]);J r=a.2J(0);I r},2A:G(b,a){L(H i=0,2c=a.K;i<2c;i++)9(a[i]==b)I i;I-1},1R:G(a,b){9(E.V.1h){L(H i=0;b[i];i++)9(b[i].1y!=8)a.1a(b[i])}J L(H i=0;b[i];i++)a.1a(b[i]);I a},4V:G(b){H r=[],2f={};2a{L(H i=0,6y=b.K;i<6y;i++){H a=E.M(b[i]);9(!2f[a]){2f[a]=Q;r.1a(b[i])}}}29(e){r=b}I r},2W:G(b,a,c){9(1m a=="1M")a=3w("P||G(a,i){I "+a+"}");H d=[];L(H i=0,4g=b.K;i<4g;i++)9(!c&&a(b[i],i)||c&&!a(b[i],i))d.1a(b[i]);I d},1X:G(c,b){9(1m b=="1M")b=3w("P||G(a){I "+b+"}");H d=[];L(H i=0,4g=c.K;i<4g;i++){H a=b(c[i],i);9(a!==S&&a!=W){9(a.1c!=1B)a=[a];d=d.8M(a)}}I d}});H v=8K.8I.2p();E.V={4s:(v.1t(/.+(?:8F|8E|8C|8B)[\\/: ]([\\d.]+)/)||[])[1],1N:/6w/.14(v),34:/34/.14(v),1h:/1h/.14(v)&&!/34/.14(v),35:/35/.14(v)&&!/(8z|6w)/.14(v)};H y=E.V.1h?"4h":"5h";E.1k({5g:!E.V.1h||U.8y=="8x",4h:E.V.1h?"4h":"5h",5o:{"L":"8w","8v":"1o","4u":y,5h:y,4h:y,3O:"3O",1o:"1o",1Q:"1Q",3c:"3c",2Q:"2Q",8u:"8t",26:"26",8s:"8r"}});E.N({1D:"a.12",8q:"15.4e(a,\'12\')",8p:"15.2I(a,2,\'2q\')",8n:"15.2I(a,2,\'4d\')",8l:"15.4e(a,\'2q\')",8k:"15.4e(a,\'4d\')",8j:"15.5d(a.12.1w,a)",8i:"15.5d(a.1w)",6q:"15.11(a,\'8h\')?a.8f||a.8e.U:15.2h(a.3j)"},G(i,n){E.1b[i]=G(a){H b=E.1X(6,n);9(a&&1m a=="1M")b=E.3m(a,b);I 6.2o(E.4V(b))}});E.N({5R:"3g",8c:"6j",3d:"6g",8b:"50",89:"6H"},G(i,n){E.1b[i]=G(){H a=1q;I 6.N(G(){L(H j=0,2c=a.K;j<2c;j++)E(a[j])[n](6)})}});E.N({5W:G(a){E.1x(6,a,"");6.53(a)},88:G(c){E.1o.1f(6,c)},87:G(c){E.1o.28(6,c)},86:G(c){E.1o[E.1o.3K(6,c)?"28":"1f"](6,c)},28:G(a){9(!a||E.1E(a,[6]).r.K){E.30(6);6.12.3b(6)}},4n:G(){E("*",6).N(G(){E.30(6)});1W(6.1w)6.3b(6.1w)}},G(i,n){E.1b[i]=G(){I 6.N(n,1q)}});E.N(["85","5Z"],G(i,a){H n=a.2p();E.1b[n]=G(h){I 6[0]==18?E.V.1N&&3y["84"+a]||E.5g&&38.33(U.2V["5a"+a],U.1G["5a"+a])||U.1G["5a"+a]:6[0]==U?38.33(U.1G["6n"+a],U.1G["6m"+a]):h==W?(6.K?E.17(6[0],n):S):6.17(n,h.1c==3X?h:h+"2T")}});H C=E.V.1N&&3x(E.V.4s)<83?"(?:[\\\\w*57-]|\\\\\\\\.)":"(?:[\\\\w\\82-\\81*57-]|\\\\\\\\.)",6k=1u 47("^>\\\\s*("+C+"+)"),6i=1u 47("^("+C+"+)(#)("+C+"+)"),6h=1u 47("^([#.]?)("+C+"*)");E.1k({55:{"":"m[2]==\'*\'||15.11(a,m[2])","#":"a.4p(\'22\')==m[2]",":":{80:"i<m[3]-0",7Z:"i>m[3]-0",2I:"m[3]-0==i",6E:"m[3]-0==i",3v:"i==0",3u:"i==r.K-1",6f:"i%2==0",6e:"i%2","3v-46":"a.12.4l(\'*\')[0]==a","3u-46":"15.2I(a.12.5p,1,\'4d\')==a","7X-46":"!15.2I(a.12.5p,2,\'4d\')",1D:"a.1w",4n:"!a.1w",7W:"(a.6s||a.7V||15(a).2g()||\'\').1g(m[3])>=0",3R:\'"1P"!=a.O&&15.17(a,"19")!="2s"&&15.17(a,"4C")!="1P"\',1P:\'"1P"==a.O||15.17(a,"19")=="2s"||15.17(a,"4C")=="1P"\',7U:"!a.3c",3c:"a.3c",2Q:"a.2Q",26:"a.26||15.1x(a,\'26\')",2g:"\'2g\'==a.O",4k:"\'4k\'==a.O",5j:"\'5j\'==a.O",54:"\'54\'==a.O",52:"\'52\'==a.O",51:"\'51\'==a.O",6d:"\'6d\'==a.O",6c:"\'6c\'==a.O",2r:\'"2r"==a.O||15.11(a,"2r")\',4t:"/4t|24|6b|2r/i.14(a.11)",3K:"15.1Y(m[3],a).K",7S:"/h\\\\d/i.14(a.11)",7R:"15.2W(15.32,G(1b){I a==1b.T;}).K"}},6a:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,1u 47("^([:.#]*)("+C+"+)")],3m:G(a,c,b){H d,2b=[];1W(a&&a!=d){d=a;H f=E.1E(a,c,b);a=f.t.1p(/^\\s*,\\s*/,"");2b=b?c=f.r:E.1R(2b,f.r)}I 2b},1Y:G(t,o){9(1m t!="1M")I[t];9(o&&!o.1y)o=S;o=o||U;H d=[o],2f=[],3u;1W(t&&3u!=t){H r=[];3u=t;t=E.36(t);H l=P;H g=6k;H m=g.2S(t);9(m){H p=m[1].27();L(H i=0;d[i];i++)L(H c=d[i].1w;c;c=c.2q)9(c.1y==1&&(p=="*"||c.11.27()==p.27()))r.1a(c);d=r;t=t.1p(g,"");9(t.1g(" ")==0)6r;l=Q}J{g=/^([>+~])\\s*(\\w*)/i;9((m=g.2S(t))!=S){r=[];H p=m[2],1R={};m=m[1];L(H j=0,31=d.K;j<31;j++){H n=m=="~"||m=="+"?d[j].2q:d[j].1w;L(;n;n=n.2q)9(n.1y==1){H h=E.M(n);9(m=="~"&&1R[h])1T;9(!p||n.11.27()==p.27()){9(m=="~")1R[h]=Q;r.1a(n)}9(m=="+")1T}}d=r;t=E.36(t.1p(g,""));l=Q}}9(t&&!l){9(!t.1g(",")){9(o==d[0])d.44();2f=E.1R(2f,d);r=d=[o];t=" "+t.68(1,t.K)}J{H k=6i;H m=k.2S(t);9(m){m=[0,m[2],m[3],m[1]]}J{k=6h;m=k.2S(t)}m[2]=m[2].1p(/\\\\/g,"");H f=d[d.K-1];9(m[1]=="#"&&f&&f.3S&&!E.4a(f)){H q=f.3S(m[2]);9((E.V.1h||E.V.34)&&q&&1m q.22=="1M"&&q.22!=m[2])q=E(\'[@22="\'+m[2]+\'"]\',f)[0];d=r=q&&(!m[3]||E.11(q,m[3]))?[q]:[]}J{L(H i=0;d[i];i++){H a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];9(a=="*"&&d[i].11.2p()=="5i")a="3a";r=E.1R(r,d[i].4l(a))}9(m[1]==".")r=E.4X(r,m[2]);9(m[1]=="#"){H e=[];L(H i=0;r[i];i++)9(r[i].4p("22")==m[2]){e=[r[i]];1T}r=e}d=r}t=t.1p(k,"")}}9(t){H b=E.1E(t,r);d=r=b.r;t=E.36(b.t)}}9(t)d=[];9(d&&o==d[0])d.44();2f=E.1R(2f,d);I 2f},4X:G(r,m,a){m=" "+m+" ";H c=[];L(H i=0;r[i];i++){H b=(" "+r[i].1o+" ").1g(m)>=0;9(!a&&b||a&&!b)c.1a(r[i])}I c},1E:G(t,r,h){H d;1W(t&&t!=d){d=t;H p=E.6a,m;L(H i=0;p[i];i++){m=p[i].2S(t);9(m){t=t.7O(m[0].K);m[2]=m[2].1p(/\\\\/g,"");1T}}9(!m)1T;9(m[1]==":"&&m[2]=="5V")r=E.1E(m[3],r,Q).r;J 9(m[1]==".")r=E.4X(r,m[2],h);J 9(m[1]=="["){H g=[],O=m[3];L(H i=0,31=r.K;i<31;i++){H a=r[i],z=a[E.5o[m[2]]||m[2]];9(z==S||/6C|3k|26/.14(m[2]))z=E.1x(a,m[2])||\'\';9((O==""&&!!z||O=="="&&z==m[5]||O=="!="&&z!=m[5]||O=="^="&&z&&!z.1g(m[5])||O=="$="&&z.68(z.K-m[5].K)==m[5]||(O=="*="||O=="~=")&&z.1g(m[5])>=0)^h)g.1a(a)}r=g}J 9(m[1]==":"&&m[2]=="2I-46"){H e={},g=[],14=/(\\d*)n\\+?(\\d*)/.2S(m[3]=="6f"&&"2n"||m[3]=="6e"&&"2n+1"||!/\\D/.14(m[3])&&"n+"+m[3]||m[3]),3v=(14[1]||1)-0,d=14[2]-0;L(H i=0,31=r.K;i<31;i++){H j=r[i],12=j.12,22=E.M(12);9(!e[22]){H c=1;L(H n=12.1w;n;n=n.2q)9(n.1y==1)n.4U=c++;e[22]=Q}H b=P;9(3v==1){9(d==0||j.4U==d)b=Q}J 9((j.4U+d)%3v==0)b=Q;9(b^h)g.1a(j)}r=g}J{H f=E.55[m[1]];9(1m f!="1M")f=E.55[m[1]][m[2]];f=3w("P||G(a,i){I "+f+"}");r=E.2W(r,f,h)}}I{r:r,t:t}},4e:G(b,c){H d=[];H a=b[c];1W(a&&a!=U){9(a.1y==1)d.1a(a);a=a[c]}I d},2I:G(a,e,c,b){e=e||1;H d=0;L(;a;a=a[c])9(a.1y==1&&++d==e)1T;I a},5d:G(n,a){H r=[];L(;n;n=n.2q){9(n.1y==1&&(!a||n!=a))r.1a(n)}I r}});E.1j={1f:G(g,e,c,h){9(E.V.1h&&g.4j!=W)g=18;9(!c.2u)c.2u=6.2u++;9(h!=W){H d=c;c=G(){I d.16(6,1q)};c.M=h;c.2u=d.2u}H i=e.2l(".");e=i[0];c.O=i[1];H b=E.M(g,"2P")||E.M(g,"2P",{});H f=E.M(g,"2t",G(){H a;9(1m E=="W"||E.1j.4T)I a;a=E.1j.2t.16(g,1q);I a});H j=b[e];9(!j){j=b[e]={};9(g.4S)g.4S(e,f,P);J g.7N("43"+e,f)}j[c.2u]=c;6.1Z[e]=Q},2u:1,1Z:{},28:G(d,c,b){H e=E.M(d,"2P"),2L,4I;9(1m c=="1M"){H a=c.2l(".");c=a[0]}9(e){9(c&&c.O){b=c.4Q;c=c.O}9(!c){L(c 1i e)6.28(d,c)}J 9(e[c]){9(b)2E e[c][b.2u];J L(b 1i e[c])9(!a[1]||e[c][b].O==a[1])2E e[c][b];L(2L 1i e[c])1T;9(!2L){9(d.4P)d.4P(c,E.M(d,"2t"),P);J d.7M("43"+c,E.M(d,"2t"));2L=S;2E e[c]}}L(2L 1i e)1T;9(!2L){E.30(d,"2P");E.30(d,"2t")}}},1F:G(d,b,e,c,f){b=E.2h(b||[]);9(!e){9(6.1Z[d])E("*").1f([18,U]).1F(d,b)}J{H a,2L,1b=E.1n(e[d]||S),4N=!b[0]||!b[0].2M;9(4N)b.4w(6.4M({O:d,2m:e}));b[0].O=d;9(E.1n(E.M(e,"2t")))a=E.M(e,"2t").16(e,b);9(!1b&&e["43"+d]&&e["43"+d].16(e,b)===P)a=P;9(4N)b.44();9(f&&f.16(e,b)===P)a=P;9(1b&&c!==P&&a!==P&&!(E.11(e,\'a\')&&d=="4L")){6.4T=Q;e[d]()}6.4T=P}I a},2t:G(d){H a;d=E.1j.4M(d||18.1j||{});H b=d.O.2l(".");d.O=b[0];H c=E.M(6,"2P")&&E.M(6,"2P")[d.O],3q=1B.3A.2J.2O(1q,1);3q.4w(d);L(H j 1i c){3q[0].4Q=c[j];3q[0].M=c[j].M;9(!b[1]||c[j].O==b[1]){H e=c[j].16(6,3q);9(a!==P)a=e;9(e===P){d.2M();d.3p()}}}9(E.V.1h)d.2m=d.2M=d.3p=d.4Q=d.M=S;I a},4M:G(c){H a=c;c=E.1k({},a);c.2M=G(){9(a.2M)a.2M();a.7L=P};c.3p=G(){9(a.3p)a.3p();a.7K=Q};9(!c.2m&&c.65)c.2m=c.65;9(E.V.1N&&c.2m.1y==3)c.2m=a.2m.12;9(!c.4K&&c.4J)c.4K=c.4J==c.2m?c.7H:c.4J;9(c.64==S&&c.63!=S){H e=U.2V,b=U.1G;c.64=c.63+(e&&e.2R||b.2R||0);c.7E=c.7D+(e&&e.2B||b.2B||0)}9(!c.3Y&&(c.61||c.60))c.3Y=c.61||c.60;9(!c.5F&&c.5D)c.5F=c.5D;9(!c.3Y&&c.2r)c.3Y=(c.2r&1?1:(c.2r&2?3:(c.2r&4?2:0)));I c}};E.1b.1k({3W:G(c,a,b){I c=="5Y"?6.2G(c,a,b):6.N(G(){E.1j.1f(6,c,b||a,b&&a)})},2G:G(d,b,c){I 6.N(G(){E.1j.1f(6,d,G(a){E(6).5X(a);I(c||b).16(6,1q)},c&&b)})},5X:G(a,b){I 6.N(G(){E.1j.28(6,a,b)})},1F:G(c,a,b){I 6.N(G(){E.1j.1F(c,a,6,Q,b)})},7x:G(c,a,b){9(6[0])I E.1j.1F(c,a,6[0],P,b)},25:G(){H a=1q;I 6.4L(G(e){6.4H=0==6.4H?1:0;e.2M();I a[6.4H].16(6,[e])||P})},7v:G(f,g){G 4G(e){H p=e.4K;1W(p&&p!=6)2a{p=p.12}29(e){p=6};9(p==6)I P;I(e.O=="4x"?f:g).16(6,[e])}I 6.4x(4G).5U(4G)},2d:G(f){5T();9(E.3T)f.16(U,[E]);J E.3l.1a(G(){I f.16(6,[E])});I 6}});E.1k({3T:P,3l:[],2d:G(){9(!E.3T){E.3T=Q;9(E.3l){E.N(E.3l,G(){6.16(U)});E.3l=S}9(E.V.35||E.V.34)U.4P("5S",E.2d,P);9(!18.7t.K)E(18).39(G(){E("#4E").28()})}}});E.N(("7s,7r,39,7q,6n,5Y,4L,7p,"+"7n,7m,7l,4x,5U,7k,24,"+"51,7j,7i,7h,3U").2l(","),G(i,o){E.1b[o]=G(f){I f?6.3W(o,f):6.1F(o)}});H x=P;G 5T(){9(x)I;x=Q;9(E.V.35||E.V.34)U.4S("5S",E.2d,P);J 9(E.V.1h){U.7f("<7d"+"7y 22=4E 7z=Q "+"3k=//:><\\/1J>");H a=U.3S("4E");9(a)a.62=G(){9(6.2C!="1l")I;E.2d()};a=S}J 9(E.V.1N)E.4B=4j(G(){9(U.2C=="5Q"||U.2C=="1l"){4A(E.4B);E.4B=S;E.2d()}},10);E.1j.1f(18,"39",E.2d)}E.1b.1k({39:G(g,d,c){9(E.1n(g))I 6.3W("39",g);H e=g.1g(" ");9(e>=0){H i=g.2J(e,g.K);g=g.2J(0,e)}c=c||G(){};H f="4z";9(d)9(E.1n(d)){c=d;d=S}J{d=E.3a(d);f="5P"}H h=6;E.3G({1d:g,O:f,M:d,1l:G(a,b){9(b=="1C"||b=="5O")h.4o(i?E("<1s/>").3g(a.40.1p(/<1J(.|\\s)*?\\/1J>/g,"")).1Y(i):a.40);56(G(){h.N(c,[a.40,b,a])},13)}});I 6},7a:G(){I E.3a(6.5M())},5M:G(){I 6.1X(G(){I E.11(6,"2Y")?E.2h(6.79):6}).1E(G(){I 6.2H&&!6.3c&&(6.2Q||/24|6b/i.14(6.11)||/2g|1P|52/i.14(6.O))}).1X(G(i,c){H b=E(6).3i();I b==S?S:b.1c==1B?E.1X(b,G(a,i){I{2H:c.2H,1Q:a}}):{2H:c.2H,1Q:b}}).21()}});E.N("5L,5K,6t,5J,5I,5H".2l(","),G(i,o){E.1b[o]=G(f){I 6.3W(o,f)}});H B=(1u 3D).3B();E.1k({21:G(d,b,a,c){9(E.1n(b)){a=b;b=S}I E.3G({O:"4z",1d:d,M:b,1C:a,1V:c})},78:G(b,a){I E.21(b,S,a,"1J")},77:G(c,b,a){I E.21(c,b,a,"45")},76:G(d,b,a,c){9(E.1n(b)){a=b;b={}}I E.3G({O:"5P",1d:d,M:b,1C:a,1V:c})},75:G(a){E.1k(E.59,a)},59:{1Z:Q,O:"4z",2z:0,5G:"74/x-73-2Y-72",6o:Q,3e:Q,M:S},49:{},3G:G(s){H f,2y=/=(\\?|%3F)/g,1v,M;s=E.1k(Q,s,E.1k(Q,{},E.59,s));9(s.M&&s.6o&&1m s.M!="1M")s.M=E.3a(s.M);9(s.1V=="4b"){9(s.O.2p()=="21"){9(!s.1d.1t(2y))s.1d+=(s.1d.1t(/\\?/)?"&":"?")+(s.4b||"5E")+"=?"}J 9(!s.M||!s.M.1t(2y))s.M=(s.M?s.M+"&":"")+(s.4b||"5E")+"=?";s.1V="45"}9(s.1V=="45"&&(s.M&&s.M.1t(2y)||s.1d.1t(2y))){f="4b"+B++;9(s.M)s.M=s.M.1p(2y,"="+f);s.1d=s.1d.1p(2y,"="+f);s.1V="1J";18[f]=G(a){M=a;1C();1l();18[f]=W;2a{2E 18[f]}29(e){}}}9(s.1V=="1J"&&s.1L==S)s.1L=P;9(s.1L===P&&s.O.2p()=="21")s.1d+=(s.1d.1t(/\\?/)?"&":"?")+"57="+(1u 3D()).3B();9(s.M&&s.O.2p()=="21"){s.1d+=(s.1d.1t(/\\?/)?"&":"?")+s.M;s.M=S}9(s.1Z&&!E.5b++)E.1j.1F("5L");9(!s.1d.1g("8g")&&s.1V=="1J"){H h=U.4l("9U")[0];H g=U.5B("1J");g.3k=s.1d;9(!f&&(s.1C||s.1l)){H j=P;g.9R=g.62=G(){9(!j&&(!6.2C||6.2C=="5Q"||6.2C=="1l")){j=Q;1C();1l();h.3b(g)}}}h.58(g);I}H k=P;H i=18.6X?1u 6X("9P.9O"):1u 6W();i.9M(s.O,s.1d,s.3e);9(s.M)i.5C("9J-9I",s.5G);9(s.5y)i.5C("9H-5x-9F",E.49[s.1d]||"9D, 9C 9B 9A 5v:5v:5v 9z");i.5C("X-9x-9v","6W");9(s.6U)s.6U(i);9(s.1Z)E.1j.1F("5H",[i,s]);H c=G(a){9(!k&&i&&(i.2C==4||a=="2z")){k=Q;9(d){4A(d);d=S}1v=a=="2z"&&"2z"||!E.6S(i)&&"3U"||s.5y&&E.6R(i,s.1d)&&"5O"||"1C";9(1v=="1C"){2a{M=E.6Q(i,s.1V)}29(e){1v="5k"}}9(1v=="1C"){H b;2a{b=i.5s("6P-5x")}29(e){}9(s.5y&&b)E.49[s.1d]=b;9(!f)1C()}J E.5r(s,i,1v);1l();9(s.3e)i=S}};9(s.3e){H d=4j(c,13);9(s.2z>0)56(G(){9(i){i.9q();9(!k)c("2z")}},s.2z)}2a{i.9o(s.M)}29(e){E.5r(s,i,S,e)}9(!s.3e)c();I i;G 1C(){9(s.1C)s.1C(M,1v);9(s.1Z)E.1j.1F("5I",[i,s])}G 1l(){9(s.1l)s.1l(i,1v);9(s.1Z)E.1j.1F("6t",[i,s]);9(s.1Z&&!--E.5b)E.1j.1F("5K")}},5r:G(s,a,b,e){9(s.3U)s.3U(a,b,e);9(s.1Z)E.1j.1F("5J",[a,s,e])},5b:0,6S:G(r){2a{I!r.1v&&9n.9l=="54:"||(r.1v>=6N&&r.1v<9j)||r.1v==6M||E.V.1N&&r.1v==W}29(e){}I P},6R:G(a,c){2a{H b=a.5s("6P-5x");I a.1v==6M||b==E.49[c]||E.V.1N&&a.1v==W}29(e){}I P},6Q:G(r,b){H c=r.5s("9i-O");H d=b=="6K"||!b&&c&&c.1g("6K")>=0;H a=d?r.9g:r.40;9(d&&a.2V.37=="5k")6G"5k";9(b=="1J")E.5f(a);9(b=="45")a=3w("("+a+")");I a},3a:G(a){H s=[];9(a.1c==1B||a.4c)E.N(a,G(){s.1a(3f(6.2H)+"="+3f(6.1Q))});J L(H j 1i a)9(a[j]&&a[j].1c==1B)E.N(a[j],G(){s.1a(3f(j)+"="+3f(6))});J s.1a(3f(j)+"="+3f(a[j]));I s.66("&").1p(/%20/g,"+")}});E.1b.1k({1A:G(b,a){I b?6.1U({1H:"1A",2N:"1A",1r:"1A"},b,a):6.1E(":1P").N(G(){6.R.19=6.3h?6.3h:"";9(E.17(6,"19")=="2s")6.R.19="2Z"}).2D()},1z:G(b,a){I b?6.1U({1H:"1z",2N:"1z",1r:"1z"},b,a):6.1E(":3R").N(G(){6.3h=6.3h||E.17(6,"19");9(6.3h=="2s")6.3h="2Z";6.R.19="2s"}).2D()},6J:E.1b.25,25:G(a,b){I E.1n(a)&&E.1n(b)?6.6J(a,b):a?6.1U({1H:"25",2N:"25",1r:"25"},a,b):6.N(G(){E(6)[E(6).3t(":1P")?"1A":"1z"]()})},9c:G(b,a){I 6.1U({1H:"1A"},b,a)},9b:G(b,a){I 6.1U({1H:"1z"},b,a)},99:G(b,a){I 6.1U({1H:"25"},b,a)},98:G(b,a){I 6.1U({1r:"1A"},b,a)},96:G(b,a){I 6.1U({1r:"1z"},b,a)},95:G(c,a,b){I 6.1U({1r:a},c,b)},1U:G(k,i,h,g){H j=E.6D(i,h,g);I 6[j.3L===P?"N":"3L"](G(){j=E.1k({},j);H f=E(6).3t(":1P"),3y=6;L(H p 1i k){9(k[p]=="1z"&&f||k[p]=="1A"&&!f)I E.1n(j.1l)&&j.1l.16(6);9(p=="1H"||p=="2N"){j.19=E.17(6,"19");j.2U=6.R.2U}}9(j.2U!=S)6.R.2U="1P";j.3M=E.1k({},k);E.N(k,G(c,a){H e=1u E.2j(3y,j,c);9(/25|1A|1z/.14(a))e[a=="25"?f?"1A":"1z":a](k);J{H b=a.3s().1t(/^([+-]=)?([\\d+-.]+)(.*)$/),1O=e.2b(Q)||0;9(b){H d=3I(b[2]),2i=b[3]||"2T";9(2i!="2T"){3y.R[c]=(d||1)+2i;1O=((d||1)/e.2b(Q))*1O;3y.R[c]=1O+2i}9(b[1])d=((b[1]=="-="?-1:1)*d)+1O;e.3N(1O,d,2i)}J e.3N(1O,a,"")}});I Q})},3L:G(a,b){9(E.1n(a)){b=a;a="2j"}9(!a||(1m a=="1M"&&!b))I A(6[0],a);I 6.N(G(){9(b.1c==1B)A(6,a,b);J{A(6,a).1a(b);9(A(6,a).K==1)b.16(6)}})},9f:G(){H a=E.32;I 6.N(G(){L(H i=0;i<a.K;i++)9(a[i].T==6)a.6I(i--,1)}).5n()}});H A=G(b,c,a){9(!b)I;H q=E.M(b,c+"3L");9(!q||a)q=E.M(b,c+"3L",a?E.2h(a):[]);I q};E.1b.5n=G(a){a=a||"2j";I 6.N(G(){H q=A(6,a);q.44();9(q.K)q[0].16(6)})};E.1k({6D:G(b,a,c){H d=b&&b.1c==8Z?b:{1l:c||!c&&a||E.1n(b)&&b,2e:b,3J:c&&a||a&&a.1c!=8Y&&a};d.2e=(d.2e&&d.2e.1c==4W?d.2e:{8X:8W,8V:6N}[d.2e])||8T;d.3r=d.1l;d.1l=G(){E(6).5n();9(E.1n(d.3r))d.3r.16(6)};I d},3J:{6B:G(p,n,b,a){I b+a*p},5q:G(p,n,b,a){I((-38.9s(p*38.8R)/2)+0.5)*a+b}},32:[],2j:G(b,c,a){6.Y=c;6.T=b;6.1e=a;9(!c.3P)c.3P={}}});E.2j.3A={4r:G(){9(6.Y.2F)6.Y.2F.16(6.T,[6.2v,6]);(E.2j.2F[6.1e]||E.2j.2F.6z)(6);9(6.1e=="1H"||6.1e=="2N")6.T.R.19="2Z"},2b:G(a){9(6.T[6.1e]!=S&&6.T.R[6.1e]==S)I 6.T[6.1e];H r=3I(E.3C(6.T,6.1e,a));I r&&r>-8O?r:3I(E.17(6.T,6.1e))||0},3N:G(c,b,e){6.5u=(1u 3D()).3B();6.1O=c;6.2D=b;6.2i=e||6.2i||"2T";6.2v=6.1O;6.4q=6.4i=0;6.4r();H f=6;G t(){I f.2F()}t.T=6.T;E.32.1a(t);9(E.32.K==1){H d=4j(G(){H a=E.32;L(H i=0;i<a.K;i++)9(!a[i]())a.6I(i--,1);9(!a.K)4A(d)},13)}},1A:G(){6.Y.3P[6.1e]=E.1x(6.T.R,6.1e);6.Y.1A=Q;6.3N(0,6.2b());9(6.1e=="2N"||6.1e=="1H")6.T.R[6.1e]="8N";E(6.T).1A()},1z:G(){6.Y.3P[6.1e]=E.1x(6.T.R,6.1e);6.Y.1z=Q;6.3N(6.2b(),0)},2F:G(){H t=(1u 3D()).3B();9(t>6.Y.2e+6.5u){6.2v=6.2D;6.4q=6.4i=1;6.4r();6.Y.3M[6.1e]=Q;H a=Q;L(H i 1i 6.Y.3M)9(6.Y.3M[i]!==Q)a=P;9(a){9(6.Y.19!=S){6.T.R.2U=6.Y.2U;6.T.R.19=6.Y.19;9(E.17(6.T,"19")=="2s")6.T.R.19="2Z"}9(6.Y.1z)6.T.R.19="2s";9(6.Y.1z||6.Y.1A)L(H p 1i 6.Y.3M)E.1x(6.T.R,p,6.Y.3P[p])}9(a&&E.1n(6.Y.1l))6.Y.1l.16(6.T);I P}J{H n=t-6.5u;6.4i=n/6.Y.2e;6.4q=E.3J[6.Y.3J||(E.3J.5q?"5q":"6B")](6.4i,n,0,1,6.Y.2e);6.2v=6.1O+((6.2D-6.1O)*6.4q);6.4r()}I Q}};E.2j.2F={2R:G(a){a.T.2R=a.2v},2B:G(a){a.T.2B=a.2v},1r:G(a){E.1x(a.T.R,"1r",a.2v)},6z:G(a){a.T.R[a.1e]=a.2v+a.2i}};E.1b.6m=G(){H c=0,3E=0,T=6[0],5t;9(T)8L(E.V){H b=E.17(T,"2X")=="4F",1D=T.12,23=T.23,2K=T.3H,4f=1N&&3x(4s)<8J;9(T.6V){5w=T.6V();1f(5w.1S+38.33(2K.2V.2R,2K.1G.2R),5w.3E+38.33(2K.2V.2B,2K.1G.2B));9(1h){H d=E("4o").17("8H");d=(d=="8G"||E.5g&&3x(4s)>=7)&&2||d;1f(-d,-d)}}J{1f(T.5l,T.5z);1W(23){1f(23.5l,23.5z);9(35&&/^t[d|h]$/i.14(1D.37)||!4f)d(23);9(4f&&!b&&E.17(23,"2X")=="4F")b=Q;23=23.23}1W(1D.37&&!/^1G|4o$/i.14(1D.37)){9(!/^8D|1I-9S.*$/i.14(E.17(1D,"19")))1f(-1D.2R,-1D.2B);9(35&&E.17(1D,"2U")!="3R")d(1D);1D=1D.12}9(4f&&b)1f(-2K.1G.5l,-2K.1G.5z)}5t={3E:3E,1S:c}}I 5t;G d(a){1f(E.17(a,"9T"),E.17(a,"8A"))}G 1f(l,t){c+=3x(l)||0;3E+=3x(t)||0}}})();',62,616,'||||||this|||if|||||||||||||||||||||||||||||||||function|var|return|else|length|for|data|each|type|false|true|style|null|elem|document|browser|undefined||options|||nodeName|parentNode||test|jQuery|apply|css|window|display|push|fn|constructor|url|prop|add|indexOf|msie|in|event|extend|complete|typeof|isFunction|className|replace|arguments|opacity|div|match|new|status|firstChild|attr|nodeType|hide|show|Array|success|parent|filter|trigger|body|height|table|script|tbody|cache|string|safari|start|hidden|value|merge|left|break|animate|dataType|while|map|find|global||get|id|offsetParent|select|toggle|selected|toUpperCase|remove|catch|try|cur|al|ready|duration|done|text|makeArray|unit|fx|swap|split|target||pushStack|toLowerCase|nextSibling|button|none|handle|guid|now|stack|tb|jsre|timeout|inArray|scrollTop|readyState|end|delete|step|one|name|nth|slice|doc|ret|preventDefault|width|call|events|checked|scrollLeft|exec|px|overflow|documentElement|grep|position|form|block|removeData|rl|timers|max|opera|mozilla|trim|tagName|Math|load|param|removeChild|disabled|insertBefore|async|encodeURIComponent|append|oldblock|val|childNodes|src|readyList|multiFilter|color|defaultView|stopPropagation|args|old|toString|is|last|first|eval|parseInt|self|domManip|prototype|getTime|curCSS|Date|top||ajax|ownerDocument|parseFloat|easing|has|queue|curAnim|custom|innerHTML|orig|currentStyle|visible|getElementById|isReady|error|static|bind|String|which|getComputedStyle|responseText|oWidth|oHeight|on|shift|json|child|RegExp|ol|lastModified|isXMLDoc|jsonp|jquery|previousSibling|dir|safari2|el|styleFloat|state|setInterval|radio|getElementsByTagName|tr|empty|html|getAttribute|pos|update|version|input|float|runtimeStyle|unshift|mouseover|getPropertyValue|GET|clearInterval|safariTimer|visibility|clean|__ie_init|absolute|handleHover|lastToggle|index|fromElement|relatedTarget|click|fix|evt|andSelf|removeEventListener|handler|cloneNode|addEventListener|triggered|nodeIndex|unique|Number|classFilter|prevObject|selectedIndex|after|submit|password|removeAttribute|file|expr|setTimeout|_|appendChild|ajaxSettings|client|active|win|sibling|deep|globalEval|boxModel|cssFloat|object|checkbox|parsererror|offsetLeft|wrapAll|dequeue|props|lastChild|swing|handleError|getResponseHeader|results|startTime|00|box|Modified|ifModified|offsetTop|evalScript|createElement|setRequestHeader|ctrlKey|callback|metaKey|contentType|ajaxSend|ajaxSuccess|ajaxError|ajaxStop|ajaxStart|serializeArray|init|notmodified|POST|loaded|appendTo|DOMContentLoaded|bindReady|mouseout|not|removeAttr|unbind|unload|Width|keyCode|charCode|onreadystatechange|clientX|pageX|srcElement|join|outerHTML|substr|zoom|parse|textarea|reset|image|odd|even|before|quickClass|quickID|prepend|quickChild|execScript|offset|scroll|processData|uuid|contents|continue|textContent|ajaxComplete|clone|setArray|webkit|nodeValue|fl|_default|100|linear|href|speed|eq|createTextNode|throw|replaceWith|splice|_toggle|xml|colgroup|304|200|alpha|Last|httpData|httpNotModified|httpSuccess|fieldset|beforeSend|getBoundingClientRect|XMLHttpRequest|ActiveXObject|col|br|abbr|pixelLeft|urlencoded|www|application|ajaxSetup|post|getJSON|getScript|elements|serialize|clientWidth|hasClass|scr|clientHeight|write|relative|keyup|keypress|keydown|change|mousemove|mouseup|mousedown|right|dblclick|resize|focus|blur|frames|instanceof|hover|offsetWidth|triggerHandler|ipt|defer|offsetHeight|border|padding|clientY|pageY|Left|Right|toElement|Bottom|Top|cancelBubble|returnValue|detachEvent|attachEvent|substring|line|weight|animated|header|font|enabled|innerText|contains|only|size|gt|lt|uFFFF|u0128|417|inner|Height|toggleClass|removeClass|addClass|replaceAll|noConflict|insertAfter|prependTo|wrap|contentWindow|contentDocument|http|iframe|children|siblings|prevAll|nextAll|wrapInner|prev|Boolean|next|parents|maxLength|maxlength|readOnly|readonly|class|htmlFor|CSS1Compat|compatMode|compatible|borderTopWidth|ie|ra|inline|it|rv|medium|borderWidth|userAgent|522|navigator|with|concat|1px|10000|array|ig|PI|NaN|400|reverse|fast|600|slow|Function|Object|setAttribute|changed|be|can|property|fadeTo|fadeOut|getAttributeNode|fadeIn|slideToggle|method|slideUp|slideDown|action|cssText|stop|responseXML|option|content|300|th|protocol|td|location|send|cap|abort|colg|cos|tfoot|thead|With|leg|Requested|opt|GMT|1970|Jan|01|Thu|area|Since|hr|If|Type|Content|meta|specified|open|link|XMLHTTP|Microsoft|img|onload|row|borderLeftWidth|head|attributes'.split('|'),0,{});
+
+/*
+ Copyright (c) 2004-2007, The Dojo Foundation
+ All Rights Reserved.
+
+ Licensed under the Academic Free License version 2.1 or above OR the
+ modified BSD license. For more information on Dojo licensing, see:
+
+ http://dojotoolkit.org/community/licensing.shtml
+*/
+
+/*
+ This is a compiled version of Dojo, built for deployment and not for
+ development. To get an editable version, please visit:
+
+ http://dojotoolkit.org
+
+ for documentation and information on getting the source.
+*/
+
+var decompressedDojo = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('if(V z=="1k"){(B(){if(V D["1o"]=="1k"){D.1o={}}if((!D["1z"])||(!1z["ca"])){D.1z={}}A cn=["rA","rz","1K","ry","rx","9f","rw","rv","ru","rt","rs","rr","rq","ro","rn","rm"];A i=0,24;1s(24=cn[i++]){if(!1z[24]){1z[24]=B(){}}}if(V D["z"]=="1k"){D.z={}}z.1W=D;A d3={im:U,rl:U,rk:"",rj:"",ri:"",rh:K,rg:U};R(A 8z in d3){if(V 1o[8z]=="1k"){1o[8z]=d3[8z]}}A jK=["rf","rd","rc","rb"];A t;1s(t=jK.3a()){z["is"+t]=U}})();z.8h=1o.8h;z.cY={jJ:0,jI:9,jH:0,jG:"",jF:2V("$ra: r9 $".1f(/[0-9]+/)[0]),2i:B(){4G(z.cY){C jJ+"."+jI+"."+jH+jG+" ("+jF+")"}}};z.d1=B(jE,jD,1V){A 2h=1V||z.1W;R(A i=0,p;2h&&(p=jE[i]);i++){2h=(p in 2h?2h[p]:(jD?2h[p]={}:1k))}C 2h};z.88=B(jC,jA,jB){A d2=jC.1A("."),p=d2.8q(),M=z.d1(d2,K,jB);C(M&&p?(M[p]=jA):1k)};z.6q=B(jz,jy,jx){C z.d1(jz.1A("."),jy,jx)};z.r8=B(jw,M){C!!z.6q(jw,U,M)};z["3u"]=B(d0){C z.1W.3u?z.1W.3u(d0):3u(d0)};z.ia=B(jv,cZ,cX){A 8y="r7: "+jv;if(cZ){8y+=" "+cZ}if(cX){8y+=" -- r6 be r5 in cY: "+cX}1z.1K(8y)};z.r4=B(ju,cW){A cV="r3: "+ju+" -- r2 r1 4F r0 qZ qY.";if(cW){cV+=" "+cW}1z.1K(cV)};(B(){A cR={53:{},6p:0,1h:{},8k:{z:{1p:"z",1Z:"."},cU:{1p:"cU",1Z:"../qX/cU"},cT:{1p:"cT",1Z:"cT"}},cN:B(cS){A mp=D.8k;C jp(mp[cS]&&mp[cS].1Z)},jk:B(8x){A mp=D.8k;if(D.cN(8x)){C mp[8x].1Z}C 8x},8v:[],6t:U,56:[],8t:[],8u:U};R(A cQ in cR){z[cQ]=cR[cQ]}})();z.jg=B(8w,cP,cb){A 1g=(((8w.2s(0)=="/"||8w.1f(/^\\w+:/)))?"":D.51)+8w;if(1o.jt&&z.c8){1g+="?"+67(1o.jt).2f(/\\W+/g,"")}1u{C!cP?D.cO(1g,cb):D.jq(1g,cP,cb)}1y(e){1z.1K(e);C U}};z.cO=B(1g,cb){if(D.8v[1g]){C K}A 6u=D.iR(1g,K);if(!6u){C U}D.8v[1g]=K;D.8v.Y(1g);if(cb){6u="("+6u+")"}A jr=z["3u"](6u+"\\r\\n//@ qW="+1g);if(cb){cb(jr)}C K};z.jq=B(1g,jo,cb){A ok=U;1u{ok=D.cO(1g,cb)}1y(e){1z.1K("qV je ",1g," 4G 9f: ",e)}C jp(ok&&D.53[jo])};z.6m=B(){D.8u=K;D.6t=K;A 57=D.56;D.56=[];R(A x=0;x<57.G;x++){57[x]()}D.8u=U;if(z.6t&&z.6p==0&&D.56.G>0){z.8s()}};z.ck=B(){A 57=D.8t;1s(57.G){(57.8q())()}};z.qU=B(M,jn){A d=z;if(P.G==1){d.56.Y(M)}I{if(P.G>1){d.56.Y(B(){M[jn]()})}}if(d.6t&&d.6p==0&&!d.8u){d.8s()}};z.dW=B(M,jm){A d=z;if(P.G==1){d.8t.Y(M)}I{if(P.G>1){d.8t.Y(B(){M[jm]()})}}};z.iM=B(){if(D.6t){C}if(D.6p>0){1z.1K("qT qS in qR!");C}z.8s()};z.8s=B(){if(V 5c=="8b"||(1o["qQ"]&&z.2M)){5c("z.6m();",0)}I{z.6m()}};z.cF=B(jl){A 4v=jl.1A(".");R(A i=4v.G;i>0;i--){A 8r=4v.2w(0,i).22(".");if((i==1)&&!D.cN(8r)){4v[0]="../"+4v[0]}I{A cM=D.jk(8r);if(cM!=8r){4v.3S(0,i,cM);3f}}}C 4v};z.jj=U;z.8m=B(2T,qP,55){55=D.jj||55;A 54=D.53[2T];if(54){C 54}A cL=2T.1A(".");A 3L=D.cF(2T);A jh=((3L[0].2s(0)!="/")&&!3L[0].1f(/^\\w+:/));A ji=3L[3L.G-1];A 3m;if(ji=="*"){2T=cL.2w(0,-1).22(".");3L.8q();3m=3L.22("/")+"/"+(1o["qO"]||"qN")+".js";if(jh&&3m.2s(0)=="/"){3m=3m.2w(1)}}I{3m=3L.22("/")+".js";2T=cL.22(".")}A jf=(!55)?2T:L;A ok=D.jg(3m,jf);if((!ok)&&(!55)){2m S 1O("qM 3O 4E \'"+2T+"\'; 72 qL \'"+3m+"\'")}if((!55)&&(!D["qK"])){54=D.53[2T];if(!54){2m S 1O("qJ \'"+2T+"\' is 3O qI a8 je \'"+3m+"\'")}}C 54};z.8c=z.8m;z.1Q=B(cK){A cJ=cK+"";A 8p=cJ;A 6s=cK.1A(/\\./);if(6s[6s.G-1]=="*"){6s.8q();8p=6s.22(".")}A 8o=z.6q(8p,K);D.53[cJ]=8o;D.53[8p]=8o;C 8o};z.qH=B(8n){A jd=8n["qG"]||[];A cI=jd.3U(8n[z.j4]||8n["aY"]||[]);R(A x=0;x<cI.G;x++){A 8l=cI[x];if(8l.1P==4e){z.8m.14(z,8l)}I{z.8m(8l)}}};z.jb=B(jc,qF){if(jc===K){A cH=[];R(A i=1;i<P.G;i++){cH.Y(P[i])}z.8c.14(z,cH)}};z.qE=z.jb;z.io=B(cG,ja){D.8k[cG]={1p:cG,1Z:ja}};z.qD=B(qC,qB,qA,qz){z.8c("z.j9");z.j9.qy.14(z.qx,P)};(B(){A j7=S 9G("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?$");A j6=S 9G("^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$");z.4r=B(){A n=L;A 1V=P;A 1g=1V[0];R(A i=1;i<1V.G;i++){if(!1V[i]){6c}A 1t=S z.4r(1V[i]+"");A 4u=S z.4r(1g+"");if((1t.28=="")&&(!1t.4t)&&(!1t.3l)&&(!1t.1r)){if(1t.52!=n){4u.52=1t.52}1t=4u}I{if(!1t.4t){1t.4t=4u.4t;if(!1t.3l){1t.3l=4u.3l;if(1t.28.2s(0)!="/"){A j8=4u.28.21(0,4u.28.31("/")+1)+1t.28;A 1X=j8.1A("/");R(A j=0;j<1X.G;j++){if(1X[j]=="."){if(j==1X.G-1){1X[j]=""}I{1X.3S(j,1);j--}}I{if(j>0&&!(j==1&&1X[0]=="")&&1X[j]==".."&&1X[j-1]!=".."){if(j==(1X.G-1)){1X.3S(j,1);1X[j-1]=""}I{1X.3S(j-1,2);j-=2}}}}1t.28=1X.22("/")}}}}1g="";if(1t.4t){1g+=1t.4t+":"}if(1t.3l){1g+="//"+1t.3l}1g+=1t.28;if(1t.1r){1g+="?"+1t.1r}if(1t.52){1g+="#"+1t.52}}D.1g=1g.2i();A r=D.1g.1f(j7);D.4t=r[2]||(r[1]?"":n);D.3l=r[4]||(r[3]?"":n);D.28=r[5];D.1r=r[7]||(r[6]?"":n);D.52=r[9]||(r[8]?"":n);if(D.3l!=n){r=D.3l.1f(j6);D.8X=r[3]||n;D.8W=r[4]||n;D.qw=r[5];D.qv=r[7]||n}};z.4r.1C.2i=B(){C D.1g}})();z.qu=B(j5,2E){A 2B=z.cF(j5).22("/");if(!2B){C L}if(2B.31("/")!=2B.G-1){2B+="/"}A cE=2B.T(":");if(2B.2s(0)!="/"&&(cE==-1||cE>2B.T("/"))){2B=z.51+2B}C S z.4r(2B,2E)};if(V 26!="1k"){z.c8=K;z.j4="qt";(B(){A d=z;if(1q&&1q.4I){A 8j=1q.4I("ak");A j3=/z(\\.qs)?\\.js([\\?\\.]|$)/i;R(A i=0;i<8j.G;i++){A 4X=8j[i].5t("4X");if(!4X){6c}A m=4X.1f(j3);if(m){if(!1o["51"]){1o["51"]=4X.21(0,m.hK)}A cD=8j[i].5t("1o");if(cD){A cC=3u("({ "+cD+" })");R(A x in cC){1o[x]=cC[x]}}3f}}}d.51=1o["51"];A n=cq;A 8i=n.iL;A 4Z=n.qr;A 6r=2k(4Z);d.2M=(8i.T("qq")>=0)?6r:0;d.6B=(4Z.T("qo")>=0)||(4Z.T("j2")>=0)?6r:0;d.3o=(4Z.T("j2")>=0)?6r:0;A j1=8i.T("qn");d.gu=d.7B=((j1>=0)&&(!d.6B))?6r:0;d.j0=0;d.1l=0;d.iV=0;1u{if(d.7B){d.j0=2k(8i.1A("qm/")[1].1A(" ")[0])}if((1q.gx)&&(!d.2M)){d.1l=2k(4Z.1A("qk ")[1].1A(";")[0])}}1y(e){}if(z.1l&&(26.8f.cu==="9q:")){1o.iT=K}d.iX=B(){A 2A;A qj;A cB=d.6q("cz.cy");if(cB){C cB}if(V iZ!="1k"){2A=S iZ()}I{if(d.1l){1u{2A=S 9j("qi.qh")}1y(e){}}I{if(cq.qg["8Z/x-iY"]){2A=1q.a9("8b");2A.cA("Z","8Z/x-iY");2A.cA("3n",0);2A.cA("58",0);2A.1c.gq="7C";1q.5K.4c(2A)}}}if(!2A){C L}z.88("cz.cy.qf",2A);C z.6q("cz.cy")};A iW=d.iX();if(iW){d.iV=K}A cm=1q["aX"];d.qe=(cm=="aW")||(cm=="gr")||(d.1l<6);d.8h=1o.8h||(d.1l?n.qd:n.qc).1M();d.qb=1z.1K;d.cx=["iU.8g","em.8g","iU.8g.4.0"];d.9b=B(){A 4s=L;A cv=L;if(!z.1l||!1o.iT){1u{4s=S qa()}1y(e){}}if(!4s){R(A i=0;i<3;++i){A cw=z.cx[i];1u{4s=S 9j(cw)}1y(e){cv=e}if(4s){z.cx=[cw];3f}}}if(!4s){2m S 1O("8g 3O q9: "+cv)}C 4s};d.8Y=B(iS){A 4Y=iS.3N||0;C((4Y>=q8)&&(4Y<q7))||(4Y==q6)||(4Y==q5)||(!4Y&&(8f.cu=="9q:"||8f.cu=="q4:"))};A cs=1q.4I("q3");A iQ=(cs&&cs.G>0);d.iR=B(1g,iP){A 3K=D.9b();if(!iQ&&z.4r){1g=(S z.4r(26.8f,1g)).2i()}3K.dL("dD",1g,U);1u{3K.dI(L);if(!d.8Y(3K)){A 1G=1O("q2 4F 4E "+1g+" 3N:"+3K.3N);1G.3N=3K.3N;1G.2G=3K.2G;2m 1G}}1y(e){if(iP){C L}2m e}C 3K.2G}})();z.iO=U;z.6o=B(e){z.iO=K;A cr=(e&&e.Z)?e.Z.1M():"4E";if(P.2O.iN||(cr!="q1"&&cr!="4E")){C}P.2O.iN=K;if(V z["8e"]!="1k"){dX(z.8e);63 z.8e}if(z.6p==0){z.iM()}};if(1q.66){if(z.2M||(z.7B&&(1o["q0"]===K))){1q.66("pZ",z.6o,L)}26.66("4E",z.6o,L)}if(/(pY|pX)/i.6Z(cq.iL)){z.8e=dN(B(){if(/6m|iJ/.6Z(1q.6F)){z.6o()}},10)}(B(){A 3g=26;A 8d=B(cp,fp){A iK=3g[cp]||B(){};3g[cp]=B(){fp.14(3g,P);iK.14(3g,P)}};if(z.1l){1q.fJ("<iI"+"iH pW 4X=\\"//:\\" "+"pV=\\"if(D.6F==\'iJ\'){z.6o();}\\">"+"</iI"+"iH>");A co=K;8d("iG",B(){3g.5c(B(){co=U},0)});8d("pU",B(){if(co){z.ck()}});1u{1q.pT.2P("v","pS:pR-pQ-pP:pO");1q.pN().pM("v\\\\:*","pL:2E(#aY#pK)")}1y(e){}}I{8d("iG",B(){z.ck()})}})();z.pJ=B(){};z.1e=26["1q"]||L;z.3E=B(){C z.1e.3E||z.1e.4I("3E")[0]};z.ch=B(iF,iE){z.1W=iF;z.1e=iE};z.cf=B(4q,6n,iD){if((6n)&&((V 4q=="3c")||(4q 1N 67))){4q=6n[4q]}C(6n?4q.14(6n,iD||[]):4q())};z.pI=B(cj,iC,iB,iA){A cg;A iz=z.1W;A iy=z.1e;1u{z.ch(cj,cj.1q);cg=z.cf(iC,iB,iA)}ir{z.ch(iz,iy)}C cg};z.pH=B(ix,iw,iv,iu){A ce;A ip=z.1e;1u{z.1e=ix;ce=z.cf(iw,iv,iu)}ir{z.1e=ip}C ce};if(1o["cd"]){R(A cc in 1o["cd"]){z.io(cc,1o["cd"][cc])}}}if(1o.im){if(!1z.ca){z.8c("z.pG.ca")}}}if(!z.1h["z.X.c9"]){z.1h["z.X.c9"]=K;z.1Q("z.X.c9");z.1R=B(it){C(V it=="3c"||it 1N 67)};z.2l=B(it){C(it&&it 1N 4e||V it=="6a"||((V z["1H"]!="1k")&&(it 1N z.1H)))};if(z.c8&&z.3o){z.1Y=B(it){if((V(it)=="B")&&(it=="[8b 1H]")){C U}C(V it=="B"||it 1N bI)}}I{z.1Y=B(it){C(V it=="B"||it 1N bI)}}z.ib=B(it){if(V it=="1k"){C U}C(it===L||V it=="8b"||z.2l(it)||z.1Y(it))};z.pF=B(it){A d=z;if((!it)||(V it=="1k")){C U}if(d.1R(it)){C U}if(d.1Y(it)){C U}if(d.2l(it)){C K}if((it.5w)&&(it.5w.1M()=="3R")){C U}if(pE(it.G)){C K}C U};z.pD=B(it){if(!it){C U}C!z.1Y(it)&&/\\{\\s*\\[il 5h\\]\\s*\\}/.6Z(67(it))};z.c7=B(M,4W){A 8a={};R(A x in 4W){if((V 8a[x]=="1k")||(8a[x]!=4W[x])){M[x]=4W[x]}}if(z.1l){A p=4W.2i;if((V(p)=="B")&&(p!=M.2i)&&(p!=8a.2i)&&(p!="\\pC 2i() {\\n [il 5h]\\n}\\n")){M.2i=4W.2i}}C M};z.1x=B(M,pB){R(A i=1,l=P.G;i<l;i++){z.c7(M,P[i])}C M};z.4M=B(c6,pA){R(A i=1,l=P.G;i<l;i++){z.c7(c6.1C,P[i])}C c6};z.ig=B(c5,89){A ij=z.4d(P,2);A ik=z.1R(89);C B(){A ih=z.4d(P);A f=(ik?(c5||z.1W)[89]:89);C(f)&&(f.14(c5||D,ij.3U(ih)))}};z.2p=B(2z,3k){if(P.G>2){C z.ig.14(z,P)}if(!3k){3k=2z;2z=L}if(z.1R(3k)){2z=2z||z.1W;if(!2z[3k]){2m(["z.2p: ie[\\"",3k,"\\"] is L (ie=\\"",2z,"\\")"].22(""))}C B(){C 2z[3k].14(2z,P||[])}}I{C(!2z?3k:B(){C 3k.14(2z,P||[])})}};z.6j=B(M,c3){B c4(){};c4.1C=M;A c2=S c4();if(c3){z.1x(c2,c3)}C c2};z.7X=B(pz){A Q=[L];C z.2p.14(z,Q.3U(z.4d(P)))};z.4d=B(M,ic){A Q=[];R(A x=ic||0;x<M.G;x++){Q.Y(M[x])}C Q};z.c1=B(o){if(!o){C o}if(z.2l(o)){A r=[];R(A i=0;i<o.G;++i){r.Y(z.c1(o[i]))}C r}I{if(z.ib(o)){if(o.2t&&o.a7){C o.a7(K)}I{A r=S o.1P();R(A i in o){if(!(i in r)||r[i]!=o[i]){r[i]=z.c1(o[i])}}C r}}}C o};z.7g=B(2H){C 2H.2f(/^\\s\\s*/,"").2f(/\\s\\s*$/,"")}}if(!z.1h["z.X.2r"]){z.1h["z.X.2r"]=K;z.1Q("z.X.2r");z.2r=B(6l,4p,3j){if(z.1Y(3j)||(P.G>3)){z.ia("z.2r: R 9P \'"+6l+"\' py pw B as \'1P\' pv pu of as a pt i3.","","1.0");A c=3j;3j=P[3]||{};3j.1P=c}A dd=P.2O,4V=L;if(z.2l(4p)){4V=4p;4p=4V.3a()}if(4V){R(A i=0,m;i<4V.G;i++){m=4V[i];if(!m){2m("ps #"+i+" 4F pr of "+6l+" is L. pq\'s pp a po pl is 3O 6m.")}4p=dd.6j(4p,m)}}A i9=(3j||0).1P,6k=dd.6j(4p),fn;R(A i in 3j){if(z.1Y(fn=3j[i])&&(!0[i])){fn.i4=i}}z.4M(6k,{4o:6l,bY:i9,bZ:L},3j||0);6k.1C.1P=6k;C z.88(6l,6k)};z.1x(z.2r,{6j:B(c0,i8){A bp=(c0||0).1C,mp=(i8||0).1C;A 2S=z.2r.i7();z.1x(2S,{84:bp,1x:mp});if(c0){2S.1C=z.6j(bp)}z.4M(2S,z.2r.i6,mp||0,{bY:L});2S.1C.1P=2S;2S.1C.4o=(bp||0).4o+"pk"+(mp||0).4o;z.88(2S.1C.4o,2S);C 2S},i7:B(){C B(){D.i5(P)}},i6:{i5:B(86){A c=86.2O,s=c.84,ct=s&&s.1P,m=c.1x,87=m&&m.1P,a=86,ii,fn;if(a[0]){if((fn=a[0]["bZ"])){a=fn.14(D,a)||a}}if(fn=c.1C.bZ){a=fn.14(D,a)||a}if(ct&&ct.14){ct.14(D,a)}if(87&&87.14){87.14(D,a)}if(ii=c.1C.bY){ii.14(D,86)}},bX:B(85){A c=D.1P,p,m;1s(c){p=c.84;m=c.1x;if(m==85||(m 1N 85.1P)){C p}if(m&&(m=m.bX(85))){C m}c=p&&p.1P}},6h:B(83,82,bW,6i){A p=bW,c,m,f;do{c=p.1P;m=c.1x;if(m&&(m=D.6h(83,82,m,6i))){C m}if((f=p[83])&&(6i==(f==82))){C p}p=c.84}1s(p);C!6i&&(p=D.bX(bW))&&D.6h(83,82,p,6i)},bU:B(2R,4U,bV){A a=P;if(!z.1R(a[0])){bV=4U;4U=2R;2R=4U.2O.i4}A c=4U.2O,p=D.1P.1C,a=bV||4U,fn,mp;if(D[2R]!=c||p[2R]==c){mp=D.6h(2R,c,p,K);if(!mp){2m(D.4o+": 1p i3 (\\""+2R+"\\") 4F bU pj 1f 2O (2r.js)")}p=D.6h(2R,c,mp,U)}fn=p&&p[2R];if(!fn){1z.1K(mp.4o+": no bU \\""+2R+"\\" ph pg (2r.js)");C}C fn.14(D,a)}}})}if(!z.1h["z.X.2c"]){z.1h["z.X.2c"]=K;z.1Q("z.X.2c");z.3i={i2:B(){C B(){A ap=4e.1C,c=P.2O,ls=c.2b,t=c.5V;A r=t&&t.14(D,P);R(A i in ls){if(!(i in ap)){ls[i].14(D,P)}}C r}},2P:B(6g,bT,i1){6g=6g||z.1W;A f=6g[bT];if(!f||!f.2b){A d=z.3i.i2();d.5V=f;d.2b=[];f=6g[bT]=d}C f.2b.Y(i1)},3J:B(i0,hZ,bS){A f=(i0||z.1W)[hZ];if(f&&f.2b&&bS--){63 f.2b[bS]}}};z.2c=B(M,pd,pc,pa,p9){A a=P,F=[],i=0;F.Y(z.1R(a[0])?L:a[i++],a[i++]);A a1=a[i+1];F.Y(z.1R(a1)||z.1Y(a1)?a[i++]:L,a[i++]);R(A l=a.G;i<l;i++){F.Y(a[i])}C z.by.14(D,F)};z.by=B(M,bR,hY,hX){A l=z.3i,h=l.2P(M,bR,z.2p(hY,hX));C[M,bR,h,l]};z.p8=B(6f){if(6f&&6f[0]!==1k){z.bv.14(D,6f);63 6f[0]}};z.bv=B(M,hV,hU,hW){hW.3J(M,hV,hU)};z.80={};z.p7=B(bQ,hT,hS){C[bQ,z.3i.2P(z.80,bQ,z.2p(hT,hS))]};z.p6=B(81){if(81){z.3i.3J(z.80,81[0],81[1])}};z.hQ=B(hR,F){A f=z.80[hR];(f)&&(f.14(D,F||[]))};z.p5=B(hP,M,bP){A pf=B(){z.hQ(hP,P)};C(bP)?z.2c(M,bP,pf):z.2c(M,pf)}}if(!z.1h["z.X.30"]){z.1h["z.X.30"]=K;z.1Q("z.X.30");z.30=B(hO){D.bM=[];D.id=D.hN();D.2y=-1;D.3M=0;D.4R=[L,L];D.bO=hO;D.7Z=U};z.4M(z.30,{hN:(B(){A n=1;C B(){C n++}})(),4C:B(){if(D.2y==-1){if(D.bO){D.bO(D)}I{D.7Z=K}if(D.2y==-1){A 1G=S 1O("30 p4");1G.dY="4C";D.5i(1G)}}I{if((D.2y==0)&&(D.4R[0]1N z.30)){D.4R[0].4C()}}},7V:B(1v){D.2y=((1v 1N 1O)?1:0);D.4R[D.2y]=1v;D.7U()},bN:B(){if(D.2y!=-1){if(!D.7Z){2m S 1O("p3 p2!")}D.7Z=U;C}},dM:B(1v){D.bN();D.7V(1v)},5i:B(1v){D.bN();if(!(1v 1N 1O)){1v=S 1O(1v)}D.7V(1v)},9e:B(cb,4T){A 6e=z.2p(cb,4T);if(P.G>2){6e=z.7X(6e,P,2)}C D.5k(6e,6e)},ef:B(cb,4T){A 7Y=z.2p(cb,4T);if(P.G>2){7Y=z.7X(7Y,P,2)}C D.5k(7Y,L)},ed:B(cb,4T){A 7W=z.2p(cb,4T);if(P.G>2){7W=z.7X(7W,P,2)}C D.5k(L,7W)},5k:B(cb,eb){D.bM.Y([cb,eb]);if(D.2y>=0){D.7U()}C D},7U:B(){A bL=D.bM;A 4n=D.2y;A 1v=D.4R[4n];A 4S=D;A cb=L;1s((bL.G>0)&&(D.3M==0)){A f=bL.3a()[4n];if(!f){6c}1u{1v=f(1v);4n=((1v 1N 1O)?1:0);if(1v 1N z.30){cb=B(1v){4S.7V(1v);4S.3M--;if((4S.3M==0)&&(4S.2y>=0)){4S.7U()}};D.3M++}}1y(1G){1z.1K(1G);4n=1;1v=1G}}D.2y=4n;D.4R[4n]=1v;if((cb)&&(D.3M)){1v.9e(cb)}}})}if(!z.1h["z.X.2e"]){z.1h["z.X.2e"]=K;z.1Q("z.X.2e");z.5m=B(2e){1u{C 3u("("+2e+")")}1y(e){1z.1K(e);C 2e}};z.bK=B(2H){C("\\""+2H.2f(/(["\\\\])/g,"\\\\$1")+"\\"").2f(/[\\f]/g,"\\\\f").2f(/[\\b]/g,"\\\\b").2f(/[\\n]/g,"\\\\n").2f(/[\\t]/g,"\\\\t").2f(/[\\r]/g,"\\\\r")};z.hM="\\t";z.eq=B(it,4l,4P){4P=4P||"";A 4k=(4l?4P+z.hM:"");A 6b=(4l?"\\n":"");A 4Q=V(it);if(4Q=="1k"){C"1k"}I{if((4Q=="4J")||(4Q=="p1")){C it+""}I{if(it===L){C"L"}}}if(4Q=="3c"){C z.bK(it)}A 6d=P.2O;A 4m;if(V it.hL=="B"){4m=it.hL();if(it!==4m){C 6d(4m,4l,4k)}}if(V it.2e=="B"){4m=it.2e();if(it!==4m){C 6d(4m,4l,4k)}}if(z.2l(it)){A 1v=[];R(A i=0;i<it.G;i++){A 1U=6d(it[i],4l,4k);if(V(1U)!="3c"){1U="1k"}1v.Y(6b+4k+1U)}C"["+1v.22(", ")+6b+4P+"]"}if(4Q=="B"){C L}A bJ=[];R(A 1i in it){A 7T;if(V(1i)=="4J"){7T="\\""+1i+"\\""}I{if(V(1i)=="3c"){7T=z.bK(1i)}I{6c}}1U=6d(it[1i],4l,4k);if(V(1U)!="3c"){6c}bJ.Y(6b+4k+7T+": "+1U)}C"{"+bJ.22(", ")+6b+4P+"}"}}if(!z.1h["z.X.6a"]){z.1h["z.X.6a"]=K;z.1Q("z.X.6a");(B(){A 69=B(Q,M,cb){C[(z.1R(Q)?Q.1A(""):Q),(M||z.1W),(z.1R(cb)?(S bI("1m","hK","6a",cb)):cb)]};z.1x(z,{T:B(bH,hH,hI,hJ){A i=0,2q=1,1d=bH.G;if(hJ){i=1d-1;2q=1d=-1}R(i=hI||i;i!=1d;i+=2q){if(bH[i]==hH){C i}}C-1},31:B(hG,hF,hE){C z.T(hG,hF,hE,K)},1n:B(Q,hD,M){if(!Q||!Q.G){C}A 1I=69(Q,M,hD);Q=1I[0];R(A i=0,l=1I[0].G;i<l;i++){1I[2].2d(1I[1],Q[i],i,Q)}},bE:B(bF,Q,hC,M){A 1I=69(Q,M,hC);Q=1I[0];R(A i=0,l=Q.G;i<l;i++){A bG=!!1I[2].2d(1I[1],Q[i],i,Q);if(bF^bG){C bG}}C bF},ah:B(Q,hB,hA){C D.bE(K,Q,hB,hA)},ag:B(Q,hz,hy){C D.bE(U,Q,hz,hy)},23:B(Q,7t,M){A 1I=69(Q,M,7t);Q=1I[0];A bD=((P[3])?(S P[3]()):[]);R(A i=0;i<Q.G;++i){bD.Y(1I[2].2d(1I[1],Q[i],i,Q))}C bD},3T:B(Q,hx,M){A 1I=69(Q,M,hx);Q=1I[0];A bC=[];R(A i=0;i<Q.G;i++){if(1I[2].2d(1I[1],Q[i],i,Q)){bC.Y(Q[i])}}C bC}})})()}if(!z.1h["z.X.1J"]){z.1h["z.X.1J"]=K;z.1Q("z.X.1J");z.1J=B(bB){if(bB){D.hw(bB)}};z.1J.hp={p0:[0,0,0],oZ:[60,60,60],oY:[2j,2j,2j],oX:[1T,1T,1T],oW:[2j,0,0],oV:[1T,0,0],oU:[2j,0,2j],oT:[1T,0,1T],oS:[0,2j,0],oR:[0,1T,0],oQ:[2j,2j,0],oP:[1T,1T,0],oO:[0,0,2j],oN:[0,0,1T],oM:[0,2j,2j],oL:[0,1T,1T]};z.4M(z.1J,{r:1T,g:1T,b:1T,a:1,bz:B(r,g,b,a){A t=D;t.r=r;t.g=g;t.b=b;t.a=a},hw:B(2Q){A d=z;if(d.1R(2Q)){d.hq(2Q,D)}I{if(d.2l(2Q)){d.7P(2Q,D)}I{D.bz(2Q.r,2Q.g,2Q.b,2Q.a);if(!(2Q 1N d.1J)){D.7Q()}}}C D},7Q:B(){C D},oK:B(){A t=D;C[t.r,t.g,t.b]},oJ:B(){A t=D;C[t.r,t.g,t.b,t.a]},oI:B(){A Q=z.23(["r","g","b"],B(x){A s=D[x].2i(16);C s.G<2?"0"+s:s},D);C"#"+Q.22("")},8F:B(hv){A t=D,7S=t.r+", "+t.g+", "+t.b;C(hv?"hs("+7S+", "+t.a:"7S("+7S)+")"},2i:B(){C D.8F(K)}});z.d8=B(bA,1d,hu,M){A d=z,t=M||S z.1J();d.1n(["r","g","b","a"],B(x){t[x]=bA[x]+(1d[x]-bA[x])*hu;if(x!="a"){t[x]=2Y.oH(t[x])}});C t.7Q()};z.ho=B(ht,M){A m=ht.1M().1f(/^hs?\\(([\\s\\.,0-9]+)\\)/);C m&&z.7P(m[1].1A(/\\s*,\\s*/),M)};z.hn=B(4j,M){A d=z,t=M||S d.1J(),7R=(4j.G==4)?4:8,hr=(1<<7R)-1;4j=2V("oG"+4j.3b(1));if(2L(4j)){C L}d.1n(["b","g","r"],B(x){A c=4j&hr;4j>>=7R;t[x]=7R==4?17*c:c});t.a=1;C t};z.7P=B(a,M){A t=M||S z.1J();t.bz(2V(a[0]),2V(a[1]),2V(a[2]),2V(a[3]));if(2L(t.a)){t.a=1}C t.7Q()};z.hq=B(2H,M){A a=z.1J.hp[2H];C a&&z.7P(a,M)||z.ho(2H,M)||z.hn(2H,M)}}if(!z.1h["z.X"]){z.1h["z.X"]=K;z.1Q("z.X")}if(!z.1h["z.X.5Z"]){z.1h["z.X.5Z"]=K;z.1Q("z.X.5Z");(B(){A 1j=z.b2={2P:B(E,68,fp){if(!E){C}68=1j.4O(68);fp=1j.7G(68,fp);E.66(68,fp,U);C fp},3J:B(E,hm,hl){(E)&&(E.oF(1j.4O(hm),hl,U))},4O:B(1p){C(1p.2w(0,2)=="on"?1p.2w(2):1p)},7G:B(1p,fp){C(1p!="4b"?fp:B(e){C fp.2d(D,1j.4i(e,D))})},4i:B(H,oE){4w(H.Z){2X"4b":1j.7K(H);3f}C H},7K:B(H){H.oD=(H.3h?67.oC(H.3h):"")}};z.oB=B(H,hk){C 1j.4i(H,hk)};z.gY=B(H){H.7J();H.7I()};A 7O=z.3i;z.by=B(M,bx,hh,hg,hi){A hj=M&&(M.2t||M.oA||M.66);A bw=!hj?0:(!hi?1:2),l=[z.3i,1j,7O][bw];A h=l.2P(M,bx,z.2p(hh,hg));C[M,bx,h,bw]};z.bv=B(M,he,hd,hf){([z.3i,1j,7O][hf]).3J(M,he,hd)};z.5W={oz:8,gV:9,oy:12,ox:13,ow:16,ov:17,ou:18,gG:19,ot:20,os:27,or:32,b5:33,b4:34,gE:35,gF:36,b7:37,b9:38,b6:39,b8:40,gD:45,8S:46,oq:47,oo:91,om:92,ol:93,oj:96,oi:97,oh:98,og:99,oe:6D,od:oc,ob:oa,o9:o8,o7:o6,o5:o4,o3:bi,o2:o1,o0:nZ,nY:nX,nW:nV,nU:bk,gS:nT,gR:nS,gQ:nR,gP:nQ,gO:nP,gN:nO,gM:nN,gL:nM,gK:nL,gJ:nK,gI:nJ,gH:nI,nH:nG,nF:nE,nD:nC,gB:nB,gC:nA};if(z.1l){bf=B(e,5h){1u{C(e.3I=5h)}1y(e){C 0}};A 61=z.3i;if(!1o.nz){7O=61=z.gy={b3:[],2P:B(64,bu,hc){64=64||z.1W;A f=64[bu];if(!f||!f.2b){A d=z.gz();d.5V=f&&(7M.Y(f)-1);d.2b=[];f=64[bu]=d}C f.2b.Y(7M.Y(hc)-1)},3J:B(hb,ha,7N){A f=(hb||z.1W)[ha],l=f&&f.2b;if(f&&l&&7N--){63 7M[l[7N]];63 l[7N]}}};A 7M=61.b3}z.1x(1j,{2P:B(E,62,fp){if(!E){C}62=1j.4O(62);if(62=="h3"){A kd=E.bs;if(!kd||!kd.2b||!kd.h9){1j.2P(E,"bs",1j.h4);E.bs.h9=K}}C 61.2P(E,62,1j.7G(fp))},3J:B(E,h8,h7){61.3J(E,1j.4O(h8),h7)},4O:B(7L){C(7L.2w(0,2)!="on"?"on"+7L:7L)},ny:B(){},4i:B(H,4N){if(!H){A w=(4N)&&((4N.aD||4N.1q||4N).nx)||26;H=w.5Z}if(!H){C(H)}H.5V=H.br;H.bh=(4N||H.br);H.nw=H.nv;H.nu=H.nr;A bq=H.br,1e=(bq&&bq.aD)||1q;A bn=((z.1l<6)||(1e["aX"]=="aW"))?1e.3E:1e.5K;A bm=z.aB();H.nq=H.np+z.aH(bn.5I||0)-bm.x;H.nn=H.nm+(bn.5G||0)-bm.y;if(H.Z=="fk"){H.h6=H.nl}if(H.Z=="fj"){H.h6=H.nk}H.7I=1j.bc;H.7J=1j.ba;C 1j.h5(H)},h5:B(H){4w(H.Z){2X"4b":A c=("3h"in H?H.3h:H.3I);if(c==10){c=0;H.3I=13}I{if(c==13||c==27){c=0}I{if(c==3){c=99}}}H.3h=c;1j.7K(H);3f}C H},gZ:{bi:42,bk:47,h2:59,nj:43,ni:44,nh:45,ng:46,nf:47,60:96,h1:91,nb:92,na:93,h0:39},h4:B(H){A kp=H.bh.h3;if(!kp||!kp.2b){C}A k=H.3I;A bj=(k!=13)&&(k!=32)&&(k!=27)&&(k<48||k>90)&&(k<96||k>bk)&&(k<h2||k>60)&&(k<h1||k>h0);if(bj||H.5Y){A c=(bj?0:k);if(H.5Y){if(k==3||k==13){C}I{if(c>95&&c<bi){c-=48}I{if((!H.5X)&&(c>=65&&c<=90)){c+=32}I{c=1j.gZ[c]||c}}}}A 2x=1j.7H(H,{Z:"4b",2x:K,3h:c});kp.2d(H.bh,2x);H.bg=2x.bg;H.bd=2x.bd;bf(H,2x.3I)}},bc:B(){D.bg=K},ba:B(){D.n9=D.3I;if(D.5Y){bf(D,0)}D.bd=U}});z.gY=B(H){H=H||26.5Z;1j.bc.2d(H);1j.ba.2d(H)}}1j.7H=B(H,gX){A 2x=z.1x({},H,gX);1j.7K(2x);2x.7J=B(){H.7J()};2x.7I=B(){H.7I()};C 2x};if(z.2M){z.1x(1j,{4i:B(H,n8){4w(H.Z){2X"4b":A c=H.n7;if(c==3){c=99}c=((c<41)&&(!H.5X)?0:c);if((H.5Y)&&(!H.5X)&&(c>=65)&&(c<=90)){c+=32}C 1j.7H(H,{3h:c})}C H}})}if(z.3o){z.1x(1j,{4i:B(H,n6){4w(H.Z){2X"4b":A c=H.3h,s=H.5X,k=H.3I;k=k||gA[H.gW]||0;if(H.gW=="n5"){c=0}I{if((H.5Y)&&(c>0)&&(c<27)){c+=96}I{if(c==z.5W.gU){c=z.5W.gV;s=K}I{c=(c>=32&&c<gT?c:0)}}}C 1j.7H(H,{3h:c,5X:s,3I:k})}C H}});z.1x(z.5W,{gU:25,b9:gT,b8:n4,b7:n3,b6:n2,gS:n1,gR:n0,gQ:mZ,gP:mY,gO:mX,gN:mW,gM:mV,gL:mU,gK:mT,gJ:mS,gI:mR,gH:mQ,gG:mP,8S:mO,gF:mN,gE:mM,b5:mL,b4:mK,gD:mJ,mI:mH,gC:mG,gB:mF});A dk=z.5W,gA={"mE":dk.b9,"mD":dk.b8,"mC":dk.b7,"mB":dk.b6,"mA":dk.b5,"mz":dk.b4}}})();if(z.1l){z.gz=B(){C B(){A ap=4e.1C,h=z.gy.b3,c=P.2O,ls=c.2b,t=h[c.5V];A r=t&&t.14(D,P);R(A i in ls){if(!(i in ap)){h[ls[i]].14(D,P)}}C r}};z.b2.7G=B(fp){A f=z.b2.4i;C B(e){C fp.2d(D,f(e,D))}}}}if(!z.1h["z.X.b1"]){z.1h["z.X.b1"]=K;z.1Q("z.X.b1");1u{1q.my("mx",U,K)}1y(e){}if(z.1l||z.2M){z.1D=B(id,1e){if(z.1R(id)){A b0=(1e||z.1e);A 11=b0.gv(id);if((11)&&(11.gw.id.1Z==id)){C 11}I{A 5U=b0.gx[id];if(!5U){C}if(!5U.G){C 5U}A i=0;1s(11=5U[i++]){if(11.gw.id.1Z==id){C 11}}}}I{C id}}}I{z.1D=B(id,1e){if(z.1R(id)){C(1e||z.1e).gv(id)}I{C id}}}(B(){A 5T=L;z.mw=B(E){E=z.1D(E);1u{if(!5T){5T=1q.a9("mv")}5T.4c(E.1L?E.1L.fs(E):E);5T.9L=""}1y(e){}};z.mu=B(E,7F){1u{E=z.1D(E);7F=z.1D(7F);1s(E){if(E===7F){C K}E=E.1L}}1y(e){}C U};z.mt=B(E,5S){E=z.1D(E);if(z.gu){E.1c.ms=(5S)?"dg":"7C"}I{if(z.6B){E.1c.mr=(5S)?"8K":"7C"}I{if(z.1l){E.gs=(5S)?"":"on";z.1r("*",E).1n(B(gt){gt.gs=(5S)?"":"on"})}}}};A 5R=B(E,4h){4h.1L.mq(E,4h);C K};A aZ=B(E,4h){A pn=4h.1L;if(4h==pn.fm){pn.4c(E)}I{C 5R(E,4h.71)}C K};z.5E=B(E,2a,3H){if((!E)||(!2a)||(V 3H=="1k")){C U}E=z.1D(E);2a=z.1D(2a);if(V 3H=="4J"){A cn=2a.3W;if(((3H==0)&&(cn.G==0))||(cn.G==3H)){2a.4c(E);C K}if(3H==0){C 5R(E,2a.5A)}C aZ(E,cn[3H-1])}4w(3H.1M()){2X"mo":C 5R(E,2a);2X"a8":C aZ(E,2a);2X"9M":if(2a.5A){C 5R(E,2a.5A)}I{2a.4c(E);C K}3f;aY:2a.4c(E);C K}};z.aP="5g-3G";if(z.1l){A aV=1q.aX;z.aP=(aV=="aW")||(aV=="gr")||(z.1l<6)?"g5-3G":"5g-3G"}A 1E,dv=1q.mn;if(z.3o){1E=B(E){A s=dv.3F(E,L);if(!s&&E.1c){E.1c.gq="";s=dv.3F(E,L)}C s||{}}}I{if(z.1l){1E=B(E){C E.gn}}I{1E=B(E){C dv.3F(E,L)}}}z.3F=1E;if(!z.1l){z.4g=B(mm,gp){C 2k(gp)||0}}I{z.4g=B(go,2N){if(!2N){C 0}if(2N=="ml"){C 4}if(2N.2w&&(2N.2w(-2)=="px")){C 2k(2N)}4G(go){A gm=1c.2g;A gl=aU.2g;aU.2g=gn.2g;1u{1c.2g=2N;2N=1c.mk}1y(e){2N=0}1c.2g=gm;aU.2g=gl}C 2N}}z.ge=(z.1l?B(E){1u{C(E.mj.mi.2W/6D)}1y(e){C 1}}:B(E){C z.3F(E).2W});z.gf=(z.1l?B(E,7D){if(7D==1){E.1c.7E=E.1c.7E.2f(/gk:[^;]*;/i,"");if(E.gj.1M()=="gi"){z.1r("> gh",E).1n(B(i){i.1c.7E=i.1c.7E.2f(/gk:[^;]*;/i,"")})}}I{A o="mh(mg="+(7D*6D)+")";E.1c.3T=o}if(E.gj.1M()=="gi"){z.1r("> gh",E).1n(B(i){i.1c.3T=o})}C 7D}:B(E,gg){C E.1c.2W=gg});A 5Q={3n:K,58:K,2g:K,5J:K};A gd=B(E,Z,5P){Z=Z.1M();if(5Q[Z]===K){C z.4g(E,5P)}I{if(5Q[Z]===U){C 5P}I{if((Z.T("mf")>=0)||(Z.T("md")>=0)||(Z.T("3n")>=0)||(Z.T("58")>=0)||(Z.T("5q")>=0)||(Z.T("mc")>=0)||(Z.T("ma")>=0)){5Q[Z]=K;C z.4g(E,5P)}I{5Q[Z]=U;C 5P}}}};z.1c=B(E,5O,aT){A n=z.1D(E),F=P.G,op=(5O=="2W");if(F==3){C op?z.gf(n,aT):n.1c[5O]=aT}if(F==2&&op){C z.ge(n)}A s=z.3F(n);C(F==1)?s:gd(n,5O,s[5O])};z.7A=B(n,gc){A s=gc||1E(n),px=z.4g,l=px(n,s.m9),t=px(n,s.m8);C{l:l,t:t,w:l+px(n,s.m7),h:t+px(n,s.m6)}};z.5N=B(n,gb){A ne="7C",px=z.4g,s=gb||1E(n),bl=(s.m5!=ne?px(n,s.m4):0),bt=(s.m3!=ne?px(n,s.m2):0);C{l:bl,t:bt,w:bl+(s.m1!=ne?px(n,s.m0):0),h:bt+(s.lZ!=ne?px(n,s.lY):0)}};z.aN=B(n,ga){A s=ga||1E(n),p=z.7A(n,s),b=z.5N(n,s);C{l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h}};z.aM=B(n,g9){A s=g9||1E(n),px=z.4g,l=px(n,s.lX),t=px(n,s.lW),r=px(n,s.lV),b=px(n,s.lU);if(z.3o&&(s.ax!="fU")){r=l}C{l:l,t:t,w:l+r,h:t+b}};z.au=B(E,g8){A s=g8||1E(E),me=z.aM(E,s);A l=E.fT-me.l,t=E.fS-me.t;if(z.7B){A aS=2k(s.2g),aR=2k(s.5J);if(!2L(aS)&&!2L(aR)){l=aS,t=aR}I{A p=E.1L;if(p&&p.1c){A aQ=1E(p);if(aQ.lT!="lS"){A be=z.5N(p,aQ);l+=be.l,t+=be.t}}}}I{if(z.2M){A p=E.1L;if(p){A be=z.5N(p);l-=be.l,t-=be.t}}}C{l:l,t:t,w:E.6v+me.w,h:E.8D+me.h}};z.aK=B(E,g7){A s=g7||1E(E),pe=z.7A(E,s),be=z.5N(E,s),w=E.aF,h;if(!w){w=E.6v,h=E.8D}I{h=E.lR,be.w=be.h=0}if(z.2M){pe.l+=be.l;pe.t+=be.t}C{l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h}};z.lQ=B(E,g6){A s=g6||1E(E),pe=z.7A(E,s),cb=z.aK(E,s);C{l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h}};z.aL=B(E,l,t,w,h,u){u=u||"px";4G(E.1c){if(!2L(l)){2g=l+u}if(!2L(t)){5J=t+u}if(w>=0){3n=w+u}if(h>=0){58=h+u}}};z.aO=B(E){A n=E.5w;C(z.aP=="g5-3G")||(n=="lP")||(n=="lO")};z.fX=B(E,7z,7y,g4){A bb=z.aO(E);if(bb){A pb=z.aN(E,g4);if(7z>=0){7z+=pb.w}if(7y>=0){7y+=pb.h}}z.aL(E,g3,g3,7z,7y)};z.fY=B(E,g1,g0,5M,5L,g2){A s=g2||z.3F(E);A bb=z.aO(E),pb=bb?fZ:z.aN(E,s),mb=z.aM(E,s);if(5M>=0){5M=2Y.5q(5M-pb.w-mb.w,0)}if(5L>=0){5L=2Y.5q(5L-pb.h-mb.h,0)}z.aL(E,g1,g0,5M,5L)};A fZ={l:0,t:0,w:0,h:0};z.lN=B(E,3G){A n=z.1D(E),s=1E(n),b=3G;C!b?z.au(n,s):z.fY(n,b.l,b.t,b.w,b.h,s)};z.lM=B(E,3G){A n=z.1D(E),s=1E(n),b=3G;C!b?z.aK(n,s):z.fX(n,b.w,b.h,s)};A 5H=B(E,1a){if(!(E=(E||0).1L)){C 0}A 1U,aJ=0,2h=z.3E();1s(E&&E.1c){if(1E(E).ax=="lL"){C 0}1U=E[1a];if(1U){aJ+=1U-0;if(E==2h){3f}}E=E.1L}C aJ};z.fQ=B(){A 2h=z.3E();A 3g=z.1W;A de=z.1e.5K;C{y:(3g.lK||de.5G||2h.5G||0),x:(3g.lJ||z.aH(de.5I)||2h.5I||0)}};z.aG=B(){C V z.aI=="1k"?(z.aI=z.3F(z.3E()).lI=="lH"):z.aI};z.aB=B(){A de=z.1e.5K;if(z.1l>=7){C{x:de.aC().2g,y:de.aC().5J}}I{C{x:z.aG()||26.am==26?de.fW:de.6v-de.aF-de.fW,y:de.lG}}};z.aH=B(aE){if(z.1l&&!z.aG()){A de=z.1e.5K;C aE+de.aF-de.lF}C aE};z.fP=B(E,aw){A ay=E.aD;A J={x:0,y:0};A 7w=U;A db=z.3E();if(z.1l){A aA=E.aC();A az=z.aB();J.x=aA.2g-az.x;J.y=aA.5J-az.y}I{if(ay["fV"]){A bo=ay.fV(E);J.x=bo.x-5H(E,"5I");J.y=bo.y-5H(E,"5G")}I{if(E["fR"]){7w=K;A 7x;if(z.3o&&(1E(E).ax=="fU")&&(E.1L==db)){7x=db}I{7x=db.1L}if(E.1L!=db){A nd=E;if(z.2M){nd=db}J.x-=5H(nd,"5I");J.y-=5H(nd,"5G")}A 4f=E;do{A n=4f["fT"];if(!z.2M||n>0){J.x+=2L(n)?0:n}A m=4f["fS"];J.y+=2L(m)?0:m;4f=4f.fR}1s((4f!=7x)&&4f)}I{if(E["x"]&&E["y"]){J.x+=2L(E.x)?0:E.x;J.y+=2L(E.y)?0:E.y}}}}if(7w||aw){A av=z.fQ();A m=7w?(!aw?-1:0):1;J.y+=m*av.y;J.x+=m*av.x}C J};z.af=B(E,fO){A n=z.1D(E),s=1E(n),mb=z.au(n,s);A at=z.fP(n,fO);mb.x=at.x;mb.y=at.y;C mb}})();z.fL=B(E,fN){C((" "+E.3A+" ").T(" "+fN+" ")>=0)};z.7s=B(E,ar){A 7v=E.3A;if((" "+7v+" ").T(" "+ar+" ")<0){E.3A=7v+(7v?" ":"")+ar}};z.7r=B(E,fM){A t=z.7g((" "+E.3A+" ").2f(" "+fM+" "," "));if(E.3A!=t){E.3A=t}};z.lE=B(E,aq,7u){if(V 7u=="1k"){7u=!z.fL(E,aq)}z[7u?"7s":"7r"](E,aq)}}if(!z.1h["z.X.1H"]){z.1h["z.X.1H"]=K;z.1Q("z.X.1H");(B(){A d=z;z.1H=B(){A F=P;if((F.G==1)&&(V F[0]=="4J")){D.G=eK(F[0])}I{if(F.G){d.1n(F,B(i){D.Y(i)},D)}}};z.1H.1C=S 4e;if(d.1l){A fK=B(al){C("A a2 = am."+al+"; "+"A ap = 4e.1C; "+"A ao = a2.1C; "+"R(A x in ao){ ap[x] = ao[x]; } "+"am."+al+" = 4e; ")};A fI=fK("z.1H");A aj=26.lD();aj.1q.fJ("<ak>"+fI+"</ak>");aj.lC(1,1,1,1)}z.4M(z.1H,{T:B(fH,fG){C d.T(D,fH,fG)},31:B(lB,lA){A aa=d.4d(P);aa.ae(D);C d.31.14(d,aa)},ah:B(fF,fE){C d.ah(D,fF,fE)},ag:B(fD,fC){C d.ag(D,fD,fC)},1n:B(fB,fA){d.1n(D,fB,fA);C D},23:B(7t,M){C d.23(D,7t,M,d.1H)},af:B(){C d.23(D,d.af)},1c:B(lz,ly){A aa=d.4d(P);aa.ae(D[0]);A s=d.1c.14(d,aa);C(P.G>1)?D:s},lx:B(lw,lv){A aa=d.4d(P);aa.ae(L);A s=D.23(B(i){aa[0]=i;C d.1c.14(d,aa)});C(P.G>1)?D:s},7s:B(fz){C D.1n(B(i){z.7s(i,fz)})},7r:B(fy){C D.1n(B(i){z.7r(i,fy)})},5E:B(fw,7q){A 1m=d.1r(fw)[0];7q=7q||"72";R(A x=0;x<D.G;x++){d.5E(D[x],1m,7q)}C D},2c:B(fv,fu,ft){D.1n(B(1m){d.2c(1m,fv,fu,ft)});C D},lu:B(ad){A ac=(ad)?d.9t(D,ad):D;ac.1n(B(1m){if(1m["1L"]){1m.1L.fs(1m)}});C ac},lt:B(fr,fq){A 1m=D[0];C d.1r(fr).1n(B(ai){d.5E(ai,1m,(fq||"72"))})},1r:B(7p){7p=7p||"";A J=S d.1H();D.1n(B(1m){d.1r(7p,1m).1n(B(ab){if(V ab!="1k"){J.Y(ab)}})});C J},3T:B(fo){A 5F=D;A 1V=P;A r=S d.1H();A rp=B(t){if(V t!="1k"){r.Y(t)}};if(d.1R(fo)){5F=d.9t(D,1V[0]);if(1V.G==1){C 5F}d.1n(d.3T(5F,1V[1],1V[2]),rp);C r}d.1n(d.3T(5F,1V[0],1V[1]),rp);C r},lr:B(7o,7n){A 1S=d.1e.a9("lq");if(d.1R(7o)){1S.9L=7o}I{1S.4c(7o)}A ct=((7n=="9M")||(7n=="a8"))?"fm":"5A";D.1n(B(1m){A 24=1S.a7(K);1s(24[ct]){d.5E(24[ct],1m,7n)}});C D},7m:B(fl,F){A a5=[];F=F||{};D.1n(B(1m){A a6={E:1m};d.1x(a6,F);a5.Y(d[fl](a6))});C d.fx.lp(a5)},8I:B(F){C D.7m("8I",F)},8H:B(F){C D.7m("8H",F)},6y:B(F){C D.7m("6y",F)}});z.1n(["fk","lo","fj","fi","ln","lm","ll","fi","lk","lj","4b"],B(H){A a4="on"+H;z.1H.1C[a4]=B(a,b){C D.2c(a4,a,b)}})})()}if(!z.1h["z.X.1r"]){z.1h["z.X.1r"]=K;z.1Q("z.X.1r");(B(){A d=z;A 2I=B(q){C[q.T("#"),q.T("."),q.T("["),q.T(":")]};A a0=B(a3,fh){A ql=a3.G;A i=2I(a3);A 1d=ql;R(A x=fh;x<i.G;x++){if(i[x]>=0){if(i[x]<1d){1d=i[x]}}}C(1d<0)?ql:1d};A 6X=B(7l){A i=2I(7l);if(i[0]!=-1){C 7l.21(i[0]+1,a0(7l,1))}I{C""}};A 5r=B(7k){A 5D;A i=2I(7k);if((i[0]==0)||(i[1]==0)){5D=0}I{5D=a0(7k,0)}C((5D>0)?7k.3b(0,5D).1M():"*")};A fg=B(Q){A J=-1;R(A x=0;x<Q.G;x++){A 1S=Q[x];if(1S>=0){if((1S>J)||(J==-1)){J=1S}}}C J};A 9H=B(7i){A i=2I(7i);if(-1==i[1]){C""}A di=i[1]+1;A 7j=fg(i.2w(2));if(di<7j){C 7i.21(di,7j)}I{if(-1==7j){C 7i.3b(di)}I{C""}}};A f3=[{1i:"|=",1f:B(15,fe){C"[5z(3U(\' \',@"+15+",\' \'), \' "+fe+"-\')]"}},{1i:"~=",1f:B(15,fd){C"[5z(3U(\' \',@"+15+",\' \'), \' "+fd+" \')]"}},{1i:"^=",1f:B(15,fb){C"[li-4G(@"+15+", \'"+fb+"\')]"}},{1i:"*=",1f:B(15,fa){C"[5z(@"+15+", \'"+fa+"\')]"}},{1i:"$=",1f:B(15,9Z){C"[21(@"+15+", 3c-G(@"+15+")-"+(9Z.G-1)+")=\'"+9Z+"\']"}},{1i:"!=",1f:B(15,f9){C"[3O(@"+15+"=\'"+f9+"\')]"}},{1i:"=",1f:B(15,f8){C"[@"+15+"=\'"+f8+"\']"}}];A 9C=B(9Y,3Z,f7,f6){A 49;A i=2I(3Z);if(i[2]>=0){A 4L=3Z.T("]",i[2]);A 29=3Z.21(i[2]+1,4L);1s(29&&29.G){if(29.2s(0)=="@"){29=29.2w(1)}49=L;R(A x=0;x<9Y.G;x++){A 1S=9Y[x];A 7h=29.T(1S.1i);if(7h>=0){A 15=29.21(0,7h);A 4a=29.21(7h+1S.1i.G);if((4a.2s(0)=="\\"")||(4a.2s(0)=="\'")){4a=4a.21(1,4a.G-1)}49=1S.1f(d.7g(15),d.7g(4a));3f}}if((!49)&&(29.G)){49=f7(29)}if(49){f6(49)}29=L;A 7f=3Z.T("[",4L);if(0<=7f){4L=3Z.T("]",7f);if(0<=4L){29=3Z.21(7f+1,4L)}}}}};A f0=B(f5){A 4K=".";A 7e=f5.1A(" ");1s(7e.G){A 2K=7e.3a();A 7d;if(2K==">"){7d="/";2K=7e.3a()}I{7d="//"}A f4=5r(2K);4K+=7d+f4;A id=6X(2K);if(id.G){4K+="[@id=\'"+id+"\'][1]"}A cn=9H(2K);if(cn.G){A 9X=" ";if(cn.2s(cn.G-1)=="*"){9X="";cn=cn.3b(0,cn.G-1)}4K+="[5z(3U(\' \',@9P,\' \'), \' "+cn+9X+"\')]"}9C(f3,2K,B(f2){C"[@"+f2+"]"},B(f1){4K+=f1})}C 4K};A 7a={};A eC=B(28){if(7a[28]){C 7a[28]}A 1e=d.1e;A 9W=f0(28);A 4H=B(9V){A J=[];A 7b;1u{7b=1e.9x(9W,9V,L,lh.lg,L)}1y(e){1z.1K("lf in le:",9W,"lc:",9V);1z.1K(e)}A 7c=7b.eZ();1s(7c){J.Y(7c);7c=7b.eZ()}C J};C 7a[28]=4H};A 5x={};A 9B={};A 3y=B(79,78){if(!79){C 78}if(!78){C 79}C B(){C 79.14(26,P)&&78.14(26,P)}};A 75=B(9U,3Y,5B,2J){A 2v=2J+1;A 76=(3Y.G==2v);A 2K=3Y[2J];if(2K==">"){A 77=9U.3W;if(!77.G){C}2v++;76=(3Y.G==2v);A 4H=6O(3Y[2J+1]);R(A x=0,11;x<77.G,11=77[x];x++){if(4H(11)){if(76){5B.Y(11)}I{75(11,3Y,5B,2v)}}}}A 5C=6U(2K)(9U);if(76){1s(5C.G){5B.Y(5C.3a())}}I{1s(5C.G){75(5C.3a(),3Y,5B,2v)}}};A eE=B(9T,eY){A J=[];A x=9T.G-1,11;1s(11=9T[x--]){75(11,eY,J,0)}C J};A 6O=B(3D){if(5x[3D]){C 5x[3D]}A ff=L;A 9S=5r(3D);if(9S!="*"){ff=3y(ff,B(N){C((N.2t==1)&&(9S==N.5w.1M()))})}A 9R=6X(3D);if(9R.G){ff=3y(ff,B(N){C((N.2t==1)&&(N.id==9R))})}if(2Y.5q.14(D,2I(3D).2w(1))>=0){ff=3y(ff,9z(3D))}C 5x[3D]=ff};A 5y=B(E){A pn=E.1L;A 9Q=pn.3W;A 2v=-1;A 3C=pn.5A;if(!3C){C 2v}A ci=E["eW"];A cl=pn["eX"];if(((V cl=="4J")&&(cl!=9Q.G))||(V ci!="4J")){pn["eX"]=9Q.G;A 2J=1;do{if(3C===E){2v=2J}if(3C.2t==1){3C["eW"]=2J;2J++}3C=3C.71}1s(3C)}I{2v=ci}C 2v};A lb=0;A 3X=B(N,15){A 74="";if(15=="9P"){C N.3A||74}if(15=="R"){C N.la||74}C N.5t(15,2)||74};A eH=[{1i:"|=",1f:B(15,9O){A eV=" "+9O+"-";C B(N){A ea=" "+(N.5t(15,2)||"");C((ea==9O)||(ea.T(eV)==0))}}},{1i:"^=",1f:B(15,eU){C B(N){C(3X(N,15).T(eU)==0)}}},{1i:"*=",1f:B(15,eT){C B(N){C(3X(N,15).T(eT)>=0)}}},{1i:"~=",1f:B(15,eS){A 9N=" "+eS+" ";C B(N){A ea=" "+3X(N,15)+" ";C(ea.T(9N)>=0)}}},{1i:"$=",1f:B(15,73){A 9N=" "+73;C B(N){A ea=" "+3X(N,15);C(ea.31(73)==(ea.G-73.G))}}},{1i:"!=",1f:B(15,eR){C B(N){C(3X(N,15)!=eR)}}},{1i:"=",1f:B(15,eQ){C B(N){C(3X(N,15)==eQ)}}}];A 9E=[{1i:"9M-9K",1f:B(1p,l9){C B(N){if(N.2t!=1){C U}A fc=N.eP;1s(fc&&(fc.2t!=1)){fc=fc.eP}C(!fc)}}},{1i:"72-9K",1f:B(1p,l8){C B(N){if(N.2t!=1){C U}A nc=N.71;1s(nc&&(nc.2t!=1)){nc=nc.71}C(!nc)}}},{1i:"l7",1f:B(1p,l6){C B(N){A cn=N.3W;A eO=N.3W.G;R(A x=eO-1;x>=0;x--){A nt=cn[x].2t;if((nt==1)||(nt==3)){C U}}C K}}},{1i:"5z",1f:B(1p,eN){C B(N){C(N.9L.T(eN)>=0)}}},{1i:"3O",1f:B(1p,eM){A eL=6O(eM);C B(N){C(!eL(N))}}},{1i:"l5-9K",1f:B(1p,2u){A pi=eK;if(2u=="l4"){C B(N){C(((5y(N))%2)==1)}}I{if((2u=="2n")||(2u=="l3")){C B(N){C((5y(N)%2)==0)}}I{if(2u.T("l2+")==0){A 70=pi(2u.3b(3));C B(N){C(N.1L.3W[70-1]===N)}}I{if((2u.T("n+")>0)&&(2u.G>3)){A 9J=2u.1A("n+",2);A eJ=pi(9J[0]);A 2J=pi(9J[1]);C B(N){C((5y(N)%eJ)==2J)}}I{if(2u.T("n")==-1){A 70=pi(2u);C B(N){C(5y(N)==70)}}}}}}}}];A 9z=B(3e){A 9I=(9B[3e]||5x[3e]);if(9I){C 9I}A ff=L;A i=2I(3e);if(i[0]>=0){A 24=5r(3e);if(24!="*"){ff=3y(ff,B(N){C(N.5w.1M()==24)})}}A 5u;A 3B=9H(3e);if(3B.G){A 9F=3B.2s(3B.G-1)=="*";if(9F){3B=3B.3b(0,3B.G-1)}A re=S 9G("(?:^|\\\\s)"+3B+(9F?".*":"")+"(?:\\\\s|$)");ff=3y(ff,B(N){C re.6Z(N.3A)})}if(i[3]>=0){A 3z=3e.3b(i[3]+1);A 9D="";A 5v=3z.T("(");A 6Y=3z.31(")");if((0<=5v)&&(0<=6Y)&&(6Y>5v)){9D=3z.21(5v+1,6Y);3z=3z.3b(0,5v)}5u=L;R(A x=0;x<9E.G;x++){A 1S=9E[x];if(1S.1i==3z){5u=1S.1f(3z,9D);3f}}if(5u){ff=3y(ff,5u)}}A eG=(d.1l)?B(5s){A eI=5s.1M();C B(N){C N[5s]||N[eI]}}:B(5s){C B(N){C(N&&N.5t&&N.l1(5s))}};9C(eH,3e,eG,B(eF){ff=3y(ff,eF)});if(!ff){ff=B(){C K}}C 9B[3e]=ff};A 6W={};A 6U=B(3d,1B){A 9A=6W[3d];if(9A){C 9A}A i=2I(3d);A id=6X(3d);if(i[0]==0){C 6W[3d]=B(1B){C[d.1D(id)]}}A 9y=9z(3d);A 5p;if(i[0]>=0){5p=B(1B){A 11=d.1D(id);if(9y(11)){C[11]}}}I{A 3V;A 24=5r(3d);if(2Y.5q.14(D,2I(3d))==-1){5p=B(1B){A J=[];A 11,x=0,3V=1B.4I(24);1s(11=3V[x++]){J.Y(11)}C J}}I{5p=B(1B){A J=[];A 11,x=0,3V=1B.4I(24);1s(11=3V[x++]){if(9y(11)){J.Y(11)}}C J}}}C 6W[3d]=5p};A l0={};A 5o={">":B(1B){A J=[];A 11,x=0,3V=1B.3W;1s(11=3V[x++]){if(11.2t==1){J.Y(11)}}C J}};A 9w=B(6V){if(0>6V.T(" ")){C 6U(6V)}A eD=B(1B){A 6S=6V.1A(" ");A 6T;if(6S[0]==">"){6T=[1B]}I{6T=6U(6S.3a())(1B)}C eE(6T,6S)};C eD};A 9v=((1q["9x"]&&!d.3o)?B(3x){A 6R=3x.1A(" ");if((1q["9x"])&&(3x.T(":")==-1)&&((K))){if(((6R.G>2)&&(3x.T(">")==-1))||(6R.G>3)||(3x.T("[")>=0)||((1==6R.G)&&(0<=3x.T(".")))){C eC(3x)}}C 9w(3x)}:9w);A ey=B(3w){if(5o[3w]){C 5o[3w]}if(0>3w.T(",")){C 5o[3w]=9v(3w)}I{A eB=3w.1A(/\\s*,\\s*/);A 4H=B(1B){A eA=0;A J=[];A 6Q;1s(6Q=eB[eA++]){J=J.3U(9v(6Q,6Q.T(" "))(1B))}C J};C 5o[3w]=4H}};A 5n=0;A ez=B(Q){A J=S d.1H();if(!Q){C J}if(Q[0]){J.Y(Q[0])}if(Q.G<2){C J}5n++;Q[0]["9u"]=5n;R(A x=1,11;11=Q[x];x++){if(Q[x]["9u"]!=5n){J.Y(11)}11["9u"]=5n}C J};d.1r=B(6P,1B){if(V 6P!="3c"){C S d.1H(6P)}if(V 1B=="3c"){1B=d.1D(1B)}C ez(ey(6P)(1B||d.1e))};d.9t=B(ex,9s){A 9r=S d.1H();A ff=(9s)?6O(9s):B(){C K};R(A x=0,11;11=ex[x];x++){if(ff(11)){9r.Y(11)}}C 9r}})()}if(!z.1h["z.X.1b"]){z.1h["z.X.1b"]=K;z.1Q("z.X.1b");z.6K=B(ew){A J={};A iq="kZ[Z!=9q][Z!=kY][Z!=et][Z!=kX][Z!=kW], kV, kU";z.1r(iq,ew).3T(B(E){C(!E.kT)}).1n(B(1m){A 3v=1m.1p;A Z=(1m.Z||"").1M();if((Z=="kS")||(Z=="kR")){if(1m.kQ){J[3v]=1m.1Z}}I{if(1m.kP){A ev=J[3v]=[];z.1r("kO[kN]",1m).1n(B(eu){ev.Y(eu.1Z)})}I{J[3v]=1m.1Z;if(Z=="et"){J[3v+".x"]=J[3v+".y"]=J[3v].x=J[3v].y=0}}}});C J};z.9h=B(23){A ec=kM;A J="";A es={};R(A x in 23){if(23[x]!=es[x]){if(z.2l(23[x])){R(A y=0;y<23[x].G;y++){J+=ec(x)+"="+ec(23[x][y])+"&"}}I{J+=ec(x)+"="+ec(23[x])+"&"}}}if((J.G)&&(J.2s(J.G-1)=="&")){J=J.3b(0,J.G-1)}C J};z.kL=B(er){C z.9h(z.6K(er))};z.kK=B(ep){C z.eq(z.6K(ep))};z.kJ=B(2H){A J={};A qp=2H.1A("&");A dc=kI;z.1n(qp,B(1m){if(1m.G){A 9p=1m.1A("=");A 1p=dc(9p.3a());A 1U=dc(9p.22("="));if(z.1R(J[1p])){J[1p]=[J[1p]]}if(z.2l(J[1p])){J[1p].Y(1U)}I{J[1p]=1U}}});C J};z.e1=U;z.e6={"9g":B(1b){C 1b.2G},"2e":B(1b){if(!1o.eo){1z.1K("kH kG kF a kE of 9g/2e-6M-9m"+" 4F kD kC kB kA 4G en kz"+" (ky 1o.eo=K 4F kx kw D kv)")}C z.5m(1b.2G)},"2e-6M-ku":B(1b){A 6N=1b.2G;A 9o=6N.T("/*");A 9n=6N.31("*/");if((9o==-1)||(9n==-1)){C z.5m(1b.2G)}C z.5m(6N.21(9o+2,9n))},"2e-6M-9m":B(1b){A 6L=1b.2G;A 9l=6L.T("/*");A 9k=6L.31("*/");if((9l==-1)||(9k==-1)){1z.1K("kt en ks\'t 6M 9m!");C""}C z.5m(6L.21(9l+2,9k))},"kr":B(1b){C z.3u(1b.2G)},"kq":B(1b){if(z.1l&&!1b.el){z.1n(["ko","em","kn","km"],B(i){1u{A 1e=S 9j(kl[i]+".kk");1e.kj=U;1e.ki(1b.2G);C 1e}1y(e){}})}I{C 1b.el}}};(B(){z.e5=B(F,ej,ei,eh){A 2F={};2F.F=F;A 6J=L;if(F.3R){A 3R=z.1D(F.3R);A 9i=3R.kh("kg");2F.2E=F.2E||(9i?9i.1Z:L);6J=z.6K(3R)}I{2F.2E=F.2E}A 5l=[{}];if(6J){5l.Y(6J)}if(F.5g){5l.Y(F.5g)}if(F.ek){5l.Y({"z.ek":S 5d().8O()})}2F.1r=z.9h(z.1x.14(L,5l));2F.9d=F.9d||"9g";A d=S z.30(ej);d.5k(ei,B(eg){C eh(eg,d)});A ld=F.4E;if(ld&&z.1Y(ld)){d.ef(B(ee){C ld.2d(F,ee,2F)})}A 1G=F.9f;if(1G&&z.1Y(1G)){d.ed(B(e9){C 1G.2d(F,e9,2F)})}A 6I=F.kf;if(6I&&z.1Y(6I)){d.9e(B(e8){C 6I.2d(F,e8,2F)})}d.1F=2F;C d};A e4=B(O){O.e0=K;A 1b=O.1F.1b;if(V 1b.e7=="B"){1b.e7()}};A e3=B(O){C z.e6[O.1F.9d](O.1F.1b)};A e2=B(9c,O){1z.1K(9c);C 9c};A 3Q=B(F){A O=z.e5(F,e4,e3,e2);O.1F.1b=z.9b(O.1F.F);C O};A 5j=L;A 3t=[];A 94=B(){A dZ=(S 5d()).dU();if(!z.e1){z.1n(3t,B(4D,6H){if(!4D){C}A O=4D.O;1u{if(!O||O.e0||!4D.dT(O)){3t.3S(6H,1);C}if(4D.dR(O)){3t.3S(6H,1);4D.dP(O)}I{if(O.9a){if(O.9a+(O.1F.F.6G||0)<dZ){3t.3S(6H,1);A 1G=S 1O("6G ke");1G.dY="6G";O.5i(1G);O.4C()}}}}1y(e){1z.1K(e);O.5i(S 1O("kc!"))}})}if(!3t.G){dX(5j);5j=L;C}};z.dV=B(){1u{z.1n(3t,B(i){i.O.4C()})}1y(e){}};if(z.1l){z.dW(z.dV)}z.dH=B(O,dS,dQ,dO){if(O.1F.F.6G){O.9a=(S 5d()).dU()}3t.Y({O:O,dT:dS,dR:dQ,dP:dO});if(!5j){5j=dN(94,50)}94()};A dJ="8Z/x-kb-3R-ka";A dG=B(O){C O.1F.1b.6F};A dF=B(O){C 4==O.1F.1b.6F};A dE=B(O){if(z.8Y(O.1F.1b)){O.dM(O)}I{O.5i(S 1O("k9 k8 k7 5h:"+O.1F.1b.3N))}};A 3P=B(Z,O){A 3s=O.1F;A F=3s.F;3s.1b.dL(Z,3s.2E,(F.k6!==K),(F.8X?F.8X:1k),(F.8W?F.8W:1k));if(F.6E){R(A 5f in F.6E){if(5f.1M()==="5g-Z"&&!F.8V){F.8V=F.6E[5f]}I{3s.1b.dK(5f,F.6E[5f])}}}3s.1b.dK("k5-k4",(F.8V||dJ));1u{3s.1b.dI(3s.1r)}1y(e){O.4C()}z.dH(O,dG,dF,dE);C O};z.8T=B(4B){if(4B.1r.G){4B.2E+=(4B.2E.T("?")==-1?"?":"&")+4B.1r;4B.1r=L}};z.k3=B(F){A O=3Q(F);z.8T(O.1F);C 3P("dD",O)};z.k2=B(F){C 3P("dC",3Q(F))};z.k1=B(F){A O=3Q(F);O.1F.1r=F.k0;C 3P("dC",O)};z.jZ=B(F){C 3P("dA",3Q(F))};z.jY=B(F){A O=3Q(F);A dB=O.1F;if(F["8U"]){dB.1r=F.8U;F.8U=L}C 3P("dA",O)};z.jX=B(F){A O=3Q(F);z.8T(O.1F);C 3P("8S",O)};z.dz=B(jW){2m S 1O("z.dz 3O jV jU")}})()}if(!z.1h["z.X.fx"]){z.1h["z.X.fx"]=K;z.1Q("z.X.fx");z.dx=B(dy,1d){D.1w=dy;D.1d=1d;D.4x=B(n){C((D.1d-D.1w)*n)+D.1w}};z.2r("z.d6",L,{1P:B(F){z.1x(D,F);if(z.2l(D.2C)){D.2C=S z.dx(D.2C[0],D.2C[1])}},2C:L,8Q:jT,5a:L,4z:0,dj:10,du:L,6x:L,dt:L,8B:L,dh:L,ds:L,dr:L,dm:L,2D:U,2Z:U,4A:L,8N:L,3r:L,2o:0,4y:0,3q:B(H,F){if(D[H]){D[H].14(D,F||[])}C D},5b:B(dw,8R){if(8R){5e(D.3r);D.2D=D.2Z=U;D.2o=0}I{if(D.2D&&!D.2Z){C D}}D.3q("6x");A d=dw||D.du;if(d>0){5c(z.2p(D,B(){D.5b(L,8R)}),d);C D}D.4A=S 5d().8O();if(D.2Z){D.4A-=D.8Q*D.2o}D.8N=D.4A+D.8Q;D.2D=K;D.2Z=U;A 8P=D.2C.4x(D.2o);if(!D.2o){if(!D.4y){D.4y=D.4z}D.3q("dt",[8P])}D.3q("ds",[8P]);D.8M();C D},jS:B(){5e(D.3r);if(!D.2D){C D}D.2Z=K;D.3q("dr",[D.2C.4x(D.2o)]);C D},jR:B(dq,dp){5e(D.3r);D.2D=D.2Z=K;D.2o=dq*6D;if(dp){D.5b()}C D},jQ:B(dn){if(!D.3r){C}5e(D.3r);if(dn){D.2o=1}D.3q("dm",[D.2C.4x(D.2o)]);D.2D=D.2Z=U;C D},3N:B(){if(D.2D){C D.2Z?"3M":"jP"}C"jO"},8M:B(){5e(D.3r);if(D.2D){A dl=S 5d().8O();A 2q=(dl-D.4A)/(D.8N-D.4A);if(2q>=1){2q=1}D.2o=2q;if(D.5a){2q=D.5a(2q)}D.3q("8B",[D.2C.4x(2q)]);if(2q<1){D.3r=5c(z.2p(D,"8M"),D.dj)}I{D.2D=U;if(D.4z>0){D.4z--;D.5b(L,K)}I{if(D.4z==-1){D.5b(L,K)}I{if(D.4y){D.4z=D.4y;D.4y=0}}}D.2o=0;D.3q("dh")}}C D}});(B(){A df=B(E){if(z.1l){A ns=E.1c;if(!ns.8L.G&&z.1c(E,"8L")=="dg"){ns.8L="1"}if(!ns.3n.G&&z.1c(E,"3n")=="8K"){ns.3n="8K"}}};z.6C=B(F){if(V F.1d=="1k"){2m S 1O("z.6C jN an 1d 1Z")}F.E=z.1D(F.E);A 3p=z.1x({6w:{}},F);A 8J=(3p.6w.2W={});8J.1w=(V 3p.1w=="1k")?B(){C 2V(z.1c(3p.E,"2W"))}:3p.1w;8J.1d=3p.1d;A 2U=z.6y(3p);z.2c(2U,"6x",L,B(){df(3p.E)});C 2U};z.8I=B(F){C z.6C(z.1x({1d:1},F))};z.8H=B(F){C z.6C(z.1x({1d:0},F))};if(z.6B&&!z.3o){z.8E=B(n){C 2k("0.5")+((2Y.da((n+2k("1.5"))*2Y.d9))/2)}}I{z.8E=B(n){C 0.5+((2Y.da((n+1.5)*2Y.d9))/2)}}A d4=B(6A){D.8G=6A;R(A p in 6A){A 1a=6A[p];if(1a.1w 1N z.1J){1a.d7=S z.1J()}}D.4x=B(r){A J={};R(A p in D.8G){A 1a=D.8G[p];A 6z=L;if(1a.1w 1N z.1J){6z=z.d8(1a.1w,1a.1d,r,1a.d7).8F()}I{if(!z.2l(1a.1w)){6z=((1a.1d-1a.1w)*r)+1a.1w+(p!="2W"?1a.jM||"px":"")}}J[p]=6z}C J}};z.6y=B(F){F.E=z.1D(F.E);if(!F.5a){F.5a=z.8E}A 2U=S z.d6(F);z.2c(2U,"6x",2U,B(){A pm={};R(A p in D.6w){A 1a=pm[p]=z.1x({},D.6w[p]);if(z.1Y(1a.1w)){1a.1w=1a.1w()}if(z.1Y(1a.1d)){1a.1d=1a.1d()}A d5=(p.1M().T("jL")>=0);B 8C(E,p){4w(p){2X"58":C E.8D;2X"3n":C E.6v}A v=z.1c(E,p);C(p=="2W")?2V(v):2k(v)};if(V 1a.1d=="1k"){1a.1d=8C(D.E,p)}I{if(V 1a.1w=="1k"){1a.1w=8C(D.E,p)}}if(d5){1a.1w=S z.1J(1a.1w);1a.1d=S z.1J(1a.1d)}I{1a.1w=(p=="2W")?2V(1a.1w):2k(1a.1w)}}D.2C=S d4(pm)});z.2c(2U,"8B",2U,B(8A){R(A s in 8A){z.1c(D.E,s,8A[s])}});C 2U}})()}',62,1711,'|||||||||||||||||||||||||||||||||||dojo|var|function|return|this|node|args|length|evt|else|ret|true|null|obj|elem|dfd|arguments|arr|for|new|indexOf|false|typeof||_base|push|type||te|||apply|attr|||||prop|xhr|style|end|doc|match|uri|_hasResource|key|del|undefined|isIE|item|forEach|djConfig|name|document|query|while|_66|try|res|start|mixin|catch|console|split|root|prototype|byId|gcs|ioArgs|err|NodeList|_p|Color|debug|parentNode|toLowerCase|instanceof|Error|constructor|provide|isString|ta|255|val|_a|global|_69|isFunction|value||substring|join|map|tn||window||path|_343|_220|_listeners|connect|call|json|replace|left|_b|toString|128|parseFloat|isArray|throw||_percent|hitch|step|declare|charAt|nodeType|_3c3|nidx|slice|faux|fired|_c4|_7e|loc|curve|_active|url|_44c|responseText|str|_312|idx|tqp|isNaN|isOpera|_22d|callee|add|_18b|_f8|_e2|_41|anim|Number|opacity|case|Math|_paused|Deferred|lastIndexOf|||||||||shift|substr|string|_3e7|_3ce|break|_w|charCode|_listener|_d5|_c5|authority|_49|width|isSafari|_49e|fire|_timer|_47b|_465|eval|_in|_40c|_409|_362|_3d9|className|_3d5|_386|_37a|body|getComputedStyle|box|_221|keyCode|remove|_8d|_46|paused|status|not|_478|_461|form|splice|filter|concat|tret|childNodes|_38b|_367|_33d||||||||||_340|_348|keypress|appendChild|_toArray|Array|_2b0|_toPixelValue|ref|_fixEvent|_19f|_14c|_14a|_150|_141|declaredClass|_d4|_99|_Url|_83|scheme|_67|_3d|switch|getValue|_startRepeatCount|repeat|_startTime|_47e|cancel|tif|load|to|with|tf|getElementsByTagName|number|_34c|_342|extend|_1e3|_normalizeEventName|_14b|_14e|results|self|cbfn|_f9|_d8|_b2|src|_88|dav||baseUrl|fragment|_loadedModules|_44|_43|_loaders|mll|height||easing|play|setTimeout|Date|clearTimeout|hdr|content|code|errback|_464|addCallbacks|_450|fromJson|_413|_3fc|_3ee|max|_31e|cond|getAttribute|_3d4|obi|tagName|_360|_381|contains|firstChild|_368|_372|_320|place|_2fa|scrollTop|_299|scrollLeft|top|documentElement|_288|_287|_getBorderExtents|_23f|_23d|_239|_218|_216|_211|eles|target|keys|shiftKey|ctrlKey|event|192|iel|_1db|delete|_1cf||addEventListener|String|_1af|_157|array|_14d|continue|_14f|_137|_11f|_106|_findMethod|has|_delegate|_dc|_d3|loaded|_9a|_loadInit|_inFlightCount|getObject|tv|_4f|_postLoad|_2d|offsetWidth|properties|beforeBegin|animateProperty|_4ad|_4a6|isKhtml|_fade|100|headers|readyState|timeout|_469|_457|_44d|formToObject|_441|comment|_43d|_36f|_419|tp|_40a|_406|_407|_373|_403|_3e6|_31b|cbi|test|_3c7|nextSibling|last|_3a1|_38e|_365|_36b|ecn|_364|_363|_356|_35e|_35f|_34f|_34d|_349|trim|tci|_328|_32b|_31f|_31c|_anim|_300|_2ff|_2f5|_2e7|removeClass|addClass|func|_2c4|cls|_2a9|_2ae|_280|_27f|_getPadExtents|isMoz|none|_233|cssText|_214|_fixCallback|_synthesizeEvent|stopPropagation|preventDefault|_setKeyChar|_1e1|ieh|_1d7|_1be|colorFromArray|sanitize|bits|rgb|_156|_fire|_resback|_13d|partial|_13a|silentlyCancelled|_topics|_127|_f1|_f0|superclass|_ec|_e3|mct|setObject|_bf|_b3|object|require|_92|_khtmlTimer|location|XMLHTTP|locale|dua|_71|_modulePrefixes|_55|_loadModule|_51|_50|_4e|pop|_3f|_callLoaded|_unloaders|_loadNotifying|_loadedUrls|_27|_24|_1d|_5|_4b7|onAnimate|getStyle|offsetHeight|_defaultEasing|toCss|_properties|fadeOut|fadeIn|_49f|auto|zoom|_cycle|_endTime|valueOf|_494|duration|_492|DELETE|_ioAddQueryToUrl|putData|contentType|password|user|_isDocumentOk|application|||||_466||||||startTime|_xhrObj|_45f|handleAs|addBoth|error|text|objectToQuery|_44f|ActiveXObject|_443|_442|filtered|_43f|_43e|_437|file|tnl|_41c|_filterQueryResult|_zipIdx|_408|_402|evaluate|_3ed|_380|fHit|_361|_33b|_3da|_3ab|_3d6|RegExp|_327|_3cf|_3c9|child|innerHTML|first|tval|_391|class|pnc|_37e|_37c|_375|_366|_35c|_35a|_353|_33c|_336|_314|||_315|_oe|_307|_309|cloneNode|after|createElement||_2f8|_2ef|_2ee|unshift|coords|some|every||_2cb|script|_2c9|parent||a2p||_2c3|_2bd||abs|_getMarginBox|_2b3|_2a6|position|_2a7|_2ac|_2ab|_getIeDocumentElementOffset|getBoundingClientRect|ownerDocument|_2a3|clientWidth|_isBodyLtr|_fixIeBiDiScrollLeft|_bodyLtr|_29d|_getContentBox|_setBox|_getMarginExtents|_getPadBorderExtents|_usesBorderBox|boxModel|pcs|st|sl|_240|runtimeStyle|_dcm|BackCompat|compatMode|default|_21b|_d|html|_event_listener|handlers|PAGE_DOWN|PAGE_UP|RIGHT_ARROW|LEFT_ARROW|DOWN_ARROW|UP_ARROW|_preventDefault||_stopPropagation|returnValue||_trySetKeyCode|cancelBubble|currentTarget|106|_1ee|111||_1e8|_1e7|||se|srcElement|onkeydown||_1d0|_disconnect|lid|_1c0|_connect|_set|_195|_185|_183|_17d|_everyOrSome|_16b|_172|_15b|Function|_154|_escapeString|_140|chain|_check|canceller|_12d|_124|_11a|_10d|_107|inherited|_fa|_f2|_findMixin|_constructor|preamble|_de|clone|tmp|_c7|TMP|_be|_ba|_mixin|isBrowser|lang|firebug||param|modulePaths|_a7|_fireCallback|_a0|setContext||_9c|unloaded||||_96|_93|navigator|_90|_89||protocol|_84|_86|_XMLHTTP_PROGIDS|gears|google|setAttribute|_80|_77|cfg|_6f|_getModuleSymbols|_5a|_58|_53|_4d|_4c|_45|_40|_moduleHasPrefix|_loadUri|_28|_26|_21|_22|tests|doh|_20|_1f|_1c|version|_1b|_19|_getProp|_11|_4|_4a5|_4b3|_Animation|tempColor|blendColors|PI|sin|||||_49a|normal|onEnd||rate||curr|onStop|_497||_496|pct|onPause|onPlay|onBegin|delay||_491|_Line|_48b|wrapForm|PUT|_487|POST|GET|_476|_474|_472|_ioWatch|send|_471|setRequestHeader|open|callback|setInterval|_470|resHandle|_46f|ioCheck|_46e|validCheck|getTime|_ioCancelAll|addOnUnload|clearInterval|dojoType|now|canceled|_blockAsync|_45e|_45c|_459|_ioSetArgs|_contentHandlers|abort|_458|_456||||addErrback|_454|addCallback|_452|_44b|_44a|_449|preventCache|responseXML|Microsoft|JSON|usePlainJson|_431|toJson|_430|_42d|image|opt|ria|_421|_41b|_40b|_zip|_410|_40d|_357|sqf|_374|_3e5|_3df|_38f|clc|pred|parseInt|ntf|_3bf|_3bc|cnl|previousSibling|_3a9|_3a6|_39c|_399|_396|_392|__cachedIndex|__cachedLength|_376|iterateNext|_34a|_355|_354|_32c|_350|_34b|_33f|_33e|_33a|_338|_334|_332||_330|_32e||_322|_316|mousemove|mouseout|mouseover|_305|lastChild||_2f9||_2f2|_2f1|removeChild|_2ec|_2eb|_2ea|_2e6||_2e4|_2e2|_2d6|_2d5|_2d4|_2d3|_2d2|_2d1|_2cd|_2cc|scs|write|_2c8|hasClass|_2c0|_2bb|_2b5|_abs|_docScroll|offsetParent|offsetTop|offsetLeft|absolute|getBoxObjectFor|clientLeft|_setContentSize|_setMarginBox|_28d|_286|_285|_289|NaN|_281|border|_272|_26b|_260|_258|_253|_24c|_246|_23a|_getOpacity|_setOpacity|_238|td|tr|nodeName|FILTER|_22f|_22e|currentStyle|_22c|_22b|display|QuirksMode|unselectable|_217|isMozilla|getElementById|attributes|all|_ie_listener|_getIeDispatcher|_1fd|NUM_LOCK|SCROLL_LOCK|INSERT|END|HOME|PAUSE|F12|F11|F10|F9|F8|F7|F6|F5|F4|F3|F2|F1|63232|SHIFT_TAB|TAB|keyIdentifier|_1f3|stopEvent|_punctMap|222|219|186|onkeypress|_stealthKeyDown|_fixKeys|relatedTarget|_1e0|_1df|_stealthKeydown|_1d6|_1d5|_1d1|_1ca|_1c9|_1cb|_1c2|_1c1|_1c3|_1c4|_1bc|_1b3|_1b2|colorFromHex|colorFromRgb|named|colorFromString|mask|rgba|_19c|_197|_192|setColor|_180|_178|_177|_175|_174|_16d|_166|_164|_163|_162|_15c|_15d|_15e|index|__json__|toJsonIndentStr|_nextId|_12f|_12b|publish|_128|_126|_125|_122|_121|_123|_11c|_11b|_10c|_10b|_108|getDispatcher|argument|nom|_construct|_core|_makeCtor|_df|_db|deprecated|isObject|_cc||scope||_hitchArgs|_c2||pre|_c1|native|isDebug||registerModulePath|_a8||finally|||_a6|_a5|_a4|_a3|_a2|_a1|_9f|_9e|_9d|_9b|_98|_97|onbeforeunload|ipt|scr|complete|_95|userAgent|_modulesLoaded|initialized|_initFired|_8c|_8a|_getText|_87|ieForceActiveXXhr|Msxml2|isGears|_81|_gearsObject|googlegears|GearsFactory|isFF|_7d|Safari|_72|_name|_6c|ire|ore|_68|i18n|_5b|requireIf|_56|_52|loading|_4a|_loadPath|_47|_48|_global_omit_module_check|_getModulePrefix|_3c|_3a|_37|_30|Boolean|_loadUriAndCheck|_2e||cacheBust|_1e|_1a|_17|_16|_15|_14|_f|_10|_e|_9|_8|revision|flag|patch|minor|major|_6|color|units|needs|stopped|playing|stop|gotoPercent|pause|1000|implemented|yet|_48a|xhrDelete|rawXhrPut|xhrPut|postData|rawXhrPost|xhrPost|xhrGet|Type|Content|sync|response|http|bad|urlencoded|www|_watchInFlightError||exceeded|handle|action|getAttributeNode|loadXML|async|XMLDOM|prefixes|MSXML3|MSXML|MSXML2||xml|javascript|wasn|your|optional|message|off|turn|use|endpoints|issues|security|potential|avoid|mimetype|using|consider|please|decodeURIComponent|queryToObject|formToJson|formToQuery|encodeURIComponent|selected|option|multiple|checked|checkbox|radio|disabled|textarea|select|button|reset|submit|input|_3fb|hasAttribute|0n|even|odd|nth|_3b5|empty|_3b1|_3ad|htmlFor|_38a|under||exprssion|failure|ANY_TYPE|XPathResult|starts|keyup|keydown|mouseup|mousedown|blur|click|combine|span|addContent||adopt|orphan|_2de|_2dd|styles|_2da|_2d9|_2cf|_2ce|show|createPopup|toggleClass|scrollWidth|clientTop|ltr|direction|pageXOffset|pageYOffset|fixed|contentBox|marginBox|BUTTON|TABLE|_getBorderBox|clientHeight|visible|overflow|marginBottom|marginRight|marginTop|marginLeft|borderBottomWidth|borderBottomStyle|borderRightWidth|borderRightStyle|borderTopWidth|borderTopStyle|borderLeftWidth|borderLeftStyle|paddingBottom|paddingRight|paddingTop|paddingLeft|offset||min|padding||margin|Opacity|Alpha|alpha|filters|pixelLeft|medium|_22a|defaultView|before||insertBefore|KhtmlUserSelect|MozUserSelect|setSelectable|isDescendant|div|_destroyElement|BackgroundImageCache|execCommand|PageDown|PageUp|Right|Left|Down|Up|63289|63249|63248|PRINT_SCREEN|63302|63277|63276|63275|63273|63272|63250|63247|63246|63245|63244|63243|63242|63241|63240|63239|63238|63237|63236|63235|63234|63233|Enter|_1f9|which|_1f6|bubbledKeyCode|221|220||||191|190|189|188|187|toElement|fromElement|clientY|pageY||clientX|pageX|offsetY|||layerY|offsetX|layerX|parentWindow|_nop|_allow_leaks|145|144|126|F15|125|F14|124|F13|123|122|121|120|119|118|117|116|115|114|113|112|NUMPAD_DIVIDE|110|NUMPAD_PERIOD|109|NUMPAD_MINUS|108|NUMPAD_ENTER|107|NUMPAD_PLUS|NUMPAD_MULTIPLY|105|NUMPAD_9|104|NUMPAD_8|103|NUMPAD_7|102|NUMPAD_6|101|NUMPAD_5|NUMPAD_4||NUMPAD_3|NUMPAD_2|NUMPAD_1|NUMPAD_0||SELECT|RIGHT_WINDOW||LEFT_WINDOW||HELP|SPACE|ESCAPE|CAPS_LOCK|ALT|CTRL|SHIFT|ENTER|CLEAR|BACKSPACE|attachEvent|fixEvent|fromCharCode|keyChar|_1b9|removeEventListener|0x|round|toHex|toRgba|toRgb|aqua|teal|blue|navy|yellow|olive|lime|green|fuchsia|purple|red|maroon|white|gray|silver|black|boolean|called|already|Cancelled|connectPublisher|unsubscribe|subscribe|disconnect|_113|_112||_111|_110|||found|was||must|_|module|||required|likely|It|declaration|Mixin|separate|instead|property|initializer||pass|_c9|_bb|_b7|nfunction|isAlien|isFinite|isArrayLike|_firebug|withDoc|withGlobal|_writeIncludes|VML|behavior|addRule|createStyleSheet|vml|com|microsoft|schemas|urn|namespaces|onunload|onreadystatechange|defer|khtml|WebKit|DOMContentLoaded|enableMozDomContentLoaded|domcontentloaded|Unable|base|chrome|1223|304|300|200|available|XMLHttpRequest|_println|language|userLanguage|isQuirks|factory|mimeTypes|Factory|Gears|_7f|MSIE||Firefox|Gecko|Konqueror||Opera|appVersion|xd|browser|moduleUrl|port|host|hostenv|_requireLocalization|_5f|_5e|_5d|_5c|requireLocalization|requireAfterIf|_57|common|platformRequire|defined|symbol|_isXDomain|tried|Could|__package__|packageFileName|_42|useXDomain|flight|still|files|addOnLoad|failed|sourceURL|util|notice|without|change|subject|APIs|EXPERIMENTAL|experimental|removed|will|DEPRECATED|exists|10315|Rev|Mobile|Spidermonkey|Rhino||Browser|delayMozLoadingFix|preventBackButtonFix|libraryScriptUri|baseRelativePath|baseScriptUri|allowQueryConfig|warn|trace|timeEnd||time|profileEnd|profile|log|info|groupEnd|group|dirxml|dir|count|assert'.split('|'),0,{});
+
+
+/*
+
+Prototype 1.5 rc0
+ - Adapted from Ruby on Rails - http://dev.rubyonrails.org/browser/spinoffs/prototype/src
+ - By Lunarmedia, 06 August, 2006
+ - Available at (and packed with) JavascriptCompressor.com
+
+Please note this version is missing the selector.js component of the full Prototype library.
+You can get the compressed version of selector at JavascriptCompressor.com
+
+*/
+
+var decompressedPrototype = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[(function(e){return d[e]})];e=(function(){return'\\w+'});c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('d T={4l:\'1.5.8P\',3E:\'(?:<3G.*?>)((\\n|\\r|.)*?)(?:<\\/3G>)\',2v:7(){},K:7(x){c x}};d 1b={17:7(){c 7(){6.1I.2n(6,N)}}};d 1e=z q();q.u=7(5d,O){G(d 1G 2M O){5d[1G]=O[1G]}c 5d};q.1U=7(U){1j{f(U==1v)c\'1v\';f(U==1L)c\'1L\';c U.1U?U.1U():U.2C()}1s(e){f(e 8R 9l)c\'...\';25 e}};7j.v.1d=7(){d 43=6,23=$A(N),U=23.8S();c 7(){c 43.2n(U,23.3s($A(N)))}};7j.v.8U=7(U){d 43=6;c 7(C){c 43.8V(U,C||1W.C)}};q.u(8Q.v,{8W:7(){d 4Z=6.2C(16);f(6<16)c\'0\'+4Z;c 4Z},5j:7(){c 6+1},8Y:7(o){$R(0,6,11).V(o);c 6}});d 6s={6j:7(){d 48;G(d i=0;i<N.t;i++){d 6L=N[i];1j{48=6L();1y}1s(e){}}c 48}};d 6Q=1b.17();6Q.v={1I:7(1a,1J){6.1a=1a;6.1J=1J;6.41=Y;6.2A()},2A:7(){5Z(6.2D.1d(6),6.1J*4z)},2D:7(){f(!6.41){1j{6.41=11;6.1a()}8Z{6.41=Y}}}};q.u(4b.v,{2T:7(1A,1z){d L=\'\',O=6,I;1z=N.90.52(1z);1H(O.t>0){f(I=O.I(1A)){L+=O.47(0,I.w);L+=(1z(I)||\'\').2C();O=O.47(I.w+I[0].t)}1D{L+=O,O=\'\'}}c L},92:7(1A,1z,3i){1z=6.2T.52(1z);3i=3i===1v?1:3i;c 6.2T(1A,7(I){f(--3i<0)c I[0];c 1z(I)})},93:7(1A,o){6.2T(1A,o);c 6},94:7(t,2S){t=t||30;2S=2S===1v?\'...\':2S;c 6.t>t?6.47(0,t-2S.t)+2S:6},9F:7(){c 6.2y(/^\\s+/,\'\').2y(/\\s+$/,\'\')},71:7(){c 6.2y(/<\\/?[^>]+>/7Y,\'\')},2Q:7(){c 6.2y(z 3O(T.3E,\'5P\'),\'\')},70:7(){d 6Y=z 3O(T.3E,\'5P\');d 5p=z 3O(T.3E,\'98\');c(6.I(6Y)||[]).1C(7(5o){c(5o.I(5p)||[\'\',\'\'])[1]})},3q:7(){c 6.70().1C(7(3G){c 4q(3G)})},9E:7(){d 1q=J.4Y(\'1q\');d 1Y=J.9D(6);1q.75(1Y);c 1q.3h},9c:7(){d 1q=J.4Y(\'1q\');1q.3h=6.71();c 1q.2z[0]?1q.2z[0].6q:\'\'},78:7(){d 7i=6.I(/^\\??(.*)$/)[1].3j(\'&\');c 7i.36({},7(5b,72){d 1i=72.3j(\'=\');5b[1i[0]]=1i[1];c 5b})},1Z:7(){c 6.3j(\'\')},3P:7(){d 2l=6.3j(\'-\');f(2l.t==1)c 2l[0];d 54=6.5g(\'-\')==0?2l[0].7e(0).3Y()+2l[0].7g(1):2l[0];G(d i=1,73=2l.t;i<73;i++){d s=2l[i];54+=s.7e(0).3Y()+s.7g(1)}c 54},1U:7(){c"\'"+6.2y(/\\\\/g,\'\\\\\\\\\').2y(/\'/g,\'\\\\\\\'\')+"\'"}});4b.v.2T.52=7(1z){f(2i 1z==\'7\')c 1z;d 2U=z 3n(1z);c 7(I){c 2U.7a(I)}};4b.v.9h=4b.v.78;d 3n=1b.17();3n.79=/(^|.|\\r|\\n)(#\\{(.*?)\\})/;3n.v={1I:7(2U,1A){6.2U=2U.2C();6.1A=1A||3n.79},7a:7(U){c 6.2U.2T(6.1A,7(I){d 53=I[1];f(53==\'\\\\\')c I[2];c 53+(U[I[3]]||\'\').2C()})}};d $1y=z q();d $49=z q();d 1p={V:7(o){d w=0;1j{6.2m(7(h){1j{o(h,w++)}1s(e){f(e!=$49)25 e}})}1s(e){f(e!=$1y)25 e}},9n:7(o){d L=11;6.V(7(h,w){L=L&&!!(o||T.K)(h,w);f(!L)25 $1y});c L},9o:7(o){d L=11;6.V(7(h,w){f(L=!!(o||T.K)(h,w))25 $1y});c L},3e:7(o){d P=[];6.V(7(h,w){P.W(o(h,w))});c P},7n:7(o){d L;6.V(7(h,w){f(o(h,w)){L=h;25 $1y}});c L},7o:7(o){d P=[];6.V(7(h,w){f(o(h,w))P.W(h)});c P},9p:7(1A,o){d P=[];6.V(7(h,w){d 7c=h.2C();f(7c.I(1A))P.W((o||T.K)(h,w))});c P},1M:7(U){d 51=Y;6.V(7(h){f(h==U){51=11;25 $1y}});c 51},36:7(45,o){6.V(7(h,w){45=o(45,h,w)});c 45},9q:7(1F){d 23=$A(N).47(1);c 6.3e(7(h){c h[1F].2n(h,23)})},9s:7(o){d L;6.V(7(h,w){h=(o||T.K)(h,w);f(L==1v||h>=L)L=h});c L},9u:7(o){d L;6.V(7(h,w){h=(o||T.K)(h,w);f(L==1v||h<L)L=h});c L},9v:7(o){d 50=[],58=[];6.V(7(h,w){((o||T.K)(h,w)?50:58).W(h)});c[50,58]},3r:7(1G){d P=[];6.V(7(h,w){P.W(h[1G])});c P},9x:7(o){d P=[];6.V(7(h,w){f(!o(h,w))P.W(h)});c P},9y:7(o){c 6.3e(7(h,w){c{h:h,59:o(h,w)}}).9z(7(18,3U){d a=18.59,b=3U.59;c a<b?-1:a>b?1:0}).3r(\'h\')},1Z:7(){c 6.3e(T.K)},9B:7(){d o=T.K,23=$A(N);f(2i 23.5e()==\'7\')o=23.9C();d 7l=[6].3s(23).1C($A);c 6.1C(7(h,w){c o(7l.3r(w))})},1U:7(){c\'#<1p:\'+6.1Z().1U()+\'>\'}};q.u(1p,{1C:1p.3e,5v:1p.7n,1k:1p.7o,8M:1p.1M,7p:1p.1Z});d $A=1E.7q=7(2R){f(!2R)c[];f(2R.1Z){c 2R.1Z()}1D{d P=[];G(d i=0;i<2R.t;i++)P.W(2R[i]);c P}};q.u(1E.v,1p);f(!1E.v.4d)1E.v.4d=1E.v.4m;q.u(1E.v,{2m:7(o){G(d i=0;i<6.t;i++)o(6[i])},5i:7(){6.t=0;c 6},7r:7(){c 6[0]},5e:7(){c 6[6.t-1]},7s:7(){c 6.1k(7(h){c h!=1v||h!=1L})},6J:7(){c 6.36([],7(6H,h){c 6H.3s(h&&h.5D==1E?h.6J():[h])})},5s:7(){d 4N=$A(N);c 6.1k(7(h){c!4N.1M(h)})},5g:7(U){G(d i=0;i<6.t;i++)f(6[i]==U)c i;c-1},4m:7(5h){c(5h!==Y?6:6.1Z()).4d()},1U:7(){c\'[\'+6.1C(q.1U).1N(\', \')+\']\'}});d 4h={2m:7(o){G(d 1O 2M 6){d h=6[1O];f(2i h==\'7\')49;d 1i=[1O,h];1i.1O=1O;1i.h=h;o(1i)}},7t:7(){c 6.3r(\'1O\')},4N:7(){c 6.3r(\'h\')},7u:7(2N){c $H(2N).36($H(6),7(4Q,1i){4Q[1i.1O]=1i.h;c 4Q})},7w:7(){c 6.1C(7(1i){c 1i.1C(4n).1N(\'=\')}).1N(\'&\')},1U:7(){c\'#<4h:{\'+6.1C(7(1i){c 1i.1C(q.1U).1N(\': \')}).1N(\', \')+\'}>\'}};7 $H(U){d 2N=q.u({},U||{});q.u(2N,1p);q.u(2N,4h);c 2N};3L=1b.17();q.u(3L.v,1p);q.u(3L.v,{1I:7(22,2x,2H){6.22=22;6.2x=2x;6.2H=2H},2m:7(o){d h=6.22;2q{o(h);h=h.5j()}1H(6.1M(h))},1M:7(h){f(h<6.22)c Y;f(6.2H)c h<6.2x;c h<=6.2x}});d $R=7(22,2x,2H){c z 3L(22,2x,2H)};d M={4w:7(){c 6s.6j(7(){c z 5C()},7(){c z 5n(\'7y.6d\')},7(){c z 5n(\'7z.6d\')})||Y},4s:0};M.2W={3b:[],2m:7(o){6.3b.2m(o)},69:7(4F){f(!6.1M(4F))6.3b.W(4F)},7A:7(5t){6.3b=6.3b.5s(5t)},3y:7(1a,26,E,2Z){6.V(7(3o){f(3o[1a]&&2i 3o[1a]==\'7\'){1j{3o[1a].2n(3o,[26,E,2Z])}1s(e){}}})}};q.u(M.2W,1p);M.2W.69({5G:7(){M.4s++},1B:7(){M.4s--}});M.44=7(){};M.44.v={4a:7(m){6.m={1F:\'4j\',4p:11,5H:\'5E/x-86-Q-7C\',28:\'\'};q.u(6.m,m||{})},3l:7(){c 6.E.32==1v||6.E.32==0||(6.E.32>=84&&6.E.32<7E)},7G:7(){c!6.3l()}};M.3t=1b.17();M.3t.5L=[\'7H\',\'80\',\'7I\',\'7J\',\'4t\'];M.3t.v=q.u(z M.44(),{1I:7(1l,m){6.E=M.4w();6.4a(m);6.26(1l)},26:7(1l){d 28=6.m.28||\'\';f(28.t>0)28+=\'&7K=\';1j{6.1l=1l;f(6.m.1F==\'7L\'&&28.t>0)6.1l+=(6.1l.I(/\\?/)?\'&\':\'?\')+28;M.2W.3y(\'5G\',6,6.E);6.E.7N(6.m.1F,6.1l,6.m.4p);f(6.m.4p){6.E.5T=6.5J.1d(6);2Y((7(){6.4r(1)}).1d(6),10)}6.5A();d 1c=6.m.5V?6.m.5V:28;6.E.7O(6.m.1F==\'4j\'?1c:1L)}1s(e){6.3p(e)}},5A:7(){d 1P=[\'X-7P-7Q\',\'5C\',\'X-T-4l\',T.4l,\'7R\',\'1Y/7m, 1Y/2e, 5E/5F, 1Y/5F, */*\'];f(6.m.1F==\'4j\'){1P.W(\'5Q-2g\',6.m.5H);f(6.E.7S)1P.W(\'7T\',\'7U\')}f(6.m.1P)1P.W.2n(1P,6.m.1P);G(d i=0;i<1P.t;i+=2)6.E.7V(1P[i],1P[i+1])},5J:7(){d 2F=6.E.2F;f(2F!=1)6.4r(6.E.2F)},4A:7(B){1j{c 6.E.7W(B)}1s(e){}},5M:7(){1j{c 4q(\'(\'+6.4A(\'X-7X\')+\')\')}1s(e){}},5R:7(){1j{c 4q(6.E.3F)}1s(e){6.3p(e)}},4r:7(2F){d C=M.3t.5L[2F];d E=6.E,2Z=6.5M();f(C==\'4t\'){1j{(6.m[\'2I\'+6.E.32]||6.m[\'2I\'+(6.3l()?\'81\':\'82\')]||T.2v)(E,2Z)}1s(e){6.3p(e)}f((6.4A(\'5Q-2g\')||\'\').I(/^1Y\\/7m/i))6.5R()}1j{(6.m[\'2I\'+C]||T.2v)(E,2Z);M.2W.3y(\'2I\'+C,6,E,2Z)}1s(e){6.3p(e)}f(C==\'4t\')6.E.5T=T.2v},3p:7(57){(6.m.5W||T.2v)(6,57);M.2W.3y(\'5W\',6,57)}});M.4C=1b.17();q.u(q.u(M.4C.v,M.3t.v),{1I:7(1w,1l,m){6.4x={3m:1w.3m?$(1w.3m):$(1w),3z:1w.3z?$(1w.3z):(1w.3m?1L:$(1w))};6.E=M.4w();6.4a(m);d 1B=6.m.1B||T.2v;6.m.1B=(7(E,U){6.5Y();1B(E,U)}).1d(6);6.26(1l)},5Y:7(){d 3A=6.3l()?6.4x.3m:6.4x.3z;d 3k=6.E.3F;f(!6.m.3q)3k=3k.2Q();f(3A){f(6.m.60){z 6.m.60(3A,3k)}1D{k.6h(3A,3k)}}f(6.3l()){f(6.1B)2Y(6.1B.1d(6),10)}}});M.61=1b.17();M.61.v=q.u(z M.44(),{1I:7(1w,1l,m){6.4a(m);6.1B=6.m.1B;6.1J=(6.m.1J||2);6.2s=(6.m.2s||1);6.4B={};6.1w=1w;6.1l=1l;6.22()},22:7(){6.m.1B=6.63.1d(6);6.2D()},7b:7(){6.4B.1B=1v;89(6.65);(6.1B||T.2v).2n(6,N)},63:7(26){f(6.m.2s){6.2s=(26.3F==6.64?6.2s*6.m.2s:1);6.64=26.3F}6.65=2Y(6.2D.1d(6),6.2s*6.1J*4z)},2D:7(){6.4B=z M.4C(6.1w,6.1l,6.m)}});7 $(){d P=[],4;G(d i=0;i<N.t;i++){4=N[i];f(2i 4==\'8c\')4=J.8d(4);P.W(k.u(4))}c P.t<2?P[0]:P};J.8f=7(1f,6a){d 6b=($(6a)||J.1c).4D(\'*\');c $A(6b).36([],7(12,4E){f(4E.1f.I(z 3O("(^|\\\\s)"+1f+"(\\\\s|$)")))12.W(k.u(4E));c 12})};f(!1W.k)d k=z q();k.u=7(4){f(!4)c;f(4X)c 4;f(!4.6e&&4.1h&&4!=1W){d 2a=k.3d,2r=k.u.2r;G(d 1G 2M 2a){d h=2a[1G];f(2i h==\'7\')4[1G]=2r.4W(h)}}4.6e=11;c 4};k.u.2r={4W:7(h){c 6[h]=6[h]||7(){c h.2n(1L,[6].3s($A(N)))}}};k.3d={4U:7(4){c $(4).l.2B!=\'3Q\'},6N:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);k[k.4U(4)?\'6f\':\'6w\'](4)}},6f:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);4.l.2B=\'3Q\'}},6w:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);4.l.2B=\'\'}},42:7(4){4=$(4);4.1X.8h(4)},6h:7(4,2e){$(4).3h=2e.2Q();2Y(7(){2e.3q()},10)},2y:7(4,2e){4=$(4);f(4.6k){4.6k=2e.2Q()}1D{d 1K=4.6R.6S();1K.56(4);4.1X.8i(1K.6T(2e.2Q()),4)}2Y(7(){2e.3q()},10)},8k:7(4){4=$(4);c 4.2k},3K:7(4){c z k.3S(4)},8l:7(4,1f){f(!(4=$(4)))c;c k.3K(4).1M(1f)},8m:7(4,1f){f(!(4=$(4)))c;c k.3K(4).7k(1f)},8n:7(4,1f){f(!(4=$(4)))c;c k.3K(4).42(1f)},8p:7(4){4=$(4);G(d i=0;i<4.2z.t;i++){d 3M=4.2z[i];f(3M.8q==3&&!/\\S/.4v(3M.6q))k.42(3M)}},8r:7(4){c $(4).3h.I(/^\\s*$/)},8s:7(4,3I){4=$(4),3I=$(3I);1H(4=4.1X)f(4==3I)c 11;c Y},6t:7(4){4=$(4);d x=4.x?4.x:4.2f,y=4.y?4.y:4.29;1W.6t(x,y)},1R:7(4,l){4=$(4);d h=4.l[l.3P()];f(!h){f(J.4J&&J.4J.6v){d 4L=J.4J.6v(4,1L);h=4L?4L.8v(l):1L}1D f(4.6x){h=4.6x[l.3P()]}}f(1W.6E&&[\'18\',\'1n\',\'3U\',\'6G\'].1M(l))f(k.1R(4,\'14\')==\'4G\')h=\'6y\';c h==\'6y\'?1L:h},8x:7(4,l){4=$(4);G(d B 2M l)4.l[B.3P()]=l[B]},8y:7(4){4=$(4);f(k.1R(4,\'2B\')!=\'3Q\')c{21:4.2p,24:4.2k};d 20=4.l;d 6B=20.4O;d 6A=20.14;20.4O=\'31\';20.14=\'2o\';20.2B=\'\';d 6C=4.6m;d 6D=4.6p;20.2B=\'3Q\';20.14=6A;20.4O=6B;c{21:6C,24:6D}},8z:7(4){4=$(4);d 4R=k.1R(4,\'14\');f(4R==\'4G\'||!4R){4.4T=11;4.l.14=\'3T\';f(1W.6E){4.l.1n=0;4.l.18=0}}},8A:7(4){4=$(4);f(4.4T){4.4T=1v;4.l.14=4.l.1n=4.l.18=4.l.6G=4.l.3U=\'\'}},8B:7(4){4=$(4);f(4.3c)c;4.3c=4.l.3V;f((k.1R(4,\'3V\')||\'4U\')!=\'31\')4.l.3V=\'31\'},8D:7(4){4=$(4);f(4.3c)c;4.l.3V=4.3c;4.3c=1v}};q.u(k,k.3d);d 4X=Y;f(!3W&&/3x|3w|3u/.4v(33.62)){d 3W={}};k.6K=7(2a){q.u(k.3d,2a||{});f(2i 3W!=\'1v\'){d 2a=k.3d,2r=k.u.2r;G(d 1G 2M 2a){d h=2a[1G];f(2i h==\'7\')3W.v[1G]=2r.4W(h)}4X=11}};k.6K();d 6M=z q();6M.2B=k.6N;1e.1g=7(3f){6.3f=3f};1e.1g.v={1I:7(4,2t){6.4=$(4);6.2t=2t.2Q();f(6.3f&&6.4.6O){1j{6.4.6O(6.3f,6.2t)}1s(e){d 1h=6.4.1h.2w();f(1h==\'4V\'||1h==\'8N\'){6.2X(6.6U())}1D{25 e}}}1D{6.1K=6.4.6R.6S();f(6.2V)6.2V();6.2X([6.1K.6T(6.2t)])}2Y(7(){2t.3q()},10)},6U:7(){d 1q=J.4Y(\'1q\');1q.3h=\'<6V><4V>\'+6.2t+\'</4V></6V>\';c $A(1q.2z[0].2z[0].2z)}};d 1g=z q();1g.6W=1b.17();1g.6W.v=q.u(z 1e.1g(\'96\'),{2V:7(){6.1K.97(6.4)},2X:7(2h){2h.V((7(2j){6.4.1X.55(2j,6.4)}).1d(6))}});1g.5m=1b.17();1g.5m.v=q.u(z 1e.1g(\'99\'),{2V:7(){6.1K.56(6.4);6.1K.74(11)},2X:7(2h){2h.4m(Y).V((7(2j){6.4.55(2j,6.4.9a)}).1d(6))}});1g.7h=1b.17();1g.7h.v=q.u(z 1e.1g(\'9d\'),{2V:7(){6.1K.56(6.4);6.1K.74(6.4)},2X:7(2h){2h.V((7(2j){6.4.75(2j)}).1d(6))}});1g.76=1b.17();1g.76.v=q.u(z 1e.1g(\'9i\'),{2V:7(){6.1K.9m(6.4)},2X:7(2h){2h.V((7(2j){6.4.1X.55(2j,6.4.9t)}).1d(6))}});k.3S=1b.17();k.3S.v={1I:7(4){6.4=$(4)},2m:7(o){6.4.1f.3j(/\\s+/).1k(7(B){c B.t>0}).2m(o)},5c:7(1f){6.4.1f=1f},7k:7(5a){f(6.1M(5a))c;6.5c(6.1Z().3s(5a).1N(\' \'))},42:7(4c){f(!6.1M(4c))c;6.5c(6.1k(7(1f){c 1f!=4c}).1N(\' \'))},2C:7(){c 6.1Z().1N(\' \')}};q.u(k.3S.v,1p);d 5I={5i:7(){G(d i=0;i<N.t;i++)$(N[i]).h=\'\'},4f:7(4){$(4).4f()},7v:7(){G(d i=0;i<N.t;i++)f($(N[i]).h==\'\')c Y;c 11},1k:7(4){$(4).1k()},5y:7(4){4=$(4);4.4f();f(4.1k)4.1k()}};d D={3a:7(Q){d 12=D.2L($(Q));d 4I=z 1E();G(d i=0;i<12.t;i++){d 4g=D.k.3a(12[i]);f(4g)4I.W(4g)}c 4I.1N(\'&\')},2L:7(Q){Q=$(Q);d 12=z 1E();G(d 1h 2M D.k.2E){d 4H=Q.4D(1h);G(d j=0;j<4H.t;j++)12.W(4H[j])}c 12},7x:7(Q,3N,B){Q=$(Q);d 3H=Q.4D(\'2u\');f(!3N&&!B)c 3H;d 4y=z 1E();G(d i=0;i<3H.t;i++){d 2u=3H[i];f((3N&&2u.2g!=3N)||(B&&2u.B!=B))49;4y.W(2u)}c 4y},7B:7(Q){d 12=D.2L(Q);G(d i=0;i<12.t;i++){d 4=12[i];4.7D();4.4o=\'11\'}},7F:7(Q){d 12=D.2L(Q);G(d i=0;i<12.t;i++){d 4=12[i];4.4o=\'\'}},5z:7(Q){c D.2L(Q).5v(7(4){c 4.2g!=\'31\'&&!4.4o&&[\'2u\',\'1k\',\'3J\'].1M(4.1h.2w())})},7M:7(Q){5I.5y(D.5z(Q))},5w:7(Q){$(Q).5w()}};D.k={3a:7(4){4=$(4);d 1F=4.1h.2w();d 1S=D.k.2E[1F](4);f(1S){d 1O=4n(1S[0]);f(1O.t==0)c;f(1S[1].5D!=1E)1S[1]=[1S[1]];c 1S[1].1C(7(h){c 1O+\'=\'+4n(h)}).1N(\'&\')}},1x:7(4){4=$(4);d 1F=4.1h.2w();d 1S=D.k.2E[1F](4);f(1S)c 1S[1]}};D.k.2E={2u:7(4){6c(4.2g.2w()){1r\'7Z\':1r\'31\':1r\'6l\':1r\'1Y\':c D.k.2E.3J(4);1r\'6g\':1r\'6i\':c D.k.2E.5O(4)}c Y},5O:7(4){f(4.83)c[4.B,4.h]},3J:7(4){c[4.B,4.h]},1k:7(4){c D.k.2E[4.2g==\'1k-6n\'?\'5S\':\'5X\'](4)},5S:7(4){d h=\'\',2b,w=4.85;f(w>=0){2b=4.m[w];h=2b.h||2b.1Y}c[4.B,h]},5X:7(4){d h=[];G(d i=0;i<4.t;i++){d 2b=4.m[i];f(2b.87)h.W(2b.h||2b.1Y)}c[4.B,h]}};d $F=D.k.1x;1e.3D=7(){};1e.3D.v={1I:7(4,1J,1a){6.1J=1J;6.4=$(4);6.1a=1a;6.2K=6.1x();6.2A()},2A:7(){5Z(6.2D.1d(6),6.1J*4z)},2D:7(){d h=6.1x();f(6.2K!=h){6.1a(6.4,h);6.2K=h}}};D.k.3C=1b.17();D.k.3C.v=q.u(z 1e.3D(),{1x:7(){c D.k.1x(6.4)}});D.3C=1b.17();D.3C.v=q.u(z 1e.3D(),{1x:7(){c D.3a(6.4)}});1e.2c=7(){};1e.2c.v={1I:7(4,1a){6.4=$(4);6.1a=1a;6.2K=6.1x();f(6.4.1h.2w()==\'Q\')6.67();1D 6.2A(6.4)},4K:7(){d h=6.1x();f(6.2K!=h){6.1a(6.4,h);6.2K=h}},67:7(){d 12=D.2L(6.4);G(d i=0;i<12.t;i++)6.2A(12[i])},2A:7(4){f(4.2g){6c(4.2g.2w()){1r\'6g\':1r\'6i\':1o.3B(4,\'8j\',6.4K.1d(6));1y;1r\'6l\':1r\'1Y\':1r\'3J\':1r\'1k-6n\':1r\'1k-8t\':1o.3B(4,\'8u\',6.4K.1d(6));1y}}}};D.k.2c=1b.17();D.k.2c.v=q.u(z 1e.2c(),{1x:7(){c D.k.1x(6.4)}});D.2c=1b.17();D.2c.v=q.u(z 1e.2c(),{1x:7(){c D.3a(6.4)}});f(!1W.1o){d 1o=z q()}q.u(1o,{8C:8,8F:9,8H:13,8I:27,8J:37,8L:38,8O:39,8T:40,8X:46,4:7(C){c C.Z||C.91},95:7(C){c(((C.6X)&&(C.6X==1))||((C.6Z)&&(C.6Z==1)))},9b:7(C){c C.9e||(C.9f+(J.3R.2G||J.1c.2G))},9g:7(C){c C.9j||(C.9k+(J.3R.2O||J.1c.2O))},7b:7(C){f(C.7d){C.7d();C.9r()}1D{C.48=Y;C.9w=11}},9A:7(C,1h){d 4=1o.4(C);1H(4.1X&&(!4.1h||(4.1h.3Y()!=1h.3Y())))4=4.1X;c 4},1T:Y,5u:7(4,B,1V,1u){f(!6.1T)6.1T=[];f(4.5f){6.1T.W([4,B,1V,1u]);4.5f(B,1V,1u)}1D f(4.4i){6.1T.W([4,B,1V,1u]);4.4i(\'2I\'+B,1V)}},66:7(){f(!1o.1T)c;G(d i=0;i<1o.1T.t;i++){1o.5N.2n(6,1o.1T[i]);1o.1T[i][0]=1L}1o.1T=Y},3B:7(4,B,1V,1u){d 4=$(4);1u=1u||Y;f(B==\'5U\'&&(33.4u.I(/3x|3w|3u/)||4.4i))B=\'5K\';6.5u(4,B,1V,1u)},5N:7(4,B,1V,1u){d 4=$(4);1u=1u||Y;f(B==\'5U\'&&(33.4u.I(/3x|3w|3u/)||4.4k))B=\'5K\';f(4.5x){4.5x(B,1V,1u)}1D f(4.4k){1j{4.4k(\'2I\'+B,1V)}1s(e){}}}});f(33.4u.I(/\\88\\b/))1o.3B(1W,\'8a\',1o.66,Y);d 2d={6o:Y,4P:7(){6.6z=1W.8e||J.3R.2G||J.1c.2G||0;6.6F=1W.8g||J.3R.2O||J.1c.2O||0},6u:7(4){d 19=0,15=0;2q{19+=4.2O||0;15+=4.2G||0;4=4.1X}1H(4);c[15,19]},35:7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;4=4.1Q}1H(4);c[15,19]},68:7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;4=4.1Q;f(4){p=k.1R(4,\'14\');f(p==\'3T\'||p==\'2o\')1y}}1H(4);c[15,19]},1Q:7(4){f(4.1Q)c 4.1Q;f(4==J.1c)c 4;1H((4=4.1X)&&4!=J.1c)f(k.1R(4,\'14\')!=\'4G\')c 4;c J.1c},8o:7(4,x,y){f(6.6o)c 6.6r(4,x,y);6.3g=x;6.34=y;6.1t=6.35(4);c(y>=6.1t[1]&&y<6.1t[1]+4.2k&&x>=6.1t[0]&&x<6.1t[0]+4.2p)},6r:7(4,x,y){d 4S=6.6u(4);6.3g=x+4S[0]-6.6z;6.34=y+4S[1]-6.6F;6.1t=6.35(4);c(6.34>=6.1t[1]&&6.34<6.1t[1]+4.2k&&6.3g>=6.1t[0]&&6.3g<6.1t[0]+4.2p)},8E:7(3Z,4){f(!3Z)c 0;f(3Z==\'8G\')c((6.1t[1]+4.2k)-6.34)/4.2k;f(3Z==\'8K\')c((6.1t[0]+4.2p)-6.3g)/4.2p},77:7(O,Z){O=$(O);Z=$(Z);Z.l.14=\'2o\';d 2P=6.35(O);Z.l.1n=2P[1]+\'1m\';Z.l.18=2P[0]+\'1m\';Z.l.21=O.2p+\'1m\';Z.l.24=O.2k+\'1m\'},4e:7(4M){d 19=0,15=0;d 4=4M;2q{19+=4.29||0;15+=4.2f||0;f(4.1Q==J.1c)f(k.1R(4,\'14\')==\'2o\')1y}1H(4=4.1Q);4=4M;2q{19-=4.2O||0;15-=4.2G||0}1H(4=4.1X);c[15,19]},77:7(O,Z){d m=q.u({5l:11,5r:11,5B:11,5q:11,29:0,2f:0},N[2]||{});O=$(O);d p=2d.4e(O);Z=$(Z);d 2J=[0,0];d 3v=1L;f(k.1R(Z,\'14\')==\'2o\'){3v=2d.1Q(Z);2J=2d.4e(3v)}f(3v==J.1c){2J[0]-=J.1c.2f;2J[1]-=J.1c.29}f(m.5l)Z.l.18=(p[0]-2J[0]+m.2f)+\'1m\';f(m.5r)Z.l.1n=(p[1]-2J[1]+m.29)+\'1m\';f(m.5B)Z.l.21=O.2p+\'1m\';f(m.5q)Z.l.24=O.2k+\'1m\'},8b:7(4){4=$(4);f(4.l.14==\'2o\')c;2d.4P();d 2P=2d.68(4);d 1n=2P[1];d 18=2P[0];d 21=4.6m;d 24=4.6p;4.6P=18-3X(4.l.18||0);4.6I=1n-3X(4.l.1n||0);4.5k=4.l.21;4.7f=4.l.24;4.l.14=\'2o\';4.l.1n=1n+\'1m\';4.l.18=18+\'1m\';4.l.21=21+\'1m\';4.l.24=24+\'1m\'},8w:7(4){4=$(4);f(4.l.14==\'3T\')c;2d.4P();4.l.14=\'3T\';d 1n=3X(4.l.1n||0)-(4.6I||0);d 18=3X(4.l.18||0)-(4.6P||0);4.l.1n=1n+\'1m\';4.l.18=18+\'1m\';4.l.24=4.7f;4.l.21=4.5k}};f(/3x|3w|3u/.4v(33.62)){2d.35=7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;f(4.1Q==J.1c)f(k.1R(4,\'14\')==\'2o\')1y;4=4.1Q}1H(4);c[15,19]}};',62,600,'||||element||this|function|||||return|var||if||value|||Element|style|options||iterator||Object|||length|extend|prototype|index|||new||name|event|Form|transport||for||match|document||result|Ajax|arguments|source|results|form|||Prototype|object|each|push||false|target||true|elements||position|valueL||create|left|valueT|callback|Class|body|bind|Abstract|className|Insertion|tagName|pair|try|select|url|px|top|Event|Enumerable|div|case|catch|offset|useCapture|undefined|container|getValue|break|replacement|pattern|onComplete|map|else|Array|method|property|while|initialize|frequency|range|null|include|join|key|requestHeaders|offsetParent|getStyle|parameter|observers|inspect|observer|window|parentNode|text|toArray|els|width|start|args|height|throw|request||parameters|offsetTop|methods|opt|EventObserver|Position|html|offsetLeft|type|fragments|typeof|fragment|offsetHeight|oStringList|_each|apply|absolute|offsetWidth|do|cache|decay|content|input|emptyFunction|toLowerCase|end|replace|childNodes|registerCallback|display|toString|onTimerEvent|Serializers|readyState|scrollLeft|exclusive|on|delta|lastValue|getElements|in|hash|scrollTop|offsets|stripScripts|iterable|truncation|gsub|template|initializeRange|Responders|insertContent|setTimeout|json||hidden|status|navigator|ycomp|cumulativeOffset|inject||||serialize|responders|_overflow|Methods|collect|adjacency|xcomp|innerHTML|count|split|response|responseIsSuccess|success|Template|responder|dispatchException|evalScripts|pluck|concat|Request|KHTML|parent|Safari|Konqueror|dispatch|failure|receiver|observe|Observer|TimedObserver|ScriptFragment|responseText|script|inputs|ancestor|textarea|classNames|ObjectRange|node|typeName|RegExp|camelize|none|documentElement|ClassNames|relative|right|overflow|HTMLElement|parseFloat|toUpperCase|mode||currentlyExecuting|remove|__method|Base|memo||slice|returnValue|continue|setOptions|String|classNameToRemove|_reverse|page|focus|queryComponent|Hash|attachEvent|post|detachEvent|Version|reverse|encodeURIComponent|disabled|asynchronous|eval|respondToReadyState|activeRequestCount|Complete|appVersion|test|getTransport|containers|matchingInputs|1000|header|updater|Updater|getElementsByTagName|child|responderToAdd|static|tagElements|queryComponents|defaultView|onElementEvent|css|forElement|values|visibility|prepare|mergedHash|pos|offsetcache|_madePositioned|visible|tbody|findOrStore|_nativeExtensions|createElement|digits|trues|found|prepareReplacement|before|camelizedString|insertBefore|selectNodeContents|exception|falses|criteria|classNameToAdd|params|set|destination|last|addEventListener|indexOf|inline|clear|succ|_originalWidth|setLeft|Top|ActiveXObject|scriptTag|matchOne|setHeight|setTop|without|responderToRemove|_observeAndCache|find|reset|removeEventListener|activate|findFirstElement|setRequestHeaders|setWidth|XMLHttpRequest|constructor|application|xml|onCreate|contentType|Field|onStateChange|keydown|Events|evalJSON|stopObserving|inputSelector|img|Content|evalResponse|selectOne|onreadystatechange|keypress|postBody|onException|selectMany|updateContent|setInterval|insertion|PeriodicalUpdater|userAgent|updateComplete|lastText|timer|unloadCache|registerFormCallbacks|positionedOffset|register|parentElement|children|switch|XMLHTTP|_extended|hide|checkbox|update|radio|these|outerHTML|password|clientWidth|one|includeScrollOffsets|clientHeight|nodeValue|withinIncludingScrolloffsets|Try|scrollTo|realOffset|getComputedStyle|show|currentStyle|auto|deltaX|originalPosition|originalVisibility|originalWidth|originalHeight|opera|deltaY|bottom|array|_originalTop|flatten|addMethods|lambda|Toggle|toggle|insertAdjacentHTML|_originalLeft|PeriodicalExecuter|ownerDocument|createRange|createContextualFragment|contentFromAnonymousTable|table|Before|which|matchAll|button|extractScripts|stripTags|pairString|len|collapse|appendChild|After|clone|toQueryParams|Pattern|evaluate|stop|stringValue|preventDefault|charAt|_originalHeight|substring|Bottom|pairs|Function|add|collections|javascript|detect|findAll|entries|from|first|compact|keys|merge|present|toQueryString|getInputs|Msxml2|Microsoft|unregister|disable|urlencoded|blur|300|enable|responseIsFailure|Uninitialized|Loaded|Interactive|_|get|focusFirstElement|open|send|Requested|With|Accept|overrideMimeType|Connection|close|setRequestHeader|getResponseHeader|JSON|gi|submit|Loading|Success|Failure|checked|200|selectedIndex|www|selected|bMSIE|clearTimeout|unload|absolutize|string|getElementById|pageXOffset|getElementsByClassName|pageYOffset|removeChild|replaceChild|click|getHeight|hasClassName|addClassName|removeClassName|within|cleanWhitespace|nodeType|empty|childOf|multiple|change|getPropertyValue|relativize|setStyle|getDimensions|makePositioned|undoPositioned|makeClipping|KEY_BACKSPACE|undoClipping|overlap|KEY_TAB|vertical|KEY_RETURN|KEY_ESC|KEY_LEFT|horizontal|KEY_UP|member|tr|KEY_RIGHT|0_RC_0|Number|instanceof|shift|KEY_DOWN|bindAsEventListener|call|toColorPart|KEY_DELETE|times|finally|callee|srcElement|sub|scan|truncate|isLeftClick|beforeBegin|setStartBefore|im|afterBegin|firstChild|pointerX|unescapeHTML|beforeEnd|pageX|clientX|pointerY|parseQuery|afterEnd|pageY|clientY|RangeError|setStartAfter|all|any|grep|invoke|stopPropagation|max|nextSibling|min|partition|cancelBubble|reject|sortBy|sort|findElement|zip|pop|createTextNode|escapeHTML|strip'.split('|'),0,{})
+
+} \ No newline at end of file
diff --git a/tests/benchmarks/script/sunspider/tests/string-validate-input.js b/tests/benchmarks/script/sunspider/tests/string-validate-input.js
new file mode 100644
index 0000000000..3455b3208d
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/string-validate-input.js
@@ -0,0 +1,89 @@
+letters = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
+numbers = new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26);
+colors = new Array("FF","CC","99","66","33","00");
+
+var endResult;
+
+function doTest()
+{
+ endResult = "";
+
+ // make up email address
+ for (var k=0;k<4000;k++)
+ {
+ name = makeName(6);
+ (k%2)?email=name+"@mac.com":email=name+"(at)mac.com";
+
+ // validate the email address
+ var pattern = /^[a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-_]+(\.?[a-zA-Z0-9\-_]*)\.[a-zA-Z]{2,3}$/;
+
+ if(pattern.test(email))
+ {
+ var r = email + " appears to be a valid email address.";
+ addResult(r);
+ }
+ else
+ {
+ r = email + " does NOT appear to be a valid email address.";
+ addResult(r);
+ }
+ }
+
+ // make up ZIP codes
+ for (var s=0;s<4000;s++)
+ {
+ var zipGood = true;
+ var zip = makeNumber(4);
+ (s%2)?zip=zip+"xyz":zip=zip.concat("7");
+
+ // validate the zip code
+ for (var i = 0; i < zip.length; i++) {
+ var ch = zip.charAt(i);
+ if (ch < "0" || ch > "9") {
+ zipGood = false;
+ r = zip + " contains letters.";
+ addResult(r);
+ }
+ }
+ if (zipGood && zip.length>5)
+ {
+ zipGood = false;
+ r = zip + " is longer than five characters.";
+ addResult(r);
+ }
+ if (zipGood)
+ {
+ r = zip + " appears to be a valid ZIP code.";
+ addResult(r);
+ }
+ }
+}
+
+function makeName(n)
+{
+ var tmp = "";
+ for (var i=0;i<n;i++)
+ {
+ var l = Math.floor(26*Math.random());
+ tmp += letters[l];
+ }
+ return tmp;
+}
+
+function makeNumber(n)
+{
+ var tmp = "";
+ for (var i=0;i<n;i++)
+ {
+ var l = Math.floor(9*Math.random());
+ tmp = tmp.concat(l);
+ }
+ return tmp;
+}
+
+function addResult(r)
+{
+ endResult += "\n" + r;
+}
+
+doTest();
diff --git a/tests/benchmarks/script/sunspider/tst_sunspider.cpp b/tests/benchmarks/script/sunspider/tst_sunspider.cpp
new file mode 100644
index 0000000000..7a8617ace1
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tst_sunspider.cpp
@@ -0,0 +1,129 @@
+/****************************************************************************
+**
+** 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 <qtest.h>
+#include <QtCore/qdir.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qtextstream.h>
+#include <QtScript/qscriptengine.h>
+#include <QtScript/qscriptvalue.h>
+
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR ""
+#endif
+
+//TESTED_FILES=
+
+static QString readFile(const QString &filename)
+{
+ QFile file(filename);
+ if (!file.open(QFile::ReadOnly))
+ return QString();
+ QTextStream stream(&file);
+ stream.setCodec("UTF-8");
+ return stream.readAll();
+}
+
+class tst_SunSpider : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_SunSpider();
+ virtual ~tst_SunSpider();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void benchmark_data();
+ void benchmark();
+
+private:
+ QDir testsDir;
+};
+
+tst_SunSpider::tst_SunSpider()
+{
+ testsDir = QDir(SRCDIR);
+ bool testsFound = testsDir.cd("tests");
+ if (!testsFound)
+ qWarning("*** no tests/ dir!");
+}
+
+tst_SunSpider::~tst_SunSpider()
+{
+}
+
+void tst_SunSpider::init()
+{
+}
+
+void tst_SunSpider::cleanup()
+{
+}
+
+void tst_SunSpider::benchmark_data()
+{
+ QTest::addColumn<QString>("testName");
+ QFileInfoList testFileInfos = testsDir.entryInfoList(QStringList() << "*.js", QDir::Files);
+ foreach (QFileInfo tfi, testFileInfos) {
+ QString name = tfi.baseName();
+ QTest::newRow(name.toLatin1().constData()) << name;
+ }
+}
+
+void tst_SunSpider::benchmark()
+{
+ QFETCH(QString, testName);
+ QString testContents = readFile(testsDir.absoluteFilePath(testName + ".js"));
+ QVERIFY(!testContents.isEmpty());
+
+ QScriptEngine engine;
+ QBENCHMARK {
+ engine.evaluate(testContents);
+ }
+ QVERIFY(!engine.hasUncaughtException());
+}
+
+QTEST_MAIN(tst_SunSpider)
+#include "tst_sunspider.moc"
diff --git a/tests/benchmarks/script/v8/tests/README.txt b/tests/benchmarks/script/v8/tests/README.txt
new file mode 100644
index 0000000000..6676f37556
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/README.txt
@@ -0,0 +1,79 @@
+V8 Benchmark Suite
+==================
+
+This is the V8 benchmark suite: A collection of pure JavaScript
+benchmarks that we have used to tune V8. The licenses for the
+individual benchmarks are included in the JavaScript files.
+
+In addition to the benchmarks, the suite consists of the benchmark
+framework (base.js), which must be loaded before any of the individual
+benchmark files, and two benchmark runners: An HTML version (run.html)
+and a standalone JavaScript version (run.js).
+
+
+Changes From Version 1 To Version 2
+===================================
+
+For version 2 the crypto benchmark was fixed. Previously, the
+decryption stage was given plaintext as input, which resulted in an
+error. Now, the decryption stage is given the output of the
+encryption stage as input. The result is checked against the original
+plaintext. For this to give the correct results the crypto objects
+are reset for each iteration of the benchmark. In addition, the size
+of the plain text has been increased a little and the use of
+Math.random() and new Date() to build an RNG pool has been removed.
+
+Other benchmarks were fixed to do elementary verification of the
+results of their calculations. This is to avoid accidentally
+obtaining scores that are the result of an incorrect JavaScript engine
+optimization.
+
+
+Changes From Version 2 To Version 3
+===================================
+
+Version 3 adds a new benchmark, RegExp. The RegExp benchmark is
+generated by loading 50 of the most popular pages on the web and
+logging all regexp operations performed. Each operation is given a
+weight that is calculated from an estimate of the popularity of the
+pages where it occurs and the number of times it is executed while
+loading each page. Finally the literal letters in the data are
+encoded using ROT13 in a way that does not affect how the regexps
+match their input.
+
+
+Changes from Version 3 to Version 4
+===================================
+
+The Splay benchmark is a newcomer in version 4. It manipulates a
+splay tree by adding and removing data nodes, thus exercising the
+memory management subsystem of the JavaScript engine.
+
+Furthermore, all the unused parts of the Prototype library were
+removed from the RayTrace benchmark. This does not affect the running
+of the benchmark.
+
+
+Changes from Version 4 to Version 5
+===================================
+
+Removed duplicate line in random seed code, and changed the name of
+the Object.prototype.inherits function in the DeltaBlue benchmark to
+inheritsFrom to avoid name clashes when running in Chromium with
+extensions enabled.
+
+
+Changes from Version 5 to Version 6
+===================================
+
+Removed dead code from the RayTrace benchmark and fixed a couple of
+typos in the DeltaBlue implementation. Changed the Splay benchmark to
+avoid converting the same numeric key to a string over and over again
+and to avoid inserting and removing the same element repeatedly thus
+increasing pressure on the memory subsystem. Changed the RegExp
+benchmark to exercise the regular expression engine on different
+input strings.
+
+Furthermore, the benchmark runner was changed to run the benchmarks
+for at least a few times to stabilize the reported numbers on slower
+machines.
diff --git a/tests/benchmarks/script/v8/tests/base.js b/tests/benchmarks/script/v8/tests/base.js
new file mode 100644
index 0000000000..ffabf24dda
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/base.js
@@ -0,0 +1,284 @@
+// Copyright 2008 the V8 project authors. All rights reserved.
+// 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 Google Inc. 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.
+
+
+// Simple framework for running the benchmark suites and
+// computing a score based on the timing measurements.
+
+
+// A benchmark has a name (string) and a function that will be run to
+// do the performance measurement. The optional setup and tearDown
+// arguments are functions that will be invoked before and after
+// running the benchmark, but the running time of these functions will
+// not be accounted for in the benchmark score.
+function Benchmark(name, run, setup, tearDown) {
+ this.name = name;
+ this.run = run;
+ this.Setup = setup ? setup : function() { };
+ this.TearDown = tearDown ? tearDown : function() { };
+}
+
+
+// Benchmark results hold the benchmark and the measured time used to
+// run the benchmark. The benchmark score is computed later once a
+// full benchmark suite has run to completion.
+function BenchmarkResult(benchmark, time) {
+ this.benchmark = benchmark;
+ this.time = time;
+}
+
+
+// Automatically convert results to numbers. Used by the geometric
+// mean computation.
+BenchmarkResult.prototype.valueOf = function() {
+ return this.time;
+}
+
+
+// Suites of benchmarks consist of a name and the set of benchmarks in
+// addition to the reference timing that the final score will be based
+// on. This way, all scores are relative to a reference run and higher
+// scores implies better performance.
+function BenchmarkSuite(name, reference, benchmarks) {
+ this.name = name;
+ this.reference = reference;
+ this.benchmarks = benchmarks;
+ BenchmarkSuite.suites.push(this);
+}
+
+
+// Keep track of all declared benchmark suites.
+BenchmarkSuite.suites = [];
+
+
+// Scores are not comparable across versions. Bump the version if
+// you're making changes that will affect that scores, e.g. if you add
+// a new benchmark or change an existing one.
+BenchmarkSuite.version = '6';
+
+
+// To make the benchmark results predictable, we replace Math.random
+// with a 100% deterministic alternative.
+Math.random = (function() {
+ var seed = 49734321;
+ return function() {
+ // Robert Jenkins' 32 bit integer hash function.
+ seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff;
+ seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff;
+ seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff;
+ seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff;
+ seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff;
+ seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff;
+ return (seed & 0xfffffff) / 0x10000000;
+ };
+})();
+
+
+// Runs all registered benchmark suites and optionally yields between
+// each individual benchmark to avoid running for too long in the
+// context of browsers. Once done, the final score is reported to the
+// runner.
+BenchmarkSuite.RunSuites = function(runner) {
+ var continuation = null;
+ var suites = BenchmarkSuite.suites;
+ var length = suites.length;
+ BenchmarkSuite.scores = [];
+ var index = 0;
+ function RunStep() {
+ while (continuation || index < length) {
+ if (continuation) {
+ continuation = continuation();
+ } else {
+ var suite = suites[index++];
+ if (runner.NotifyStart) runner.NotifyStart(suite.name);
+ continuation = suite.RunStep(runner);
+ }
+ if (continuation && typeof window != 'undefined' && window.setTimeout) {
+ window.setTimeout(RunStep, 25);
+ return;
+ }
+ }
+ if (runner.NotifyScore) {
+ var score = BenchmarkSuite.GeometricMean(BenchmarkSuite.scores);
+ var formatted = BenchmarkSuite.FormatScore(100 * score);
+ runner.NotifyScore(formatted);
+ }
+ }
+ RunStep();
+}
+
+
+// Counts the total number of registered benchmarks. Useful for
+// showing progress as a percentage.
+BenchmarkSuite.CountBenchmarks = function() {
+ var result = 0;
+ var suites = BenchmarkSuite.suites;
+ for (var i = 0; i < suites.length; i++) {
+ result += suites[i].benchmarks.length;
+ }
+ return result;
+}
+
+
+// Computes the geometric mean of a set of numbers.
+BenchmarkSuite.GeometricMean = function(numbers) {
+ var log = 0;
+ for (var i = 0; i < numbers.length; i++) {
+ log += Math.log(numbers[i]);
+ }
+ return Math.pow(Math.E, log / numbers.length);
+}
+
+
+// Converts a score value to a string with at least three significant
+// digits.
+BenchmarkSuite.FormatScore = function(value) {
+ if (value > 100) {
+ return value.toFixed(0);
+ } else {
+ return value.toPrecision(3);
+ }
+}
+
+// Notifies the runner that we're done running a single benchmark in
+// the benchmark suite. This can be useful to report progress.
+BenchmarkSuite.prototype.NotifyStep = function(result) {
+ this.results.push(result);
+ if (this.runner.NotifyStep) this.runner.NotifyStep(result.benchmark.name);
+}
+
+
+// Notifies the runner that we're done with running a suite and that
+// we have a result which can be reported to the user if needed.
+BenchmarkSuite.prototype.NotifyResult = function() {
+ var mean = BenchmarkSuite.GeometricMean(this.results);
+ var score = this.reference / mean;
+ BenchmarkSuite.scores.push(score);
+ if (this.runner.NotifyResult) {
+ var formatted = BenchmarkSuite.FormatScore(100 * score);
+ this.runner.NotifyResult(this.name, formatted);
+ }
+}
+
+
+// Notifies the runner that running a benchmark resulted in an error.
+BenchmarkSuite.prototype.NotifyError = function(error) {
+ if (this.runner.NotifyError) {
+ this.runner.NotifyError(this.name, error);
+ }
+ if (this.runner.NotifyStep) {
+ this.runner.NotifyStep(this.name);
+ }
+}
+
+
+// Runs a single benchmark for at least a second and computes the
+// average time it takes to run a single iteration.
+BenchmarkSuite.prototype.RunSingleBenchmark = function(benchmark, data) {
+ function Measure(data) {
+ var elapsed = 0;
+ var start = new Date();
+ for (var n = 0; elapsed < 1000; n++) {
+ benchmark.run();
+ elapsed = new Date() - start;
+ }
+ if (data != null) {
+ data.runs += n;
+ data.elapsed += elapsed;
+ }
+ }
+
+ if (data == null) {
+ // Measure the benchmark once for warm up and throw the result
+ // away. Return a fresh data object.
+ Measure(null);
+ return { runs: 0, elapsed: 0 };
+ } else {
+ Measure(data);
+ // If we've run too few iterations, we continue for another second.
+ if (data.runs < 32) return data;
+ var usec = (data.elapsed * 1000) / data.runs;
+ this.NotifyStep(new BenchmarkResult(benchmark, usec));
+ return null;
+ }
+}
+
+
+// This function starts running a suite, but stops between each
+// individual benchmark in the suite and returns a continuation
+// function which can be invoked to run the next benchmark. Once the
+// last benchmark has been executed, null is returned.
+BenchmarkSuite.prototype.RunStep = function(runner) {
+ this.results = [];
+ this.runner = runner;
+ var length = this.benchmarks.length;
+ var index = 0;
+ var suite = this;
+ var data;
+
+ // Run the setup, the actual benchmark, and the tear down in three
+ // separate steps to allow the framework to yield between any of the
+ // steps.
+
+ function RunNextSetup() {
+ if (index < length) {
+ try {
+ suite.benchmarks[index].Setup();
+ } catch (e) {
+ suite.NotifyError(e);
+ return null;
+ }
+ return RunNextBenchmark;
+ }
+ suite.NotifyResult();
+ return null;
+ }
+
+ function RunNextBenchmark() {
+ try {
+ data = suite.RunSingleBenchmark(suite.benchmarks[index], data);
+ } catch (e) {
+ suite.NotifyError(e);
+ return null;
+ }
+ // If data is null, we're done with this benchmark.
+ return (data == null) ? RunNextTearDown : RunNextBenchmark();
+ }
+
+ function RunNextTearDown() {
+ try {
+ suite.benchmarks[index++].TearDown();
+ } catch (e) {
+ suite.NotifyError(e);
+ return null;
+ }
+ return RunNextSetup;
+ }
+
+ // Start out running the setup.
+ return RunNextSetup();
+}
diff --git a/tests/benchmarks/script/v8/tests/crypto.js b/tests/benchmarks/script/v8/tests/crypto.js
new file mode 100644
index 0000000000..ffa69b53bb
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/crypto.js
@@ -0,0 +1,1698 @@
+/*
+ * Copyright (c) 2003-2005 Tom Wu
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
+ * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * In addition, the following condition applies:
+ *
+ * All redistributions must retain an intact copy of this copyright notice
+ * and disclaimer.
+ */
+
+
+// The code has been adapted for use as a benchmark by Google.
+var Crypto = new BenchmarkSuite('Crypto', 266181, [
+ new Benchmark("Encrypt", encrypt),
+ new Benchmark("Decrypt", decrypt)
+]);
+
+
+// Basic JavaScript BN library - subset useful for RSA encryption.
+
+// Bits per digit
+var dbits;
+var BI_DB;
+var BI_DM;
+var BI_DV;
+
+var BI_FP;
+var BI_FV;
+var BI_F1;
+var BI_F2;
+
+// JavaScript engine analysis
+var canary = 0xdeadbeefcafe;
+var j_lm = ((canary&0xffffff)==0xefcafe);
+
+// (public) Constructor
+function BigInteger(a,b,c) {
+ this.array = new Array();
+ if(a != null)
+ if("number" == typeof a) this.fromNumber(a,b,c);
+ else if(b == null && "string" != typeof a) this.fromString(a,256);
+ else this.fromString(a,b);
+}
+
+// return new, unset BigInteger
+function nbi() { return new BigInteger(null); }
+
+// am: Compute w_j += (x*this_i), propagate carries,
+// c is initial carry, returns final carry.
+// c < 3*dvalue, x < 2*dvalue, this_i < dvalue
+// We need to select the fastest one that works in this environment.
+
+// am1: use a single mult and divide to get the high bits,
+// max digit bits should be 26 because
+// max internal value = 2*dvalue^2-2*dvalue (< 2^53)
+function am1(i,x,w,j,c,n) {
+ var this_array = this.array;
+ var w_array = w.array;
+ while(--n >= 0) {
+ var v = x*this_array[i++]+w_array[j]+c;
+ c = Math.floor(v/0x4000000);
+ w_array[j++] = v&0x3ffffff;
+ }
+ return c;
+}
+
+// am2 avoids a big mult-and-extract completely.
+// Max digit bits should be <= 30 because we do bitwise ops
+// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
+function am2(i,x,w,j,c,n) {
+ var this_array = this.array;
+ var w_array = w.array;
+ var xl = x&0x7fff, xh = x>>15;
+ while(--n >= 0) {
+ var l = this_array[i]&0x7fff;
+ var h = this_array[i++]>>15;
+ var m = xh*l+h*xl;
+ l = xl*l+((m&0x7fff)<<15)+w_array[j]+(c&0x3fffffff);
+ c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
+ w_array[j++] = l&0x3fffffff;
+ }
+ return c;
+}
+
+// Alternately, set max digit bits to 28 since some
+// browsers slow down when dealing with 32-bit numbers.
+function am3(i,x,w,j,c,n) {
+ var this_array = this.array;
+ var w_array = w.array;
+
+ var xl = x&0x3fff, xh = x>>14;
+ while(--n >= 0) {
+ var l = this_array[i]&0x3fff;
+ var h = this_array[i++]>>14;
+ var m = xh*l+h*xl;
+ l = xl*l+((m&0x3fff)<<14)+w_array[j]+c;
+ c = (l>>28)+(m>>14)+xh*h;
+ w_array[j++] = l&0xfffffff;
+ }
+ return c;
+}
+
+// This is tailored to VMs with 2-bit tagging. It makes sure
+// that all the computations stay within the 29 bits available.
+function am4(i,x,w,j,c,n) {
+ var this_array = this.array;
+ var w_array = w.array;
+
+ var xl = x&0x1fff, xh = x>>13;
+ while(--n >= 0) {
+ var l = this_array[i]&0x1fff;
+ var h = this_array[i++]>>13;
+ var m = xh*l+h*xl;
+ l = xl*l+((m&0x1fff)<<13)+w_array[j]+c;
+ c = (l>>26)+(m>>13)+xh*h;
+ w_array[j++] = l&0x3ffffff;
+ }
+ return c;
+}
+
+// am3/28 is best for SM, Rhino, but am4/26 is best for v8.
+// Kestrel (Opera 9.5) gets its best result with am4/26.
+// IE7 does 9% better with am3/28 than with am4/26.
+// Firefox (SM) gets 10% faster with am3/28 than with am4/26.
+
+setupEngine = function(fn, bits) {
+ BigInteger.prototype.am = fn;
+ dbits = bits;
+
+ BI_DB = dbits;
+ BI_DM = ((1<<dbits)-1);
+ BI_DV = (1<<dbits);
+
+ BI_FP = 52;
+ BI_FV = Math.pow(2,BI_FP);
+ BI_F1 = BI_FP-dbits;
+ BI_F2 = 2*dbits-BI_FP;
+}
+
+
+// Digit conversions
+var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
+var BI_RC = new Array();
+var rr,vv;
+rr = "0".charCodeAt(0);
+for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
+rr = "a".charCodeAt(0);
+for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
+rr = "A".charCodeAt(0);
+for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
+
+function int2char(n) { return BI_RM.charAt(n); }
+function intAt(s,i) {
+ var c = BI_RC[s.charCodeAt(i)];
+ return (c==null)?-1:c;
+}
+
+// (protected) copy this to r
+function bnpCopyTo(r) {
+ var this_array = this.array;
+ var r_array = r.array;
+
+ for(var i = this.t-1; i >= 0; --i) r_array[i] = this_array[i];
+ r.t = this.t;
+ r.s = this.s;
+}
+
+// (protected) set from integer value x, -DV <= x < DV
+function bnpFromInt(x) {
+ var this_array = this.array;
+ this.t = 1;
+ this.s = (x<0)?-1:0;
+ if(x > 0) this_array[0] = x;
+ else if(x < -1) this_array[0] = x+DV;
+ else this.t = 0;
+}
+
+// return bigint initialized to value
+function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
+
+// (protected) set from string and radix
+function bnpFromString(s,b) {
+ var this_array = this.array;
+ var k;
+ if(b == 16) k = 4;
+ else if(b == 8) k = 3;
+ else if(b == 256) k = 8; // byte array
+ else if(b == 2) k = 1;
+ else if(b == 32) k = 5;
+ else if(b == 4) k = 2;
+ else { this.fromRadix(s,b); return; }
+ this.t = 0;
+ this.s = 0;
+ var i = s.length, mi = false, sh = 0;
+ while(--i >= 0) {
+ var x = (k==8)?s[i]&0xff:intAt(s,i);
+ if(x < 0) {
+ if(s.charAt(i) == "-") mi = true;
+ continue;
+ }
+ mi = false;
+ if(sh == 0)
+ this_array[this.t++] = x;
+ else if(sh+k > BI_DB) {
+ this_array[this.t-1] |= (x&((1<<(BI_DB-sh))-1))<<sh;
+ this_array[this.t++] = (x>>(BI_DB-sh));
+ }
+ else
+ this_array[this.t-1] |= x<<sh;
+ sh += k;
+ if(sh >= BI_DB) sh -= BI_DB;
+ }
+ if(k == 8 && (s[0]&0x80) != 0) {
+ this.s = -1;
+ if(sh > 0) this_array[this.t-1] |= ((1<<(BI_DB-sh))-1)<<sh;
+ }
+ this.clamp();
+ if(mi) BigInteger.ZERO.subTo(this,this);
+}
+
+// (protected) clamp off excess high words
+function bnpClamp() {
+ var this_array = this.array;
+ var c = this.s&BI_DM;
+ while(this.t > 0 && this_array[this.t-1] == c) --this.t;
+}
+
+// (public) return string representation in given radix
+function bnToString(b) {
+ var this_array = this.array;
+ if(this.s < 0) return "-"+this.negate().toString(b);
+ var k;
+ if(b == 16) k = 4;
+ else if(b == 8) k = 3;
+ else if(b == 2) k = 1;
+ else if(b == 32) k = 5;
+ else if(b == 4) k = 2;
+ else return this.toRadix(b);
+ var km = (1<<k)-1, d, m = false, r = "", i = this.t;
+ var p = BI_DB-(i*BI_DB)%k;
+ if(i-- > 0) {
+ if(p < BI_DB && (d = this_array[i]>>p) > 0) { m = true; r = int2char(d); }
+ while(i >= 0) {
+ if(p < k) {
+ d = (this_array[i]&((1<<p)-1))<<(k-p);
+ d |= this_array[--i]>>(p+=BI_DB-k);
+ }
+ else {
+ d = (this_array[i]>>(p-=k))&km;
+ if(p <= 0) { p += BI_DB; --i; }
+ }
+ if(d > 0) m = true;
+ if(m) r += int2char(d);
+ }
+ }
+ return m?r:"0";
+}
+
+// (public) -this
+function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
+
+// (public) |this|
+function bnAbs() { return (this.s<0)?this.negate():this; }
+
+// (public) return + if this > a, - if this < a, 0 if equal
+function bnCompareTo(a) {
+ var this_array = this.array;
+ var a_array = a.array;
+
+ var r = this.s-a.s;
+ if(r != 0) return r;
+ var i = this.t;
+ r = i-a.t;
+ if(r != 0) return r;
+ while(--i >= 0) if((r=this_array[i]-a_array[i]) != 0) return r;
+ return 0;
+}
+
+// returns bit length of the integer x
+function nbits(x) {
+ var r = 1, t;
+ if((t=x>>>16) != 0) { x = t; r += 16; }
+ if((t=x>>8) != 0) { x = t; r += 8; }
+ if((t=x>>4) != 0) { x = t; r += 4; }
+ if((t=x>>2) != 0) { x = t; r += 2; }
+ if((t=x>>1) != 0) { x = t; r += 1; }
+ return r;
+}
+
+// (public) return the number of bits in "this"
+function bnBitLength() {
+ var this_array = this.array;
+ if(this.t <= 0) return 0;
+ return BI_DB*(this.t-1)+nbits(this_array[this.t-1]^(this.s&BI_DM));
+}
+
+// (protected) r = this << n*DB
+function bnpDLShiftTo(n,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ var i;
+ for(i = this.t-1; i >= 0; --i) r_array[i+n] = this_array[i];
+ for(i = n-1; i >= 0; --i) r_array[i] = 0;
+ r.t = this.t+n;
+ r.s = this.s;
+}
+
+// (protected) r = this >> n*DB
+function bnpDRShiftTo(n,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ for(var i = n; i < this.t; ++i) r_array[i-n] = this_array[i];
+ r.t = Math.max(this.t-n,0);
+ r.s = this.s;
+}
+
+// (protected) r = this << n
+function bnpLShiftTo(n,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ var bs = n%BI_DB;
+ var cbs = BI_DB-bs;
+ var bm = (1<<cbs)-1;
+ var ds = Math.floor(n/BI_DB), c = (this.s<<bs)&BI_DM, i;
+ for(i = this.t-1; i >= 0; --i) {
+ r_array[i+ds+1] = (this_array[i]>>cbs)|c;
+ c = (this_array[i]&bm)<<bs;
+ }
+ for(i = ds-1; i >= 0; --i) r_array[i] = 0;
+ r_array[ds] = c;
+ r.t = this.t+ds+1;
+ r.s = this.s;
+ r.clamp();
+}
+
+// (protected) r = this >> n
+function bnpRShiftTo(n,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ r.s = this.s;
+ var ds = Math.floor(n/BI_DB);
+ if(ds >= this.t) { r.t = 0; return; }
+ var bs = n%BI_DB;
+ var cbs = BI_DB-bs;
+ var bm = (1<<bs)-1;
+ r_array[0] = this_array[ds]>>bs;
+ for(var i = ds+1; i < this.t; ++i) {
+ r_array[i-ds-1] |= (this_array[i]&bm)<<cbs;
+ r_array[i-ds] = this_array[i]>>bs;
+ }
+ if(bs > 0) r_array[this.t-ds-1] |= (this.s&bm)<<cbs;
+ r.t = this.t-ds;
+ r.clamp();
+}
+
+// (protected) r = this - a
+function bnpSubTo(a,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ var a_array = a.array;
+ var i = 0, c = 0, m = Math.min(a.t,this.t);
+ while(i < m) {
+ c += this_array[i]-a_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ if(a.t < this.t) {
+ c -= a.s;
+ while(i < this.t) {
+ c += this_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ c += this.s;
+ }
+ else {
+ c += this.s;
+ while(i < a.t) {
+ c -= a_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ c -= a.s;
+ }
+ r.s = (c<0)?-1:0;
+ if(c < -1) r_array[i++] = BI_DV+c;
+ else if(c > 0) r_array[i++] = c;
+ r.t = i;
+ r.clamp();
+}
+
+// (protected) r = this * a, r != this,a (HAC 14.12)
+// "this" should be the larger one if appropriate.
+function bnpMultiplyTo(a,r) {
+ var this_array = this.array;
+ var r_array = r.array;
+ var x = this.abs(), y = a.abs();
+ var y_array = y.array;
+
+ var i = x.t;
+ r.t = i+y.t;
+ while(--i >= 0) r_array[i] = 0;
+ for(i = 0; i < y.t; ++i) r_array[i+x.t] = x.am(0,y_array[i],r,i,0,x.t);
+ r.s = 0;
+ r.clamp();
+ if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
+}
+
+// (protected) r = this^2, r != this (HAC 14.16)
+function bnpSquareTo(r) {
+ var x = this.abs();
+ var x_array = x.array;
+ var r_array = r.array;
+
+ var i = r.t = 2*x.t;
+ while(--i >= 0) r_array[i] = 0;
+ for(i = 0; i < x.t-1; ++i) {
+ var c = x.am(i,x_array[i],r,2*i,0,1);
+ if((r_array[i+x.t]+=x.am(i+1,2*x_array[i],r,2*i+1,c,x.t-i-1)) >= BI_DV) {
+ r_array[i+x.t] -= BI_DV;
+ r_array[i+x.t+1] = 1;
+ }
+ }
+ if(r.t > 0) r_array[r.t-1] += x.am(i,x_array[i],r,2*i,0,1);
+ r.s = 0;
+ r.clamp();
+}
+
+// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
+// r != q, this != m. q or r may be null.
+function bnpDivRemTo(m,q,r) {
+ var pm = m.abs();
+ if(pm.t <= 0) return;
+ var pt = this.abs();
+ if(pt.t < pm.t) {
+ if(q != null) q.fromInt(0);
+ if(r != null) this.copyTo(r);
+ return;
+ }
+ if(r == null) r = nbi();
+ var y = nbi(), ts = this.s, ms = m.s;
+ var pm_array = pm.array;
+ var nsh = BI_DB-nbits(pm_array[pm.t-1]); // normalize modulus
+ if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
+ else { pm.copyTo(y); pt.copyTo(r); }
+ var ys = y.t;
+
+ var y_array = y.array;
+ var y0 = y_array[ys-1];
+ if(y0 == 0) return;
+ var yt = y0*(1<<BI_F1)+((ys>1)?y_array[ys-2]>>BI_F2:0);
+ var d1 = BI_FV/yt, d2 = (1<<BI_F1)/yt, e = 1<<BI_F2;
+ var i = r.t, j = i-ys, t = (q==null)?nbi():q;
+ y.dlShiftTo(j,t);
+
+ var r_array = r.array;
+ if(r.compareTo(t) >= 0) {
+ r_array[r.t++] = 1;
+ r.subTo(t,r);
+ }
+ BigInteger.ONE.dlShiftTo(ys,t);
+ t.subTo(y,y); // "negative" y so we can replace sub with am later
+ while(y.t < ys) y_array[y.t++] = 0;
+ while(--j >= 0) {
+ // Estimate quotient digit
+ var qd = (r_array[--i]==y0)?BI_DM:Math.floor(r_array[i]*d1+(r_array[i-1]+e)*d2);
+ if((r_array[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out
+ y.dlShiftTo(j,t);
+ r.subTo(t,r);
+ while(r_array[i] < --qd) r.subTo(t,r);
+ }
+ }
+ if(q != null) {
+ r.drShiftTo(ys,q);
+ if(ts != ms) BigInteger.ZERO.subTo(q,q);
+ }
+ r.t = ys;
+ r.clamp();
+ if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder
+ if(ts < 0) BigInteger.ZERO.subTo(r,r);
+}
+
+// (public) this mod a
+function bnMod(a) {
+ var r = nbi();
+ this.abs().divRemTo(a,null,r);
+ if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
+ return r;
+}
+
+// Modular reduction using "classic" algorithm
+function Classic(m) { this.m = m; }
+function cConvert(x) {
+ if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
+ else return x;
+}
+function cRevert(x) { return x; }
+function cReduce(x) { x.divRemTo(this.m,null,x); }
+function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
+function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
+
+Classic.prototype.convert = cConvert;
+Classic.prototype.revert = cRevert;
+Classic.prototype.reduce = cReduce;
+Classic.prototype.mulTo = cMulTo;
+Classic.prototype.sqrTo = cSqrTo;
+
+// (protected) return "-1/this % 2^DB"; useful for Mont. reduction
+// justification:
+// xy == 1 (mod m)
+// xy = 1+km
+// xy(2-xy) = (1+km)(1-km)
+// x[y(2-xy)] = 1-k^2m^2
+// x[y(2-xy)] == 1 (mod m^2)
+// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
+// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
+// JS multiply "overflows" differently from C/C++, so care is needed here.
+function bnpInvDigit() {
+ var this_array = this.array;
+ if(this.t < 1) return 0;
+ var x = this_array[0];
+ if((x&1) == 0) return 0;
+ var y = x&3; // y == 1/x mod 2^2
+ y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4
+ y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8
+ y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16
+ // last step - calculate inverse mod DV directly;
+ // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
+ y = (y*(2-x*y%BI_DV))%BI_DV; // y == 1/x mod 2^dbits
+ // we really want the negative inverse, and -DV < y < DV
+ return (y>0)?BI_DV-y:-y;
+}
+
+// Montgomery reduction
+function Montgomery(m) {
+ this.m = m;
+ this.mp = m.invDigit();
+ this.mpl = this.mp&0x7fff;
+ this.mph = this.mp>>15;
+ this.um = (1<<(BI_DB-15))-1;
+ this.mt2 = 2*m.t;
+}
+
+// xR mod m
+function montConvert(x) {
+ var r = nbi();
+ x.abs().dlShiftTo(this.m.t,r);
+ r.divRemTo(this.m,null,r);
+ if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
+ return r;
+}
+
+// x/R mod m
+function montRevert(x) {
+ var r = nbi();
+ x.copyTo(r);
+ this.reduce(r);
+ return r;
+}
+
+// x = x/R mod m (HAC 14.32)
+function montReduce(x) {
+ var x_array = x.array;
+ while(x.t <= this.mt2) // pad x so am has enough room later
+ x_array[x.t++] = 0;
+ for(var i = 0; i < this.m.t; ++i) {
+ // faster way of calculating u0 = x[i]*mp mod DV
+ var j = x_array[i]&0x7fff;
+ var u0 = (j*this.mpl+(((j*this.mph+(x_array[i]>>15)*this.mpl)&this.um)<<15))&BI_DM;
+ // use am to combine the multiply-shift-add into one call
+ j = i+this.m.t;
+ x_array[j] += this.m.am(0,u0,x,i,0,this.m.t);
+ // propagate carry
+ while(x_array[j] >= BI_DV) { x_array[j] -= BI_DV; x_array[++j]++; }
+ }
+ x.clamp();
+ x.drShiftTo(this.m.t,x);
+ if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
+}
+
+// r = "x^2/R mod m"; x != r
+function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
+
+// r = "xy/R mod m"; x,y != r
+function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
+
+Montgomery.prototype.convert = montConvert;
+Montgomery.prototype.revert = montRevert;
+Montgomery.prototype.reduce = montReduce;
+Montgomery.prototype.mulTo = montMulTo;
+Montgomery.prototype.sqrTo = montSqrTo;
+
+// (protected) true iff this is even
+function bnpIsEven() {
+ var this_array = this.array;
+ return ((this.t>0)?(this_array[0]&1):this.s) == 0;
+}
+
+// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
+function bnpExp(e,z) {
+ if(e > 0xffffffff || e < 1) return BigInteger.ONE;
+ var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
+ g.copyTo(r);
+ while(--i >= 0) {
+ z.sqrTo(r,r2);
+ if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
+ else { var t = r; r = r2; r2 = t; }
+ }
+ return z.revert(r);
+}
+
+// (public) this^e % m, 0 <= e < 2^32
+function bnModPowInt(e,m) {
+ var z;
+ if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
+ return this.exp(e,z);
+}
+
+// protected
+BigInteger.prototype.copyTo = bnpCopyTo;
+BigInteger.prototype.fromInt = bnpFromInt;
+BigInteger.prototype.fromString = bnpFromString;
+BigInteger.prototype.clamp = bnpClamp;
+BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
+BigInteger.prototype.drShiftTo = bnpDRShiftTo;
+BigInteger.prototype.lShiftTo = bnpLShiftTo;
+BigInteger.prototype.rShiftTo = bnpRShiftTo;
+BigInteger.prototype.subTo = bnpSubTo;
+BigInteger.prototype.multiplyTo = bnpMultiplyTo;
+BigInteger.prototype.squareTo = bnpSquareTo;
+BigInteger.prototype.divRemTo = bnpDivRemTo;
+BigInteger.prototype.invDigit = bnpInvDigit;
+BigInteger.prototype.isEven = bnpIsEven;
+BigInteger.prototype.exp = bnpExp;
+
+// public
+BigInteger.prototype.toString = bnToString;
+BigInteger.prototype.negate = bnNegate;
+BigInteger.prototype.abs = bnAbs;
+BigInteger.prototype.compareTo = bnCompareTo;
+BigInteger.prototype.bitLength = bnBitLength;
+BigInteger.prototype.mod = bnMod;
+BigInteger.prototype.modPowInt = bnModPowInt;
+
+// "constants"
+BigInteger.ZERO = nbv(0);
+BigInteger.ONE = nbv(1);
+// Copyright (c) 2005 Tom Wu
+// All Rights Reserved.
+// See "LICENSE" for details.
+
+// Extended JavaScript BN functions, required for RSA private ops.
+
+// (public)
+function bnClone() { var r = nbi(); this.copyTo(r); return r; }
+
+// (public) return value as integer
+function bnIntValue() {
+ var this_array = this.array;
+ if(this.s < 0) {
+ if(this.t == 1) return this_array[0]-BI_DV;
+ else if(this.t == 0) return -1;
+ }
+ else if(this.t == 1) return this_array[0];
+ else if(this.t == 0) return 0;
+ // assumes 16 < DB < 32
+ return ((this_array[1]&((1<<(32-BI_DB))-1))<<BI_DB)|this_array[0];
+}
+
+// (public) return value as byte
+function bnByteValue() {
+ var this_array = this.array;
+ return (this.t==0)?this.s:(this_array[0]<<24)>>24;
+}
+
+// (public) return value as short (assumes DB>=16)
+function bnShortValue() {
+ var this_array = this.array;
+ return (this.t==0)?this.s:(this_array[0]<<16)>>16;
+}
+
+// (protected) return x s.t. r^x < DV
+function bnpChunkSize(r) { return Math.floor(Math.LN2*BI_DB/Math.log(r)); }
+
+// (public) 0 if this == 0, 1 if this > 0
+function bnSigNum() {
+ var this_array = this.array;
+ if(this.s < 0) return -1;
+ else if(this.t <= 0 || (this.t == 1 && this_array[0] <= 0)) return 0;
+ else return 1;
+}
+
+// (protected) convert to radix string
+function bnpToRadix(b) {
+ if(b == null) b = 10;
+ if(this.signum() == 0 || b < 2 || b > 36) return "0";
+ var cs = this.chunkSize(b);
+ var a = Math.pow(b,cs);
+ var d = nbv(a), y = nbi(), z = nbi(), r = "";
+ this.divRemTo(d,y,z);
+ while(y.signum() > 0) {
+ r = (a+z.intValue()).toString(b).substr(1) + r;
+ y.divRemTo(d,y,z);
+ }
+ return z.intValue().toString(b) + r;
+}
+
+// (protected) convert from radix string
+function bnpFromRadix(s,b) {
+ this.fromInt(0);
+ if(b == null) b = 10;
+ var cs = this.chunkSize(b);
+ var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
+ for(var i = 0; i < s.length; ++i) {
+ var x = intAt(s,i);
+ if(x < 0) {
+ if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
+ continue;
+ }
+ w = b*w+x;
+ if(++j >= cs) {
+ this.dMultiply(d);
+ this.dAddOffset(w,0);
+ j = 0;
+ w = 0;
+ }
+ }
+ if(j > 0) {
+ this.dMultiply(Math.pow(b,j));
+ this.dAddOffset(w,0);
+ }
+ if(mi) BigInteger.ZERO.subTo(this,this);
+}
+
+// (protected) alternate constructor
+function bnpFromNumber(a,b,c) {
+ if("number" == typeof b) {
+ // new BigInteger(int,int,RNG)
+ if(a < 2) this.fromInt(1);
+ else {
+ this.fromNumber(a,c);
+ if(!this.testBit(a-1)) // force MSB set
+ this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);
+ if(this.isEven()) this.dAddOffset(1,0); // force odd
+ while(!this.isProbablePrime(b)) {
+ this.dAddOffset(2,0);
+ if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);
+ }
+ }
+ }
+ else {
+ // new BigInteger(int,RNG)
+ var x = new Array(), t = a&7;
+ x.length = (a>>3)+1;
+ b.nextBytes(x);
+ if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;
+ this.fromString(x,256);
+ }
+}
+
+// (public) convert to bigendian byte array
+function bnToByteArray() {
+ var this_array = this.array;
+ var i = this.t, r = new Array();
+ r[0] = this.s;
+ var p = BI_DB-(i*BI_DB)%8, d, k = 0;
+ if(i-- > 0) {
+ if(p < BI_DB && (d = this_array[i]>>p) != (this.s&BI_DM)>>p)
+ r[k++] = d|(this.s<<(BI_DB-p));
+ while(i >= 0) {
+ if(p < 8) {
+ d = (this_array[i]&((1<<p)-1))<<(8-p);
+ d |= this_array[--i]>>(p+=BI_DB-8);
+ }
+ else {
+ d = (this_array[i]>>(p-=8))&0xff;
+ if(p <= 0) { p += BI_DB; --i; }
+ }
+ if((d&0x80) != 0) d |= -256;
+ if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;
+ if(k > 0 || d != this.s) r[k++] = d;
+ }
+ }
+ return r;
+}
+
+function bnEquals(a) { return(this.compareTo(a)==0); }
+function bnMin(a) { return(this.compareTo(a)<0)?this:a; }
+function bnMax(a) { return(this.compareTo(a)>0)?this:a; }
+
+// (protected) r = this op a (bitwise)
+function bnpBitwiseTo(a,op,r) {
+ var this_array = this.array;
+ var a_array = a.array;
+ var r_array = r.array;
+ var i, f, m = Math.min(a.t,this.t);
+ for(i = 0; i < m; ++i) r_array[i] = op(this_array[i],a_array[i]);
+ if(a.t < this.t) {
+ f = a.s&BI_DM;
+ for(i = m; i < this.t; ++i) r_array[i] = op(this_array[i],f);
+ r.t = this.t;
+ }
+ else {
+ f = this.s&BI_DM;
+ for(i = m; i < a.t; ++i) r_array[i] = op(f,a_array[i]);
+ r.t = a.t;
+ }
+ r.s = op(this.s,a.s);
+ r.clamp();
+}
+
+// (public) this & a
+function op_and(x,y) { return x&y; }
+function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }
+
+// (public) this | a
+function op_or(x,y) { return x|y; }
+function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }
+
+// (public) this ^ a
+function op_xor(x,y) { return x^y; }
+function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }
+
+// (public) this & ~a
+function op_andnot(x,y) { return x&~y; }
+function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }
+
+// (public) ~this
+function bnNot() {
+ var this_array = this.array;
+ var r = nbi();
+ var r_array = r.array;
+
+ for(var i = 0; i < this.t; ++i) r_array[i] = BI_DM&~this_array[i];
+ r.t = this.t;
+ r.s = ~this.s;
+ return r;
+}
+
+// (public) this << n
+function bnShiftLeft(n) {
+ var r = nbi();
+ if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);
+ return r;
+}
+
+// (public) this >> n
+function bnShiftRight(n) {
+ var r = nbi();
+ if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);
+ return r;
+}
+
+// return index of lowest 1-bit in x, x < 2^31
+function lbit(x) {
+ if(x == 0) return -1;
+ var r = 0;
+ if((x&0xffff) == 0) { x >>= 16; r += 16; }
+ if((x&0xff) == 0) { x >>= 8; r += 8; }
+ if((x&0xf) == 0) { x >>= 4; r += 4; }
+ if((x&3) == 0) { x >>= 2; r += 2; }
+ if((x&1) == 0) ++r;
+ return r;
+}
+
+// (public) returns index of lowest 1-bit (or -1 if none)
+function bnGetLowestSetBit() {
+ var this_array = this.array;
+ for(var i = 0; i < this.t; ++i)
+ if(this_array[i] != 0) return i*BI_DB+lbit(this_array[i]);
+ if(this.s < 0) return this.t*BI_DB;
+ return -1;
+}
+
+// return number of 1 bits in x
+function cbit(x) {
+ var r = 0;
+ while(x != 0) { x &= x-1; ++r; }
+ return r;
+}
+
+// (public) return number of set bits
+function bnBitCount() {
+ var r = 0, x = this.s&BI_DM;
+ for(var i = 0; i < this.t; ++i) r += cbit(this_array[i]^x);
+ return r;
+}
+
+// (public) true iff nth bit is set
+function bnTestBit(n) {
+ var this_array = this.array;
+ var j = Math.floor(n/BI_DB);
+ if(j >= this.t) return(this.s!=0);
+ return((this_array[j]&(1<<(n%BI_DB)))!=0);
+}
+
+// (protected) this op (1<<n)
+function bnpChangeBit(n,op) {
+ var r = BigInteger.ONE.shiftLeft(n);
+ this.bitwiseTo(r,op,r);
+ return r;
+}
+
+// (public) this | (1<<n)
+function bnSetBit(n) { return this.changeBit(n,op_or); }
+
+// (public) this & ~(1<<n)
+function bnClearBit(n) { return this.changeBit(n,op_andnot); }
+
+// (public) this ^ (1<<n)
+function bnFlipBit(n) { return this.changeBit(n,op_xor); }
+
+// (protected) r = this + a
+function bnpAddTo(a,r) {
+ var this_array = this.array;
+ var a_array = a.array;
+ var r_array = r.array;
+ var i = 0, c = 0, m = Math.min(a.t,this.t);
+ while(i < m) {
+ c += this_array[i]+a_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ if(a.t < this.t) {
+ c += a.s;
+ while(i < this.t) {
+ c += this_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ c += this.s;
+ }
+ else {
+ c += this.s;
+ while(i < a.t) {
+ c += a_array[i];
+ r_array[i++] = c&BI_DM;
+ c >>= BI_DB;
+ }
+ c += a.s;
+ }
+ r.s = (c<0)?-1:0;
+ if(c > 0) r_array[i++] = c;
+ else if(c < -1) r_array[i++] = BI_DV+c;
+ r.t = i;
+ r.clamp();
+}
+
+// (public) this + a
+function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }
+
+// (public) this - a
+function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }
+
+// (public) this * a
+function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }
+
+// (public) this / a
+function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }
+
+// (public) this % a
+function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }
+
+// (public) [this/a,this%a]
+function bnDivideAndRemainder(a) {
+ var q = nbi(), r = nbi();
+ this.divRemTo(a,q,r);
+ return new Array(q,r);
+}
+
+// (protected) this *= n, this >= 0, 1 < n < DV
+function bnpDMultiply(n) {
+ var this_array = this.array;
+ this_array[this.t] = this.am(0,n-1,this,0,0,this.t);
+ ++this.t;
+ this.clamp();
+}
+
+// (protected) this += n << w words, this >= 0
+function bnpDAddOffset(n,w) {
+ var this_array = this.array;
+ while(this.t <= w) this_array[this.t++] = 0;
+ this_array[w] += n;
+ while(this_array[w] >= BI_DV) {
+ this_array[w] -= BI_DV;
+ if(++w >= this.t) this_array[this.t++] = 0;
+ ++this_array[w];
+ }
+}
+
+// A "null" reducer
+function NullExp() {}
+function nNop(x) { return x; }
+function nMulTo(x,y,r) { x.multiplyTo(y,r); }
+function nSqrTo(x,r) { x.squareTo(r); }
+
+NullExp.prototype.convert = nNop;
+NullExp.prototype.revert = nNop;
+NullExp.prototype.mulTo = nMulTo;
+NullExp.prototype.sqrTo = nSqrTo;
+
+// (public) this^e
+function bnPow(e) { return this.exp(e,new NullExp()); }
+
+// (protected) r = lower n words of "this * a", a.t <= n
+// "this" should be the larger one if appropriate.
+function bnpMultiplyLowerTo(a,n,r) {
+ var r_array = r.array;
+ var a_array = a.array;
+ var i = Math.min(this.t+a.t,n);
+ r.s = 0; // assumes a,this >= 0
+ r.t = i;
+ while(i > 0) r_array[--i] = 0;
+ var j;
+ for(j = r.t-this.t; i < j; ++i) r_array[i+this.t] = this.am(0,a_array[i],r,i,0,this.t);
+ for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a_array[i],r,i,0,n-i);
+ r.clamp();
+}
+
+// (protected) r = "this * a" without lower n words, n > 0
+// "this" should be the larger one if appropriate.
+function bnpMultiplyUpperTo(a,n,r) {
+ var r_array = r.array;
+ var a_array = a.array;
+ --n;
+ var i = r.t = this.t+a.t-n;
+ r.s = 0; // assumes a,this >= 0
+ while(--i >= 0) r_array[i] = 0;
+ for(i = Math.max(n-this.t,0); i < a.t; ++i)
+ r_array[this.t+i-n] = this.am(n-i,a_array[i],r,0,0,this.t+i-n);
+ r.clamp();
+ r.drShiftTo(1,r);
+}
+
+// Barrett modular reduction
+function Barrett(m) {
+ // setup Barrett
+ this.r2 = nbi();
+ this.q3 = nbi();
+ BigInteger.ONE.dlShiftTo(2*m.t,this.r2);
+ this.mu = this.r2.divide(m);
+ this.m = m;
+}
+
+function barrettConvert(x) {
+ if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);
+ else if(x.compareTo(this.m) < 0) return x;
+ else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }
+}
+
+function barrettRevert(x) { return x; }
+
+// x = x mod m (HAC 14.42)
+function barrettReduce(x) {
+ x.drShiftTo(this.m.t-1,this.r2);
+ if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }
+ this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);
+ this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);
+ while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);
+ x.subTo(this.r2,x);
+ while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
+}
+
+// r = x^2 mod m; x != r
+function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
+
+// r = x*y mod m; x,y != r
+function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
+
+Barrett.prototype.convert = barrettConvert;
+Barrett.prototype.revert = barrettRevert;
+Barrett.prototype.reduce = barrettReduce;
+Barrett.prototype.mulTo = barrettMulTo;
+Barrett.prototype.sqrTo = barrettSqrTo;
+
+// (public) this^e % m (HAC 14.85)
+function bnModPow(e,m) {
+ var e_array = e.array;
+ var i = e.bitLength(), k, r = nbv(1), z;
+ if(i <= 0) return r;
+ else if(i < 18) k = 1;
+ else if(i < 48) k = 3;
+ else if(i < 144) k = 4;
+ else if(i < 768) k = 5;
+ else k = 6;
+ if(i < 8)
+ z = new Classic(m);
+ else if(m.isEven())
+ z = new Barrett(m);
+ else
+ z = new Montgomery(m);
+
+ // precomputation
+ var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;
+ g[1] = z.convert(this);
+ if(k > 1) {
+ var g2 = nbi();
+ z.sqrTo(g[1],g2);
+ while(n <= km) {
+ g[n] = nbi();
+ z.mulTo(g2,g[n-2],g[n]);
+ n += 2;
+ }
+ }
+
+ var j = e.t-1, w, is1 = true, r2 = nbi(), t;
+ i = nbits(e_array[j])-1;
+ while(j >= 0) {
+ if(i >= k1) w = (e_array[j]>>(i-k1))&km;
+ else {
+ w = (e_array[j]&((1<<(i+1))-1))<<(k1-i);
+ if(j > 0) w |= e_array[j-1]>>(BI_DB+i-k1);
+ }
+
+ n = k;
+ while((w&1) == 0) { w >>= 1; --n; }
+ if((i -= n) < 0) { i += BI_DB; --j; }
+ if(is1) { // ret == 1, don't bother squaring or multiplying it
+ g[w].copyTo(r);
+ is1 = false;
+ }
+ else {
+ while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }
+ if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }
+ z.mulTo(r2,g[w],r);
+ }
+
+ while(j >= 0 && (e_array[j]&(1<<i)) == 0) {
+ z.sqrTo(r,r2); t = r; r = r2; r2 = t;
+ if(--i < 0) { i = BI_DB-1; --j; }
+ }
+ }
+ return z.revert(r);
+}
+
+// (public) gcd(this,a) (HAC 14.54)
+function bnGCD(a) {
+ var x = (this.s<0)?this.negate():this.clone();
+ var y = (a.s<0)?a.negate():a.clone();
+ if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }
+ var i = x.getLowestSetBit(), g = y.getLowestSetBit();
+ if(g < 0) return x;
+ if(i < g) g = i;
+ if(g > 0) {
+ x.rShiftTo(g,x);
+ y.rShiftTo(g,y);
+ }
+ while(x.signum() > 0) {
+ if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);
+ if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);
+ if(x.compareTo(y) >= 0) {
+ x.subTo(y,x);
+ x.rShiftTo(1,x);
+ }
+ else {
+ y.subTo(x,y);
+ y.rShiftTo(1,y);
+ }
+ }
+ if(g > 0) y.lShiftTo(g,y);
+ return y;
+}
+
+// (protected) this % n, n < 2^26
+function bnpModInt(n) {
+ var this_array = this.array;
+ if(n <= 0) return 0;
+ var d = BI_DV%n, r = (this.s<0)?n-1:0;
+ if(this.t > 0)
+ if(d == 0) r = this_array[0]%n;
+ else for(var i = this.t-1; i >= 0; --i) r = (d*r+this_array[i])%n;
+ return r;
+}
+
+// (public) 1/this % m (HAC 14.61)
+function bnModInverse(m) {
+ var ac = m.isEven();
+ if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;
+ var u = m.clone(), v = this.clone();
+ var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);
+ while(u.signum() != 0) {
+ while(u.isEven()) {
+ u.rShiftTo(1,u);
+ if(ac) {
+ if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }
+ a.rShiftTo(1,a);
+ }
+ else if(!b.isEven()) b.subTo(m,b);
+ b.rShiftTo(1,b);
+ }
+ while(v.isEven()) {
+ v.rShiftTo(1,v);
+ if(ac) {
+ if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }
+ c.rShiftTo(1,c);
+ }
+ else if(!d.isEven()) d.subTo(m,d);
+ d.rShiftTo(1,d);
+ }
+ if(u.compareTo(v) >= 0) {
+ u.subTo(v,u);
+ if(ac) a.subTo(c,a);
+ b.subTo(d,b);
+ }
+ else {
+ v.subTo(u,v);
+ if(ac) c.subTo(a,c);
+ d.subTo(b,d);
+ }
+ }
+ if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;
+ if(d.compareTo(m) >= 0) return d.subtract(m);
+ if(d.signum() < 0) d.addTo(m,d); else return d;
+ if(d.signum() < 0) return d.add(m); else return d;
+}
+
+var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509];
+var lplim = (1<<26)/lowprimes[lowprimes.length-1];
+
+// (public) test primality with certainty >= 1-.5^t
+function bnIsProbablePrime(t) {
+ var i, x = this.abs();
+ var x_array = x.array;
+ if(x.t == 1 && x_array[0] <= lowprimes[lowprimes.length-1]) {
+ for(i = 0; i < lowprimes.length; ++i)
+ if(x_array[0] == lowprimes[i]) return true;
+ return false;
+ }
+ if(x.isEven()) return false;
+ i = 1;
+ while(i < lowprimes.length) {
+ var m = lowprimes[i], j = i+1;
+ while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];
+ m = x.modInt(m);
+ while(i < j) if(m%lowprimes[i++] == 0) return false;
+ }
+ return x.millerRabin(t);
+}
+
+// (protected) true if probably prime (HAC 4.24, Miller-Rabin)
+function bnpMillerRabin(t) {
+ var n1 = this.subtract(BigInteger.ONE);
+ var k = n1.getLowestSetBit();
+ if(k <= 0) return false;
+ var r = n1.shiftRight(k);
+ t = (t+1)>>1;
+ if(t > lowprimes.length) t = lowprimes.length;
+ var a = nbi();
+ for(var i = 0; i < t; ++i) {
+ a.fromInt(lowprimes[i]);
+ var y = a.modPow(r,this);
+ if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
+ var j = 1;
+ while(j++ < k && y.compareTo(n1) != 0) {
+ y = y.modPowInt(2,this);
+ if(y.compareTo(BigInteger.ONE) == 0) return false;
+ }
+ if(y.compareTo(n1) != 0) return false;
+ }
+ }
+ return true;
+}
+
+// protected
+BigInteger.prototype.chunkSize = bnpChunkSize;
+BigInteger.prototype.toRadix = bnpToRadix;
+BigInteger.prototype.fromRadix = bnpFromRadix;
+BigInteger.prototype.fromNumber = bnpFromNumber;
+BigInteger.prototype.bitwiseTo = bnpBitwiseTo;
+BigInteger.prototype.changeBit = bnpChangeBit;
+BigInteger.prototype.addTo = bnpAddTo;
+BigInteger.prototype.dMultiply = bnpDMultiply;
+BigInteger.prototype.dAddOffset = bnpDAddOffset;
+BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;
+BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;
+BigInteger.prototype.modInt = bnpModInt;
+BigInteger.prototype.millerRabin = bnpMillerRabin;
+
+// public
+BigInteger.prototype.clone = bnClone;
+BigInteger.prototype.intValue = bnIntValue;
+BigInteger.prototype.byteValue = bnByteValue;
+BigInteger.prototype.shortValue = bnShortValue;
+BigInteger.prototype.signum = bnSigNum;
+BigInteger.prototype.toByteArray = bnToByteArray;
+BigInteger.prototype.equals = bnEquals;
+BigInteger.prototype.min = bnMin;
+BigInteger.prototype.max = bnMax;
+BigInteger.prototype.and = bnAnd;
+BigInteger.prototype.or = bnOr;
+BigInteger.prototype.xor = bnXor;
+BigInteger.prototype.andNot = bnAndNot;
+BigInteger.prototype.not = bnNot;
+BigInteger.prototype.shiftLeft = bnShiftLeft;
+BigInteger.prototype.shiftRight = bnShiftRight;
+BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;
+BigInteger.prototype.bitCount = bnBitCount;
+BigInteger.prototype.testBit = bnTestBit;
+BigInteger.prototype.setBit = bnSetBit;
+BigInteger.prototype.clearBit = bnClearBit;
+BigInteger.prototype.flipBit = bnFlipBit;
+BigInteger.prototype.add = bnAdd;
+BigInteger.prototype.subtract = bnSubtract;
+BigInteger.prototype.multiply = bnMultiply;
+BigInteger.prototype.divide = bnDivide;
+BigInteger.prototype.remainder = bnRemainder;
+BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;
+BigInteger.prototype.modPow = bnModPow;
+BigInteger.prototype.modInverse = bnModInverse;
+BigInteger.prototype.pow = bnPow;
+BigInteger.prototype.gcd = bnGCD;
+BigInteger.prototype.isProbablePrime = bnIsProbablePrime;
+
+// BigInteger interfaces not implemented in jsbn:
+
+// BigInteger(int signum, byte[] magnitude)
+// double doubleValue()
+// float floatValue()
+// int hashCode()
+// long longValue()
+// static BigInteger valueOf(long val)
+// prng4.js - uses Arcfour as a PRNG
+
+function Arcfour() {
+ this.i = 0;
+ this.j = 0;
+ this.S = new Array();
+}
+
+// Initialize arcfour context from key, an array of ints, each from [0..255]
+function ARC4init(key) {
+ var i, j, t;
+ for(i = 0; i < 256; ++i)
+ this.S[i] = i;
+ j = 0;
+ for(i = 0; i < 256; ++i) {
+ j = (j + this.S[i] + key[i % key.length]) & 255;
+ t = this.S[i];
+ this.S[i] = this.S[j];
+ this.S[j] = t;
+ }
+ this.i = 0;
+ this.j = 0;
+}
+
+function ARC4next() {
+ var t;
+ this.i = (this.i + 1) & 255;
+ this.j = (this.j + this.S[this.i]) & 255;
+ t = this.S[this.i];
+ this.S[this.i] = this.S[this.j];
+ this.S[this.j] = t;
+ return this.S[(t + this.S[this.i]) & 255];
+}
+
+Arcfour.prototype.init = ARC4init;
+Arcfour.prototype.next = ARC4next;
+
+// Plug in your RNG constructor here
+function prng_newstate() {
+ return new Arcfour();
+}
+
+// Pool size must be a multiple of 4 and greater than 32.
+// An array of bytes the size of the pool will be passed to init()
+var rng_psize = 256;
+// Random number generator - requires a PRNG backend, e.g. prng4.js
+
+// For best results, put code like
+// <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>
+// in your main HTML document.
+
+var rng_state;
+var rng_pool;
+var rng_pptr;
+
+// Mix in a 32-bit integer into the pool
+function rng_seed_int(x) {
+ rng_pool[rng_pptr++] ^= x & 255;
+ rng_pool[rng_pptr++] ^= (x >> 8) & 255;
+ rng_pool[rng_pptr++] ^= (x >> 16) & 255;
+ rng_pool[rng_pptr++] ^= (x >> 24) & 255;
+ if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;
+}
+
+// Mix in the current time (w/milliseconds) into the pool
+function rng_seed_time() {
+ // Use pre-computed date to avoid making the benchmark
+ // results dependent on the current date.
+ rng_seed_int(1122926989487);
+}
+
+// Initialize the pool with junk if needed.
+if(rng_pool == null) {
+ rng_pool = new Array();
+ rng_pptr = 0;
+ var t;
+ while(rng_pptr < rng_psize) { // extract some randomness from Math.random()
+ t = Math.floor(65536 * Math.random());
+ rng_pool[rng_pptr++] = t >>> 8;
+ rng_pool[rng_pptr++] = t & 255;
+ }
+ rng_pptr = 0;
+ rng_seed_time();
+ //rng_seed_int(window.screenX);
+ //rng_seed_int(window.screenY);
+}
+
+function rng_get_byte() {
+ if(rng_state == null) {
+ rng_seed_time();
+ rng_state = prng_newstate();
+ rng_state.init(rng_pool);
+ for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)
+ rng_pool[rng_pptr] = 0;
+ rng_pptr = 0;
+ //rng_pool = null;
+ }
+ // TODO: allow reseeding after first request
+ return rng_state.next();
+}
+
+function rng_get_bytes(ba) {
+ var i;
+ for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();
+}
+
+function SecureRandom() {}
+
+SecureRandom.prototype.nextBytes = rng_get_bytes;
+// Depends on jsbn.js and rng.js
+
+// convert a (hex) string to a bignum object
+function parseBigInt(str,r) {
+ return new BigInteger(str,r);
+}
+
+function linebrk(s,n) {
+ var ret = "";
+ var i = 0;
+ while(i + n < s.length) {
+ ret += s.substring(i,i+n) + "\n";
+ i += n;
+ }
+ return ret + s.substring(i,s.length);
+}
+
+function byte2Hex(b) {
+ if(b < 0x10)
+ return "0" + b.toString(16);
+ else
+ return b.toString(16);
+}
+
+// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint
+function pkcs1pad2(s,n) {
+ if(n < s.length + 11) {
+ alert("Message too long for RSA");
+ return null;
+ }
+ var ba = new Array();
+ var i = s.length - 1;
+ while(i >= 0 && n > 0) ba[--n] = s.charCodeAt(i--);
+ ba[--n] = 0;
+ var rng = new SecureRandom();
+ var x = new Array();
+ while(n > 2) { // random non-zero pad
+ x[0] = 0;
+ while(x[0] == 0) rng.nextBytes(x);
+ ba[--n] = x[0];
+ }
+ ba[--n] = 2;
+ ba[--n] = 0;
+ return new BigInteger(ba);
+}
+
+// "empty" RSA key constructor
+function RSAKey() {
+ this.n = null;
+ this.e = 0;
+ this.d = null;
+ this.p = null;
+ this.q = null;
+ this.dmp1 = null;
+ this.dmq1 = null;
+ this.coeff = null;
+}
+
+// Set the public key fields N and e from hex strings
+function RSASetPublic(N,E) {
+ if(N != null && E != null && N.length > 0 && E.length > 0) {
+ this.n = parseBigInt(N,16);
+ this.e = parseInt(E,16);
+ }
+ else
+ alert("Invalid RSA public key");
+}
+
+// Perform raw public operation on "x": return x^e (mod n)
+function RSADoPublic(x) {
+ return x.modPowInt(this.e, this.n);
+}
+
+// Return the PKCS#1 RSA encryption of "text" as an even-length hex string
+function RSAEncrypt(text) {
+ var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);
+ if(m == null) return null;
+ var c = this.doPublic(m);
+ if(c == null) return null;
+ var h = c.toString(16);
+ if((h.length & 1) == 0) return h; else return "0" + h;
+}
+
+// Return the PKCS#1 RSA encryption of "text" as a Base64-encoded string
+//function RSAEncryptB64(text) {
+// var h = this.encrypt(text);
+// if(h) return hex2b64(h); else return null;
+//}
+
+// protected
+RSAKey.prototype.doPublic = RSADoPublic;
+
+// public
+RSAKey.prototype.setPublic = RSASetPublic;
+RSAKey.prototype.encrypt = RSAEncrypt;
+//RSAKey.prototype.encrypt_b64 = RSAEncryptB64;
+// Depends on rsa.js and jsbn2.js
+
+// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext
+function pkcs1unpad2(d,n) {
+ var b = d.toByteArray();
+ var i = 0;
+ while(i < b.length && b[i] == 0) ++i;
+ if(b.length-i != n-1 || b[i] != 2)
+ return null;
+ ++i;
+ while(b[i] != 0)
+ if(++i >= b.length) return null;
+ var ret = "";
+ while(++i < b.length)
+ ret += String.fromCharCode(b[i]);
+ return ret;
+}
+
+// Set the private key fields N, e, and d from hex strings
+function RSASetPrivate(N,E,D) {
+ if(N != null && E != null && N.length > 0 && E.length > 0) {
+ this.n = parseBigInt(N,16);
+ this.e = parseInt(E,16);
+ this.d = parseBigInt(D,16);
+ }
+ else
+ alert("Invalid RSA private key");
+}
+
+// Set the private key fields N, e, d and CRT params from hex strings
+function RSASetPrivateEx(N,E,D,P,Q,DP,DQ,C) {
+ if(N != null && E != null && N.length > 0 && E.length > 0) {
+ this.n = parseBigInt(N,16);
+ this.e = parseInt(E,16);
+ this.d = parseBigInt(D,16);
+ this.p = parseBigInt(P,16);
+ this.q = parseBigInt(Q,16);
+ this.dmp1 = parseBigInt(DP,16);
+ this.dmq1 = parseBigInt(DQ,16);
+ this.coeff = parseBigInt(C,16);
+ }
+ else
+ alert("Invalid RSA private key");
+}
+
+// Generate a new random private key B bits long, using public expt E
+function RSAGenerate(B,E) {
+ var rng = new SecureRandom();
+ var qs = B>>1;
+ this.e = parseInt(E,16);
+ var ee = new BigInteger(E,16);
+ for(;;) {
+ for(;;) {
+ this.p = new BigInteger(B-qs,1,rng);
+ if(this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) break;
+ }
+ for(;;) {
+ this.q = new BigInteger(qs,1,rng);
+ if(this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) break;
+ }
+ if(this.p.compareTo(this.q) <= 0) {
+ var t = this.p;
+ this.p = this.q;
+ this.q = t;
+ }
+ var p1 = this.p.subtract(BigInteger.ONE);
+ var q1 = this.q.subtract(BigInteger.ONE);
+ var phi = p1.multiply(q1);
+ if(phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {
+ this.n = this.p.multiply(this.q);
+ this.d = ee.modInverse(phi);
+ this.dmp1 = this.d.mod(p1);
+ this.dmq1 = this.d.mod(q1);
+ this.coeff = this.q.modInverse(this.p);
+ break;
+ }
+ }
+}
+
+// Perform raw private operation on "x": return x^d (mod n)
+function RSADoPrivate(x) {
+ if(this.p == null || this.q == null)
+ return x.modPow(this.d, this.n);
+
+ // TODO: re-calculate any missing CRT params
+ var xp = x.mod(this.p).modPow(this.dmp1, this.p);
+ var xq = x.mod(this.q).modPow(this.dmq1, this.q);
+
+ while(xp.compareTo(xq) < 0)
+ xp = xp.add(this.p);
+ return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);
+}
+
+// Return the PKCS#1 RSA decryption of "ctext".
+// "ctext" is an even-length hex string and the output is a plain string.
+function RSADecrypt(ctext) {
+ var c = parseBigInt(ctext, 16);
+ var m = this.doPrivate(c);
+ if(m == null) return null;
+ return pkcs1unpad2(m, (this.n.bitLength()+7)>>3);
+}
+
+// Return the PKCS#1 RSA decryption of "ctext".
+// "ctext" is a Base64-encoded string and the output is a plain string.
+//function RSAB64Decrypt(ctext) {
+// var h = b64tohex(ctext);
+// if(h) return this.decrypt(h); else return null;
+//}
+
+// protected
+RSAKey.prototype.doPrivate = RSADoPrivate;
+
+// public
+RSAKey.prototype.setPrivate = RSASetPrivate;
+RSAKey.prototype.setPrivateEx = RSASetPrivateEx;
+RSAKey.prototype.generate = RSAGenerate;
+RSAKey.prototype.decrypt = RSADecrypt;
+//RSAKey.prototype.b64_decrypt = RSAB64Decrypt;
+
+
+nValue="a5261939975948bb7a58dffe5ff54e65f0498f9175f5a09288810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf0192e307727c065168c788771c561a9400fb49175e9e6aa4e23fe11af69e9412dd23b0cb6684c4c2429bce139e848ab26d0829073351f4acd36074eafd036a5eb83359d2a698d3";
+eValue="10001";
+dValue="8e9912f6d3645894e8d38cb58c0db81ff516cf4c7e5a14c7f1eddb1459d2cded4d8d293fc97aee6aefb861859c8b6a3d1dfe710463e1f9ddc72048c09751971c4a580aa51eb523357a3cc48d31cfad1d4a165066ed92d4748fb6571211da5cb14bc11b6e2df7c1a559e6d5ac1cd5c94703a22891464fba23d0d965086277a161";
+pValue="d090ce58a92c75233a6486cb0a9209bf3583b64f540c76f5294bb97d285eed33aec220bde14b2417951178ac152ceab6da7090905b478195498b352048f15e7d";
+qValue="cab575dc652bb66df15a0359609d51d1db184750c00c6698b90ef3465c99655103edbf0d54c56aec0ce3c4d22592338092a126a0cc49f65a4a30d222b411e58f";
+dmp1Value="1a24bca8e273df2f0e47c199bbf678604e7df7215480c77c8db39f49b000ce2cf7500038acfff5433b7d582a01f1826e6f4d42e1c57f5e1fef7b12aabc59fd25";
+dmq1Value="3d06982efbbe47339e1f6d36b1216b8a741d410b0c662f54f7118b27b9a4ec9d914337eb39841d8666f3034408cf94f5b62f11c402fc994fe15a05493150d9fd";
+coeffValue="3a3e731acd8960b7ff9eb81a7ff93bd1cfa74cbd56987db58b4594fb09c09084db1734c8143f98b602b981aaa9243ca28deb69b5b280ee8dcee0fd2625e53250";
+
+setupEngine(am3, 28);
+
+var TEXT = "The quick brown fox jumped over the extremely lazy frog! " +
+ "Now is the time for all good men to come to the party.";
+var encrypted;
+
+function encrypt() {
+ var RSA = new RSAKey();
+ RSA.setPublic(nValue, eValue);
+ RSA.setPrivateEx(nValue, eValue, dValue, pValue, qValue, dmp1Value, dmq1Value, coeffValue);
+ encrypted = RSA.encrypt(TEXT);
+}
+
+function decrypt() {
+ var RSA = new RSAKey();
+ RSA.setPublic(nValue, eValue);
+ RSA.setPrivateEx(nValue, eValue, dValue, pValue, qValue, dmp1Value, dmq1Value, coeffValue);
+ var decrypted = RSA.decrypt(encrypted);
+ if (decrypted != TEXT) {
+ throw new Error("Crypto operation failed");
+ }
+}
diff --git a/tests/benchmarks/script/v8/tests/deltablue.js b/tests/benchmarks/script/v8/tests/deltablue.js
new file mode 100644
index 0000000000..548fd96ffb
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/deltablue.js
@@ -0,0 +1,880 @@
+// Copyright 2008 the V8 project authors. All rights reserved.
+// Copyright 1996 John Maloney and Mario Wolczko.
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+// This implementation of the DeltaBlue benchmark is derived
+// from the Smalltalk implementation by John Maloney and Mario
+// Wolczko. Some parts have been translated directly, whereas
+// others have been modified more aggresively to make it feel
+// more like a JavaScript program.
+
+
+var DeltaBlue = new BenchmarkSuite('DeltaBlue', 66118, [
+ new Benchmark('DeltaBlue', deltaBlue)
+]);
+
+
+/**
+ * A JavaScript implementation of the DeltaBlue constraint-solving
+ * algorithm, as described in:
+ *
+ * "The DeltaBlue Algorithm: An Incremental Constraint Hierarchy Solver"
+ * Bjorn N. Freeman-Benson and John Maloney
+ * January 1990 Communications of the ACM,
+ * also available as University of Washington TR 89-08-06.
+ *
+ * Beware: this benchmark is written in a grotesque style where
+ * the constraint model is built by side-effects from constructors.
+ * I've kept it this way to avoid deviating too much from the original
+ * implementation.
+ */
+
+
+/* --- O b j e c t M o d e l --- */
+
+Object.prototype.inheritsFrom = function (shuper) {
+ function Inheriter() { }
+ Inheriter.prototype = shuper.prototype;
+ this.prototype = new Inheriter();
+ this.superConstructor = shuper;
+}
+
+function OrderedCollection() {
+ this.elms = new Array();
+}
+
+OrderedCollection.prototype.add = function (elm) {
+ this.elms.push(elm);
+}
+
+OrderedCollection.prototype.at = function (index) {
+ return this.elms[index];
+}
+
+OrderedCollection.prototype.size = function () {
+ return this.elms.length;
+}
+
+OrderedCollection.prototype.removeFirst = function () {
+ return this.elms.pop();
+}
+
+OrderedCollection.prototype.remove = function (elm) {
+ var index = 0, skipped = 0;
+ for (var i = 0; i < this.elms.length; i++) {
+ var value = this.elms[i];
+ if (value != elm) {
+ this.elms[index] = value;
+ index++;
+ } else {
+ skipped++;
+ }
+ }
+ for (var i = 0; i < skipped; i++)
+ this.elms.pop();
+}
+
+/* --- *
+ * S t r e n g t h
+ * --- */
+
+/**
+ * Strengths are used to measure the relative importance of constraints.
+ * New strengths may be inserted in the strength hierarchy without
+ * disrupting current constraints. Strengths cannot be created outside
+ * this class, so pointer comparison can be used for value comparison.
+ */
+function Strength(strengthValue, name) {
+ this.strengthValue = strengthValue;
+ this.name = name;
+}
+
+Strength.stronger = function (s1, s2) {
+ return s1.strengthValue < s2.strengthValue;
+}
+
+Strength.weaker = function (s1, s2) {
+ return s1.strengthValue > s2.strengthValue;
+}
+
+Strength.weakestOf = function (s1, s2) {
+ return this.weaker(s1, s2) ? s1 : s2;
+}
+
+Strength.strongest = function (s1, s2) {
+ return this.stronger(s1, s2) ? s1 : s2;
+}
+
+Strength.prototype.nextWeaker = function () {
+ switch (this.strengthValue) {
+ case 0: return Strength.WEAKEST;
+ case 1: return Strength.WEAK_DEFAULT;
+ case 2: return Strength.NORMAL;
+ case 3: return Strength.STRONG_DEFAULT;
+ case 4: return Strength.PREFERRED;
+ case 5: return Strength.REQUIRED;
+ }
+}
+
+// Strength constants.
+Strength.REQUIRED = new Strength(0, "required");
+Strength.STONG_PREFERRED = new Strength(1, "strongPreferred");
+Strength.PREFERRED = new Strength(2, "preferred");
+Strength.STRONG_DEFAULT = new Strength(3, "strongDefault");
+Strength.NORMAL = new Strength(4, "normal");
+Strength.WEAK_DEFAULT = new Strength(5, "weakDefault");
+Strength.WEAKEST = new Strength(6, "weakest");
+
+/* --- *
+ * C o n s t r a i n t
+ * --- */
+
+/**
+ * An abstract class representing a system-maintainable relationship
+ * (or "constraint") between a set of variables. A constraint supplies
+ * a strength instance variable; concrete subclasses provide a means
+ * of storing the constrained variables and other information required
+ * to represent a constraint.
+ */
+function Constraint(strength) {
+ this.strength = strength;
+}
+
+/**
+ * Activate this constraint and attempt to satisfy it.
+ */
+Constraint.prototype.addConstraint = function () {
+ this.addToGraph();
+ planner.incrementalAdd(this);
+}
+
+/**
+ * Attempt to find a way to enforce this constraint. If successful,
+ * record the solution, perhaps modifying the current dataflow
+ * graph. Answer the constraint that this constraint overrides, if
+ * there is one, or nil, if there isn't.
+ * Assume: I am not already satisfied.
+ */
+Constraint.prototype.satisfy = function (mark) {
+ this.chooseMethod(mark);
+ if (!this.isSatisfied()) {
+ if (this.strength == Strength.REQUIRED)
+ alert("Could not satisfy a required constraint!");
+ return null;
+ }
+ this.markInputs(mark);
+ var out = this.output();
+ var overridden = out.determinedBy;
+ if (overridden != null) overridden.markUnsatisfied();
+ out.determinedBy = this;
+ if (!planner.addPropagate(this, mark))
+ alert("Cycle encountered");
+ out.mark = mark;
+ return overridden;
+}
+
+Constraint.prototype.destroyConstraint = function () {
+ if (this.isSatisfied()) planner.incrementalRemove(this);
+ else this.removeFromGraph();
+}
+
+/**
+ * Normal constraints are not input constraints. An input constraint
+ * is one that depends on external state, such as the mouse, the
+ * keybord, a clock, or some arbitraty piece of imperative code.
+ */
+Constraint.prototype.isInput = function () {
+ return false;
+}
+
+/* --- *
+ * U n a r y C o n s t r a i n t
+ * --- */
+
+/**
+ * Abstract superclass for constraints having a single possible output
+ * variable.
+ */
+function UnaryConstraint(v, strength) {
+ UnaryConstraint.superConstructor.call(this, strength);
+ this.myOutput = v;
+ this.satisfied = false;
+ this.addConstraint();
+}
+
+UnaryConstraint.inheritsFrom(Constraint);
+
+/**
+ * Adds this constraint to the constraint graph
+ */
+UnaryConstraint.prototype.addToGraph = function () {
+ this.myOutput.addConstraint(this);
+ this.satisfied = false;
+}
+
+/**
+ * Decides if this constraint can be satisfied and records that
+ * decision.
+ */
+UnaryConstraint.prototype.chooseMethod = function (mark) {
+ this.satisfied = (this.myOutput.mark != mark)
+ && Strength.stronger(this.strength, this.myOutput.walkStrength);
+}
+
+/**
+ * Returns true if this constraint is satisfied in the current solution.
+ */
+UnaryConstraint.prototype.isSatisfied = function () {
+ return this.satisfied;
+}
+
+UnaryConstraint.prototype.markInputs = function (mark) {
+ // has no inputs
+}
+
+/**
+ * Returns the current output variable.
+ */
+UnaryConstraint.prototype.output = function () {
+ return this.myOutput;
+}
+
+/**
+ * Calculate the walkabout strength, the stay flag, and, if it is
+ * 'stay', the value for the current output of this constraint. Assume
+ * this constraint is satisfied.
+ */
+UnaryConstraint.prototype.recalculate = function () {
+ this.myOutput.walkStrength = this.strength;
+ this.myOutput.stay = !this.isInput();
+ if (this.myOutput.stay) this.execute(); // Stay optimization
+}
+
+/**
+ * Records that this constraint is unsatisfied
+ */
+UnaryConstraint.prototype.markUnsatisfied = function () {
+ this.satisfied = false;
+}
+
+UnaryConstraint.prototype.inputsKnown = function () {
+ return true;
+}
+
+UnaryConstraint.prototype.removeFromGraph = function () {
+ if (this.myOutput != null) this.myOutput.removeConstraint(this);
+ this.satisfied = false;
+}
+
+/* --- *
+ * S t a y C o n s t r a i n t
+ * --- */
+
+/**
+ * Variables that should, with some level of preference, stay the same.
+ * Planners may exploit the fact that instances, if satisfied, will not
+ * change their output during plan execution. This is called "stay
+ * optimization".
+ */
+function StayConstraint(v, str) {
+ StayConstraint.superConstructor.call(this, v, str);
+}
+
+StayConstraint.inheritsFrom(UnaryConstraint);
+
+StayConstraint.prototype.execute = function () {
+ // Stay constraints do nothing
+}
+
+/* --- *
+ * E d i t C o n s t r a i n t
+ * --- */
+
+/**
+ * A unary input constraint used to mark a variable that the client
+ * wishes to change.
+ */
+function EditConstraint(v, str) {
+ EditConstraint.superConstructor.call(this, v, str);
+}
+
+EditConstraint.inheritsFrom(UnaryConstraint);
+
+/**
+ * Edits indicate that a variable is to be changed by imperative code.
+ */
+EditConstraint.prototype.isInput = function () {
+ return true;
+}
+
+EditConstraint.prototype.execute = function () {
+ // Edit constraints do nothing
+}
+
+/* --- *
+ * B i n a r y C o n s t r a i n t
+ * --- */
+
+var Direction = new Object();
+Direction.NONE = 0;
+Direction.FORWARD = 1;
+Direction.BACKWARD = -1;
+
+/**
+ * Abstract superclass for constraints having two possible output
+ * variables.
+ */
+function BinaryConstraint(var1, var2, strength) {
+ BinaryConstraint.superConstructor.call(this, strength);
+ this.v1 = var1;
+ this.v2 = var2;
+ this.direction = Direction.NONE;
+ this.addConstraint();
+}
+
+BinaryConstraint.inheritsFrom(Constraint);
+
+/**
+ * Decides if this constraint can be satisfied and which way it
+ * should flow based on the relative strength of the variables related,
+ * and record that decision.
+ */
+BinaryConstraint.prototype.chooseMethod = function (mark) {
+ if (this.v1.mark == mark) {
+ this.direction = (this.v2.mark != mark && Strength.stronger(this.strength, this.v2.walkStrength))
+ ? Direction.FORWARD
+ : Direction.NONE;
+ }
+ if (this.v2.mark == mark) {
+ this.direction = (this.v1.mark != mark && Strength.stronger(this.strength, this.v1.walkStrength))
+ ? Direction.BACKWARD
+ : Direction.NONE;
+ }
+ if (Strength.weaker(this.v1.walkStrength, this.v2.walkStrength)) {
+ this.direction = Strength.stronger(this.strength, this.v1.walkStrength)
+ ? Direction.BACKWARD
+ : Direction.NONE;
+ } else {
+ this.direction = Strength.stronger(this.strength, this.v2.walkStrength)
+ ? Direction.FORWARD
+ : Direction.BACKWARD
+ }
+}
+
+/**
+ * Add this constraint to the constraint graph
+ */
+BinaryConstraint.prototype.addToGraph = function () {
+ this.v1.addConstraint(this);
+ this.v2.addConstraint(this);
+ this.direction = Direction.NONE;
+}
+
+/**
+ * Answer true if this constraint is satisfied in the current solution.
+ */
+BinaryConstraint.prototype.isSatisfied = function () {
+ return this.direction != Direction.NONE;
+}
+
+/**
+ * Mark the input variable with the given mark.
+ */
+BinaryConstraint.prototype.markInputs = function (mark) {
+ this.input().mark = mark;
+}
+
+/**
+ * Returns the current input variable
+ */
+BinaryConstraint.prototype.input = function () {
+ return (this.direction == Direction.FORWARD) ? this.v1 : this.v2;
+}
+
+/**
+ * Returns the current output variable
+ */
+BinaryConstraint.prototype.output = function () {
+ return (this.direction == Direction.FORWARD) ? this.v2 : this.v1;
+}
+
+/**
+ * Calculate the walkabout strength, the stay flag, and, if it is
+ * 'stay', the value for the current output of this
+ * constraint. Assume this constraint is satisfied.
+ */
+BinaryConstraint.prototype.recalculate = function () {
+ var ihn = this.input(), out = this.output();
+ out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength);
+ out.stay = ihn.stay;
+ if (out.stay) this.execute();
+}
+
+/**
+ * Record the fact that this constraint is unsatisfied.
+ */
+BinaryConstraint.prototype.markUnsatisfied = function () {
+ this.direction = Direction.NONE;
+}
+
+BinaryConstraint.prototype.inputsKnown = function (mark) {
+ var i = this.input();
+ return i.mark == mark || i.stay || i.determinedBy == null;
+}
+
+BinaryConstraint.prototype.removeFromGraph = function () {
+ if (this.v1 != null) this.v1.removeConstraint(this);
+ if (this.v2 != null) this.v2.removeConstraint(this);
+ this.direction = Direction.NONE;
+}
+
+/* --- *
+ * S c a l e C o n s t r a i n t
+ * --- */
+
+/**
+ * Relates two variables by the linear scaling relationship: "v2 =
+ * (v1 * scale) + offset". Either v1 or v2 may be changed to maintain
+ * this relationship but the scale factor and offset are considered
+ * read-only.
+ */
+function ScaleConstraint(src, scale, offset, dest, strength) {
+ this.direction = Direction.NONE;
+ this.scale = scale;
+ this.offset = offset;
+ ScaleConstraint.superConstructor.call(this, src, dest, strength);
+}
+
+ScaleConstraint.inheritsFrom(BinaryConstraint);
+
+/**
+ * Adds this constraint to the constraint graph.
+ */
+ScaleConstraint.prototype.addToGraph = function () {
+ ScaleConstraint.superConstructor.prototype.addToGraph.call(this);
+ this.scale.addConstraint(this);
+ this.offset.addConstraint(this);
+}
+
+ScaleConstraint.prototype.removeFromGraph = function () {
+ ScaleConstraint.superConstructor.prototype.removeFromGraph.call(this);
+ if (this.scale != null) this.scale.removeConstraint(this);
+ if (this.offset != null) this.offset.removeConstraint(this);
+}
+
+ScaleConstraint.prototype.markInputs = function (mark) {
+ ScaleConstraint.superConstructor.prototype.markInputs.call(this, mark);
+ this.scale.mark = this.offset.mark = mark;
+}
+
+/**
+ * Enforce this constraint. Assume that it is satisfied.
+ */
+ScaleConstraint.prototype.execute = function () {
+ if (this.direction == Direction.FORWARD) {
+ this.v2.value = this.v1.value * this.scale.value + this.offset.value;
+ } else {
+ this.v1.value = (this.v2.value - this.offset.value) / this.scale.value;
+ }
+}
+
+/**
+ * Calculate the walkabout strength, the stay flag, and, if it is
+ * 'stay', the value for the current output of this constraint. Assume
+ * this constraint is satisfied.
+ */
+ScaleConstraint.prototype.recalculate = function () {
+ var ihn = this.input(), out = this.output();
+ out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength);
+ out.stay = ihn.stay && this.scale.stay && this.offset.stay;
+ if (out.stay) this.execute();
+}
+
+/* --- *
+ * E q u a l i t y C o n s t r a i n t
+ * --- */
+
+/**
+ * Constrains two variables to have the same value.
+ */
+function EqualityConstraint(var1, var2, strength) {
+ EqualityConstraint.superConstructor.call(this, var1, var2, strength);
+}
+
+EqualityConstraint.inheritsFrom(BinaryConstraint);
+
+/**
+ * Enforce this constraint. Assume that it is satisfied.
+ */
+EqualityConstraint.prototype.execute = function () {
+ this.output().value = this.input().value;
+}
+
+/* --- *
+ * V a r i a b l e
+ * --- */
+
+/**
+ * A constrained variable. In addition to its value, it maintain the
+ * structure of the constraint graph, the current dataflow graph, and
+ * various parameters of interest to the DeltaBlue incremental
+ * constraint solver.
+ **/
+function Variable(name, initialValue) {
+ this.value = initialValue || 0;
+ this.constraints = new OrderedCollection();
+ this.determinedBy = null;
+ this.mark = 0;
+ this.walkStrength = Strength.WEAKEST;
+ this.stay = true;
+ this.name = name;
+}
+
+/**
+ * Add the given constraint to the set of all constraints that refer
+ * this variable.
+ */
+Variable.prototype.addConstraint = function (c) {
+ this.constraints.add(c);
+}
+
+/**
+ * Removes all traces of c from this variable.
+ */
+Variable.prototype.removeConstraint = function (c) {
+ this.constraints.remove(c);
+ if (this.determinedBy == c) this.determinedBy = null;
+}
+
+/* --- *
+ * P l a n n e r
+ * --- */
+
+/**
+ * The DeltaBlue planner
+ */
+function Planner() {
+ this.currentMark = 0;
+}
+
+/**
+ * Attempt to satisfy the given constraint and, if successful,
+ * incrementally update the dataflow graph. Details: If satifying
+ * the constraint is successful, it may override a weaker constraint
+ * on its output. The algorithm attempts to resatisfy that
+ * constraint using some other method. This process is repeated
+ * until either a) it reaches a variable that was not previously
+ * determined by any constraint or b) it reaches a constraint that
+ * is too weak to be satisfied using any of its methods. The
+ * variables of constraints that have been processed are marked with
+ * a unique mark value so that we know where we've been. This allows
+ * the algorithm to avoid getting into an infinite loop even if the
+ * constraint graph has an inadvertent cycle.
+ */
+Planner.prototype.incrementalAdd = function (c) {
+ var mark = this.newMark();
+ var overridden = c.satisfy(mark);
+ while (overridden != null)
+ overridden = overridden.satisfy(mark);
+}
+
+/**
+ * Entry point for retracting a constraint. Remove the given
+ * constraint and incrementally update the dataflow graph.
+ * Details: Retracting the given constraint may allow some currently
+ * unsatisfiable downstream constraint to be satisfied. We therefore collect
+ * a list of unsatisfied downstream constraints and attempt to
+ * satisfy each one in turn. This list is traversed by constraint
+ * strength, strongest first, as a heuristic for avoiding
+ * unnecessarily adding and then overriding weak constraints.
+ * Assume: c is satisfied.
+ */
+Planner.prototype.incrementalRemove = function (c) {
+ var out = c.output();
+ c.markUnsatisfied();
+ c.removeFromGraph();
+ var unsatisfied = this.removePropagateFrom(out);
+ var strength = Strength.REQUIRED;
+ do {
+ for (var i = 0; i < unsatisfied.size(); i++) {
+ var u = unsatisfied.at(i);
+ if (u.strength == strength)
+ this.incrementalAdd(u);
+ }
+ strength = strength.nextWeaker();
+ } while (strength != Strength.WEAKEST);
+}
+
+/**
+ * Select a previously unused mark value.
+ */
+Planner.prototype.newMark = function () {
+ return ++this.currentMark;
+}
+
+/**
+ * Extract a plan for resatisfaction starting from the given source
+ * constraints, usually a set of input constraints. This method
+ * assumes that stay optimization is desired; the plan will contain
+ * only constraints whose output variables are not stay. Constraints
+ * that do no computation, such as stay and edit constraints, are
+ * not included in the plan.
+ * Details: The outputs of a constraint are marked when it is added
+ * to the plan under construction. A constraint may be appended to
+ * the plan when all its input variables are known. A variable is
+ * known if either a) the variable is marked (indicating that has
+ * been computed by a constraint appearing earlier in the plan), b)
+ * the variable is 'stay' (i.e. it is a constant at plan execution
+ * time), or c) the variable is not determined by any
+ * constraint. The last provision is for past states of history
+ * variables, which are not stay but which are also not computed by
+ * any constraint.
+ * Assume: sources are all satisfied.
+ */
+Planner.prototype.makePlan = function (sources) {
+ var mark = this.newMark();
+ var plan = new Plan();
+ var todo = sources;
+ while (todo.size() > 0) {
+ var c = todo.removeFirst();
+ if (c.output().mark != mark && c.inputsKnown(mark)) {
+ plan.addConstraint(c);
+ c.output().mark = mark;
+ this.addConstraintsConsumingTo(c.output(), todo);
+ }
+ }
+ return plan;
+}
+
+/**
+ * Extract a plan for resatisfying starting from the output of the
+ * given constraints, usually a set of input constraints.
+ */
+Planner.prototype.extractPlanFromConstraints = function (constraints) {
+ var sources = new OrderedCollection();
+ for (var i = 0; i < constraints.size(); i++) {
+ var c = constraints.at(i);
+ if (c.isInput() && c.isSatisfied())
+ // not in plan already and eligible for inclusion
+ sources.add(c);
+ }
+ return this.makePlan(sources);
+}
+
+/**
+ * Recompute the walkabout strengths and stay flags of all variables
+ * downstream of the given constraint and recompute the actual
+ * values of all variables whose stay flag is true. If a cycle is
+ * detected, remove the given constraint and answer
+ * false. Otherwise, answer true.
+ * Details: Cycles are detected when a marked variable is
+ * encountered downstream of the given constraint. The sender is
+ * assumed to have marked the inputs of the given constraint with
+ * the given mark. Thus, encountering a marked node downstream of
+ * the output constraint means that there is a path from the
+ * constraint's output to one of its inputs.
+ */
+Planner.prototype.addPropagate = function (c, mark) {
+ var todo = new OrderedCollection();
+ todo.add(c);
+ while (todo.size() > 0) {
+ var d = todo.removeFirst();
+ if (d.output().mark == mark) {
+ this.incrementalRemove(c);
+ return false;
+ }
+ d.recalculate();
+ this.addConstraintsConsumingTo(d.output(), todo);
+ }
+ return true;
+}
+
+
+/**
+ * Update the walkabout strengths and stay flags of all variables
+ * downstream of the given constraint. Answer a collection of
+ * unsatisfied constraints sorted in order of decreasing strength.
+ */
+Planner.prototype.removePropagateFrom = function (out) {
+ out.determinedBy = null;
+ out.walkStrength = Strength.WEAKEST;
+ out.stay = true;
+ var unsatisfied = new OrderedCollection();
+ var todo = new OrderedCollection();
+ todo.add(out);
+ while (todo.size() > 0) {
+ var v = todo.removeFirst();
+ for (var i = 0; i < v.constraints.size(); i++) {
+ var c = v.constraints.at(i);
+ if (!c.isSatisfied())
+ unsatisfied.add(c);
+ }
+ var determining = v.determinedBy;
+ for (var i = 0; i < v.constraints.size(); i++) {
+ var next = v.constraints.at(i);
+ if (next != determining && next.isSatisfied()) {
+ next.recalculate();
+ todo.add(next.output());
+ }
+ }
+ }
+ return unsatisfied;
+}
+
+Planner.prototype.addConstraintsConsumingTo = function (v, coll) {
+ var determining = v.determinedBy;
+ var cc = v.constraints;
+ for (var i = 0; i < cc.size(); i++) {
+ var c = cc.at(i);
+ if (c != determining && c.isSatisfied())
+ coll.add(c);
+ }
+}
+
+/* --- *
+ * P l a n
+ * --- */
+
+/**
+ * A Plan is an ordered list of constraints to be executed in sequence
+ * to resatisfy all currently satisfiable constraints in the face of
+ * one or more changing inputs.
+ */
+function Plan() {
+ this.v = new OrderedCollection();
+}
+
+Plan.prototype.addConstraint = function (c) {
+ this.v.add(c);
+}
+
+Plan.prototype.size = function () {
+ return this.v.size();
+}
+
+Plan.prototype.constraintAt = function (index) {
+ return this.v.at(index);
+}
+
+Plan.prototype.execute = function () {
+ for (var i = 0; i < this.size(); i++) {
+ var c = this.constraintAt(i);
+ c.execute();
+ }
+}
+
+/* --- *
+ * M a i n
+ * --- */
+
+/**
+ * This is the standard DeltaBlue benchmark. A long chain of equality
+ * constraints is constructed with a stay constraint on one end. An
+ * edit constraint is then added to the opposite end and the time is
+ * measured for adding and removing this constraint, and extracting
+ * and executing a constraint satisfaction plan. There are two cases.
+ * In case 1, the added constraint is stronger than the stay
+ * constraint and values must propagate down the entire length of the
+ * chain. In case 2, the added constraint is weaker than the stay
+ * constraint so it cannot be accomodated. The cost in this case is,
+ * of course, very low. Typical situations lie somewhere between these
+ * two extremes.
+ */
+function chainTest(n) {
+ planner = new Planner();
+ var prev = null, first = null, last = null;
+
+ // Build chain of n equality constraints
+ for (var i = 0; i <= n; i++) {
+ var name = "v" + i;
+ var v = new Variable(name);
+ if (prev != null)
+ new EqualityConstraint(prev, v, Strength.REQUIRED);
+ if (i == 0) first = v;
+ if (i == n) last = v;
+ prev = v;
+ }
+
+ new StayConstraint(last, Strength.STRONG_DEFAULT);
+ var edit = new EditConstraint(first, Strength.PREFERRED);
+ var edits = new OrderedCollection();
+ edits.add(edit);
+ var plan = planner.extractPlanFromConstraints(edits);
+ for (var i = 0; i < 100; i++) {
+ first.value = i;
+ plan.execute();
+ if (last.value != i)
+ alert("Chain test failed.");
+ }
+}
+
+/**
+ * This test constructs a two sets of variables related to each
+ * other by a simple linear transformation (scale and offset). The
+ * time is measured to change a variable on either side of the
+ * mapping and to change the scale and offset factors.
+ */
+function projectionTest(n) {
+ planner = new Planner();
+ var scale = new Variable("scale", 10);
+ var offset = new Variable("offset", 1000);
+ var src = null, dst = null;
+
+ var dests = new OrderedCollection();
+ for (var i = 0; i < n; i++) {
+ src = new Variable("src" + i, i);
+ dst = new Variable("dst" + i, i);
+ dests.add(dst);
+ new StayConstraint(src, Strength.NORMAL);
+ new ScaleConstraint(src, scale, offset, dst, Strength.REQUIRED);
+ }
+
+ change(src, 17);
+ if (dst.value != 1170) alert("Projection 1 failed");
+ change(dst, 1050);
+ if (src.value != 5) alert("Projection 2 failed");
+ change(scale, 5);
+ for (var i = 0; i < n - 1; i++) {
+ if (dests.at(i).value != i * 5 + 1000)
+ alert("Projection 3 failed");
+ }
+ change(offset, 2000);
+ for (var i = 0; i < n - 1; i++) {
+ if (dests.at(i).value != i * 5 + 2000)
+ alert("Projection 4 failed");
+ }
+}
+
+function change(v, newValue) {
+ var edit = new EditConstraint(v, Strength.PREFERRED);
+ var edits = new OrderedCollection();
+ edits.add(edit);
+ var plan = planner.extractPlanFromConstraints(edits);
+ for (var i = 0; i < 10; i++) {
+ v.value = newValue;
+ plan.execute();
+ }
+ edit.destroyConstraint();
+}
+
+// Global variable holding the current planner.
+var planner = null;
+
+function deltaBlue() {
+ chainTest(100);
+ projectionTest(100);
+}
diff --git a/tests/benchmarks/script/v8/tests/earley-boyer.js b/tests/benchmarks/script/v8/tests/earley-boyer.js
new file mode 100644
index 0000000000..1be480e8ee
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/earley-boyer.js
@@ -0,0 +1,4684 @@
+// This file is automatically generated by scheme2js, except for the
+// benchmark harness code at the beginning and end of the file.
+
+var EarleyBoyer = new BenchmarkSuite('EarleyBoyer', 666463, [
+ new Benchmark("Earley", function () { BgL_earleyzd2benchmarkzd2(); }),
+ new Benchmark("Boyer", function () { BgL_nboyerzd2benchmarkzd2(); })
+]);
+
+
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/************* GENERATED FILE - DO NOT EDIT *************/
+/*
+ * To use write/prints/... the default-output port has to be set first.
+ * Simply setting SC_DEFAULT_OUT and SC_ERROR_OUT to the desired values
+ * should do the trick.
+ * In the following example the std-out and error-port are redirected to
+ * a DIV.
+function initRuntime() {
+ function escapeHTML(s) {
+ var tmp = s;
+ tmp = tmp.replace(/&/g, "&amp;");
+ tmp = tmp.replace(/</g, "&lt;");
+ tmp = tmp.replace(/>/g, "&gt;");
+ tmp = tmp.replace(/ /g, "&nbsp;");
+ tmp = tmp.replace(/\n/g, "<br />");
+ tmp = tmp.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp");
+ return tmp;
+
+ }
+
+ document.write("<div id='stdout'></div>");
+ SC_DEFAULT_OUT = new sc_GenericOutputPort(
+ function(s) {
+ var stdout = document.getElementById('stdout');
+ stdout.innerHTML = stdout.innerHTML + escapeHTML(s);
+ });
+ SC_ERROR_OUT = SC_DEFAULT_OUT;
+}
+*/
+
+
+function sc_print_debug() {
+ sc_print.apply(null, arguments);
+}
+/*** META ((export *js*)) */
+var sc_JS_GLOBALS = this;
+
+var __sc_LINE=-1;
+var __sc_FILE="";
+
+/*** META ((export #t)) */
+function sc_alert() {
+ var len = arguments.length;
+ var s = "";
+ var i;
+
+ for( i = 0; i < len; i++ ) {
+ s += sc_toDisplayString(arguments[ i ]);
+ }
+
+ return alert( s );
+}
+
+/*** META ((export #t)) */
+function sc_typeof( x ) {
+ return typeof x;
+}
+
+/*** META ((export #t)) */
+function sc_error() {
+ var a = [sc_jsstring2symbol("*error*")];
+ for (var i = 0; i < arguments.length; i++) {
+ a[i+1] = arguments[i];
+ }
+ throw a;
+}
+
+/*** META ((export #t)
+ (peephole (prefix "throw ")))
+*/
+function sc_raise(obj) {
+ throw obj;
+}
+
+/*** META ((export with-handler-lambda)) */
+function sc_withHandlerLambda(handler, body) {
+ try {
+ return body();
+ } catch(e) {
+ if (!e._internalException)
+ return handler(e);
+ else
+ throw e;
+ }
+}
+
+var sc_properties = new Object();
+
+/*** META ((export #t)) */
+function sc_putpropBang(sym, key, val) {
+ var ht = sc_properties[sym];
+ if (!ht) {
+ ht = new Object();
+ sc_properties[sym] = ht;
+ }
+ ht[key] = val;
+}
+
+/*** META ((export #t)) */
+function sc_getprop(sym, key) {
+ var ht = sc_properties[sym];
+ if (ht) {
+ if (key in ht)
+ return ht[key];
+ else
+ return false;
+ } else
+ return false;
+}
+
+/*** META ((export #t)) */
+function sc_rempropBang(sym, key) {
+ var ht = sc_properties[sym];
+ if (ht)
+ delete ht[key];
+}
+
+/*** META ((export #t)) */
+function sc_any2String(o) {
+ return jsstring2string(sc_toDisplayString(o));
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "==="))
+ (type bool))
+*/
+function sc_isEqv(o1, o2) {
+ return (o1 === o2);
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "==="))
+ (type bool))
+*/
+function sc_isEq(o1, o2) {
+ return (o1 === o2);
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isNumber(n) {
+ return (typeof n === "number");
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isComplex(n) {
+ return sc_isNumber(n);
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isReal(n) {
+ return sc_isNumber(n);
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isRational(n) {
+ return sc_isReal(n);
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isInteger(n) {
+ return (parseInt(n) === n);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix ", false")))
+*/
+// we don't have exact numbers...
+function sc_isExact(n) {
+ return false;
+}
+
+/*** META ((export #t)
+ (peephole (postfix ", true"))
+ (type bool))
+*/
+function sc_isInexact(n) {
+ return true;
+}
+
+/*** META ((export = =fx =fl)
+ (type bool)
+ (peephole (infix 2 2 "===")))
+*/
+function sc_equal(x) {
+ for (var i = 1; i < arguments.length; i++)
+ if (x !== arguments[i])
+ return false;
+ return true;
+}
+
+/*** META ((export < <fx <fl)
+ (type bool)
+ (peephole (infix 2 2 "<")))
+*/
+function sc_less(x) {
+ for (var i = 1; i < arguments.length; i++) {
+ if (x >= arguments[i])
+ return false;
+ x = arguments[i];
+ }
+ return true;
+}
+
+/*** META ((export > >fx >fl)
+ (type bool)
+ (peephole (infix 2 2 ">")))
+*/
+function sc_greater(x, y) {
+ for (var i = 1; i < arguments.length; i++) {
+ if (x <= arguments[i])
+ return false;
+ x = arguments[i];
+ }
+ return true;
+}
+
+/*** META ((export <= <=fx <=fl)
+ (type bool)
+ (peephole (infix 2 2 "<=")))
+*/
+function sc_lessEqual(x, y) {
+ for (var i = 1; i < arguments.length; i++) {
+ if (x > arguments[i])
+ return false;
+ x = arguments[i];
+ }
+ return true;
+}
+
+/*** META ((export >= >=fl >=fx)
+ (type bool)
+ (peephole (infix 2 2 ">=")))
+*/
+function sc_greaterEqual(x, y) {
+ for (var i = 1; i < arguments.length; i++) {
+ if (x < arguments[i])
+ return false;
+ x = arguments[i];
+ }
+ return true;
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "=== 0")))
+*/
+function sc_isZero(x) {
+ return (x === 0);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "> 0")))
+*/
+function sc_isPositive(x) {
+ return (x > 0);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "< 0")))
+*/
+function sc_isNegative(x) {
+ return (x < 0);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "%2===1")))
+*/
+function sc_isOdd(x) {
+ return (x % 2 === 1);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "%2===0")))
+*/
+function sc_isEven(x) {
+ return (x % 2 === 0);
+}
+
+/*** META ((export #t)) */
+var sc_max = Math.max;
+/*** META ((export #t)) */
+var sc_min = Math.min;
+
+/*** META ((export + +fx +fl)
+ (peephole (infix 0 #f "+" "0")))
+*/
+function sc_plus() {
+ var sum = 0;
+ for (var i = 0; i < arguments.length; i++)
+ sum += arguments[i];
+ return sum;
+}
+
+/*** META ((export * *fx *fl)
+ (peephole (infix 0 #f "*" "1")))
+*/
+function sc_multi() {
+ var product = 1;
+ for (var i = 0; i < arguments.length; i++)
+ product *= arguments[i];
+ return product;
+}
+
+/*** META ((export - -fx -fl)
+ (peephole (minus)))
+*/
+function sc_minus(x) {
+ if (arguments.length === 1)
+ return -x;
+ else {
+ var res = x;
+ for (var i = 1; i < arguments.length; i++)
+ res -= arguments[i];
+ return res;
+ }
+}
+
+/*** META ((export / /fl)
+ (peephole (div)))
+*/
+function sc_div(x) {
+ if (arguments.length === 1)
+ return 1/x;
+ else {
+ var res = x;
+ for (var i = 1; i < arguments.length; i++)
+ res /= arguments[i];
+ return res;
+ }
+}
+
+/*** META ((export #t)) */
+var sc_abs = Math.abs;
+
+/*** META ((export quotient /fx)
+ (peephole (hole 2 "parseInt(" x "/" y ")")))
+*/
+function sc_quotient(x, y) {
+ return parseInt(x / y);
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "%")))
+*/
+function sc_remainder(x, y) {
+ return x % y;
+}
+
+/*** META ((export #t)
+ (peephole (modulo)))
+*/
+function sc_modulo(x, y) {
+ var remainder = x % y;
+ // if they don't have the same sign
+ if ((remainder * y) < 0)
+ return remainder + y;
+ else
+ return remainder;
+}
+
+function sc_euclid_gcd(a, b) {
+ var temp;
+ if (a === 0) return b;
+ if (b === 0) return a;
+ if (a < 0) {a = -a;};
+ if (b < 0) {b = -b;};
+ if (b > a) {temp = a; a = b; b = temp;};
+ while (true) {
+ a %= b;
+ if(a === 0) {return b;};
+ b %= a;
+ if(b === 0) {return a;};
+ };
+ return b;
+}
+
+/*** META ((export #t)) */
+function sc_gcd() {
+ var gcd = 0;
+ for (var i = 0; i < arguments.length; i++)
+ gcd = sc_euclid_gcd(gcd, arguments[i]);
+ return gcd;
+}
+
+/*** META ((export #t)) */
+function sc_lcm() {
+ var lcm = 1;
+ for (var i = 0; i < arguments.length; i++) {
+ var f = Math.round(arguments[i] / sc_euclid_gcd(arguments[i], lcm));
+ lcm *= Math.abs(f);
+ }
+ return lcm;
+}
+
+// LIMITATION: numerator and denominator don't make sense in floating point world.
+//var SC_MAX_DECIMALS = 1000000
+//
+// function sc_numerator(x) {
+// var rounded = Math.round(x * SC_MAX_DECIMALS);
+// return Math.round(rounded / sc_euclid_gcd(rounded, SC_MAX_DECIMALS));
+// }
+
+// function sc_denominator(x) {
+// var rounded = Math.round(x * SC_MAX_DECIMALS);
+// return Math.round(SC_MAX_DECIMALS / sc_euclid_gcd(rounded, SC_MAX_DECIMALS));
+// }
+
+/*** META ((export #t)) */
+var sc_floor = Math.floor;
+/*** META ((export #t)) */
+var sc_ceiling = Math.ceil;
+/*** META ((export #t)) */
+var sc_truncate = parseInt;
+/*** META ((export #t)) */
+var sc_round = Math.round;
+
+// LIMITATION: sc_rationalize doesn't make sense in a floating point world.
+
+/*** META ((export #t)) */
+var sc_exp = Math.exp;
+/*** META ((export #t)) */
+var sc_log = Math.log;
+/*** META ((export #t)) */
+var sc_sin = Math.sin;
+/*** META ((export #t)) */
+var sc_cos = Math.cos;
+/*** META ((export #t)) */
+var sc_tan = Math.tan;
+/*** META ((export #t)) */
+var sc_asin = Math.asin;
+/*** META ((export #t)) */
+var sc_acos = Math.acos;
+/*** META ((export #t)) */
+var sc_atan = Math.atan;
+
+/*** META ((export #t)) */
+var sc_sqrt = Math.sqrt;
+/*** META ((export #t)) */
+var sc_expt = Math.pow;
+
+// LIMITATION: we don't have complex numbers.
+// LIMITATION: the following functions are hence not implemented.
+// LIMITATION: make-rectangular, make-polar, real-part, imag-part, magnitude, angle
+// LIMITATION: 2 argument atan
+
+/*** META ((export #t)
+ (peephole (id)))
+*/
+function sc_exact2inexact(x) {
+ return x;
+}
+
+/*** META ((export #t)
+ (peephole (id)))
+*/
+function sc_inexact2exact(x) {
+ return x;
+}
+
+function sc_number2jsstring(x, radix) {
+ if (radix)
+ return x.toString(radix);
+ else
+ return x.toString();
+}
+
+function sc_jsstring2number(s, radix) {
+ if (s === "") return false;
+
+ if (radix) {
+ var t = parseInt(s, radix);
+ if (!t && t !== 0) return false;
+ // verify that each char is in range. (parseInt ignores leading
+ // white and trailing chars)
+ var allowedChars = "01234567890abcdefghijklmnopqrstuvwxyz".substring(0, radix+1);
+ if ((new RegExp("^["+allowedChars+"]*$", "i")).test(s))
+ return t;
+ else return false;
+ } else {
+ var t = +s; // does not ignore trailing chars.
+ if (!t && t !== 0) return false;
+ // simply verify that first char is not whitespace.
+ var c = s.charAt(0);
+ // if +c is 0, but the char is not "0", then we have a whitespace.
+ if (+c === 0 && c !== "0") return false;
+ return t;
+ }
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (not)))
+*/
+function sc_not(b) {
+ return b === false;
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isBoolean(b) {
+ return (b === true) || (b === false);
+}
+
+function sc_Pair(car, cdr) {
+ this.car = car;
+ this.cdr = cdr;
+}
+
+sc_Pair.prototype.toString = function() {
+ return sc_toDisplayString(this);
+};
+sc_Pair.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) {
+ var current = this;
+
+ var res = "(";
+
+ while(true) {
+ res += writeOrDisplay(current.car);
+ if (sc_isPair(current.cdr)) {
+ res += " ";
+ current = current.cdr;
+ } else if (current.cdr !== null) {
+ res += " . " + writeOrDisplay(current.cdr);
+ break;
+ } else // current.cdr == null
+ break;
+ }
+
+ res += ")";
+
+ return res;
+};
+sc_Pair.prototype.sc_toDisplayString = function() {
+ return this.sc_toWriteOrDisplayString(sc_toDisplayString);
+};
+sc_Pair.prototype.sc_toWriteString = function() {
+ return this.sc_toWriteOrDisplayString(sc_toWriteString);
+};
+// sc_Pair.prototype.sc_toWriteCircleString in IO.js
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix " instanceof sc_Pair")))
+*/
+function sc_isPair(p) {
+ return (p instanceof sc_Pair);
+}
+
+function sc_isPairEqual(p1, p2, comp) {
+ return (comp(p1.car, p2.car) && comp(p1.cdr, p2.cdr));
+}
+
+/*** META ((export #t)
+ (peephole (hole 2 "new sc_Pair(" car ", " cdr ")")))
+*/
+function sc_cons(car, cdr) {
+ return new sc_Pair(car, cdr);
+}
+
+/*** META ((export cons*)) */
+function sc_consStar() {
+ var res = arguments[arguments.length - 1];
+ for (var i = arguments.length-2; i >= 0; i--)
+ res = new sc_Pair(arguments[i], res);
+ return res;
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".car")))
+*/
+function sc_car(p) {
+ return p.car;
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".cdr")))
+*/
+function sc_cdr(p) {
+ return p.cdr;
+}
+
+/*** META ((export #t)
+ (peephole (hole 2 p ".car = " val)))
+*/
+function sc_setCarBang(p, val) {
+ p.car = val;
+}
+
+/*** META ((export #t)
+ (peephole (hole 2 p ".cdr = " val)))
+*/
+function sc_setCdrBang(p, val) {
+ p.cdr = val;
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".car.car")))
+*/
+function sc_caar(p) { return p.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car")))
+*/
+function sc_cadr(p) { return p.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr")))
+*/
+function sc_cdar(p) { return p.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr")))
+*/
+function sc_cddr(p) { return p.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.car")))
+*/
+function sc_caaar(p) { return p.car.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.car")))
+*/
+function sc_cadar(p) { return p.car.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.car")))
+*/
+function sc_caadr(p) { return p.cdr.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.car")))
+*/
+function sc_caddr(p) { return p.cdr.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.cdr")))
+*/
+function sc_cdaar(p) { return p.car.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.cdr")))
+*/
+function sc_cdadr(p) { return p.cdr.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.cdr")))
+*/
+function sc_cddar(p) { return p.car.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.cdr")))
+*/
+function sc_cdddr(p) { return p.cdr.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.car.car")))
+*/
+function sc_caaaar(p) { return p.car.car.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.car.car")))
+*/
+function sc_caadar(p) { return p.car.cdr.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.car.car")))
+*/
+function sc_caaadr(p) { return p.cdr.car.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.car.car")))
+*/
+function sc_caaddr(p) { return p.cdr.cdr.car.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.car.cdr")))
+*/
+function sc_cdaaar(p) { return p.car.car.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.car.cdr")))
+*/
+function sc_cdadar(p) { return p.car.cdr.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.car.cdr")))
+*/
+function sc_cdaadr(p) { return p.cdr.car.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.car.cdr")))
+*/
+function sc_cdaddr(p) { return p.cdr.cdr.car.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.cdr.car")))
+*/
+function sc_cadaar(p) { return p.car.car.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.cdr.car")))
+*/
+function sc_caddar(p) { return p.car.cdr.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.cdr.car")))
+*/
+function sc_cadadr(p) { return p.cdr.car.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.cdr.car")))
+*/
+function sc_cadddr(p) { return p.cdr.cdr.cdr.car; }
+/*** META ((export #t)
+ (peephole (postfix ".car.car.cdr.cdr")))
+*/
+function sc_cddaar(p) { return p.car.car.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".car.cdr.cdr.cdr")))
+*/
+function sc_cdddar(p) { return p.car.cdr.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.car.cdr.cdr")))
+*/
+function sc_cddadr(p) { return p.cdr.car.cdr.cdr; }
+/*** META ((export #t)
+ (peephole (postfix ".cdr.cdr.cdr.cdr")))
+*/
+function sc_cddddr(p) { return p.cdr.cdr.cdr.cdr; }
+
+/*** META ((export #t)) */
+function sc_lastPair(l) {
+ if (!sc_isPair(l)) sc_error("sc_lastPair: pair expected");
+ var res = l;
+ var cdr = l.cdr;
+ while (sc_isPair(cdr)) {
+ res = cdr;
+ cdr = res.cdr;
+ }
+ return res;
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix " === null")))
+*/
+function sc_isNull(o) {
+ return (o === null);
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isList(o) {
+ var rabbit;
+ var turtle;
+
+ var rabbit = o;
+ var turtle = o;
+ while (true) {
+ if (rabbit === null ||
+ (rabbit instanceof sc_Pair && rabbit.cdr === null))
+ return true; // end of list
+ else if ((rabbit instanceof sc_Pair) &&
+ (rabbit.cdr instanceof sc_Pair)) {
+ rabbit = rabbit.cdr.cdr;
+ turtle = turtle.cdr;
+ if (rabbit === turtle) return false; // cycle
+ } else
+ return false; // not pair
+ }
+}
+
+/*** META ((export #t)) */
+function sc_list() {
+ var res = null;
+ var a = arguments;
+ for (var i = a.length-1; i >= 0; i--)
+ res = new sc_Pair(a[i], res);
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_iota(num, init) {
+ var res = null;
+ if (!init) init = 0;
+ for (var i = num - 1; i >= 0; i--)
+ res = new sc_Pair(i + init, res);
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_makeList(nbEls, fill) {
+ var res = null;
+ for (var i = 0; i < nbEls; i++)
+ res = new sc_Pair(fill, res);
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_length(l) {
+ var res = 0;
+ while (l !== null) {
+ res++;
+ l = l.cdr;
+ }
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_remq(o, l) {
+ var dummy = { cdr : null };
+ var tail = dummy;
+ while (l !== null) {
+ if (l.car !== o) {
+ tail.cdr = sc_cons(l.car, null);
+ tail = tail.cdr;
+ }
+ l = l.cdr;
+ }
+ return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_remqBang(o, l) {
+ var dummy = { cdr : null };
+ var tail = dummy;
+ var needsAssig = true;
+ while (l !== null) {
+ if (l.car === o) {
+ needsAssig = true;
+ } else {
+ if (needsAssig) {
+ tail.cdr = l;
+ needsAssig = false;
+ }
+ tail = l;
+ }
+ l = l.cdr;
+ }
+ tail.cdr = null;
+ return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_delete(o, l) {
+ var dummy = { cdr : null };
+ var tail = dummy;
+ while (l !== null) {
+ if (!sc_isEqual(l.car, o)) {
+ tail.cdr = sc_cons(l.car, null);
+ tail = tail.cdr;
+ }
+ l = l.cdr;
+ }
+ return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_deleteBang(o, l) {
+ var dummy = { cdr : null };
+ var tail = dummy;
+ var needsAssig = true;
+ while (l !== null) {
+ if (sc_isEqual(l.car, o)) {
+ needsAssig = true;
+ } else {
+ if (needsAssig) {
+ tail.cdr = l;
+ needsAssig = false;
+ }
+ tail = l;
+ }
+ l = l.cdr;
+ }
+ tail.cdr = null;
+ return dummy.cdr;
+}
+
+function sc_reverseAppendBang(l1, l2) {
+ var res = l2;
+ while (l1 !== null) {
+ var tmp = res;
+ res = l1;
+ l1 = l1.cdr;
+ res.cdr = tmp;
+ }
+ return res;
+}
+
+function sc_dualAppend(l1, l2) {
+ if (l1 === null) return l2;
+ if (l2 === null) return l1;
+ var rev = sc_reverse(l1);
+ return sc_reverseAppendBang(rev, l2);
+}
+
+/*** META ((export #t)) */
+function sc_append() {
+ if (arguments.length === 0)
+ return null;
+ var res = arguments[arguments.length - 1];
+ for (var i = arguments.length - 2; i >= 0; i--)
+ res = sc_dualAppend(arguments[i], res);
+ return res;
+}
+
+function sc_dualAppendBang(l1, l2) {
+ if (l1 === null) return l2;
+ if (l2 === null) return l1;
+ var tmp = l1;
+ while (tmp.cdr !== null) tmp=tmp.cdr;
+ tmp.cdr = l2;
+ return l1;
+}
+
+/*** META ((export #t)) */
+function sc_appendBang() {
+ var res = null;
+ for (var i = 0; i < arguments.length; i++)
+ res = sc_dualAppendBang(res, arguments[i]);
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_reverse(l1) {
+ var res = null;
+ while (l1 !== null) {
+ res = sc_cons(l1.car, res);
+ l1 = l1.cdr;
+ }
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_reverseBang(l) {
+ return sc_reverseAppendBang(l, null);
+}
+
+/*** META ((export #t)) */
+function sc_listTail(l, k) {
+ var res = l;
+ for (var i = 0; i < k; i++) {
+ res = res.cdr;
+ }
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_listRef(l, k) {
+ return sc_listTail(l, k).car;
+}
+
+/* // unoptimized generic versions
+function sc_memX(o, l, comp) {
+ while (l != null) {
+ if (comp(l.car, o))
+ return l;
+ l = l.cdr;
+ }
+ return false;
+}
+function sc_memq(o, l) { return sc_memX(o, l, sc_isEq); }
+function sc_memv(o, l) { return sc_memX(o, l, sc_isEqv); }
+function sc_member(o, l) { return sc_memX(o, l, sc_isEqual); }
+*/
+
+/* optimized versions */
+/*** META ((export #t)) */
+function sc_memq(o, l) {
+ while (l !== null) {
+ if (l.car === o)
+ return l;
+ l = l.cdr;
+ }
+ return false;
+}
+/*** META ((export #t)) */
+function sc_memv(o, l) {
+ while (l !== null) {
+ if (l.car === o)
+ return l;
+ l = l.cdr;
+ }
+ return false;
+}
+/*** META ((export #t)) */
+function sc_member(o, l) {
+ while (l !== null) {
+ if (sc_isEqual(l.car,o))
+ return l;
+ l = l.cdr;
+ }
+ return false;
+}
+
+/* // generic unoptimized versions
+function sc_assX(o, al, comp) {
+ while (al != null) {
+ if (comp(al.car.car, o))
+ return al.car;
+ al = al.cdr;
+ }
+ return false;
+}
+function sc_assq(o, al) { return sc_assX(o, al, sc_isEq); }
+function sc_assv(o, al) { return sc_assX(o, al, sc_isEqv); }
+function sc_assoc(o, al) { return sc_assX(o, al, sc_isEqual); }
+*/
+// optimized versions
+/*** META ((export #t)) */
+function sc_assq(o, al) {
+ while (al !== null) {
+ if (al.car.car === o)
+ return al.car;
+ al = al.cdr;
+ }
+ return false;
+}
+/*** META ((export #t)) */
+function sc_assv(o, al) {
+ while (al !== null) {
+ if (al.car.car === o)
+ return al.car;
+ al = al.cdr;
+ }
+ return false;
+}
+/*** META ((export #t)) */
+function sc_assoc(o, al) {
+ while (al !== null) {
+ if (sc_isEqual(al.car.car, o))
+ return al.car;
+ al = al.cdr;
+ }
+ return false;
+}
+
+/* can be used for mutable strings and characters */
+function sc_isCharStringEqual(cs1, cs2) { return cs1.val === cs2.val; }
+function sc_isCharStringLess(cs1, cs2) { return cs1.val < cs2.val; }
+function sc_isCharStringGreater(cs1, cs2) { return cs1.val > cs2.val; }
+function sc_isCharStringLessEqual(cs1, cs2) { return cs1.val <= cs2.val; }
+function sc_isCharStringGreaterEqual(cs1, cs2) { return cs1.val >= cs2.val; }
+function sc_isCharStringCIEqual(cs1, cs2)
+ { return cs1.val.toLowerCase() === cs2.val.toLowerCase(); }
+function sc_isCharStringCILess(cs1, cs2)
+ { return cs1.val.toLowerCase() < cs2.val.toLowerCase(); }
+function sc_isCharStringCIGreater(cs1, cs2)
+ { return cs1.val.toLowerCase() > cs2.val.toLowerCase(); }
+function sc_isCharStringCILessEqual(cs1, cs2)
+ { return cs1.val.toLowerCase() <= cs2.val.toLowerCase(); }
+function sc_isCharStringCIGreaterEqual(cs1, cs2)
+ { return cs1.val.toLowerCase() >= cs2.val.toLowerCase(); }
+
+
+
+
+function sc_Char(c) {
+ var cached = sc_Char.lazy[c];
+ if (cached)
+ return cached;
+ this.val = c;
+ sc_Char.lazy[c] = this;
+ // add return, so FF does not complain.
+ return undefined;
+}
+sc_Char.lazy = new Object();
+// thanks to Eric
+sc_Char.char2readable = {
+ "\000": "#\\null",
+ "\007": "#\\bell",
+ "\010": "#\\backspace",
+ "\011": "#\\tab",
+ "\012": "#\\newline",
+ "\014": "#\\page",
+ "\015": "#\\return",
+ "\033": "#\\escape",
+ "\040": "#\\space",
+ "\177": "#\\delete",
+
+ /* poeticless names */
+ "\001": "#\\soh",
+ "\002": "#\\stx",
+ "\003": "#\\etx",
+ "\004": "#\\eot",
+ "\005": "#\\enq",
+ "\006": "#\\ack",
+
+ "\013": "#\\vt",
+ "\016": "#\\so",
+ "\017": "#\\si",
+
+ "\020": "#\\dle",
+ "\021": "#\\dc1",
+ "\022": "#\\dc2",
+ "\023": "#\\dc3",
+ "\024": "#\\dc4",
+ "\025": "#\\nak",
+ "\026": "#\\syn",
+ "\027": "#\\etb",
+
+ "\030": "#\\can",
+ "\031": "#\\em",
+ "\032": "#\\sub",
+ "\033": "#\\esc",
+ "\034": "#\\fs",
+ "\035": "#\\gs",
+ "\036": "#\\rs",
+ "\037": "#\\us"};
+
+sc_Char.readable2char = {
+ "null": "\000",
+ "bell": "\007",
+ "backspace": "\010",
+ "tab": "\011",
+ "newline": "\012",
+ "page": "\014",
+ "return": "\015",
+ "escape": "\033",
+ "space": "\040",
+ "delete": "\000",
+ "soh": "\001",
+ "stx": "\002",
+ "etx": "\003",
+ "eot": "\004",
+ "enq": "\005",
+ "ack": "\006",
+ "bel": "\007",
+ "bs": "\010",
+ "ht": "\011",
+ "nl": "\012",
+ "vt": "\013",
+ "np": "\014",
+ "cr": "\015",
+ "so": "\016",
+ "si": "\017",
+ "dle": "\020",
+ "dc1": "\021",
+ "dc2": "\022",
+ "dc3": "\023",
+ "dc4": "\024",
+ "nak": "\025",
+ "syn": "\026",
+ "etb": "\027",
+ "can": "\030",
+ "em": "\031",
+ "sub": "\032",
+ "esc": "\033",
+ "fs": "\034",
+ "gs": "\035",
+ "rs": "\036",
+ "us": "\037",
+ "sp": "\040",
+ "del": "\177"};
+
+sc_Char.prototype.toString = function() {
+ return this.val;
+};
+// sc_toDisplayString == toString
+sc_Char.prototype.sc_toWriteString = function() {
+ var entry = sc_Char.char2readable[this.val];
+ if (entry)
+ return entry;
+ else
+ return "#\\" + this.val;
+};
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix "instanceof sc_Char")))
+*/
+function sc_isChar(c) {
+ return (c instanceof sc_Char);
+}
+
+/*** META ((export char=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val === " c2 ".val")))
+*/
+var sc_isCharEqual = sc_isCharStringEqual;
+/*** META ((export char<?)
+ (type bool)
+ (peephole (hole 2 c1 ".val < " c2 ".val")))
+*/
+var sc_isCharLess = sc_isCharStringLess;
+/*** META ((export char>?)
+ (type bool)
+ (peephole (hole 2 c1 ".val > " c2 ".val")))
+*/
+var sc_isCharGreater = sc_isCharStringGreater;
+/*** META ((export char<=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val <= " c2 ".val")))
+*/
+var sc_isCharLessEqual = sc_isCharStringLessEqual;
+/*** META ((export char>=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val >= " c2 ".val")))
+*/
+var sc_isCharGreaterEqual = sc_isCharStringGreaterEqual;
+/*** META ((export char-ci=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val.toLowerCase() === " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCIEqual = sc_isCharStringCIEqual;
+/*** META ((export char-ci<?)
+ (type bool)
+ (peephole (hole 2 c1 ".val.toLowerCase() < " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCILess = sc_isCharStringCILess;
+/*** META ((export char-ci>?)
+ (type bool)
+ (peephole (hole 2 c1 ".val.toLowerCase() > " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCIGreater = sc_isCharStringCIGreater;
+/*** META ((export char-ci<=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val.toLowerCase() <= " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCILessEqual = sc_isCharStringCILessEqual;
+/*** META ((export char-ci>=?)
+ (type bool)
+ (peephole (hole 2 c1 ".val.toLowerCase() >= " c2 ".val.toLowerCase()")))
+*/
+var sc_isCharCIGreaterEqual = sc_isCharStringCIGreaterEqual;
+
+var SC_NUMBER_CLASS = "0123456789";
+var SC_WHITESPACE_CLASS = ' \r\n\t\f';
+var SC_LOWER_CLASS = 'abcdefghijklmnopqrstuvwxyz';
+var SC_UPPER_CLASS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+
+function sc_isCharOfClass(c, cl) { return (cl.indexOf(c) != -1); }
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isCharAlphabetic(c)
+ { return sc_isCharOfClass(c.val, SC_LOWER_CLASS) ||
+ sc_isCharOfClass(c.val, SC_UPPER_CLASS); }
+/*** META ((export #t)
+ (type bool)
+ (peephole (hole 1 "SC_NUMBER_CLASS.indexOf(" c ".val) != -1")))
+*/
+function sc_isCharNumeric(c)
+ { return sc_isCharOfClass(c.val, SC_NUMBER_CLASS); }
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isCharWhitespace(c) {
+ var tmp = c.val;
+ return tmp === " " || tmp === "\r" || tmp === "\n" || tmp === "\t" || tmp === "\f";
+}
+/*** META ((export #t)
+ (type bool)
+ (peephole (hole 1 "SC_UPPER_CLASS.indexOf(" c ".val) != -1")))
+*/
+function sc_isCharUpperCase(c)
+ { return sc_isCharOfClass(c.val, SC_UPPER_CLASS); }
+/*** META ((export #t)
+ (type bool)
+ (peephole (hole 1 "SC_LOWER_CLASS.indexOf(" c ".val) != -1")))
+*/
+function sc_isCharLowerCase(c)
+ { return sc_isCharOfClass(c.val, SC_LOWER_CLASS); }
+
+/*** META ((export #t)
+ (peephole (postfix ".val.charCodeAt(0)")))
+*/
+function sc_char2integer(c)
+ { return c.val.charCodeAt(0); }
+/*** META ((export #t)
+ (peephole (hole 1 "new sc_Char(String.fromCharCode(" n "))")))
+*/
+function sc_integer2char(n)
+ { return new sc_Char(String.fromCharCode(n)); }
+
+/*** META ((export #t)
+ (peephole (hole 1 "new sc_Char(" c ".val.toUpperCase())")))
+*/
+function sc_charUpcase(c)
+ { return new sc_Char(c.val.toUpperCase()); }
+/*** META ((export #t)
+ (peephole (hole 1 "new sc_Char(" c ".val.toLowerCase())")))
+*/
+function sc_charDowncase(c)
+ { return new sc_Char(c.val.toLowerCase()); }
+
+function sc_makeJSStringOfLength(k, c) {
+ var fill;
+ if (c === undefined)
+ fill = " ";
+ else
+ fill = c;
+ var res = "";
+ var len = 1;
+ // every round doubles the size of fill.
+ while (k >= len) {
+ if (k & len)
+ res = res.concat(fill);
+ fill = fill.concat(fill);
+ len *= 2;
+ }
+ return res;
+}
+
+function sc_makejsString(k, c) {
+ var fill;
+ if (c)
+ fill = c.val;
+ else
+ fill = " ";
+ return sc_makeJSStringOfLength(k, fill);
+}
+
+function sc_jsstring2list(s) {
+ var res = null;
+ for (var i = s.length - 1; i >= 0; i--)
+ res = sc_cons(new sc_Char(s.charAt(i)), res);
+ return res;
+}
+
+function sc_list2jsstring(l) {
+ var a = new Array();
+ while(l !== null) {
+ a.push(l.car.val);
+ l = l.cdr;
+ }
+ return "".concat.apply("", a);
+}
+
+var sc_Vector = Array;
+
+sc_Vector.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) {
+ if (this.length === 0) return "#()";
+
+ var res = "#(" + writeOrDisplay(this[0]);
+ for (var i = 1; i < this.length; i++)
+ res += " " + writeOrDisplay(this[i]);
+ res += ")";
+ return res;
+};
+sc_Vector.prototype.sc_toDisplayString = function() {
+ return this.sc_toWriteOrDisplayString(sc_toDisplayString);
+};
+sc_Vector.prototype.sc_toWriteString = function() {
+ return this.sc_toWriteOrDisplayString(sc_toWriteString);
+};
+
+/*** META ((export vector? array?)
+ (type bool)
+ (peephole (postfix " instanceof sc_Vector")))
+*/
+function sc_isVector(v) {
+ return (v instanceof sc_Vector);
+}
+
+// only applies to vectors
+function sc_isVectorEqual(v1, v2, comp) {
+ if (v1.length !== v2.length) return false;
+ for (var i = 0; i < v1.length; i++)
+ if (!comp(v1[i], v2[i])) return false;
+ return true;
+}
+
+/*** META ((export make-vector make-array)) */
+function sc_makeVector(size, fill) {
+ var a = new sc_Vector(size);
+ if (fill !== undefined)
+ sc_vectorFillBang(a, fill);
+ return a;
+}
+
+/*** META ((export vector array)
+ (peephole (vector)))
+*/
+function sc_vector() {
+ var a = new sc_Vector();
+ for (var i = 0; i < arguments.length; i++)
+ a.push(arguments[i]);
+ return a;
+}
+
+/*** META ((export vector-length array-length)
+ (peephole (postfix ".length")))
+*/
+function sc_vectorLength(v) {
+ return v.length;
+}
+
+/*** META ((export vector-ref array-ref)
+ (peephole (hole 2 v "[" pos "]")))
+*/
+function sc_vectorRef(v, pos) {
+ return v[pos];
+}
+
+/*** META ((export vector-set! array-set!)
+ (peephole (hole 3 v "[" pos "] = " val)))
+*/
+function sc_vectorSetBang(v, pos, val) {
+ v[pos] = val;
+}
+
+/*** META ((export vector->list array->list)) */
+function sc_vector2list(a) {
+ var res = null;
+ for (var i = a.length-1; i >= 0; i--)
+ res = sc_cons(a[i], res);
+ return res;
+}
+
+/*** META ((export list->vector list->array)) */
+function sc_list2vector(l) {
+ var a = new sc_Vector();
+ while(l !== null) {
+ a.push(l.car);
+ l = l.cdr;
+ }
+ return a;
+}
+
+/*** META ((export vector-fill! array-fill!)) */
+function sc_vectorFillBang(a, fill) {
+ for (var i = 0; i < a.length; i++)
+ a[i] = fill;
+}
+
+
+/*** META ((export #t)) */
+function sc_copyVector(a, len) {
+ if (len <= a.length)
+ return a.slice(0, len);
+ else {
+ var tmp = a.concat();
+ tmp.length = len;
+ return tmp;
+ }
+}
+
+/*** META ((export #t)
+ (peephole (hole 3 a ".slice(" start "," end ")")))
+*/
+function sc_vectorCopy(a, start, end) {
+ return a.slice(start, end);
+}
+
+/*** META ((export #t)) */
+function sc_vectorCopyBang(target, tstart, source, sstart, send) {
+ if (!sstart) sstart = 0;
+ if (!send) send = source.length;
+
+ // if target == source we don't want to overwrite not yet copied elements.
+ if (tstart <= sstart) {
+ for (var i = tstart, j = sstart; j < send; i++, j++) {
+ target[i] = source[j];
+ }
+ } else {
+ var diff = send - sstart;
+ for (var i = tstart + diff - 1, j = send - 1;
+ j >= sstart;
+ i--, j--) {
+ target[i] = source[j];
+ }
+ }
+ return target;
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (hole 1 "typeof " o " === 'function'")))
+*/
+function sc_isProcedure(o) {
+ return (typeof o === "function");
+}
+
+/*** META ((export #t)) */
+function sc_apply(proc) {
+ var args = new Array();
+ // first part of arguments are not in list-form.
+ for (var i = 1; i < arguments.length - 1; i++)
+ args.push(arguments[i]);
+ var l = arguments[arguments.length - 1];
+ while (l !== null) {
+ args.push(l.car);
+ l = l.cdr;
+ }
+ return proc.apply(null, args);
+}
+
+/*** META ((export #t)) */
+function sc_map(proc, l1) {
+ if (l1 === undefined)
+ return null;
+ // else
+ var nbApplyArgs = arguments.length - 1;
+ var applyArgs = new Array(nbApplyArgs);
+ var revres = null;
+ while (l1 !== null) {
+ for (var i = 0; i < nbApplyArgs; i++) {
+ applyArgs[i] = arguments[i + 1].car;
+ arguments[i + 1] = arguments[i + 1].cdr;
+ }
+ revres = sc_cons(proc.apply(null, applyArgs), revres);
+ }
+ return sc_reverseAppendBang(revres, null);
+}
+
+/*** META ((export #t)) */
+function sc_mapBang(proc, l1) {
+ if (l1 === undefined)
+ return null;
+ // else
+ var l1_orig = l1;
+ var nbApplyArgs = arguments.length - 1;
+ var applyArgs = new Array(nbApplyArgs);
+ while (l1 !== null) {
+ var tmp = l1;
+ for (var i = 0; i < nbApplyArgs; i++) {
+ applyArgs[i] = arguments[i + 1].car;
+ arguments[i + 1] = arguments[i + 1].cdr;
+ }
+ tmp.car = proc.apply(null, applyArgs);
+ }
+ return l1_orig;
+}
+
+/*** META ((export #t)) */
+function sc_forEach(proc, l1) {
+ if (l1 === undefined)
+ return undefined;
+ // else
+ var nbApplyArgs = arguments.length - 1;
+ var applyArgs = new Array(nbApplyArgs);
+ while (l1 !== null) {
+ for (var i = 0; i < nbApplyArgs; i++) {
+ applyArgs[i] = arguments[i + 1].car;
+ arguments[i + 1] = arguments[i + 1].cdr;
+ }
+ proc.apply(null, applyArgs);
+ }
+ // add return so FF does not complain.
+ return undefined;
+}
+
+/*** META ((export #t)) */
+function sc_filter(proc, l1) {
+ var dummy = { cdr : null };
+ var tail = dummy;
+ while (l1 !== null) {
+ if (proc(l1.car) !== false) {
+ tail.cdr = sc_cons(l1.car, null);
+ tail = tail.cdr;
+ }
+ l1 = l1.cdr;
+ }
+ return dummy.cdr;
+}
+
+/*** META ((export #t)) */
+function sc_filterBang(proc, l1) {
+ var head = sc_cons("dummy", l1);
+ var it = head;
+ var next = l1;
+ while (next !== null) {
+ if (proc(next.car) !== false) {
+ it.cdr = next
+ it = next;
+ }
+ next = next.cdr;
+ }
+ it.cdr = null;
+ return head.cdr;
+}
+
+function sc_filterMap1(proc, l1) {
+ var revres = null;
+ while (l1 !== null) {
+ var tmp = proc(l1.car)
+ if (tmp !== false) revres = sc_cons(tmp, revres);
+ l1 = l1.cdr;
+ }
+ return sc_reverseAppendBang(revres, null);
+}
+function sc_filterMap2(proc, l1, l2) {
+ var revres = null;
+ while (l1 !== null) {
+ var tmp = proc(l1.car, l2.car);
+ if(tmp !== false) revres = sc_cons(tmp, revres);
+ l1 = l1.cdr;
+ l2 = l2.cdr
+ }
+ return sc_reverseAppendBang(revres, null);
+}
+
+/*** META ((export #t)) */
+function sc_filterMap(proc, l1, l2, l3) {
+ if (l2 === undefined)
+ return sc_filterMap1(proc, l1);
+ else if (l3 === undefined)
+ return sc_filterMap2(proc, l1, l2);
+ // else
+ var nbApplyArgs = arguments.length - 1;
+ var applyArgs = new Array(nbApplyArgs);
+ var revres = null;
+ while (l1 !== null) {
+ for (var i = 0; i < nbApplyArgs; i++) {
+ applyArgs[i] = arguments[i + 1].car;
+ arguments[i + 1] = arguments[i + 1].cdr;
+ }
+ var tmp = proc.apply(null, applyArgs);
+ if(tmp !== false) revres = sc_cons(tmp, revres);
+ }
+ return sc_reverseAppendBang(revres, null);
+}
+
+/*** META ((export #t)) */
+function sc_any(proc, l) {
+ var revres = null;
+ while (l !== null) {
+ var tmp = proc(l.car);
+ if(tmp !== false) return tmp;
+ l = l.cdr;
+ }
+ return false;
+}
+
+/*** META ((export any?)
+ (peephole (hole 2 "sc_any(" proc "," l ") !== false")))
+*/
+function sc_anyPred(proc, l) {
+ return sc_any(proc, l)!== false;
+}
+
+/*** META ((export #t)) */
+function sc_every(proc, l) {
+ var revres = null;
+ var tmp = true;
+ while (l !== null) {
+ tmp = proc(l.car);
+ if (tmp === false) return false;
+ l = l.cdr;
+ }
+ return tmp;
+}
+
+/*** META ((export every?)
+ (peephole (hole 2 "sc_every(" proc "," l ") !== false")))
+*/
+function sc_everyPred(proc, l) {
+ var tmp = sc_every(proc, l);
+ if (tmp !== false) return true;
+ return false;
+}
+
+/*** META ((export #t)
+ (peephole (postfix "()")))
+*/
+function sc_force(o) {
+ return o();
+}
+
+/*** META ((export #t)) */
+function sc_makePromise(proc) {
+ var isResultReady = false;
+ var result = undefined;
+ return function() {
+ if (!isResultReady) {
+ var tmp = proc();
+ if (!isResultReady) {
+ isResultReady = true;
+ result = tmp;
+ }
+ }
+ return result;
+ };
+}
+
+function sc_Values(values) {
+ this.values = values;
+}
+
+/*** META ((export #t)
+ (peephole (values)))
+*/
+function sc_values() {
+ if (arguments.length === 1)
+ return arguments[0];
+ else
+ return new sc_Values(arguments);
+}
+
+/*** META ((export #t)) */
+function sc_callWithValues(producer, consumer) {
+ var produced = producer();
+ if (produced instanceof sc_Values)
+ return consumer.apply(null, produced.values);
+ else
+ return consumer(produced);
+}
+
+/*** META ((export #t)) */
+function sc_dynamicWind(before, thunk, after) {
+ before();
+ try {
+ var res = thunk();
+ return res;
+ } finally {
+ after();
+ }
+}
+
+
+// TODO: eval/scheme-report-environment/null-environment/interaction-environment
+
+// LIMITATION: 'load' doesn't exist without files.
+// LIMITATION: transcript-on/transcript-off doesn't exist without files.
+
+
+function sc_Struct(name) {
+ this.name = name;
+}
+sc_Struct.prototype.sc_toDisplayString = function() {
+ return "#<struct" + sc_hash(this) + ">";
+};
+sc_Struct.prototype.sc_toWriteString = sc_Struct.prototype.sc_toDisplayString;
+
+/*** META ((export #t)
+ (peephole (hole 1 "new sc_Struct(" name ")")))
+*/
+function sc_makeStruct(name) {
+ return new sc_Struct(name);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix " instanceof sc_Struct")))
+*/
+function sc_isStruct(o) {
+ return (o instanceof sc_Struct);
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (hole 2 "(" 1 " instanceof sc_Struct) && ( " 1 ".name === " 0 ")")))
+*/
+function sc_isStructNamed(name, s) {
+ return ((s instanceof sc_Struct) && (s.name === name));
+}
+
+/*** META ((export struct-field)
+ (peephole (hole 3 0 "[" 2 "]")))
+*/
+function sc_getStructField(s, name, field) {
+ return s[field];
+}
+
+/*** META ((export struct-field-set!)
+ (peephole (hole 4 0 "[" 2 "] = " 3)))
+*/
+function sc_setStructFieldBang(s, name, field, val) {
+ s[field] = val;
+}
+
+/*** META ((export #t)
+ (peephole (prefix "~")))
+*/
+function sc_bitNot(x) {
+ return ~x;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "&")))
+*/
+function sc_bitAnd(x, y) {
+ return x & y;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "|")))
+*/
+function sc_bitOr(x, y) {
+ return x | y;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "^")))
+*/
+function sc_bitXor(x, y) {
+ return x ^ y;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 "<<")))
+*/
+function sc_bitLsh(x, y) {
+ return x << y;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 ">>")))
+*/
+function sc_bitRsh(x, y) {
+ return x >> y;
+}
+
+/*** META ((export #t)
+ (peephole (infix 2 2 ">>>")))
+*/
+function sc_bitUrsh(x, y) {
+ return x >>> y;
+}
+
+/*** META ((export js-field js-property)
+ (peephole (hole 2 o "[" field "]")))
+*/
+function sc_jsField(o, field) {
+ return o[field];
+}
+
+/*** META ((export js-field-set! js-property-set!)
+ (peephole (hole 3 o "[" field "] = " val)))
+*/
+function sc_setJsFieldBang(o, field, val) {
+ return o[field] = val;
+}
+
+/*** META ((export js-field-delete! js-property-delete!)
+ (peephole (hole 2 "delete" o "[" field "]")))
+*/
+function sc_deleteJsFieldBang(o, field) {
+ delete o[field];
+}
+
+/*** META ((export #t)
+ (peephole (jsCall)))
+*/
+function sc_jsCall(o, fun) {
+ var args = new Array();
+ for (var i = 2; i < arguments.length; i++)
+ args[i-2] = arguments[i];
+ return fun.apply(o, args);
+}
+
+/*** META ((export #t)
+ (peephole (jsMethodCall)))
+*/
+function sc_jsMethodCall(o, field) {
+ var args = new Array();
+ for (var i = 2; i < arguments.length; i++)
+ args[i-2] = arguments[i];
+ return o[field].apply(o, args);
+}
+
+/*** META ((export new js-new)
+ (peephole (jsNew)))
+*/
+function sc_jsNew(c) {
+ var evalStr = "new c(";
+ evalStr +=arguments.length > 1? "arguments[1]": "";
+ for (var i = 2; i < arguments.length; i++)
+ evalStr += ", arguments[" + i + "]";
+ evalStr +=")";
+ return eval(evalStr);
+}
+
+// ======================== RegExp ====================
+/*** META ((export #t)) */
+function sc_pregexp(re) {
+ return new RegExp(sc_string2jsstring(re));
+}
+
+/*** META ((export #t)) */
+function sc_pregexpMatch(re, s) {
+ var reg = (re instanceof RegExp) ? re : sc_pregexp(re);
+ var tmp = reg.exec(sc_string2jsstring(s));
+
+ if (tmp == null) return false;
+
+ var res = null;
+ for (var i = tmp.length-1; i >= 0; i--) {
+ if (tmp[i] !== null) {
+ res = sc_cons(sc_jsstring2string(tmp[i]), res);
+ } else {
+ res = sc_cons(false, res);
+ }
+ }
+ return res;
+}
+
+/*** META ((export #t)) */
+function sc_pregexpReplace(re, s1, s2) {
+ var reg;
+ var jss1 = sc_string2jsstring(s1);
+ var jss2 = sc_string2jsstring(s2);
+
+ if (re instanceof RegExp) {
+ if (re.global)
+ reg = re;
+ else
+ reg = new RegExp(re.source);
+ } else {
+ reg = new RegExp(sc_string2jsstring(re));
+ }
+
+ return jss1.replace(reg, jss2);
+}
+
+/*** META ((export pregexp-replace*)) */
+function sc_pregexpReplaceAll(re, s1, s2) {
+ var reg;
+ var jss1 = sc_string2jsstring(s1);
+ var jss2 = sc_string2jsstring(s2);
+
+ if (re instanceof RegExp) {
+ if (re.global)
+ reg = re;
+ else
+ reg = new RegExp(re.source, "g");
+ } else {
+ reg = new RegExp(sc_string2jsstring(re), "g");
+ }
+
+ return jss1.replace(reg, jss2);
+}
+
+/*** META ((export #t)) */
+function sc_pregexpSplit(re, s) {
+ var reg = ((re instanceof RegExp) ?
+ re :
+ new RegExp(sc_string2jsstring(re)));
+ var jss = sc_string2jsstring(s);
+ var tmp = jss.split(reg);
+
+ if (tmp == null) return false;
+
+ return sc_vector2list(tmp);
+}
+
+
+/* =========================================================================== */
+/* Other library stuff */
+/* =========================================================================== */
+
+/*** META ((export #t)
+ (peephole (hole 1 "Math.floor(Math.random()*" 'n ")")))
+*/
+function sc_random(n) {
+ return Math.floor(Math.random()*n);
+}
+
+/*** META ((export current-date)
+ (peephole (hole 0 "new Date()")))
+*/
+function sc_currentDate() {
+ return new Date();
+}
+
+function sc_Hashtable() {
+}
+sc_Hashtable.prototype.toString = function() {
+ return "#{%hashtable}";
+};
+// sc_toWriteString == sc_toDisplayString == toString
+
+function sc_HashtableElement(key, val) {
+ this.key = key;
+ this.val = val;
+}
+
+/*** META ((export #t)
+ (peephole (hole 0 "new sc_Hashtable()")))
+*/
+function sc_makeHashtable() {
+ return new sc_Hashtable();
+}
+
+/*** META ((export #t)) */
+function sc_hashtablePutBang(ht, key, val) {
+ var hash = sc_hash(key);
+ ht[hash] = new sc_HashtableElement(key, val);
+}
+
+/*** META ((export #t)) */
+function sc_hashtableGet(ht, key) {
+ var hash = sc_hash(key);
+ if (hash in ht)
+ return ht[hash].val;
+ else
+ return false;
+}
+
+/*** META ((export #t)) */
+function sc_hashtableForEach(ht, f) {
+ for (var v in ht) {
+ if (ht[v] instanceof sc_HashtableElement)
+ f(ht[v].key, ht[v].val);
+ }
+}
+
+/*** META ((export hashtable-contains?)
+ (peephole (hole 2 "sc_hash(" 1 ") in " 0)))
+*/
+function sc_hashtableContains(ht, key) {
+ var hash = sc_hash(key);
+ if (hash in ht)
+ return true;
+ else
+ return false;
+}
+
+var SC_HASH_COUNTER = 0;
+
+function sc_hash(o) {
+ if (o === null)
+ return "null";
+ else if (o === undefined)
+ return "undefined";
+ else if (o === true)
+ return "true";
+ else if (o === false)
+ return "false";
+ else if (typeof o === "number")
+ return "num-" + o;
+ else if (typeof o === "string")
+ return "jsstr-" + o;
+ else if (o.sc_getHash)
+ return o.sc_getHash();
+ else
+ return sc_counterHash.call(o);
+}
+function sc_counterHash() {
+ if (!this.sc_hash) {
+ this.sc_hash = "hash-" + SC_HASH_COUNTER;
+ SC_HASH_COUNTER++;
+ }
+ return this.sc_hash;
+}
+
+function sc_Trampoline(args, maxTailCalls) {
+ this['__trampoline return__'] = true;
+ this.args = args;
+ this.MAX_TAIL_CALLs = maxTailCalls;
+}
+// TODO: call/cc stuff
+sc_Trampoline.prototype.restart = function() {
+ var o = this;
+ while (true) {
+ // set both globals.
+ SC_TAIL_OBJECT.calls = o.MAX_TAIL_CALLs-1;
+ var fun = o.args.callee;
+ var res = fun.apply(SC_TAIL_OBJECT, o.args);
+ if (res instanceof sc_Trampoline)
+ o = res;
+ else
+ return res;
+ }
+}
+
+/*** META ((export bind-exit-lambda)) */
+function sc_bindExitLambda(proc) {
+ var escape_obj = new sc_BindExitException();
+ var escape = function(res) {
+ escape_obj.res = res;
+ throw escape_obj;
+ };
+ try {
+ return proc(escape);
+ } catch(e) {
+ if (e === escape_obj) {
+ return e.res;
+ }
+ throw e;
+ }
+}
+function sc_BindExitException() {
+ this._internalException = true;
+}
+
+var SC_SCM2JS_GLOBALS = new Object();
+
+// default tail-call depth.
+// normally the program should set it again. but just in case...
+var SC_TAIL_OBJECT = new Object();
+SC_SCM2JS_GLOBALS.TAIL_OBJECT = SC_TAIL_OBJECT;
+// ======================== I/O =======================
+
+/*------------------------------------------------------------------*/
+
+function sc_EOF() {
+}
+var SC_EOF_OBJECT = new sc_EOF();
+
+function sc_Port() {
+}
+
+/* --------------- Input ports -------------------------------------*/
+
+function sc_InputPort() {
+}
+sc_InputPort.prototype = new sc_Port();
+
+sc_InputPort.prototype.peekChar = function() {
+ if (!("peeked" in this))
+ this.peeked = this.getNextChar();
+ return this.peeked;
+}
+sc_InputPort.prototype.readChar = function() {
+ var tmp = this.peekChar();
+ delete this.peeked;
+ return tmp;
+}
+sc_InputPort.prototype.isCharReady = function() {
+ return true;
+}
+sc_InputPort.prototype.close = function() {
+ // do nothing
+}
+
+/* .............. String port ..........................*/
+function sc_ErrorInputPort() {
+};
+sc_ErrorInputPort.prototype = new sc_InputPort();
+sc_ErrorInputPort.prototype.getNextChar = function() {
+ throw "can't read from error-port.";
+};
+sc_ErrorInputPort.prototype.isCharReady = function() {
+ return false;
+};
+
+
+/* .............. String port ..........................*/
+
+function sc_StringInputPort(jsStr) {
+ // we are going to do some charAts on the str.
+ // instead of recreating all the time a String-object, we
+ // create one in the beginning. (not sure, if this is really an optim)
+ this.str = new String(jsStr);
+ this.pos = 0;
+}
+sc_StringInputPort.prototype = new sc_InputPort();
+sc_StringInputPort.prototype.getNextChar = function() {
+ if (this.pos >= this.str.length)
+ return SC_EOF_OBJECT;
+ return this.str.charAt(this.pos++);
+};
+
+/* ------------- Read and other lib-funs -------------------------------*/
+function sc_Token(type, val, pos) {
+ this.type = type;
+ this.val = val;
+ this.pos = pos;
+}
+sc_Token.EOF = 0/*EOF*/;
+sc_Token.OPEN_PAR = 1/*OPEN_PAR*/;
+sc_Token.CLOSE_PAR = 2/*CLOSE_PAR*/;
+sc_Token.OPEN_BRACE = 3/*OPEN_BRACE*/;
+sc_Token.CLOSE_BRACE = 4/*CLOSE_BRACE*/;
+sc_Token.OPEN_BRACKET = 5/*OPEN_BRACKET*/;
+sc_Token.CLOSE_BRACKET = 6/*CLOSE_BRACKET*/;
+sc_Token.WHITESPACE = 7/*WHITESPACE*/;
+sc_Token.QUOTE = 8/*QUOTE*/;
+sc_Token.ID = 9/*ID*/;
+sc_Token.DOT = 10/*DOT*/;
+sc_Token.STRING = 11/*STRING*/;
+sc_Token.NUMBER = 12/*NUMBER*/;
+sc_Token.ERROR = 13/*ERROR*/;
+sc_Token.VECTOR_BEGIN = 14/*VECTOR_BEGIN*/;
+sc_Token.TRUE = 15/*TRUE*/;
+sc_Token.FALSE = 16/*FALSE*/;
+sc_Token.UNSPECIFIED = 17/*UNSPECIFIED*/;
+sc_Token.REFERENCE = 18/*REFERENCE*/;
+sc_Token.STORE = 19/*STORE*/;
+sc_Token.CHAR = 20/*CHAR*/;
+
+var SC_ID_CLASS = SC_LOWER_CLASS + SC_UPPER_CLASS + "!$%*+-./:<=>?@^_~";
+function sc_Tokenizer(port) {
+ this.port = port;
+}
+sc_Tokenizer.prototype.peekToken = function() {
+ if (this.peeked)
+ return this.peeked;
+ var newToken = this.nextToken();
+ this.peeked = newToken;
+ return newToken;
+};
+sc_Tokenizer.prototype.readToken = function() {
+ var tmp = this.peekToken();
+ delete this.peeked;
+ return tmp;
+};
+sc_Tokenizer.prototype.nextToken = function() {
+ var port = this.port;
+
+ function isNumberChar(c) {
+ return (c >= "0" && c <= "9");
+ };
+ function isIdOrNumberChar(c) {
+ return SC_ID_CLASS.indexOf(c) != -1 || // ID-char
+ (c >= "0" && c <= "9");
+ }
+ function isWhitespace(c) {
+ return c === " " || c === "\r" || c === "\n" || c === "\t" || c === "\f";
+ };
+ function isWhitespaceOrEOF(c) {
+ return isWhitespace(c) || c === SC_EOF_OBJECT;
+ };
+
+ function readString() {
+ res = "";
+ while (true) {
+ var c = port.readChar();
+ switch (c) {
+ case '"':
+ return new sc_Token(11/*STRING*/, res);
+ case "\\":
+ var tmp = port.readChar();
+ switch (tmp) {
+ case '0': res += "\0"; break;
+ case 'a': res += "\a"; break;
+ case 'b': res += "\b"; break;
+ case 'f': res += "\f"; break;
+ case 'n': res += "\n"; break;
+ case 'r': res += "\r"; break;
+ case 't': res += "\t"; break;
+ case 'v': res += "\v"; break;
+ case '"': res += '"'; break;
+ case '\\': res += '\\'; break;
+ case 'x':
+ /* hexa-number */
+ var nb = 0;
+ while (true) {
+ var hexC = port.peekChar();
+ if (hexC >= '0' && hexC <= '9') {
+ port.readChar();
+ nb = nb * 16 + hexC.charCodeAt(0) - '0'.charCodeAt(0);
+ } else if (hexC >= 'a' && hexC <= 'f') {
+ port.readChar();
+ nb = nb * 16 + hexC.charCodeAt(0) - 'a'.charCodeAt(0);
+ } else if (hexC >= 'A' && hexC <= 'F') {
+ port.readChar();
+ nb = nb * 16 + hexC.charCodeAt(0) - 'A'.charCodeAt(0);
+ } else {
+ // next char isn't part of hex.
+ res += String.fromCharCode(nb);
+ break;
+ }
+ }
+ break;
+ default:
+ if (tmp === SC_EOF_OBJECT) {
+ return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res);
+ }
+ res += tmp;
+ }
+ break;
+ default:
+ if (c === SC_EOF_OBJECT) {
+ return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res);
+ }
+ res += c;
+ }
+ }
+ };
+ function readIdOrNumber(firstChar) {
+ var res = firstChar;
+ while (isIdOrNumberChar(port.peekChar()))
+ res += port.readChar();
+ if (isNaN(res))
+ return new sc_Token(9/*ID*/, res);
+ else
+ return new sc_Token(12/*NUMBER*/, res - 0);
+ };
+
+ function skipWhitespaceAndComments() {
+ var done = false;
+ while (!done) {
+ done = true;
+ while (isWhitespace(port.peekChar()))
+ port.readChar();
+ if (port.peekChar() === ';') {
+ port.readChar();
+ done = false;
+ while (true) {
+ curChar = port.readChar();
+ if (curChar === SC_EOF_OBJECT ||
+ curChar === '\n')
+ break;
+ }
+ }
+ }
+ };
+
+ function readDot() {
+ if (isWhitespace(port.peekChar()))
+ return new sc_Token(10/*DOT*/);
+ else
+ return readIdOrNumber(".");
+ };
+
+ function readSharp() {
+ var c = port.readChar();
+ if (isWhitespace(c))
+ return new sc_Token(13/*ERROR*/, "bad #-pattern0.");
+
+ // reference
+ if (isNumberChar(c)) {
+ var nb = c - 0;
+ while (isNumberChar(port.peekChar()))
+ nb = nb*10 + (port.readChar() - 0);
+ switch (port.readChar()) {
+ case '#':
+ return new sc_Token(18/*REFERENCE*/, nb);
+ case '=':
+ return new sc_Token(19/*STORE*/, nb);
+ default:
+ return new sc_Token(13/*ERROR*/, "bad #-pattern1." + nb);
+ }
+ }
+
+ if (c === "(")
+ return new sc_Token(14/*VECTOR_BEGIN*/);
+
+ if (c === "\\") { // character
+ var tmp = ""
+ while (!isWhitespaceOrEOF(port.peekChar()))
+ tmp += port.readChar();
+ switch (tmp.length) {
+ case 0: // it's escaping a whitespace char:
+ if (sc_isEOFObject(port.peekChar))
+ return new sc_Token(13/*ERROR*/, "bad #-pattern2.");
+ else
+ return new sc_Token(20/*CHAR*/, port.readChar());
+ case 1:
+ return new sc_Token(20/*CHAR*/, tmp);
+ default:
+ var entry = sc_Char.readable2char[tmp.toLowerCase()];
+ if (entry)
+ return new sc_Token(20/*CHAR*/, entry);
+ else
+ return new sc_Token(13/*ERROR*/, "unknown character description: #\\" + tmp);
+ }
+ }
+
+ // some constants (#t, #f, #unspecified)
+ var res;
+ var needing;
+ switch (c) {
+ case 't': res = new sc_Token(15/*TRUE*/, true); needing = ""; break;
+ case 'f': res = new sc_Token(16/*FALSE*/, false); needing = ""; break;
+ case 'u': res = new sc_Token(17/*UNSPECIFIED*/, undefined); needing = "nspecified"; break;
+ default:
+ return new sc_Token(13/*ERROR*/, "bad #-pattern3: " + c);
+ }
+ while(true) {
+ c = port.peekChar();
+ if ((isWhitespaceOrEOF(c) || c === ')') &&
+ needing == "")
+ return res;
+ else if (isWhitespace(c) || needing == "")
+ return new sc_Token(13/*ERROR*/, "bad #-pattern4 " + c + " " + needing);
+ else if (needing.charAt(0) == c) {
+ port.readChar(); // consume
+ needing = needing.slice(1);
+ } else
+ return new sc_Token(13/*ERROR*/, "bad #-pattern5");
+ }
+
+ };
+
+ skipWhitespaceAndComments();
+ var curChar = port.readChar();
+ if (curChar === SC_EOF_OBJECT)
+ return new sc_Token(0/*EOF*/, curChar);
+ switch (curChar)
+ {
+ case " ":
+ case "\n":
+ case "\t":
+ return readWhitespace();
+ case "(":
+ return new sc_Token(1/*OPEN_PAR*/);
+ case ")":
+ return new sc_Token(2/*CLOSE_PAR*/);
+ case "{":
+ return new sc_Token(3/*OPEN_BRACE*/);
+ case "}":
+ return new sc_Token(4/*CLOSE_BRACE*/);
+ case "[":
+ return new sc_Token(5/*OPEN_BRACKET*/);
+ case "]":
+ return new sc_Token(6/*CLOSE_BRACKET*/);
+ case "'":
+ return new sc_Token(8/*QUOTE*/);
+ case "#":
+ return readSharp();
+ case ".":
+ return readDot();
+ case '"':
+ return readString();
+ default:
+ if (isIdOrNumberChar(curChar))
+ return readIdOrNumber(curChar);
+ throw "unexpected character: " + curChar;
+ }
+};
+
+function sc_Reader(tokenizer) {
+ this.tokenizer = tokenizer;
+ this.backref = new Array();
+}
+sc_Reader.prototype.read = function() {
+ function readList(listBeginType) {
+ function matchesPeer(open, close) {
+ return open === 1/*OPEN_PAR*/ && close === 2/*CLOSE_PAR*/
+ || open === 3/*OPEN_BRACE*/ && close === 4/*CLOSE_BRACE*/
+ || open === 5/*OPEN_BRACKET*/ && close === 6/*CLOSE_BRACKET*/;
+ };
+ var res = null;
+
+ while (true) {
+ var token = tokenizer.peekToken();
+
+ switch (token.type) {
+ case 2/*CLOSE_PAR*/:
+ case 4/*CLOSE_BRACE*/:
+ case 6/*CLOSE_BRACKET*/:
+ if (matchesPeer(listBeginType, token.type)) {
+ tokenizer.readToken(); // consume token
+ return sc_reverseBang(res);
+ } else
+ throw "closing par doesn't match: " + listBeginType
+ + " " + listEndType;
+
+ case 0/*EOF*/:
+ throw "unexpected end of file";
+
+ case 10/*DOT*/:
+ tokenizer.readToken(); // consume token
+ var cdr = this.read();
+ var par = tokenizer.readToken();
+ if (!matchesPeer(listBeginType, par.type))
+ throw "closing par doesn't match: " + listBeginType
+ + " " + par.type;
+ else
+ return sc_reverseAppendBang(res, cdr);
+
+
+ default:
+ res = sc_cons(this.read(), res);
+ }
+ }
+ };
+ function readQuote() {
+ return sc_cons("quote", sc_cons(this.read(), null));
+ };
+ function readVector() {
+ // opening-parenthesis is already consumed
+ var a = new Array();
+ while (true) {
+ var token = tokenizer.peekToken();
+ switch (token.type) {
+ case 2/*CLOSE_PAR*/:
+ tokenizer.readToken();
+ return a;
+
+ default:
+ a.push(this.read());
+ }
+ }
+ };
+
+ function storeRefence(nb) {
+ var tmp = this.read();
+ this.backref[nb] = tmp;
+ return tmp;
+ };
+
+ function readReference(nb) {
+ if (nb in this.backref)
+ return this.backref[nb];
+ else
+ throw "bad reference: " + nb;
+ };
+
+ var tokenizer = this.tokenizer;
+
+ var token = tokenizer.readToken();
+
+ // handle error
+ if (token.type === 13/*ERROR*/)
+ throw token.val;
+
+ switch (token.type) {
+ case 1/*OPEN_PAR*/:
+ case 3/*OPEN_BRACE*/:
+ case 5/*OPEN_BRACKET*/:
+ return readList.call(this, token.type);
+ case 8/*QUOTE*/:
+ return readQuote.call(this);
+ case 11/*STRING*/:
+ return sc_jsstring2string(token.val);
+ case 20/*CHAR*/:
+ return new sc_Char(token.val);
+ case 14/*VECTOR_BEGIN*/:
+ return readVector.call(this);
+ case 18/*REFERENCE*/:
+ return readReference.call(this, token.val);
+ case 19/*STORE*/:
+ return storeRefence.call(this, token.val);
+ case 9/*ID*/:
+ return sc_jsstring2symbol(token.val);
+ case 0/*EOF*/:
+ case 12/*NUMBER*/:
+ case 15/*TRUE*/:
+ case 16/*FALSE*/:
+ case 17/*UNSPECIFIED*/:
+ return token.val;
+ default:
+ throw "unexpected token " + token.type + " " + token.val;
+ }
+};
+
+/*** META ((export #t)) */
+function sc_read(port) {
+ if (port === undefined) // we assume the port hasn't been given.
+ port = SC_DEFAULT_IN; // THREAD: shared var...
+ var reader = new sc_Reader(new sc_Tokenizer(port));
+ return reader.read();
+}
+/*** META ((export #t)) */
+function sc_readChar(port) {
+ if (port === undefined) // we assume the port hasn't been given.
+ port = SC_DEFAULT_IN; // THREAD: shared var...
+ var t = port.readChar();
+ return t === SC_EOF_OBJECT? t: new sc_Char(t);
+}
+/*** META ((export #t)) */
+function sc_peekChar(port) {
+ if (port === undefined) // we assume the port hasn't been given.
+ port = SC_DEFAULT_IN; // THREAD: shared var...
+ var t = port.peekChar();
+ return t === SC_EOF_OBJECT? t: new sc_Char(t);
+}
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isCharReady(port) {
+ if (port === undefined) // we assume the port hasn't been given.
+ port = SC_DEFAULT_IN; // THREAD: shared var...
+ return port.isCharReady();
+}
+/*** META ((export #t)
+ (peephole (postfix ".close()")))
+*/
+function sc_closeInputPort(p) {
+ return p.close();
+}
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix " instanceof sc_InputPort")))
+*/
+function sc_isInputPort(o) {
+ return (o instanceof sc_InputPort);
+}
+
+/*** META ((export eof-object?)
+ (type bool)
+ (peephole (postfix " === SC_EOF_OBJECT")))
+*/
+function sc_isEOFObject(o) {
+ return o === SC_EOF_OBJECT;
+}
+
+/*** META ((export #t)
+ (peephole (hole 0 "SC_DEFAULT_IN")))
+*/
+function sc_currentInputPort() {
+ return SC_DEFAULT_IN;
+}
+
+/* ------------ file operations are not supported -----------*/
+/*** META ((export #t)) */
+function sc_callWithInputFile(s, proc) {
+ throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_callWithOutputFile(s, proc) {
+ throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_withInputFromFile(s, thunk) {
+ throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToFile(s, thunk) {
+ throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_openInputFile(s) {
+ throw "can't open " + s;
+}
+
+/*** META ((export #t)) */
+function sc_openOutputFile(s) {
+ throw "can't open " + s;
+}
+
+/* ----------------------------------------------------------------------------*/
+/*** META ((export #t)) */
+function sc_basename(p) {
+ var i = p.lastIndexOf('/');
+
+ if(i >= 0)
+ return p.substring(i + 1, p.length);
+ else
+ return '';
+}
+
+/*** META ((export #t)) */
+function sc_dirname(p) {
+ var i = p.lastIndexOf('/');
+
+ if(i >= 0)
+ return p.substring(0, i);
+ else
+ return '';
+}
+
+/* ----------------------------------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_withInputFromPort(p, thunk) {
+ try {
+ var tmp = SC_DEFAULT_IN; // THREAD: shared var.
+ SC_DEFAULT_IN = p;
+ return thunk();
+ } finally {
+ SC_DEFAULT_IN = tmp;
+ }
+}
+
+/*** META ((export #t)) */
+function sc_withInputFromString(s, thunk) {
+ return sc_withInputFromPort(new sc_StringInputPort(sc_string2jsstring(s)), thunk);
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToPort(p, thunk) {
+ try {
+ var tmp = SC_DEFAULT_OUT; // THREAD: shared var.
+ SC_DEFAULT_OUT = p;
+ return thunk();
+ } finally {
+ SC_DEFAULT_OUT = tmp;
+ }
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToString(thunk) {
+ var p = new sc_StringOutputPort();
+ sc_withOutputToPort(p, thunk);
+ return p.close();
+}
+
+/*** META ((export #t)) */
+function sc_withOutputToProcedure(proc, thunk) {
+ var t = function(s) { proc(sc_jsstring2string(s)); };
+ return sc_withOutputToPort(new sc_GenericOutputPort(t), thunk);
+}
+
+/*** META ((export #t)
+ (peephole (hole 0 "new sc_StringOutputPort()")))
+*/
+function sc_openOutputString() {
+ return new sc_StringOutputPort();
+}
+
+/*** META ((export #t)) */
+function sc_openInputString(str) {
+ return new sc_StringInputPort(sc_string2jsstring(str));
+}
+
+/* ----------------------------------------------------------------------------*/
+
+function sc_OutputPort() {
+}
+sc_OutputPort.prototype = new sc_Port();
+sc_OutputPort.prototype.appendJSString = function(obj) {
+ /* do nothing */
+}
+sc_OutputPort.prototype.close = function() {
+ /* do nothing */
+}
+
+function sc_StringOutputPort() {
+ this.res = "";
+}
+sc_StringOutputPort.prototype = new sc_OutputPort();
+sc_StringOutputPort.prototype.appendJSString = function(s) {
+ this.res += s;
+}
+sc_StringOutputPort.prototype.close = function() {
+ return sc_jsstring2string(this.res);
+}
+
+/*** META ((export #t)) */
+function sc_getOutputString(sp) {
+ return sc_jsstring2string(sp.res);
+}
+
+
+function sc_ErrorOutputPort() {
+}
+sc_ErrorOutputPort.prototype = new sc_OutputPort();
+sc_ErrorOutputPort.prototype.appendJSString = function(s) {
+ throw "don't write on ErrorPort!";
+}
+sc_ErrorOutputPort.prototype.close = function() {
+ /* do nothing */
+}
+
+function sc_GenericOutputPort(appendJSString, close) {
+ this.appendJSString = appendJSString;
+ if (close)
+ this.close = close;
+}
+sc_GenericOutputPort.prototype = new sc_OutputPort();
+
+/*** META ((export #t)
+ (type bool)
+ (peephole (postfix " instanceof sc_OutputPort")))
+*/
+function sc_isOutputPort(o) {
+ return (o instanceof sc_OutputPort);
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".close()")))
+*/
+function sc_closeOutputPort(p) {
+ return p.close();
+}
+
+/* ------------------ write ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_write(o, p) {
+ if (p === undefined) // we assume not given
+ p = SC_DEFAULT_OUT;
+ p.appendJSString(sc_toWriteString(o));
+}
+
+function sc_toWriteString(o) {
+ if (o === null)
+ return "()";
+ else if (o === true)
+ return "#t";
+ else if (o === false)
+ return "#f";
+ else if (o === undefined)
+ return "#unspecified";
+ else if (typeof o === 'function')
+ return "#<procedure " + sc_hash(o) + ">";
+ else if (o.sc_toWriteString)
+ return o.sc_toWriteString();
+ else
+ return o.toString();
+}
+
+function sc_escapeWriteString(s) {
+ var res = "";
+ var j = 0;
+ for (i = 0; i < s.length; i++) {
+ switch (s.charAt(i)) {
+ case "\0": res += s.substring(j, i) + "\\0"; j = i + 1; break;
+ case "\b": res += s.substring(j, i) + "\\b"; j = i + 1; break;
+ case "\f": res += s.substring(j, i) + "\\f"; j = i + 1; break;
+ case "\n": res += s.substring(j, i) + "\\n"; j = i + 1; break;
+ case "\r": res += s.substring(j, i) + "\\r"; j = i + 1; break;
+ case "\t": res += s.substring(j, i) + "\\t"; j = i + 1; break;
+ case "\v": res += s.substring(j, i) + "\\v"; j = i + 1; break;
+ case '"': res += s.substring(j, i) + '\\"'; j = i + 1; break;
+ case "\\": res += s.substring(j, i) + "\\\\"; j = i + 1; break;
+ default:
+ var c = s.charAt(i);
+ if ("\a" !== "a" && c == "\a") {
+ res += s.substring(j, i) + "\\a"; j = i + 1; continue;
+ }
+ if ("\v" !== "v" && c == "\v") {
+ res += s.substring(j, i) + "\\v"; j = i + 1; continue;
+ }
+ //if (s.charAt(i) < ' ' || s.charCodeAt(i) > 127) {
+ // CARE: Manuel is this OK with HOP?
+ if (s.charAt(i) < ' ') {
+ /* non printable character and special chars */
+ res += s.substring(j, i) + "\\x" + s.charCodeAt(i).toString(16);
+ j = i + 1;
+ }
+ // else just let i increase...
+ }
+ }
+ res += s.substring(j, i);
+ return res;
+}
+
+/* ------------------ display ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_display(o, p) {
+ if (p === undefined) // we assume not given
+ p = SC_DEFAULT_OUT;
+ p.appendJSString(sc_toDisplayString(o));
+}
+
+function sc_toDisplayString(o) {
+ if (o === null)
+ return "()";
+ else if (o === true)
+ return "#t";
+ else if (o === false)
+ return "#f";
+ else if (o === undefined)
+ return "#unspecified";
+ else if (typeof o === 'function')
+ return "#<procedure " + sc_hash(o) + ">";
+ else if (o.sc_toDisplayString)
+ return o.sc_toDisplayString();
+ else
+ return o.toString();
+}
+
+/* ------------------ newline ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_newline(p) {
+ if (p === undefined) // we assume not given
+ p = SC_DEFAULT_OUT;
+ p.appendJSString("\n");
+}
+
+/* ------------------ write-char ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_writeChar(c, p) {
+ if (p === undefined) // we assume not given
+ p = SC_DEFAULT_OUT;
+ p.appendJSString(c.val);
+}
+
+/* ------------------ write-circle ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_writeCircle(o, p) {
+ if (p === undefined) // we assume not given
+ p = SC_DEFAULT_OUT;
+ p.appendJSString(sc_toWriteCircleString(o));
+}
+
+function sc_toWriteCircleString(o) {
+ var symb = sc_gensym("writeCircle");
+ var nbPointer = new Object();
+ nbPointer.nb = 0;
+ sc_prepWriteCircle(o, symb, nbPointer);
+ return sc_genToWriteCircleString(o, symb);
+}
+
+function sc_prepWriteCircle(o, symb, nbPointer) {
+ // TODO sc_Struct
+ if (o instanceof sc_Pair ||
+ o instanceof sc_Vector) {
+ if (o[symb] !== undefined) {
+ // not the first visit.
+ o[symb]++;
+ // unless there is already a number, assign one.
+ if (!o[symb + "nb"]) o[symb + "nb"] = nbPointer.nb++;
+ return;
+ }
+ o[symb] = 0;
+ if (o instanceof sc_Pair) {
+ sc_prepWriteCircle(o.car, symb, nbPointer);
+ sc_prepWriteCircle(o.cdr, symb, nbPointer);
+ } else {
+ for (var i = 0; i < o.length; i++)
+ sc_prepWriteCircle(o[i], symb, nbPointer);
+ }
+ }
+}
+
+function sc_genToWriteCircleString(o, symb) {
+ if (!(o instanceof sc_Pair ||
+ o instanceof sc_Vector))
+ return sc_toWriteString(o);
+ return o.sc_toWriteCircleString(symb);
+}
+sc_Pair.prototype.sc_toWriteCircleString = function(symb, inList) {
+ if (this[symb + "use"]) { // use-flag is set. Just use it.
+ var nb = this[symb + "nb"];
+ if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+ delete this[symb];
+ delete this[symb + "nb"];
+ delete this[symb + "use"];
+ }
+ if (inList)
+ return '. #' + nb + '#';
+ else
+ return '#' + nb + '#';
+ }
+ if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+ delete this[symb];
+ delete this[symb + "nb"];
+ delete this[symb + "use"];
+ }
+
+ var res = "";
+
+ if (this[symb] !== undefined) { // implies > 0
+ this[symb + "use"] = true;
+ if (inList)
+ res += '. #' + this[symb + "nb"] + '=';
+ else
+ res += '#' + this[symb + "nb"] + '=';
+ inList = false;
+ }
+
+ if (!inList)
+ res += "(";
+
+ // print car
+ res += sc_genToWriteCircleString(this.car, symb);
+
+ if (sc_isPair(this.cdr)) {
+ res += " " + this.cdr.sc_toWriteCircleString(symb, true);
+ } else if (this.cdr !== null) {
+ res += " . " + sc_genToWriteCircleString(this.cdr, symb);
+ }
+ if (!inList)
+ res += ")";
+ return res;
+};
+sc_Vector.prototype.sc_toWriteCircleString = function(symb) {
+ if (this[symb + "use"]) { // use-flag is set. Just use it.
+ var nb = this[symb + "nb"];
+ if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+ delete this[symb];
+ delete this[symb + "nb"];
+ delete this[symb + "use"];
+ }
+ return '#' + nb + '#';
+ }
+ if (this[symb]-- === 0) { // if we are the last use. remove all fields.
+ delete this[symb];
+ delete this[symb + "nb"];
+ delete this[symb + "use"];
+ }
+
+ var res = "";
+ if (this[symb] !== undefined) { // implies > 0
+ this[symb + "use"] = true;
+ res += '#' + this[symb + "nb"] + '=';
+ }
+ res += "#(";
+ for (var i = 0; i < this.length; i++) {
+ res += sc_genToWriteCircleString(this[i], symb);
+ if (i < this.length - 1) res += " ";
+ }
+ res += ")";
+ return res;
+};
+
+
+/* ------------------ print ---------------------------------------------------*/
+
+/*** META ((export #t)) */
+function sc_print(s) {
+ if (arguments.length === 1) {
+ sc_display(s);
+ sc_newline();
+ }
+ else {
+ for (var i = 0; i < arguments.length; i++)
+ sc_display(arguments[i]);
+ sc_newline();
+ }
+}
+
+/* ------------------ format ---------------------------------------------------*/
+/*** META ((export #t)) */
+function sc_format(s, args) {
+ var len = s.length;
+ var p = new sc_StringOutputPort();
+ var i = 0, j = 1;
+
+ while( i < len ) {
+ var i2 = s.indexOf("~", i);
+
+ if (i2 == -1) {
+ p.appendJSString( s.substring( i, len ) );
+ return p.close();
+ } else {
+ if (i2 > i) {
+ if (i2 == (len - 1)) {
+ p.appendJSString(s.substring(i, len));
+ return p.close();
+ } else {
+ p.appendJSString(s.substring(i, i2));
+ i = i2;
+ }
+ }
+
+ switch(s.charCodeAt(i2 + 1)) {
+ case 65:
+ case 97:
+ // a
+ sc_display(arguments[j], p);
+ i += 2; j++;
+ break;
+
+ case 83:
+ case 115:
+ // s
+ sc_write(arguments[j], p);
+ i += 2; j++;
+ break;
+
+ case 86:
+ case 118:
+ // v
+ sc_display(arguments[j], p);
+ p.appendJSString("\n");
+ i += 2; j++;
+ break;
+
+ case 67:
+ case 99:
+ // c
+ p.appendJSString(String.fromCharCode(arguments[j]));
+ i += 2; j++;
+ break;
+
+ case 88:
+ case 120:
+ // x
+ p.appendJSString(arguments[j].toString(6));
+ i += 2; j++;
+ break;
+
+ case 79:
+ case 111:
+ // o
+ p.appendJSString(arguments[j].toString(8));
+ i += 2; j++;
+ break;
+
+ case 66:
+ case 98:
+ // b
+ p.appendJSString(arguments[j].toString(2));
+ i += 2; j++;
+ break;
+
+ case 37:
+ case 110:
+ // %, n
+ p.appendJSString("\n");
+ i += 2; break;
+
+ case 114:
+ // r
+ p.appendJSString("\r");
+ i += 2; break;
+
+ case 126:
+ // ~
+ p.appendJSString("~");
+ i += 2; break;
+
+ default:
+ sc_error( "format: illegal ~"
+ + String.fromCharCode(s.charCodeAt(i2 + 1))
+ + " sequence" );
+ return "";
+ }
+ }
+ }
+
+ return p.close();
+}
+
+/* ------------------ global ports ---------------------------------------------------*/
+
+var SC_DEFAULT_IN = new sc_ErrorInputPort();
+var SC_DEFAULT_OUT = new sc_ErrorOutputPort();
+var SC_ERROR_OUT = new sc_ErrorOutputPort();
+
+var sc_SYMBOL_PREFIX = "\u1E9C";
+var sc_KEYWORD_PREFIX = "\u1E9D";
+
+/*** META ((export #t)
+ (peephole (id))) */
+function sc_jsstring2string(s) {
+ return s;
+}
+
+/*** META ((export #t)
+ (peephole (prefix "'\\u1E9C' +")))
+*/
+function sc_jsstring2symbol(s) {
+ return sc_SYMBOL_PREFIX + s;
+}
+
+/*** META ((export #t)
+ (peephole (id)))
+*/
+function sc_string2jsstring(s) {
+ return s;
+}
+
+/*** META ((export #t)
+ (peephole (symbol2jsstring_immutable)))
+*/
+function sc_symbol2jsstring(s) {
+ return s.slice(1);
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".slice(1)")))
+*/
+function sc_keyword2jsstring(k) {
+ return k.slice(1);
+}
+
+/*** META ((export #t)
+ (peephole (prefix "'\\u1E9D' +")))
+*/
+function sc_jsstring2keyword(s) {
+ return sc_KEYWORD_PREFIX + s;
+}
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isKeyword(s) {
+ return (typeof s === "string") &&
+ (s.charAt(0) === sc_KEYWORD_PREFIX);
+}
+
+
+/*** META ((export #t)) */
+var sc_gensym = function() {
+ var counter = 1000;
+ return function(sym) {
+ counter++;
+ if (!sym) sym = sc_SYMBOL_PREFIX;
+ return sym + "s" + counter + "~" + "^sC-GeNsYm ";
+ };
+}();
+
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isEqual(o1, o2) {
+ return ((o1 === o2) ||
+ (sc_isPair(o1) && sc_isPair(o2)
+ && sc_isPairEqual(o1, o2, sc_isEqual)) ||
+ (sc_isVector(o1) && sc_isVector(o2)
+ && sc_isVectorEqual(o1, o2, sc_isEqual)));
+}
+
+/*** META ((export number->symbol integer->symbol)) */
+function sc_number2symbol(x, radix) {
+ return sc_SYMBOL_PREFIX + sc_number2jsstring(x, radix);
+}
+
+/*** META ((export number->string integer->string)) */
+var sc_number2string = sc_number2jsstring;
+
+/*** META ((export #t)) */
+function sc_symbol2number(s, radix) {
+ return sc_jsstring2number(s.slice(1), radix);
+}
+
+/*** META ((export #t)) */
+var sc_string2number = sc_jsstring2number;
+
+/*** META ((export #t)
+ (peephole (prefix "+" s)))
+ ;; peephole will only apply if no radix is given.
+*/
+function sc_string2integer(s, radix) {
+ if (!radix) return +s;
+ return parseInt(s, radix);
+}
+
+/*** META ((export #t)
+ (peephole (prefix "+")))
+*/
+function sc_string2real(s) {
+ return +s;
+}
+
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isSymbol(s) {
+ return (typeof s === "string") &&
+ (s.charAt(0) === sc_SYMBOL_PREFIX);
+}
+
+/*** META ((export #t)
+ (peephole (symbol2string_immutable)))
+*/
+function sc_symbol2string(s) {
+ return s.slice(1);
+}
+
+/*** META ((export #t)
+ (peephole (prefix "'\\u1E9C' +")))
+*/
+function sc_string2symbol(s) {
+ return sc_SYMBOL_PREFIX + s;
+}
+
+/*** META ((export symbol-append)
+ (peephole (symbolAppend_immutable)))
+*/
+function sc_symbolAppend() {
+ var res = sc_SYMBOL_PREFIX;
+ for (var i = 0; i < arguments.length; i++)
+ res += arguments[i].slice(1);
+ return res;
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".val")))
+*/
+function sc_char2string(c) { return c.val; }
+
+/*** META ((export #t)
+ (peephole (hole 1 "'\\u1E9C' + " c ".val")))
+*/
+function sc_char2symbol(c) { return sc_SYMBOL_PREFIX + c.val; }
+
+/*** META ((export #t)
+ (type bool))
+*/
+function sc_isString(s) {
+ return (typeof s === "string") &&
+ (s.charAt(0) !== sc_SYMBOL_PREFIX);
+}
+
+/*** META ((export #t)) */
+var sc_makeString = sc_makejsString;
+
+
+/*** META ((export #t)) */
+function sc_string() {
+ for (var i = 0; i < arguments.length; i++)
+ arguments[i] = arguments[i].val;
+ return "".concat.apply("", arguments);
+}
+
+/*** META ((export #t)
+ (peephole (postfix ".length")))
+*/
+function sc_stringLength(s) { return s.length; }
+
+/*** META ((export #t)) */
+function sc_stringRef(s, k) {
+ return new sc_Char(s.charAt(k));
+}
+
+/* there's no stringSet in the immutable version
+function sc_stringSet(s, k, c)
+*/
+
+
+/*** META ((export string=?)
+ (type bool)
+ (peephole (hole 2 str1 " === " str2)))
+*/
+function sc_isStringEqual(s1, s2) {
+ return s1 === s2;
+}
+/*** META ((export string<?)
+ (type bool)
+ (peephole (hole 2 str1 " < " str2)))
+*/
+function sc_isStringLess(s1, s2) {
+ return s1 < s2;
+}
+/*** META ((export string>?)
+ (type bool)
+ (peephole (hole 2 str1 " > " str2)))
+*/
+function sc_isStringGreater(s1, s2) {
+ return s1 > s2;
+}
+/*** META ((export string<=?)
+ (type bool)
+ (peephole (hole 2 str1 " <= " str2)))
+*/
+function sc_isStringLessEqual(s1, s2) {
+ return s1 <= s2;
+}
+/*** META ((export string>=?)
+ (type bool)
+ (peephole (hole 2 str1 " >= " str2)))
+*/
+function sc_isStringGreaterEqual(s1, s2) {
+ return s1 >= s2;
+}
+/*** META ((export string-ci=?)
+ (type bool)
+ (peephole (hole 2 str1 ".toLowerCase() === " str2 ".toLowerCase()")))
+*/
+function sc_isStringCIEqual(s1, s2) {
+ return s1.toLowerCase() === s2.toLowerCase();
+}
+/*** META ((export string-ci<?)
+ (type bool)
+ (peephole (hole 2 str1 ".toLowerCase() < " str2 ".toLowerCase()")))
+*/
+function sc_isStringCILess(s1, s2) {
+ return s1.toLowerCase() < s2.toLowerCase();
+}
+/*** META ((export string-ci>?)
+ (type bool)
+ (peephole (hole 2 str1 ".toLowerCase() > " str2 ".toLowerCase()")))
+*/
+function sc_isStringCIGreater(s1, s2) {
+ return s1.toLowerCase() > s2.toLowerCase();
+}
+/*** META ((export string-ci<=?)
+ (type bool)
+ (peephole (hole 2 str1 ".toLowerCase() <= " str2 ".toLowerCase()")))
+*/
+function sc_isStringCILessEqual(s1, s2) {
+ return s1.toLowerCase() <= s2.toLowerCase();
+}
+/*** META ((export string-ci>=?)
+ (type bool)
+ (peephole (hole 2 str1 ".toLowerCase() >= " str2 ".toLowerCase()")))
+*/
+function sc_isStringCIGreaterEqual(s1, s2) {
+ return s1.toLowerCase() >= s2.toLowerCase();
+}
+
+/*** META ((export #t)
+ (peephole (hole 3 s ".substring(" start ", " end ")")))
+*/
+function sc_substring(s, start, end) {
+ return s.substring(start, end);
+}
+
+/*** META ((export #t))
+*/
+function sc_isSubstring_at(s1, s2, i) {
+ return s2 == s1.substring(i, i+ s2.length);
+}
+
+/*** META ((export #t)
+ (peephole (infix 0 #f "+" "''")))
+*/
+function sc_stringAppend() {
+ return "".concat.apply("", arguments);
+}
+
+/*** META ((export #t)) */
+var sc_string2list = sc_jsstring2list;
+
+/*** META ((export #t)) */
+var sc_list2string = sc_list2jsstring;
+
+/*** META ((export #t)
+ (peephole (id)))
+*/
+function sc_stringCopy(s) {
+ return s;
+}
+
+/* there's no string-fill in the immutable version
+function sc_stringFill(s, c)
+*/
+
+/*** META ((export #t)
+ (peephole (postfix ".slice(1)")))
+*/
+function sc_keyword2string(o) {
+ return o.slice(1);
+}
+
+/*** META ((export #t)
+ (peephole (prefix "'\\u1E9D' +")))
+*/
+function sc_string2keyword(o) {
+ return sc_KEYWORD_PREFIX + o;
+}
+
+String.prototype.sc_toDisplayString = function() {
+ if (this.charAt(0) === sc_SYMBOL_PREFIX)
+ // TODO: care for symbols with spaces (escape-chars symbols).
+ return this.slice(1);
+ else if (this.charAt(0) === sc_KEYWORD_PREFIX)
+ return ":" + this.slice(1);
+ else
+ return this.toString();
+};
+
+String.prototype.sc_toWriteString = function() {
+ if (this.charAt(0) === sc_SYMBOL_PREFIX)
+ // TODO: care for symbols with spaces (escape-chars symbols).
+ return this.slice(1);
+ else if (this.charAt(0) === sc_KEYWORD_PREFIX)
+ return ":" + this.slice(1);
+ else
+ return '"' + sc_escapeWriteString(this) + '"';
+};
+/* Exported Variables */
+var BgL_testzd2boyerzd2;
+var BgL_nboyerzd2benchmarkzd2;
+var BgL_setupzd2boyerzd2;
+/* End Exports */
+
+var translate_term_nboyer;
+var translate_args_nboyer;
+var untranslate_term_nboyer;
+var BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer;
+var BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer;
+var translate_alist_nboyer;
+var apply_subst_nboyer;
+var apply_subst_lst_nboyer;
+var tautologyp_nboyer;
+var if_constructor_nboyer;
+var rewrite_count_nboyer;
+var rewrite_nboyer;
+var rewrite_args_nboyer;
+var unify_subst_nboyer;
+var one_way_unify1_nboyer;
+var false_term_nboyer;
+var true_term_nboyer;
+var trans_of_implies1_nboyer;
+var is_term_equal_nboyer;
+var is_term_member_nboyer;
+var const_nboyer;
+var sc_const_3_nboyer;
+var sc_const_4_nboyer;
+{
+ (sc_const_4_nboyer = (new sc_Pair("\u1E9Cimplies",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cu",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cw",null)))))),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cw",null)))))),null)))))));
+ (sc_const_3_nboyer = sc_list((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccompile",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Ccodegen",(new sc_Pair((new sc_Pair("\u1E9Coptimize",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreaterp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clesseqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cboolean",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ciff",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceven1",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Codd",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccountps-",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccountps-loop",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfact-",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfact-loop",(new sc_Pair("\u1E9Ci",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdivides",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-true",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-false",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctautology-checker",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctautologyp",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfalsify",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfalsify1",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime1",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair("\u1E9Cp",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))))),(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cc",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cplus-fringe",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair("\u1E9Cenvrn",null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmc-flatten",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cintersect",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Ck",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ck",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Csort-lp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus1",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Ci",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cbase",null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cj",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cj",(new sc_Pair((1),null)))))),null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Ci",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cw",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cz",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnlistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csamefringe",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cz",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cw",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair(sc_list("\u1E9Cand", (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Ca",null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cb",null)))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cl",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cl",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdsort",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx1",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx2",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx3",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx4",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx5",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx6",(new sc_Pair("\u1E9Cx7",null)))))),null)))))),null)))))),null)))))),null)))))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((6),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx7",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cy",(new sc_Pair((2),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csigma",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Ci",null)))),null)))))),(new sc_Pair((2),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cz",null)))),null)))))),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Ca",null)))),null)))),(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Cb",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair("\u1E9Cz",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cassignedp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair((new sc_Pair("\u1E9Cset",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cval",(new sc_Pair("\u1E9Cmem",null)))))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair("\u1E9Cval",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cmem",null)))))),null)))))))),null))))))));
+ (const_nboyer = (new sc_Pair((new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))))),null)))))))))));
+ BgL_nboyerzd2benchmarkzd2 = function() {
+ var args = null;
+ for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) {
+ args = sc_cons(arguments[sc_tmp], args);
+ }
+ var n;
+ return ((n = ((args === null)?(0):(args.car))), (BgL_setupzd2boyerzd2()), (BgL_runzd2benchmarkzd2(("nboyer"+(sc_number2string(n))), (1), function() {
+ return (BgL_testzd2boyerzd2(n));
+ }, function(rewrites) {
+ if ((sc_isNumber(rewrites)))
+ switch (n) {
+ case (0):
+ return (rewrites===(95024));
+ break;
+ case (1):
+ return (rewrites===(591777));
+ break;
+ case (2):
+ return (rewrites===(1813975));
+ break;
+ case (3):
+ return (rewrites===(5375678));
+ break;
+ case (4):
+ return (rewrites===(16445406));
+ break;
+ case (5):
+ return (rewrites===(51507739));
+ break;
+ default:
+ return true;
+ break;
+ }
+ else
+ return false;
+ })));
+ };
+ BgL_setupzd2boyerzd2 = function() {
+ return true;
+ };
+ BgL_testzd2boyerzd2 = function() {
+ return true;
+ };
+ translate_term_nboyer = function(term) {
+ var lst;
+ return (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((translate_term_nboyer((lst.car))), (translate_args_nboyer((lst.cdr))))))))));
+ };
+ translate_args_nboyer = function(lst) {
+ var sc_lst_5;
+ var term;
+ return ((lst === null)?null:(new sc_Pair(((term = (lst.car)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))), ((sc_lst_5 = (lst.cdr)), ((sc_lst_5 === null)?null:(new sc_Pair((translate_term_nboyer((sc_lst_5.car))), (translate_args_nboyer((sc_lst_5.cdr))))))))));
+ };
+ untranslate_term_nboyer = function(term) {
+ var optrOpnd;
+ var tail1131;
+ var L1127;
+ var falseHead1130;
+ var symbol_record;
+ if (!(term instanceof sc_Pair))
+ return term;
+ else
+ {
+ (falseHead1130 = (new sc_Pair(null, null)));
+ (L1127 = (term.cdr));
+ (tail1131 = falseHead1130);
+ while (!(L1127 === null)) {
+ {
+ (tail1131.cdr = (new sc_Pair((untranslate_term_nboyer((L1127.car))), null)));
+ (tail1131 = (tail1131.cdr));
+ (L1127 = (L1127.cdr));
+ }
+ }
+ (optrOpnd = (falseHead1130.cdr));
+ return (new sc_Pair(((symbol_record = (term.car)), (symbol_record[(0)])), optrOpnd));
+ }
+ };
+ BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer = function(sym) {
+ var r;
+ var x;
+ return ((x = (sc_assq(sym, BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), ((x!== false)?(x.cdr):((r = [sym, null]), (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = (new sc_Pair((new sc_Pair(sym, r)), BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), r)));
+ };
+ (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null);
+ translate_alist_nboyer = function(alist) {
+ var sc_alist_6;
+ var term;
+ return ((alist === null)?null:(new sc_Pair((new sc_Pair((alist.car.car), ((term = (alist.car.cdr)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))))), ((sc_alist_6 = (alist.cdr)), ((sc_alist_6 === null)?null:(new sc_Pair((new sc_Pair((sc_alist_6.car.car), (translate_term_nboyer((sc_alist_6.car.cdr))))), (translate_alist_nboyer((sc_alist_6.cdr))))))))));
+ };
+ apply_subst_nboyer = function(alist, term) {
+ var lst;
+ var temp_temp;
+ return (!(term instanceof sc_Pair)?((temp_temp = (sc_assq(term, alist))), ((temp_temp!== false)?(temp_temp.cdr):term)):(new sc_Pair((term.car), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), (apply_subst_lst_nboyer(alist, (lst.cdr))))))))));
+ };
+ apply_subst_lst_nboyer = function(alist, lst) {
+ var sc_lst_7;
+ return ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), ((sc_lst_7 = (lst.cdr)), ((sc_lst_7 === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (sc_lst_7.car))), (apply_subst_lst_nboyer(alist, (sc_lst_7.cdr))))))))));
+ };
+ tautologyp_nboyer = function(sc_x_11, true_lst, false_lst) {
+ var tmp1125;
+ var x;
+ var tmp1126;
+ var sc_x_8;
+ var sc_tmp1125_9;
+ var sc_tmp1126_10;
+ var sc_x_11;
+ var true_lst;
+ var false_lst;
+ while (true) {
+ if ((((sc_tmp1126_10 = (is_term_equal_nboyer(sc_x_11, true_term_nboyer))), ((sc_tmp1126_10!== false)?sc_tmp1126_10:(is_term_member_nboyer(sc_x_11, true_lst))))!== false))
+ return true;
+ else
+ if ((((sc_tmp1125_9 = (is_term_equal_nboyer(sc_x_11, false_term_nboyer))), ((sc_tmp1125_9!== false)?sc_tmp1125_9:(is_term_member_nboyer(sc_x_11, false_lst))))!== false))
+ return false;
+ else
+ if (!(sc_x_11 instanceof sc_Pair))
+ return false;
+ else
+ if (((sc_x_11.car)===if_constructor_nboyer))
+ if ((((sc_x_8 = (sc_x_11.cdr.car)), (tmp1126 = (is_term_equal_nboyer(sc_x_8, true_term_nboyer))), ((tmp1126!== false)?tmp1126:(is_term_member_nboyer(sc_x_8, true_lst))))!== false))
+ (sc_x_11 = (sc_x_11.cdr.cdr.car));
+ else
+ if ((((x = (sc_x_11.cdr.car)), (tmp1125 = (is_term_equal_nboyer(x, false_term_nboyer))), ((tmp1125!== false)?tmp1125:(is_term_member_nboyer(x, false_lst))))!== false))
+ (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car));
+ else
+ if (((tautologyp_nboyer((sc_x_11.cdr.cdr.car), (new sc_Pair((sc_x_11.cdr.car), true_lst)), false_lst))!== false))
+ {
+ (false_lst = (new sc_Pair((sc_x_11.cdr.car), false_lst)));
+ (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car));
+ }
+ else
+ return false;
+ else
+ return false;
+ }
+ };
+ (if_constructor_nboyer = "\u1E9C*");
+ (rewrite_count_nboyer = (0));
+ rewrite_nboyer = function(term) {
+ var term2;
+ var sc_term_12;
+ var lst;
+ var symbol_record;
+ var sc_lst_13;
+ {
+ (++rewrite_count_nboyer);
+ if (!(term instanceof sc_Pair))
+ return term;
+ else
+ {
+ (sc_term_12 = (new sc_Pair((term.car), ((sc_lst_13 = (term.cdr)), ((sc_lst_13 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_13.car))), (rewrite_args_nboyer((sc_lst_13.cdr))))))))));
+ (lst = ((symbol_record = (term.car)), (symbol_record[(1)])));
+ while (true) {
+ if ((lst === null))
+ return sc_term_12;
+ else
+ if ((((term2 = ((lst.car).cdr.car)), (unify_subst_nboyer = null), (one_way_unify1_nboyer(sc_term_12, term2)))!== false))
+ return (rewrite_nboyer((apply_subst_nboyer(unify_subst_nboyer, ((lst.car).cdr.cdr.car)))));
+ else
+ (lst = (lst.cdr));
+ }
+ }
+ }
+ };
+ rewrite_args_nboyer = function(lst) {
+ var sc_lst_14;
+ return ((lst === null)?null:(new sc_Pair((rewrite_nboyer((lst.car))), ((sc_lst_14 = (lst.cdr)), ((sc_lst_14 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_14.car))), (rewrite_args_nboyer((sc_lst_14.cdr))))))))));
+ };
+ (unify_subst_nboyer = "\u1E9C*");
+ one_way_unify1_nboyer = function(term1, term2) {
+ var lst1;
+ var lst2;
+ var temp_temp;
+ if (!(term2 instanceof sc_Pair))
+ {
+ (temp_temp = (sc_assq(term2, unify_subst_nboyer)));
+ if ((temp_temp!== false))
+ return (is_term_equal_nboyer(term1, (temp_temp.cdr)));
+ else
+ if ((sc_isNumber(term2)))
+ return (sc_isEqual(term1, term2));
+ else
+ {
+ (unify_subst_nboyer = (new sc_Pair((new sc_Pair(term2, term1)), unify_subst_nboyer)));
+ return true;
+ }
+ }
+ else
+ if (!(term1 instanceof sc_Pair))
+ return false;
+ else
+ if (((term1.car)===(term2.car)))
+ {
+ (lst1 = (term1.cdr));
+ (lst2 = (term2.cdr));
+ while (true) {
+ if ((lst1 === null))
+ return (lst2 === null);
+ else
+ if ((lst2 === null))
+ return false;
+ else
+ if (((one_way_unify1_nboyer((lst1.car), (lst2.car)))!== false))
+ {
+ (lst1 = (lst1.cdr));
+ (lst2 = (lst2.cdr));
+ }
+ else
+ return false;
+ }
+ }
+ else
+ return false;
+ };
+ (false_term_nboyer = "\u1E9C*");
+ (true_term_nboyer = "\u1E9C*");
+ trans_of_implies1_nboyer = function(n) {
+ var sc_n_15;
+ return ((sc_isEqual(n, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (n-(1)), n)), ((sc_n_15 = (n-(1))), ((sc_isEqual(sc_n_15, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (sc_n_15-(1)), sc_n_15)), (trans_of_implies1_nboyer((sc_n_15-(1)))))))))));
+ };
+ is_term_equal_nboyer = function(x, y) {
+ var lst1;
+ var lst2;
+ var r2;
+ var r1;
+ if ((x instanceof sc_Pair))
+ if ((y instanceof sc_Pair))
+ if ((((r1 = (x.car)), (r2 = (y.car)), (r1===r2))!== false))
+ {
+ (lst1 = (x.cdr));
+ (lst2 = (y.cdr));
+ while (true) {
+ if ((lst1 === null))
+ return (lst2 === null);
+ else
+ if ((lst2 === null))
+ return false;
+ else
+ if (((is_term_equal_nboyer((lst1.car), (lst2.car)))!== false))
+ {
+ (lst1 = (lst1.cdr));
+ (lst2 = (lst2.cdr));
+ }
+ else
+ return false;
+ }
+ }
+ else
+ return false;
+ else
+ return false;
+ else
+ return (sc_isEqual(x, y));
+ };
+ is_term_member_nboyer = function(x, lst) {
+ var x;
+ var lst;
+ while (true) {
+ if ((lst === null))
+ return false;
+ else
+ if (((is_term_equal_nboyer(x, (lst.car)))!== false))
+ return true;
+ else
+ (lst = (lst.cdr));
+ }
+ };
+ BgL_setupzd2boyerzd2 = function() {
+ var symbol_record;
+ var value;
+ var BgL_sc_symbolzd2record_16zd2;
+ var sym;
+ var sc_sym_17;
+ var term;
+ var lst;
+ var sc_term_18;
+ var sc_term_19;
+ {
+ (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null);
+ (if_constructor_nboyer = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer("\u1E9Cif")));
+ (false_term_nboyer = ((sc_term_19 = (new sc_Pair("\u1E9Cf",null))), (!(sc_term_19 instanceof sc_Pair)?sc_term_19:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_19.car))), (translate_args_nboyer((sc_term_19.cdr))))))));
+ (true_term_nboyer = ((sc_term_18 = (new sc_Pair("\u1E9Ct",null))), (!(sc_term_18 instanceof sc_Pair)?sc_term_18:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_18.car))), (translate_args_nboyer((sc_term_18.cdr))))))));
+ (lst = sc_const_3_nboyer);
+ while (!(lst === null)) {
+ {
+ (term = (lst.car));
+ if (((term instanceof sc_Pair)&&(((term.car)==="\u1E9Cequal")&&((term.cdr.car) instanceof sc_Pair))))
+ {
+ (sc_sym_17 = ((term.cdr.car).car));
+ (value = (new sc_Pair((!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr)))))), ((sym = ((term.cdr.car).car)), (BgL_sc_symbolzd2record_16zd2 = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sym))), (BgL_sc_symbolzd2record_16zd2[(1)])))));
+ (symbol_record = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sc_sym_17)));
+ (symbol_record[(1)] = value);
+ }
+ else
+ (sc_error("ADD-LEMMA did not like term: ", term));
+ (lst = (lst.cdr));
+ }
+ }
+ return true;
+ }
+ };
+ BgL_testzd2boyerzd2 = function(n) {
+ var optrOpnd;
+ var term;
+ var sc_n_20;
+ var answer;
+ var sc_term_21;
+ var sc_term_22;
+ {
+ (rewrite_count_nboyer = (0));
+ (term = sc_const_4_nboyer);
+ (sc_n_20 = n);
+ while (!(sc_n_20=== 0)) {
+ {
+ (term = (sc_list("\u1E9Cor", term, (new sc_Pair("\u1E9Cf",null)))));
+ (--sc_n_20);
+ }
+ }
+ (sc_term_22 = term);
+ if (!(sc_term_22 instanceof sc_Pair))
+ (optrOpnd = sc_term_22);
+ else
+ (optrOpnd = (new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_22.car))), (translate_args_nboyer((sc_term_22.cdr))))));
+ (sc_term_21 = (apply_subst_nboyer(((const_nboyer === null)?null:(new sc_Pair((new sc_Pair((const_nboyer.car.car), (translate_term_nboyer((const_nboyer.car.cdr))))), (translate_alist_nboyer((const_nboyer.cdr)))))), optrOpnd)));
+ (answer = (tautologyp_nboyer((rewrite_nboyer(sc_term_21)), null, null)));
+ (sc_write(rewrite_count_nboyer));
+ (sc_display(" rewrites"));
+ (sc_newline());
+ if ((answer!== false))
+ return rewrite_count_nboyer;
+ else
+ return false;
+ }
+ };
+}
+/* Exported Variables */
+var BgL_parsezd2ze3nbzd2treesze3;
+var BgL_earleyzd2benchmarkzd2;
+var BgL_parsezd2ze3parsedzf3zc2;
+var test;
+var BgL_parsezd2ze3treesz31;
+var BgL_makezd2parserzd2;
+/* End Exports */
+
+var const_earley;
+{
+ (const_earley = (new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair((new sc_Pair("\u1E9Ca",null)),(new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair("\u1E9Cs",null)))),null)))))),null)));
+ BgL_makezd2parserzd2 = function(grammar, lexer) {
+ var i;
+ var parser_descr;
+ var def_loop;
+ var nb_nts;
+ var names;
+ var steps;
+ var predictors;
+ var enders;
+ var starters;
+ var nts;
+ var sc_names_1;
+ var sc_steps_2;
+ var sc_predictors_3;
+ var sc_enders_4;
+ var sc_starters_5;
+ var nb_confs;
+ var BgL_sc_defzd2loop_6zd2;
+ var BgL_sc_nbzd2nts_7zd2;
+ var sc_nts_8;
+ var BgL_sc_defzd2loop_9zd2;
+ var ind;
+ {
+ ind = function(nt, sc_nts_10) {
+ var i;
+ {
+ (i = ((sc_nts_10.length)-(1)));
+ while (true) {
+ if ((i>=(0)))
+ if ((sc_isEqual((sc_nts_10[i]), nt)))
+ return i;
+ else
+ (--i);
+ else
+ return false;
+ }
+ }
+ };
+ (sc_nts_8 = ((BgL_sc_defzd2loop_9zd2 = function(defs, sc_nts_11) {
+ var rule_loop;
+ var head;
+ var def;
+ return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, sc_nts_12) {
+ var nt;
+ var l;
+ var sc_nts_13;
+ var rule;
+ if ((rules instanceof sc_Pair))
+ {
+ (rule = (rules.car));
+ (l = rule);
+ (sc_nts_13 = sc_nts_12);
+ while ((l instanceof sc_Pair)) {
+ {
+ (nt = (l.car));
+ (l = (l.cdr));
+ (sc_nts_13 = (((sc_member(nt, sc_nts_13))!== false)?sc_nts_13:(new sc_Pair(nt, sc_nts_13))));
+ }
+ }
+ return (rule_loop((rules.cdr), sc_nts_13));
+ }
+ else
+ return (BgL_sc_defzd2loop_9zd2((defs.cdr), sc_nts_12));
+ }), (rule_loop((def.cdr), (((sc_member(head, sc_nts_11))!== false)?sc_nts_11:(new sc_Pair(head, sc_nts_11)))))):(sc_list2vector((sc_reverse(sc_nts_11)))));
+ }), (BgL_sc_defzd2loop_9zd2(grammar, null))));
+ (BgL_sc_nbzd2nts_7zd2 = (sc_nts_8.length));
+ (nb_confs = (((BgL_sc_defzd2loop_6zd2 = function(defs, BgL_sc_nbzd2confs_14zd2) {
+ var rule_loop;
+ var def;
+ return ((defs instanceof sc_Pair)?((def = (defs.car)), (rule_loop = function(rules, BgL_sc_nbzd2confs_15zd2) {
+ var l;
+ var BgL_sc_nbzd2confs_16zd2;
+ var rule;
+ if ((rules instanceof sc_Pair))
+ {
+ (rule = (rules.car));
+ (l = rule);
+ (BgL_sc_nbzd2confs_16zd2 = BgL_sc_nbzd2confs_15zd2);
+ while ((l instanceof sc_Pair)) {
+ {
+ (l = (l.cdr));
+ (++BgL_sc_nbzd2confs_16zd2);
+ }
+ }
+ return (rule_loop((rules.cdr), (BgL_sc_nbzd2confs_16zd2+(1))));
+ }
+ else
+ return (BgL_sc_defzd2loop_6zd2((defs.cdr), BgL_sc_nbzd2confs_15zd2));
+ }), (rule_loop((def.cdr), BgL_sc_nbzd2confs_14zd2))):BgL_sc_nbzd2confs_14zd2);
+ }), (BgL_sc_defzd2loop_6zd2(grammar, (0))))+BgL_sc_nbzd2nts_7zd2));
+ (sc_starters_5 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
+ (sc_enders_4 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
+ (sc_predictors_3 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
+ (sc_steps_2 = (sc_makeVector(nb_confs, false)));
+ (sc_names_1 = (sc_makeVector(nb_confs, false)));
+ (nts = sc_nts_8);
+ (starters = sc_starters_5);
+ (enders = sc_enders_4);
+ (predictors = sc_predictors_3);
+ (steps = sc_steps_2);
+ (names = sc_names_1);
+ (nb_nts = (sc_nts_8.length));
+ (i = (nb_nts-(1)));
+ while ((i>=(0))) {
+ {
+ (sc_steps_2[i] = (i-nb_nts));
+ (sc_names_1[i] = (sc_list((sc_nts_8[i]), (0))));
+ (sc_enders_4[i] = (sc_list(i)));
+ (--i);
+ }
+ }
+ def_loop = function(defs, conf) {
+ var rule_loop;
+ var head;
+ var def;
+ return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, conf, rule_num) {
+ var i;
+ var sc_i_17;
+ var nt;
+ var l;
+ var sc_conf_18;
+ var sc_i_19;
+ var rule;
+ if ((rules instanceof sc_Pair))
+ {
+ (rule = (rules.car));
+ (names[conf] = (sc_list(head, rule_num)));
+ (sc_i_19 = (ind(head, nts)));
+ (starters[sc_i_19] = (new sc_Pair(conf, (starters[sc_i_19]))));
+ (l = rule);
+ (sc_conf_18 = conf);
+ while ((l instanceof sc_Pair)) {
+ {
+ (nt = (l.car));
+ (steps[sc_conf_18] = (ind(nt, nts)));
+ (sc_i_17 = (ind(nt, nts)));
+ (predictors[sc_i_17] = (new sc_Pair(sc_conf_18, (predictors[sc_i_17]))));
+ (l = (l.cdr));
+ (++sc_conf_18);
+ }
+ }
+ (steps[sc_conf_18] = ((ind(head, nts))-nb_nts));
+ (i = (ind(head, nts)));
+ (enders[i] = (new sc_Pair(sc_conf_18, (enders[i]))));
+ return (rule_loop((rules.cdr), (sc_conf_18+(1)), (rule_num+(1))));
+ }
+ else
+ return (def_loop((defs.cdr), conf));
+ }), (rule_loop((def.cdr), conf, (1)))):undefined);
+ };
+ (def_loop(grammar, (sc_nts_8.length)));
+ (parser_descr = [lexer, sc_nts_8, sc_starters_5, sc_enders_4, sc_predictors_3, sc_steps_2, sc_names_1]);
+ return function(input) {
+ var optrOpnd;
+ var sc_optrOpnd_20;
+ var sc_optrOpnd_21;
+ var sc_optrOpnd_22;
+ var loop1;
+ var BgL_sc_stateza2_23za2;
+ var toks;
+ var BgL_sc_nbzd2nts_24zd2;
+ var sc_steps_25;
+ var sc_enders_26;
+ var state_num;
+ var BgL_sc_statesza2_27za2;
+ var states;
+ var i;
+ var conf;
+ var l;
+ var tok_nts;
+ var sc_i_28;
+ var sc_i_29;
+ var l1;
+ var l2;
+ var tok;
+ var tail1129;
+ var L1125;
+ var goal_enders;
+ var BgL_sc_statesza2_30za2;
+ var BgL_sc_nbzd2nts_31zd2;
+ var BgL_sc_nbzd2confs_32zd2;
+ var nb_toks;
+ var goal_starters;
+ var sc_states_33;
+ var BgL_sc_nbzd2confs_34zd2;
+ var BgL_sc_nbzd2toks_35zd2;
+ var sc_toks_36;
+ var falseHead1128;
+ var sc_names_37;
+ var sc_steps_38;
+ var sc_predictors_39;
+ var sc_enders_40;
+ var sc_starters_41;
+ var sc_nts_42;
+ var lexer;
+ var sc_ind_43;
+ var make_states;
+ var BgL_sc_confzd2setzd2getza2_44za2;
+ var conf_set_merge_new_bang;
+ var conf_set_adjoin;
+ var BgL_sc_confzd2setzd2adjoinza2_45za2;
+ var BgL_sc_confzd2setzd2adjoinza2za2_46z00;
+ var conf_set_union;
+ var forw;
+ var is_parsed;
+ var deriv_trees;
+ var BgL_sc_derivzd2treesza2_47z70;
+ var nb_deriv_trees;
+ var BgL_sc_nbzd2derivzd2treesza2_48za2;
+ {
+ sc_ind_43 = function(nt, sc_nts_49) {
+ var i;
+ {
+ (i = ((sc_nts_49.length)-(1)));
+ while (true) {
+ if ((i>=(0)))
+ if ((sc_isEqual((sc_nts_49[i]), nt)))
+ return i;
+ else
+ (--i);
+ else
+ return false;
+ }
+ }
+ };
+ make_states = function(BgL_sc_nbzd2toks_50zd2, BgL_sc_nbzd2confs_51zd2) {
+ var v;
+ var i;
+ var sc_states_52;
+ {
+ (sc_states_52 = (sc_makeVector((BgL_sc_nbzd2toks_50zd2+(1)), false)));
+ (i = BgL_sc_nbzd2toks_50zd2);
+ while ((i>=(0))) {
+ {
+ (v = (sc_makeVector((BgL_sc_nbzd2confs_51zd2+(1)), false)));
+ (v[(0)] = (-1));
+ (sc_states_52[i] = v);
+ (--i);
+ }
+ }
+ return sc_states_52;
+ }
+ };
+ BgL_sc_confzd2setzd2getza2_44za2 = function(state, BgL_sc_statezd2num_53zd2, sc_conf_54) {
+ var conf_set;
+ var BgL_sc_confzd2set_55zd2;
+ return ((BgL_sc_confzd2set_55zd2 = (state[(sc_conf_54+(1))])), ((BgL_sc_confzd2set_55zd2!== false)?BgL_sc_confzd2set_55zd2:((conf_set = (sc_makeVector((BgL_sc_statezd2num_53zd2+(6)), false))), (conf_set[(1)] = (-3)), (conf_set[(2)] = (-1)), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1)), (state[(sc_conf_54+(1))] = conf_set), conf_set)));
+ };
+ conf_set_merge_new_bang = function(conf_set) {
+ return ((conf_set[((conf_set[(1)])+(5))] = (conf_set[(4)])), (conf_set[(1)] = (conf_set[(3)])), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1)));
+ };
+ conf_set_adjoin = function(state, conf_set, sc_conf_56, i) {
+ var tail;
+ return ((tail = (conf_set[(3)])), (conf_set[(i+(5))] = (-1)), (conf_set[(tail+(5))] = i), (conf_set[(3)] = i), ((tail<(0))?((conf_set[(0)] = (state[(0)])), (state[(0)] = sc_conf_56)):undefined));
+ };
+ BgL_sc_confzd2setzd2adjoinza2_45za2 = function(sc_states_57, BgL_sc_statezd2num_58zd2, l, i) {
+ var conf_set;
+ var sc_conf_59;
+ var l1;
+ var state;
+ {
+ (state = (sc_states_57[BgL_sc_statezd2num_58zd2]));
+ (l1 = l);
+ while ((l1 instanceof sc_Pair)) {
+ {
+ (sc_conf_59 = (l1.car));
+ (conf_set = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_58zd2, sc_conf_59)));
+ if (((conf_set[(i+(5))])=== false))
+ {
+ (conf_set_adjoin(state, conf_set, sc_conf_59, i));
+ (l1 = (l1.cdr));
+ }
+ else
+ (l1 = (l1.cdr));
+ }
+ }
+ return undefined;
+ }
+ };
+ BgL_sc_confzd2setzd2adjoinza2za2_46z00 = function(sc_states_60, BgL_sc_statesza2_61za2, BgL_sc_statezd2num_62zd2, sc_conf_63, i) {
+ var BgL_sc_confzd2setza2_64z70;
+ var BgL_sc_stateza2_65za2;
+ var conf_set;
+ var state;
+ return ((state = (sc_states_60[BgL_sc_statezd2num_62zd2])), ((((conf_set = (state[(sc_conf_63+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)?((BgL_sc_stateza2_65za2 = (BgL_sc_statesza2_61za2[BgL_sc_statezd2num_62zd2])), (BgL_sc_confzd2setza2_64z70 = (BgL_sc_confzd2setzd2getza2_44za2(BgL_sc_stateza2_65za2, BgL_sc_statezd2num_62zd2, sc_conf_63))), (((BgL_sc_confzd2setza2_64z70[(i+(5))])=== false)?(conf_set_adjoin(BgL_sc_stateza2_65za2, BgL_sc_confzd2setza2_64z70, sc_conf_63, i)):undefined), true):false));
+ };
+ conf_set_union = function(state, conf_set, sc_conf_66, other_set) {
+ var i;
+ {
+ (i = (other_set[(2)]));
+ while ((i>=(0))) {
+ if (((conf_set[(i+(5))])=== false))
+ {
+ (conf_set_adjoin(state, conf_set, sc_conf_66, i));
+ (i = (other_set[(i+(5))]));
+ }
+ else
+ (i = (other_set[(i+(5))]));
+ }
+ return undefined;
+ }
+ };
+ forw = function(sc_states_67, BgL_sc_statezd2num_68zd2, sc_starters_69, sc_enders_70, sc_predictors_71, sc_steps_72, sc_nts_73) {
+ var next_set;
+ var next;
+ var conf_set;
+ var ender;
+ var l;
+ var starter_set;
+ var starter;
+ var sc_l_74;
+ var sc_loop1_75;
+ var head;
+ var BgL_sc_confzd2set_76zd2;
+ var BgL_sc_statezd2num_77zd2;
+ var state;
+ var sc_states_78;
+ var preds;
+ var BgL_sc_confzd2set_79zd2;
+ var step;
+ var sc_conf_80;
+ var BgL_sc_nbzd2nts_81zd2;
+ var sc_state_82;
+ {
+ (sc_state_82 = (sc_states_67[BgL_sc_statezd2num_68zd2]));
+ (BgL_sc_nbzd2nts_81zd2 = (sc_nts_73.length));
+ while (true) {
+ {
+ (sc_conf_80 = (sc_state_82[(0)]));
+ if ((sc_conf_80>=(0)))
+ {
+ (step = (sc_steps_72[sc_conf_80]));
+ (BgL_sc_confzd2set_79zd2 = (sc_state_82[(sc_conf_80+(1))]));
+ (head = (BgL_sc_confzd2set_79zd2[(4)]));
+ (sc_state_82[(0)] = (BgL_sc_confzd2set_79zd2[(0)]));
+ (conf_set_merge_new_bang(BgL_sc_confzd2set_79zd2));
+ if ((step>=(0)))
+ {
+ (sc_l_74 = (sc_starters_69[step]));
+ while ((sc_l_74 instanceof sc_Pair)) {
+ {
+ (starter = (sc_l_74.car));
+ (starter_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, starter)));
+ if (((starter_set[(BgL_sc_statezd2num_68zd2+(5))])=== false))
+ {
+ (conf_set_adjoin(sc_state_82, starter_set, starter, BgL_sc_statezd2num_68zd2));
+ (sc_l_74 = (sc_l_74.cdr));
+ }
+ else
+ (sc_l_74 = (sc_l_74.cdr));
+ }
+ }
+ (l = (sc_enders_70[step]));
+ while ((l instanceof sc_Pair)) {
+ {
+ (ender = (l.car));
+ if ((((conf_set = (sc_state_82[(ender+(1))])), ((conf_set!== false)?(conf_set[(BgL_sc_statezd2num_68zd2+(5))]):false))!== false))
+ {
+ (next = (sc_conf_80+(1)));
+ (next_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, next)));
+ (conf_set_union(sc_state_82, next_set, next, BgL_sc_confzd2set_79zd2));
+ (l = (l.cdr));
+ }
+ else
+ (l = (l.cdr));
+ }
+ }
+ }
+ else
+ {
+ (preds = (sc_predictors_71[(step+BgL_sc_nbzd2nts_81zd2)]));
+ (sc_states_78 = sc_states_67);
+ (state = sc_state_82);
+ (BgL_sc_statezd2num_77zd2 = BgL_sc_statezd2num_68zd2);
+ (BgL_sc_confzd2set_76zd2 = BgL_sc_confzd2set_79zd2);
+ sc_loop1_75 = function(l) {
+ var sc_state_83;
+ var BgL_sc_nextzd2set_84zd2;
+ var sc_next_85;
+ var pred_set;
+ var i;
+ var pred;
+ if ((l instanceof sc_Pair))
+ {
+ (pred = (l.car));
+ (i = head);
+ while ((i>=(0))) {
+ {
+ (pred_set = ((sc_state_83 = (sc_states_78[i])), (sc_state_83[(pred+(1))])));
+ if ((pred_set!== false))
+ {
+ (sc_next_85 = (pred+(1)));
+ (BgL_sc_nextzd2set_84zd2 = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_77zd2, sc_next_85)));
+ (conf_set_union(state, BgL_sc_nextzd2set_84zd2, sc_next_85, pred_set));
+ }
+ (i = (BgL_sc_confzd2set_76zd2[(i+(5))]));
+ }
+ }
+ return (sc_loop1_75((l.cdr)));
+ }
+ else
+ return undefined;
+ };
+ (sc_loop1_75(preds));
+ }
+ }
+ else
+ return undefined;
+ }
+ }
+ }
+ };
+ is_parsed = function(nt, i, j, sc_nts_86, sc_enders_87, sc_states_88) {
+ var conf_set;
+ var state;
+ var sc_conf_89;
+ var l;
+ var BgL_sc_ntza2_90za2;
+ {
+ (BgL_sc_ntza2_90za2 = (sc_ind_43(nt, sc_nts_86)));
+ if ((BgL_sc_ntza2_90za2!== false))
+ {
+ (sc_nts_86.length);
+ (l = (sc_enders_87[BgL_sc_ntza2_90za2]));
+ while (true) {
+ if ((l instanceof sc_Pair))
+ {
+ (sc_conf_89 = (l.car));
+ if ((((state = (sc_states_88[j])), (conf_set = (state[(sc_conf_89+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
+ return true;
+ else
+ (l = (l.cdr));
+ }
+ else
+ return false;
+ }
+ }
+ else
+ return false;
+ }
+ };
+ deriv_trees = function(sc_conf_91, i, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2) {
+ var sc_loop1_98;
+ var prev;
+ var name;
+ return ((name = (sc_names_94[sc_conf_91])), ((name!== false)?((sc_conf_91<BgL_sc_nbzd2nts_97zd2)?(sc_list((sc_list(name, ((sc_toks_95[i]).car))))):(sc_list((sc_list(name))))):((prev = (sc_conf_91-(1))), (sc_loop1_98 = function(l1, l2) {
+ var loop2;
+ var ender_set;
+ var state;
+ var ender;
+ var l1;
+ var l2;
+ while (true) {
+ if ((l1 instanceof sc_Pair))
+ {
+ (ender = (l1.car));
+ (ender_set = ((state = (sc_states_96[j])), (state[(ender+(1))])));
+ if ((ender_set!== false))
+ {
+ loop2 = function(k, l2) {
+ var loop3;
+ var ender_trees;
+ var prev_trees;
+ var conf_set;
+ var sc_state_99;
+ var k;
+ var l2;
+ while (true) {
+ if ((k>=(0)))
+ if (((k>=i)&&(((sc_state_99 = (sc_states_96[k])), (conf_set = (sc_state_99[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)))
+ {
+ (prev_trees = (deriv_trees(prev, i, k, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2)));
+ (ender_trees = (deriv_trees(ender, k, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2)));
+ loop3 = function(l3, l2) {
+ var l4;
+ var sc_l2_100;
+ var ender_tree;
+ if ((l3 instanceof sc_Pair))
+ {
+ (ender_tree = (sc_list((l3.car))));
+ (l4 = prev_trees);
+ (sc_l2_100 = l2);
+ while ((l4 instanceof sc_Pair)) {
+ {
+ (sc_l2_100 = (new sc_Pair((sc_append((l4.car), ender_tree)), sc_l2_100)));
+ (l4 = (l4.cdr));
+ }
+ }
+ return (loop3((l3.cdr), sc_l2_100));
+ }
+ else
+ return (loop2((ender_set[(k+(5))]), l2));
+ };
+ return (loop3(ender_trees, l2));
+ }
+ else
+ (k = (ender_set[(k+(5))]));
+ else
+ return (sc_loop1_98((l1.cdr), l2));
+ }
+ };
+ return (loop2((ender_set[(2)]), l2));
+ }
+ else
+ (l1 = (l1.cdr));
+ }
+ else
+ return l2;
+ }
+ }), (sc_loop1_98((sc_enders_92[(sc_steps_93[prev])]), null)))));
+ };
+ BgL_sc_derivzd2treesza2_47z70 = function(nt, i, j, sc_nts_101, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106) {
+ var conf_set;
+ var state;
+ var sc_conf_107;
+ var l;
+ var trees;
+ var BgL_sc_nbzd2nts_108zd2;
+ var BgL_sc_ntza2_109za2;
+ {
+ (BgL_sc_ntza2_109za2 = (sc_ind_43(nt, sc_nts_101)));
+ if ((BgL_sc_ntza2_109za2!== false))
+ {
+ (BgL_sc_nbzd2nts_108zd2 = (sc_nts_101.length));
+ (l = (sc_enders_102[BgL_sc_ntza2_109za2]));
+ (trees = null);
+ while ((l instanceof sc_Pair)) {
+ {
+ (sc_conf_107 = (l.car));
+ if ((((state = (sc_states_106[j])), (conf_set = (state[(sc_conf_107+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
+ {
+ (l = (l.cdr));
+ (trees = (sc_append((deriv_trees(sc_conf_107, i, j, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106, BgL_sc_nbzd2nts_108zd2)), trees)));
+ }
+ else
+ (l = (l.cdr));
+ }
+ }
+ return trees;
+ }
+ else
+ return false;
+ }
+ };
+ nb_deriv_trees = function(sc_conf_110, i, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2) {
+ var sc_loop1_116;
+ var tmp1124;
+ var prev;
+ return ((prev = (sc_conf_110-(1))), ((((tmp1124 = (sc_conf_110<BgL_sc_nbzd2nts_115zd2)), ((tmp1124!== false)?tmp1124:((sc_steps_112[prev])<(0))))!== false)?(1):((sc_loop1_116 = function(l, sc_n_118) {
+ var nb_ender_trees;
+ var nb_prev_trees;
+ var conf_set;
+ var state;
+ var k;
+ var n;
+ var ender_set;
+ var sc_state_117;
+ var ender;
+ var l;
+ var sc_n_118;
+ while (true) {
+ if ((l instanceof sc_Pair))
+ {
+ (ender = (l.car));
+ (ender_set = ((sc_state_117 = (sc_states_114[j])), (sc_state_117[(ender+(1))])));
+ if ((ender_set!== false))
+ {
+ (k = (ender_set[(2)]));
+ (n = sc_n_118);
+ while ((k>=(0))) {
+ if (((k>=i)&&(((state = (sc_states_114[k])), (conf_set = (state[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)))
+ {
+ (nb_prev_trees = (nb_deriv_trees(prev, i, k, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2)));
+ (nb_ender_trees = (nb_deriv_trees(ender, k, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2)));
+ (k = (ender_set[(k+(5))]));
+ (n +=(nb_prev_trees*nb_ender_trees));
+ }
+ else
+ (k = (ender_set[(k+(5))]));
+ }
+ return (sc_loop1_116((l.cdr), n));
+ }
+ else
+ (l = (l.cdr));
+ }
+ else
+ return sc_n_118;
+ }
+ }), (sc_loop1_116((sc_enders_111[(sc_steps_112[prev])]), (0))))));
+ };
+ BgL_sc_nbzd2derivzd2treesza2_48za2 = function(nt, i, j, sc_nts_119, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123) {
+ var conf_set;
+ var state;
+ var sc_conf_124;
+ var l;
+ var nb_trees;
+ var BgL_sc_nbzd2nts_125zd2;
+ var BgL_sc_ntza2_126za2;
+ {
+ (BgL_sc_ntza2_126za2 = (sc_ind_43(nt, sc_nts_119)));
+ if ((BgL_sc_ntza2_126za2!== false))
+ {
+ (BgL_sc_nbzd2nts_125zd2 = (sc_nts_119.length));
+ (l = (sc_enders_120[BgL_sc_ntza2_126za2]));
+ (nb_trees = (0));
+ while ((l instanceof sc_Pair)) {
+ {
+ (sc_conf_124 = (l.car));
+ if ((((state = (sc_states_123[j])), (conf_set = (state[(sc_conf_124+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
+ {
+ (l = (l.cdr));
+ (nb_trees = ((nb_deriv_trees(sc_conf_124, i, j, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123, BgL_sc_nbzd2nts_125zd2))+nb_trees));
+ }
+ else
+ (l = (l.cdr));
+ }
+ }
+ return nb_trees;
+ }
+ else
+ return false;
+ }
+ };
+ (lexer = (parser_descr[(0)]));
+ (sc_nts_42 = (parser_descr[(1)]));
+ (sc_starters_41 = (parser_descr[(2)]));
+ (sc_enders_40 = (parser_descr[(3)]));
+ (sc_predictors_39 = (parser_descr[(4)]));
+ (sc_steps_38 = (parser_descr[(5)]));
+ (sc_names_37 = (parser_descr[(6)]));
+ (falseHead1128 = (new sc_Pair(null, null)));
+ (L1125 = (lexer(input)));
+ (tail1129 = falseHead1128);
+ while (!(L1125 === null)) {
+ {
+ (tok = (L1125.car));
+ (l1 = (tok.cdr));
+ (l2 = null);
+ while ((l1 instanceof sc_Pair)) {
+ {
+ (sc_i_29 = (sc_ind_43((l1.car), sc_nts_42)));
+ if ((sc_i_29!== false))
+ {
+ (l1 = (l1.cdr));
+ (l2 = (new sc_Pair(sc_i_29, l2)));
+ }
+ else
+ (l1 = (l1.cdr));
+ }
+ }
+ (sc_optrOpnd_22 = (new sc_Pair((tok.car), (sc_reverse(l2)))));
+ (sc_optrOpnd_21 = (new sc_Pair(sc_optrOpnd_22, null)));
+ (tail1129.cdr = sc_optrOpnd_21);
+ (tail1129 = (tail1129.cdr));
+ (L1125 = (L1125.cdr));
+ }
+ }
+ (sc_optrOpnd_20 = (falseHead1128.cdr));
+ (sc_toks_36 = (sc_list2vector(sc_optrOpnd_20)));
+ (BgL_sc_nbzd2toks_35zd2 = (sc_toks_36.length));
+ (BgL_sc_nbzd2confs_34zd2 = (sc_steps_38.length));
+ (sc_states_33 = (make_states(BgL_sc_nbzd2toks_35zd2, BgL_sc_nbzd2confs_34zd2)));
+ (goal_starters = (sc_starters_41[(0)]));
+ (BgL_sc_confzd2setzd2adjoinza2_45za2(sc_states_33, (0), goal_starters, (0)));
+ (forw(sc_states_33, (0), sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_nts_42));
+ (sc_i_28 = (0));
+ while ((sc_i_28<BgL_sc_nbzd2toks_35zd2)) {
+ {
+ (tok_nts = ((sc_toks_36[sc_i_28]).cdr));
+ (BgL_sc_confzd2setzd2adjoinza2_45za2(sc_states_33, (sc_i_28+(1)), tok_nts, sc_i_28));
+ (forw(sc_states_33, (sc_i_28+(1)), sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_nts_42));
+ (++sc_i_28);
+ }
+ }
+ (nb_toks = (sc_toks_36.length));
+ (BgL_sc_nbzd2confs_32zd2 = (sc_steps_38.length));
+ (BgL_sc_nbzd2nts_31zd2 = (sc_nts_42.length));
+ (BgL_sc_statesza2_30za2 = (make_states(nb_toks, BgL_sc_nbzd2confs_32zd2)));
+ (goal_enders = (sc_enders_40[(0)]));
+ (l = goal_enders);
+ while ((l instanceof sc_Pair)) {
+ {
+ (conf = (l.car));
+ (BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_33, BgL_sc_statesza2_30za2, nb_toks, conf, (0)));
+ (l = (l.cdr));
+ }
+ }
+ (i = nb_toks);
+ while ((i>=(0))) {
+ {
+ (states = sc_states_33);
+ (BgL_sc_statesza2_27za2 = BgL_sc_statesza2_30za2);
+ (state_num = i);
+ (sc_enders_26 = sc_enders_40);
+ (sc_steps_25 = sc_steps_38);
+ (BgL_sc_nbzd2nts_24zd2 = BgL_sc_nbzd2nts_31zd2);
+ (toks = sc_toks_36);
+ (BgL_sc_stateza2_23za2 = (BgL_sc_statesza2_30za2[i]));
+ loop1 = function() {
+ var sc_loop1_127;
+ var prev;
+ var BgL_sc_statesza2_128za2;
+ var sc_states_129;
+ var j;
+ var i;
+ var sc_i_130;
+ var head;
+ var conf_set;
+ var sc_conf_131;
+ {
+ (sc_conf_131 = (BgL_sc_stateza2_23za2[(0)]));
+ if ((sc_conf_131>=(0)))
+ {
+ (conf_set = (BgL_sc_stateza2_23za2[(sc_conf_131+(1))]));
+ (head = (conf_set[(4)]));
+ (BgL_sc_stateza2_23za2[(0)] = (conf_set[(0)]));
+ (conf_set_merge_new_bang(conf_set));
+ (sc_i_130 = head);
+ while ((sc_i_130>=(0))) {
+ {
+ (i = sc_i_130);
+ (j = state_num);
+ (sc_states_129 = states);
+ (BgL_sc_statesza2_128za2 = BgL_sc_statesza2_27za2);
+ (prev = (sc_conf_131-(1)));
+ if (((sc_conf_131>=BgL_sc_nbzd2nts_24zd2)&&((sc_steps_25[prev])>=(0))))
+ {
+ sc_loop1_127 = function(l) {
+ var k;
+ var ender_set;
+ var state;
+ var ender;
+ var l;
+ while (true) {
+ if ((l instanceof sc_Pair))
+ {
+ (ender = (l.car));
+ (ender_set = ((state = (sc_states_129[j])), (state[(ender+(1))])));
+ if ((ender_set!== false))
+ {
+ (k = (ender_set[(2)]));
+ while ((k>=(0))) {
+ {
+ if ((k>=i))
+ if (((BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, k, prev, i))!== false))
+ (BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, j, ender, k));
+ (k = (ender_set[(k+(5))]));
+ }
+ }
+ return (sc_loop1_127((l.cdr)));
+ }
+ else
+ (l = (l.cdr));
+ }
+ else
+ return undefined;
+ }
+ };
+ (sc_loop1_127((sc_enders_26[(sc_steps_25[prev])])));
+ }
+ (sc_i_130 = (conf_set[(sc_i_130+(5))]));
+ }
+ }
+ return (loop1());
+ }
+ else
+ return undefined;
+ }
+ };
+ (loop1());
+ (--i);
+ }
+ }
+ (optrOpnd = BgL_sc_statesza2_30za2);
+ return [sc_nts_42, sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_names_37, sc_toks_36, optrOpnd, is_parsed, BgL_sc_derivzd2treesza2_47z70, BgL_sc_nbzd2derivzd2treesza2_48za2];
+ }
+ };
+ }
+ };
+ BgL_parsezd2ze3parsedzf3zc2 = function(parse, nt, i, j) {
+ var is_parsed;
+ var states;
+ var enders;
+ var nts;
+ return ((nts = (parse[(0)])), (enders = (parse[(2)])), (states = (parse[(7)])), (is_parsed = (parse[(8)])), (is_parsed(nt, i, j, nts, enders, states)));
+ };
+ BgL_parsezd2ze3treesz31 = function(parse, nt, i, j) {
+ var BgL_sc_derivzd2treesza2_132z70;
+ var states;
+ var toks;
+ var names;
+ var steps;
+ var enders;
+ var nts;
+ return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (names = (parse[(5)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_derivzd2treesza2_132z70 = (parse[(9)])), (BgL_sc_derivzd2treesza2_132z70(nt, i, j, nts, enders, steps, names, toks, states)));
+ };
+ BgL_parsezd2ze3nbzd2treesze3 = function(parse, nt, i, j) {
+ var BgL_sc_nbzd2derivzd2treesza2_133za2;
+ var states;
+ var toks;
+ var steps;
+ var enders;
+ var nts;
+ return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_nbzd2derivzd2treesza2_133za2 = (parse[(10)])), (BgL_sc_nbzd2derivzd2treesza2_133za2(nt, i, j, nts, enders, steps, toks, states)));
+ };
+ test = function(k) {
+ var x;
+ var p;
+ return ((p = (BgL_makezd2parserzd2(const_earley, function(l) {
+ var sc_x_134;
+ var tail1134;
+ var L1130;
+ var falseHead1133;
+ {
+ (falseHead1133 = (new sc_Pair(null, null)));
+ (tail1134 = falseHead1133);
+ (L1130 = l);
+ while (!(L1130 === null)) {
+ {
+ (tail1134.cdr = (new sc_Pair(((sc_x_134 = (L1130.car)), (sc_list(sc_x_134, sc_x_134))), null)));
+ (tail1134 = (tail1134.cdr));
+ (L1130 = (L1130.cdr));
+ }
+ }
+ return (falseHead1133.cdr);
+ }
+ }))), (x = (p((sc_vector2list((sc_makeVector(k, "\u1E9Ca"))))))), (sc_length((BgL_parsezd2ze3treesz31(x, "\u1E9Cs", (0), k)))));
+ };
+ BgL_earleyzd2benchmarkzd2 = function() {
+ var args = null;
+ for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) {
+ args = sc_cons(arguments[sc_tmp], args);
+ }
+ var k;
+ return ((k = ((args === null)?(7):(args.car))), (BgL_runzd2benchmarkzd2("earley", (1), function() {
+ return (test(k));
+ }, function(result) {
+ return ((sc_display(result)), (sc_newline()), result == 132);
+ })));
+ };
+}
+
+
+/************* END OF GENERATED CODE *************/
+// Invoke this function to run a benchmark.
+// The first argument is a string identifying the benchmark.
+// The second argument is the number of times to run the benchmark.
+// The third argument is a function that runs the benchmark.
+// The fourth argument is a unary function that warns if the result
+// returned by the benchmark is incorrect.
+//
+// Example:
+// RunBenchmark("new Array()",
+// 1,
+// function () { new Array(1000000); }
+// function (v) {
+// return (v instanceof Array) && (v.length == 1000000);
+// });
+
+SC_DEFAULT_OUT = new sc_GenericOutputPort(function(s) {});
+SC_ERROR_OUT = SC_DEFAULT_OUT;
+
+function RunBenchmark(name, count, run, warn) {
+ for (var n = 0; n < count; ++n) {
+ result = run();
+ if (!warn(result)) {
+ throw new Error("Earley or Boyer did incorrect number of rewrites");
+ }
+ }
+}
+
+var BgL_runzd2benchmarkzd2 = RunBenchmark;
diff --git a/tests/benchmarks/script/v8/tests/raytrace.js b/tests/benchmarks/script/v8/tests/raytrace.js
new file mode 100644
index 0000000000..971ef7218e
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/raytrace.js
@@ -0,0 +1,904 @@
+// The ray tracer code in this file is written by Adam Burmister. It
+// is available in its original form from:
+//
+// http://labs.flog.nz.co/raytracer/
+//
+// It has been modified slightly by Google to work as a standalone
+// benchmark, but the all the computational code remains
+// untouched. This file also contains a copy of parts of the Prototype
+// JavaScript framework which is used by the ray tracer.
+
+var RayTrace = new BenchmarkSuite('RayTrace', 739989, [
+ new Benchmark('RayTrace', renderScene)
+]);
+
+
+// Variable used to hold a number that can be used to verify that
+// the scene was ray traced correctly.
+var checkNumber;
+
+
+// ------------------------------------------------------------------------
+// ------------------------------------------------------------------------
+
+// The following is a copy of parts of the Prototype JavaScript library:
+
+// Prototype JavaScript framework, version 1.5.0
+// (c) 2005-2007 Sam Stephenson
+//
+// Prototype is freely distributable under the terms of an MIT-style license.
+// For details, see the Prototype web site: http://prototype.conio.net/
+
+
+var Class = {
+ create: function() {
+ return function() {
+ this.initialize.apply(this, arguments);
+ }
+ }
+};
+
+
+Object.extend = function(destination, source) {
+ for (var property in source) {
+ destination[property] = source[property];
+ }
+ return destination;
+};
+
+
+// ------------------------------------------------------------------------
+// ------------------------------------------------------------------------
+
+// The rest of this file is the actual ray tracer written by Adam
+// Burmister. It's a concatenation of the following files:
+//
+// flog/color.js
+// flog/light.js
+// flog/vector.js
+// flog/ray.js
+// flog/scene.js
+// flog/material/basematerial.js
+// flog/material/solid.js
+// flog/material/chessboard.js
+// flog/shape/baseshape.js
+// flog/shape/sphere.js
+// flog/shape/plane.js
+// flog/intersectioninfo.js
+// flog/camera.js
+// flog/background.js
+// flog/engine.js
+
+
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Color = Class.create();
+
+Flog.RayTracer.Color.prototype = {
+ red : 0.0,
+ green : 0.0,
+ blue : 0.0,
+
+ initialize : function(r, g, b) {
+ if(!r) r = 0.0;
+ if(!g) g = 0.0;
+ if(!b) b = 0.0;
+
+ this.red = r;
+ this.green = g;
+ this.blue = b;
+ },
+
+ add : function(c1, c2){
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red + c2.red;
+ result.green = c1.green + c2.green;
+ result.blue = c1.blue + c2.blue;
+
+ return result;
+ },
+
+ addScalar: function(c1, s){
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red + s;
+ result.green = c1.green + s;
+ result.blue = c1.blue + s;
+
+ result.limit();
+
+ return result;
+ },
+
+ subtract: function(c1, c2){
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red - c2.red;
+ result.green = c1.green - c2.green;
+ result.blue = c1.blue - c2.blue;
+
+ return result;
+ },
+
+ multiply : function(c1, c2) {
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red * c2.red;
+ result.green = c1.green * c2.green;
+ result.blue = c1.blue * c2.blue;
+
+ return result;
+ },
+
+ multiplyScalar : function(c1, f) {
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red * f;
+ result.green = c1.green * f;
+ result.blue = c1.blue * f;
+
+ return result;
+ },
+
+ divideFactor : function(c1, f) {
+ var result = new Flog.RayTracer.Color(0,0,0);
+
+ result.red = c1.red / f;
+ result.green = c1.green / f;
+ result.blue = c1.blue / f;
+
+ return result;
+ },
+
+ limit: function(){
+ this.red = (this.red > 0.0) ? ( (this.red > 1.0) ? 1.0 : this.red ) : 0.0;
+ this.green = (this.green > 0.0) ? ( (this.green > 1.0) ? 1.0 : this.green ) : 0.0;
+ this.blue = (this.blue > 0.0) ? ( (this.blue > 1.0) ? 1.0 : this.blue ) : 0.0;
+ },
+
+ distance : function(color) {
+ var d = Math.abs(this.red - color.red) + Math.abs(this.green - color.green) + Math.abs(this.blue - color.blue);
+ return d;
+ },
+
+ blend: function(c1, c2, w){
+ var result = new Flog.RayTracer.Color(0,0,0);
+ result = Flog.RayTracer.Color.prototype.add(
+ Flog.RayTracer.Color.prototype.multiplyScalar(c1, 1 - w),
+ Flog.RayTracer.Color.prototype.multiplyScalar(c2, w)
+ );
+ return result;
+ },
+
+ brightness : function() {
+ var r = Math.floor(this.red*255);
+ var g = Math.floor(this.green*255);
+ var b = Math.floor(this.blue*255);
+ return (r * 77 + g * 150 + b * 29) >> 8;
+ },
+
+ toString : function () {
+ var r = Math.floor(this.red*255);
+ var g = Math.floor(this.green*255);
+ var b = Math.floor(this.blue*255);
+
+ return "rgb("+ r +","+ g +","+ b +")";
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Light = Class.create();
+
+Flog.RayTracer.Light.prototype = {
+ position: null,
+ color: null,
+ intensity: 10.0,
+
+ initialize : function(pos, color, intensity) {
+ this.position = pos;
+ this.color = color;
+ this.intensity = (intensity ? intensity : 10.0);
+ },
+
+ toString : function () {
+ return 'Light [' + this.position.x + ',' + this.position.y + ',' + this.position.z + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Vector = Class.create();
+
+Flog.RayTracer.Vector.prototype = {
+ x : 0.0,
+ y : 0.0,
+ z : 0.0,
+
+ initialize : function(x, y, z) {
+ this.x = (x ? x : 0);
+ this.y = (y ? y : 0);
+ this.z = (z ? z : 0);
+ },
+
+ copy: function(vector){
+ this.x = vector.x;
+ this.y = vector.y;
+ this.z = vector.z;
+ },
+
+ normalize : function() {
+ var m = this.magnitude();
+ return new Flog.RayTracer.Vector(this.x / m, this.y / m, this.z / m);
+ },
+
+ magnitude : function() {
+ return Math.sqrt((this.x * this.x) + (this.y * this.y) + (this.z * this.z));
+ },
+
+ cross : function(w) {
+ return new Flog.RayTracer.Vector(
+ -this.z * w.y + this.y * w.z,
+ this.z * w.x - this.x * w.z,
+ -this.y * w.x + this.x * w.y);
+ },
+
+ dot : function(w) {
+ return this.x * w.x + this.y * w.y + this.z * w.z;
+ },
+
+ add : function(v, w) {
+ return new Flog.RayTracer.Vector(w.x + v.x, w.y + v.y, w.z + v.z);
+ },
+
+ subtract : function(v, w) {
+ if(!w || !v) throw 'Vectors must be defined [' + v + ',' + w + ']';
+ return new Flog.RayTracer.Vector(v.x - w.x, v.y - w.y, v.z - w.z);
+ },
+
+ multiplyVector : function(v, w) {
+ return new Flog.RayTracer.Vector(v.x * w.x, v.y * w.y, v.z * w.z);
+ },
+
+ multiplyScalar : function(v, w) {
+ return new Flog.RayTracer.Vector(v.x * w, v.y * w, v.z * w);
+ },
+
+ toString : function () {
+ return 'Vector [' + this.x + ',' + this.y + ',' + this.z + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Ray = Class.create();
+
+Flog.RayTracer.Ray.prototype = {
+ position : null,
+ direction : null,
+ initialize : function(pos, dir) {
+ this.position = pos;
+ this.direction = dir;
+ },
+
+ toString : function () {
+ return 'Ray [' + this.position + ',' + this.direction + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Scene = Class.create();
+
+Flog.RayTracer.Scene.prototype = {
+ camera : null,
+ shapes : [],
+ lights : [],
+ background : null,
+
+ initialize : function() {
+ this.camera = new Flog.RayTracer.Camera(
+ new Flog.RayTracer.Vector(0,0,-5),
+ new Flog.RayTracer.Vector(0,0,1),
+ new Flog.RayTracer.Vector(0,1,0)
+ );
+ this.shapes = new Array();
+ this.lights = new Array();
+ this.background = new Flog.RayTracer.Background(new Flog.RayTracer.Color(0,0,0.5), 0.2);
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+if(typeof(Flog.RayTracer.Material) == 'undefined') Flog.RayTracer.Material = {};
+
+Flog.RayTracer.Material.BaseMaterial = Class.create();
+
+Flog.RayTracer.Material.BaseMaterial.prototype = {
+
+ gloss: 2.0, // [0...infinity] 0 = matt
+ transparency: 0.0, // 0=opaque
+ reflection: 0.0, // [0...infinity] 0 = no reflection
+ refraction: 0.50,
+ hasTexture: false,
+
+ initialize : function() {
+
+ },
+
+ getColor: function(u, v){
+
+ },
+
+ wrapUp: function(t){
+ t = t % 2.0;
+ if(t < -1) t += 2.0;
+ if(t >= 1) t -= 2.0;
+ return t;
+ },
+
+ toString : function () {
+ return 'Material [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Material.Solid = Class.create();
+
+Flog.RayTracer.Material.Solid.prototype = Object.extend(
+ new Flog.RayTracer.Material.BaseMaterial(), {
+ initialize : function(color, reflection, refraction, transparency, gloss) {
+ this.color = color;
+ this.reflection = reflection;
+ this.transparency = transparency;
+ this.gloss = gloss;
+ this.hasTexture = false;
+ },
+
+ getColor: function(u, v){
+ return this.color;
+ },
+
+ toString : function () {
+ return 'SolidMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
+ }
+ }
+);
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Material.Chessboard = Class.create();
+
+Flog.RayTracer.Material.Chessboard.prototype = Object.extend(
+ new Flog.RayTracer.Material.BaseMaterial(), {
+ colorEven: null,
+ colorOdd: null,
+ density: 0.5,
+
+ initialize : function(colorEven, colorOdd, reflection, transparency, gloss, density) {
+ this.colorEven = colorEven;
+ this.colorOdd = colorOdd;
+ this.reflection = reflection;
+ this.transparency = transparency;
+ this.gloss = gloss;
+ this.density = density;
+ this.hasTexture = true;
+ },
+
+ getColor: function(u, v){
+ var t = this.wrapUp(u * this.density) * this.wrapUp(v * this.density);
+
+ if(t < 0.0)
+ return this.colorEven;
+ else
+ return this.colorOdd;
+ },
+
+ toString : function () {
+ return 'ChessMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
+ }
+ }
+);
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};
+
+Flog.RayTracer.Shape.Sphere = Class.create();
+
+Flog.RayTracer.Shape.Sphere.prototype = {
+ initialize : function(pos, radius, material) {
+ this.radius = radius;
+ this.position = pos;
+ this.material = material;
+ },
+
+ intersect: function(ray){
+ var info = new Flog.RayTracer.IntersectionInfo();
+ info.shape = this;
+
+ var dst = Flog.RayTracer.Vector.prototype.subtract(ray.position, this.position);
+
+ var B = dst.dot(ray.direction);
+ var C = dst.dot(dst) - (this.radius * this.radius);
+ var D = (B * B) - C;
+
+ if(D > 0){ // intersection!
+ info.isHit = true;
+ info.distance = (-B) - Math.sqrt(D);
+ info.position = Flog.RayTracer.Vector.prototype.add(
+ ray.position,
+ Flog.RayTracer.Vector.prototype.multiplyScalar(
+ ray.direction,
+ info.distance
+ )
+ );
+ info.normal = Flog.RayTracer.Vector.prototype.subtract(
+ info.position,
+ this.position
+ ).normalize();
+
+ info.color = this.material.getColor(0,0);
+ } else {
+ info.isHit = false;
+ }
+ return info;
+ },
+
+ toString : function () {
+ return 'Sphere [position=' + this.position + ', radius=' + this.radius + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};
+
+Flog.RayTracer.Shape.Plane = Class.create();
+
+Flog.RayTracer.Shape.Plane.prototype = {
+ d: 0.0,
+
+ initialize : function(pos, d, material) {
+ this.position = pos;
+ this.d = d;
+ this.material = material;
+ },
+
+ intersect: function(ray){
+ var info = new Flog.RayTracer.IntersectionInfo();
+
+ var Vd = this.position.dot(ray.direction);
+ if(Vd == 0) return info; // no intersection
+
+ var t = -(this.position.dot(ray.position) + this.d) / Vd;
+ if(t <= 0) return info;
+
+ info.shape = this;
+ info.isHit = true;
+ info.position = Flog.RayTracer.Vector.prototype.add(
+ ray.position,
+ Flog.RayTracer.Vector.prototype.multiplyScalar(
+ ray.direction,
+ t
+ )
+ );
+ info.normal = this.position;
+ info.distance = t;
+
+ if(this.material.hasTexture){
+ var vU = new Flog.RayTracer.Vector(this.position.y, this.position.z, -this.position.x);
+ var vV = vU.cross(this.position);
+ var u = info.position.dot(vU);
+ var v = info.position.dot(vV);
+ info.color = this.material.getColor(u,v);
+ } else {
+ info.color = this.material.getColor(0,0);
+ }
+
+ return info;
+ },
+
+ toString : function () {
+ return 'Plane [' + this.position + ', d=' + this.d + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.IntersectionInfo = Class.create();
+
+Flog.RayTracer.IntersectionInfo.prototype = {
+ isHit: false,
+ hitCount: 0,
+ shape: null,
+ position: null,
+ normal: null,
+ color: null,
+ distance: null,
+
+ initialize : function() {
+ this.color = new Flog.RayTracer.Color(0,0,0);
+ },
+
+ toString : function () {
+ return 'Intersection [' + this.position + ']';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Camera = Class.create();
+
+Flog.RayTracer.Camera.prototype = {
+ position: null,
+ lookAt: null,
+ equator: null,
+ up: null,
+ screen: null,
+
+ initialize : function(pos, lookAt, up) {
+ this.position = pos;
+ this.lookAt = lookAt;
+ this.up = up;
+ this.equator = lookAt.normalize().cross(this.up);
+ this.screen = Flog.RayTracer.Vector.prototype.add(this.position, this.lookAt);
+ },
+
+ getRay: function(vx, vy){
+ var pos = Flog.RayTracer.Vector.prototype.subtract(
+ this.screen,
+ Flog.RayTracer.Vector.prototype.subtract(
+ Flog.RayTracer.Vector.prototype.multiplyScalar(this.equator, vx),
+ Flog.RayTracer.Vector.prototype.multiplyScalar(this.up, vy)
+ )
+ );
+ pos.y = pos.y * -1;
+ var dir = Flog.RayTracer.Vector.prototype.subtract(
+ pos,
+ this.position
+ );
+
+ var ray = new Flog.RayTracer.Ray(pos, dir.normalize());
+
+ return ray;
+ },
+
+ toString : function () {
+ return 'Ray []';
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Background = Class.create();
+
+Flog.RayTracer.Background.prototype = {
+ color : null,
+ ambience : 0.0,
+
+ initialize : function(color, ambience) {
+ this.color = color;
+ this.ambience = ambience;
+ }
+}
+/* Fake a Flog.* namespace */
+if(typeof(Flog) == 'undefined') var Flog = {};
+if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
+
+Flog.RayTracer.Engine = Class.create();
+
+Flog.RayTracer.Engine.prototype = {
+ canvas: null, /* 2d context we can render to */
+
+ initialize: function(options){
+ this.options = Object.extend({
+ canvasHeight: 100,
+ canvasWidth: 100,
+ pixelWidth: 2,
+ pixelHeight: 2,
+ renderDiffuse: false,
+ renderShadows: false,
+ renderHighlights: false,
+ renderReflections: false,
+ rayDepth: 2
+ }, options || {});
+
+ this.options.canvasHeight /= this.options.pixelHeight;
+ this.options.canvasWidth /= this.options.pixelWidth;
+
+ /* TODO: dynamically include other scripts */
+ },
+
+ setPixel: function(x, y, color){
+ var pxW, pxH;
+ pxW = this.options.pixelWidth;
+ pxH = this.options.pixelHeight;
+
+ if (this.canvas) {
+ this.canvas.fillStyle = color.toString();
+ this.canvas.fillRect (x * pxW, y * pxH, pxW, pxH);
+ } else {
+ if (x === y) {
+ checkNumber += color.brightness();
+ }
+ // print(x * pxW, y * pxH, pxW, pxH);
+ }
+ },
+
+ renderScene: function(scene, canvas){
+ checkNumber = 0;
+ /* Get canvas */
+ if (canvas) {
+ this.canvas = canvas.getContext("2d");
+ } else {
+ this.canvas = null;
+ }
+
+ var canvasHeight = this.options.canvasHeight;
+ var canvasWidth = this.options.canvasWidth;
+
+ for(var y=0; y < canvasHeight; y++){
+ for(var x=0; x < canvasWidth; x++){
+ var yp = y * 1.0 / canvasHeight * 2 - 1;
+ var xp = x * 1.0 / canvasWidth * 2 - 1;
+
+ var ray = scene.camera.getRay(xp, yp);
+
+ var color = this.getPixelColor(ray, scene);
+
+ this.setPixel(x, y, color);
+ }
+ }
+ if (checkNumber !== 2321) {
+ throw new Error("Scene rendered incorrectly");
+ }
+ },
+
+ getPixelColor: function(ray, scene){
+ var info = this.testIntersection(ray, scene, null);
+ if(info.isHit){
+ var color = this.rayTrace(info, ray, scene, 0);
+ return color;
+ }
+ return scene.background.color;
+ },
+
+ testIntersection: function(ray, scene, exclude){
+ var hits = 0;
+ var best = new Flog.RayTracer.IntersectionInfo();
+ best.distance = 2000;
+
+ for(var i=0; i<scene.shapes.length; i++){
+ var shape = scene.shapes[i];
+
+ if(shape != exclude){
+ var info = shape.intersect(ray);
+ if(info.isHit && info.distance >= 0 && info.distance < best.distance){
+ best = info;
+ hits++;
+ }
+ }
+ }
+ best.hitCount = hits;
+ return best;
+ },
+
+ getReflectionRay: function(P,N,V){
+ var c1 = -N.dot(V);
+ var R1 = Flog.RayTracer.Vector.prototype.add(
+ Flog.RayTracer.Vector.prototype.multiplyScalar(N, 2*c1),
+ V
+ );
+ return new Flog.RayTracer.Ray(P, R1);
+ },
+
+ rayTrace: function(info, ray, scene, depth){
+ // Calc ambient
+ var color = Flog.RayTracer.Color.prototype.multiplyScalar(info.color, scene.background.ambience);
+ var oldColor = color;
+ var shininess = Math.pow(10, info.shape.material.gloss + 1);
+
+ for(var i=0; i<scene.lights.length; i++){
+ var light = scene.lights[i];
+
+ // Calc diffuse lighting
+ var v = Flog.RayTracer.Vector.prototype.subtract(
+ light.position,
+ info.position
+ ).normalize();
+
+ if(this.options.renderDiffuse){
+ var L = v.dot(info.normal);
+ if(L > 0.0){
+ color = Flog.RayTracer.Color.prototype.add(
+ color,
+ Flog.RayTracer.Color.prototype.multiply(
+ info.color,
+ Flog.RayTracer.Color.prototype.multiplyScalar(
+ light.color,
+ L
+ )
+ )
+ );
+ }
+ }
+
+ // The greater the depth the more accurate the colours, but
+ // this is exponentially (!) expensive
+ if(depth <= this.options.rayDepth){
+ // calculate reflection ray
+ if(this.options.renderReflections && info.shape.material.reflection > 0)
+ {
+ var reflectionRay = this.getReflectionRay(info.position, info.normal, ray.direction);
+ var refl = this.testIntersection(reflectionRay, scene, info.shape);
+
+ if (refl.isHit && refl.distance > 0){
+ refl.color = this.rayTrace(refl, reflectionRay, scene, depth + 1);
+ } else {
+ refl.color = scene.background.color;
+ }
+
+ color = Flog.RayTracer.Color.prototype.blend(
+ color,
+ refl.color,
+ info.shape.material.reflection
+ );
+ }
+
+ // Refraction
+ /* TODO */
+ }
+
+ /* Render shadows and highlights */
+
+ var shadowInfo = new Flog.RayTracer.IntersectionInfo();
+
+ if(this.options.renderShadows){
+ var shadowRay = new Flog.RayTracer.Ray(info.position, v);
+
+ shadowInfo = this.testIntersection(shadowRay, scene, info.shape);
+ if(shadowInfo.isHit && shadowInfo.shape != info.shape /*&& shadowInfo.shape.type != 'PLANE'*/){
+ var vA = Flog.RayTracer.Color.prototype.multiplyScalar(color, 0.5);
+ var dB = (0.5 * Math.pow(shadowInfo.shape.material.transparency, 0.5));
+ color = Flog.RayTracer.Color.prototype.addScalar(vA,dB);
+ }
+ }
+
+ // Phong specular highlights
+ if(this.options.renderHighlights && !shadowInfo.isHit && info.shape.material.gloss > 0){
+ var Lv = Flog.RayTracer.Vector.prototype.subtract(
+ info.shape.position,
+ light.position
+ ).normalize();
+
+ var E = Flog.RayTracer.Vector.prototype.subtract(
+ scene.camera.position,
+ info.shape.position
+ ).normalize();
+
+ var H = Flog.RayTracer.Vector.prototype.subtract(
+ E,
+ Lv
+ ).normalize();
+
+ var glossWeight = Math.pow(Math.max(info.normal.dot(H), 0), shininess);
+ color = Flog.RayTracer.Color.prototype.add(
+ Flog.RayTracer.Color.prototype.multiplyScalar(light.color, glossWeight),
+ color
+ );
+ }
+ }
+ color.limit();
+ return color;
+ }
+};
+
+
+function renderScene(){
+ var scene = new Flog.RayTracer.Scene();
+
+ scene.camera = new Flog.RayTracer.Camera(
+ new Flog.RayTracer.Vector(0, 0, -15),
+ new Flog.RayTracer.Vector(-0.2, 0, 5),
+ new Flog.RayTracer.Vector(0, 1, 0)
+ );
+
+ scene.background = new Flog.RayTracer.Background(
+ new Flog.RayTracer.Color(0.5, 0.5, 0.5),
+ 0.4
+ );
+
+ var sphere = new Flog.RayTracer.Shape.Sphere(
+ new Flog.RayTracer.Vector(-1.5, 1.5, 2),
+ 1.5,
+ new Flog.RayTracer.Material.Solid(
+ new Flog.RayTracer.Color(0,0.5,0.5),
+ 0.3,
+ 0.0,
+ 0.0,
+ 2.0
+ )
+ );
+
+ var sphere1 = new Flog.RayTracer.Shape.Sphere(
+ new Flog.RayTracer.Vector(1, 0.25, 1),
+ 0.5,
+ new Flog.RayTracer.Material.Solid(
+ new Flog.RayTracer.Color(0.9,0.9,0.9),
+ 0.1,
+ 0.0,
+ 0.0,
+ 1.5
+ )
+ );
+
+ var plane = new Flog.RayTracer.Shape.Plane(
+ new Flog.RayTracer.Vector(0.1, 0.9, -0.5).normalize(),
+ 1.2,
+ new Flog.RayTracer.Material.Chessboard(
+ new Flog.RayTracer.Color(1,1,1),
+ new Flog.RayTracer.Color(0,0,0),
+ 0.2,
+ 0.0,
+ 1.0,
+ 0.7
+ )
+ );
+
+ scene.shapes.push(plane);
+ scene.shapes.push(sphere);
+ scene.shapes.push(sphere1);
+
+ var light = new Flog.RayTracer.Light(
+ new Flog.RayTracer.Vector(5, 10, -1),
+ new Flog.RayTracer.Color(0.8, 0.8, 0.8)
+ );
+
+ var light1 = new Flog.RayTracer.Light(
+ new Flog.RayTracer.Vector(-3, 5, -15),
+ new Flog.RayTracer.Color(0.8, 0.8, 0.8),
+ 100
+ );
+
+ scene.lights.push(light);
+ scene.lights.push(light1);
+
+ var imageWidth = 100; // $F('imageWidth');
+ var imageHeight = 100; // $F('imageHeight');
+ var pixelSize = "5,5".split(','); // $F('pixelSize').split(',');
+ var renderDiffuse = true; // $F('renderDiffuse');
+ var renderShadows = true; // $F('renderShadows');
+ var renderHighlights = true; // $F('renderHighlights');
+ var renderReflections = true; // $F('renderReflections');
+ var rayDepth = 2;//$F('rayDepth');
+
+ var raytracer = new Flog.RayTracer.Engine(
+ {
+ canvasWidth: imageWidth,
+ canvasHeight: imageHeight,
+ pixelWidth: pixelSize[0],
+ pixelHeight: pixelSize[1],
+ "renderDiffuse": renderDiffuse,
+ "renderHighlights": renderHighlights,
+ "renderShadows": renderShadows,
+ "renderReflections": renderReflections,
+ "rayDepth": rayDepth
+ }
+ );
+
+ raytracer.renderScene(scene, null, 0);
+}
diff --git a/tests/benchmarks/script/v8/tests/regexp.js b/tests/benchmarks/script/v8/tests/regexp.js
new file mode 100644
index 0000000000..71b9e6362c
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/regexp.js
@@ -0,0 +1,1764 @@
+// Copyright 2010 the V8 project authors. All rights reserved.
+// 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 Google Inc. 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.
+
+// Automatically generated on 2009-01-30. Manually updated on 2010-09-17.
+
+// This benchmark is generated by loading 50 of the most popular pages
+// on the web and logging all regexp operations performed. Each
+// operation is given a weight that is calculated from an estimate of
+// the popularity of the pages where it occurs and the number of times
+// it is executed while loading each page. Furthermore the literal
+// letters in the data are encoded using ROT13 in a way that does not
+// affect how the regexps match their input. Finally the strings are
+// scrambled to exercise the regexp engine on different input strings.
+
+
+var RegExp = new BenchmarkSuite('RegExp', 910985, [
+ new Benchmark("RegExp", RegExpRun, RegExpSetup, RegExpTearDown)
+]);
+
+var regExpBenchmark = null;
+
+function RegExpSetup() {
+ regExpBenchmark = new RegExpBenchmark();
+ RegExpRun(); // run once to get system initialized
+}
+
+function RegExpRun() {
+ regExpBenchmark.run();
+}
+
+function RegExpTearDown() {
+ regExpBenchmark = null;
+}
+
+// Returns an array of n different variants of the input string str.
+// The variants are computed by randomly rotating one random
+// character.
+function computeInputVariants(str, n) {
+ var variants = [ str ];
+ for (var i = 1; i < n; i++) {
+ var pos = Math.floor(Math.random() * str.length);
+ var chr = String.fromCharCode((str.charCodeAt(pos) + Math.floor(Math.random() * 128)) % 128);
+ variants[i] = str.substring(0, pos) + chr + str.substring(pos + 1, str.length);
+ }
+ return variants;
+}
+
+function RegExpBenchmark() {
+ var re0 = /^ba/;
+ var re1 = /(((\w+):\/\/)([^\/:]*)(:(\d+))?)?([^#?]*)(\?([^#]*))?(#(.*))?/;
+ var re2 = /^\s*|\s*$/g;
+ var re3 = /\bQBZPbageby_cynprubyqre\b/;
+ var re4 = /,/;
+ var re5 = /\bQBZPbageby_cynprubyqre\b/g;
+ var re6 = /^[\s\xa0]+|[\s\xa0]+$/g;
+ var re7 = /(\d*)(\D*)/g;
+ var re8 = /=/;
+ var re9 = /(^|\s)lhv\-h(\s|$)/;
+ var str0 = 'Zbmvyyn/5.0 (Jvaqbjf; H; Jvaqbjf AG 5.1; ra-HF) NccyrJroXvg/528.9 (XUGZY, yvxr Trpxb) Puebzr/2.0.157.0 Fnsnev/528.9';
+ var re10 = /\#/g;
+ var re11 = /\./g;
+ var re12 = /'/g;
+ var re13 = /\?[\w\W]*(sevraqvq|punaaryvq|tebhcvq)=([^\&\?#]*)/i;
+ var str1 = 'Fubpxjnir Synfu 9.0 e115';
+ var re14 = /\s+/g;
+ var re15 = /^\s*(\S*(\s+\S+)*)\s*$/;
+ var re16 = /(-[a-z])/i;
+
+ var s0 = computeInputVariants('pyvpx', 6511);
+ var s1 = computeInputVariants('uggc://jjj.snprobbx.pbz/ybtva.cuc', 1844);
+ var s2 = computeInputVariants('QBZPbageby_cynprubyqre', 739);
+ var s3 = computeInputVariants('uggc://jjj.snprobbx.pbz/', 598);
+ var s4 = computeInputVariants('uggc://jjj.snprobbx.pbz/fepu.cuc', 454);
+ var s5 = computeInputVariants('qqqq, ZZZ q, llll', 352);
+ var s6 = computeInputVariants('vachggrkg QBZPbageby_cynprubyqre', 312);
+ var s7 = computeInputVariants('/ZlFcnprUbzrcntr/Vaqrk-FvgrUbzr,10000000', 282);
+ var s8 = computeInputVariants('vachggrkg', 177);
+ var s9 = computeInputVariants('528.9', 170);
+ var s10 = computeInputVariants('528', 170);
+ var s11 = computeInputVariants('VCPhygher=ra-HF', 156);
+ var s12 = computeInputVariants('CersreerqPhygher=ra-HF', 156);
+ var s13 = computeInputVariants('xrlcerff', 144);
+ var s14 = computeInputVariants('521', 139);
+ var s15 = computeInputVariants(str0, 139);
+ var s16 = computeInputVariants('qvi .so_zrah', 137);
+ var s17 = computeInputVariants('qvi.so_zrah', 137);
+ var s18 = computeInputVariants('uvqqra_ryrz', 117);
+ var s19 = computeInputVariants('sevraqfgre_naba=nvq%3Qn6ss9p85n868ro9s059pn854735956o3%26ers%3Q%26df%3Q%26vpgl%3QHF', 95);
+ var s20 = computeInputVariants('uggc://ubzr.zlfcnpr.pbz/vaqrk.psz', 93);
+ var s21 = computeInputVariants(str1, 92);
+ var s22 = computeInputVariants('svefg', 85);
+ var s23 = computeInputVariants('uggc://cebsvyr.zlfcnpr.pbz/vaqrk.psz', 85);
+ var s24 = computeInputVariants('ynfg', 85);
+ var s25 = computeInputVariants('qvfcynl', 85);
+
+ function runBlock0() {
+ for (var i = 0; i < 6511; i++) {
+ re0.exec(s0[i]);
+ }
+ for (var i = 0; i < 1844; i++) {
+ re1.exec(s1[i]);
+ }
+ for (var i = 0; i < 739; i++) {
+ s2[i].replace(re2, '');
+ }
+ for (var i = 0; i < 598; i++) {
+ re1.exec(s3[i]);
+ }
+ for (var i = 0; i < 454; i++) {
+ re1.exec(s4[i]);
+ }
+ for (var i = 0; i < 352; i++) {
+ /qqqq|qqq|qq|q|ZZZZ|ZZZ|ZZ|Z|llll|ll|l|uu|u|UU|U|zz|z|ff|f|gg|g|sss|ss|s|mmm|mm|m/g.exec(s5[i]);
+ }
+ for (var i = 0; i < 312; i++) {
+ re3.exec(s6[i]);
+ }
+ for (var i = 0; i < 282; i++) {
+ re4.exec(s7[i]);
+ }
+ for (var i = 0; i < 177; i++) {
+ s8[i].replace(re5, '');
+ }
+ for (var i = 0; i < 170; i++) {
+ s9[i].replace(re6, '');
+ re7.exec(s10[i]);
+ }
+ for (var i = 0; i < 156; i++) {
+ re8.exec(s11[i]);
+ re8.exec(s12[i]);
+ }
+ for (var i = 0; i < 144; i++) {
+ re0.exec(s13[i]);
+ }
+ for (var i = 0; i < 139; i++) {
+ s14[i].replace(re6, '');
+ re7.exec(s14[i]);
+ re9.exec('');
+ /JroXvg\/(\S+)/.exec(s15[i]);
+ }
+ for (var i = 0; i < 137; i++) {
+ s16[i].replace(re10, '');
+ s16[i].replace(/\[/g, '');
+ s17[i].replace(re11, '');
+ }
+ for (var i = 0; i < 117; i++) {
+ s18[i].replace(re2, '');
+ }
+ for (var i = 0; i < 95; i++) {
+ /(?:^|;)\s*sevraqfgre_ynat=([^;]*)/.exec(s19[i]);
+ }
+ for (var i = 0; i < 93; i++) {
+ s20[i].replace(re12, '');
+ re13.exec(s20[i]);
+ }
+ for (var i = 0; i < 92; i++) {
+ s21[i].replace(/([a-zA-Z]|\s)+/, '');
+ }
+ for (var i = 0; i < 85; i++) {
+ s22[i].replace(re14, '');
+ s22[i].replace(re15, '');
+ s23[i].replace(re12, '');
+ s24[i].replace(re14, '');
+ s24[i].replace(re15, '');
+ re16.exec(s25[i]);
+ re13.exec(s23[i]);
+ }
+ }
+ var re17 = /(^|[^\\])\"\\\/Qngr\((-?[0-9]+)\)\\\/\"/g;
+ var str2 = '{"anzr":"","ahzoreSbezng":{"PheeraplQrpvznyQvtvgf":2,"PheeraplQrpvznyFrcnengbe":".","VfErnqBayl":gehr,"PheeraplTebhcFvmrf":[3],"AhzoreTebhcFvmrf":[3],"CrepragTebhcFvmrf":[3],"PheeraplTebhcFrcnengbe":",","PheeraplFlzoby":"\xa4","AnAFlzoby":"AnA","PheeraplArtngvirCnggrea":0,"AhzoreArtngvirCnggrea":1,"CrepragCbfvgvirCnggrea":0,"CrepragArtngvirCnggrea":0,"ArtngvirVasvavglFlzoby":"-Vasvavgl","ArtngvirFvta":"-","AhzoreQrpvznyQvtvgf":2,"AhzoreQrpvznyFrcnengbe":".","AhzoreTebhcFrcnengbe":",","PheeraplCbfvgvirCnggrea":0,"CbfvgvirVasvavglFlzoby":"Vasvavgl","CbfvgvirFvta":"+","CrepragQrpvznyQvtvgf":2,"CrepragQrpvznyFrcnengbe":".","CrepragTebhcFrcnengbe":",","CrepragFlzoby":"%","CreZvyyrFlzoby":"\u2030","AngvirQvtvgf":["0","1","2","3","4","5","6","7","8","9"],"QvtvgFhofgvghgvba":1},"qngrGvzrSbezng":{"NZQrfvtangbe":"NZ","Pnyraqne":{"ZvaFhccbegrqQngrGvzr":"@-62135568000000@","ZnkFhccbegrqQngrGvzr":"@253402300799999@","NytbevguzGlcr":1,"PnyraqneGlcr":1,"Renf":[1],"GjbQvtvgLrneZnk":2029,"VfErnqBayl":gehr},"QngrFrcnengbe":"/","SvefgQnlBsJrrx":0,"PnyraqneJrrxEhyr":0,"ShyyQngrGvzrCnggrea":"qqqq, qq ZZZZ llll UU:zz:ff","YbatQngrCnggrea":"qqqq, qq ZZZZ llll","YbatGvzrCnggrea":"UU:zz:ff","ZbaguQnlCnggrea":"ZZZZ qq","CZQrfvtangbe":"CZ","ESP1123Cnggrea":"qqq, qq ZZZ llll UU\':\'zz\':\'ff \'TZG\'","FubegQngrCnggrea":"ZZ/qq/llll","FubegGvzrCnggrea":"UU:zz","FbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq\'G\'UU\':\'zz\':\'ff","GvzrFrcnengbe":":","HavirefnyFbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq UU\':\'zz\':\'ff\'M\'","LrneZbaguCnggrea":"llll ZZZZ","NooerivngrqQnlAnzrf":["Fha","Zba","Ghr","Jrq","Guh","Sev","Fng"],"FubegrfgQnlAnzrf":["Fh","Zb","Gh","Jr","Gu","Se","Fn"],"QnlAnzrf":["Fhaqnl","Zbaqnl","Ghrfqnl","Jrqarfqnl","Guhefqnl","Sevqnl","Fngheqnl"],"NooerivngrqZbaguAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""],"VfErnqBayl":gehr,"AngvirPnyraqneAnzr":"Tertbevna Pnyraqne","NooerivngrqZbaguTravgvirAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguTravgvirAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""]}}';
+ var str3 = '{"anzr":"ra-HF","ahzoreSbezng":{"PheeraplQrpvznyQvtvgf":2,"PheeraplQrpvznyFrcnengbe":".","VfErnqBayl":snyfr,"PheeraplTebhcFvmrf":[3],"AhzoreTebhcFvmrf":[3],"CrepragTebhcFvmrf":[3],"PheeraplTebhcFrcnengbe":",","PheeraplFlzoby":"$","AnAFlzoby":"AnA","PheeraplArtngvirCnggrea":0,"AhzoreArtngvirCnggrea":1,"CrepragCbfvgvirCnggrea":0,"CrepragArtngvirCnggrea":0,"ArtngvirVasvavglFlzoby":"-Vasvavgl","ArtngvirFvta":"-","AhzoreQrpvznyQvtvgf":2,"AhzoreQrpvznyFrcnengbe":".","AhzoreTebhcFrcnengbe":",","PheeraplCbfvgvirCnggrea":0,"CbfvgvirVasvavglFlzoby":"Vasvavgl","CbfvgvirFvta":"+","CrepragQrpvznyQvtvgf":2,"CrepragQrpvznyFrcnengbe":".","CrepragTebhcFrcnengbe":",","CrepragFlzoby":"%","CreZvyyrFlzoby":"\u2030","AngvirQvtvgf":["0","1","2","3","4","5","6","7","8","9"],"QvtvgFhofgvghgvba":1},"qngrGvzrSbezng":{"NZQrfvtangbe":"NZ","Pnyraqne":{"ZvaFhccbegrqQngrGvzr":"@-62135568000000@","ZnkFhccbegrqQngrGvzr":"@253402300799999@","NytbevguzGlcr":1,"PnyraqneGlcr":1,"Renf":[1],"GjbQvtvgLrneZnk":2029,"VfErnqBayl":snyfr},"QngrFrcnengbe":"/","SvefgQnlBsJrrx":0,"PnyraqneJrrxEhyr":0,"ShyyQngrGvzrCnggrea":"qqqq, ZZZZ qq, llll u:zz:ff gg","YbatQngrCnggrea":"qqqq, ZZZZ qq, llll","YbatGvzrCnggrea":"u:zz:ff gg","ZbaguQnlCnggrea":"ZZZZ qq","CZQrfvtangbe":"CZ","ESP1123Cnggrea":"qqq, qq ZZZ llll UU\':\'zz\':\'ff \'TZG\'","FubegQngrCnggrea":"Z/q/llll","FubegGvzrCnggrea":"u:zz gg","FbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq\'G\'UU\':\'zz\':\'ff","GvzrFrcnengbe":":","HavirefnyFbegnoyrQngrGvzrCnggrea":"llll\'-\'ZZ\'-\'qq UU\':\'zz\':\'ff\'M\'","LrneZbaguCnggrea":"ZZZZ, llll","NooerivngrqQnlAnzrf":["Fha","Zba","Ghr","Jrq","Guh","Sev","Fng"],"FubegrfgQnlAnzrf":["Fh","Zb","Gh","Jr","Gu","Se","Fn"],"QnlAnzrf":["Fhaqnl","Zbaqnl","Ghrfqnl","Jrqarfqnl","Guhefqnl","Sevqnl","Fngheqnl"],"NooerivngrqZbaguAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""],"VfErnqBayl":snyfr,"AngvirPnyraqneAnzr":"Tertbevna Pnyraqne","NooerivngrqZbaguTravgvirAnzrf":["Wna","Sro","Zne","Nce","Znl","Wha","Why","Nht","Frc","Bpg","Abi","Qrp",""],"ZbaguTravgvirAnzrf":["Wnahnel","Sroehnel","Znepu","Ncevy","Znl","Whar","Whyl","Nhthfg","Frcgrzore","Bpgbore","Abirzore","Qrprzore",""]}}';
+ var str4 = 'HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str5 = 'HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var re18 = /^\s+|\s+$/g;
+ var str6 = 'uggc://jjj.snprobbx.pbz/vaqrk.cuc';
+ var re19 = /(?:^|\s+)ba(?:\s+|$)/;
+ var re20 = /[+, ]/;
+ var re21 = /ybnqrq|pbzcyrgr/;
+ var str7 = ';;jvaqbj.IjPurpxZbhfrCbfvgvbaNQ_VQ=shapgvba(r){vs(!r)ine r=jvaqbj.rirag;ine c=-1;vs(d1)c=d1.EbyybssCnary;ine bo=IjTrgBow("IjCnayNQ_VQ_"+c);vs(bo&&bo.fglyr.ivfvovyvgl=="ivfvoyr"){ine fns=IjFns?8:0;ine pheK=r.pyvragK+IjBOFpe("U")+fns,pheL=r.pyvragL+IjBOFpe("I")+fns;ine y=IjBOEC(NQ_VQ,bo,"Y"),g=IjBOEC(NQ_VQ,bo,"G");ine e=y+d1.Cnaryf[c].Jvqgu,o=g+d1.Cnaryf[c].Urvtug;vs((pheK<y)||(pheK>e)||(pheL<g)||(pheL>o)){vs(jvaqbj.IjBaEbyybssNQ_VQ)IjBaEbyybssNQ_VQ(c);ryfr IjPybfrNq(NQ_VQ,c,gehr,"");}ryfr erghea;}IjPnapryZbhfrYvfgrareNQ_VQ();};;jvaqbj.IjFrgEbyybssCnaryNQ_VQ=shapgvba(c){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;c=IjTc(NQ_VQ,c);vs(d1&&d1.EbyybssCnary>-1)IjPnapryZbhfrYvfgrareNQ_VQ();vs(d1)d1.EbyybssCnary=c;gel{vs(q.nqqRiragYvfgrare)q.nqqRiragYvfgrare(z,s,snyfr);ryfr vs(q.nggnpuRirag)q.nggnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjPnapryZbhfrYvfgrareNQ_VQ=shapgvba(){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;vs(d1)d1.EbyybssCnary=-1;gel{vs(q.erzbirRiragYvfgrare)q.erzbirRiragYvfgrare(z,s,snyfr);ryfr vs(q.qrgnpuRirag)q.qrgnpuRirag("ba"+z,s);}pngpu(r){}};;d1.IjTc=d2(n,c){ine nq=d1;vs(vfAnA(c)){sbe(ine v=0;v<nq.Cnaryf.yratgu;v++)vs(nq.Cnaryf[v].Anzr==c)erghea v;erghea 0;}erghea c;};;d1.IjTpy=d2(n,c,p){ine cn=d1.Cnaryf[IjTc(n,c)];vs(!cn)erghea 0;vs(vfAnA(p)){sbe(ine v=0;v<cn.Pyvpxguehf.yratgu;v++)vs(cn.Pyvpxguehf[v].Anzr==p)erghea v;erghea 0;}erghea p;};;d1.IjGenpr=d2(n,f){gel{vs(jvaqbj["Ij"+"QtQ"])jvaqbj["Ij"+"QtQ"](n,1,f);}pngpu(r){}};;d1.IjYvzvg1=d2(n,f){ine nq=d1,vh=f.fcyvg("/");sbe(ine v=0,p=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.FzV.yratgu>0)nq.FzV+="/";nq.FzV+=vh[v];nq.FtZ[nq.FtZ.yratgu]=snyfr;}}};;d1.IjYvzvg0=d2(n,f){ine nq=d1,vh=f.fcyvg("/");sbe(ine v=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.OvC.yratgu>0)nq.OvC+="/";nq.OvC+=vh[v];}}};;d1.IjRVST=d2(n,c){jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]=IjTrgBow("IjCnayNQ_VQ_"+c+"_Bow");vs(jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]==ahyy)frgGvzrbhg("IjRVST(NQ_VQ,"+c+")",d1.rvsg);};;d1.IjNavzSHC=d2(n,c){ine nq=d1;vs(c>nq.Cnaryf.yratgu)erghea;ine cna=nq.Cnaryf[c],nn=gehr,on=gehr,yn=gehr,en=gehr,cn=nq.Cnaryf[0],sf=nq.ShF,j=cn.Jvqgu,u=cn.Urvtug;vs(j=="100%"){j=sf;en=snyfr;yn=snyfr;}vs(u=="100%"){u=sf;nn=snyfr;on=snyfr;}vs(cn.YnY=="Y")yn=snyfr;vs(cn.YnY=="E")en=snyfr;vs(cn.GnY=="G")nn=snyfr;vs(cn.GnY=="O")on=snyfr;ine k=0,l=0;fjvgpu(nq.NshP%8){pnfr 0:oernx;pnfr 1:vs(nn)l=-sf;oernx;pnfr 2:k=j-sf;oernx;pnfr 3:vs(en)k=j;oernx;pnfr 4:k=j-sf;l=u-sf;oernx;pnfr 5:k=j-sf;vs(on)l=u;oernx;pnfr 6:l=u-sf;oernx;pnfr 7:vs(yn)k=-sf;l=u-sf;oernx;}vs(nq.NshP++ <nq.NshG)frgGvzrbhg(("IjNavzSHC(NQ_VQ,"+c+")"),nq.NshC);ryfr{k=-1000;l=k;}cna.YrsgBssfrg=k;cna.GbcBssfrg=l;IjNhErcb(n,c);};;d1.IjTrgErnyCbfvgvba=d2(n,b,j){erghea IjBOEC.nccyl(guvf,nethzragf);};;d1.IjPnapryGvzrbhg=d2(n,c){c=IjTc(n,c);ine cay=d1.Cnaryf[c];vs(cay&&cay.UgU!=""){pyrneGvzrbhg(cay.UgU);}};;d1.IjPnapryNyyGvzrbhgf=d2(n){vs(d1.YbpxGvzrbhgPunatrf)erghea;sbe(ine c=0;c<d1.bac;c++)IjPnapryGvzrbhg(n,c);};;d1.IjFgnegGvzrbhg=d2(n,c,bG){c=IjTc(n,c);ine cay=d1.Cnaryf[c];vs(cay&&((cay.UvqrGvzrbhgInyhr>0)||(nethzragf.yratgu==3&&bG>0))){pyrneGvzrbhg(cay.UgU);cay.UgU=frgGvzrbhg(cay.UvqrNpgvba,(nethzragf.yratgu==3?bG:cay.UvqrGvzrbhgInyhr));}};;d1.IjErfrgGvzrbhg=d2(n,c,bG){c=IjTc(n,c);IjPnapryGvzrbhg(n,c);riny("IjFgnegGvzrbhg(NQ_VQ,c"+(nethzragf.yratgu==3?",bG":"")+")");};;d1.IjErfrgNyyGvzrbhgf=d2(n){sbe(ine c=0;c<d1.bac;c++)IjErfrgGvzrbhg(n,c);};;d1.IjQrgnpure=d2(n,rig,sap){gel{vs(IjQVR5)riny("jvaqbj.qrgnpuRirag(\'ba"+rig+"\',"+sap+"NQ_VQ)");ryfr vs(!IjQVRZnp)riny("jvaqbj.erzbirRiragYvfgrare(\'"+rig+"\',"+sap+"NQ_VQ,snyfr)");}pngpu(r){}};;d1.IjPyrnaHc=d2(n){IjCvat(n,"G");ine nq=d1;sbe(ine v=0;v<nq.Cnaryf.yratgu;v++){IjUvqrCnary(n,v,gehr);}gel{IjTrgBow(nq.gya).vaareUGZY="";}pngpu(r){}vs(nq.gya!=nq.gya2)gel{IjTrgBow(nq.gya2).vaareUGZY="";}pngpu(r){}gel{d1=ahyy;}pngpu(r){}gel{IjQrgnpure(n,"haybnq","IjHayNQ_VQ");}pngpu(r){}gel{jvaqbj.IjHayNQ_VQ=ahyy;}pngpu(r){}gel{IjQrgnpure(n,"fpebyy","IjFeNQ_VQ");}pngpu(r){}gel{jvaqbj.IjFeNQ_VQ=ahyy;}pngpu(r){}gel{IjQrgnpure(n,"erfvmr","IjEmNQ_VQ");}pngpu(r){}gel{jvaqbj.IjEmNQ_VQ=ahyy;}pngpu(r){}gel{IjQrgnpure(n';
+ var str8 = ';;jvaqbj.IjPurpxZbhfrCbfvgvbaNQ_VQ=shapgvba(r){vs(!r)ine r=jvaqbj.rirag;ine c=-1;vs(jvaqbj.IjNqNQ_VQ)c=jvaqbj.IjNqNQ_VQ.EbyybssCnary;ine bo=IjTrgBow("IjCnayNQ_VQ_"+c);vs(bo&&bo.fglyr.ivfvovyvgl=="ivfvoyr"){ine fns=IjFns?8:0;ine pheK=r.pyvragK+IjBOFpe("U")+fns,pheL=r.pyvragL+IjBOFpe("I")+fns;ine y=IjBOEC(NQ_VQ,bo,"Y"),g=IjBOEC(NQ_VQ,bo,"G");ine e=y+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Jvqgu,o=g+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Urvtug;vs((pheK<y)||(pheK>e)||(pheL<g)||(pheL>o)){vs(jvaqbj.IjBaEbyybssNQ_VQ)IjBaEbyybssNQ_VQ(c);ryfr IjPybfrNq(NQ_VQ,c,gehr,"");}ryfr erghea;}IjPnapryZbhfrYvfgrareNQ_VQ();};;jvaqbj.IjFrgEbyybssCnaryNQ_VQ=shapgvba(c){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;c=IjTc(NQ_VQ,c);vs(jvaqbj.IjNqNQ_VQ&&jvaqbj.IjNqNQ_VQ.EbyybssCnary>-1)IjPnapryZbhfrYvfgrareNQ_VQ();vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=c;gel{vs(q.nqqRiragYvfgrare)q.nqqRiragYvfgrare(z,s,snyfr);ryfr vs(q.nggnpuRirag)q.nggnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjPnapryZbhfrYvfgrareNQ_VQ=shapgvba(){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=-1;gel{vs(q.erzbirRiragYvfgrare)q.erzbirRiragYvfgrare(z,s,snyfr);ryfr vs(q.qrgnpuRirag)q.qrgnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjTc=shapgvba(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(vfAnA(c)){sbe(ine v=0;v<nq.Cnaryf.yratgu;v++)vs(nq.Cnaryf[v].Anzr==c)erghea v;erghea 0;}erghea c;};;jvaqbj.IjNqNQ_VQ.IjTpy=shapgvba(n,c,p){ine cn=jvaqbj.IjNqNQ_VQ.Cnaryf[IjTc(n,c)];vs(!cn)erghea 0;vs(vfAnA(p)){sbe(ine v=0;v<cn.Pyvpxguehf.yratgu;v++)vs(cn.Pyvpxguehf[v].Anzr==p)erghea v;erghea 0;}erghea p;};;jvaqbj.IjNqNQ_VQ.IjGenpr=shapgvba(n,f){gel{vs(jvaqbj["Ij"+"QtQ"])jvaqbj["Ij"+"QtQ"](n,1,f);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjYvzvg1=shapgvba(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0,p=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.FzV.yratgu>0)nq.FzV+="/";nq.FzV+=vh[v];nq.FtZ[nq.FtZ.yratgu]=snyfr;}}};;jvaqbj.IjNqNQ_VQ.IjYvzvg0=shapgvba(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.OvC.yratgu>0)nq.OvC+="/";nq.OvC+=vh[v];}}};;jvaqbj.IjNqNQ_VQ.IjRVST=shapgvba(n,c){jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]=IjTrgBow("IjCnayNQ_VQ_"+c+"_Bow");vs(jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]==ahyy)frgGvzrbhg("IjRVST(NQ_VQ,"+c+")",jvaqbj.IjNqNQ_VQ.rvsg);};;jvaqbj.IjNqNQ_VQ.IjNavzSHC=shapgvba(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(c>nq.Cnaryf.yratgu)erghea;ine cna=nq.Cnaryf[c],nn=gehr,on=gehr,yn=gehr,en=gehr,cn=nq.Cnaryf[0],sf=nq.ShF,j=cn.Jvqgu,u=cn.Urvtug;vs(j=="100%"){j=sf;en=snyfr;yn=snyfr;}vs(u=="100%"){u=sf;nn=snyfr;on=snyfr;}vs(cn.YnY=="Y")yn=snyfr;vs(cn.YnY=="E")en=snyfr;vs(cn.GnY=="G")nn=snyfr;vs(cn.GnY=="O")on=snyfr;ine k=0,l=0;fjvgpu(nq.NshP%8){pnfr 0:oernx;pnfr 1:vs(nn)l=-sf;oernx;pnfr 2:k=j-sf;oernx;pnfr 3:vs(en)k=j;oernx;pnfr 4:k=j-sf;l=u-sf;oernx;pnfr 5:k=j-sf;vs(on)l=u;oernx;pnfr 6:l=u-sf;oernx;pnfr 7:vs(yn)k=-sf;l=u-sf;oernx;}vs(nq.NshP++ <nq.NshG)frgGvzrbhg(("IjNavzSHC(NQ_VQ,"+c+")"),nq.NshC);ryfr{k=-1000;l=k;}cna.YrsgBssfrg=k;cna.GbcBssfrg=l;IjNhErcb(n,c);};;jvaqbj.IjNqNQ_VQ.IjTrgErnyCbfvgvba=shapgvba(n,b,j){erghea IjBOEC.nccyl(guvf,nethzragf);};;jvaqbj.IjNqNQ_VQ.IjPnapryGvzrbhg=shapgvba(n,c){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&cay.UgU!=""){pyrneGvzrbhg(cay.UgU);}};;jvaqbj.IjNqNQ_VQ.IjPnapryNyyGvzrbhgf=shapgvba(n){vs(jvaqbj.IjNqNQ_VQ.YbpxGvzrbhgPunatrf)erghea;sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjPnapryGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjFgnegGvzrbhg=shapgvba(n,c,bG){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&((cay.UvqrGvzrbhgInyhr>0)||(nethzragf.yratgu==3&&bG>0))){pyrneGvzrbhg(cay.UgU);cay.UgU=frgGvzrbhg(cay.UvqrNpgvba,(nethzragf.yratgu==3?bG:cay.UvqrGvzrbhgInyhr));}};;jvaqbj.IjNqNQ_VQ.IjErfrgGvzrbhg=shapgvba(n,c,bG){c=IjTc(n,c);IjPnapryGvzrbhg(n,c);riny("IjFgnegGvzrbhg(NQ_VQ,c"+(nethzragf.yratgu==3?",bG":"")+")");};;jvaqbj.IjNqNQ_VQ.IjErfrgNyyGvzrbhgf=shapgvba(n){sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjErfrgGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjQrgnpure=shapgvba(n,rig,sap){gel{vs(IjQVR5)riny("jvaqbj.qrgnpuRirag(\'ba"+rig+"\',"+sap+"NQ_VQ)");ryfr vs(!IjQVRZnp)riny("jvaqbj.erzbir';
+ var str9 = ';;jvaqbj.IjPurpxZbhfrCbfvgvbaNQ_VQ=shapgvba(r){vs(!r)ine r=jvaqbj.rirag;ine c=-1;vs(jvaqbj.IjNqNQ_VQ)c=jvaqbj.IjNqNQ_VQ.EbyybssCnary;ine bo=IjTrgBow("IjCnayNQ_VQ_"+c);vs(bo&&bo.fglyr.ivfvovyvgl=="ivfvoyr"){ine fns=IjFns?8:0;ine pheK=r.pyvragK+IjBOFpe("U")+fns,pheL=r.pyvragL+IjBOFpe("I")+fns;ine y=IjBOEC(NQ_VQ,bo,"Y"),g=IjBOEC(NQ_VQ,bo,"G");ine e=y+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Jvqgu,o=g+jvaqbj.IjNqNQ_VQ.Cnaryf[c].Urvtug;vs((pheK<y)||(pheK>e)||(pheL<g)||(pheL>o)){vs(jvaqbj.IjBaEbyybssNQ_VQ)IjBaEbyybssNQ_VQ(c);ryfr IjPybfrNq(NQ_VQ,c,gehr,"");}ryfr erghea;}IjPnapryZbhfrYvfgrareNQ_VQ();};;jvaqbj.IjFrgEbyybssCnaryNQ_VQ=shapgvba(c){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;c=IjTc(NQ_VQ,c);vs(jvaqbj.IjNqNQ_VQ&&jvaqbj.IjNqNQ_VQ.EbyybssCnary>-1)IjPnapryZbhfrYvfgrareNQ_VQ();vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=c;gel{vs(q.nqqRiragYvfgrare)q.nqqRiragYvfgrare(z,s,snyfr);ryfr vs(q.nggnpuRirag)q.nggnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjPnapryZbhfrYvfgrareNQ_VQ=shapgvba(){ine z="zbhfrzbir",q=qbphzrag,s=IjPurpxZbhfrCbfvgvbaNQ_VQ;vs(jvaqbj.IjNqNQ_VQ)jvaqbj.IjNqNQ_VQ.EbyybssCnary=-1;gel{vs(q.erzbirRiragYvfgrare)q.erzbirRiragYvfgrare(z,s,snyfr);ryfr vs(q.qrgnpuRirag)q.qrgnpuRirag("ba"+z,s);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjTc=d2(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(vfAnA(c)){sbe(ine v=0;v<nq.Cnaryf.yratgu;v++)vs(nq.Cnaryf[v].Anzr==c)erghea v;erghea 0;}erghea c;};;jvaqbj.IjNqNQ_VQ.IjTpy=d2(n,c,p){ine cn=jvaqbj.IjNqNQ_VQ.Cnaryf[IjTc(n,c)];vs(!cn)erghea 0;vs(vfAnA(p)){sbe(ine v=0;v<cn.Pyvpxguehf.yratgu;v++)vs(cn.Pyvpxguehf[v].Anzr==p)erghea v;erghea 0;}erghea p;};;jvaqbj.IjNqNQ_VQ.IjGenpr=d2(n,f){gel{vs(jvaqbj["Ij"+"QtQ"])jvaqbj["Ij"+"QtQ"](n,1,f);}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjYvzvg1=d2(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0,p=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.FzV.yratgu>0)nq.FzV+="/";nq.FzV+=vh[v];nq.FtZ[nq.FtZ.yratgu]=snyfr;}}};;jvaqbj.IjNqNQ_VQ.IjYvzvg0=d2(n,f){ine nq=jvaqbj.IjNqNQ_VQ,vh=f.fcyvg("/");sbe(ine v=0;v<vh.yratgu;v++){vs(vh[v].yratgu>0){vs(nq.OvC.yratgu>0)nq.OvC+="/";nq.OvC+=vh[v];}}};;jvaqbj.IjNqNQ_VQ.IjRVST=d2(n,c){jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]=IjTrgBow("IjCnayNQ_VQ_"+c+"_Bow");vs(jvaqbj["IjCnayNQ_VQ_"+c+"_Bow"]==ahyy)frgGvzrbhg("IjRVST(NQ_VQ,"+c+")",jvaqbj.IjNqNQ_VQ.rvsg);};;jvaqbj.IjNqNQ_VQ.IjNavzSHC=d2(n,c){ine nq=jvaqbj.IjNqNQ_VQ;vs(c>nq.Cnaryf.yratgu)erghea;ine cna=nq.Cnaryf[c],nn=gehr,on=gehr,yn=gehr,en=gehr,cn=nq.Cnaryf[0],sf=nq.ShF,j=cn.Jvqgu,u=cn.Urvtug;vs(j=="100%"){j=sf;en=snyfr;yn=snyfr;}vs(u=="100%"){u=sf;nn=snyfr;on=snyfr;}vs(cn.YnY=="Y")yn=snyfr;vs(cn.YnY=="E")en=snyfr;vs(cn.GnY=="G")nn=snyfr;vs(cn.GnY=="O")on=snyfr;ine k=0,l=0;fjvgpu(nq.NshP%8){pnfr 0:oernx;pnfr 1:vs(nn)l=-sf;oernx;pnfr 2:k=j-sf;oernx;pnfr 3:vs(en)k=j;oernx;pnfr 4:k=j-sf;l=u-sf;oernx;pnfr 5:k=j-sf;vs(on)l=u;oernx;pnfr 6:l=u-sf;oernx;pnfr 7:vs(yn)k=-sf;l=u-sf;oernx;}vs(nq.NshP++ <nq.NshG)frgGvzrbhg(("IjNavzSHC(NQ_VQ,"+c+")"),nq.NshC);ryfr{k=-1000;l=k;}cna.YrsgBssfrg=k;cna.GbcBssfrg=l;IjNhErcb(n,c);};;jvaqbj.IjNqNQ_VQ.IjTrgErnyCbfvgvba=d2(n,b,j){erghea IjBOEC.nccyl(guvf,nethzragf);};;jvaqbj.IjNqNQ_VQ.IjPnapryGvzrbhg=d2(n,c){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&cay.UgU!=""){pyrneGvzrbhg(cay.UgU);}};;jvaqbj.IjNqNQ_VQ.IjPnapryNyyGvzrbhgf=d2(n){vs(jvaqbj.IjNqNQ_VQ.YbpxGvzrbhgPunatrf)erghea;sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjPnapryGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjFgnegGvzrbhg=d2(n,c,bG){c=IjTc(n,c);ine cay=jvaqbj.IjNqNQ_VQ.Cnaryf[c];vs(cay&&((cay.UvqrGvzrbhgInyhr>0)||(nethzragf.yratgu==3&&bG>0))){pyrneGvzrbhg(cay.UgU);cay.UgU=frgGvzrbhg(cay.UvqrNpgvba,(nethzragf.yratgu==3?bG:cay.UvqrGvzrbhgInyhr));}};;jvaqbj.IjNqNQ_VQ.IjErfrgGvzrbhg=d2(n,c,bG){c=IjTc(n,c);IjPnapryGvzrbhg(n,c);riny("IjFgnegGvzrbhg(NQ_VQ,c"+(nethzragf.yratgu==3?",bG":"")+")");};;jvaqbj.IjNqNQ_VQ.IjErfrgNyyGvzrbhgf=d2(n){sbe(ine c=0;c<jvaqbj.IjNqNQ_VQ.bac;c++)IjErfrgGvzrbhg(n,c);};;jvaqbj.IjNqNQ_VQ.IjQrgnpure=d2(n,rig,sap){gel{vs(IjQVR5)riny("jvaqbj.qrgnpuRirag(\'ba"+rig+"\',"+sap+"NQ_VQ)");ryfr vs(!IjQVRZnp)riny("jvaqbj.erzbirRiragYvfgrare(\'"+rig+"\',"+sap+"NQ_VQ,snyfr)");}pngpu(r){}};;jvaqbj.IjNqNQ_VQ.IjPyrna';
+
+ var s26 = computeInputVariants('VC=74.125.75.1', 81);
+ var s27 = computeInputVariants('9.0 e115', 78);
+ var s28 = computeInputVariants('k',78);
+ var s29 = computeInputVariants(str2, 81);
+ var s30 = computeInputVariants(str3, 81);
+ var s31 = computeInputVariants('144631658', 78);
+ var s32 = computeInputVariants('Pbhagel=IIZ%3Q', 78);
+ var s33 = computeInputVariants('Pbhagel=IIZ=', 78);
+ var s34 = computeInputVariants('CersreerqPhygherCraqvat=', 78);
+ var s35 = computeInputVariants(str4, 78);
+ var s36 = computeInputVariants(str5, 78);
+ var s37 = computeInputVariants('__hgzp=144631658', 78);
+ var s38 = computeInputVariants('gvzrMbar=-8', 78);
+ var s39 = computeInputVariants('gvzrMbar=0', 78);
+ // var s40 = computeInputVariants(s15[i], 78);
+ var s41 = computeInputVariants('vachggrkg QBZPbageby_cynprubyqre', 78);
+ var s42 = computeInputVariants('xrlqbja', 78);
+ var s43 = computeInputVariants('xrlhc', 78);
+ var s44 = computeInputVariants('uggc://zrffntvat.zlfcnpr.pbz/vaqrk.psz', 77);
+ var s45 = computeInputVariants('FrffvbaFgbentr=%7O%22GnoThvq%22%3N%7O%22thvq%22%3N1231367125017%7Q%7Q', 73);
+ var s46 = computeInputVariants(str6, 72);
+ var s47 = computeInputVariants('3.5.0.0', 70);
+ var s48 = computeInputVariants(str7, 70);
+ var s49 = computeInputVariants(str8, 70);
+ var s50 = computeInputVariants(str9, 70);
+ var s51 = computeInputVariants('NI%3Q1_CI%3Q1_PI%3Q1_EI%3Q1_HI%3Q1_HP%3Q1_IC%3Q0.0.0.0_IH%3Q0', 70);
+ var s52 = computeInputVariants('svz_zlfcnpr_ubzrcntr_abgybttrqva,svz_zlfcnpr_aba_HTP,svz_zlfcnpr_havgrq-fgngrf', 70);
+ var s53 = computeInputVariants('ybnqvat', 70);
+ var s54 = computeInputVariants('#', 68);
+ var s55 = computeInputVariants('ybnqrq', 68);
+ var s56 = computeInputVariants('pbybe', 49);
+ var s57 = computeInputVariants('uggc://sevraqf.zlfcnpr.pbz/vaqrk.psz', 44);
+
+ function runBlock1() {
+ for (var i = 0; i < 81; i++) {
+ re8.exec(s26[i]);
+ }
+ for (var i = 0; i < 78; i++) {
+ s27[i].replace(/(\s)+e/, '');
+ s28[i].replace(/./, '');
+ s29[i].replace(re17, '');
+ s30[i].replace(re17, '');
+ re8.exec(s31[i]);
+ re8.exec(s32[i]);
+ re8.exec(s33[i]);
+ re8.exec(s34[i]);
+ re8.exec(s35[i]);
+ re8.exec(s36[i]);
+ re8.exec(s37[i]);
+ re8.exec(s38[i]);
+ re8.exec(s39[i]);
+ /Fnsnev\/(\d+\.\d+)/.exec(s15[i]);
+ re3.exec(s41[i]);
+ re0.exec(s42[i]);
+ re0.exec(s43[i]);
+ }
+ for (var i = 0; i < 77; i++) {
+ s44[i].replace(re12, '');
+ re13.exec(s44[i]);
+ }
+ for (var i = 0; i < 73; i++) {
+ s45[i].replace(re18, '');
+ }
+ for (var i = 0; i < 72; i++) {
+ re1.exec(s46[i]);
+ }
+ for (var i = 0; i < 71; i++) {
+ re19.exec('');
+ }
+ for (var i = 0; i < 70; i++) {
+ s47[i].replace(re11, '');
+ s48[i].replace(/d1/g, '');
+ s49[i].replace(/NQ_VQ/g, '');
+ s50[i].replace(/d2/g, '');
+ s51[i].replace(/_/g, '');
+ s52[i].split(re20);
+ re21.exec(s53[i]);
+ }
+ for (var i = 0; i < 68; i++) {
+ re1.exec(s54[i]);
+ /(?:ZFVR.(\d+\.\d+))|(?:(?:Sversbk|TenaCnenqvfb|Vprjrnfry).(\d+\.\d+))|(?:Bcren.(\d+\.\d+))|(?:NccyrJroXvg.(\d+(?:\.\d+)?))/.exec(s15[i]);
+ /(Znp BF K)|(Jvaqbjf;)/.exec(s15[i]);
+ /Trpxb\/([0-9]+)/.exec(s15[i]);
+ re21.exec(s55[i]);
+ }
+ for (var i = 0; i < 49; i++) {
+ re16.exec(s56[i]);
+ }
+ for (var i = 0; i < 44; i++) {
+ s57[i].replace(re12, '');
+ re13.exec(s57[i]);
+ }
+ }
+ var re22 = /\bso_zrah\b/;
+ var re23 = /^(?:(?:[^:\/?#]+):)?(?:\/\/(?:[^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/;
+ var re24 = /uggcf?:\/\/([^\/]+\.)?snprobbx\.pbz\//;
+ var re25 = /"/g;
+ var re26 = /^([^?#]+)(?:\?([^#]*))?(#.*)?/;
+ var s57a = computeInputVariants('fryrpgrq', 40);
+ var s58 = computeInputVariants('vachggrkg uvqqra_ryrz', 40);
+ var s59 = computeInputVariants('vachggrkg ', 40);
+ var s60 = computeInputVariants('vachggrkg', 40);
+ var s61 = computeInputVariants('uggc://jjj.snprobbx.pbz/', 40);
+ var s62 = computeInputVariants('uggc://jjj.snprobbx.pbz/ybtva.cuc', 40);
+ var s63 = computeInputVariants('Funer guvf tnqtrg', 40);
+ var s64 = computeInputVariants('uggc://jjj.tbbtyr.pbz/vt/qverpgbel', 40);
+ var s65 = computeInputVariants('419', 40);
+ var s66 = computeInputVariants('gvzrfgnzc', 40);
+
+ function runBlock2() {
+ for (var i = 0; i < 40; i++) {
+ s57a[i].replace(re14, '');
+ s57a[i].replace(re15, '');
+ }
+ for (var i = 0; i < 39; i++) {
+ s58[i].replace(/\buvqqra_ryrz\b/g, '');
+ re3.exec(s59[i]);
+ re3.exec(s60[i]);
+ re22.exec('HVYvaxOhggba');
+ re22.exec('HVYvaxOhggba_E');
+ re22.exec('HVYvaxOhggba_EJ');
+ re22.exec('zrah_ybtva_pbagnvare');
+ /\buvqqra_ryrz\b/.exec('vachgcnffjbeq');
+ }
+ for (var i = 0; i < 37; i++) {
+ re8.exec('111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904');
+ re8.exec('SbeprqRkcvengvba=633669315660164980');
+ re8.exec('FrffvbaQQS2=111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904');
+ }
+ for (var i = 0; i < 35; i++) {
+ 'puvyq p1 svefg'.replace(re14, '');
+ 'puvyq p1 svefg'.replace(re15, '');
+ 'sylbhg pybfrq'.replace(re14, '');
+ 'sylbhg pybfrq'.replace(re15, '');
+ }
+ for (var i = 0; i < 34; i++) {
+ re19.exec('gno2');
+ re19.exec('gno3');
+ re8.exec('44132r503660');
+ re8.exec('SbeprqRkcvengvba=633669316860113296');
+ re8.exec('AFP_zp_dfctwzs-aowb_80=44132r503660');
+ re8.exec('FrffvbaQQS2=s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696');
+ re8.exec('s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696');
+ }
+ for (var i = 0; i < 32; i++) {
+ /puebzr/i.exec(s15[i]);
+ }
+ for (var i = 0; i < 31; i++) {
+ s61[i].replace(re23, '');
+ re8.exec('SbeprqRkcvengvba=633669358527244818');
+ re8.exec('VC=66.249.85.130');
+ re8.exec('FrffvbaQQS2=s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58');
+ re8.exec('s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58');
+ re24.exec(s61[i]);
+ }
+ for (var i = 0; i < 30; i++) {
+ s65[i].replace(re6, '');
+ /(?:^|\s+)gvzrfgnzc(?:\s+|$)/.exec(s66[i]);
+ re7.exec(s65[i]);
+ }
+ for (var i = 0; i < 29; i++) {
+ s62[i].replace(re23, '');
+ }
+ for (var i = 0; i < 28; i++) {
+ s63[i].replace(re25, '');
+ s63[i].replace(re12, '');
+ re26.exec(s64[i]);
+ }
+ }
+ var re27 = /-\D/g;
+ var re28 = /\bnpgvingr\b/;
+ var re29 = /%2R/gi;
+ var re30 = /%2S/gi;
+ var re31 = /^(mu-(PA|GJ)|wn|xb)$/;
+ var re32 = /\s?;\s?/;
+ var re33 = /%\w?$/;
+ var re34 = /TNQP=([^;]*)/i;
+ var str10 = 'FrffvbaQQS2=111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669315660164980&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str11 = 'FrffvbaQQS2=111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904; __hgzm=144631658.1231363570.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.3426875219718084000.1231363570.1231363570.1231363570.1; __hgzo=144631658.0.10.1231363570; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669315660164980&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str12 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231363514065&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231363514065&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Subzr.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1326469221.1231363557&tn_fvq=1231363557&tn_uvq=1114636509&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str13 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669315660164980&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str14 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669315660164980&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var re35 = /[<>]/g;
+ var str15 = 'FrffvbaQQS2=s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669316860113296&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_dfctwzs-aowb_80=44132r503660';
+ var str16 = 'FrffvbaQQS2=s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696; AFP_zp_dfctwzs-aowb_80=44132r503660; __hgzm=144631658.1231363638.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.965867047679498800.1231363638.1231363638.1231363638.1; __hgzo=144631658.0.10.1231363638; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669316860113296&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str17 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231363621014&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231363621014&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Scebsvyr.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=348699119.1231363624&tn_fvq=1231363624&tn_uvq=895511034&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str18 = 'uggc://jjj.yrobapbva.se/yv';
+ var str19 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669316860113296&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str20 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669316860113296&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+
+ var s67 = computeInputVariants('e115', 27);
+ var s68 = computeInputVariants('qvfcynl', 27);
+ var s69 = computeInputVariants('cbfvgvba', 27);
+ var s70 = computeInputVariants('uggc://jjj.zlfcnpr.pbz/', 27);
+ var s71 = computeInputVariants('cntrivrj', 27);
+ var s72 = computeInputVariants('VC=74.125.75.3', 27);
+ var s73 = computeInputVariants('ra', 27);
+ var s74 = computeInputVariants(str10, 27);
+ var s75 = computeInputVariants(str11, 27);
+ var s76 = computeInputVariants(str12, 27);
+ var s77 = computeInputVariants(str17, 27);
+ var s78 = computeInputVariants(str18, 27);
+
+ function runBlock3() {
+ for (var i = 0; i < 27; i++) {
+ s67[i].replace(/[A-Za-z]/g, '');
+ }
+ for (var i = 0; i < 23; i++) {
+ s68[i].replace(re27, '');
+ s69[i].replace(re27, '');
+ }
+ for (var i = 0; i < 22; i++) {
+ 'unaqyr'.replace(re14, '');
+ 'unaqyr'.replace(re15, '');
+ 'yvar'.replace(re14, '');
+ 'yvar'.replace(re15, '');
+ 'cnerag puebzr6 fvatyr1 gno'.replace(re14, '');
+ 'cnerag puebzr6 fvatyr1 gno'.replace(re15, '');
+ 'fyvqre'.replace(re14, '');
+ 'fyvqre'.replace(re15, '');
+ re28.exec('');
+ }
+ for (var i = 0; i < 21; i++) {
+ s70[i].replace(re12, '');
+ re13.exec(s70[i]);
+ }
+ for (var i = 0; i < 20; i++) {
+ s71[i].replace(re29, '');
+ s71[i].replace(re30, '');
+ re19.exec('ynfg');
+ re19.exec('ba svefg');
+ re8.exec(s72[i]);
+ }
+ for (var i = 0; i < 19; i++) {
+ re31.exec(s73[i]);
+ }
+ for (var i = 0; i < 18; i++) {
+ s74[i].split(re32);
+ s75[i].split(re32);
+ s76[i].replace(re33, '');
+ re8.exec('144631658.0.10.1231363570');
+ re8.exec('144631658.1231363570.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.3426875219718084000.1231363570.1231363570.1231363570.1');
+ re8.exec(str13);
+ re8.exec(str14);
+ re8.exec('__hgzn=144631658.3426875219718084000.1231363570.1231363570.1231363570.1');
+ re8.exec('__hgzo=144631658.0.10.1231363570');
+ re8.exec('__hgzm=144631658.1231363570.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(s74[i]);
+ re34.exec(s75[i]);
+ }
+ for (var i = 0; i < 17; i++) {
+ s15[i].match(/zfvr/gi);
+ s15[i].match(/bcren/gi);
+ str15.split(re32);
+ str16.split(re32);
+ 'ohggba'.replace(re14, '');
+ 'ohggba'.replace(re15, '');
+ 'puvyq p1 svefg sylbhg pybfrq'.replace(re14, '');
+ 'puvyq p1 svefg sylbhg pybfrq'.replace(re15, '');
+ 'pvgvrf'.replace(re14, '');
+ 'pvgvrf'.replace(re15, '');
+ 'pybfrq'.replace(re14, '');
+ 'pybfrq'.replace(re15, '');
+ 'qry'.replace(re14, '');
+ 'qry'.replace(re15, '');
+ 'uqy_zba'.replace(re14, '');
+ 'uqy_zba'.replace(re15, '');
+ s77[i].replace(re33, '');
+ s78[i].replace(/%3P/g, '');
+ s78[i].replace(/%3R/g, '');
+ s78[i].replace(/%3q/g, '');
+ s78[i].replace(re35, '');
+ 'yvaxyvfg16'.replace(re14, '');
+ 'yvaxyvfg16'.replace(re15, '');
+ 'zvahf'.replace(re14, '');
+ 'zvahf'.replace(re15, '');
+ 'bcra'.replace(re14, '');
+ 'bcra'.replace(re15, '');
+ 'cnerag puebzr5 fvatyr1 ps NU'.replace(re14, '');
+ 'cnerag puebzr5 fvatyr1 ps NU'.replace(re15, '');
+ 'cynlre'.replace(re14, '');
+ 'cynlre'.replace(re15, '');
+ 'cyhf'.replace(re14, '');
+ 'cyhf'.replace(re15, '');
+ 'cb_uqy'.replace(re14, '');
+ 'cb_uqy'.replace(re15, '');
+ 'hyJVzt'.replace(re14, '');
+ 'hyJVzt'.replace(re15, '');
+ re8.exec('144631658.0.10.1231363638');
+ re8.exec('144631658.1231363638.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.965867047679498800.1231363638.1231363638.1231363638.1');
+ re8.exec('4413268q3660');
+ re8.exec('4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n');
+ re8.exec('SbeprqRkcvengvba=633669321699093060');
+ re8.exec('VC=74.125.75.20');
+ re8.exec(str19);
+ re8.exec(str20);
+ re8.exec('AFP_zp_tfwsbrg-aowb_80=4413268q3660');
+ re8.exec('FrffvbaQQS2=4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n');
+ re8.exec('__hgzn=144631658.965867047679498800.1231363638.1231363638.1231363638.1');
+ re8.exec('__hgzo=144631658.0.10.1231363638');
+ re8.exec('__hgzm=144631658.1231363638.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(str15);
+ re34.exec(str16);
+ }
+ }
+ var re36 = /uers|fep|fryrpgrq/;
+ var re37 = /\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g;
+ var re38 = /^(\w+|\*)$/;
+ var str21 = 'FrffvbaQQS2=s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58; ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669358527244818&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str22 = 'FrffvbaQQS2=s15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58; __hgzm=144631658.1231367822.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.4127520630321984500.1231367822.1231367822.1231367822.1; __hgzo=144631658.0.10.1231367822; __hgzp=144631658; ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669358527244818&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str23 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231367803797&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231367803797&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Szrffntvat.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1192552091.1231367807&tn_fvq=1231367807&tn_uvq=1155446857&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str24 = 'ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669358527244818&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str25 = 'ZFPhygher=VC=66.249.85.130&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669358527244818&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str26 = 'hy.ynat-fryrpgbe';
+ var re39 = /\\/g;
+ var re40 = / /g;
+ var re41 = /\/\xc4\/t/;
+ var re42 = /\/\xd6\/t/;
+ var re43 = /\/\xdc\/t/;
+ var re44 = /\/\xdf\/t/;
+ var re45 = /\/\xe4\/t/;
+ var re46 = /\/\xf6\/t/;
+ var re47 = /\/\xfc\/t/;
+ var re48 = /\W/g;
+ var re49 = /uers|fep|fglyr/;
+ var s79 = computeInputVariants(str21, 16);
+ var s80 = computeInputVariants(str22, 16);
+ var s81 = computeInputVariants(str23, 16);
+ var s82 = computeInputVariants(str26, 16);
+
+ function runBlock4() {
+ for (var i = 0; i < 16; i++) {
+ ''.replace(/\*/g, '');
+ /\bnpgvir\b/.exec('npgvir');
+ /sversbk/i.exec(s15[i]);
+ re36.exec('glcr');
+ /zfvr/i.exec(s15[i]);
+ /bcren/i.exec(s15[i]);
+ }
+ for (var i = 0; i < 15; i++) {
+ s79[i].split(re32);
+ s80[i].split(re32);
+ 'uggc://ohyyrgvaf.zlfcnpr.pbz/vaqrk.psz'.replace(re12, '');
+ s81[i].replace(re33, '');
+ 'yv'.replace(re37, '');
+ 'yv'.replace(re18, '');
+ re8.exec('144631658.0.10.1231367822');
+ re8.exec('144631658.1231367822.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.4127520630321984500.1231367822.1231367822.1231367822.1');
+ re8.exec(str24);
+ re8.exec(str25);
+ re8.exec('__hgzn=144631658.4127520630321984500.1231367822.1231367822.1231367822.1');
+ re8.exec('__hgzo=144631658.0.10.1231367822');
+ re8.exec('__hgzm=144631658.1231367822.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(s79[i]);
+ re34.exec(s80[i]);
+ /\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)["']?(.*?)["']?)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g.exec(s82[i]);
+ re13.exec('uggc://ohyyrgvaf.zlfcnpr.pbz/vaqrk.psz');
+ re38.exec('yv');
+ }
+ for (var i = 0; i < 14; i++) {
+ ''.replace(re18, '');
+ '9.0 e115'.replace(/(\s+e|\s+o[0-9]+)/, '');
+ 'Funer guvf tnqtrg'.replace(/</g, '');
+ 'Funer guvf tnqtrg'.replace(/>/g, '');
+ 'Funer guvf tnqtrg'.replace(re39, '');
+ 'uggc://cebsvyrrqvg.zlfcnpr.pbz/vaqrk.psz'.replace(re12, '');
+ 'grnfre'.replace(re40, '');
+ 'grnfre'.replace(re41, '');
+ 'grnfre'.replace(re42, '');
+ 'grnfre'.replace(re43, '');
+ 'grnfre'.replace(re44, '');
+ 'grnfre'.replace(re45, '');
+ 'grnfre'.replace(re46, '');
+ 'grnfre'.replace(re47, '');
+ 'grnfre'.replace(re48, '');
+ re16.exec('znetva-gbc');
+ re16.exec('cbfvgvba');
+ re19.exec('gno1');
+ re9.exec('qz');
+ re9.exec('qg');
+ re9.exec('zbqobk');
+ re9.exec('zbqobkva');
+ re9.exec('zbqgvgyr');
+ re13.exec('uggc://cebsvyrrqvg.zlfcnpr.pbz/vaqrk.psz');
+ re26.exec('/vt/znvytnqtrg');
+ re49.exec('glcr');
+ }
+ }
+ var re50 = /(?:^|\s+)fryrpgrq(?:\s+|$)/;
+ var re51 = /\&/g;
+ var re52 = /\+/g;
+ var re53 = /\?/g;
+ var re54 = /\t/g;
+ var re55 = /(\$\{nqiHey\})|(\$nqiHey\b)/g;
+ var re56 = /(\$\{cngu\})|(\$cngu\b)/g;
+ function runBlock5() {
+ for (var i = 0; i < 13; i++) {
+ 'purpx'.replace(re14, '');
+ 'purpx'.replace(re15, '');
+ 'pvgl'.replace(re14, '');
+ 'pvgl'.replace(re15, '');
+ 'qrpe fyvqrgrkg'.replace(re14, '');
+ 'qrpe fyvqrgrkg'.replace(re15, '');
+ 'svefg fryrpgrq'.replace(re14, '');
+ 'svefg fryrpgrq'.replace(re15, '');
+ 'uqy_rag'.replace(re14, '');
+ 'uqy_rag'.replace(re15, '');
+ 'vape fyvqrgrkg'.replace(re14, '');
+ 'vape fyvqrgrkg'.replace(re15, '');
+ 'vachggrkg QBZPbageby_cynprubyqre'.replace(re5, '');
+ 'cnerag puebzr6 fvatyr1 gno fryrpgrq'.replace(re14, '');
+ 'cnerag puebzr6 fvatyr1 gno fryrpgrq'.replace(re15, '');
+ 'cb_guz'.replace(re14, '');
+ 'cb_guz'.replace(re15, '');
+ 'fhozvg'.replace(re14, '');
+ 'fhozvg'.replace(re15, '');
+ re50.exec('');
+ /NccyrJroXvg\/([^\s]*)/.exec(s15[i]);
+ /XUGZY/.exec(s15[i]);
+ }
+ for (var i = 0; i < 12; i++) {
+ '${cebg}://${ubfg}${cngu}/${dz}'.replace(/(\$\{cebg\})|(\$cebg\b)/g, '');
+ '1'.replace(re40, '');
+ '1'.replace(re10, '');
+ '1'.replace(re51, '');
+ '1'.replace(re52, '');
+ '1'.replace(re53, '');
+ '1'.replace(re39, '');
+ '1'.replace(re54, '');
+ '9.0 e115'.replace(/^(.*)\..*$/, '');
+ '9.0 e115'.replace(/^.*e(.*)$/, '');
+ '<!-- ${nqiHey} -->'.replace(re55, '');
+ '<fpevcg glcr="grkg/wninfpevcg" fep="${nqiHey}"></fpevcg>'.replace(re55, '');
+ s21[i].replace(/^.*\s+(\S+\s+\S+$)/, '');
+ 'tzk%2Subzrcntr%2Sfgneg%2Sqr%2S'.replace(re30, '');
+ 'tzk'.replace(re30, '');
+ 'uggc://${ubfg}${cngu}/${dz}'.replace(/(\$\{ubfg\})|(\$ubfg\b)/g, '');
+ 'uggc://nqpyvrag.hvzfrei.arg${cngu}/${dz}'.replace(re56, '');
+ 'uggc://nqpyvrag.hvzfrei.arg/wf.at/${dz}'.replace(/(\$\{dz\})|(\$dz\b)/g, '');
+ 'frpgvba'.replace(re29, '');
+ 'frpgvba'.replace(re30, '');
+ 'fvgr'.replace(re29, '');
+ 'fvgr'.replace(re30, '');
+ 'fcrpvny'.replace(re29, '');
+ 'fcrpvny'.replace(re30, '');
+ re36.exec('anzr');
+ /e/.exec('9.0 e115');
+ }
+ }
+ var re57 = /##yv4##/gi;
+ var re58 = /##yv16##/gi;
+ var re59 = /##yv19##/gi;
+ var str27 = '<hy pynff="nqi">##yv4##Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.##yv19##Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.##yv16##Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+ var str28 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.##yv19##Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.##yv16##Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+ var str29 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.##yv19##Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+ var str30 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.<yv vq="YvOYG19" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg19.cat)">Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.##OE## ##OE## ##N##Yrnea zber##/N##</hy>';
+ var str31 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.<yv vq="YvOYG19" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg19.cat)">Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.<oe> <oe> ##N##Yrnea zber##/N##</hy>';
+ var str32 = '<hy pynff="nqi"><yv vq="YvOYG4" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg4.cat)">Cbjreshy Zvpebfbsg grpuabybtl urycf svtug fcnz naq vzcebir frphevgl.<yv vq="YvOYG19" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg19.cat)">Trg zber qbar gunaxf gb terngre rnfr naq fcrrq.<yv vq="YvOYG16" fglyr="onpxtebhaq-vzntr:hey(uggc://vzt.jykef.pbz/~Yvir.FvgrPbagrag.VQ/~14.2.1230/~/~/~/oyg16.cat)">Ybgf bs fgbentr &#40;5 TO&#41; - zber pbby fghss ba gur jnl.<oe> <oe> <n uers="uggc://znvy.yvir.pbz/znvy/nobhg.nfck" gnetrg="_oynax">Yrnea zber##/N##</hy>';
+ var str33 = 'Bar Jvaqbjf Yvir VQ trgf lbh vagb <o>Ubgznvy</o>, <o>Zrffratre</o>, <o>Kobk YVIR</o> \u2014 naq bgure cynprf lbh frr #~#argjbexybtb#~#';
+ var re60 = /(?:^|\s+)bss(?:\s+|$)/;
+ var re61 = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/;
+ var re62 = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;
+ var str34 = '${1}://${2}${3}${4}${5}';
+ var str35 = ' O=6gnyg0g4znrrn&o=3&f=gc; Q=_lyu=K3bQZGSxnT4lZzD3OS9GNmV3ZGLkAQxRpTyxNmRlZmRmAmNkAQLRqTImqNZjOUEgpTjQnJ5xMKtgoN--; SCF=qy';
+ var s83 = computeInputVariants(str27, 11);
+ var s84 = computeInputVariants(str28, 11);
+ var s85 = computeInputVariants(str29, 11);
+ var s86 = computeInputVariants(str30, 11);
+ var s87 = computeInputVariants(str31, 11);
+ var s88 = computeInputVariants(str32, 11);
+ var s89 = computeInputVariants(str33, 11);
+ var s90 = computeInputVariants(str34, 11);
+
+ function runBlock6() {
+ for (var i = 0; i < 11; i++) {
+ s83[i].replace(/##yv0##/gi, '');
+ s83[i].replace(re57, '');
+ s84[i].replace(re58, '');
+ s85[i].replace(re59, '');
+ s86[i].replace(/##\/o##/gi, '');
+ s86[i].replace(/##\/v##/gi, '');
+ s86[i].replace(/##\/h##/gi, '');
+ s86[i].replace(/##o##/gi, '');
+ s86[i].replace(/##oe##/gi, '');
+ s86[i].replace(/##v##/gi, '');
+ s86[i].replace(/##h##/gi, '');
+ s87[i].replace(/##n##/gi, '');
+ s88[i].replace(/##\/n##/gi, '');
+ s89[i].replace(/#~#argjbexybtb#~#/g, '');
+ / Zbovyr\//.exec(s15[i]);
+ /##yv1##/gi.exec(s83[i]);
+ /##yv10##/gi.exec(s84[i]);
+ /##yv11##/gi.exec(s84[i]);
+ /##yv12##/gi.exec(s84[i]);
+ /##yv13##/gi.exec(s84[i]);
+ /##yv14##/gi.exec(s84[i]);
+ /##yv15##/gi.exec(s84[i]);
+ re58.exec(s84[i]);
+ /##yv17##/gi.exec(s85[i]);
+ /##yv18##/gi.exec(s85[i]);
+ re59.exec(s85[i]);
+ /##yv2##/gi.exec(s83[i]);
+ /##yv20##/gi.exec(s86[i]);
+ /##yv21##/gi.exec(s86[i]);
+ /##yv22##/gi.exec(s86[i]);
+ /##yv23##/gi.exec(s86[i]);
+ /##yv3##/gi.exec(s83[i]);
+ re57.exec(s83[i]);
+ /##yv5##/gi.exec(s84[i]);
+ /##yv6##/gi.exec(s84[i]);
+ /##yv7##/gi.exec(s84[i]);
+ /##yv8##/gi.exec(s84[i]);
+ /##yv9##/gi.exec(s84[i]);
+ re8.exec('473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29');
+ re8.exec('SbeprqRkcvengvba=633669325184628362');
+ re8.exec('FrffvbaQQS2=473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29');
+ /AbxvnA[^\/]*/.exec(s15[i]);
+ }
+ for (var i = 0; i < 10; i++) {
+ ' bss'.replace(/(?:^|\s+)bss(?:\s+|$)/g, '');
+ s90[i].replace(/(\$\{0\})|(\$0\b)/g, '');
+ s90[i].replace(/(\$\{1\})|(\$1\b)/g, '');
+ s90[i].replace(/(\$\{pbzcyrgr\})|(\$pbzcyrgr\b)/g, '');
+ s90[i].replace(/(\$\{sentzrag\})|(\$sentzrag\b)/g, '');
+ s90[i].replace(/(\$\{ubfgcbeg\})|(\$ubfgcbeg\b)/g, '');
+ s90[i].replace(re56, '');
+ s90[i].replace(/(\$\{cebgbpby\})|(\$cebgbpby\b)/g, '');
+ s90[i].replace(/(\$\{dhrel\})|(\$dhrel\b)/g, '');
+ 'nqfvmr'.replace(re29, '');
+ 'nqfvmr'.replace(re30, '');
+ 'uggc://${2}${3}${4}${5}'.replace(/(\$\{2\})|(\$2\b)/g, '');
+ 'uggc://wf.hv-cbegny.qr${3}${4}${5}'.replace(/(\$\{3\})|(\$3\b)/g, '');
+ 'arjf'.replace(re40, '');
+ 'arjf'.replace(re41, '');
+ 'arjf'.replace(re42, '');
+ 'arjf'.replace(re43, '');
+ 'arjf'.replace(re44, '');
+ 'arjf'.replace(re45, '');
+ 'arjf'.replace(re46, '');
+ 'arjf'.replace(re47, '');
+ 'arjf'.replace(re48, '');
+ / PC=i=(\d+)&oe=(.)/.exec(str35);
+ re60.exec(' ');
+ re60.exec(' bss');
+ re60.exec('');
+ re19.exec(' ');
+ re19.exec('svefg ba');
+ re19.exec('ynfg vtaber');
+ re19.exec('ba');
+ re9.exec('scnq so ');
+ re9.exec('zrqvgobk');
+ re9.exec('hsgy');
+ re9.exec('lhv-h');
+ /Fnsnev|Xbadhrebe|XUGZY/gi.exec(s15[i]);
+ re61.exec('uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf');
+ re62.exec('#Ybtva_rznvy');
+ }
+ }
+ var re63 = /\{0\}/g;
+ var str36 = 'FrffvbaQQS2=4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n; ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669321699093060&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_tfwsbrg-aowb_80=4413268q3660';
+ var str37 = 'FrffvbaQQS2=4ss747o77904333q374or84qrr1s9r0nprp8r5q81534o94n; AFP_zp_tfwsbrg-aowb_80=4413268q3660; __hgzm=144631658.1231364074.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.2294274870215848400.1231364074.1231364074.1231364074.1; __hgzo=144631658.0.10.1231364074; __hgzp=144631658; ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669321699093060&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str38 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231364057761&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231364057761&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Ssevraqf.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1667363813.1231364061&tn_fvq=1231364061&tn_uvq=1917563877&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str39 = 'ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669321699093060&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str40 = 'ZFPhygher=VC=74.125.75.20&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669321699093060&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var s91 = computeInputVariants(str36, 9);
+ var s92 = computeInputVariants(str37, 9);
+ var s93 = computeInputVariants(str38, 9);
+ function runBlock7() {
+ for (var i = 0; i < 9; i++) {
+ '0'.replace(re40, '');
+ '0'.replace(re10, '');
+ '0'.replace(re51, '');
+ '0'.replace(re52, '');
+ '0'.replace(re53, '');
+ '0'.replace(re39, '');
+ '0'.replace(re54, '');
+ 'Lrf'.replace(re40, '');
+ 'Lrf'.replace(re10, '');
+ 'Lrf'.replace(re51, '');
+ 'Lrf'.replace(re52, '');
+ 'Lrf'.replace(re53, '');
+ 'Lrf'.replace(re39, '');
+ 'Lrf'.replace(re54, '');
+ }
+ for (var i = 0; i < 8; i++) {
+ 'Pybfr {0}'.replace(re63, '');
+ 'Bcra {0}'.replace(re63, '');
+ s91[i].split(re32);
+ s92[i].split(re32);
+ 'puvyq p1 svefg gnournqref'.replace(re14, '');
+ 'puvyq p1 svefg gnournqref'.replace(re15, '');
+ 'uqy_fcb'.replace(re14, '');
+ 'uqy_fcb'.replace(re15, '');
+ 'uvag'.replace(re14, '');
+ 'uvag'.replace(re15, '');
+ s93[i].replace(re33, '');
+ 'yvfg'.replace(re14, '');
+ 'yvfg'.replace(re15, '');
+ 'at_bhgre'.replace(re30, '');
+ 'cnerag puebzr5 qbhoyr2 NU'.replace(re14, '');
+ 'cnerag puebzr5 qbhoyr2 NU'.replace(re15, '');
+ 'cnerag puebzr5 dhnq5 ps NU osyvax zbarl'.replace(re14, '');
+ 'cnerag puebzr5 dhnq5 ps NU osyvax zbarl'.replace(re15, '');
+ 'cnerag puebzr6 fvatyr1'.replace(re14, '');
+ 'cnerag puebzr6 fvatyr1'.replace(re15, '');
+ 'cb_qrs'.replace(re14, '');
+ 'cb_qrs'.replace(re15, '');
+ 'gnopbagrag'.replace(re14, '');
+ 'gnopbagrag'.replace(re15, '');
+ 'iv_svefg_gvzr'.replace(re30, '');
+ /(^|.)(ronl|qri-ehf3.wbg)(|fgberf|zbgbef|yvirnhpgvbaf|jvxv|rkcerff|punggre).(pbz(|.nh|.pa|.ux|.zl|.ft|.oe|.zk)|pb(.hx|.xe|.am)|pn|qr|se|vg|ay|or|ng|pu|vr|va|rf|cy|cu|fr)$/i.exec('cntrf.ronl.pbz');
+ re8.exec('144631658.0.10.1231364074');
+ re8.exec('144631658.1231364074.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.2294274870215848400.1231364074.1231364074.1231364074.1');
+ re8.exec('4413241q3660');
+ re8.exec('SbeprqRkcvengvba=633669357391353591');
+ re8.exec(str39);
+ re8.exec(str40);
+ re8.exec('AFP_zp_kkk-gdzogv_80=4413241q3660');
+ re8.exec('FrffvbaQQS2=p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7');
+ re8.exec('__hgzn=144631658.2294274870215848400.1231364074.1231364074.1231364074.1');
+ re8.exec('__hgzo=144631658.0.10.1231364074');
+ re8.exec('__hgzm=144631658.1231364074.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7');
+ re34.exec(s91[i]);
+ re34.exec(s92[i]);
+ }
+ }
+ var re64 = /\b[a-z]/g;
+ var re65 = /^uggc:\/\//;
+ var re66 = /(?:^|\s+)qvfnoyrq(?:\s+|$)/;
+ var str41 = 'uggc://cebsvyr.zlfcnpr.pbz/Zbqhyrf/Nccyvpngvbaf/Cntrf/Pnainf.nfck';
+ function runBlock8() {
+ for (var i = 0; i < 7; i++) {
+ s21[i].match(/\d+/g);
+ 'nsgre'.replace(re64, '');
+ 'orsber'.replace(re64, '');
+ 'obggbz'.replace(re64, '');
+ 'ohvygva_jrngure.kzy'.replace(re65, '');
+ 'ohggba'.replace(re37, '');
+ 'ohggba'.replace(re18, '');
+ 'qngrgvzr.kzy'.replace(re65, '');
+ 'uggc://eff.paa.pbz/eff/paa_gbcfgbevrf.eff'.replace(re65, '');
+ 'vachg'.replace(re37, '');
+ 'vachg'.replace(re18, '');
+ 'vafvqr'.replace(re64, '');
+ 'cbvagre'.replace(re27, '');
+ 'cbfvgvba'.replace(/[A-Z]/g, '');
+ 'gbc'.replace(re27, '');
+ 'gbc'.replace(re64, '');
+ 'hy'.replace(re37, '');
+ 'hy'.replace(re18, '');
+ str26.replace(re37, '');
+ str26.replace(re18, '');
+ 'lbhghor_vtbbtyr/i2/lbhghor.kzy'.replace(re65, '');
+ 'm-vaqrk'.replace(re27, '');
+ /#([\w-]+)/.exec(str26);
+ re16.exec('urvtug');
+ re16.exec('znetvaGbc');
+ re16.exec('jvqgu');
+ re19.exec('gno0 svefg ba');
+ re19.exec('gno0 ba');
+ re19.exec('gno4 ynfg');
+ re19.exec('gno4');
+ re19.exec('gno5');
+ re19.exec('gno6');
+ re19.exec('gno7');
+ re19.exec('gno8');
+ /NqborNVE\/([^\s]*)/.exec(s15[i]);
+ /NccyrJroXvg\/([^ ]*)/.exec(s15[i]);
+ /XUGZY/gi.exec(s15[i]);
+ /^(?:obql|ugzy)$/i.exec('YV');
+ re38.exec('ohggba');
+ re38.exec('vachg');
+ re38.exec('hy');
+ re38.exec(str26);
+ /^(\w+|\*)/.exec(str26);
+ /znp|jva|yvahk/i.exec('Jva32');
+ /eton?\([\d\s,]+\)/.exec('fgngvp');
+ }
+ for (var i = 0; i < 6; i++) {
+ ''.replace(/\r/g, '');
+ '/'.replace(re40, '');
+ '/'.replace(re10, '');
+ '/'.replace(re51, '');
+ '/'.replace(re52, '');
+ '/'.replace(re53, '');
+ '/'.replace(re39, '');
+ '/'.replace(re54, '');
+ 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/{0}?[NDO]&{1}&{2}&[NDR]'.replace(re63, '');
+ str41.replace(re12, '');
+ 'uggc://jjj.snprobbx.pbz/fepu.cuc'.replace(re23, '');
+ 'freivpr'.replace(re40, '');
+ 'freivpr'.replace(re41, '');
+ 'freivpr'.replace(re42, '');
+ 'freivpr'.replace(re43, '');
+ 'freivpr'.replace(re44, '');
+ 'freivpr'.replace(re45, '');
+ 'freivpr'.replace(re46, '');
+ 'freivpr'.replace(re47, '');
+ 'freivpr'.replace(re48, '');
+ /((ZFVR\s+([6-9]|\d\d)\.))/.exec(s15[i]);
+ re66.exec('');
+ re50.exec('fryrpgrq');
+ re8.exec('8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn');
+ re8.exec('SbeprqRkcvengvba=633669340386893867');
+ re8.exec('VC=74.125.75.17');
+ re8.exec('FrffvbaQQS2=8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn');
+ /Xbadhrebe|Fnsnev|XUGZY/.exec(s15[i]);
+ re13.exec(str41);
+ re49.exec('unfsbphf');
+ }
+ }
+ var re67 = /zrah_byq/g;
+ var str42 = 'FrffvbaQQS2=473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669325184628362&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str43 = 'FrffvbaQQS2=473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29; __hgzm=144631658.1231364380.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.3931862196947939300.1231364380.1231364380.1231364380.1; __hgzo=144631658.0.10.1231364380; __hgzp=144631658; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669325184628362&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str44 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_vzntrf_wf&qg=1231364373088&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231364373088&punaary=svz_zlfcnpr_hfre-ivrj-pbzzragf%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Spbzzrag.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1158737789.1231364375&tn_fvq=1231364375&tn_uvq=415520832&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str45 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669325184628362&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str46 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669325184628362&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var re68 = /^([#.]?)((?:[\w\u0128-\uffff*_-]|\\.)*)/;
+ var re69 = /\{1\}/g;
+ var re70 = /\s+/;
+ var re71 = /(\$\{4\})|(\$4\b)/g;
+ var re72 = /(\$\{5\})|(\$5\b)/g;
+ var re73 = /\{2\}/g;
+ var re74 = /[^+>] [^+>]/;
+ var re75 = /\bucpyv\s*=\s*([^;]*)/i;
+ var re76 = /\bucuvqr\s*=\s*([^;]*)/i;
+ var re77 = /\bucfie\s*=\s*([^;]*)/i;
+ var re78 = /\bhfucjrn\s*=\s*([^;]*)/i;
+ var re79 = /\bmvc\s*=\s*([^;]*)/i;
+ var re80 = /^((?:[\w\u0128-\uffff*_-]|\\.)+)(#)((?:[\w\u0128-\uffff*_-]|\\.)+)/;
+ var re81 = /^([>+~])\s*(\w*)/i;
+ var re82 = /^>\s*((?:[\w\u0128-\uffff*_-]|\\.)+)/;
+ var re83 = /^[\s[]?shapgvba/;
+ var re84 = /v\/g.tvs#(.*)/i;
+ var str47 = '#Zbq-Vasb-Vasb-WninFpevcgUvag';
+ var str48 = ',n.svryqOgaPnapry';
+ var str49 = 'FrffvbaQQS2=p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669357391353591&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_kkk-gdzogv_80=4413241q3660';
+ var str50 = 'FrffvbaQQS2=p98s8o9q42nr21or1r61pqorn1n002nsss569635984s6qp7; AFP_zp_kkk-gdzogv_80=4413241q3660; AFP_zp_kkk-aowb_80=4413235p3660; __hgzm=144631658.1231367708.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.2770915348920628700.1231367708.1231367708.1231367708.1; __hgzo=144631658.0.10.1231367708; __hgzp=144631658; ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669357391353591&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str51 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231367691141&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231367691141&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Sjjj.zlfcnpr.pbz%2S&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=320757904.1231367694&tn_fvq=1231367694&tn_uvq=1758792003&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str52 = 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55332979829981?[NDO]&aqu=1&g=7%2S0%2S2009%2014%3N38%3N42%203%20480&af=zfacbegny&cntrAnzr=HF%20UCZFSGJ&t=uggc%3N%2S%2Sjjj.zfa.pbz%2S&f=1024k768&p=24&x=L&oj=994&ou=634&uc=A&{2}&[NDR]';
+ var str53 = 'cnerag puebzr6 fvatyr1 gno fryrpgrq ovaq qbhoyr2 ps';
+ var str54 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669357391353591&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str55 = 'ZFPhygher=VC=74.125.75.3&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669357391353591&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str56 = 'ne;ng;nh;or;oe;pn;pu;py;pa;qr;qx;rf;sv;se;to;ux;vq;vr;va;vg;wc;xe;zk;zl;ay;ab;am;cu;cy;cg;eh;fr;ft;gu;ge;gj;mn;';
+ var str57 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886&GHVQ=1';
+ var str58 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886';
+ var str59 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886; mvc=m:94043|yn:37.4154|yb:-122.0585|p:HF|ue:1';
+ var str60 = 'ZP1=I=3&THVQ=6nnpr9q661804s33nnop45nosqp17q85; zu=ZFSG; PHYGHER=RA-HF; SyvtugTebhcVq=97; SyvtugVq=OnfrCntr; ucfie=Z:5|S:5|G:5|R:5|Q:oyh|J:S; ucpyv=J.U|Y.|F.|E.|H.Y|P.|U.; hfucjrn=jp:HFPN0746; ZHVQ=Q783SN9O14054831N4869R51P0SO8886; mvc=m:94043|yn:37.4154|yb:-122.0585|p:HF';
+ var str61 = 'uggc://gx2.fgp.f-zfa.pbz/oe/uc/11/ra-hf/pff/v/g.tvs#uggc://gx2.fgo.f-zfa.pbz/v/29/4RQP4969777N048NPS4RRR3PO2S7S.wct';
+ var str62 = 'uggc://gx2.fgp.f-zfa.pbz/oe/uc/11/ra-hf/pff/v/g.tvs#uggc://gx2.fgo.f-zfa.pbz/v/OQ/63NP9O94NS5OQP1249Q9S1ROP7NS3.wct';
+ var str63 = 'zbmvyyn/5.0 (jvaqbjf; h; jvaqbjf ag 5.1; ra-hf) nccyrjroxvg/528.9 (xugzy, yvxr trpxb) puebzr/2.0.157.0 fnsnev/528.9';
+ var s94 = computeInputVariants(str42, 5);
+ var s95 = computeInputVariants(str43, 5);
+ var s96 = computeInputVariants(str44, 5);
+ var s97 = computeInputVariants(str47, 5);
+ var s98 = computeInputVariants(str48, 5);
+ var s99 = computeInputVariants(str49, 5);
+ var s100 = computeInputVariants(str50, 5);
+ var s101 = computeInputVariants(str51, 5);
+ var s102 = computeInputVariants(str52, 5);
+ var s103 = computeInputVariants(str53, 5);
+
+ function runBlock9() {
+ for (var i = 0; i < 5; i++) {
+ s94[i].split(re32);
+ s95[i].split(re32);
+ 'svz_zlfcnpr_hfre-ivrj-pbzzragf,svz_zlfcnpr_havgrq-fgngrf'.split(re20);
+ s96[i].replace(re33, '');
+ 'zrah_arj zrah_arj_gbttyr zrah_gbttyr'.replace(re67, '');
+ 'zrah_byq zrah_byq_gbttyr zrah_gbttyr'.replace(re67, '');
+ re8.exec('102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98');
+ re8.exec('144631658.0.10.1231364380');
+ re8.exec('144631658.1231364380.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.3931862196947939300.1231364380.1231364380.1231364380.1');
+ re8.exec('441326q33660');
+ re8.exec('SbeprqRkcvengvba=633669341278771470');
+ re8.exec(str45);
+ re8.exec(str46);
+ re8.exec('AFP_zp_dfctwzssrwh-aowb_80=441326q33660');
+ re8.exec('FrffvbaQQS2=102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98');
+ re8.exec('__hgzn=144631658.3931862196947939300.1231364380.1231364380.1231364380.1');
+ re8.exec('__hgzo=144631658.0.10.1231364380');
+ re8.exec('__hgzm=144631658.1231364380.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ }
+ for (var i = 0; i < 4; i++) {
+ ' yvfg1'.replace(re14, '');
+ ' yvfg1'.replace(re15, '');
+ ' yvfg2'.replace(re14, '');
+ ' yvfg2'.replace(re15, '');
+ ' frneputebhc1'.replace(re14, '');
+ ' frneputebhc1'.replace(re15, '');
+ s97[i].replace(re68, '');
+ s97[i].replace(re18, '');
+ ''.replace(/&/g, '');
+ ''.replace(re35, '');
+ '(..-{0})(\|(\d+)|)'.replace(re63, '');
+ s98[i].replace(re18, '');
+ '//vzt.jro.qr/vij/FC/${cngu}/${anzr}/${inyhr}?gf=${abj}'.replace(re56, '');
+ '//vzt.jro.qr/vij/FC/tzk_uc/${anzr}/${inyhr}?gf=${abj}'.replace(/(\$\{anzr\})|(\$anzr\b)/g, '');
+ '<fcna pynff="urnq"><o>Jvaqbjf Yvir Ubgznvy</o></fcna><fcna pynff="zft">{1}</fcna>'.replace(re69, '');
+ '<fcna pynff="urnq"><o>{0}</o></fcna><fcna pynff="zft">{1}</fcna>'.replace(re63, '');
+ '<fcna pynff="fvtahc"><n uers=uggc://jjj.ubgznvy.pbz><o>{1}</o></n></fcna>'.replace(re69, '');
+ '<fcna pynff="fvtahc"><n uers={0}><o>{1}</o></n></fcna>'.replace(re63, '');
+ 'Vzntrf'.replace(re15, '');
+ 'ZFA'.replace(re15, '');
+ 'Zncf'.replace(re15, '');
+ 'Zbq-Vasb-Vasb-WninFpevcgUvag'.replace(re39, '');
+ 'Arjf'.replace(re15, '');
+ s99[i].split(re32);
+ s100[i].split(re32);
+ 'Ivqrb'.replace(re15, '');
+ 'Jro'.replace(re15, '');
+ 'n'.replace(re39, '');
+ 'nwnkFgneg'.split(re70);
+ 'nwnkFgbc'.split(re70);
+ 'ovaq'.replace(re14, '');
+ 'ovaq'.replace(re15, '');
+ 'oevatf lbh zber. Zber fcnpr (5TO), zber frphevgl, fgvyy serr.'.replace(re63, '');
+ 'puvyq p1 svefg qrpx'.replace(re14, '');
+ 'puvyq p1 svefg qrpx'.replace(re15, '');
+ 'puvyq p1 svefg qbhoyr2'.replace(re14, '');
+ 'puvyq p1 svefg qbhoyr2'.replace(re15, '');
+ 'puvyq p2 ynfg'.replace(re14, '');
+ 'puvyq p2 ynfg'.replace(re15, '');
+ 'puvyq p2'.replace(re14, '');
+ 'puvyq p2'.replace(re15, '');
+ 'puvyq p3'.replace(re14, '');
+ 'puvyq p3'.replace(re15, '');
+ 'puvyq p4 ynfg'.replace(re14, '');
+ 'puvyq p4 ynfg'.replace(re15, '');
+ 'pbclevtug'.replace(re14, '');
+ 'pbclevtug'.replace(re15, '');
+ 'qZFAZR_1'.replace(re14, '');
+ 'qZFAZR_1'.replace(re15, '');
+ 'qbhoyr2 ps'.replace(re14, '');
+ 'qbhoyr2 ps'.replace(re15, '');
+ 'qbhoyr2'.replace(re14, '');
+ 'qbhoyr2'.replace(re15, '');
+ 'uqy_arj'.replace(re14, '');
+ 'uqy_arj'.replace(re15, '');
+ 'uc_fubccvatobk'.replace(re30, '');
+ 'ugzy%2Rvq'.replace(re29, '');
+ 'ugzy%2Rvq'.replace(re30, '');
+ s101[i].replace(re33, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/cebgbglcr.wf${4}${5}'.replace(re71, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/cebgbglcr.wf${5}'.replace(re72, '');
+ s102[i].replace(re73, '');
+ 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55332979829981?[NDO]&{1}&{2}&[NDR]'.replace(re69, '');
+ 'vztZFSG'.replace(re14, '');
+ 'vztZFSG'.replace(re15, '');
+ 'zfasbbg1 ps'.replace(re14, '');
+ 'zfasbbg1 ps'.replace(re15, '');
+ s103[i].replace(re14, '');
+ s103[i].replace(re15, '');
+ 'cnerag puebzr6 fvatyr1 gno fryrpgrq ovaq'.replace(re14, '');
+ 'cnerag puebzr6 fvatyr1 gno fryrpgrq ovaq'.replace(re15, '');
+ 'cevznel'.replace(re14, '');
+ 'cevznel'.replace(re15, '');
+ 'erpgnatyr'.replace(re30, '');
+ 'frpbaqnel'.replace(re14, '');
+ 'frpbaqnel'.replace(re15, '');
+ 'haybnq'.split(re70);
+ '{0}{1}1'.replace(re63, '');
+ '|{1}1'.replace(re69, '');
+ /(..-HF)(\|(\d+)|)/i.exec('xb-xe,ra-va,gu-gu');
+ re4.exec('/ZlFcnprNccf/NccPnainf,45000012');
+ re8.exec('144631658.0.10.1231367708');
+ re8.exec('144631658.1231367708.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.2770915348920628700.1231367708.1231367708.1231367708.1');
+ re8.exec('4413235p3660');
+ re8.exec('441327q73660');
+ re8.exec('9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473');
+ re8.exec('SbeprqRkcvengvba=633669350559478880');
+ re8.exec(str54);
+ re8.exec(str55);
+ re8.exec('AFP_zp_dfctwzs-aowb_80=441327q73660');
+ re8.exec('AFP_zp_kkk-aowb_80=4413235p3660');
+ re8.exec('FrffvbaQQS2=9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473');
+ re8.exec('__hgzn=144631658.2770915348920628700.1231367708.1231367708.1231367708.1');
+ re8.exec('__hgzo=144631658.0.10.1231367708');
+ re8.exec('__hgzm=144631658.1231367708.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(s99[i]);
+ re34.exec(s100[i]);
+ /ZFVR\s+5[.]01/.exec(s15[i]);
+ /HF(?=;)/i.exec(str56);
+ re74.exec(s97[i]);
+ re28.exec('svefg npgvir svefgNpgvir');
+ re28.exec('ynfg');
+ /\bp:(..)/i.exec('m:94043|yn:37.4154|yb:-122.0585|p:HF');
+ re75.exec(str57);
+ re75.exec(str58);
+ re76.exec(str57);
+ re76.exec(str58);
+ re77.exec(str57);
+ re77.exec(str58);
+ /\bhfucce\s*=\s*([^;]*)/i.exec(str59);
+ re78.exec(str57);
+ re78.exec(str58);
+ /\bjci\s*=\s*([^;]*)/i.exec(str59);
+ re79.exec(str58);
+ re79.exec(str60);
+ re79.exec(str59);
+ /\|p:([a-z]{2})/i.exec('m:94043|yn:37.4154|yb:-122.0585|p:HF|ue:1');
+ re80.exec(s97[i]);
+ re61.exec('cebgbglcr.wf');
+ re68.exec(s97[i]);
+ re81.exec(s97[i]);
+ re82.exec(s97[i]);
+ /^Fubpxjnir Synfu (\d)/.exec(s21[i]);
+ /^Fubpxjnir Synfu (\d+)/.exec(s21[i]);
+ re83.exec('[bowrpg tybony]');
+ re62.exec(s97[i]);
+ re84.exec(str61);
+ re84.exec(str62);
+ /jroxvg/.exec(str63);
+ }
+ }
+ var re85 = /eaq_zbqobkva/;
+ var str64 = '1231365729213';
+ var str65 = '74.125.75.3-1057165600.29978900';
+ var str66 = '74.125.75.3-1057165600.29978900.1231365730214';
+ var str67 = 'Frnepu%20Zvpebfbsg.pbz';
+ var str68 = 'FrffvbaQQS2=8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn; ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669340386893867&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str69 = 'FrffvbaQQS2=8sqq78r9n442851q565599o401385sp3s04r92rnn7o19ssn; __hgzm=144631658.1231365779.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.1877536177953918500.1231365779.1231365779.1231365779.1; __hgzo=144631658.0.10.1231365779; __hgzp=144631658; ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669340386893867&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str70 = 'I=3%26THVQ=757q3ss871q44o7o805n8113n5p72q52';
+ var str71 = 'I=3&THVQ=757q3ss871q44o7o805n8113n5p72q52';
+ var str72 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231365765292&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231365765292&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Sohyyrgvaf.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1579793869.1231365768&tn_fvq=1231365768&tn_uvq=2056210897&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str73 = 'frnepu.zvpebfbsg.pbz';
+ var str74 = 'frnepu.zvpebfbsg.pbz/';
+ var str75 = 'ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669340386893867&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str76 = 'ZFPhygher=VC=74.125.75.17&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669340386893867&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ function runBlock10() {
+ for (var i = 0; i < 3; i++) {
+ '%3Szxg=ra-HF'.replace(re39, '');
+ '-8'.replace(re40, '');
+ '-8'.replace(re10, '');
+ '-8'.replace(re51, '');
+ '-8'.replace(re52, '');
+ '-8'.replace(re53, '');
+ '-8'.replace(re39, '');
+ '-8'.replace(re54, '');
+ '1.5'.replace(re40, '');
+ '1.5'.replace(re10, '');
+ '1.5'.replace(re51, '');
+ '1.5'.replace(re52, '');
+ '1.5'.replace(re53, '');
+ '1.5'.replace(re39, '');
+ '1.5'.replace(re54, '');
+ '1024k768'.replace(re40, '');
+ '1024k768'.replace(re10, '');
+ '1024k768'.replace(re51, '');
+ '1024k768'.replace(re52, '');
+ '1024k768'.replace(re53, '');
+ '1024k768'.replace(re39, '');
+ '1024k768'.replace(re54, '');
+ str64.replace(re40, '');
+ str64.replace(re10, '');
+ str64.replace(re51, '');
+ str64.replace(re52, '');
+ str64.replace(re53, '');
+ str64.replace(re39, '');
+ str64.replace(re54, '');
+ '14'.replace(re40, '');
+ '14'.replace(re10, '');
+ '14'.replace(re51, '');
+ '14'.replace(re52, '');
+ '14'.replace(re53, '');
+ '14'.replace(re39, '');
+ '14'.replace(re54, '');
+ '24'.replace(re40, '');
+ '24'.replace(re10, '');
+ '24'.replace(re51, '');
+ '24'.replace(re52, '');
+ '24'.replace(re53, '');
+ '24'.replace(re39, '');
+ '24'.replace(re54, '');
+ str65.replace(re40, '');
+ str65.replace(re10, '');
+ str65.replace(re51, '');
+ str65.replace(re52, '');
+ str65.replace(re53, '');
+ str65.replace(re39, '');
+ str65.replace(re54, '');
+ str66.replace(re40, '');
+ str66.replace(re10, '');
+ str66.replace(re51, '');
+ str66.replace(re52, '');
+ str66.replace(re53, '');
+ str66.replace(re39, '');
+ str66.replace(re54, '');
+ '9.0'.replace(re40, '');
+ '9.0'.replace(re10, '');
+ '9.0'.replace(re51, '');
+ '9.0'.replace(re52, '');
+ '9.0'.replace(re53, '');
+ '9.0'.replace(re39, '');
+ '9.0'.replace(re54, '');
+ '994k634'.replace(re40, '');
+ '994k634'.replace(re10, '');
+ '994k634'.replace(re51, '');
+ '994k634'.replace(re52, '');
+ '994k634'.replace(re53, '');
+ '994k634'.replace(re39, '');
+ '994k634'.replace(re54, '');
+ '?zxg=ra-HF'.replace(re40, '');
+ '?zxg=ra-HF'.replace(re10, '');
+ '?zxg=ra-HF'.replace(re51, '');
+ '?zxg=ra-HF'.replace(re52, '');
+ '?zxg=ra-HF'.replace(re53, '');
+ '?zxg=ra-HF'.replace(re54, '');
+ 'PAA.pbz'.replace(re25, '');
+ 'PAA.pbz'.replace(re12, '');
+ 'PAA.pbz'.replace(re39, '');
+ 'Qngr & Gvzr'.replace(re25, '');
+ 'Qngr & Gvzr'.replace(re12, '');
+ 'Qngr & Gvzr'.replace(re39, '');
+ 'Frnepu Zvpebfbsg.pbz'.replace(re40, '');
+ 'Frnepu Zvpebfbsg.pbz'.replace(re54, '');
+ str67.replace(re10, '');
+ str67.replace(re51, '');
+ str67.replace(re52, '');
+ str67.replace(re53, '');
+ str67.replace(re39, '');
+ str68.split(re32);
+ str69.split(re32);
+ str70.replace(re52, '');
+ str70.replace(re53, '');
+ str70.replace(re39, '');
+ str71.replace(re40, '');
+ str71.replace(re10, '');
+ str71.replace(re51, '');
+ str71.replace(re54, '');
+ 'Jrngure'.replace(re25, '');
+ 'Jrngure'.replace(re12, '');
+ 'Jrngure'.replace(re39, '');
+ 'LbhGhor'.replace(re25, '');
+ 'LbhGhor'.replace(re12, '');
+ 'LbhGhor'.replace(re39, '');
+ str72.replace(re33, '');
+ 'erzbgr_vsenzr_1'.replace(/^erzbgr_vsenzr_/, '');
+ str73.replace(re40, '');
+ str73.replace(re10, '');
+ str73.replace(re51, '');
+ str73.replace(re52, '');
+ str73.replace(re53, '');
+ str73.replace(re39, '');
+ str73.replace(re54, '');
+ str74.replace(re40, '');
+ str74.replace(re10, '');
+ str74.replace(re51, '');
+ str74.replace(re52, '');
+ str74.replace(re53, '');
+ str74.replace(re39, '');
+ str74.replace(re54, '');
+ 'lhv-h'.replace(/\-/g, '');
+ re9.exec('p');
+ re9.exec('qz p');
+ re9.exec('zbqynory');
+ re9.exec('lhv-h svefg');
+ re8.exec('144631658.0.10.1231365779');
+ re8.exec('144631658.1231365779.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.1877536177953918500.1231365779.1231365779.1231365779.1');
+ re8.exec(str75);
+ re8.exec(str76);
+ re8.exec('__hgzn=144631658.1877536177953918500.1231365779.1231365779.1231365779.1');
+ re8.exec('__hgzo=144631658.0.10.1231365779');
+ re8.exec('__hgzm=144631658.1231365779.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(str68);
+ re34.exec(str69);
+ /^$/.exec('');
+ re31.exec('qr');
+ /^znk\d+$/.exec('');
+ /^zva\d+$/.exec('');
+ /^erfgber$/.exec('');
+ re85.exec('zbqobkva zbqobk_abcnqqvat ');
+ re85.exec('zbqgvgyr');
+ re85.exec('eaq_zbqobkva ');
+ re85.exec('eaq_zbqgvgyr ');
+ /frpgvba\d+_pbagragf/.exec('obggbz_ani');
+ }
+ }
+ var re86 = /;\s*/;
+ var re87 = /(\$\{inyhr\})|(\$inyhr\b)/g;
+ var re88 = /(\$\{abj\})|(\$abj\b)/g;
+ var re89 = /\s+$/;
+ var re90 = /^\s+/;
+ var re91 = /(\\\"|\x00-|\x1f|\x7f-|\x9f|\u00ad|\u0600-|\u0604|\u070f|\u17b4|\u17b5|\u200c-|\u200f|\u2028-|\u202f|\u2060-|\u206f|\ufeff|\ufff0-|\uffff)/g;
+ var re92 = /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/;
+ var re93 = /^([:.#]*)((?:[\w\u0128-\uffff*_-]|\\.)+)/;
+ var re94 = /^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/;
+ var str77 = '#fubhgobk .pybfr';
+ var str78 = 'FrffvbaQQS2=102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669341278771470&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_dfctwzssrwh-aowb_80=441326q33660';
+ var str79 = 'FrffvbaQQS2=102n9o0o9pq60132qn0337rr867p75953502q2s27s2s5r98; AFP_zp_dfctwzssrwh-aowb_80=441326q33660; __hgzm=144631658.1231365869.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.1670816052019209000.1231365869.1231365869.1231365869.1; __hgzo=144631658.0.10.1231365869; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669341278771470&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str80 = 'FrffvbaQQS2=9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669350559478880&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=; AFP_zp_dfctwzs-aowb_80=441327q73660';
+ var str81 = 'FrffvbaQQS2=9995p6rp12rrnr893334ro7nq70o7p64p69rqn844prs1473; AFP_zp_dfctwzs-aowb_80=441327q73660; __hgzm=144631658.1231367054.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar); __hgzn=144631658.1796080716621419500.1231367054.1231367054.1231367054.1; __hgzo=144631658.0.10.1231367054; __hgzp=144631658; ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669350559478880&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str82 = '[glcr=fhozvg]';
+ var str83 = 'n.svryqOga,n.svryqOgaPnapry';
+ var str84 = 'n.svryqOgaPnapry';
+ var str85 = 'oyvpxchaxg';
+ var str86 = 'qvi.bow-nppbeqvba qg';
+ var str87 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_nccf_wf&qg=1231367052227&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231367052227&punaary=svz_zlfcnpr_nccf-pnainf%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Scebsvyr.zlfcnpr.pbz%2SZbqhyrf%2SNccyvpngvbaf%2SCntrf%2SPnainf.nfck&nq_glcr=grkg&rvq=6083027&rn=0&sez=1&tn_ivq=716357910.1231367056&tn_fvq=1231367056&tn_uvq=1387206491&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str88 = 'uggc://tbbtyrnqf.t.qbhoyrpyvpx.arg/cntrnq/nqf?pyvrag=pn-svz_zlfcnpr_zlfcnpr-ubzrcntr_wf&qg=1231365851658&uy=ra&nqfnsr=uvtu&br=hgs8&ahz_nqf=4&bhgchg=wf&nqgrfg=bss&pbeeryngbe=1231365851658&punaary=svz_zlfcnpr_ubzrcntr_abgybttrqva%2Psvz_zlfcnpr_aba_HTP%2Psvz_zlfcnpr_havgrq-fgngrf&hey=uggc%3N%2S%2Scebsvyrrqvg.zlfcnpr.pbz%2Svaqrk.psz&nq_glcr=grkg&rvq=6083027&rn=0&sez=0&tn_ivq=1979828129.1231365855&tn_fvq=1231365855&tn_uvq=2085229649&synfu=9.0.115&h_u=768&h_j=1024&h_nu=738&h_nj=1024&h_pq=24&h_gm=-480&h_uvf=2&h_wnin=gehr&h_acyht=7&h_azvzr=22';
+ var str89 = 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55023338617756?[NDO]&aqu=1&g=7%2S0%2S2009%2014%3N12%3N47%203%20480&af=zfacbegny&cntrAnzr=HF%20UCZFSGJ&t=uggc%3N%2S%2Sjjj.zfa.pbz%2S&f=0k0&p=43835816&x=A&oj=994&ou=634&uc=A&{2}&[NDR]';
+ var str90 = 'zrgn[anzr=nwnkHey]';
+ var str91 = 'anpuevpugra';
+ var str92 = 'b oS={\'oT\':1.1};x $8n(B){z(B!=o9)};x $S(B){O(!$8n(B))z A;O(B.4L)z\'T\';b S=7t B;O(S==\'2P\'&&B.p4){23(B.7f){12 1:z\'T\';12 3:z/\S/.2g(B.8M)?\'ox\':\'oh\'}}O(S==\'2P\'||S==\'x\'){23(B.nE){12 2V:z\'1O\';12 7I:z\'5a\';12 18:z\'4B\'}O(7t B.I==\'4F\'){O(B.3u)z\'pG\';O(B.8e)z\'1p\'}}z S};x $2p(){b 4E={};Z(b v=0;v<1p.I;v++){Z(b X 1o 1p[v]){b nc=1p[v][X];b 6E=4E[X];O(6E&&$S(nc)==\'2P\'&&$S(6E)==\'2P\')4E[X]=$2p(6E,nc);17 4E[X]=nc}}z 4E};b $E=7p.E=x(){b 1d=1p;O(!1d[1])1d=[p,1d[0]];Z(b X 1o 1d[1])1d[0][X]=1d[1][X];z 1d[0]};b $4D=7p.pJ=x(){Z(b v=0,y=1p.I;v<y;v++){1p[v].E=x(1J){Z(b 1I 1o 1J){O(!p.1Y[1I])p.1Y[1I]=1J[1I];O(!p[1I])p[1I]=$4D.6C(1I)}}}};$4D.6C=x(1I){z x(L){z p.1Y[1I].3H(L,2V.1Y.nV.1F(1p,1))}};$4D(7F,2V,6J,nb);b 3l=x(B){B=B||{};B.E=$E;z B};b pK=Y 3l(H);b pZ=Y 3l(C);C.6f=C.35(\'6f\')[0];x $2O(B){z!!(B||B===0)};x $5S(B,n8){z $8n(B)?B:n8};x $7K(3c,1m){z 1q.na(1q.7K()*(1m-3c+1)+3c)};x $3N(){z Y 97().os()};x $4M(1U){pv(1U);pa(1U);z 1S};H.43=!!(C.5Z);O(H.nB)H.31=H[H.7q?\'py\':\'nL\']=1r;17 O(C.9N&&!C.om&&!oy.oZ)H.pF=H.4Z=H[H.43?\'pt\':\'65\']=1r;17 O(C.po!=1S)H.7J=1r;O(7t 5B==\'o9\'){b 5B=x(){};O(H.4Z)C.nd("pW");5B.1Y=(H.4Z)?H["[[oN.1Y]]"]:{}}5B.1Y.4L=1r;O(H.nL)5s{C.oX("pp",A,1r)}4K(r){};b 18=x(1X){b 63=x(){z(1p[0]!==1S&&p.1w&&$S(p.1w)==\'x\')?p.1w.3H(p,1p):p};$E(63,p);63.1Y=1X;63.nE=18;z 63};18.1z=x(){};18.1Y={E:x(1X){b 7x=Y p(1S);Z(b X 1o 1X){b nC=7x[X];7x[X]=18.nY(nC,1X[X])}z Y 18(7x)},3d:x(){Z(b v=0,y=1p.I;v<y;v++)$E(p.1Y,1p[v])}};18.nY=x(2b,2n){O(2b&&2b!=2n){b S=$S(2n);O(S!=$S(2b))z 2n;23(S){12\'x\':b 7R=x(){p.1e=1p.8e.1e;z 2n.3H(p,1p)};7R.1e=2b;z 7R;12\'2P\':z $2p(2b,2n)}}z 2n};b 8o=Y 18({oQ:x(J){p.4w=p.4w||[];p.4w.1x(J);z p},7g:x(){O(p.4w&&p.4w.I)p.4w.9J().2x(10,p)},oP:x(){p.4w=[]}});b 2d=Y 18({1V:x(S,J){O(J!=18.1z){p.$19=p.$19||{};p.$19[S]=p.$19[S]||[];p.$19[S].5j(J)}z p},1v:x(S,1d,2x){O(p.$19&&p.$19[S]){p.$19[S].1b(x(J){J.3n({\'L\':p,\'2x\':2x,\'1p\':1d})()},p)}z p},3M:x(S,J){O(p.$19&&p.$19[S])p.$19[S].2U(J);z p}});b 4v=Y 18({2H:x(){p.P=$2p.3H(1S,[p.P].E(1p));O(!p.1V)z p;Z(b 3O 1o p.P){O($S(p.P[3O]==\'x\')&&3O.2g(/^5P[N-M]/))p.1V(3O,p.P[3O])}z p}});2V.E({7y:x(J,L){Z(b v=0,w=p.I;v<w;v++)J.1F(L,p[v],v,p)},3s:x(J,L){b 54=[];Z(b v=0,w=p.I;v<w;v++){O(J.1F(L,p[v],v,p))54.1x(p[v])}z 54},2X:x(J,L){b 54=[];Z(b v=0,w=p.I;v<w;v++)54[v]=J.1F(L,p[v],v,p);z 54},4i:x(J,L){Z(b v=0,w=p.I;v<w;v++){O(!J.1F(L,p[v],v,p))z A}z 1r},ob:x(J,L){Z(b v=0,w=p.I;v<w;v++){O(J.1F(L,p[v],v,p))z 1r}z A},3F:x(3u,15){b 3A=p.I;Z(b v=(15<0)?1q.1m(0,3A+15):15||0;v<3A;v++){O(p[v]===3u)z v}z-1},8z:x(1u,I){1u=1u||0;O(1u<0)1u=p.I+1u;I=I||(p.I-1u);b 89=[];Z(b v=0;v<I;v++)89[v]=p[1u++];z 89},2U:x(3u){b v=0;b 3A=p.I;6L(v<3A){O(p[v]===3u){p.6l(v,1);3A--}17{v++}}z p},1y:x(3u,15){z p.3F(3u,15)!=-1},oz:x(1C){b B={},I=1q.3c(p.I,1C.I);Z(b v=0;v<I;v++)B[1C[v]]=p[v];z B},E:x(1O){Z(b v=0,w=1O.I;v<w;v++)p.1x(1O[v]);z p},2p:x(1O){Z(b v=0,y=1O.I;v<y;v++)p.5j(1O[v]);z p},5j:x(3u){O(!p.1y(3u))p.1x(3u);z p},oc:x(){z p[$7K(0,p.I-1)]||A},7L:x(){z p[p.I-1]||A}});2V.1Y.1b=2V.1Y.7y;2V.1Y.2g=2V.1Y.1y;x $N(1O){z 2V.8z(1O)};x $1b(3J,J,L){O(3J&&7t 3J.I==\'4F\'&&$S(3J)!=\'2P\')2V.7y(3J,J,L);17 Z(b 1j 1o 3J)J.1F(L||3J,3J[1j],1j)};6J.E({2g:x(6b,2F){z(($S(6b)==\'2R\')?Y 7I(6b,2F):6b).2g(p)},3p:x(){z 5K(p,10)},o4:x(){z 69(p)},7A:x(){z p.3y(/-\D/t,x(2G){z 2G.7G(1).nW()})},9b:x(){z p.3y(/\w[N-M]/t,x(2G){z(2G.7G(0)+\'-\'+2G.7G(1).5O())})},8V:x(){z p.3y(/\b[n-m]/t,x(2G){z 2G.nW()})},5L:x(){z p.3y(/^\s+|\s+$/t,\'\')},7j:x(){z p.3y(/\s{2,}/t,\' \').5L()},5V:x(1O){b 1i=p.2G(/\d{1,3}/t);z(1i)?1i.5V(1O):A},5U:x(1O){b 3P=p.2G(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);z(3P)?3P.nV(1).5U(1O):A},1y:x(2R,f){z(f)?(f+p+f).3F(f+2R+f)>-1:p.3F(2R)>-1},nX:x(){z p.3y(/([.*+?^${}()|[\]\/\\])/t,\'\\$1\')}});2V.E({5V:x(1O){O(p.I<3)z A;O(p.I==4&&p[3]==0&&!1O)z\'p5\';b 3P=[];Z(b v=0;v<3;v++){b 52=(p[v]-0).4h(16);3P.1x((52.I==1)?\'0\'+52:52)}z 1O?3P:\'#\'+3P.2u(\'\')},5U:x(1O){O(p.I!=3)z A;b 1i=[];Z(b v=0;v<3;v++){1i.1x(5K((p[v].I==1)?p[v]+p[v]:p[v],16))}z 1O?1i:\'1i(\'+1i.2u(\',\')+\')\'}});7F.E({3n:x(P){b J=p;P=$2p({\'L\':J,\'V\':A,\'1p\':1S,\'2x\':A,\'4s\':A,\'6W\':A},P);O($2O(P.1p)&&$S(P.1p)!=\'1O\')P.1p=[P.1p];z x(V){b 1d;O(P.V){V=V||H.V;1d=[(P.V===1r)?V:Y P.V(V)];O(P.1p)1d.E(P.1p)}17 1d=P.1p||1p;b 3C=x(){z J.3H($5S(P';
+ var str93 = 'hagreunyghat';
+ var str94 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669341278771470&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str95 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&Pbhagel=IIZ%3Q&SbeprqRkcvengvba=633669350559478880&gvzrMbar=-8&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R%3Q';
+ var str96 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669341278771470&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str97 = 'ZFPhygher=VC=74.125.75.1&VCPhygher=ra-HF&CersreerqPhygher=ra-HF&CersreerqPhygherCraqvat=&Pbhagel=IIZ=&SbeprqRkcvengvba=633669350559478880&gvzrMbar=0&HFEYBP=DKWyLHAiMTH9AwHjWxAcqUx9GJ91oaEunJ4tIzyyqlMQo3IhqUW5D29xMG1IHlMQo3IhqUW5GzSgMG1Iozy0MJDtH3EuqTImWxEgLHAiMTH9BQN3WxkuqTy0qJEyCGZ3YwDkBGVzGT9hM2y0qJEyCF0kZwVhZQH3APMDo3A0LJkQo2EyCGx0ZQDmWyWyM2yiox5uoJH9D0R=';
+ var str98 = 'shapgvba (){Cuk.Nccyvpngvba.Frghc.Pber();Cuk.Nccyvpngvba.Frghc.Nwnk();Cuk.Nccyvpngvba.Frghc.Synfu();Cuk.Nccyvpngvba.Frghc.Zbqhyrf()}';
+ function runBlock11() {
+ for (var i = 0; i < 2; i++) {
+ ' .pybfr'.replace(re18, '');
+ ' n.svryqOgaPnapry'.replace(re18, '');
+ ' qg'.replace(re18, '');
+ str77.replace(re68, '');
+ str77.replace(re18, '');
+ ''.replace(re39, '');
+ ''.replace(/^/, '');
+ ''.split(re86);
+ '*'.replace(re39, '');
+ '*'.replace(re68, '');
+ '*'.replace(re18, '');
+ '.pybfr'.replace(re68, '');
+ '.pybfr'.replace(re18, '');
+ '//vzt.jro.qr/vij/FC/tzk_uc/fperra/${inyhr}?gf=${abj}'.replace(re87, '');
+ '//vzt.jro.qr/vij/FC/tzk_uc/fperra/1024?gf=${abj}'.replace(re88, '');
+ '//vzt.jro.qr/vij/FC/tzk_uc/jvafvmr/${inyhr}?gf=${abj}'.replace(re87, '');
+ '//vzt.jro.qr/vij/FC/tzk_uc/jvafvmr/992/608?gf=${abj}'.replace(re88, '');
+ '300k120'.replace(re30, '');
+ '300k250'.replace(re30, '');
+ '310k120'.replace(re30, '');
+ '310k170'.replace(re30, '');
+ '310k250'.replace(re30, '');
+ '9.0 e115'.replace(/^.*\.(.*)\s.*$/, '');
+ 'Nppbeqvba'.replace(re2, '');
+ 'Nxghryy\x0a'.replace(re89, '');
+ 'Nxghryy\x0a'.replace(re90, '');
+ 'Nccyvpngvba'.replace(re2, '');
+ 'Oyvpxchaxg\x0a'.replace(re89, '');
+ 'Oyvpxchaxg\x0a'.replace(re90, '');
+ 'Svanamra\x0a'.replace(re89, '');
+ 'Svanamra\x0a'.replace(re90, '');
+ 'Tnzrf\x0a'.replace(re89, '');
+ 'Tnzrf\x0a'.replace(re90, '');
+ 'Ubebfxbc\x0a'.replace(re89, '');
+ 'Ubebfxbc\x0a'.replace(re90, '');
+ 'Xvab\x0a'.replace(re89, '');
+ 'Xvab\x0a'.replace(re90, '');
+ 'Zbqhyrf'.replace(re2, '');
+ 'Zhfvx\x0a'.replace(re89, '');
+ 'Zhfvx\x0a'.replace(re90, '');
+ 'Anpuevpugra\x0a'.replace(re89, '');
+ 'Anpuevpugra\x0a'.replace(re90, '');
+ 'Cuk'.replace(re2, '');
+ 'ErdhrfgSvavfu'.split(re70);
+ 'ErdhrfgSvavfu.NWNK.Cuk'.split(re70);
+ 'Ebhgr\x0a'.replace(re89, '');
+ 'Ebhgr\x0a'.replace(re90, '');
+ str78.split(re32);
+ str79.split(re32);
+ str80.split(re32);
+ str81.split(re32);
+ 'Fcbeg\x0a'.replace(re89, '');
+ 'Fcbeg\x0a'.replace(re90, '');
+ 'GI-Fcbg\x0a'.replace(re89, '');
+ 'GI-Fcbg\x0a'.replace(re90, '');
+ 'Gbhe\x0a'.replace(re89, '');
+ 'Gbhe\x0a'.replace(re90, '');
+ 'Hagreunyghat\x0a'.replace(re89, '');
+ 'Hagreunyghat\x0a'.replace(re90, '');
+ 'Ivqrb\x0a'.replace(re89, '');
+ 'Ivqrb\x0a'.replace(re90, '');
+ 'Jrggre\x0a'.replace(re89, '');
+ 'Jrggre\x0a'.replace(re90, '');
+ str82.replace(re68, '');
+ str82.replace(re18, '');
+ str83.replace(re68, '');
+ str83.replace(re18, '');
+ str84.replace(re68, '');
+ str84.replace(re18, '');
+ 'nqiFreivprObk'.replace(re30, '');
+ 'nqiFubccvatObk'.replace(re30, '');
+ 'nwnk'.replace(re39, '');
+ 'nxghryy'.replace(re40, '');
+ 'nxghryy'.replace(re41, '');
+ 'nxghryy'.replace(re42, '');
+ 'nxghryy'.replace(re43, '');
+ 'nxghryy'.replace(re44, '');
+ 'nxghryy'.replace(re45, '');
+ 'nxghryy'.replace(re46, '');
+ 'nxghryy'.replace(re47, '');
+ 'nxghryy'.replace(re48, '');
+ str85.replace(re40, '');
+ str85.replace(re41, '');
+ str85.replace(re42, '');
+ str85.replace(re43, '');
+ str85.replace(re44, '');
+ str85.replace(re45, '');
+ str85.replace(re46, '');
+ str85.replace(re47, '');
+ str85.replace(re48, '');
+ 'pngrtbel'.replace(re29, '');
+ 'pngrtbel'.replace(re30, '');
+ 'pybfr'.replace(re39, '');
+ 'qvi'.replace(re39, '');
+ str86.replace(re68, '');
+ str86.replace(re18, '');
+ 'qg'.replace(re39, '');
+ 'qg'.replace(re68, '');
+ 'qg'.replace(re18, '');
+ 'rzorq'.replace(re39, '');
+ 'rzorq'.replace(re68, '');
+ 'rzorq'.replace(re18, '');
+ 'svryqOga'.replace(re39, '');
+ 'svryqOgaPnapry'.replace(re39, '');
+ 'svz_zlfcnpr_nccf-pnainf,svz_zlfcnpr_havgrq-fgngrf'.split(re20);
+ 'svanamra'.replace(re40, '');
+ 'svanamra'.replace(re41, '');
+ 'svanamra'.replace(re42, '');
+ 'svanamra'.replace(re43, '');
+ 'svanamra'.replace(re44, '');
+ 'svanamra'.replace(re45, '');
+ 'svanamra'.replace(re46, '');
+ 'svanamra'.replace(re47, '');
+ 'svanamra'.replace(re48, '');
+ 'sbphf'.split(re70);
+ 'sbphf.gno sbphfva.gno'.split(re70);
+ 'sbphfva'.split(re70);
+ 'sbez'.replace(re39, '');
+ 'sbez.nwnk'.replace(re68, '');
+ 'sbez.nwnk'.replace(re18, '');
+ 'tnzrf'.replace(re40, '');
+ 'tnzrf'.replace(re41, '');
+ 'tnzrf'.replace(re42, '');
+ 'tnzrf'.replace(re43, '');
+ 'tnzrf'.replace(re44, '');
+ 'tnzrf'.replace(re45, '');
+ 'tnzrf'.replace(re46, '');
+ 'tnzrf'.replace(re47, '');
+ 'tnzrf'.replace(re48, '');
+ 'ubzrcntr'.replace(re30, '');
+ 'ubebfxbc'.replace(re40, '');
+ 'ubebfxbc'.replace(re41, '');
+ 'ubebfxbc'.replace(re42, '');
+ 'ubebfxbc'.replace(re43, '');
+ 'ubebfxbc'.replace(re44, '');
+ 'ubebfxbc'.replace(re45, '');
+ 'ubebfxbc'.replace(re46, '');
+ 'ubebfxbc'.replace(re47, '');
+ 'ubebfxbc'.replace(re48, '');
+ 'uc_cebzbobk_ugzy%2Puc_cebzbobk_vzt'.replace(re30, '');
+ 'uc_erpgnatyr'.replace(re30, '');
+ str87.replace(re33, '');
+ str88.replace(re33, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf${4}${5}'.replace(re71, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf${5}'.replace(re72, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/qlaYvo.wf${4}${5}'.replace(re71, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/qlaYvo.wf${5}'.replace(re72, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/rssrpgYvo.wf${4}${5}'.replace(re71, '');
+ 'uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/rssrpgYvo.wf${5}'.replace(re72, '');
+ str89.replace(re73, '');
+ 'uggc://zfacbegny.112.2b7.arg/o/ff/zfacbegnyubzr/1/U.7-cqi-2/f55023338617756?[NDO]&{1}&{2}&[NDR]'.replace(re69, '');
+ str6.replace(re23, '');
+ 'xvab'.replace(re40, '');
+ 'xvab'.replace(re41, '');
+ 'xvab'.replace(re42, '');
+ 'xvab'.replace(re43, '');
+ 'xvab'.replace(re44, '');
+ 'xvab'.replace(re45, '');
+ 'xvab'.replace(re46, '');
+ 'xvab'.replace(re47, '');
+ 'xvab'.replace(re48, '');
+ 'ybnq'.split(re70);
+ 'zrqvnzbqgno lhv-anifrg lhv-anifrg-gbc'.replace(re18, '');
+ 'zrgn'.replace(re39, '');
+ str90.replace(re68, '');
+ str90.replace(re18, '');
+ 'zbhfrzbir'.split(re70);
+ 'zbhfrzbir.gno'.split(re70);
+ str63.replace(/^.*jroxvg\/(\d+(\.\d+)?).*$/, '');
+ 'zhfvx'.replace(re40, '');
+ 'zhfvx'.replace(re41, '');
+ 'zhfvx'.replace(re42, '');
+ 'zhfvx'.replace(re43, '');
+ 'zhfvx'.replace(re44, '');
+ 'zhfvx'.replace(re45, '');
+ 'zhfvx'.replace(re46, '');
+ 'zhfvx'.replace(re47, '');
+ 'zhfvx'.replace(re48, '');
+ 'zlfcnpr_nccf_pnainf'.replace(re52, '');
+ str91.replace(re40, '');
+ str91.replace(re41, '');
+ str91.replace(re42, '');
+ str91.replace(re43, '');
+ str91.replace(re44, '');
+ str91.replace(re45, '');
+ str91.replace(re46, '');
+ str91.replace(re47, '');
+ str91.replace(re48, '');
+ 'anzr'.replace(re39, '');
+ str92.replace(/\b\w+\b/g, '');
+ 'bow-nppbeqvba'.replace(re39, '');
+ 'bowrpg'.replace(re39, '');
+ 'bowrpg'.replace(re68, '');
+ 'bowrpg'.replace(re18, '');
+ 'cnenzf%2Rfglyrf'.replace(re29, '');
+ 'cnenzf%2Rfglyrf'.replace(re30, '');
+ 'cbchc'.replace(re30, '');
+ 'ebhgr'.replace(re40, '');
+ 'ebhgr'.replace(re41, '');
+ 'ebhgr'.replace(re42, '');
+ 'ebhgr'.replace(re43, '');
+ 'ebhgr'.replace(re44, '');
+ 'ebhgr'.replace(re45, '');
+ 'ebhgr'.replace(re46, '');
+ 'ebhgr'.replace(re47, '');
+ 'ebhgr'.replace(re48, '');
+ 'freivprobk_uc'.replace(re30, '');
+ 'fubccvatobk_uc'.replace(re30, '');
+ 'fubhgobk'.replace(re39, '');
+ 'fcbeg'.replace(re40, '');
+ 'fcbeg'.replace(re41, '');
+ 'fcbeg'.replace(re42, '');
+ 'fcbeg'.replace(re43, '');
+ 'fcbeg'.replace(re44, '');
+ 'fcbeg'.replace(re45, '');
+ 'fcbeg'.replace(re46, '');
+ 'fcbeg'.replace(re47, '');
+ 'fcbeg'.replace(re48, '');
+ 'gbhe'.replace(re40, '');
+ 'gbhe'.replace(re41, '');
+ 'gbhe'.replace(re42, '');
+ 'gbhe'.replace(re43, '');
+ 'gbhe'.replace(re44, '');
+ 'gbhe'.replace(re45, '');
+ 'gbhe'.replace(re46, '');
+ 'gbhe'.replace(re47, '');
+ 'gbhe'.replace(re48, '');
+ 'gi-fcbg'.replace(re40, '');
+ 'gi-fcbg'.replace(re41, '');
+ 'gi-fcbg'.replace(re42, '');
+ 'gi-fcbg'.replace(re43, '');
+ 'gi-fcbg'.replace(re44, '');
+ 'gi-fcbg'.replace(re45, '');
+ 'gi-fcbg'.replace(re46, '');
+ 'gi-fcbg'.replace(re47, '');
+ 'gi-fcbg'.replace(re48, '');
+ 'glcr'.replace(re39, '');
+ 'haqrsvarq'.replace(/\//g, '');
+ str93.replace(re40, '');
+ str93.replace(re41, '');
+ str93.replace(re42, '');
+ str93.replace(re43, '');
+ str93.replace(re44, '');
+ str93.replace(re45, '');
+ str93.replace(re46, '');
+ str93.replace(re47, '');
+ str93.replace(re48, '');
+ 'ivqrb'.replace(re40, '');
+ 'ivqrb'.replace(re41, '');
+ 'ivqrb'.replace(re42, '');
+ 'ivqrb'.replace(re43, '');
+ 'ivqrb'.replace(re44, '');
+ 'ivqrb'.replace(re45, '');
+ 'ivqrb'.replace(re46, '');
+ 'ivqrb'.replace(re47, '');
+ 'ivqrb'.replace(re48, '');
+ 'ivfvgf=1'.split(re86);
+ 'jrggre'.replace(re40, '');
+ 'jrggre'.replace(re41, '');
+ 'jrggre'.replace(re42, '');
+ 'jrggre'.replace(re43, '');
+ 'jrggre'.replace(re44, '');
+ 'jrggre'.replace(re45, '');
+ 'jrggre'.replace(re46, '');
+ 'jrggre'.replace(re47, '');
+ 'jrggre'.replace(re48, '');
+ /#[a-z0-9]+$/i.exec('uggc://jjj.fpuhryreim.arg/Qrsnhyg');
+ re66.exec('fryrpgrq');
+ /(?:^|\s+)lhv-ani(?:\s+|$)/.exec('sff lhv-ani');
+ /(?:^|\s+)lhv-anifrg(?:\s+|$)/.exec('zrqvnzbqgno lhv-anifrg');
+ /(?:^|\s+)lhv-anifrg-gbc(?:\s+|$)/.exec('zrqvnzbqgno lhv-anifrg');
+ re91.exec('GnoThvq');
+ re91.exec('thvq');
+ /(pbzcngvoyr|jroxvg)/.exec(str63);
+ /.+(?:ei|vg|en|vr)[\/: ]([\d.]+)/.exec(str63);
+ re8.exec('144631658.0.10.1231365869');
+ re8.exec('144631658.0.10.1231367054');
+ re8.exec('144631658.1231365869.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.1231367054.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('144631658.1670816052019209000.1231365869.1231365869.1231365869.1');
+ re8.exec('144631658.1796080716621419500.1231367054.1231367054.1231367054.1');
+ re8.exec(str94);
+ re8.exec(str95);
+ re8.exec(str96);
+ re8.exec(str97);
+ re8.exec('__hgzn=144631658.1670816052019209000.1231365869.1231365869.1231365869.1');
+ re8.exec('__hgzn=144631658.1796080716621419500.1231367054.1231367054.1231367054.1');
+ re8.exec('__hgzo=144631658.0.10.1231365869');
+ re8.exec('__hgzo=144631658.0.10.1231367054');
+ re8.exec('__hgzm=144631658.1231365869.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re8.exec('__hgzm=144631658.1231367054.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)');
+ re34.exec(str78);
+ re34.exec(str79);
+ re34.exec(str81);
+ re74.exec(str77);
+ re74.exec('*');
+ re74.exec(str82);
+ re74.exec(str83);
+ re74.exec(str86);
+ re74.exec('rzorq');
+ re74.exec('sbez.nwnk');
+ re74.exec(str90);
+ re74.exec('bowrpg');
+ /\/onfr.wf(\?.+)?$/.exec('/uggc://wf.hv-cbegny.qr/tzk/ubzr/wf/20080602/onfr.wf');
+ re28.exec('uvag ynfgUvag ynfg');
+ re75.exec('');
+ re76.exec('');
+ re77.exec('');
+ re78.exec('');
+ re80.exec(str77);
+ re80.exec('*');
+ re80.exec('.pybfr');
+ re80.exec(str82);
+ re80.exec(str83);
+ re80.exec(str84);
+ re80.exec(str86);
+ re80.exec('qg');
+ re80.exec('rzorq');
+ re80.exec('sbez.nwnk');
+ re80.exec(str90);
+ re80.exec('bowrpg');
+ re61.exec('qlaYvo.wf');
+ re61.exec('rssrpgYvo.wf');
+ re61.exec('uggc://jjj.tzk.arg/qr/?fgnghf=uvajrvf');
+ re92.exec(' .pybfr');
+ re92.exec(' n.svryqOgaPnapry');
+ re92.exec(' qg');
+ re92.exec(str48);
+ re92.exec('.nwnk');
+ re92.exec('.svryqOga,n.svryqOgaPnapry');
+ re92.exec('.svryqOgaPnapry');
+ re92.exec('.bow-nppbeqvba qg');
+ re68.exec(str77);
+ re68.exec('*');
+ re68.exec('.pybfr');
+ re68.exec(str82);
+ re68.exec(str83);
+ re68.exec(str84);
+ re68.exec(str86);
+ re68.exec('qg');
+ re68.exec('rzorq');
+ re68.exec('sbez.nwnk');
+ re68.exec(str90);
+ re68.exec('bowrpg');
+ re93.exec(' .pybfr');
+ re93.exec(' n.svryqOgaPnapry');
+ re93.exec(' qg');
+ re93.exec(str48);
+ re93.exec('.nwnk');
+ re93.exec('.svryqOga,n.svryqOgaPnapry');
+ re93.exec('.svryqOgaPnapry');
+ re93.exec('.bow-nppbeqvba qg');
+ re81.exec(str77);
+ re81.exec('*');
+ re81.exec(str48);
+ re81.exec('.pybfr');
+ re81.exec(str82);
+ re81.exec(str83);
+ re81.exec(str84);
+ re81.exec(str86);
+ re81.exec('qg');
+ re81.exec('rzorq');
+ re81.exec('sbez.nwnk');
+ re81.exec(str90);
+ re81.exec('bowrpg');
+ re94.exec(' .pybfr');
+ re94.exec(' n.svryqOgaPnapry');
+ re94.exec(' qg');
+ re94.exec(str48);
+ re94.exec('.nwnk');
+ re94.exec('.svryqOga,n.svryqOgaPnapry');
+ re94.exec('.svryqOgaPnapry');
+ re94.exec('.bow-nppbeqvba qg');
+ re94.exec('[anzr=nwnkHey]');
+ re94.exec(str82);
+ re31.exec('rf');
+ re31.exec('wn');
+ re82.exec(str77);
+ re82.exec('*');
+ re82.exec(str48);
+ re82.exec('.pybfr');
+ re82.exec(str82);
+ re82.exec(str83);
+ re82.exec(str84);
+ re82.exec(str86);
+ re82.exec('qg');
+ re82.exec('rzorq');
+ re82.exec('sbez.nwnk');
+ re82.exec(str90);
+ re82.exec('bowrpg');
+ re83.exec(str98);
+ re83.exec('shapgvba sbphf() { [angvir pbqr] }');
+ re62.exec('#Ybtva');
+ re62.exec('#Ybtva_cnffjbeq');
+ re62.exec(str77);
+ re62.exec('#fubhgobkWf');
+ re62.exec('#fubhgobkWfReebe');
+ re62.exec('#fubhgobkWfFhpprff');
+ re62.exec('*');
+ re62.exec(str82);
+ re62.exec(str83);
+ re62.exec(str86);
+ re62.exec('rzorq');
+ re62.exec('sbez.nwnk');
+ re62.exec(str90);
+ re62.exec('bowrpg');
+ re49.exec('pbagrag');
+ re24.exec(str6);
+ /xbadhrebe/.exec(str63);
+ /znp/.exec('jva32');
+ /zbmvyyn/.exec(str63);
+ /zfvr/.exec(str63);
+ /ag\s5\.1/.exec(str63);
+ /bcren/.exec(str63);
+ /fnsnev/.exec(str63);
+ /jva/.exec('jva32');
+ /jvaqbjf/.exec(str63);
+ }
+ }
+
+ function run() {
+ for (var i = 0; i < 5; i++) {
+ runBlock0();
+ runBlock1();
+ runBlock2();
+ runBlock3();
+ runBlock4();
+ runBlock5();
+ runBlock6();
+ runBlock7();
+ runBlock8();
+ runBlock9();
+ runBlock10();
+ runBlock11();
+ }
+ }
+
+ this.run = run;
+}
diff --git a/tests/benchmarks/script/v8/tests/richards.js b/tests/benchmarks/script/v8/tests/richards.js
new file mode 100644
index 0000000000..054928db16
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/richards.js
@@ -0,0 +1,539 @@
+// Copyright 2006-2008 the V8 project authors. All rights reserved.
+// 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 Google Inc. 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.
+
+
+// This is a JavaScript implementation of the Richards
+// benchmark from:
+//
+// http://www.cl.cam.ac.uk/~mr10/Bench.html
+//
+// The benchmark was originally implemented in BCPL by
+// Martin Richards.
+
+
+var Richards = new BenchmarkSuite('Richards', 35302, [
+ new Benchmark("Richards", runRichards)
+]);
+
+
+/**
+ * The Richards benchmark simulates the task dispatcher of an
+ * operating system.
+ **/
+function runRichards() {
+ var scheduler = new Scheduler();
+ scheduler.addIdleTask(ID_IDLE, 0, null, COUNT);
+
+ var queue = new Packet(null, ID_WORKER, KIND_WORK);
+ queue = new Packet(queue, ID_WORKER, KIND_WORK);
+ scheduler.addWorkerTask(ID_WORKER, 1000, queue);
+
+ queue = new Packet(null, ID_DEVICE_A, KIND_DEVICE);
+ queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE);
+ queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE);
+ scheduler.addHandlerTask(ID_HANDLER_A, 2000, queue);
+
+ queue = new Packet(null, ID_DEVICE_B, KIND_DEVICE);
+ queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE);
+ queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE);
+ scheduler.addHandlerTask(ID_HANDLER_B, 3000, queue);
+
+ scheduler.addDeviceTask(ID_DEVICE_A, 4000, null);
+
+ scheduler.addDeviceTask(ID_DEVICE_B, 5000, null);
+
+ scheduler.schedule();
+
+ if (scheduler.queueCount != EXPECTED_QUEUE_COUNT ||
+ scheduler.holdCount != EXPECTED_HOLD_COUNT) {
+ var msg =
+ "Error during execution: queueCount = " + scheduler.queueCount +
+ ", holdCount = " + scheduler.holdCount + ".";
+ throw new Error(msg);
+ }
+}
+
+var COUNT = 1000;
+
+/**
+ * These two constants specify how many times a packet is queued and
+ * how many times a task is put on hold in a correct run of richards.
+ * They don't have any meaning a such but are characteristic of a
+ * correct run so if the actual queue or hold count is different from
+ * the expected there must be a bug in the implementation.
+ **/
+var EXPECTED_QUEUE_COUNT = 2322;
+var EXPECTED_HOLD_COUNT = 928;
+
+
+/**
+ * A scheduler can be used to schedule a set of tasks based on their relative
+ * priorities. Scheduling is done by maintaining a list of task control blocks
+ * which holds tasks and the data queue they are processing.
+ * @constructor
+ */
+function Scheduler() {
+ this.queueCount = 0;
+ this.holdCount = 0;
+ this.blocks = new Array(NUMBER_OF_IDS);
+ this.list = null;
+ this.currentTcb = null;
+ this.currentId = null;
+}
+
+var ID_IDLE = 0;
+var ID_WORKER = 1;
+var ID_HANDLER_A = 2;
+var ID_HANDLER_B = 3;
+var ID_DEVICE_A = 4;
+var ID_DEVICE_B = 5;
+var NUMBER_OF_IDS = 6;
+
+var KIND_DEVICE = 0;
+var KIND_WORK = 1;
+
+/**
+ * Add an idle task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ * @param {int} count the number of times to schedule the task
+ */
+Scheduler.prototype.addIdleTask = function (id, priority, queue, count) {
+ this.addRunningTask(id, priority, queue, new IdleTask(this, 1, count));
+};
+
+/**
+ * Add a work task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ */
+Scheduler.prototype.addWorkerTask = function (id, priority, queue) {
+ this.addTask(id, priority, queue, new WorkerTask(this, ID_HANDLER_A, 0));
+};
+
+/**
+ * Add a handler task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ */
+Scheduler.prototype.addHandlerTask = function (id, priority, queue) {
+ this.addTask(id, priority, queue, new HandlerTask(this));
+};
+
+/**
+ * Add a handler task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ */
+Scheduler.prototype.addDeviceTask = function (id, priority, queue) {
+ this.addTask(id, priority, queue, new DeviceTask(this))
+};
+
+/**
+ * Add the specified task and mark it as running.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ * @param {Task} task the task to add
+ */
+Scheduler.prototype.addRunningTask = function (id, priority, queue, task) {
+ this.addTask(id, priority, queue, task);
+ this.currentTcb.setRunning();
+};
+
+/**
+ * Add the specified task to this scheduler.
+ * @param {int} id the identity of the task
+ * @param {int} priority the task's priority
+ * @param {Packet} queue the queue of work to be processed by the task
+ * @param {Task} task the task to add
+ */
+Scheduler.prototype.addTask = function (id, priority, queue, task) {
+ this.currentTcb = new TaskControlBlock(this.list, id, priority, queue, task);
+ this.list = this.currentTcb;
+ this.blocks[id] = this.currentTcb;
+};
+
+/**
+ * Execute the tasks managed by this scheduler.
+ */
+Scheduler.prototype.schedule = function () {
+ this.currentTcb = this.list;
+ while (this.currentTcb != null) {
+ if (this.currentTcb.isHeldOrSuspended()) {
+ this.currentTcb = this.currentTcb.link;
+ } else {
+ this.currentId = this.currentTcb.id;
+ this.currentTcb = this.currentTcb.run();
+ }
+ }
+};
+
+/**
+ * Release a task that is currently blocked and return the next block to run.
+ * @param {int} id the id of the task to suspend
+ */
+Scheduler.prototype.release = function (id) {
+ var tcb = this.blocks[id];
+ if (tcb == null) return tcb;
+ tcb.markAsNotHeld();
+ if (tcb.priority > this.currentTcb.priority) {
+ return tcb;
+ } else {
+ return this.currentTcb;
+ }
+};
+
+/**
+ * Block the currently executing task and return the next task control block
+ * to run. The blocked task will not be made runnable until it is explicitly
+ * released, even if new work is added to it.
+ */
+Scheduler.prototype.holdCurrent = function () {
+ this.holdCount++;
+ this.currentTcb.markAsHeld();
+ return this.currentTcb.link;
+};
+
+/**
+ * Suspend the currently executing task and return the next task control block
+ * to run. If new work is added to the suspended task it will be made runnable.
+ */
+Scheduler.prototype.suspendCurrent = function () {
+ this.currentTcb.markAsSuspended();
+ return this.currentTcb;
+};
+
+/**
+ * Add the specified packet to the end of the worklist used by the task
+ * associated with the packet and make the task runnable if it is currently
+ * suspended.
+ * @param {Packet} packet the packet to add
+ */
+Scheduler.prototype.queue = function (packet) {
+ var t = this.blocks[packet.id];
+ if (t == null) return t;
+ this.queueCount++;
+ packet.link = null;
+ packet.id = this.currentId;
+ return t.checkPriorityAdd(this.currentTcb, packet);
+};
+
+/**
+ * A task control block manages a task and the queue of work packages associated
+ * with it.
+ * @param {TaskControlBlock} link the preceding block in the linked block list
+ * @param {int} id the id of this block
+ * @param {int} priority the priority of this block
+ * @param {Packet} queue the queue of packages to be processed by the task
+ * @param {Task} task the task
+ * @constructor
+ */
+function TaskControlBlock(link, id, priority, queue, task) {
+ this.link = link;
+ this.id = id;
+ this.priority = priority;
+ this.queue = queue;
+ this.task = task;
+ if (queue == null) {
+ this.state = STATE_SUSPENDED;
+ } else {
+ this.state = STATE_SUSPENDED_RUNNABLE;
+ }
+}
+
+/**
+ * The task is running and is currently scheduled.
+ */
+var STATE_RUNNING = 0;
+
+/**
+ * The task has packets left to process.
+ */
+var STATE_RUNNABLE = 1;
+
+/**
+ * The task is not currently running. The task is not blocked as such and may
+* be started by the scheduler.
+ */
+var STATE_SUSPENDED = 2;
+
+/**
+ * The task is blocked and cannot be run until it is explicitly released.
+ */
+var STATE_HELD = 4;
+
+var STATE_SUSPENDED_RUNNABLE = STATE_SUSPENDED | STATE_RUNNABLE;
+var STATE_NOT_HELD = ~STATE_HELD;
+
+TaskControlBlock.prototype.setRunning = function () {
+ this.state = STATE_RUNNING;
+};
+
+TaskControlBlock.prototype.markAsNotHeld = function () {
+ this.state = this.state & STATE_NOT_HELD;
+};
+
+TaskControlBlock.prototype.markAsHeld = function () {
+ this.state = this.state | STATE_HELD;
+};
+
+TaskControlBlock.prototype.isHeldOrSuspended = function () {
+ return (this.state & STATE_HELD) != 0 || (this.state == STATE_SUSPENDED);
+};
+
+TaskControlBlock.prototype.markAsSuspended = function () {
+ this.state = this.state | STATE_SUSPENDED;
+};
+
+TaskControlBlock.prototype.markAsRunnable = function () {
+ this.state = this.state | STATE_RUNNABLE;
+};
+
+/**
+ * Runs this task, if it is ready to be run, and returns the next task to run.
+ */
+TaskControlBlock.prototype.run = function () {
+ var packet;
+ if (this.state == STATE_SUSPENDED_RUNNABLE) {
+ packet = this.queue;
+ this.queue = packet.link;
+ if (this.queue == null) {
+ this.state = STATE_RUNNING;
+ } else {
+ this.state = STATE_RUNNABLE;
+ }
+ } else {
+ packet = null;
+ }
+ return this.task.run(packet);
+};
+
+/**
+ * Adds a packet to the worklist of this block's task, marks this as runnable if
+ * necessary, and returns the next runnable object to run (the one
+ * with the highest priority).
+ */
+TaskControlBlock.prototype.checkPriorityAdd = function (task, packet) {
+ if (this.queue == null) {
+ this.queue = packet;
+ this.markAsRunnable();
+ if (this.priority > task.priority) return this;
+ } else {
+ this.queue = packet.addTo(this.queue);
+ }
+ return task;
+};
+
+TaskControlBlock.prototype.toString = function () {
+ return "tcb { " + this.task + "@" + this.state + " }";
+};
+
+/**
+ * An idle task doesn't do any work itself but cycles control between the two
+ * device tasks.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @param {int} v1 a seed value that controls how the device tasks are scheduled
+ * @param {int} count the number of times this task should be scheduled
+ * @constructor
+ */
+function IdleTask(scheduler, v1, count) {
+ this.scheduler = scheduler;
+ this.v1 = v1;
+ this.count = count;
+}
+
+IdleTask.prototype.run = function (packet) {
+ this.count--;
+ if (this.count == 0) return this.scheduler.holdCurrent();
+ if ((this.v1 & 1) == 0) {
+ this.v1 = this.v1 >> 1;
+ return this.scheduler.release(ID_DEVICE_A);
+ } else {
+ this.v1 = (this.v1 >> 1) ^ 0xD008;
+ return this.scheduler.release(ID_DEVICE_B);
+ }
+};
+
+IdleTask.prototype.toString = function () {
+ return "IdleTask"
+};
+
+/**
+ * A task that suspends itself after each time it has been run to simulate
+ * waiting for data from an external device.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @constructor
+ */
+function DeviceTask(scheduler) {
+ this.scheduler = scheduler;
+ this.v1 = null;
+}
+
+DeviceTask.prototype.run = function (packet) {
+ if (packet == null) {
+ if (this.v1 == null) return this.scheduler.suspendCurrent();
+ var v = this.v1;
+ this.v1 = null;
+ return this.scheduler.queue(v);
+ } else {
+ this.v1 = packet;
+ return this.scheduler.holdCurrent();
+ }
+};
+
+DeviceTask.prototype.toString = function () {
+ return "DeviceTask";
+};
+
+/**
+ * A task that manipulates work packets.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @param {int} v1 a seed used to specify how work packets are manipulated
+ * @param {int} v2 another seed used to specify how work packets are manipulated
+ * @constructor
+ */
+function WorkerTask(scheduler, v1, v2) {
+ this.scheduler = scheduler;
+ this.v1 = v1;
+ this.v2 = v2;
+}
+
+WorkerTask.prototype.run = function (packet) {
+ if (packet == null) {
+ return this.scheduler.suspendCurrent();
+ } else {
+ if (this.v1 == ID_HANDLER_A) {
+ this.v1 = ID_HANDLER_B;
+ } else {
+ this.v1 = ID_HANDLER_A;
+ }
+ packet.id = this.v1;
+ packet.a1 = 0;
+ for (var i = 0; i < DATA_SIZE; i++) {
+ this.v2++;
+ if (this.v2 > 26) this.v2 = 1;
+ packet.a2[i] = this.v2;
+ }
+ return this.scheduler.queue(packet);
+ }
+};
+
+WorkerTask.prototype.toString = function () {
+ return "WorkerTask";
+};
+
+/**
+ * A task that manipulates work packets and then suspends itself.
+ * @param {Scheduler} scheduler the scheduler that manages this task
+ * @constructor
+ */
+function HandlerTask(scheduler) {
+ this.scheduler = scheduler;
+ this.v1 = null;
+ this.v2 = null;
+}
+
+HandlerTask.prototype.run = function (packet) {
+ if (packet != null) {
+ if (packet.kind == KIND_WORK) {
+ this.v1 = packet.addTo(this.v1);
+ } else {
+ this.v2 = packet.addTo(this.v2);
+ }
+ }
+ if (this.v1 != null) {
+ var count = this.v1.a1;
+ var v;
+ if (count < DATA_SIZE) {
+ if (this.v2 != null) {
+ v = this.v2;
+ this.v2 = this.v2.link;
+ v.a1 = this.v1.a2[count];
+ this.v1.a1 = count + 1;
+ return this.scheduler.queue(v);
+ }
+ } else {
+ v = this.v1;
+ this.v1 = this.v1.link;
+ return this.scheduler.queue(v);
+ }
+ }
+ return this.scheduler.suspendCurrent();
+};
+
+HandlerTask.prototype.toString = function () {
+ return "HandlerTask";
+};
+
+/* --- *
+ * P a c k e t
+ * --- */
+
+var DATA_SIZE = 4;
+
+/**
+ * A simple package of data that is manipulated by the tasks. The exact layout
+ * of the payload data carried by a packet is not importaint, and neither is the
+ * nature of the work performed on packets by the tasks.
+ *
+ * Besides carrying data, packets form linked lists and are hence used both as
+ * data and worklists.
+ * @param {Packet} link the tail of the linked list of packets
+ * @param {int} id an ID for this packet
+ * @param {int} kind the type of this packet
+ * @constructor
+ */
+function Packet(link, id, kind) {
+ this.link = link;
+ this.id = id;
+ this.kind = kind;
+ this.a1 = 0;
+ this.a2 = new Array(DATA_SIZE);
+}
+
+/**
+ * Add this packet to the end of a worklist, and return the worklist.
+ * @param {Packet} queue the worklist to add this packet to
+ */
+Packet.prototype.addTo = function (queue) {
+ this.link = null;
+ if (queue == null) return this;
+ var peek, next = queue;
+ while ((peek = next.link) != null)
+ next = peek;
+ next.link = this;
+ return queue;
+};
+
+Packet.prototype.toString = function () {
+ return "Packet";
+};
diff --git a/tests/benchmarks/script/v8/tests/splay.js b/tests/benchmarks/script/v8/tests/splay.js
new file mode 100644
index 0000000000..6b4f56d321
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/splay.js
@@ -0,0 +1,394 @@
+// Copyright 2009 the V8 project authors. All rights reserved.
+// 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 Google Inc. 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.
+
+// This benchmark is based on a JavaScript log processing module used
+// by the V8 profiler to generate execution time profiles for runs of
+// JavaScript applications, and it effectively measures how fast the
+// JavaScript engine is at allocating nodes and reclaiming the memory
+// used for old nodes. Because of the way splay trees work, the engine
+// also has to deal with a lot of changes to the large tree object
+// graph.
+
+var Splay = new BenchmarkSuite('Splay', 81491, [
+ new Benchmark("Splay", SplayRun, SplaySetup, SplayTearDown)
+]);
+
+
+// Configuration.
+var kSplayTreeSize = 8000;
+var kSplayTreeModifications = 80;
+var kSplayTreePayloadDepth = 5;
+
+var splayTree = null;
+
+
+function GeneratePayloadTree(depth, tag) {
+ if (depth == 0) {
+ return {
+ array : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
+ string : 'String for key ' + tag + ' in leaf node'
+ };
+ } else {
+ return {
+ left: GeneratePayloadTree(depth - 1, tag),
+ right: GeneratePayloadTree(depth - 1, tag)
+ };
+ }
+}
+
+
+function GenerateKey() {
+ // The benchmark framework guarantees that Math.random is
+ // deterministic; see base.js.
+ return Math.random();
+}
+
+
+function InsertNewNode() {
+ // Insert new node with a unique key.
+ var key;
+ do {
+ key = GenerateKey();
+ } while (splayTree.find(key) != null);
+ var payload = GeneratePayloadTree(kSplayTreePayloadDepth, String(key));
+ splayTree.insert(key, payload);
+ return key;
+}
+
+
+
+function SplaySetup() {
+ splayTree = new SplayTree();
+ for (var i = 0; i < kSplayTreeSize; i++) InsertNewNode();
+}
+
+
+function SplayTearDown() {
+ // Allow the garbage collector to reclaim the memory
+ // used by the splay tree no matter how we exit the
+ // tear down function.
+ var keys = splayTree.exportKeys();
+ splayTree = null;
+
+ // Verify that the splay tree has the right size.
+ var length = keys.length;
+ if (length != kSplayTreeSize) {
+ throw new Error("Splay tree has wrong size");
+ }
+
+ // Verify that the splay tree has sorted, unique keys.
+ for (var i = 0; i < length - 1; i++) {
+ if (keys[i] >= keys[i + 1]) {
+ throw new Error("Splay tree not sorted");
+ }
+ }
+}
+
+
+function SplayRun() {
+ // Replace a few nodes in the splay tree.
+ for (var i = 0; i < kSplayTreeModifications; i++) {
+ var key = InsertNewNode();
+ var greatest = splayTree.findGreatestLessThan(key);
+ if (greatest == null) splayTree.remove(key);
+ else splayTree.remove(greatest.key);
+ }
+}
+
+
+/**
+ * Constructs a Splay tree. A splay tree is a self-balancing binary
+ * search tree with the additional property that recently accessed
+ * elements are quick to access again. It performs basic operations
+ * such as insertion, look-up and removal in O(log(n)) amortized time.
+ *
+ * @constructor
+ */
+function SplayTree() {
+};
+
+
+/**
+ * Pointer to the root node of the tree.
+ *
+ * @type {SplayTree.Node}
+ * @private
+ */
+SplayTree.prototype.root_ = null;
+
+
+/**
+ * @return {boolean} Whether the tree is empty.
+ */
+SplayTree.prototype.isEmpty = function() {
+ return !this.root_;
+};
+
+
+/**
+ * Inserts a node into the tree with the specified key and value if
+ * the tree does not already contain a node with the specified key. If
+ * the value is inserted, it becomes the root of the tree.
+ *
+ * @param {number} key Key to insert into the tree.
+ * @param {*} value Value to insert into the tree.
+ */
+SplayTree.prototype.insert = function(key, value) {
+ if (this.isEmpty()) {
+ this.root_ = new SplayTree.Node(key, value);
+ return;
+ }
+ // Splay on the key to move the last node on the search path for
+ // the key to the root of the tree.
+ this.splay_(key);
+ if (this.root_.key == key) {
+ return;
+ }
+ var node = new SplayTree.Node(key, value);
+ if (key > this.root_.key) {
+ node.left = this.root_;
+ node.right = this.root_.right;
+ this.root_.right = null;
+ } else {
+ node.right = this.root_;
+ node.left = this.root_.left;
+ this.root_.left = null;
+ }
+ this.root_ = node;
+};
+
+
+/**
+ * Removes a node with the specified key from the tree if the tree
+ * contains a node with this key. The removed node is returned. If the
+ * key is not found, an exception is thrown.
+ *
+ * @param {number} key Key to find and remove from the tree.
+ * @return {SplayTree.Node} The removed node.
+ */
+SplayTree.prototype.remove = function(key) {
+ if (this.isEmpty()) {
+ throw Error('Key not found: ' + key);
+ }
+ this.splay_(key);
+ if (this.root_.key != key) {
+ throw Error('Key not found: ' + key);
+ }
+ var removed = this.root_;
+ if (!this.root_.left) {
+ this.root_ = this.root_.right;
+ } else {
+ var right = this.root_.right;
+ this.root_ = this.root_.left;
+ // Splay to make sure that the new root has an empty right child.
+ this.splay_(key);
+ // Insert the original right child as the right child of the new
+ // root.
+ this.root_.right = right;
+ }
+ return removed;
+};
+
+
+/**
+ * Returns the node having the specified key or null if the tree doesn't contain
+ * a node with the specified key.
+ *
+ * @param {number} key Key to find in the tree.
+ * @return {SplayTree.Node} Node having the specified key.
+ */
+SplayTree.prototype.find = function(key) {
+ if (this.isEmpty()) {
+ return null;
+ }
+ this.splay_(key);
+ return this.root_.key == key ? this.root_ : null;
+};
+
+
+/**
+ * @return {SplayTree.Node} Node having the maximum key value.
+ */
+SplayTree.prototype.findMax = function(opt_startNode) {
+ if (this.isEmpty()) {
+ return null;
+ }
+ var current = opt_startNode || this.root_;
+ while (current.right) {
+ current = current.right;
+ }
+ return current;
+};
+
+
+/**
+ * @return {SplayTree.Node} Node having the maximum key value that
+ * is less than the specified key value.
+ */
+SplayTree.prototype.findGreatestLessThan = function(key) {
+ if (this.isEmpty()) {
+ return null;
+ }
+ // Splay on the key to move the node with the given key or the last
+ // node on the search path to the top of the tree.
+ this.splay_(key);
+ // Now the result is either the root node or the greatest node in
+ // the left subtree.
+ if (this.root_.key < key) {
+ return this.root_;
+ } else if (this.root_.left) {
+ return this.findMax(this.root_.left);
+ } else {
+ return null;
+ }
+};
+
+
+/**
+ * @return {Array<*>} An array containing all the keys of tree's nodes.
+ */
+SplayTree.prototype.exportKeys = function() {
+ var result = [];
+ if (!this.isEmpty()) {
+ this.root_.traverse_(function(node) { result.push(node.key); });
+ }
+ return result;
+};
+
+
+/**
+ * Perform the splay operation for the given key. Moves the node with
+ * the given key to the top of the tree. If no node has the given
+ * key, the last node on the search path is moved to the top of the
+ * tree. This is the simplified top-down splaying algorithm from:
+ * "Self-adjusting Binary Search Trees" by Sleator and Tarjan
+ *
+ * @param {number} key Key to splay the tree on.
+ * @private
+ */
+SplayTree.prototype.splay_ = function(key) {
+ if (this.isEmpty()) {
+ return;
+ }
+ // Create a dummy node. The use of the dummy node is a bit
+ // counter-intuitive: The right child of the dummy node will hold
+ // the L tree of the algorithm. The left child of the dummy node
+ // will hold the R tree of the algorithm. Using a dummy node, left
+ // and right will always be nodes and we avoid special cases.
+ var dummy, left, right;
+ dummy = left = right = new SplayTree.Node(null, null);
+ var current = this.root_;
+ while (true) {
+ if (key < current.key) {
+ if (!current.left) {
+ break;
+ }
+ if (key < current.left.key) {
+ // Rotate right.
+ var tmp = current.left;
+ current.left = tmp.right;
+ tmp.right = current;
+ current = tmp;
+ if (!current.left) {
+ break;
+ }
+ }
+ // Link right.
+ right.left = current;
+ right = current;
+ current = current.left;
+ } else if (key > current.key) {
+ if (!current.right) {
+ break;
+ }
+ if (key > current.right.key) {
+ // Rotate left.
+ var tmp = current.right;
+ current.right = tmp.left;
+ tmp.left = current;
+ current = tmp;
+ if (!current.right) {
+ break;
+ }
+ }
+ // Link left.
+ left.right = current;
+ left = current;
+ current = current.right;
+ } else {
+ break;
+ }
+ }
+ // Assemble.
+ left.right = current.left;
+ right.left = current.right;
+ current.left = dummy.right;
+ current.right = dummy.left;
+ this.root_ = current;
+};
+
+
+/**
+ * Constructs a Splay tree node.
+ *
+ * @param {number} key Key.
+ * @param {*} value Value.
+ */
+SplayTree.Node = function(key, value) {
+ this.key = key;
+ this.value = value;
+};
+
+
+/**
+ * @type {SplayTree.Node}
+ */
+SplayTree.Node.prototype.left = null;
+
+
+/**
+ * @type {SplayTree.Node}
+ */
+SplayTree.Node.prototype.right = null;
+
+
+/**
+ * Performs an ordered traversal of the subtree starting at
+ * this SplayTree.Node.
+ *
+ * @param {function(SplayTree.Node)} f Visitor function.
+ * @private
+ */
+SplayTree.Node.prototype.traverse_ = function(f) {
+ var current = this;
+ while (current) {
+ var left = current.left;
+ if (left) left.traverse_(f);
+ f(current);
+ current = current.right;
+ }
+};
diff --git a/tests/benchmarks/script/v8/tst_v8.cpp b/tests/benchmarks/script/v8/tst_v8.cpp
new file mode 100644
index 0000000000..f8297e2a13
--- /dev/null
+++ b/tests/benchmarks/script/v8/tst_v8.cpp
@@ -0,0 +1,142 @@
+/****************************************************************************
+**
+** 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 <qtest.h>
+#include <QtCore/qdir.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qtextstream.h>
+#include <QtScript/qscriptengine.h>
+#include <QtScript/qscriptvalue.h>
+
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR ""
+#endif
+
+//TESTED_FILES=
+
+static QString readFile(const QString &filename)
+{
+ QFile file(filename);
+ if (!file.open(QFile::ReadOnly))
+ return QString();
+ QTextStream stream(&file);
+ stream.setCodec("UTF-8");
+ return stream.readAll();
+}
+
+class tst_V8 : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_V8();
+ virtual ~tst_V8();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void benchmark_data();
+ void benchmark();
+
+private:
+ QDir testsDir;
+};
+
+tst_V8::tst_V8()
+{
+ testsDir = QDir(SRCDIR);
+ bool testsFound = testsDir.cd("tests");
+ if (!testsFound)
+ qWarning("*** no tests/ dir!");
+}
+
+tst_V8::~tst_V8()
+{
+}
+
+void tst_V8::init()
+{
+}
+
+void tst_V8::cleanup()
+{
+}
+
+void tst_V8::benchmark_data()
+{
+ QTest::addColumn<QString>("testName");
+ QFileInfoList testFileInfos = testsDir.entryInfoList(QStringList() << "*.js", QDir::Files);
+ foreach (QFileInfo tfi, testFileInfos) {
+ QString name = tfi.baseName();
+ if (name == QString::fromLatin1("base")) {
+ // base.js contains the benchmark library, it's not a test.
+ continue;
+ }
+ QTest::newRow(name.toLatin1().constData()) << name;
+ }
+}
+
+void tst_V8::benchmark()
+{
+ QFETCH(QString, testName);
+
+ QString baseDotJsContents = readFile(testsDir.absoluteFilePath("base.js"));
+ QVERIFY(!baseDotJsContents.isEmpty());
+
+ QString testContents = readFile(testsDir.absoluteFilePath(testName + ".js"));
+ QVERIFY(!testContents.isEmpty());
+
+ QScriptEngine engine;
+ engine.evaluate(baseDotJsContents);
+ QVERIFY(!engine.hasUncaughtException());
+ engine.evaluate(testContents);
+ QVERIFY(!engine.hasUncaughtException());
+
+ QBENCHMARK {
+ engine.evaluate("BenchmarkSuite.RunSuites({})");
+ }
+ QVERIFY(!engine.hasUncaughtException());
+}
+
+QTEST_MAIN(tst_V8)
+#include "tst_v8.moc"
diff --git a/tests/benchmarks/script/v8/v8.pro b/tests/benchmarks/script/v8/v8.pro
new file mode 100644
index 0000000000..e55fd7fd2c
--- /dev/null
+++ b/tests/benchmarks/script/v8/v8.pro
@@ -0,0 +1,20 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_bench_v8
+
+SOURCES += tst_v8.cpp
+
+QT = core script
+
+!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\"
+
+wince*|symbian: {
+testFiles.sources = tests
+testFiles.path = .
+DEPLOYMENT += testFiles
+}
+
+symbian* {
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 // Min 128kB, Max 32MB
+ TARGET.EPOCSTACKSIZE = 0x14000
+}
diff --git a/tests/benchmarks/svg/svg.pro b/tests/benchmarks/svg/svg.pro
index cdc2ca5716..d84eb7187a 100644
--- a/tests/benchmarks/svg/svg.pro
+++ b/tests/benchmarks/svg/svg.pro
@@ -1,3 +1,5 @@
TEMPLATE = subdirs
SUBDIRS = \
qsvgrenderer
+
+include(../trusted-benchmarks.pri) \ No newline at end of file
diff --git a/tests/benchmarks/trusted-benchmarks.pri b/tests/benchmarks/trusted-benchmarks.pri
new file mode 100644
index 0000000000..632dcff6d2
--- /dev/null
+++ b/tests/benchmarks/trusted-benchmarks.pri
@@ -0,0 +1,8 @@
+# Edit the list of trusted benchmarks in each of the sub-targets
+
+check-trusted.depends = qmake
+for(benchmark, TRUSTED_BENCHMARKS) {
+ check-trusted.commands += (cd $$benchmark && $(MAKE) -f $(MAKEFILE) check);
+}
+
+QMAKE_EXTRA_TARGETS += check-trusted
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/mkspecs/.gitignore b/tests/manual/mkspecs/.gitignore
new file mode 100644
index 0000000000..403e028f8e
--- /dev/null
+++ b/tests/manual/mkspecs/.gitignore
@@ -0,0 +1,2 @@
+tmp
+specs
diff --git a/tests/manual/mkspecs/test.sh b/tests/manual/mkspecs/test.sh
new file mode 100755
index 0000000000..4b723c0f8d
--- /dev/null
+++ b/tests/manual/mkspecs/test.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+if [ "$1" == "--help" ]; then
+ echo "Init a clean git repository somewhere and run this test script from that directory. The first run will"
+ echo "produce a bunch of specs. This is your baseline. Run 'git add specs' and commit the baseline. Then run"
+ echo "this script again, after making changes to the mkspecs. You should see any diffs you produced."
+ exit 0
+fi
+
+
+QMAKE_ARGS="-nocache -d"
+SPECS_DIR=$(qmake -query QMAKE_MKSPECS)
+SPECS=$(find -L $SPECS_DIR | grep "qmake.conf" | grep -Ev "common|default" | grep "$1")
+
+SEDI="sed -i"
+if [ $(uname) == "Darwin" ]; then
+ # Mac OS X requires an extension, Linux will barf on it being present
+ SEDI='sed -i .backup'
+fi
+
+if [ ! -d tmp ]; then
+ mkdir tmp
+ touch tmp/empty.pro
+fi
+
+if [ ! -d specs ]; then
+ mkdir specs
+fi
+
+git checkout -- specs > /dev/null 2>&1
+
+cd tmp
+for spec in $SPECS; do
+ spec=$(echo $spec | sed "s|$SPECS_DIR/||" | sed "s|/qmake.conf||")
+ output_file=$(echo "$spec.txt" | sed "s|/|-|g")
+ echo "Dumping qmake variables for spec '$spec' to 'specs/$output_file'..."
+ qmake $QMAKE_ARGS -spec $spec empty.pro 2>&1 |
+ sed -n '/Dumping all variables/,$p' |
+ grep -Ev "(QMAKE_INTERNAL_INCLUDED_FILES|DISTFILES) ===" > ../specs/$output_file
+
+ if [ -n $QTDIR ]; then
+ $SEDI "s|$QTDIR|\$QTDIR|g" ../specs/$output_file
+ fi
+
+ if [ -n $QTSRCDIR ]; then
+ $SEDI "s|$QTSRCDIR|\$QTDIR|g" ../specs/$output_file
+ fi
+done
+cd ..
+
+rm -f specs/*.backup
+
+git diff --exit-code -- specs > /dev/null
+exit_code=$?
+
+if [ $exit_code -eq 0 ]; then
+ echo -e "\nNo diff produced (you did good)"
+else
+ # Show the resulting diff
+ git diff -- specs
+fi
+
+exit $exit_code
+
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/tests/manual/textrendering/glyphshaping/glyphshaping.pro b/tests/manual/textrendering/glyphshaping/glyphshaping.pro
index caa9028bc9..1d78aa3351 100644
--- a/tests/manual/textrendering/glyphshaping/glyphshaping.pro
+++ b/tests/manual/textrendering/glyphshaping/glyphshaping.pro
@@ -1,5 +1,5 @@
SOURCES = main.cpp
OTHER_FILES = glyphshaping_data.xml
glyphshaping_data.path = .
-glyphshaping_data.sources = $$PWD/glyphshaping_data.xml
+glyphshaping_data.files = $$PWD/glyphshaping_data.xml
DEPLOYMENT += glyphshaping_data
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.qdoc b/tools/assistant/tools/assistant/doc/assistant.qdoc
index 129e60d139..eda2063e98 100644
--- a/tools/assistant/tools/assistant/doc/assistant.qdoc
+++ b/tools/assistant/tools/assistant/doc/assistant.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/tools/assistant/tools/assistant/openpagesmanager.cpp b/tools/assistant/tools/assistant/openpagesmanager.cpp
index 3b69b50580..75b8653118 100644
--- a/tools/assistant/tools/assistant/openpagesmanager.cpp
+++ b/tools/assistant/tools/assistant/openpagesmanager.cpp
@@ -167,7 +167,8 @@ void OpenPagesManager::setupInitialPages(bool defaultCollection,
m_model->addPage(helpEngine.homePage());
for (int i = 0; i < m_model->rowCount(); ++i)
CentralWidget::instance()->addPage(m_model->pageAt(i));
- setCurrentPage(initialPage);
+ setCurrentPage((initialPage >= m_model->rowCount())
+ ? m_model->rowCount() - 1 : initialPage);
m_openPagesSwitcher->selectCurrentPage();
}
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 31c115a74c..3ca57b4cf9 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -590,8 +590,6 @@ void Configure::parseCmdLine()
// Image formats --------------------------------------------
else if (configCmdLine.at(i) == "-no-gif")
dictionary[ "GIF" ] = "no";
- else if (configCmdLine.at(i) == "-qt-gif")
- dictionary[ "GIF" ] = "plugin";
else if (configCmdLine.at(i) == "-no-libtiff") {
dictionary[ "TIFF"] = "no";
@@ -1642,7 +1640,7 @@ bool Configure::displayHelp()
"[-no-qmake] [-qmake] [-dont-process] [-process]\n"
"[-no-style-<style>] [-qt-style-<style>] [-redo]\n"
"[-saveconfig <config>] [-loadconfig <config>]\n"
- "[-qt-zlib] [-system-zlib] [-no-gif] [-qt-gif] [-no-libpng]\n"
+ "[-qt-zlib] [-system-zlib] [-no-gif] [-no-libpng]\n"
"[-qt-libpng] [-system-libpng] [-no-libtiff] [-qt-libtiff]\n"
"[-system-libtiff] [-no-libjpeg] [-qt-libjpeg] [-system-libjpeg]\n"
"[-no-libmng] [-qt-libmng] [-system-libmng] [-no-qt3support] [-mmx]\n"
@@ -1770,7 +1768,6 @@ bool Configure::displayHelp()
desc("ZLIB", "system", "-system-zlib", "Use zlib from the operating system.\nSee http://www.gzip.org/zlib\n");
desc("GIF", "no", "-no-gif", "Do not compile GIF reading support.");
- desc("GIF", "auto", "-qt-gif", "Compile GIF reading support.\nSee also src/gui/image/qgifhandler_p.h\n");
desc("LIBPNG", "no", "-no-libpng", "Do not compile PNG support.");
desc("LIBPNG", "qt", "-qt-libpng", "Use the libpng bundled with Qt.");
diff --git a/tools/designer/data/ui4.xsd b/tools/designer/data/ui4.xsd
index fc9c120d25..53bae62e2c 100644
--- a/tools/designer/data/ui4.xsd
+++ b/tools/designer/data/ui4.xsd
@@ -207,6 +207,7 @@
<xs:attribute name="column" type="xs:integer" />
<xs:attribute name="rowspan" type="xs:integer" />
<xs:attribute name="colspan" type="xs:integer" />
+ <xs:attribute name="alignment" type="xs:string" />
</xs:complexType>
<!-- item view begin -->
diff --git a/tools/designer/src/components/formeditor/formwindow.cpp b/tools/designer/src/components/formeditor/formwindow.cpp
index ebf00f94ac..88b86d8852 100644
--- a/tools/designer/src/components/formeditor/formwindow.cpp
+++ b/tools/designer/src/components/formeditor/formwindow.cpp
@@ -1683,10 +1683,13 @@ void FormWindow::cut()
// for cases like QMainWindow (central widget is an inner container) or QStackedWidget (page is an inner container)
QWidget *FormWindow::innerContainer(QWidget *outerContainer) const
{
- bool isContainer = m_core->widgetDataBase()->isContainer(outerContainer);
- if (isContainer)
- if (QDesignerContainerExtension *container = qt_extension<QDesignerContainerExtension*>(m_core->extensionManager(), outerContainer))
- return container->widget(container->currentIndex());
+ if (m_core->widgetDataBase()->isContainer(outerContainer))
+ if (const QDesignerContainerExtension *container = qt_extension<QDesignerContainerExtension*>(m_core->extensionManager(), outerContainer)) {
+ const int currentIndex = container->currentIndex();
+ return currentIndex >= 0 ?
+ container->widget(currentIndex) :
+ static_cast<QWidget *>(0);
+ }
return outerContainer;
}
@@ -1706,8 +1709,10 @@ QWidget *FormWindow::containerForPaste() const
QWidget *containerOfW = findContainer(selection.first(), /* exclude layouts */ true);
if (!containerOfW || containerOfW == mainContainer())
break;
- // No layouts, must be container
+ // No layouts, must be container. No empty page-based containers.
containerOfW = innerContainer(containerOfW);
+ if (!containerOfW)
+ break;
if (LayoutInfo::layoutType(m_core, containerOfW) != LayoutInfo::NoLayout || !m_core->widgetDataBase()->isContainer(containerOfW))
break;
w = containerOfW;
@@ -1716,6 +1721,8 @@ QWidget *FormWindow::containerForPaste() const
// and the like as the central widget has the layout).
w = innerContainer(w);
+ if (!w)
+ return 0;
if (LayoutInfo::layoutType(m_core, w) != LayoutInfo::NoLayout)
return 0;
// Go up via container extension (also includes step from QMainWindow to its central widget)
diff --git a/tools/designer/src/lib/sdk/abstractdnditem.qdoc b/tools/designer/src/lib/sdk/abstractdnditem.qdoc
index bdae59c8a1..0d639545c3 100644
--- a/tools/designer/src/lib/sdk/abstractdnditem.qdoc
+++ b/tools/designer/src/lib/sdk/abstractdnditem.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/tools/designer/src/lib/sdk/abstracticoncache.qdoc b/tools/designer/src/lib/sdk/abstracticoncache.qdoc
index 6eb6b131a1..467eca2ca0 100644
--- a/tools/designer/src/lib/sdk/abstracticoncache.qdoc
+++ b/tools/designer/src/lib/sdk/abstracticoncache.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/tools/designer/src/lib/sdk/dynamicpropertysheet.qdoc b/tools/designer/src/lib/sdk/dynamicpropertysheet.qdoc
index b813c16f48..93690cd738 100644
--- a/tools/designer/src/lib/sdk/dynamicpropertysheet.qdoc
+++ b/tools/designer/src/lib/sdk/dynamicpropertysheet.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/tools/designer/src/lib/sdk/layoutdecoration.qdoc b/tools/designer/src/lib/sdk/layoutdecoration.qdoc
index 1b3897599d..1dacbb2630 100644
--- a/tools/designer/src/lib/sdk/layoutdecoration.qdoc
+++ b/tools/designer/src/lib/sdk/layoutdecoration.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/tools/designer/src/lib/sdk/membersheet.qdoc b/tools/designer/src/lib/sdk/membersheet.qdoc
index 718557942b..f9d76cfce3 100644
--- a/tools/designer/src/lib/sdk/membersheet.qdoc
+++ b/tools/designer/src/lib/sdk/membersheet.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/tools/designer/src/lib/sdk/propertysheet.qdoc b/tools/designer/src/lib/sdk/propertysheet.qdoc
index 8c4908737a..ab2477bb5a 100644
--- a/tools/designer/src/lib/sdk/propertysheet.qdoc
+++ b/tools/designer/src/lib/sdk/propertysheet.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/tools/designer/src/lib/sdk/taskmenu.qdoc b/tools/designer/src/lib/sdk/taskmenu.qdoc
index 23ea1b250b..68854b3f5f 100644
--- a/tools/designer/src/lib/sdk/taskmenu.qdoc
+++ b/tools/designer/src/lib/sdk/taskmenu.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/tools/designer/src/lib/shared/morphmenu.cpp b/tools/designer/src/lib/shared/morphmenu.cpp
index 80eac0cedb..eb5bc87ad3 100644
--- a/tools/designer/src/lib/shared/morphmenu.cpp
+++ b/tools/designer/src/lib/shared/morphmenu.cpp
@@ -193,7 +193,7 @@ static QStringList classesOfCategory(MorphCategory cat)
<< QLatin1String("QSpinBox") << QLatin1String("QDoubleSpinBox");
break;
case MorphTextEdit:
- l << QLatin1String("QTextEdit") << QLatin1String("QPlainTextEdit");
+ l << QLatin1String("QTextEdit") << QLatin1String("QPlainTextEdit") << QLatin1String("QTextBrowser");
break;
}
}
diff --git a/tools/designer/src/lib/shared/qdesigner_command2.cpp b/tools/designer/src/lib/shared/qdesigner_command2.cpp
index c16bf40069..ce2128a74f 100644
--- a/tools/designer/src/lib/shared/qdesigner_command2.cpp
+++ b/tools/designer/src/lib/shared/qdesigner_command2.cpp
@@ -154,6 +154,68 @@ QString MorphLayoutCommand::formatDescription(QDesignerFormEditorInterface * /*
return QApplication::translate("Command", "Change layout of '%1' from %2 to %3").arg(widgetName, oldName, newName);
}
+LayoutAlignmentCommand::LayoutAlignmentCommand(QDesignerFormWindowInterface *formWindow) :
+ QDesignerFormWindowCommand(QApplication::translate("Command", "Change layout alignment"), formWindow),
+ m_newAlignment(0), m_oldAlignment(0), m_widget(0)
+{
+}
+
+bool LayoutAlignmentCommand::init(QWidget *w, Qt::Alignment alignment)
+{
+ bool enabled;
+ m_newAlignment = alignment;
+ m_oldAlignment = LayoutAlignmentCommand::alignmentOf(core(), w, &enabled);
+ m_widget = w;
+ return enabled;
+}
+
+void LayoutAlignmentCommand::redo()
+{
+ LayoutAlignmentCommand::applyAlignment(core(), m_widget, m_newAlignment);
+}
+
+void LayoutAlignmentCommand::undo()
+{
+ LayoutAlignmentCommand::applyAlignment(core(), m_widget, m_oldAlignment);
+}
+
+// Find out alignment and return whether command is enabled.
+Qt::Alignment LayoutAlignmentCommand::alignmentOf(const QDesignerFormEditorInterface *core, QWidget *w, bool *enabledIn)
+{
+ bool managed;
+ QLayout *layout;
+
+ if (enabledIn)
+ *enabledIn = false;
+ // Can only work on a managed layout
+ const LayoutInfo::Type type = LayoutInfo::laidoutWidgetType(core, w, &managed, &layout);
+ const bool enabled = layout && managed &&
+ (type == LayoutInfo::HBox || type == LayoutInfo::VBox
+ || type == LayoutInfo::Grid);
+ if (!enabled)
+ return Qt::Alignment(0);
+ // Get alignment
+ const int index = layout->indexOf(w);
+ Q_ASSERT(index >= 0);
+ if (enabledIn)
+ *enabledIn = true;
+ return layout->itemAt(index)->alignment();
+}
+
+void LayoutAlignmentCommand::applyAlignment(const QDesignerFormEditorInterface *core, QWidget *w, Qt::Alignment a)
+{
+ // Find layout and apply to item
+ QLayout *layout;
+ LayoutInfo::laidoutWidgetType(core, w, 0, &layout);
+ if (layout) {
+ const int index = layout->indexOf(w);
+ if (index >= 0) {
+ layout->itemAt(index)->setAlignment(a);
+ layout->update();
+ }
+ }
+}
+
} // namespace qdesigner_internal
QT_END_NAMESPACE
diff --git a/tools/designer/src/lib/shared/qdesigner_command2_p.h b/tools/designer/src/lib/shared/qdesigner_command2_p.h
index 5c7b9d6587..4e9c95acfb 100644
--- a/tools/designer/src/lib/shared/qdesigner_command2_p.h
+++ b/tools/designer/src/lib/shared/qdesigner_command2_p.h
@@ -94,6 +94,28 @@ private:
QWidget *m_layoutBase;
};
+// Change the alignment of a widget in a managed grid/box layout cell.
+class LayoutAlignmentCommand : public QDesignerFormWindowCommand {
+ Q_DISABLE_COPY(LayoutAlignmentCommand)
+public:
+ explicit LayoutAlignmentCommand(QDesignerFormWindowInterface *formWindow);
+
+ bool init(QWidget *w, Qt::Alignment alignment);
+
+ virtual void redo();
+ virtual void undo();
+
+ // Find out alignment and return whether command is enabled.
+ static Qt::Alignment alignmentOf(const QDesignerFormEditorInterface *core, QWidget *w, bool *enabled = 0);
+
+private:
+ static void applyAlignment(const QDesignerFormEditorInterface *core, QWidget *w, Qt::Alignment a);
+
+ Qt::Alignment m_newAlignment;
+ Qt::Alignment m_oldAlignment;
+ QWidget *m_widget;
+};
+
} // namespace qdesigner_internal
QT_END_NAMESPACE
diff --git a/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp b/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp
index a607f355ad..cdb7d15c30 100644
--- a/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp
+++ b/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp
@@ -41,6 +41,7 @@
#include "qdesigner_taskmenu_p.h"
#include "qdesigner_command_p.h"
+#include "qdesigner_command2_p.h"
#include "richtexteditor_p.h"
#include "plaintexteditor_p.h"
#include "stylesheeteditor_p.h"
@@ -180,10 +181,128 @@ QString ObjectNameDialog::newObjectName() const
{
return m_editor->text();
}
+} // namespace
+namespace qdesigner_internal {
+
+// Sub menu displaying the alignment options of a widget in a managed
+// grid/box layout cell.
+class LayoutAlignmentMenu {
+public:
+ explicit LayoutAlignmentMenu(QObject *parent);
+
+ QAction *subMenuAction() const { return m_subMenuAction; }
+
+ void connect(QObject *receiver, const char *aSlot);
+
+ // Set up enabled state and checked actions according to widget (managed box/grid)
+ bool setAlignment(const QDesignerFormEditorInterface *core, QWidget *w);
+
+ // Return the currently checked alignment
+ Qt::Alignment alignment() const;
+
+private:
+ enum Actions { HorizNone, Left, HorizCenter, Right, VerticalNone, Top, VerticalCenter, Bottom };
+ static QAction *createAction(const QString &text, int data, QMenu *menu, QActionGroup *ag);
+
+ QAction *m_subMenuAction;
+ QActionGroup *m_horizGroup;
+ QActionGroup *m_verticalGroup;
+ QAction *m_actions[Bottom + 1];
+};
+
+QAction *LayoutAlignmentMenu::createAction(const QString &text, int data, QMenu *menu, QActionGroup *ag)
+{
+ QAction * a = new QAction(text, 0);
+ a->setCheckable(true);
+ a->setData(QVariant(data));
+ menu->addAction(a);
+ ag->addAction(a);
+ return a;
+}
+
+LayoutAlignmentMenu::LayoutAlignmentMenu(QObject *parent) :
+ m_subMenuAction(new QAction(QDesignerTaskMenu::tr("Layout Alignment"), parent)),
+ m_horizGroup(new QActionGroup(parent)),
+ m_verticalGroup(new QActionGroup(parent))
+{
+ m_horizGroup->setExclusive(true);
+ m_verticalGroup->setExclusive(true);
+
+ QMenu *menu = new QMenu;
+ m_subMenuAction->setMenu(menu);
+
+ m_actions[HorizNone] = createAction(QDesignerTaskMenu::tr("No Horizontal Alignment"), 0, menu, m_horizGroup);
+ m_actions[Left] = createAction(QDesignerTaskMenu::tr("Left"), Qt::AlignLeft, menu, m_horizGroup);
+ m_actions[HorizCenter] = createAction(QDesignerTaskMenu::tr("Center Horizontally"), Qt::AlignHCenter, menu, m_horizGroup);
+ m_actions[Right] = createAction(QDesignerTaskMenu::tr("Right"), Qt::AlignRight, menu, m_horizGroup);
+ menu->addSeparator();
+ m_actions[VerticalNone] = createAction(QDesignerTaskMenu::tr("No Vertical Alignment"), 0, menu, m_verticalGroup);
+ m_actions[Top] = createAction(QDesignerTaskMenu::tr("Top"), Qt::AlignTop, menu, m_verticalGroup);
+ m_actions[VerticalCenter] = createAction(QDesignerTaskMenu::tr("Center Vertically"), Qt::AlignVCenter, menu, m_verticalGroup);
+ m_actions[Bottom] = createAction(QDesignerTaskMenu::tr("Bottom"), Qt::AlignBottom, menu, m_verticalGroup);
+}
+
+void LayoutAlignmentMenu::connect(QObject *receiver, const char *aSlot)
+{
+ QObject::connect(m_horizGroup, SIGNAL(triggered(QAction*)), receiver, aSlot);
+ QObject::connect(m_verticalGroup, SIGNAL(triggered(QAction*)), receiver, aSlot);
+}
+
+bool LayoutAlignmentMenu::setAlignment(const QDesignerFormEditorInterface *core, QWidget *w)
+{
+ bool enabled;
+ const Qt::Alignment alignment = LayoutAlignmentCommand::alignmentOf(core, w, &enabled);
+ if (!enabled) {
+ m_subMenuAction->setEnabled(false);
+ m_actions[HorizNone]->setChecked(true);
+ m_actions[VerticalNone]->setChecked(true);
+ return false;
+ }
+ // Get alignment
+ switch (alignment & Qt::AlignHorizontal_Mask) {
+ case Qt::AlignLeft:
+ m_actions[Left]->setChecked(true);
+ break;
+ case Qt::AlignHCenter:
+ m_actions[HorizCenter]->setChecked(true);
+ break;
+ case Qt::AlignRight:
+ m_actions[Right]->setChecked(true);
+ break;
+ default:
+ m_actions[HorizNone]->setChecked(true);
+ break;
+ }
+ switch (alignment & Qt::AlignVertical_Mask) {
+ case Qt::AlignTop:
+ m_actions[Top]->setChecked(true);
+ break;
+ case Qt::AlignVCenter:
+ m_actions[VerticalCenter]->setChecked(true);
+ break;
+ case Qt::AlignBottom:
+ m_actions[Bottom]->setChecked(true);
+ break;
+ default:
+ m_actions[VerticalNone]->setChecked(true);
+ break;
+ }
+ return true;
+}
+
+Qt::Alignment LayoutAlignmentMenu::alignment() const
+{
+ Qt::Alignment alignment = 0;
+ if (const QAction *horizAction = m_horizGroup->checkedAction())
+ if (const int horizAlign = horizAction->data().toInt())
+ alignment |= static_cast<Qt::Alignment>(horizAlign);
+ if (const QAction *vertAction = m_verticalGroup->checkedAction())
+ if (const int vertAlign = vertAction->data().toInt())
+ alignment |= static_cast<Qt::Alignment>(vertAlign);
+ return alignment;
}
-namespace qdesigner_internal {
// -------------- QDesignerTaskMenuPrivate
class QDesignerTaskMenuPrivate {
public:
@@ -214,6 +333,7 @@ public:
QAction *m_navigateToSlot;
PromotionTaskMenu* m_promotionTaskMenu;
QActionGroup *m_sizeActionGroup;
+ LayoutAlignmentMenu m_layoutAlignmentMenu;
QAction *m_sizeActionsSubMenu;
};
@@ -242,6 +362,7 @@ QDesignerTaskMenuPrivate::QDesignerTaskMenuPrivate(QWidget *widget, QObject *par
m_navigateToSlot(new QAction(QDesignerTaskMenu::tr("Go to slot..."), parent)),
m_promotionTaskMenu(new PromotionTaskMenu(widget, PromotionTaskMenu::ModeManagedMultiSelection, parent)),
m_sizeActionGroup(new QActionGroup(parent)),
+ m_layoutAlignmentMenu(parent),
m_sizeActionsSubMenu(new QAction(QDesignerTaskMenu::tr("Size Constraints"), parent))
{
QMenu *sizeMenu = new QMenu;
@@ -293,6 +414,7 @@ QDesignerTaskMenu::QDesignerTaskMenu(QWidget *widget, QObject *parent) :
connect(d->m_containerFakeMethods, SIGNAL(triggered()), this, SLOT(containerFakeMethods()));
connect(d->m_navigateToSlot, SIGNAL(triggered()), this, SLOT(slotNavigateToSlot()));
connect(d->m_sizeActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(applySize(QAction*)));
+ d->m_layoutAlignmentMenu.connect(this, SLOT(slotLayoutAlignment()));
}
QDesignerTaskMenu::~QDesignerTaskMenu()
@@ -410,6 +532,9 @@ QList<QAction*> QDesignerTaskMenu::taskActions() const
actions.append(d->m_changeStyleSheet);
actions.append(d->m_separator6);
actions.append(d->m_sizeActionsSubMenu);
+ if (d->m_layoutAlignmentMenu.setAlignment(formWindow->core(), d->m_widget))
+ actions.append(d->m_layoutAlignmentMenu.subMenuAction());
+
d->m_promotionTaskMenu->setMode(formWindow->isManaged(d->m_widget) ?
PromotionTaskMenu::ModeManagedMultiSelection : PromotionTaskMenu::ModeUnmanagedMultiSelection);
d->m_promotionTaskMenu->addActions(formWindow, PromotionTaskMenu::LeadingSeparator, actions);
@@ -771,7 +896,17 @@ void QDesignerTaskMenu::setProperty(QDesignerFormWindowInterface *fw, PropertyM
}
}
-
+void QDesignerTaskMenu::slotLayoutAlignment()
+{
+ QDesignerFormWindowInterface *fw = formWindow();
+ const Qt::Alignment newAlignment = d->m_layoutAlignmentMenu.alignment();
+ LayoutAlignmentCommand *cmd = new LayoutAlignmentCommand(fw);
+ if (cmd->init(d->m_widget, newAlignment)) {
+ fw->commandHistory()->push(cmd);
+ } else {
+ delete cmd;
+ }
+}
} // namespace qdesigner_internal
QT_END_NAMESPACE
diff --git a/tools/designer/src/lib/shared/qdesigner_taskmenu_p.h b/tools/designer/src/lib/shared/qdesigner_taskmenu_p.h
index da7f572d56..23586f784e 100644
--- a/tools/designer/src/lib/shared/qdesigner_taskmenu_p.h
+++ b/tools/designer/src/lib/shared/qdesigner_taskmenu_p.h
@@ -118,6 +118,7 @@ private slots:
void containerFakeMethods();
void slotNavigateToSlot();
void applySize(QAction *a);
+ void slotLayoutAlignment();
private:
QDesignerTaskMenuPrivate *d;
diff --git a/tools/designer/src/lib/shared/qlayout_widget.cpp b/tools/designer/src/lib/shared/qlayout_widget.cpp
index acec8153ad..012f60565f 100644
--- a/tools/designer/src/lib/shared/qlayout_widget.cpp
+++ b/tools/designer/src/lib/shared/qlayout_widget.cpp
@@ -601,7 +601,7 @@ QRect LayoutHelper::itemInfo(QLayout *lt, const QWidget *widget) const
}
}
- // Grid Layout state. Datatypically store the state of a GridLayout as a map of
+ // Grid Layout state. Datatype storing the state of a GridLayout as a map of
// widgets to QRect(columns, rows) and size. Used to store the state for undo operations
// that do not change the widgets within the layout; also provides some manipulation
// functions and ability to apply the state to a layout provided its widgets haven't changed.
@@ -634,7 +634,11 @@ QRect LayoutHelper::itemInfo(QLayout *lt, const QWidget *widget) const
static CellStates cellStates(const QList<QRect> &rects, int numRows, int numColumns);
typedef QMap<QWidget *, QRect> WidgetItemMap;
+ typedef QMap<QWidget *, Qt::Alignment> WidgetAlignmentMap;
+
WidgetItemMap widgetItemMap;
+ WidgetAlignmentMap widgetAlignmentMap;
+
int rowCount;
int colCount;
};
@@ -706,8 +710,11 @@ QRect LayoutHelper::itemInfo(QLayout *lt, const QWidget *widget) const
const int count = l->count();
for (int i = 0; i < count; i++) {
QLayoutItem *item = l->itemAt(i);
- if (!LayoutInfo::isEmptyItem(item))
+ if (!LayoutInfo::isEmptyItem(item)) {
widgetItemMap.insert(item->widget(), gridItemInfo(l, i));
+ if (item->alignment())
+ widgetAlignmentMap.insert(item->widget(), item->alignment());
+ }
}
}
@@ -743,7 +750,8 @@ QRect LayoutHelper::itemInfo(QLayout *lt, const QWidget *widget) const
const LayoutItemRectMap::const_iterator icend = itemMap.constEnd();
for (LayoutItemRectMap::const_iterator it = itemMap.constBegin(); it != icend; ++it) {
const QRect info = it.value();
- grid->addItem(it.key(), info.y(), info.x(), info.height(), info.width());
+ const Qt::Alignment alignment = widgetAlignmentMap.value(it.key()->widget(), Qt::Alignment(0));
+ grid->addItem(it.key(), info.y(), info.x(), info.height(), info.width(), alignment);
}
// create spacers
const CellStates cs = cellStates(itemMap.values(), rowCount, colCount);
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/designer/src/lib/uilib/abstractformbuilder.cpp b/tools/designer/src/lib/uilib/abstractformbuilder.cpp
index 3f40d81449..ae6fac9b51 100644
--- a/tools/designer/src/lib/uilib/abstractformbuilder.cpp
+++ b/tools/designer/src/lib/uilib/abstractformbuilder.cpp
@@ -794,6 +794,69 @@ static inline QFormLayout::ItemRole formLayoutRole(int column, int colspan)
}
#endif
+static inline QString alignmentValue(Qt::Alignment a)
+{
+ QString h,v;
+ switch (a & Qt::AlignHorizontal_Mask) {
+ case Qt::AlignLeft:
+ h = QLatin1String("Qt::AlignLeft");
+ break;
+ case Qt::AlignRight:
+ h = QLatin1String("Qt::AlignRight");
+ break;
+ case Qt::AlignHCenter:
+ h = QLatin1String("Qt::AlignHCenter");
+ break;
+ case Qt::AlignJustify:
+ h = QLatin1String("Qt::AlignJustify");
+ break;
+ }
+ switch (a & Qt::AlignVertical_Mask) {
+ case Qt::AlignTop:
+ v = QLatin1String("Qt::AlignTop");
+ break;
+ case Qt::AlignBottom:
+ v = QLatin1String("Qt::AlignBottom");
+ break;
+ case Qt::AlignVCenter:
+ v = QLatin1String("Qt::AlignVCenter");
+ break;
+ }
+ if (h.isEmpty() && v.isEmpty())
+ return QString();
+ if (!v.isEmpty()) {
+ if (!h.isEmpty())
+ h += QLatin1Char('|');
+ h += v;
+ }
+ return h;
+}
+
+static inline Qt::Alignment alignmentFromDom(const QString &in)
+{
+ Qt::Alignment rc = 0;
+ if (!in.isEmpty()) {
+ foreach (const QString &f, in.split(QLatin1Char('|'))) {
+ if (f == QLatin1String("Qt::AlignLeft")) {
+ rc |= Qt::AlignLeft;
+ } else if (f == QLatin1String("Qt::AlignRight")) {
+ rc |= Qt::AlignRight;
+ } else if (f == QLatin1String("Qt::AlignHCenter")) {
+ rc |= Qt::AlignHCenter;
+ } else if (f == QLatin1String("Qt::AlignJustify")) {
+ rc |= Qt::AlignJustify;
+ } else if (f == QLatin1String("Qt::AlignTop")) {
+ rc |= Qt::AlignTop;
+ } else if (f == QLatin1String("Qt::AlignBottom")) {
+ rc |= Qt::AlignBottom;
+ } else if (f == QLatin1String("Qt::AlignVCenter")) {
+ rc |= Qt::AlignVCenter;
+ }
+ }
+ }
+ return rc;
+}
+
/*!
\internal
*/
@@ -838,12 +901,15 @@ QLayoutItem *QAbstractFormBuilder::create(DomLayoutItem *ui_layoutItem, QLayout
{
switch (ui_layoutItem->kind()) {
case DomLayoutItem::Widget: {
- if (QWidget *w = create(ui_layoutItem->elementWidget(), parentWidget))
+ if (QWidget *w = create(ui_layoutItem->elementWidget(), parentWidget)) {
#ifdef QFORMINTERNAL_NAMESPACE // uilib
- return new QWidgetItemV2(w);
+ QWidgetItem *item = new QWidgetItemV2(w);
#else // Within Designer: Use factory method that returns special items that refuse to shrink to 0,0
- return QLayoutPrivate::createWidgetItem(layout, w);
+ QWidgetItem *item = QLayoutPrivate::createWidgetItem(layout, w);
#endif
+ item->setAlignment(alignmentFromDom(ui_layoutItem->attributeAlignment()));
+ return item;
+ }
qWarning() << QCoreApplication::translate("QAbstractFormBuilder", "Empty widget item in %1 '%2'.").arg(QString::fromUtf8(layout->metaObject()->className()), layout->objectName());
return 0;
}
@@ -1384,13 +1450,14 @@ DomActionRef *QAbstractFormBuilder::createActionRefDom(QAction *action)
// Struct to store layout item parameters for saving layout items
struct FormBuilderSaveLayoutEntry {
explicit FormBuilderSaveLayoutEntry(QLayoutItem *li = 0) :
- item(li), row(-1), column(-1), rowSpan(0), columnSpan(0) {}
+ item(li), row(-1), column(-1), rowSpan(0), columnSpan(0), alignment(0) {}
QLayoutItem *item;
int row;
int column;
int rowSpan;
int columnSpan;
+ Qt::Alignment alignment;
};
// Create list from standard box layout
@@ -1401,7 +1468,9 @@ static QList<FormBuilderSaveLayoutEntry> saveLayoutEntries(const QLayout *layout
rc.reserve(count);
for (int idx = 0; idx < count; ++idx) {
QLayoutItem *item = layout->itemAt(idx);
- rc.append(FormBuilderSaveLayoutEntry(item));
+ FormBuilderSaveLayoutEntry entry(item);
+ entry.alignment = item->alignment();
+ rc.append(entry);
}
}
return rc;
@@ -1417,6 +1486,7 @@ static QList<FormBuilderSaveLayoutEntry> saveGridLayoutEntries(QGridLayout *grid
QLayoutItem *item = gridLayout->itemAt(idx);
FormBuilderSaveLayoutEntry entry(item);
gridLayout->getItemPosition(idx, &entry.row, &entry.column, &entry.rowSpan,&entry.columnSpan);
+ entry.alignment = item->alignment();
rc.append(entry);
}
}
@@ -1490,6 +1560,8 @@ DomLayout *QAbstractFormBuilder::createDom(QLayout *layout, DomLayout *ui_layout
ui_item->setAttributeRowSpan(item.rowSpan);
if (item.columnSpan > 1)
ui_item->setAttributeColSpan(item.columnSpan);
+ if (item.alignment)
+ ui_item->setAttributeAlignment(alignmentValue(item.alignment));
ui_items.append(ui_item);
}
}
diff --git a/tools/designer/src/lib/uilib/container.qdoc b/tools/designer/src/lib/uilib/container.qdoc
index a3bbcc6493..cea5a45550 100644
--- a/tools/designer/src/lib/uilib/container.qdoc
+++ b/tools/designer/src/lib/uilib/container.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/tools/designer/src/lib/uilib/customwidget.qdoc b/tools/designer/src/lib/uilib/customwidget.qdoc
index cdbdfa2e73..88c169af1a 100644
--- a/tools/designer/src/lib/uilib/customwidget.qdoc
+++ b/tools/designer/src/lib/uilib/customwidget.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/tools/designer/src/lib/uilib/ui4.cpp b/tools/designer/src/lib/uilib/ui4.cpp
index 98974e613e..2b5fe8b925 100644
--- a/tools/designer/src/lib/uilib/ui4.cpp
+++ b/tools/designer/src/lib/uilib/ui4.cpp
@@ -3673,6 +3673,7 @@ void DomLayoutItem::clear(bool clear_all)
m_attr_rowSpan = 0;
m_has_attr_colSpan = false;
m_attr_colSpan = 0;
+ m_has_attr_alignment = false;
}
m_kind = Unknown;
@@ -3694,6 +3695,7 @@ DomLayoutItem::DomLayoutItem()
m_attr_rowSpan = 0;
m_has_attr_colSpan = false;
m_attr_colSpan = 0;
+ m_has_attr_alignment = false;
m_widget = 0;
m_layout = 0;
m_spacer = 0;
@@ -3727,6 +3729,10 @@ void DomLayoutItem::read(QXmlStreamReader &reader)
setAttributeColSpan(attribute.value().toString().toInt());
continue;
}
+ if (name == QLatin1String("alignment")) {
+ setAttributeAlignment(attribute.value().toString());
+ continue;
+ }
reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
}
@@ -3779,6 +3785,8 @@ void DomLayoutItem::read(const QDomElement &node)
setAttributeRowSpan(node.attribute(QLatin1String("rowspan")).toInt());
if (node.hasAttribute(QLatin1String("colspan")))
setAttributeColSpan(node.attribute(QLatin1String("colspan")).toInt());
+ if (node.hasAttribute(QLatin1String("alignment")))
+ setAttributeAlignment(node.attribute(QLatin1String("alignment")));
for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
if (!n.isElement())
@@ -3828,6 +3836,9 @@ void DomLayoutItem::write(QXmlStreamWriter &writer, const QString &tagName) cons
if (hasAttributeColSpan())
writer.writeAttribute(QLatin1String("colspan"), QString::number(attributeColSpan()));
+ if (hasAttributeAlignment())
+ writer.writeAttribute(QLatin1String("alignment"), attributeAlignment());
+
switch (kind()) {
case Widget: {
DomWidget* v = elementWidget();
diff --git a/tools/designer/src/lib/uilib/ui4_p.h b/tools/designer/src/lib/uilib/ui4_p.h
index a464a89516..836175e272 100644
--- a/tools/designer/src/lib/uilib/ui4_p.h
+++ b/tools/designer/src/lib/uilib/ui4_p.h
@@ -1427,6 +1427,11 @@ public:
inline void setAttributeColSpan(int a) { m_attr_colSpan = a; m_has_attr_colSpan = true; }
inline void clearAttributeColSpan() { m_has_attr_colSpan = false; }
+ inline bool hasAttributeAlignment() const { return m_has_attr_alignment; }
+ inline QString attributeAlignment() const { return m_attr_alignment; }
+ inline void setAttributeAlignment(const QString& a) { m_attr_alignment = a; m_has_attr_alignment = true; }
+ inline void clearAttributeAlignment() { m_has_attr_alignment = false; }
+
// child element accessors
enum Kind { Unknown = 0, Widget, Layout, Spacer };
inline Kind kind() const { return m_kind; }
@@ -1460,6 +1465,9 @@ private:
int m_attr_colSpan;
bool m_has_attr_colSpan;
+ QString m_attr_alignment;
+ bool m_has_attr_alignment;
+
// child element data
Kind m_kind;
DomWidget* m_widget;
diff --git a/tools/linguist/linguist/mainwindow.cpp b/tools/linguist/linguist/mainwindow.cpp
index 8520cf75be..4896272d9b 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/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/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp b/tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp
index 31667dcfcc..4122fab660 100644
--- a/tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp
+++ b/tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp
@@ -1130,11 +1130,11 @@ int main(int argc, char **argv)
static code representing those interfaces, which can then be used to make calls to remote
objects or implement said interfaces.
- \c qdbusxml2dcpp has two modes of operation, that correspond to the two possible outputs it can
+ \c qdbusxml2cpp has two modes of operation, that correspond to the two possible outputs it can
produce: the interface (proxy) class or the adaptor class. The latter consists of both a C++
header and a source file, which are meant to be edited and adapted to your needs.
- The \c qdbusxml2dcpp tool is not meant to be run every time you compile your
+ The \c qdbusxml2cpp tool is not meant to be run every time you compile your
application. Instead, it's meant to be used when developing the code or when the interface
changes.
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp
index a83a3214ef..d43ad96c6d 100644
--- a/tools/qdoc3/ditaxmlgenerator.cpp
+++ b/tools/qdoc3/ditaxmlgenerator.cpp
@@ -2015,7 +2015,7 @@ void DitaXmlGenerator::generateIncludes(const InnerNode *inner, CodeMarker *mark
}
/*!
- Generates a table of contents begining at \a node.
+ Generates a table of contents beginning at \a node.
*/
void DitaXmlGenerator::generateTableOfContents(const Node *node,
CodeMarker *marker,
@@ -2101,7 +2101,7 @@ void DitaXmlGenerator::generateTableOfContents(const Node *node,
/*!
Revised for the new doc format.
- Generates a table of contents begining at \a node.
+ Generates a table of contents beginning at \a node.
*/
void DitaXmlGenerator::generateTableOfContents(const Node *node,
CodeMarker *marker,
diff --git a/tools/qdoc3/doc/qdoc-manual.qdoc b/tools/qdoc3/doc/qdoc-manual.qdoc
index c3ab7312f7..b557ad97d8 100644
--- a/tools/qdoc3/doc/qdoc-manual.qdoc
+++ b/tools/qdoc3/doc/qdoc-manual.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/tools/qdoc3/doc/qdoc-manual.qdocconf b/tools/qdoc3/doc/qdoc-manual.qdocconf
index 5a725b9c23..9514d63b8d 100644
--- a/tools/qdoc3/doc/qdoc-manual.qdocconf
+++ b/tools/qdoc3/doc/qdoc-manual.qdocconf
@@ -1,7 +1,7 @@
project = QDoc
description = QDoc3 Manual
-indexes = $QTDIR/doc/html/qt.index
+indexes = ../../../doc/html/qt.index
outputdir = html
@@ -9,41 +9,226 @@ sources = qdoc-manual.qdoc
sourcedirs = $PWD
exampledirs += $PWD \
- $QTDIR/examples
+ ../../../examples
imagedirs += images
extraimages.HTML = qt-logo
-HTML.stylesheets = classic.css
-
-HTML.style = "h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }\n" \
- "a:link { color: #004faf; text-decoration: none }\n" \
- "a:visited { color: #672967; text-decoration: none }\n" \
- "td.postheader { font-family: sans-serif }\n" \
- "tr.address { font-family: sans-serif }\n" \
- "body { background: #ffffff; color: black; }"
-
-HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"5\" width=\"100%\">\n" \
- "<tr>\n" \
- "<td align=\"left\" valign=\"top\" width=\"32\">" \
- "<a href=\"http://qt.nokia.com/\"><img src=\"images/qt-logo.png\" align=\"left\" border=\"0\" /></a>" \
- "</td>\n" \
- "<td class=\"postheader\" valign=\"center\">" \
- "<a href=\"01-qdoc-manual.html\">" \
- "<font color=\"#004faf\">Home: QDoc Manual</font></a>&nbsp;&middot;" \
- "<a href=\"http://qt.nokia.com/doc/4.8\">" \
- "<font color=\"#004faf\"> Qt Reference Documentation</font></a>" \
- "</td>\n" \
- "</tr></table>"
-
-HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
- "<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
- "<td width=\"40%\" align=\"left\">Copyright &copy; 2010 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
- "<td width=\"20%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
- "<td width=\"40%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \
- "</tr></table></div></address>"
-
-spurious += "Missing '\\}'"
-spurious += "Cannot use .*"
-spurious += "Unexpected .*"
+HTML.stylesheets = style/style.css \
+ style/OfflineStyle.css \
+ style/style_ie7.css \
+ style/style_ie8.css \
+ style/style_ie6.css
+
+HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
+ " <div class=\"content\"> \n" \
+ " <div id=\"nav-logo\">\n" \
+ " <a href=\"index.html\">Home</a></div>\n" \
+ " <a href=\"index.html\" class=\"qtref\"><span>Qt Reference Documentation</span></a>\n" \
+ " <div id=\"narrowsearch\"></div>\n" \
+ " <div id=\"nav-topright\">\n" \
+ " <ul>\n" \
+ " <li class=\"nav-topright-home\"><a href=\"http://qt.nokia.com/\">Qt HOME</a></li>\n" \
+ " <li class=\"nav-topright-dev\"><a href=\"http://developer.qt.nokia.com/\">DEV</a></li>\n" \
+ " <li class=\"nav-topright-labs\"><a href=\"http://labs.qt.nokia.com/blogs/\">LABS</a></li>\n" \
+ " <li class=\"nav-topright-doc nav-topright-doc-active\"><a href=\"http://doc.qt.nokia.com/\">\n" \
+ " DOC</a></li>\n" \
+ " <li class=\"nav-topright-blog\"><a href=\"http://blog.qt.nokia.com/\">BLOG</a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " <div id=\"shortCut\">\n" \
+ " <ul>\n" \
+ " <li class=\"shortCut-topleft-inactive\"><span><a href=\"index.html\">Qt 4.8</a></span></li>\n" \
+ " <li class=\"shortCut-topleft-active\"><a href=\"http://doc.qt.nokia.com\">ALL VERSIONS" \
+ " </a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " <ul class=\"sf-menu\" id=\"narrowmenu\"> \n" \
+ " <li><a href=\"#\">API Lookup</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"classes.html\">Class index</a></li> \n" \
+ " <li><a href=\"functions.html\">Function index</a></li> \n" \
+ " <li><a href=\"modules.html\">Modules</a></li> \n" \
+ " <li><a href=\"namespaces.html\">Namespaces</a></li> \n" \
+ " <li><a href=\"qtglobal.html\">Global Declarations</a></li> \n" \
+ " <li><a href=\"qdeclarativeelements.html\">QML elements</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Qt Topics</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"qt-basic-concepts.html\">Programming with Qt</a></li> \n" \
+ " <li><a href=\"qtquick.html\">Device UIs &amp; Qt Quick</a></li> \n" \
+ " <li><a href=\"qt-gui-concepts.html\">UI Design with Qt</a></li> \n" \
+ " <li><a href=\"developing-with-qt.html\">Cross-platform and Platform-specific</a></li> \n" \
+ " <li><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " <li><a href=\"technology-apis.html\">Qt and Key Technologies</a></li> \n" \
+ " <li><a href=\"best-practices.html\">How-To's and Best Practices</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Examples</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"all-examples.html\">Examples</a></li> \n" \
+ " <li><a href=\"tutorials.html\">Tutorials</a></li> \n" \
+ " <li><a href=\"demos.html\">Demos</a></li> \n" \
+ " <li><a href=\"qdeclarativeexamples.html\">QML Examples</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"wrapper\">\n" \
+ " <div class=\"hd\">\n" \
+ " <span></span>\n" \
+ " </div>\n" \
+ " <div class=\"bd group\">\n" \
+ " <div class=\"sidebar\">\n" \
+ " <div class=\"searchlabel\">\n" \
+ " Search index:</div>\n" \
+ " <div class=\"search\" id=\"sidebarsearch\">\n" \
+ " <form id=\"qtdocsearch\" action=\"\" onsubmit=\"return false;\">\n" \
+ " <fieldset>\n" \
+ " <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\n" \
+ " <div id=\"resultdialog\"> \n" \
+ " <a href=\"#\" id=\"resultclose\">Close</a> \n" \
+ " <p id=\"resultlinks\" class=\"all\"><a href=\"#\" id=\"showallresults\">All</a> | <a href=\"#\" id=\"showapiresults\">API</a> | <a href=\"#\" id=\"showarticleresults\">Articles</a> | <a href=\"#\" id=\"showexampleresults\">Examples</a></p> \n" \
+ " <p id=\"searchcount\" class=\"all\"><span id=\"resultcount\"></span><span id=\"apicount\"></span><span id=\"articlecount\"></span><span id=\"examplecount\"></span>&nbsp;results:</p> \n" \
+ " <ul id=\"resultlist\" class=\"all\"> \n" \
+ " </ul> \n" \
+ " </div> \n" \
+ " </fieldset>\n" \
+ " </form>\n" \
+ " </div>\n" \
+ " <div class=\"box first bottombar\" id=\"lookup\">\n" \
+ " <h2 title=\"API Lookup\"><span></span>\n" \
+ " API Lookup</h2>\n" \
+ " <div id=\"list001\" class=\"list\">\n" \
+ " <ul id=\"ul001\" >\n" \
+ " <li class=\"defaultLink\"><a href=\"classes.html\">Class index</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"functions.html\">Function index</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"modules.html\">Modules</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"namespaces.html\">Namespaces</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qtglobal.html\">Global Declarations</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeelements.html\">QML elements</a></li>\n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"box bottombar\" id=\"topics\">\n" \
+ " <h2 title=\"Qt Topics\"><span></span>\n" \
+ " Qt Topics</h2>\n" \
+ " <div id=\"list002\" class=\"list\">\n" \
+ " <ul id=\"ul002\" >\n" \
+ " <li class=\"defaultLink\"><a href=\"qt-basic-concepts.html\">Programming with Qt</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"qtquick.html\">Device UIs &amp; Qt Quick</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"qt-gui-concepts.html\">UI Design with Qt</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"developing-with-qt.html\">Cross-platform and Platform-specific</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"technology-apis.html\">Qt and Key Technologies</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"best-practices.html\">How-To's and Best Practices</a></li> \n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"box\" id=\"examples\">\n" \
+ " <h2 title=\"Examples\"><span></span>\n" \
+ " Examples</h2>\n" \
+ " <div id=\"list003\" class=\"list\">\n" \
+ " <ul id=\"ul003\">\n" \
+ " <li class=\"defaultLink\"><a href=\"all-examples.html\">Examples</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"tutorials.html\">Tutorials</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"demos.html\">Demos</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeexamples.html\">QML Examples</a></li>\n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"wrap\">\n" \
+ " <div class=\"toolbar\">\n" \
+ " <div class=\"breadcrumb toolblock\">\n" \
+ " <ul>\n" \
+ " <li class=\"first\"><a href=\"index.html\">Home</a></li>\n" \
+ " <!-- Bread crumbs goes here -->\n"
+
+HTML.postpostheader = " </ul>\n" \
+ " </div>\n" \
+ " <div class=\"toolbuttons toolblock\">\n" \
+ " <ul>\n" \
+ " <li id=\"smallA\" class=\"t_button\">A</li>\n" \
+ " <li id=\"medA\" class=\"t_button active\">A</li>\n" \
+ " <li id=\"bigA\" class=\"t_button\">A</li>\n" \
+ " <li id=\"print\" class=\"t_button\"><a href=\"javascript:this.print();\">\n" \
+ " <span>Print</span></a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"content mainContent\">\n"
+
+HTML.footer = "" \
+ " <div class=\"feedback t_button\">\n" \
+ " [+] Documentation Feedback</div>\n" \
+ " </div>\n" \
+ " </div>\n" \
+ " </div> \n" \
+ " <div class=\"ft\">\n" \
+ " <span></span>\n" \
+ " </div>\n" \
+ " </div> \n" \
+ " <div class=\"footer\">\n" \
+ " <p>\n" \
+ " <acronym title=\"Copyright\">&copy;</acronym> 2008-2010 Nokia Corporation and/or its\n" \
+ " subsidiaries. Nokia, Qt and their respective logos are trademarks of Nokia Corporation \n" \
+ " in Finland and/or other countries worldwide.</p>\n" \
+ " <p>\n" \
+ " All other trademarks are property of their respective owners. <a title=\"Privacy Policy\"\n" \
+ " href=\"http://qt.nokia.com/about/privacy-policy\">Privacy Policy</a></p>\n" \
+ " <br />\n" \
+ " <p>\n" \
+ " Licensees holding valid Qt Commercial licenses may use this document in accordance with the" \
+ " Qt Commercial License Agreement provided with the Software or, alternatively, in accordance" \
+ " with the terms contained in a written agreement between you and Nokia.</p>\n" \
+ " <p>\n" \
+ " Alternatively, this document may be used under the terms of the <a href=\"http://www.gnu.org/licenses/fdl.html\">GNU\n" \
+ " Free Documentation License version 1.3</a>\n" \
+ " as published by the Free Software Foundation.</p>\n" \
+ " </div>\n" \
+ " <div id=\"feedbackBox\">\n" \
+ " <div id=\"feedcloseX\" class=\"feedclose t_button\">X</div>\n" \
+ " <form id=\"feedform\" action=\"http://doc.qt.nokia.com/docFeedbck/feedback.php\" method=\"get\">\n" \
+ " <p id=\"noteHead\">Thank you for giving your feedback.</p> <p class=\"note\">Make sure it is related to this specific page. For more general bugs and \n" \
+ " requests, please use the <a href=\"http://bugreports.qt.nokia.com/secure/Dashboard.jspa\">Qt Bug Tracker</a>.</p>\n" \
+ " <p><textarea id=\"feedbox\" name=\"feedText\" rows=\"5\" cols=\"40\"></textarea></p>\n" \
+ " <p><input id=\"feedsubmit\" class=\"feedclose\" type=\"submit\" name=\"feedback\" /></p>\n" \
+ " </form>\n" \
+ " </div>\n" \
+ " <div id=\"blurpage\">\n" \
+ " </div>\n"
+
+# This stuff is used by the Qt 4.7 doc format.
+scriptdirs = ../../../doc/src/template/scripts
+styledirs = ../../../doc/src/template/style
+
+scripts.HTML = functions.js \
+ narrow.js \
+ superfish.js \
+ jquery.js
+
+styles.HTML = style.css \
+ narrow.css \
+ superfish.css \
+ superfish_skin.css \
+ style_ie6.css \
+ style_ie7.css \
+ style_ie8.css
+
+# Files not referenced in any qdoc file (last four are needed by qtdemo)
+# See also extraimages.HTML
+qhp.Qt.extraFiles = scripts/functions.js \
+ scripts/jquery.js \
+ scripts/narrow.js \
+ scripts/superfish.js \
+ style/narrow.css \
+ style/superfish.css \
+ style/style_ie6.css \
+ style/style_ie7.css \
+ style/style_ie8.css \
+ style/style.css
+
diff --git a/tools/qdoc3/helpprojectwriter.cpp b/tools/qdoc3/helpprojectwriter.cpp
index 98246c43b1..63e8df79a5 100644
--- a/tools/qdoc3/helpprojectwriter.cpp
+++ b/tools/qdoc3/helpprojectwriter.cpp
@@ -49,6 +49,7 @@
#include "config.h"
#include "node.h"
#include "tree.h"
+#include <qdebug.h>
QT_BEGIN_NAMESPACE
@@ -250,8 +251,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 +264,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 +530,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 +691,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 77e306aa6f..76ee4e8c2c 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -451,7 +451,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
{
int skipAhead = 0;
static bool in_para = false;
-
+
switch (atom->type()) {
case Atom::AbstractLeft:
break;
@@ -527,18 +527,18 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << formattingRightMap()[ATOM_FORMATTING_TELETYPE];
break;
case Atom::Code:
- out() << "<pre class=\"highlightedCode brush: cpp\">"
+ out() << "<pre class=\"highlightedCode brush: cpp\">"
<< trimmedTrailing(highlightedCode(indent(codeIndent,atom->string()),
marker,relative))
<< "</pre>\n";
- break;
+ break;
#ifdef QDOC_QML
case Atom::Qml:
- out() << "<pre class=\"highlightedCode brush: cpp\">"
+ out() << "<pre class=\"highlightedCode brush: cpp\">"
<< trimmedTrailing(highlightedCode(indent(codeIndent,atom->string()),
marker,relative))
<< "</pre>\n";
- break;
+ break;
#endif
case Atom::CodeNew:
out() << "<p>you can rewrite it as</p>\n"
@@ -554,7 +554,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "<pre class=\"highlightedCode brush: cpp\">"
<< trimmedTrailing(protectEnc(plainCode(indent(codeIndent,atom->string()))))
<< "</pre>\n";
- break;
+ break;
case Atom::FootnoteLeft:
// ### For now
if (in_para) {
@@ -927,13 +927,12 @@ int HtmlGenerator::generateAtom(const Atom *atom,
threeColumnEnumValueTable = isThreeColumnEnumValueTable(atom);
if (threeColumnEnumValueTable) {
out() << "<table class=\"valuelist\">";
- // << "<tr>"
- if (++numTableRows % 2 == 1)
- out() << "<tr class=\"odd\">";
- else
- out() << "<tr class=\"even\">";
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd\">";
+ else
+ out() << "<tr class=\"even\">";
- out() << "<tr><th class=\"tblConst\">Constant</th>"
+ out() << "<th class=\"tblConst\">Constant</th>"
<< "<th class=\"tblval\">Value</th>"
<< "<th class=\"tbldscr\">Description</th></tr>\n";
}
@@ -1811,44 +1810,44 @@ void HtmlGenerator::generateHeader(const QString& title,
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
-
+
+ // 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";
+ 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";
+ 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
+ out() << "</head>\n";
+ out() << "<body class=\"offline narrow creator\">\n"; // offline narrow
break;
default:
- out() << "</head>\n";
- out() << "<body>\n";
+ out() << "</head>\n";
+ out() << "<body>\n";
break;
}
@@ -1866,7 +1865,7 @@ void HtmlGenerator::generateHeader(const QString& title,
case Creator:
out() << QString(creatorPostHeader).replace("\\" + COMMAND_VERSION, myTree->version());
generateBreadCrumbs(title,node,marker);
- out() << QString(creatorPostPostHeader).replace("\\" + COMMAND_VERSION, myTree->version());
+ 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());
@@ -1930,10 +1929,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,
@@ -1945,8 +1942,8 @@ void HtmlGenerator::generateTitle(const QString& title,
if (!title.isEmpty())
out() << "<h1 class=\"title\">" << protectEnc(title) << "</h1>\n";
if (!subTitle.isEmpty()) {
- out() << "<span";
- if (subTitleSize == SmallSubTitle)
+ out() << "<span";
+ if (subTitleSize == SmallSubTitle)
out() << " class=\"small-subtitle\">";
else
out() << " class=\"subtitle\">";
@@ -1958,7 +1955,7 @@ void HtmlGenerator::generateTitle(const QString& title,
void HtmlGenerator::generateFooter(const Node *node)
{
if (node && !node->links().empty())
- out() << "<p>\n" << navigationLinks << "</p>\n";
+ out() << "<p class=\"naviNextPrevious footerNavi\">\n" << navigationLinks << "</p>\n";
out() << QString(footer).replace("\\" + COMMAND_VERSION, myTree->version())
<< QString(address).replace("\\" + COMMAND_VERSION, myTree->version());
@@ -1979,10 +1976,10 @@ void HtmlGenerator::generateFooter(const Node *node)
out() << " })();\n";
out() << " </script>\n";
out() << "</body>\n";
- break;
+ break;
case Creator:
out() << "</body>\n";
- break;
+ break;
default:
out() << "</body>\n";
}
@@ -2238,20 +2235,19 @@ void HtmlGenerator::generateNavigationBar(const NavigationBar& bar,
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";
+ 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";
}
- out() << "</p>\n";
- }
}
}
#endif
@@ -3283,7 +3279,7 @@ 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
+ // hack for Java: remove () and use <tt> when appropriate
bool func = atom->string().endsWith("()");
bool tt = (func || atom->string().contains(camelCase));
if (tt)
@@ -3417,7 +3413,7 @@ QString HtmlGenerator::protect(const QString &string, const QString &outputEncod
#undef APPEND
}
-QString HtmlGenerator::fileBase(const Node *node)
+QString HtmlGenerator::fileBase(const Node *node) const
{
QString result;
@@ -3548,8 +3544,11 @@ QString HtmlGenerator::linkForNode(const Node *node, const Node *relative)
return QString();
fn = fileName(node);
-/* if (!node->url().isEmpty())
- return fn;*/
+#if 0
+ if (!node->url().isEmpty())
+ return fn;
+#endif
+
#if 0
// ### reintroduce this test, without breaking .dcf files
if (fn != outFileName())
@@ -3723,7 +3722,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));
@@ -4065,7 +4068,7 @@ void HtmlGenerator::generateStatus(const Node *node, CodeMarker *marker)
switch (node->status()) {
case Node::Obsolete:
if (node->isInnerNode())
- Generator::generateStatus(node, marker);
+ Generator::generateStatus(node, marker);
break;
case Node::Compat:
if (node->isInnerNode()) {
@@ -4225,7 +4228,7 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
out() << "<tr class=\"odd\">";
else
out() << "<tr class=\"even\">";
-
+
out() << "<td class=\"tblQmlPropNode\"><p>";
out() << "<a name=\"" + refForNode(qpn) + "\"></a>";
@@ -4236,7 +4239,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;
}
@@ -4265,10 +4268,10 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
out() << "<div class=\"qmlproto\">";
out() << "<table class=\"qmlname\">";
//out() << "<tr>";
- if (++numTableRows % 2 == 1)
- out() << "<tr class=\"odd\">";
- else
- out() << "<tr class=\"even\">";
+ if (++numTableRows % 2 == 1)
+ out() << "<tr class=\"odd\">";
+ else
+ out() << "<tr class=\"even\">";
out() << "<td class=\"tblQmlFuncNode\"><p>";
out() << "<a name=\"" + refForNode(qmn) + "\"></a>";
generateSynopsis(qmn,relative,marker,CodeMarker::Detailed,false);
diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h
index d885ada59d..b96d7379ae 100644
--- a/tools/qdoc3/htmlgenerator.h
+++ b/tools/qdoc3/htmlgenerator.h
@@ -241,7 +241,7 @@ class HtmlGenerator : public PageGenerator
void generateStatus(const Node *node, CodeMarker *marker);
QString registerRef(const QString& ref);
- QString fileBase(const Node *node);
+ virtual QString fileBase(const Node *node) const;
#if 0
QString fileBase(const Node *node, const SectionIterator& section);
#endif
diff --git a/tools/qdoc3/pagegenerator.cpp b/tools/qdoc3/pagegenerator.cpp
index a187c2ee9f..37dc191b29 100644
--- a/tools/qdoc3/pagegenerator.cpp
+++ b/tools/qdoc3/pagegenerator.cpp
@@ -310,10 +310,10 @@ PageGenerator::generateInnerNode(const InnerNode* node, CodeMarker* marker)
const FakeNode *fakeNode = static_cast<const FakeNode *>(node);
if (fakeNode->subType() == Node::ExternalPage)
return;
-#ifdef QDOC_QML
+ if (fakeNode->subType() == Node::Image)
+ return;
if (fakeNode->subType() == Node::QmlPropertyGroup)
return;
-#endif
if (fakeNode->subType() == Node::Page) {
if (node->count() > 0)
qDebug("PAGE %s HAS CHILDREN", qPrintable(fakeNode->title()));
diff --git a/tools/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro
index ae0bf255a7..d47e066534 100644
--- a/tools/qdoc3/qdoc3.pro
+++ b/tools/qdoc3/qdoc3.pro
@@ -120,9 +120,9 @@ SOURCES += apigenerator.cpp \
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/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf
index 6a06a8c304..e642559e1f 100644
--- a/tools/qdoc3/test/qt-build-docs.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs.qdocconf
@@ -62,11 +62,15 @@ qhp.Qt.extraFiles = index.html \
qhp.Qt.filterAttributes = qt 4.8.0 qtrefdoc
qhp.Qt.customFilters.Qt.name = Qt 4.8.0
qhp.Qt.customFilters.Qt.filterAttributes = qt 4.8.0
-qhp.Qt.subprojects = classes overviews examples
+qhp.Qt.subprojects = classes qmlelements overviews examples
qhp.Qt.subprojects.classes.title = Classes
-qhp.Qt.subprojects.classes.indexTitle = Qt's Classes
+qhp.Qt.subprojects.classes.indexTitle = All Classes
qhp.Qt.subprojects.classes.selectors = class fake:headerfile
qhp.Qt.subprojects.classes.sortPages = true
+qhp.Qt.subprojects.qmlelements.title = QML Elements
+qhp.Qt.subprojects.qmlelements.indexTitle = QML Elements
+qhp.Qt.subprojects.qmlelements.selectors = fake:qmlclass
+qhp.Qt.subprojects.qmlelements.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
diff --git a/tools/qdoc3/test/qt-cpp-ignore.qdocconf b/tools/qdoc3/test/qt-cpp-ignore.qdocconf
index b78b51250e..5d52a4746d 100644
--- a/tools/qdoc3/test/qt-cpp-ignore.qdocconf
+++ b/tools/qdoc3/test/qt-cpp-ignore.qdocconf
@@ -71,8 +71,9 @@ Cpp.ignoretokens = QAXFACTORY_EXPORT \
QT_END_INCLUDE_NAMESPACE \
PHONON_EXPORT \
Q_DECLARATIVE_EXPORT \
- Q_GADGET \
- QWEBKIT_EXPORT
+ Q_GADGET \
+ QWEBKIT_EXPORT \
+ Q_INVOKABLE
Cpp.ignoredirectives = Q_DECLARE_HANDLE \
Q_DECLARE_INTERFACE \
Q_DECLARE_METATYPE \
diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf
index 58cee4f11b..4ae032f7cc 100644
--- a/tools/qdoc3/test/qt-html-templates.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates.qdocconf
@@ -9,6 +9,7 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\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" \
@@ -26,6 +27,37 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" </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" \
@@ -36,7 +68,7 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" <div class=\"sidebar\">\n" \
" <div class=\"searchlabel\">\n" \
" Search index:</div>\n" \
- " <div class=\"search\">\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" \
diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf
index f50cb69524..dedf8065df 100644
--- a/tools/qdoc3/test/qt.qdocconf
+++ b/tools/qdoc3/test/qt.qdocconf
@@ -63,10 +63,15 @@ qhp.Qt.filterAttributes = qt 4.8.0 qtrefdoc
qhp.Qt.customFilters.Qt.name = Qt 4.8.0
qhp.Qt.customFilters.Qt.filterAttributes = qt 4.8.0
qhp.Qt.subprojects = classes overviews examples
+qhp.Qt.subprojects = classes qmlelements 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.qmlelements.title = QML Elements
+qhp.Qt.subprojects.qmlelements.indexTitle = QML Elements
+qhp.Qt.subprojects.qmlelements.selectors = fake:qmlclass
+qhp.Qt.subprojects.qmlelements.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
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/tree.cpp b/tools/qdoc3/tree.cpp
index 540ffa9383..d1e2c60116 100644
--- a/tools/qdoc3/tree.cpp
+++ b/tools/qdoc3/tree.cpp
@@ -1543,8 +1543,72 @@ bool Tree::generateIndexSection(QXmlStreamWriter &writer,
return true;
}
+
/*!
- */
+ Returns true if the node \a n1 is less than node \a n2.
+ The comparison is performed by comparing properties of the nodes in order
+ of increasing complexity.
+*/
+bool compareNodes(const Node *n1, const Node *n2)
+{
+ // Private nodes can occur in any order since they won't normally be
+ // written to the index.
+ if (n1->access() == Node::Private && n2->access() == Node::Private)
+ return true;
+
+ if (n1->location().filePath() < n2->location().filePath())
+ return true;
+ else if (n1->location().filePath() > n2->location().filePath())
+ return false;
+
+ if (n1->type() < n2->type())
+ return true;
+ else if (n1->type() > n2->type())
+ return false;
+
+ if (n1->name() < n2->name())
+ return true;
+ else if (n1->name() > n2->name())
+ return false;
+
+ if (n1->access() < n2->access())
+ return true;
+ else if (n1->access() > n2->access())
+ return false;
+
+ if (n1->type() == Node::Function && n2->type() == Node::Function) {
+ const FunctionNode *f1 = static_cast<const FunctionNode *>(n1);
+ const FunctionNode *f2 = static_cast<const FunctionNode *>(n2);
+
+ if (f1->isConst() < f2->isConst())
+ return true;
+ else if (f1->isConst() > f2->isConst())
+ return false;
+
+ if (f1->signature() < f2->signature())
+ return true;
+ else if (f1->signature() > f2->signature())
+ return false;
+ }
+
+ if (n1->type() == Node::Fake && n2->type() == Node::Fake) {
+ const FakeNode *f1 = static_cast<const FakeNode *>(n1);
+ const FakeNode *f2 = static_cast<const FakeNode *>(n2);
+ if (f1->fullTitle() < f2->fullTitle())
+ return true;
+ else if (f1->fullTitle() > f2->fullTitle())
+ return false;
+ }
+
+ return false;
+}
+
+/*!
+ Generate index sections for the child nodes of the given \a node
+ using the \a writer specified. If \a generateInternalNodes is true,
+ nodes marked as internal will be included in the index; otherwise,
+ they will be omitted.
+*/
void Tree::generateIndexSections(QXmlStreamWriter &writer,
const Node *node,
bool generateInternalNodes) const
@@ -1554,7 +1618,10 @@ void Tree::generateIndexSections(QXmlStreamWriter &writer,
if (node->isInnerNode()) {
const InnerNode *inner = static_cast<const InnerNode *>(node);
- foreach (const Node *child, inner->childNodes()) {
+ NodeList cnodes = inner->childNodes();
+ qSort(cnodes.begin(), cnodes.end(), compareNodes);
+
+ foreach (const Node *child, cnodes) {
/*
Don't generate anything for a QML property group node.
It is just a place holder for a collection of QML property
diff --git a/tools/qmeegographicssystemhelper/qmeegofencesync.cpp b/tools/qmeegographicssystemhelper/qmeegofencesync.cpp
new file mode 100644
index 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/qmeegographicssystemhelper/qmeegofencesync_p.h b/tools/qmeegographicssystemhelper/qmeegofencesync_p.h
new file mode 100644
index 0000000000..8a5d26e5a5
--- /dev/null
+++ b/tools/qmeegographicssystemhelper/qmeegofencesync_p.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmeegofencesync.h"
+
+#ifndef QMEEGOFENCESYNC_P_H
+#define QMEEGOFENCESYNC_P_H
+
+class QMeeGoFenceSyncPrivate
+{
+public:
+ Q_DECLARE_PUBLIC(QMeeGoFenceSync);
+ QMeeGoFenceSyncPrivate();
+
+ virtual ~QMeeGoFenceSyncPrivate();
+
+ void* syncObject;
+
+ QMeeGoFenceSync *q_ptr;
+};
+
+#endif
diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h
index 2bb75eb9b6..2baacbbe1a 100644
--- a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h
+++ b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h
@@ -147,7 +147,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..161a31bfbd 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
+SOURCES = qmeegographicssystemhelper.cpp qmeegooverlaywidget.cpp qmeegoruntime.cpp qmeegolivepixmap.cpp qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h qmeegofencesync.cpp
diff --git a/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp b/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp
index 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/qml/main.cpp b/tools/qml/main.cpp
index 00d43c1a7d..579f1abf6f 100644
--- a/tools/qml/main.cpp
+++ b/tools/qml/main.cpp
@@ -172,6 +172,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 +306,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")) {
diff --git a/tools/qml/qdeclarativetester.cpp b/tools/qml/qdeclarativetester.cpp
index 9864df63ce..a516fd73aa 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)
@@ -258,7 +285,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 +336,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 +355,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..78bc409785 100644
--- a/tools/qml/qmlruntime.cpp
+++ b/tools/qml/qmlruntime.cpp
@@ -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 0d6b4dac77..f2e26d7c39 100644
--- a/tools/qtconfig/mainwindow.cpp
+++ b/tools/qtconfig/mainwindow.cpp
@@ -82,7 +82,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>"
@@ -96,9 +96,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. "
@@ -115,9 +115,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>"
@@ -132,10 +132,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."
@@ -146,14 +146,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/deployment.cpp b/tools/qtestlib/wince/cetest/deployment.cpp
index 95768f9b3a..e74c72bc29 100644
--- a/tools/qtestlib/wince/cetest/deployment.cpp
+++ b/tools/qtestlib/wince/cetest/deployment.cpp
@@ -227,9 +227,9 @@ void DeploymentHandler::initProjectDeploy(QMakeProject* project, DeploymentList
return;
for (int it = 0; it < list.size(); ++it) {
- QString argSource = list.at(it) + QString(".sources");
+ QString argSource = list.at(it);
QString argPath = list.at(it) + QString(".path");
- if ((project->values(argSource).isEmpty() || project->values(argPath).isEmpty()) && list.at(it) != "deploy") {
+ if (((project->values(argSource + QString(".files")).isEmpty() && project->values(argSource + QString(".sources")).isEmpty()) || project->values(argPath).isEmpty()) && list.at(it) != "deploy") {
debugOutput(QString::fromLatin1("cannot deploy \"%1\" because of missing data.").arg(list.at(it)), 0);
continue;
}
@@ -240,7 +240,7 @@ void DeploymentHandler::initProjectDeploy(QMakeProject* project, DeploymentList
if (!addPath.startsWith("/") && !addPath.startsWith(QLatin1String("\\")))
addPath = targetPath + "/" + addPath;
- QStringList addSources = project->values(argSource);
+ QStringList addSources = project->values(argSource + QString(".files")) + project->values(argSource + QString(".sources"));
addSources.replaceInStrings(QLatin1String("/"), QLatin1String("\\"));
for(int index=0; index < addSources.size(); ++index) {
QString dirstr = qmake_getpwd();
@@ -264,7 +264,7 @@ void DeploymentHandler::initProjectDeploy(QMakeProject* project, DeploymentList
continue;
}
QString appendedQmakeDeploy = QString::fromLatin1("_q_make_additional_deploy_%1").arg(addQMakeDeployCounter++);
- project->parse(appendedQmakeDeploy + QLatin1String(".sources = \"") + wildInfo.absoluteFilePath());
+ project->parse(appendedQmakeDeploy + QLatin1String(".files = \"") + wildInfo.absoluteFilePath());
project->parse(appendedQmakeDeploy + QLatin1String(".path = \"") + addPath);
list.append(appendedQmakeDeploy);
}
@@ -276,7 +276,7 @@ void DeploymentHandler::initProjectDeploy(QMakeProject* project, DeploymentList
QStringList additionalEntries = additionalDir.entryList(QDir::NoDotAndDotDot | QDir::AllEntries | QDir::NoSymLinks);
foreach(QString item, additionalEntries) {
QString appendedDeploy = QString::fromLatin1("_q_make_additional_deploy_%1").arg(addQMakeDeployCounter++);
- project->parse(appendedDeploy + QLatin1String(".sources = \"") + Option::fixPathToLocalOS(additionalDir.absoluteFilePath(item)) + QLatin1String("\""));
+ project->parse(appendedDeploy + QLatin1String(".files = \"") + Option::fixPathToLocalOS(additionalDir.absoluteFilePath(item)) + QLatin1String("\""));
QString appendTargetPath = project->values(argPath).join(QLatin1String(" "));
if (appendTargetPath == QLatin1String("."))
appendTargetPath = filestr;
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/serenum_unix.cpp b/tools/runonphone/serenum_unix.cpp
index db6375e03e..f5b2521bd2 100644
--- a/tools/runonphone/serenum_unix.cpp
+++ b/tools/runonphone/serenum_unix.cpp
@@ -100,7 +100,7 @@ QList<SerialPortId> enumerateSerialPorts(int loglevel)
// data transmission.
// the extra info stores that as a index for the interface
if (buf[0] >= 5 && buf[1] == 36 && buf[2] == 6) { // CDC Union
- for (int i = 4; i < buf[0]; i++)
+ for (int i = 3; i < buf[0]; i++)
usableInterfaces.append((int) buf[i]);
}
size -= buf[0];
@@ -146,32 +146,17 @@ QList<SerialPortId> enumerateSerialPorts(int loglevel)
// second loop to find the actual data interface.
foreach (int i, usableInterfaces) {
- for (int m = 0; m < usbConfig.bNumInterfaces; ++m) {
- for (int o = 0; o < usbConfig.interface[m].num_altsetting; ++o) {
- struct usb_interface_descriptor &descriptor = usbConfig.interface[m].altsetting[o];
- if (descriptor.bInterfaceNumber != i)
- continue;
- if (descriptor.bInterfaceClass == 10) { // "CDC Data"
- if (loglevel > 1) {
- qDebug() << " found the data port"
- << "bus:" << bus->dirname
- << "device" << device->filename
- << "interface" << descriptor.bInterfaceNumber;
- }
- // ### manufacturer and product strings are only readable as root :(
- if (!manufacturerString.isEmpty() && !productString.isEmpty()) {
- eligibleInterfaces << QString("usb-%1_%2-if%3")
- .arg(manufacturerString.replace(QChar(' '), QChar('_')))
- .arg(productString.replace(QChar(' '), QChar('_')))
- .arg(i, 2, 16, QChar('0'));
- } else {
- eligibleInterfaces << QString("if%1").arg(i, 2, 16, QChar('0')); // fix!
- }
- eligibleInterfacesInfo << InterfaceInfo(manufacturerString, productString, device->descriptor.idVendor, device->descriptor.idProduct);
- }
- }
+ // ### manufacturer and product strings are only readable as root :(
+ if (!manufacturerString.isEmpty() && !productString.isEmpty()) {
+ eligibleInterfaces << QString("usb-%1_%2-if%3")
+ .arg(manufacturerString.replace(QChar(' '), QChar('_')))
+ .arg(productString.replace(QChar(' '), QChar('_')))
+ .arg(i, 2, 16, QChar('0'));
+ } else {
+ eligibleInterfaces << QString("if%1").arg(i, 2, 16, QChar('0')); // fix!
}
}
+ eligibleInterfacesInfo << InterfaceInfo(manufacturerString, productString, device->descriptor.idVendor, device->descriptor.idProduct);
}
}
}
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/tools.pro b/tools/tools.pro
index 8f23fe46c0..e82bcaab27 100644
--- a/tools/tools.pro
+++ b/tools/tools.pro
@@ -20,7 +20,7 @@ TEMPLATE = subdirs
SUBDIRS += designer
}
}
- unix:!mac:!embedded:contains(QT_CONFIG, qt3support):SUBDIRS += qtconfig
+ unix:!mac:!embedded:!qpa:contains(QT_CONFIG, qt3support):SUBDIRS += qtconfig
win32:!wince*:SUBDIRS += activeqt
}
contains(QT_CONFIG, declarative):SUBDIRS += qml
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/qlalr/doc/src/qlalr.qdoc b/util/qlalr/doc/src/qlalr.qdoc
index dffef5a39f..0d5fbb9d9f 100644
--- a/util/qlalr/doc/src/qlalr.qdoc
+++ b/util/qlalr/doc/src/qlalr.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/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