summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Alpert <alan.alpert@nokia.com>2010-03-01 11:24:27 (GMT)
committerAlan Alpert <alan.alpert@nokia.com>2010-03-01 11:24:27 (GMT)
commit4cc9d165663728cb08b3269ea88a584410b79b70 (patch)
treed1e1993be1d929a00478be0629d9fec910dd86ca
parent3a4dc08d08ce0388dd183a24923871e3e03ba531 (diff)
parent049330b4a54836f227a0e179082527a5272e868d (diff)
downloadQt-4cc9d165663728cb08b3269ea88a584410b79b70.zip
Qt-4cc9d165663728cb08b3269ea88a584410b79b70.tar.gz
Qt-4cc9d165663728cb08b3269ea88a584410b79b70.tar.bz2
Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-qml
-rw-r--r--config.tests/x11/xvideo/xvideo.cpp52
-rw-r--r--config.tests/x11/xvideo/xvideo.pro4
-rwxr-xr-xconfigure95
-rwxr-xr-xconfigure.exebin1221632 -> 1223168 bytes
-rw-r--r--demos/declarative/flickr/common/ImageDetails.qml16
-rw-r--r--demos/declarative/flickr/flickr-desktop.qml6
-rw-r--r--demos/declarative/flickr/flickr-mobile-90.qml1
-rw-r--r--demos/declarative/flickr/flickr-mobile.qml6
-rw-r--r--demos/declarative/flickr/mobile/GridDelegate.qml6
-rw-r--r--demos/declarative/flickr/mobile/ImageDetails.qml15
-rw-r--r--demos/declarative/webbrowser/content/FlickableWebView.qml23
-rw-r--r--demos/declarative/webbrowser/content/RetractingWebBrowserHeader.qml57
-rw-r--r--demos/declarative/webbrowser/webbrowser.qml8
-rw-r--r--demos/embedded/desktopservices/contenttab.cpp14
-rw-r--r--doc/src/declarative/elements.qdoc2
-rw-r--r--doc/src/declarative/extending.qdoc5
-rw-r--r--doc/src/development/qmake-manual.qdoc9
-rw-r--r--doc/src/examples/scribble.qdoc5
-rw-r--r--doc/src/files-and-resources/datastreamformat.qdoc19
-rw-r--r--doc/src/legal/3rdparty.qdoc44
-rw-r--r--doc/src/platforms/emb-directfb-EmbLinux.qdoc8
-rw-r--r--doc/src/qt4-intro.qdoc21
-rw-r--r--doc/src/snippets/code/doc_src_qmake-manual.qdoc13
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp2
-rw-r--r--examples/declarative/animations/easing.qml2
-rw-r--r--examples/declarative/connections/connections.qml4
-rw-r--r--examples/declarative/listview/recipes.qml6
-rw-r--r--examples/declarative/parallax/qml/ParallaxView.qml4
-rw-r--r--examples/declarative/plugins/plugin.cpp5
-rw-r--r--examples/declarative/progressbar/progressbars.qml2
-rw-r--r--examples/declarative/scrollbar/display.qml4
-rw-r--r--examples/declarative/velocity/velocity.qml2
-rw-r--r--examples/declarative/webview/qdeclarative-in-html.qml4
-rw-r--r--examples/network/http/httpwindow.cpp129
-rw-r--r--examples/network/http/httpwindow.h23
-rw-r--r--examples/network/http/main.cpp1
-rw-r--r--examples/network/loopback/dialog.cpp10
-rw-r--r--mkspecs/aix-g++-64/qmake.conf1
-rw-r--r--mkspecs/aix-g++/qmake.conf1
-rw-r--r--mkspecs/aix-xlc-64/qmake.conf1
-rw-r--r--mkspecs/aix-xlc/qmake.conf1
-rw-r--r--mkspecs/common/qws.conf1
-rw-r--r--mkspecs/common/symbian/symbian.conf7
-rw-r--r--mkspecs/cygwin-g++/qmake.conf1
-rw-r--r--mkspecs/darwin-g++/qmake.conf1
-rw-r--r--mkspecs/features/default_post.prf11
-rw-r--r--mkspecs/features/qttest_p4.prf24
-rw-r--r--mkspecs/features/symbian/add_mmp_rules.prf33
-rw-r--r--mkspecs/freebsd-g++/qmake.conf1
-rw-r--r--mkspecs/freebsd-g++34/qmake.conf1
-rw-r--r--mkspecs/freebsd-g++40/qmake.conf1
-rw-r--r--mkspecs/freebsd-icc/qmake.conf1
-rw-r--r--mkspecs/hpux-acc-64/qmake.conf1
-rw-r--r--mkspecs/hpux-acc-o64/qmake.conf1
-rw-r--r--mkspecs/hpux-acc/qmake.conf1
-rw-r--r--mkspecs/hpux-g++-64/qmake.conf1
-rw-r--r--mkspecs/hpux-g++/qmake.conf1
-rw-r--r--mkspecs/hpuxi-acc-32/qmake.conf1
-rw-r--r--mkspecs/hpuxi-acc-64/qmake.conf1
-rw-r--r--mkspecs/hpuxi-g++-64/qmake.conf1
-rw-r--r--mkspecs/hurd-g++/qmake.conf1
-rw-r--r--mkspecs/irix-cc-64/qmake.conf1
-rw-r--r--mkspecs/irix-cc/qmake.conf1
-rw-r--r--mkspecs/irix-g++-64/qmake.conf1
-rw-r--r--mkspecs/irix-g++/qmake.conf1
-rw-r--r--mkspecs/linux-cxx/qmake.conf1
-rw-r--r--mkspecs/linux-ecc-64/qmake.conf1
-rw-r--r--mkspecs/linux-g++-32/qmake.conf1
-rw-r--r--mkspecs/linux-g++-64/qmake.conf1
-rw-r--r--mkspecs/linux-g++-maemo/qmake.conf1
-rw-r--r--mkspecs/linux-g++/qmake.conf1
-rw-r--r--mkspecs/linux-icc/qmake.conf1
-rw-r--r--mkspecs/linux-kcc/qmake.conf1
-rw-r--r--mkspecs/linux-llvm/qmake.conf1
-rw-r--r--mkspecs/linux-lsb-g++/qmake.conf1
-rw-r--r--mkspecs/linux-pgcc/qmake.conf1
-rw-r--r--mkspecs/lynxos-g++/qmake.conf1
-rw-r--r--mkspecs/macx-g++/qmake.conf1
-rw-r--r--mkspecs/macx-g++40/qmake.conf1
-rw-r--r--mkspecs/macx-g++42/qmake.conf1
-rw-r--r--mkspecs/macx-icc/qmake.conf1
-rw-r--r--mkspecs/macx-llvm/qmake.conf1
-rw-r--r--mkspecs/macx-xlc/qmake.conf1
-rw-r--r--mkspecs/netbsd-g++/qmake.conf1
-rw-r--r--mkspecs/openbsd-g++/qmake.conf1
-rw-r--r--mkspecs/qws/freebsd-generic-g++/qmake.conf1
-rw-r--r--mkspecs/qws/macx-generic-g++/qmake.conf1
-rw-r--r--mkspecs/qws/solaris-generic-g++/qmake.conf1
-rw-r--r--mkspecs/sco-cc/qmake.conf1
-rw-r--r--mkspecs/sco-g++/qmake.conf1
-rw-r--r--mkspecs/solaris-cc-64/qmake.conf1
-rw-r--r--mkspecs/solaris-cc/qmake.conf1
-rw-r--r--mkspecs/solaris-g++-64/qmake.conf1
-rw-r--r--mkspecs/solaris-g++/qmake.conf1
-rw-r--r--mkspecs/symbian-abld/qmake.conf1
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm2
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm8
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_post_link.flm2
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_store_build.flm3
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qt.xml2
-rw-r--r--mkspecs/symbian-sbsv2/qmake.conf1
-rw-r--r--mkspecs/tru64-cxx/qmake.conf1
-rw-r--r--mkspecs/tru64-g++/qmake.conf1
-rw-r--r--mkspecs/unixware-cc/qmake.conf1
-rw-r--r--mkspecs/unixware-g++/qmake.conf1
-rw-r--r--mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf1
-rw-r--r--mkspecs/unsupported/qnx-g++/qmake.conf1
-rw-r--r--mkspecs/unsupported/qws/qnx-641/qmake.conf1
-rw-r--r--mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf1
-rw-r--r--mkspecs/unsupported/qws/qnx-i386-g++/qmake.conf1
-rw-r--r--mkspecs/unsupported/qws/qnx-ppc-g++/qmake.conf1
-rw-r--r--mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf1
-rw-r--r--mkspecs/unsupported/vxworks-ppc-g++/qmake.conf1
-rw-r--r--mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf1
-rw-r--r--mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf1
-rw-r--r--qmake/generators/makefile.cpp14
-rw-r--r--qmake/generators/makefile.h3
-rw-r--r--qmake/generators/metamakefile.cpp48
-rw-r--r--qmake/generators/metamakefile.h5
-rw-r--r--qmake/generators/projectgenerator.cpp9
-rw-r--r--qmake/generators/symbian/initprojectdeploy_symbian.cpp109
-rw-r--r--qmake/generators/symbian/initprojectdeploy_symbian.h2
-rw-r--r--qmake/generators/symbian/symmake.cpp86
-rw-r--r--qmake/generators/symbian/symmake.h4
-rw-r--r--qmake/generators/symbian/symmake_abld.cpp53
-rw-r--r--qmake/generators/symbian/symmake_abld.h2
-rw-r--r--qmake/generators/symbian/symmake_sbsv2.cpp47
-rw-r--r--qmake/generators/symbian/symmake_sbsv2.h2
-rw-r--r--qmake/generators/win32/winmakefile.cpp17
-rw-r--r--qmake/generators/win32/winmakefile.h1
-rw-r--r--qmake/main.cpp2
-rw-r--r--qmake/option.cpp58
-rw-r--r--qmake/option.h10
-rw-r--r--qmake/project.cpp208
-rw-r--r--qmake/project.h8
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp6
-rw-r--r--src/3rdparty/libpng/png.h2
-rw-r--r--src/3rdparty/libpng/pngconf.h2
-rw-r--r--src/3rdparty/libpng/pngpriv.h4
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_wince.c281
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp4
-rw-r--r--src/activeqt/container/qaxbase.cpp4
-rw-r--r--src/activeqt/container/qaxwidget.cpp34
-rw-r--r--src/activeqt/control/qaxserverbase.cpp10
-rw-r--r--src/corelib/concurrent/qfuturewatcher.cpp7
-rw-r--r--src/corelib/corelib.pro22
-rw-r--r--src/corelib/global/qglobal.h5
-rw-r--r--src/corelib/global/qlibraryinfo.cpp2
-rw-r--r--src/corelib/io/qdatastream.cpp5
-rw-r--r--src/corelib/io/qdir.cpp7
-rw-r--r--src/corelib/io/qfilesystemwatcher_fsevents.cpp11
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp2
-rw-r--r--src/corelib/io/qiodevice.cpp4
-rw-r--r--src/corelib/io/qresource.cpp9
-rw-r--r--src/corelib/io/qurl.cpp34
-rw-r--r--src/corelib/io/qurl.h4
-rw-r--r--src/corelib/kernel/qcoreapplication_win.cpp12
-rw-r--r--src/corelib/kernel/qmetatype.cpp249
-rw-r--r--src/corelib/kernel/qvariant.cpp4
-rw-r--r--src/corelib/thread/qmutex.cpp7
-rw-r--r--src/corelib/tools/qeasingcurve.cpp8
-rw-r--r--src/corelib/tools/qhash.h3
-rw-r--r--src/corelib/tools/qlist.h34
-rw-r--r--src/corelib/tools/qlocale.cpp10
-rw-r--r--src/corelib/tools/qlocale_symbian.cpp6
-rw-r--r--src/corelib/tools/qmap.h3
-rw-r--r--src/corelib/tools/qregexp.cpp11
-rw-r--r--src/corelib/tools/qscopedpointer.cpp55
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h1
-rw-r--r--src/corelib/tools/qsimd.cpp246
-rw-r--r--src/corelib/tools/qsimd_p.h126
-rw-r--r--src/corelib/tools/qstring.cpp112
-rw-r--r--src/corelib/tools/qstring.h10
-rw-r--r--src/corelib/tools/qstringbuilder.h40
-rw-r--r--src/corelib/tools/tools.pri2
-rw-r--r--src/declarative/QmlChanges.txt10
-rw-r--r--src/declarative/graphicsitems/qdeclarativeeffects.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeevents.cpp1
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable.cpp138
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable_p.h37
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable_p_p.h8
-rw-r--r--src/declarative/graphicsitems/qdeclarativegridview.cpp29
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage.cpp12
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage_p.h1
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.cpp8
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp42
-rw-r--r--src/declarative/graphicsitems/qdeclarativeparticles.cpp12
-rw-r--r--src/declarative/graphicsitems/qdeclarativepathview.cpp6
-rw-r--r--src/declarative/graphicsitems/qdeclarativepositioners_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativewebview.cpp3
-rw-r--r--src/declarative/qml/parser/qdeclarativejs.g45
-rw-r--r--src/declarative/qml/parser/qdeclarativejsast_p.h11
-rw-r--r--src/declarative/qml/parser/qdeclarativejsgrammar.cpp1595
-rw-r--r--src/declarative/qml/parser/qdeclarativejsgrammar_p.h33
-rw-r--r--src/declarative/qml/parser/qdeclarativejslexer.cpp2
-rw-r--r--src/declarative/qml/parser/qdeclarativejsparser.cpp424
-rw-r--r--src/declarative/qml/parser/qdeclarativejsparser_p.h4
-rw-r--r--src/declarative/qml/qdeclarativebinding.cpp16
-rw-r--r--src/declarative/qml/qdeclarativebinding_p.h26
-rw-r--r--src/declarative/qml/qdeclarativebinding_p_p.h4
-rw-r--r--src/declarative/qml/qdeclarativeboundsignal.cpp4
-rw-r--r--src/declarative/qml/qdeclarativecompiledbindings.cpp12
-rw-r--r--src/declarative/qml/qdeclarativecompiler.cpp28
-rw-r--r--src/declarative/qml/qdeclarativecompiler_p.h3
-rw-r--r--src/declarative/qml/qdeclarativecomponent.cpp6
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp33
-rw-r--r--src/declarative/qml/qdeclarativeengine_p.h3
-rw-r--r--src/declarative/qml/qdeclarativeenginedebug.cpp6
-rw-r--r--src/declarative/qml/qdeclarativeenginedebug_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeextensioninterface.h3
-rw-r--r--src/declarative/qml/qdeclarativeextensionplugin.cpp16
-rw-r--r--src/declarative/qml/qdeclarativeextensionplugin.h3
-rw-r--r--src/declarative/qml/qdeclarativeglobal_p.h2
-rw-r--r--src/declarative/qml/qdeclarativelist.cpp115
-rw-r--r--src/declarative/qml/qdeclarativemetatype.cpp2
-rw-r--r--src/declarative/qml/qdeclarativeobjectscriptclass.cpp4
-rw-r--r--src/declarative/qml/qdeclarativeproperty.cpp (renamed from src/declarative/qml/qdeclarativemetaproperty.cpp)412
-rw-r--r--src/declarative/qml/qdeclarativeproperty.h (renamed from src/declarative/qml/qdeclarativemetaproperty.h)87
-rw-r--r--src/declarative/qml/qdeclarativeproperty_p.h (renamed from src/declarative/qml/qdeclarativemetaproperty_p.h)44
-rw-r--r--src/declarative/qml/qdeclarativepropertyvalueinterceptor.cpp2
-rw-r--r--src/declarative/qml/qdeclarativepropertyvalueinterceptor.h4
-rw-r--r--src/declarative/qml/qdeclarativepropertyvaluesource.cpp2
-rw-r--r--src/declarative/qml/qdeclarativepropertyvaluesource.h4
-rw-r--r--src/declarative/qml/qdeclarativescript.cpp1
-rw-r--r--src/declarative/qml/qdeclarativevaluetype.cpp18
-rw-r--r--src/declarative/qml/qdeclarativevaluetype_p.h24
-rw-r--r--src/declarative/qml/qdeclarativevme.cpp28
-rw-r--r--src/declarative/qml/qdeclarativevmemetaobject.cpp2
-rw-r--r--src/declarative/qml/qml.pri6
-rw-r--r--src/declarative/util/qdeclarativeanimation.cpp314
-rw-r--r--src/declarative/util/qdeclarativeanimation_p.h52
-rw-r--r--src/declarative/util/qdeclarativeanimation_p_p.h32
-rw-r--r--src/declarative/util/qdeclarativebehavior.cpp13
-rw-r--r--src/declarative/util/qdeclarativebehavior_p.h2
-rw-r--r--src/declarative/util/qdeclarativebind.cpp4
-rw-r--r--src/declarative/util/qdeclarativeconnection.cpp287
-rw-r--r--src/declarative/util/qdeclarativeconnections.cpp245
-rw-r--r--src/declarative/util/qdeclarativeconnections_p.h (renamed from src/declarative/util/qdeclarativeconnection_p.h)43
-rw-r--r--src/declarative/util/qdeclarativeeasefollow.cpp7
-rw-r--r--src/declarative/util/qdeclarativeeasefollow_p.h4
-rw-r--r--src/declarative/util/qdeclarativefontloader.cpp1
-rw-r--r--src/declarative/util/qdeclarativelistmodel.cpp2
-rw-r--r--src/declarative/util/qdeclarativelistmodel_p.h2
-rw-r--r--src/declarative/util/qdeclarativepackage.cpp2
-rw-r--r--src/declarative/util/qdeclarativepropertychanges.cpp30
-rw-r--r--src/declarative/util/qdeclarativespringfollow.cpp5
-rw-r--r--src/declarative/util/qdeclarativespringfollow_p.h2
-rw-r--r--src/declarative/util/qdeclarativestate.cpp6
-rw-r--r--src/declarative/util/qdeclarativestate_p.h6
-rw-r--r--src/declarative/util/qdeclarativestate_p_p.h8
-rw-r--r--src/declarative/util/qdeclarativestategroup.cpp3
-rw-r--r--src/declarative/util/qdeclarativestateoperations.cpp167
-rw-r--r--src/declarative/util/qdeclarativestateoperations_p.h34
-rw-r--r--src/declarative/util/qdeclarativesystempalette.cpp1
-rw-r--r--src/declarative/util/qdeclarativetimer.cpp1
-rw-r--r--src/declarative/util/qdeclarativetransition.cpp2
-rw-r--r--src/declarative/util/qdeclarativetransition_p.h2
-rw-r--r--src/declarative/util/qdeclarativetransitionmanager.cpp22
-rw-r--r--src/declarative/util/qdeclarativeutilmodule.cpp6
-rw-r--r--src/declarative/util/qdeclarativexmllistmodel.cpp21
-rw-r--r--src/declarative/util/qdeclarativexmllistmodel_p.h2
-rw-r--r--src/declarative/util/util.pri4
-rw-r--r--src/gui/dialogs/qcolordialog_mac.mm10
-rw-r--r--src/gui/dialogs/qfontdialog.cpp64
-rw-r--r--src/gui/dialogs/qfontdialog.h3
-rw-r--r--src/gui/dialogs/qfontdialog_mac.mm148
-rw-r--r--src/gui/dialogs/qfontdialog_p.h6
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp19
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h11
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp458
-rw-r--r--src/gui/graphicsview/qgraphicsscene_p.h15
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp27
-rw-r--r--src/gui/image/qnativeimage.cpp2
-rw-r--r--src/gui/image/qpaintengine_pic.cpp5
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp40
-rw-r--r--src/gui/itemviews/qabstractproxymodel.cpp1
-rw-r--r--src/gui/itemviews/qheaderview.cpp9
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.cpp8
-rw-r--r--src/gui/itemviews/qtreeview.cpp13
-rw-r--r--src/gui/kernel/qapplication_s60.cpp8
-rw-r--r--src/gui/kernel/qapplication_win.cpp5
-rw-r--r--src/gui/kernel/qapplication_x11.cpp76
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm57
-rw-r--r--src/gui/kernel/qcocoaview_mac_p.h1
-rw-r--r--src/gui/kernel/qgesture_p.h2
-rw-r--r--src/gui/kernel/qgesturerecognizer.cpp1
-rw-r--r--src/gui/kernel/qkeymapper_p.h6
-rw-r--r--src/gui/kernel/qkeymapper_s60.cpp298
-rw-r--r--src/gui/kernel/qkeymapper_win.cpp2
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac.mm10
-rw-r--r--src/gui/kernel/qwidget.cpp52
-rw-r--r--src/gui/kernel/qwidget_mac.mm14
-rw-r--r--src/gui/kernel/qwidget_p.h2
-rw-r--r--src/gui/painting/qdrawhelper.cpp233
-rw-r--r--src/gui/painting/qdrawhelper_p.h11
-rw-r--r--src/gui/painting/qdrawutil.cpp210
-rw-r--r--src/gui/painting/qdrawutil.h25
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp3
-rw-r--r--src/gui/painting/qpaintengineex.cpp21
-rw-r--r--src/gui/painting/qpaintengineex_p.h2
-rw-r--r--src/gui/painting/qpainter.cpp209
-rw-r--r--src/gui/painting/qpainter.h26
-rw-r--r--src/gui/painting/qpainter_p.h8
-rw-r--r--src/gui/painting/qprintengine_win.cpp3
-rw-r--r--src/gui/styles/qmacstyle_mac.mm2
-rw-r--r--src/gui/styles/qstylesheetstyle.cpp7
-rw-r--r--src/gui/text/qfont.h1
-rw-r--r--src/gui/text/qfontengine.cpp10
-rw-r--r--src/gui/text/qfontengine_win.cpp6
-rw-r--r--src/gui/text/qstatictext.cpp4
-rw-r--r--src/gui/widgets/qabstractslider.cpp53
-rw-r--r--src/gui/widgets/qdockarealayout.cpp3
-rw-r--r--src/gui/widgets/qlineedit_p.cpp2
-rw-r--r--src/multimedia/audio/qaudioinput.cpp74
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.cpp121
-rw-r--r--src/multimedia/audio/qaudioinput_win32_p.cpp42
-rw-r--r--src/multimedia/audio/qaudiooutput.cpp78
-rw-r--r--src/multimedia/audio/qaudiooutput_alsa_p.cpp64
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.cpp62
-rw-r--r--src/multimedia/base/qgraphicsvideoitem.cpp3
-rw-r--r--src/multimedia/base/qmediacontent.cpp10
-rw-r--r--src/multimedia/base/qmediacontent.h1
-rw-r--r--src/multimedia/base/qmediacontrol.cpp1
-rw-r--r--src/multimedia/base/qmediaobject.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylist.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylistcontrol.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylistioplugin.cpp3
-rw-r--r--src/multimedia/base/qmediaplaylistnavigator.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylistprovider.cpp1
-rw-r--r--src/multimedia/base/qmediaresource.cpp1
-rw-r--r--src/multimedia/base/qmediaservice.cpp1
-rw-r--r--src/multimedia/base/qmediaserviceprovider.cpp6
-rw-r--r--src/multimedia/base/qmediatimerange.cpp2
-rw-r--r--src/multimedia/base/qmetadatacontrol.cpp2
-rw-r--r--src/multimedia/base/qvideodevicecontrol.cpp1
-rw-r--r--src/multimedia/base/qvideooutputcontrol.cpp2
-rw-r--r--src/multimedia/base/qvideorenderercontrol.cpp2
-rw-r--r--src/multimedia/base/qvideowidget.cpp2
-rw-r--r--src/multimedia/base/qvideowidgetcontrol.cpp2
-rw-r--r--src/multimedia/base/qvideowindowcontrol.cpp1
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp2
-rw-r--r--src/multimedia/playback/qmediaplayercontrol.cpp2
-rw-r--r--src/multimedia/qml/multimediadeclarative.cpp9
-rw-r--r--src/multimedia/qml/multimediadeclarative.h4
-rw-r--r--src/multimedia/qml/qdeclarativeaudio.cpp1
-rw-r--r--src/multimedia/qml/qdeclarativevideo.cpp1
-rw-r--r--src/multimedia/qml/qsoundeffect.cpp1
-rw-r--r--src/multimedia/qml/qsoundeffect_pulse_p.cpp5
-rw-r--r--src/multimedia/qml/qsoundeffect_qmedia_p.cpp4
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp18
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp2
-rw-r--r--src/network/access/qnetworkaccessdatabackend.cpp7
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend.cpp4
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp9
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp2
-rw-r--r--src/network/access/qnetworkreplyimpl_p.h2
-rw-r--r--src/network/access/qnetworkrequest.cpp2
-rw-r--r--src/network/kernel/qhostinfo.cpp2
-rw-r--r--src/network/kernel/qhostinfo_unix.cpp4
-rw-r--r--src/network/socket/qabstractsocket.cpp10
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp51
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h4
-rw-r--r--src/opengl/qgl.cpp2
-rw-r--r--src/openvg/qpaintengine_vg.cpp154
-rw-r--r--src/openvg/qpaintengine_vg_p.h2
-rw-r--r--src/plugins/bearer/corewlan/qcorewlanengine.mm122
-rw-r--r--src/plugins/bearer/generic/qgenericengine.cpp13
-rw-r--r--src/plugins/bearer/icd/qnetworksession_impl.cpp6
-rw-r--r--src/plugins/bearer/qnetworksession_impl.cpp8
-rw-r--r--src/plugins/bearer/symbian/symbian.pro1
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp23
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.h3
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp89
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h3
-rw-r--r--src/plugins/imageformats/tiff/tiff.pro5
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowaudioendpointcontrol.cpp11
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowglobal.h81
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowioreader.cpp2
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.cpp10
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.h4
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowmediatype.cpp34
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowmetadatacontrol.cpp4
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowmetadatacontrol.h3
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowplayercontrol.cpp2
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowplayerservice.cpp98
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/directshowplayerservice.h1
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/mediaplayer.pri2
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/videosurfacefilter.cpp18
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/videosurfacefilter.h4
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/vmr9videowindowcontrol.cpp27
-rw-r--r--src/plugins/mediaservices/gstreamer/gstreamer.pro12
-rw-r--r--src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp5
-rw-r--r--src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp5
-rw-r--r--src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp6
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamerbushelper.cpp3
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp6
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp6
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamervideooutputcontrol.cpp5
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamervideooverlay.cpp5
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamervideorenderer.cpp6
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamervideorendererinterface.cpp6
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamervideorendererinterface.h4
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamervideowidget.cpp6
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstvideobuffer.cpp4
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.cpp6
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.h6
-rw-r--r--src/plugins/mediaservices/gstreamer/qvideosurfacegstsink.cpp6
-rw-r--r--src/plugins/mediaservices/gstreamer/qx11videosurface.cpp6
-rw-r--r--src/plugins/mediaservices/mediaservices.pro13
-rw-r--r--src/plugins/mediaservices/qt7/mediaplayer/qt7playermetadata.mm74
-rw-r--r--src/plugins/mediaservices/qt7/mediaplayer/qt7playerservice.mm3
-rw-r--r--src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.h6
-rw-r--r--src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm94
-rw-r--r--src/plugins/mediaservices/qt7/qt7movierenderer.mm21
-rw-r--r--src/plugins/mediaservices/qt7/qt7movievideowidget.mm17
-rw-r--r--src/plugins/qdeclarativemodules/multimedia/multimedia.cpp4
-rw-r--r--src/plugins/qdeclarativemodules/widgets/widgets.cpp9
-rw-r--r--src/qbase.pri1
-rw-r--r--src/qt3support/text/q3richtext.cpp2
-rw-r--r--src/qt3support/text/q3textedit.cpp2
-rw-r--r--src/qt3support/text/q3textstream.cpp2
-rw-r--r--src/qt3support/tools/q3gcache.cpp10
-rw-r--r--src/qt3support/tools/q3gdict.cpp4
-rw-r--r--src/script/api/qscriptengine.cpp2
-rw-r--r--src/script/api/qscriptengine_p.h14
-rw-r--r--src/sql/drivers/oci/qsql_oci.cpp6
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp2
-rw-r--r--src/svg/qgraphicssvgitem.cpp4
-rw-r--r--tests/auto/auto.pro12
-rw-r--r--tests/auto/declarative/declarative.pro2
-rw-r--r--tests/auto/declarative/qdeclarativeconnection/data/test-connection.qml2
-rw-r--r--tests/auto/declarative/qdeclarativeconnection/data/test-connection2.qml2
-rw-r--r--tests/auto/declarative/qdeclarativeconnection/data/test-connection3.qml2
-rw-r--r--tests/auto/declarative/qdeclarativeconnection/data/trimming.qml2
-rw-r--r--tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp14
-rw-r--r--tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp6
-rw-r--r--tests/auto/declarative/qdeclarativeflickable/data/flickable02.qml2
-rw-r--r--tests/auto/declarative/qdeclarativeflickable/data/flickable03.qml2
-rw-r--r--tests/auto/declarative/qdeclarativeflickable/data/flickable04.qml2
-rw-r--r--tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp13
-rw-r--r--tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp30
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/testtypes.h6
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp10
-rw-r--r--tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp12
-rw-r--r--tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp34
-rw-r--r--tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp4
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/com/nokia/AutoTestQmlPluginType/qmldir1
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.cpp9
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro3
-rw-r--r--tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro1
-rw-r--r--tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro (renamed from tests/auto/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro)2
-rw-r--r--tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp (renamed from tests/auto/declarative/qdeclarativemetaproperty/tst_qdeclarativemetaproperty.cpp)708
-rw-r--r--tests/auto/declarative/qdeclarativestates/data/basicChanges4.qml19
-rw-r--r--tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp77
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/testtypes.h12
-rw-r--r--tests/auto/declarative/qdeclarativewebview/data/forward.html2
-rw-r--r--tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp2
-rw-r--r--tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp130
-rw-r--r--tests/auto/declarative/visual/qdeclarativeflickable/flickable-horizontal.qml2
-rw-r--r--tests/auto/declarative/visual/qdeclarativeflickable/flickable-vertical.qml2
-rw-r--r--tests/auto/gestures/tst_gestures.cpp141
-rw-r--r--tests/auto/headers/headers.pro2
-rw-r--r--tests/auto/headers/headersclean.cpp86
-rw-r--r--tests/auto/qabstractproxymodel/tst_qabstractproxymodel.cpp82
-rw-r--r--tests/auto/qchar/qchar.pro1
-rw-r--r--tests/auto/qchar/tst_qchar.cpp5
-rw-r--r--tests/auto/qdatastream/tst_qdatastream.cpp69
-rw-r--r--tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp55
-rw-r--r--tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro2
-rw-r--r--tests/auto/qdeclarativevideo/qdeclarativevideo.pro2
-rw-r--r--tests/auto/qeasingcurve/tst_qeasingcurve.cpp54
-rw-r--r--tests/auto/qgl/tst_qgl.cpp103
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp36
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp26
-rw-r--r--tests/auto/qmediacontent/tst_qmediacontent.cpp1
-rw-r--r--tests/auto/qpainter/tst_qpainter.cpp48
-rw-r--r--tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp29
-rw-r--r--tests/auto/qregexp/tst_qregexp.cpp93
-rw-r--r--tests/auto/qscriptstring/tst_qscriptstring.cpp6
-rw-r--r--tests/auto/qscriptvalue/qscriptvalue.pro7
-rw-r--r--tests/auto/qscriptvalue/testgen/data.txt43
-rwxr-xr-xtests/auto/qscriptvalue/testgen/gen.py3
-rw-r--r--tests/auto/qscriptvalue/testgen/testgenerator.cpp8
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.h12
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp3725
-rw-r--r--tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp18
-rw-r--r--tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp38
-rw-r--r--tests/auto/qstatictext/qstatictext.pro2
-rw-r--r--tests/auto/qstatictext/tst_qstatictext.cpp37
-rw-r--r--tests/auto/qstring/tst_qstring.cpp107
-rw-r--r--tests/auto/qstringbuilder1/stringbuilder.cpp14
-rw-r--r--tests/auto/qtreeview/tst_qtreeview.cpp14
-rw-r--r--tests/auto/qurl/tst_qurl.cpp4
-rw-r--r--tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp2
-rw-r--r--tests/benchmarks/corelib/io/qdir/tree/4.6.0-list.txt11963
-rw-r--r--tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp173
-rw-r--r--tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.qrc5
-rw-r--r--tests/benchmarks/corelib/io/qdir/tree/tree.pro11
-rw-r--r--tests/benchmarks/corelib/io/qfileinfo/qfileinfo.pro2
-rw-r--r--tests/benchmarks/corelib/kernel/kernel.pro1
-rw-r--r--tests/benchmarks/corelib/kernel/qmetatype/qmetatype.pro7
-rw-r--r--tests/benchmarks/corelib/kernel/qmetatype/tst_qmetatype.cpp233
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/main.cpp2
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp7
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp6
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp6
-rw-r--r--tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp297
-rw-r--r--tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp9
-rw-r--r--tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro2
-rw-r--r--tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp25
-rw-r--r--tools/assistant/lib/qhelp_global.cpp2
-rw-r--r--tools/assistant/lib/qhelpdbreader.cpp2
-rw-r--r--tools/assistant/lib/qhelpsearchresultwidget.cpp2
-rw-r--r--tools/assistant/tools/assistant/bookmarkmanager.cpp2
-rw-r--r--tools/assistant/tools/assistant/cmdlineparser.cpp16
-rw-r--r--tools/assistant/tools/assistant/helpviewer.h2
-rw-r--r--tools/configure/configureapp.cpp13
-rw-r--r--tools/qdoc3/atom.cpp4
-rw-r--r--tools/qdoc3/atom.h2
-rw-r--r--tools/qdoc3/codemarker.cpp14
-rw-r--r--tools/qdoc3/codemarker.h2
-rw-r--r--tools/qdoc3/cppcodemarker.cpp36
-rw-r--r--tools/qdoc3/cppcodemarker.h2
-rw-r--r--tools/qdoc3/cppcodeparser.cpp40
-rw-r--r--tools/qdoc3/doc.cpp4
-rw-r--r--tools/qdoc3/generator.cpp30
-rw-r--r--tools/qdoc3/generator.h9
-rw-r--r--tools/qdoc3/helpprojectwriter.cpp6
-rw-r--r--tools/qdoc3/htmlgenerator.cpp126
-rw-r--r--tools/qdoc3/htmlgenerator.h14
-rw-r--r--tools/qdoc3/node.cpp52
-rw-r--r--tools/qdoc3/node.h44
-rw-r--r--tools/qdoc3/pagegenerator.cpp8
-rw-r--r--tools/qdoc3/test/qt_zh_CN.qdocconf86
-rw-r--r--tools/qdoc3/tree.cpp4
-rw-r--r--tools/qml/main.cpp2
-rw-r--r--tools/qtconfig/mainwindow.cpp6
-rw-r--r--tools/qtconfig/qtconfig.pro5
-rw-r--r--tools/qtestlib/wince/cetest/cetest.pro2
-rw-r--r--tools/qtestlib/wince/cetest/qmake_include.pri4
-rw-r--r--translations/assistant_de.ts494
-rw-r--r--translations/designer_de.ts58
-rw-r--r--translations/linguist_de.ts50
-rw-r--r--translations/qt_de.ts1121
-rw-r--r--translations/qt_help_de.ts181
-rw-r--r--translations/translations.pri2
-rw-r--r--util/unicode/data/DerivedNormalizationProps.txt2650
-rwxr-xr-xutil/webkit/mkdist-webkit36
553 files changed, 29579 insertions, 5841 deletions
diff --git a/config.tests/x11/xvideo/xvideo.cpp b/config.tests/x11/xvideo/xvideo.cpp
new file mode 100644
index 0000000..515dc00
--- /dev/null
+++ b/config.tests/x11/xvideo/xvideo.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 FOO 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 <X11/Xlib.h>
+#include <X11/extensions/Xv.h>
+#include <X11/extensions/Xvlib.h>
+
+int main(int argc, char** argv)
+{
+ unsigned int count = 0;
+ XvAdaptorInfo *adaptors = 0;
+ XvQueryAdaptors(0, 0, &count, &adaptors);
+ return 0;
+}
diff --git a/config.tests/x11/xvideo/xvideo.pro b/config.tests/x11/xvideo/xvideo.pro
new file mode 100644
index 0000000..d4c63a0
--- /dev/null
+++ b/config.tests/x11/xvideo/xvideo.pro
@@ -0,0 +1,4 @@
+CONFIG += x11
+CONFIG -= qt
+SOURCES = xvideo.cpp
+LIBS += -lXv
diff --git a/configure b/configure
index 43f7189..2312165 100755
--- a/configure
+++ b/configure
@@ -640,6 +640,7 @@ CFG_SHARED=yes
CFG_SM=auto
CFG_XSHAPE=auto
CFG_XSYNC=auto
+CFG_XVIDEO=auto
CFG_XINERAMA=runtime
CFG_XFIXES=runtime
CFG_ZLIB=auto
@@ -925,7 +926,8 @@ while [ "$#" -gt 0 ]; do
VAL=no
;;
#Qt style yes options
- -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-mediaservice|-audio-backend|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config)
+
+ -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xvideo|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-mediaservice|-audio-backend|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config)
VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
VAL=yes
;;
@@ -1540,6 +1542,13 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes
fi
;;
+ xvideo)
+ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
+ CFG_XVIDEO="$VAL"
+ else
+ UNKNOWN_OPT=yes
+ fi
+ ;;
xsync)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_XSYNC="$VAL"
@@ -2402,7 +2411,9 @@ if [ "$CFG_EMBEDDED" != "no" ]; then
fi
;;
CYGWIN*:*)
- CFG_EMBEDDED=x86
+ if [ -z "$XPLATFORM" ]; then
+ CFG_EMBEDDED=x86
+ fi
;;
*)
echo "Qt for Embedded Linux is not supported on this platform. Disabling."
@@ -3655,6 +3666,13 @@ if [ "$PLATFORM_X11" = "yes" ]; then
SHY="*"
SHN=" "
fi
+ if [ "$CFG_XVIDEO" = "no" ]; then
+ XVY=" "
+ XVN="*"
+ else
+ XVY="*"
+ XVN=" "
+ fi
if [ "$CFG_XINERAMA" = "no" ]; then
XAY=" "
XAN="*"
@@ -3758,6 +3776,10 @@ Qt/X11 only:
$SHY -xshape ............ Compile XShape support.
Requires X11/extensions/shape.h.
+ $XVN -no-xvideo ......... Do not compile XVideo support.
+ $XVY -xvideo ............ Compile XVideo support.
+ Requires X11/extensions/Xv.h & Xvlib.h.
+
$SHN -no-xsync .......... Do not compile XSync support.
$SHY -xsync ............. Compile XSync support.
Requires X11/extensions/sync.h.
@@ -5041,32 +5063,33 @@ if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" ]; then
fi
fi
- if [ "$CFG_PHONON" != "no" ]; then
- if [ "$CFG_PHONON_BACKEND" != "no" ]; then
- if [ "$CFG_GLIB" = "yes" -a "$CFG_GSTREAMER" != "no" ]; then
- if [ -n "$PKG_CONFIG" ]; then
- QT_CFLAGS_GSTREAMER=`$PKG_CONFIG --cflags gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
- QT_LIBS_GSTREAMER=`$PKG_CONFIG --libs gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
- fi
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/gstreamer "GStreamer" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_GSTREAMER $QT_LIBS_GSTREAMER $X11TESTS_FLAGS; then
- CFG_GSTREAMER=yes
- QMakeVar set QT_CFLAGS_GSTREAMER "$QT_CFLAGS_GSTREAMER"
- QMakeVar set QT_LIBS_GSTREAMER "$QT_LIBS_GSTREAMER"
- else
- if [ "$CFG_GSTREAMER" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
- echo "Gstreamer support cannot be enabled due to functionality tests!"
- echo " Turn on verbose messaging (-v) to $0 to see the final report."
- echo " If you believe this message is in error you may use the continue"
- echo " switch (-continue) to $0 to continue."
- exit 101
- else
- CFG_GSTREAMER=no
- fi
- fi
- elif [ "$CFG_GLIB" = "no" ]; then
+ # Auto-detect GStreamer support (needed for both Phonon & QtMultimedia)
+ if [ "$CFG_GLIB" = "yes" -a "$CFG_GSTREAMER" != "no" ]; then
+ if [ -n "$PKG_CONFIG" ]; then
+ QT_CFLAGS_GSTREAMER=`$PKG_CONFIG --cflags gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
+ QT_LIBS_GSTREAMER=`$PKG_CONFIG --libs gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
+ fi
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/gstreamer "GStreamer" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_GSTREAMER $QT_LIBS_GSTREAMER $X11TESTS_FLAGS; then
+ CFG_GSTREAMER=yes
+ QMakeVar set QT_CFLAGS_GSTREAMER "$QT_CFLAGS_GSTREAMER"
+ QMakeVar set QT_LIBS_GSTREAMER "$QT_LIBS_GSTREAMER"
+ else
+ if [ "$CFG_GSTREAMER" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ echo "Gstreamer support cannot be enabled due to functionality tests!"
+ echo " Turn on verbose messaging (-v) to $0 to see the final report."
+ echo " If you believe this message is in error you may use the continue"
+ echo " switch (-continue) to $0 to continue."
+ exit 101
+ else
CFG_GSTREAMER=no
fi
+ fi
+ elif [ "$CFG_GLIB" = "no" ]; then
+ CFG_GSTREAMER=no
+ fi
+ if [ "$CFG_PHONON" != "no" ]; then
+ if [ "$CFG_PHONON_BACKEND" != "no" ]; then
if [ "$CFG_GSTREAMER" = "yes" ]; then
CFG_PHONON=yes
else
@@ -5340,6 +5363,23 @@ if [ "$PLATFORM_X11" = "yes" ]; then
fi
fi
+ # auto-detect XVideo support
+ if [ "$CFG_XVIDEO" != "no" ]; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/xvideo "XVideo" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
+ CFG_XVIDEO=yes
+ else
+ if [ "$CFG_XVIDEO" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ echo "XVideo support cannot be enabled due to functionality tests!"
+ echo " Turn on verbose messaging (-v) to $0 to see the final report."
+ echo " If you believe this message is in error you may use the continue"
+ echo " switch (-continue) to $0 to continue."
+ exit 101
+ else
+ CFG_XVIDEO=no
+ fi
+ fi
+ fi
+
# auto-detect XSync support
if [ "$CFG_XSYNC" != "no" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/xsync "XSync" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
@@ -6297,6 +6337,9 @@ if [ "$PLATFORM_X11" = "yes" ]; then
if [ "$CFG_XSHAPE" = "yes" ]; then
QT_CONFIG="$QT_CONFIG xshape"
fi
+ if [ "$CFG_XVIDEO" = "yes" ]; then
+ QT_CONFIG="$QT_CONFIG xvideo"
+ fi
if [ "$CFG_XSYNC" = "yes" ]; then
QT_CONFIG="$QT_CONFIG xsync"
fi
@@ -7101,6 +7144,7 @@ fi
[ "$CFG_XRENDER" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XRENDER"
[ "$CFG_MITSHM" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_MITSHM"
[ "$CFG_XSHAPE" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SHAPE"
+[ "$CFG_XVIDEO" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XVIDEO"
[ "$CFG_XSYNC" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XSYNC"
[ "$CFG_XINPUT" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XINPUT QT_NO_TABLET"
@@ -7581,6 +7625,7 @@ fi
if [ "$PLATFORM_X11" = "yes" ]; then
echo "NAS sound support ...... $CFG_NAS"
echo "XShape support ......... $CFG_XSHAPE"
+ echo "XVideo support ......... $CFG_XVIDEO"
echo "XSync support .......... $CFG_XSYNC"
echo "Xinerama support ....... $CFG_XINERAMA"
echo "Xcursor support ........ $CFG_XCURSOR"
diff --git a/configure.exe b/configure.exe
index f937ea2..e310ee0 100755
--- a/configure.exe
+++ b/configure.exe
Binary files differ
diff --git a/demos/declarative/flickr/common/ImageDetails.qml b/demos/declarative/flickr/common/ImageDetails.qml
index ab94d7a..9604f10 100644
--- a/demos/declarative/flickr/common/ImageDetails.qml
+++ b/demos/declarative/flickr/common/ImageDetails.qml
@@ -50,7 +50,7 @@ Flipable {
LikeOMeter { x: 40; y: 250; rating: container.rating }
Flickable { id: flickable; x: 220; width: 480; height: 210; y: 130; clip: true
- viewportWidth: 480; viewportHeight: descriptionText.height
+ contentWidth: 480; contentHeight: descriptionText.height
WebView { id: descriptionText; width: parent.width
html: "<style TYPE=\"text/css\">body {color: white;} a:link {color: cyan; text-decoration: underline; }</style>" + container.photoDescription }
@@ -84,7 +84,7 @@ Flipable {
Flickable {
id: flick; width: container.width - 10; height: container.height - 10
x: 5; y: 5; clip: true;
- viewportWidth: imageContainer.width; viewportHeight: imageContainer.height
+ contentWidth: imageContainer.width; contentHeight: imageContainer.height
Item {
id: imageContainer
@@ -93,9 +93,7 @@ Flipable {
Image {
id: bigImage; source: container.photoUrl; scale: slider.value
- // Center image if it is smaller than the flickable area.
- x: imageContainer.width > width*scale ? (imageContainer.width - width*scale) / 2 : 0
- y: imageContainer.height > height*scale ? (imageContainer.height - height*scale) / 2 : 0
+ anchors.centerIn: parent;
smooth: !flick.moving
onStatusChanged : {
// Default scale shows the entire image.
@@ -122,12 +120,12 @@ Flipable {
id: slider; x: 25; y: 374; visible: { bigImage.status == 1 && maximum > minimum }
onValueChanged: {
if (bigImage.width * value > flick.width) {
- var xoff = (flick.width/2 + flick.viewportX) * value / prevScale;
- flick.viewportX = xoff - flick.width/2;
+ var xoff = (flick.width/2 + flick.contentX) * value / prevScale;
+ flick.contentX = xoff - flick.width/2;
}
if (bigImage.height * value > flick.height) {
- var yoff = (flick.height/2 + flick.viewportY) * value / prevScale;
- flick.viewportY = yoff - flick.height/2;
+ var yoff = (flick.height/2 + flick.contentY) * value / prevScale;
+ flick.contentY = yoff - flick.height/2;
}
prevScale = value;
}
diff --git a/demos/declarative/flickr/flickr-desktop.qml b/demos/declarative/flickr/flickr-desktop.qml
index 3a86347..99216cb 100644
--- a/demos/declarative/flickr/flickr-desktop.qml
+++ b/demos/declarative/flickr/flickr-desktop.qml
@@ -21,9 +21,9 @@ Item {
angle: wrapper.PathView.angle ? wrapper.PathView.angle : 0
}
- Connection {
- sender: imageDetails; signal: "closed()"
- script: {
+ Connections {
+ target: imageDetails
+ onClosed: {
if (wrapper.state == 'Details') {
wrapper.state = '';
imageDetails.photoUrl = "";
diff --git a/demos/declarative/flickr/flickr-mobile-90.qml b/demos/declarative/flickr/flickr-mobile-90.qml
index 259ff10..9fec242 100644
--- a/demos/declarative/flickr/flickr-mobile-90.qml
+++ b/demos/declarative/flickr/flickr-mobile-90.qml
@@ -5,6 +5,7 @@ Item {
Loader {
y: 320; rotation: -90
+ transformOrigin: Item.TopLeft
source: "flickr-mobile.qml"
}
}
diff --git a/demos/declarative/flickr/flickr-mobile.qml b/demos/declarative/flickr/flickr-mobile.qml
index 77ccd08..21e4c49 100644
--- a/demos/declarative/flickr/flickr-mobile.qml
+++ b/demos/declarative/flickr/flickr-mobile.qml
@@ -53,9 +53,9 @@ Item {
onButton2Clicked: if (screen.inListView == true) screen.inListView = false; else screen.inListView = true
}
- Connection {
- sender: imageDetails; signal: "closed()"
- script: {
+ Connections {
+ target: imageDetails
+ onClosed: {
if (background.state == "DetailedView") {
background.state = '';
imageDetails.photoUrl = "";
diff --git a/demos/declarative/flickr/mobile/GridDelegate.qml b/demos/declarative/flickr/mobile/GridDelegate.qml
index 5722f10..7634573 100644
--- a/demos/declarative/flickr/mobile/GridDelegate.qml
+++ b/demos/declarative/flickr/mobile/GridDelegate.qml
@@ -33,9 +33,9 @@
Image { source: "images/gloss.png" }
}
- Connection {
- sender: toolBar; signal: "button2Clicked()"
- script: if (scaleMe.state == 'Details' ) scaleMe.state = 'Show';
+ Connections {
+ target: toolBar
+ onButton2Clicked: if (scaleMe.state == 'Details' ) scaleMe.state = 'Show'
}
states: [
diff --git a/demos/declarative/flickr/mobile/ImageDetails.qml b/demos/declarative/flickr/mobile/ImageDetails.qml
index 415764e..c51371c 100644
--- a/demos/declarative/flickr/mobile/ImageDetails.qml
+++ b/demos/declarative/flickr/mobile/ImageDetails.qml
@@ -57,7 +57,7 @@ Flipable {
Common.Progress { anchors.centerIn: parent; width: 200; height: 18; progress: bigImage.progress; visible: bigImage.status!=1 }
Flickable {
id: flickable; anchors.fill: parent; clip: true
- viewportWidth: imageContainer.width; viewportHeight: imageContainer.height
+ contentWidth: imageContainer.width; contentHeight: imageContainer.height
Item {
id: imageContainer
@@ -66,10 +66,7 @@ Flipable {
Image {
id: bigImage; source: container.photoUrl; scale: slider.value
- // Center image if it is smaller than the flickable area.
- x: imageContainer.width > width*scale ? (imageContainer.width - width*scale) / 2 : 0
- y: imageContainer.height > height*scale ? (imageContainer.height - height*scale) / 2 : 0
- smooth: !flickable.moving
+ anchors.centerIn: parent; smooth: !flickable.moving
onStatusChanged : {
// Default scale shows the entire image.
if (status == 1 && width != 0) {
@@ -97,12 +94,12 @@ Flipable {
}
onValueChanged: {
if (bigImage.width * value > flickable.width) {
- var xoff = (flickable.width/2 + flickable.viewportX) * value / prevScale;
- flickable.viewportX = xoff - flickable.width/2;
+ var xoff = (flickable.width/2 + flickable.contentX) * value / prevScale;
+ flickable.contentX = xoff - flickable.width/2;
}
if (bigImage.height * value > flickable.height) {
- var yoff = (flickable.height/2 + flickable.viewportY) * value / prevScale;
- flickable.viewportY = yoff - flickable.height/2;
+ var yoff = (flickable.height/2 + flickable.contentY) * value / prevScale;
+ flickable.contentY = yoff - flickable.height/2;
}
prevScale = value;
}
diff --git a/demos/declarative/webbrowser/content/FlickableWebView.qml b/demos/declarative/webbrowser/content/FlickableWebView.qml
index b60a95f..76a5813 100644
--- a/demos/declarative/webbrowser/content/FlickableWebView.qml
+++ b/demos/declarative/webbrowser/content/FlickableWebView.qml
@@ -2,6 +2,7 @@ import Qt 4.6
Flickable {
property alias title: webView.title
+ property alias icon: webView.icon
property alias progress: webView.progress
property alias url: webView.url
property alias back: webView.back
@@ -10,8 +11,8 @@ Flickable {
id: flickable
width: parent.width
- viewportWidth: Math.max(parent.width,webView.width*webView.scale)
- viewportHeight: Math.max(parent.height,webView.height*webView.scale)
+ contentWidth: Math.max(parent.width,webView.width*webView.scale)
+ contentHeight: Math.max(parent.height,webView.height*webView.scale)
anchors.top: headerSpace.bottom
anchors.bottom: footer.top
anchors.left: parent.left
@@ -53,10 +54,10 @@ Flickable {
if (centerX) {
var sc = zoom/contentsScale;
scaleAnim.to = sc;
- flickVX.from = flickable.viewportX
+ flickVX.from = flickable.contentX
flickVX.to = Math.max(0,Math.min(centerX-flickable.width/2,webView.width*sc-flickable.width))
finalX.value = flickVX.to
- flickVY.from = flickable.viewportY
+ flickVY.from = flickable.contentY
flickVY.to = Math.max(0,Math.min(centerY-flickable.height/2,webView.height*sc-flickable.height))
finalY.value = flickVY.to
finalZoom.value = zoom
@@ -76,8 +77,8 @@ Flickable {
}
onUrlChanged: {
// got to topleft
- flickable.viewportX = 0
- flickable.viewportY = 0
+ flickable.contentX = 0
+ flickable.contentY = 0
if (url != null) { header.editUrl = url.toString(); }
}
onDoubleClick: {
@@ -110,7 +111,7 @@ Flickable {
NumberAnimation {
id: flickVX
target: flickable
- property: "viewportX"
+ property: "contentX"
easing.type: "Linear"
duration: 200
from: 0 // set before calling
@@ -119,7 +120,7 @@ Flickable {
NumberAnimation {
id: flickVY
target: flickable
- property: "viewportY"
+ property: "contentY"
easing.type: "Linear"
duration: 200
from: 0 // set before calling
@@ -136,19 +137,19 @@ Flickable {
property: "scale"
value: 1.0
}
- // Have to set the viewportXY, since the above 2
+ // Have to set the contentXY, since the above 2
// size changes may have started a correction if
// contentsScale < 1.0.
PropertyAction {
id: finalX
target: flickable
- property: "viewportX"
+ property: "contentX"
value: 0 // set before calling
}
PropertyAction {
id: finalY
target: flickable
- property: "viewportY"
+ property: "contentY"
value: 0 // set before calling
}
PropertyAction {
diff --git a/demos/declarative/webbrowser/content/RetractingWebBrowserHeader.qml b/demos/declarative/webbrowser/content/RetractingWebBrowserHeader.qml
index f905150..94c94f2 100644
--- a/demos/declarative/webbrowser/content/RetractingWebBrowserHeader.qml
+++ b/demos/declarative/webbrowser/content/RetractingWebBrowserHeader.qml
@@ -9,35 +9,44 @@ Image {
source: "pics/header.png"
width: parent.width
height: 60
- x: webView.viewportX < 0 ? -webView.viewportX : webView.viewportX > webView.viewportWidth-webView.width
- ? -webView.viewportX+webView.viewportWidth-webView.width : 0
- y: webView.viewportY < 0 ? -webView.viewportY : progressOff*
- (webView.viewportY>height?-height:-webView.viewportY)
- Text {
- id: headerText
-
- text: webView.title!='' || webView.progress == 1.0 ? webView.title : 'Loading...'
- elide: Text.ElideRight
-
- color: "white"
- styleColor: "black"
- style: Text.Raised
-
- font.family: "Helvetica"
- font.pointSize: 10
- font.bold: true
-
- anchors.left: header.left
- anchors.right: header.right
- anchors.leftMargin: 4
- anchors.rightMargin: 4
+ x: webView.contentX < 0 ? -webView.contentX : webView.contentX > webView.contentWidth-webView.width
+ ? -webView.contentX+webView.contentWidth-webView.width : 0
+ y: webView.contentY < 0 ? -webView.contentY : progressOff*
+ (webView.contentY>height?-height:-webView.contentY)
+ Row {
+ id: headerTitle
+
anchors.top: header.top
anchors.topMargin: 4
- horizontalAlignment: Text.AlignHCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ spacing: 6
+
+ Image {
+ id: headerIcon
+ pixmap: webView.icon
+ }
+
+ Text {
+ id: headerText
+
+ text: webView.title!='' || webView.progress == 1.0 ? webView.title : 'Loading...'
+ elide: Text.ElideRight
+ //width: parent.width - headerIcon.width-4
+
+ color: "white"
+ styleColor: "black"
+ style: Text.Raised
+
+ font.family: "Helvetica"
+ font.pointSize: 10
+ font.bold: true
+
+ horizontalAlignment: Text.AlignHCenter
+ }
}
Item {
width: parent.width
- anchors.top: headerText.bottom
+ anchors.top: headerTitle.bottom
anchors.topMargin: 2
anchors.bottom: parent.bottom
diff --git a/demos/declarative/webbrowser/webbrowser.qml b/demos/declarative/webbrowser/webbrowser.qml
index faafd5d..6a427f4 100644
--- a/demos/declarative/webbrowser/webbrowser.qml
+++ b/demos/declarative/webbrowser/webbrowser.qml
@@ -30,10 +30,10 @@ Item {
anchors.bottom: footer.top
}
RectSoftShadow {
- x: -webView.viewportX
- y: -webView.viewportY
- width: webView.viewportWidth
- height: webView.viewportHeight+headerSpace.height
+ x: -webView.contentX
+ y: -webView.contentY
+ width: webView.contentWidth
+ height: webView.contentHeight+headerSpace.height
}
Item {
id: headerSpace
diff --git a/demos/embedded/desktopservices/contenttab.cpp b/demos/embedded/desktopservices/contenttab.cpp
index 8714b9c..fa9c586 100644
--- a/demos/embedded/desktopservices/contenttab.cpp
+++ b/demos/embedded/desktopservices/contenttab.cpp
@@ -114,20 +114,6 @@ QUrl ContentTab::itemUrl(QListWidgetItem *item)
void ContentTab::keyPressEvent(QKeyEvent *event)
{
switch (event->key()) {
- case Qt::Key_Up:
- if (currentRow() == 0) {
- setCurrentRow(count() - 1);
- } else {
- setCurrentRow(currentRow() - 1);
- }
- break;
- case Qt::Key_Down:
- if (currentRow() == (count() - 1)) {
- setCurrentRow(0);
- } else {
- setCurrentRow(currentRow() + 1);
- }
- break;
case Qt::Key_Select:
openItem(currentItem());
default:
diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc
index da96b8e..1fd4dad 100644
--- a/doc/src/declarative/elements.qdoc
+++ b/doc/src/declarative/elements.qdoc
@@ -98,7 +98,7 @@ The following table lists the QML elements provided by the Qt Declarative module
\o
\list
\o \l Script
-\o \l Connection
+\o \l Connections
\o \l Component
\o \l Timer
\o \l QtObject
diff --git a/doc/src/declarative/extending.qdoc b/doc/src/declarative/extending.qdoc
index d823bf6..5aaa7bd 100644
--- a/doc/src/declarative/extending.qdoc
+++ b/doc/src/declarative/extending.qdoc
@@ -421,9 +421,8 @@ C++ signature:
\snippet examples/declarative/extending/signal/birthdayparty.h 0
In classes with multiple signals with the same name, only the final signal
-is accessible as a signal property. Although QML provides an element,
-\l Connection, for accessing the other signals it is less elegant. For the best
-QML API, class developers should avoid overloading signal names.
+is accessible as a signal property. Note that signals with the same name
+but different parameters cannot be distinguished.
Signal parameters become accessible by name to the assigned script. An
unnamed parameter cannot be accessed, so care should be taken to name all the
diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index 6406193..36bfcfe 100644
--- a/doc/src/development/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.qdoc
@@ -1727,8 +1727,15 @@ distinction between shared and
\snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 139
+ There is also a convenience function for adding conditional rules
+ called \c{addMMPRules}. Suppose you need certain functionality
+ to require different library depending on architecture. This
+ can be specified with \c{addMMPRules} as follows:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 148
+
\note You should not use this variable to add MMP statements that are
- explicitly supported by their own variables, such as
+ explicitly supported by their own variables, such as
\c TARGET.EPOCSTACKSIZE.
Doing so could result in duplicate statements in the MMP file.
diff --git a/doc/src/examples/scribble.qdoc b/doc/src/examples/scribble.qdoc
index 3c6d136..5c66410 100644
--- a/doc/src/examples/scribble.qdoc
+++ b/doc/src/examples/scribble.qdoc
@@ -74,9 +74,8 @@
\o \c MainWindow provides a menu above the \c ScribbleArea.
\endlist
- We will start by reviewing the \c ScribbleArea class, which
- contains the interesting, then we will take a look at the \c
- MainWindow class that uses it.
+ We will start by reviewing the \c ScribbleArea class. Then we will
+ review the \c MainWindow class, which uses \c ScribbleArea.
\section1 ScribbleArea Class Definition
diff --git a/doc/src/files-and-resources/datastreamformat.qdoc b/doc/src/files-and-resources/datastreamformat.qdoc
index 1c2d887..bab2c2c 100644
--- a/doc/src/files-and-resources/datastreamformat.qdoc
+++ b/doc/src/files-and-resources/datastreamformat.qdoc
@@ -47,7 +47,7 @@
The \l QDataStream allows you to serialize some of the Qt data types.
The table below lists the data types that QDataStream can serialize
and how they are represented. The format described below is
- \l{QDataStream::setVersion()}{version 8}.
+ \l{QDataStream::setVersion()}{version 12}.
It is always best to cast integers to a Qt integer type, such as
qint16 or quint32, when reading and writing. This ensures that
@@ -57,9 +57,9 @@
\table
\row \o bool
- \o \list
- \o boolean
- \endlist
+ \o \list
+ \o boolean
+ \endlist
\row \o qint8
\o \list
\o signed byte
@@ -145,6 +145,17 @@
\o Time (QTime)
\o 0 for Qt::LocalTime, 1 for Qt::UTC (quint8)
\endlist
+ \row \o QEasingCurve
+ \o \list
+ \o type (quint8)
+ \o func (quint64)
+ \o hasConfig (bool)
+ \o If hasConfig is true then these fields follow:
+ \o list
+ \o period (double)
+ \o amplitude (double)
+ \o overshoot (double)
+ \endlist
\row \o QFont
\o \list
\o The family (QString)
diff --git a/doc/src/legal/3rdparty.qdoc b/doc/src/legal/3rdparty.qdoc
index af3fc93..d608038 100644
--- a/doc/src/legal/3rdparty.qdoc
+++ b/doc/src/legal/3rdparty.qdoc
@@ -305,17 +305,17 @@
\hr
- Copyright (c) 1987, 1993, 1994
+ Copyright (c) 1987, 1993, 1994\br
The Regents of the University of California. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
- are met:
+ are met:\br
1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
+ notice, this list of conditions and the following disclaimer.\br
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.
+ documentation and/or other materials provided with the distribution.\br
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
@@ -334,22 +334,22 @@
\hr
- Copyright (C) 1988-1997 Sam Leffler
- Copyright (C) 1991-1997 Silicon Graphics, Inc.
- Copyright (c) Joris Van Damme <info@awaresystems.be>
- Copyright (c) AWare Systems <http://www.awaresystems.be/>
- Portions Copyright (C) 1985-1987, 1990 Regents of the University of California
- Portions Copyright (C) 1990, 1991 Digital Equipment Corporation
- Portions Copyright (C) 1990 Sun Microsystems, Inc.
- Portions Copyright (C) 1990, 1995 Frank D. Cringle
- Portions Copyright (C) 1996 BancTec AB
- Portions Copyright (C) 1996 Mike Johnson
- Portions Copyright (C) 1996 Pixar
- Portions Copyright (C) 1997 Greg Ward Larson
- Portions Copyright (C) 2000 Frank Warmerdam
- Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
- Copyright (c( 1996 USAF Phillips Laboratory
- Additions (c) Richard Nolde 2006-2009
+ Copyright (C) 1988-1997 Sam Leffler\br
+ Copyright (C) 1991-1997 Silicon Graphics, Inc.\br
+ Copyright (c) Joris Van Damme <info@awaresystems.be>\br
+ Copyright (c) AWare Systems <http://www.awaresystems.be/>\br
+ Portions Copyright (C) 1985-1987, 1990 Regents of the University of California\br
+ Portions Copyright (C) 1990, 1991 Digital Equipment Corporation\br
+ Portions Copyright (C) 1990 Sun Microsystems, Inc.\br
+ Portions Copyright (C) 1990, 1995 Frank D. Cringle\br
+ Portions Copyright (C) 1996 BancTec AB\br
+ Portions Copyright (C) 1996 Mike Johnson\br
+ Portions Copyright (C) 1996 Pixar\br
+ Portions Copyright (C) 1997 Greg Ward Larson\br
+ Portions Copyright (C) 2000 Frank Warmerdam\br
+ Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>\br
+ Copyright (c( 1996 USAF Phillips Laboratory\br
+ Additions (c) Richard Nolde 2006-2009
Permission to use, copy, modify, distribute, and sell this software and
its documentation for any purpose is hereby granted without fee, provided
@@ -372,7 +372,7 @@
\hr
- Copyright (c) 1985, 1986 The Regents of the University of California.
+ Copyright (c) 1985, 1986 The Regents of the University of California.\br
All rights reserved.
This code is derived from software contributed to Berkeley by
@@ -393,7 +393,7 @@
\hr
- Copyright (c) 1996-1997 Sam Leffler
+ Copyright (c) 1996-1997 Sam Leffler\br
Copyright (c) 1996 Pixar
Permission to use, copy, modify, distribute, and sell this software and
diff --git a/doc/src/platforms/emb-directfb-EmbLinux.qdoc b/doc/src/platforms/emb-directfb-EmbLinux.qdoc
index 74f2aaa..9e060f8 100644
--- a/doc/src/platforms/emb-directfb-EmbLinux.qdoc
+++ b/doc/src/platforms/emb-directfb-EmbLinux.qdoc
@@ -267,7 +267,8 @@ perform well.
\o QT_NO_DIRECTFB_IMAGEPROVIDER
\o By default Qt will use DirectFB to load QPixmaps from disk/memory. If
your DirectFB implementation does not support this it might make sense to
-define this.
+define this. If you see strange rendering issues with pixmaps that have an
+alpha channel defining this could solve the problem.
\row
\o QT_DIRECTFB_IMAGEPROVIDER_KEEPALIVE
@@ -327,4 +328,9 @@ QT_DIRECTFB_DISABLE_RASTERFALLBACKS is defined, DirectFB will only return
instead of falling back to QRasterPaintEngine. Please note that these
defines should only be used when optimizing the application.
+\section2 Top level transparency
+\note DirectFB supports partially or fully transparent top level windows,
+either through QWidget::setWindowOpacity or through setting a non-opaque
+background brush. Note that for the latter it is not supported to change an
+opaque window to be transparent at runtime.
*/
diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc
index 91593d3..cf53df0 100644
--- a/doc/src/qt4-intro.qdoc
+++ b/doc/src/qt4-intro.qdoc
@@ -471,6 +471,27 @@
\tableofcontents
+ \section1 Declarative UI development with Qt Quick
+
+ \section1 Network Bearer Management
+
+ Bearer Management controls the connectivity state of the system.
+ The new Bearer Management API in the QtNetwork module allows the
+ application to identify whether the system is online and how many
+ interfaces there are, as well as start and stop interfaces, or
+ roam transparently between access points.
+
+ QNetworkAccessManager uses this API for HTTP level roaming.
+
+ \section1 Multimedia - playback and declarative elements
+
+ The Multimedia API provides media playback and playlist support
+ for Qt Applications. Play music and movies through a single interface
+ with selectable output for movies to widgets or graphics view.
+
+ Multimedia support for Quick is also available with the new multimedia
+ declarative elements.
+
\section1 New Classes, Functions, Macros, etc.
Links to new classes, functions, macros, and other items
diff --git a/doc/src/snippets/code/doc_src_qmake-manual.qdoc b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
index a48b53f..5a04420 100644
--- a/doc/src/snippets/code/doc_src_qmake-manual.qdoc
+++ b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
@@ -969,3 +969,16 @@ DEPLOYMENT.installer_header = 0x12345678
//! [147]
DEPLOYMENT.installer_header = "$${LITERAL_HASH}{\"My Application Installer\"},(0x12345678),1,0,0"
//! [147]
+
+//! [148]
+# Set conditional libraries
+LIB.MARM = "LIBRARY myarm.lib"
+LIB.WINSCW = "LIBRARY mywinscw.lib"
+LIB.default = "LIBRARY mydefault.lib"
+
+# Add the conditional MMP rules
+MYCONDITIONS = MARM WINSCW
+MYVARIABLES = LIB
+
+addMMPRules(MYCONDITIONS, MYVARIABLES)
+//! [148]
diff --git a/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp b/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp
index c068ba9..4158388 100644
--- a/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp
@@ -128,7 +128,7 @@ private:
QScopedPointer<int, QScopedPointerArrayDeleter<int> > arrayPointer(new int[42]);
// this QScopedPointer frees its data using free():
-QScopedPointer<int, QScopedPointerPodDeleter<int> > podPointer(reinterpret_cast<int *>(malloc(42)));
+QScopedPointer<int, QScopedPointerPodDeleter> podPointer(reinterpret_cast<int *>(malloc(42)));
// this struct calls "myCustomDeallocator" to delete the pointer
struct ScopedPointerCustomDeleter
diff --git a/examples/declarative/animations/easing.qml b/examples/declarative/animations/easing.qml
index a7ba1c5..8f2655e 100644
--- a/examples/declarative/animations/easing.qml
+++ b/examples/declarative/animations/easing.qml
@@ -89,7 +89,7 @@ Rectangle {
}
Flickable {
- anchors.fill: parent; viewportHeight: layout.height
+ anchors.fill: parent; contentHeight: layout.height
Column {
id: layout
anchors.left: parent.left; anchors.right: parent.right
diff --git a/examples/declarative/connections/connections.qml b/examples/declarative/connections/connections.qml
index c140017..4692343 100644
--- a/examples/declarative/connections/connections.qml
+++ b/examples/declarative/connections/connections.qml
@@ -22,6 +22,6 @@ Rectangle {
anchors { right: parent.right; bottom: parent.bottom; rightMargin: 10; bottomMargin: 10 }
}
- Connection { sender: leftButton; signal: "clicked()"; script: window.angle -= 90 }
- Connection { sender: rightButton; signal: "clicked()"; script: window.angle += 90 }
+ Connections { target: leftButton; onClicked: window.angle -= 90 }
+ Connections { target: rightButton; onClicked: window.angle += 90 }
}
diff --git a/examples/declarative/listview/recipes.qml b/examples/declarative/listview/recipes.qml
index f848be0..b76a9ab 100644
--- a/examples/declarative/listview/recipes.qml
+++ b/examples/declarative/listview/recipes.qml
@@ -81,7 +81,7 @@ Rectangle {
Flickable {
id: flick
anchors.top: methodTitle.bottom; anchors.bottom: parent.bottom
- width: parent.width; viewportHeight: methodText.height; clip: true
+ width: parent.width; contentHeight: methodText.height; clip: true
Text { id: methodText; text: method; wrap: true; width: details.width }
}
Image {
@@ -114,7 +114,7 @@ Rectangle {
// Make the detailed view fill the entire list area
PropertyChanges { target: wrapper; height: list.height }
// Move the list so that this item is at the top.
- PropertyChanges { target: wrapper.ListView.view; explicit: true; viewportY: wrapper.y }
+ PropertyChanges { target: wrapper.ListView.view; explicit: true; contentY: wrapper.y }
// Disallow flicking while we're in detailed view
PropertyChanges { target: wrapper.ListView.view; interactive: false }
}
@@ -124,7 +124,7 @@ Rectangle {
ParallelAnimation {
ColorAnimation { property: "color"; duration: 500 }
NumberAnimation {
- duration: 300; properties: "detailsOpacity,x,viewportY,height,width"
+ duration: 300; properties: "detailsOpacity,x,contentY,height,width"
}
}
}
diff --git a/examples/declarative/parallax/qml/ParallaxView.qml b/examples/declarative/parallax/qml/ParallaxView.qml
index 811891b..5e58100 100644
--- a/examples/declarative/parallax/qml/ParallaxView.qml
+++ b/examples/declarative/parallax/qml/ParallaxView.qml
@@ -10,8 +10,8 @@ Item {
Image {
id: background
fillMode: Image.TileHorizontally
- x: -list.viewportX / 2
- width: Math.max(list.viewportWidth, parent.width)
+ x: -list.contentX / 2
+ width: Math.max(list.contentWidth, parent.width)
}
ListView {
diff --git a/examples/declarative/plugins/plugin.cpp b/examples/declarative/plugins/plugin.cpp
index f6385d0..741f68a 100644
--- a/examples/declarative/plugins/plugin.cpp
+++ b/examples/declarative/plugins/plugin.cpp
@@ -144,11 +144,10 @@ class QExampleQmlPlugin : public QDeclarativeExtensionPlugin
{
Q_OBJECT
public:
- void initialize(QDeclarativeEngine *engine, const char *uri)
+ void registerTypes(const char *uri)
{
- Q_UNUSED(engine);
Q_ASSERT(uri == QLatin1String("com.nokia.TimeExample"));
- qmlRegisterType<Time>(uri, 1, 0, "Time", "Time");
+ qmlRegisterType<Time>(uri, 1, 0, "Time");
}
};
diff --git a/examples/declarative/progressbar/progressbars.qml b/examples/declarative/progressbar/progressbars.qml
index fdd4ca7..6530c3d 100644
--- a/examples/declarative/progressbar/progressbars.qml
+++ b/examples/declarative/progressbar/progressbars.qml
@@ -6,7 +6,7 @@ Rectangle {
width: 600; height: 405; color: "#edecec"
Flickable {
- anchors.fill: parent; viewportHeight: column.height + 20
+ anchors.fill: parent; contentHeight: column.height + 20
Column {
id: column; x: 10; y: 10; spacing: 10
Repeater {
diff --git a/examples/declarative/scrollbar/display.qml b/examples/declarative/scrollbar/display.qml
index a96db6e..84763d2 100644
--- a/examples/declarative/scrollbar/display.qml
+++ b/examples/declarative/scrollbar/display.qml
@@ -12,8 +12,8 @@ Rectangle {
source: "pics/niagara_falls.jpg"
asynchronous: true
}
- viewportWidth: picture.width
- viewportHeight: picture.height
+ contentWidth: picture.width
+ contentHeight: picture.height
// Only show the scrollbars when the view is moving.
states: [
State {
diff --git a/examples/declarative/velocity/velocity.qml b/examples/declarative/velocity/velocity.qml
index 50d69d8..0d1881e 100644
--- a/examples/declarative/velocity/velocity.qml
+++ b/examples/declarative/velocity/velocity.qml
@@ -96,7 +96,7 @@ Rectangle {
}
Flickable {
id: flickable
- anchors.fill: parent; viewportWidth: lay.width
+ anchors.fill: parent; contentWidth: lay.width
Row {
id: lay
Repeater {
diff --git a/examples/declarative/webview/qdeclarative-in-html.qml b/examples/declarative/webview/qdeclarative-in-html.qml
index a2f2f2a..77180ec 100644
--- a/examples/declarative/webview/qdeclarative-in-html.qml
+++ b/examples/declarative/webview/qdeclarative-in-html.qml
@@ -6,8 +6,8 @@ Rectangle {
Flickable {
width: parent.width
height: parent.height/2
- viewportWidth: web.width*web.scale
- viewportHeight: web.height*web.scale
+ contentWidth: web.width*web.scale
+ contentHeight: web.height*web.scale
WebView {
id: web
width: 250
diff --git a/examples/network/http/httpwindow.cpp b/examples/network/http/httpwindow.cpp
index 95fc82f..ec7cd33 100644
--- a/examples/network/http/httpwindow.cpp
+++ b/examples/network/http/httpwindow.cpp
@@ -49,9 +49,9 @@ HttpWindow::HttpWindow(QWidget *parent)
: QDialog(parent)
{
#ifndef QT_NO_OPENSSL
- urlLineEdit = new QLineEdit("https://");
+ urlLineEdit = new QLineEdit("https://qt.nokia.com/");
#else
- urlLineEdit = new QLineEdit("http://");
+ urlLineEdit = new QLineEdit("http://qt.nokia.com/");
#endif
urlLabel = new QLabel(tr("&URL:"));
@@ -70,21 +70,14 @@ HttpWindow::HttpWindow(QWidget *parent)
progressDialog = new QProgressDialog(this);
- http = new QHttp(this);
-
connect(urlLineEdit, SIGNAL(textChanged(QString)),
this, SLOT(enableDownloadButton()));
- connect(http, SIGNAL(requestFinished(int,bool)),
- this, SLOT(httpRequestFinished(int,bool)));
- connect(http, SIGNAL(dataReadProgress(int,int)),
- this, SLOT(updateDataReadProgress(int,int)));
- connect(http, SIGNAL(responseHeaderReceived(QHttpResponseHeader)),
- this, SLOT(readResponseHeader(QHttpResponseHeader)));
- connect(http, SIGNAL(authenticationRequired(QString,quint16,QAuthenticator*)),
- this, SLOT(slotAuthenticationRequired(QString,quint16,QAuthenticator*)));
+
+ connect(&qnam, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
+ this, SLOT(slotAuthenticationRequired(QNetworkReply*,QAuthenticator*)));
#ifndef QT_NO_OPENSSL
- connect(http, SIGNAL(sslErrors(QList<QSslError>)),
- this, SLOT(sslErrors(QList<QSslError>)));
+ connect(&qnam, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
+ this, SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
#endif
connect(progressDialog, SIGNAL(canceled()), this, SLOT(cancelDownload()));
connect(downloadButton, SIGNAL(clicked()), this, SLOT(downloadFile()));
@@ -104,9 +97,21 @@ HttpWindow::HttpWindow(QWidget *parent)
urlLineEdit->setFocus();
}
+void HttpWindow::startRequest(QUrl url)
+{
+ reply = qnam.get(QNetworkRequest(url));
+ connect(reply, SIGNAL(finished()),
+ this, SLOT(httpFinished()));
+ connect(reply, SIGNAL(readyRead()),
+ this, SLOT(httpReadyRead()));
+ connect(reply, SIGNAL(downloadProgress(qint64,qint64)),
+ this, SLOT(updateDataReadProgress(qint64,qint64)));
+}
+
void HttpWindow::downloadFile()
{
- QUrl url(urlLineEdit->text());
+ url = urlLineEdit->text();
+
QFileInfo fileInfo(url.path());
QString fileName = fileInfo.fileName();
if (fileName.isEmpty())
@@ -132,35 +137,26 @@ void HttpWindow::downloadFile()
return;
}
- QHttp::ConnectionMode mode = url.scheme().toLower() == "https" ? QHttp::ConnectionModeHttps : QHttp::ConnectionModeHttp;
- http->setHost(url.host(), mode, url.port() == -1 ? 0 : url.port());
-
- if (!url.userName().isEmpty())
- http->setUser(url.userName(), url.password());
-
- httpRequestAborted = false;
- QByteArray path = QUrl::toPercentEncoding(url.path(), "!$&'()*+,;=:@/");
- if (path.isEmpty())
- path = "/";
- httpGetId = http->get(path, file);
progressDialog->setWindowTitle(tr("HTTP"));
progressDialog->setLabelText(tr("Downloading %1.").arg(fileName));
downloadButton->setEnabled(false);
+
+ // schedule the request
+ httpRequestAborted = false;
+ startRequest(url);
}
void HttpWindow::cancelDownload()
{
statusLabel->setText(tr("Download canceled."));
httpRequestAborted = true;
- http->abort();
+ reply->abort();
downloadButton->setEnabled(true);
}
-void HttpWindow::httpRequestFinished(int requestId, bool error)
+void HttpWindow::httpFinished()
{
- if (requestId != httpGetId)
- return;
if (httpRequestAborted) {
if (file) {
file->close();
@@ -168,54 +164,58 @@ void HttpWindow::httpRequestFinished(int requestId, bool error)
delete file;
file = 0;
}
-
+ reply->deleteLater();
progressDialog->hide();
return;
}
- if (requestId != httpGetId)
- return;
-
progressDialog->hide();
+ file->flush();
file->close();
- if (error) {
+
+ QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
+ if (reply->error()) {
file->remove();
QMessageBox::information(this, tr("HTTP"),
tr("Download failed: %1.")
- .arg(http->errorString()));
+ .arg(reply->errorString()));
+ downloadButton->setEnabled(true);
+ } else if (!redirectionTarget.isNull()) {
+ QUrl newUrl = url.resolved(redirectionTarget.toUrl());
+ if (QMessageBox::question(this, tr("HTTP"),
+ tr("Redirect to %1 ?").arg(newUrl.toString()),
+ QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
+ url = newUrl;
+ reply->deleteLater();
+ file->open(QIODevice::WriteOnly);
+ file->resize(0);
+ startRequest(url);
+ return;
+ }
} else {
QString fileName = QFileInfo(QUrl(urlLineEdit->text()).path()).fileName();
statusLabel->setText(tr("Downloaded %1 to current directory.").arg(fileName));
+ downloadButton->setEnabled(true);
}
- downloadButton->setEnabled(true);
+ reply->deleteLater();
+ reply = 0;
delete file;
file = 0;
}
-void HttpWindow::readResponseHeader(const QHttpResponseHeader &responseHeader)
+void HttpWindow::httpReadyRead()
{
- switch (responseHeader.statusCode()) {
- case 200: // Ok
- case 301: // Moved Permanently
- case 302: // Found
- case 303: // See Other
- case 307: // Temporary Redirect
- // these are not error conditions
- break;
-
- default:
- QMessageBox::information(this, tr("HTTP"),
- tr("Download failed: %1.")
- .arg(responseHeader.reasonPhrase()));
- httpRequestAborted = true;
- progressDialog->hide();
- http->abort();
- }
+ // this slot gets called everytime the QNetworkReply has new data.
+ // We read all of its new data and write it into the file.
+ // That way we use less RAM than when reading it at the finished()
+ // signal of the QNetworkReply
+ if (file)
+ file->write(reply->readAll());
}
-void HttpWindow::updateDataReadProgress(int bytesRead, int totalBytes)
+void HttpWindow::updateDataReadProgress(qint64 bytesRead, qint64 totalBytes)
{
if (httpRequestAborted)
return;
@@ -229,14 +229,19 @@ void HttpWindow::enableDownloadButton()
downloadButton->setEnabled(!urlLineEdit->text().isEmpty());
}
-void HttpWindow::slotAuthenticationRequired(const QString &hostName, quint16, QAuthenticator *authenticator)
+void HttpWindow::slotAuthenticationRequired(QNetworkReply*,QAuthenticator *authenticator)
{
QDialog dlg;
Ui::Dialog ui;
ui.setupUi(&dlg);
dlg.adjustSize();
- ui.siteDescription->setText(tr("%1 at %2").arg(authenticator->realm()).arg(hostName));
-
+ ui.siteDescription->setText(tr("%1 at %2").arg(authenticator->realm()).arg(url.host()));
+
+ // Did the URL have information? Fill the UI
+ // This is only relevant if the URL-supplied credentials were wrong
+ ui.userEdit->setText(url.userName());
+ ui.passwordEdit->setText(url.password());
+
if (dlg.exec() == QDialog::Accepted) {
authenticator->setUser(ui.userEdit->text());
authenticator->setPassword(ui.passwordEdit->text());
@@ -244,7 +249,7 @@ void HttpWindow::slotAuthenticationRequired(const QString &hostName, quint16, QA
}
#ifndef QT_NO_OPENSSL
-void HttpWindow::sslErrors(const QList<QSslError> &errors)
+void HttpWindow::sslErrors(QNetworkReply*,const QList<QSslError> &errors)
{
QString errorString;
foreach (const QSslError &error, errors) {
@@ -253,10 +258,10 @@ void HttpWindow::sslErrors(const QList<QSslError> &errors)
errorString += error.errorString();
}
- if (QMessageBox::warning(this, tr("HTTP Example"),
+ if (QMessageBox::warning(this, tr("HTTP"),
tr("One or more SSL errors has occurred: %1").arg(errorString),
QMessageBox::Ignore | QMessageBox::Abort) == QMessageBox::Ignore) {
- http->ignoreSslErrors();
+ reply->ignoreSslErrors();
}
}
#endif
diff --git a/examples/network/http/httpwindow.h b/examples/network/http/httpwindow.h
index 9dca8a5..83898af 100644
--- a/examples/network/http/httpwindow.h
+++ b/examples/network/http/httpwindow.h
@@ -43,18 +43,21 @@
#define HTTPWINDOW_H
#include <QDialog>
+#include <QNetworkAccessManager>
+#include <QUrl>
QT_BEGIN_NAMESPACE
class QDialogButtonBox;
class QFile;
-class QHttp;
-class QHttpResponseHeader;
class QLabel;
class QLineEdit;
class QProgressDialog;
class QPushButton;
class QSslError;
class QAuthenticator;
+class QNetworkReply;
+
+
QT_END_NAMESPACE
class HttpWindow : public QDialog
@@ -64,16 +67,18 @@ class HttpWindow : public QDialog
public:
HttpWindow(QWidget *parent = 0);
+ void startRequest(QUrl url);
+
private slots:
void downloadFile();
void cancelDownload();
- void httpRequestFinished(int requestId, bool error);
- void readResponseHeader(const QHttpResponseHeader &responseHeader);
- void updateDataReadProgress(int bytesRead, int totalBytes);
+ void httpFinished();
+ void httpReadyRead();
+ void updateDataReadProgress(qint64 bytesRead, qint64 totalBytes);
void enableDownloadButton();
- void slotAuthenticationRequired(const QString &, quint16, QAuthenticator *);
+ void slotAuthenticationRequired(QNetworkReply*,QAuthenticator *);
#ifndef QT_NO_OPENSSL
- void sslErrors(const QList<QSslError> &errors);
+ void sslErrors(QNetworkReply*,const QList<QSslError> &errors);
#endif
private:
@@ -85,7 +90,9 @@ private:
QPushButton *quitButton;
QDialogButtonBox *buttonBox;
- QHttp *http;
+ QUrl url;
+ QNetworkAccessManager qnam;
+ QNetworkReply *reply;
QFile *file;
int httpGetId;
bool httpRequestAborted;
diff --git a/examples/network/http/main.cpp b/examples/network/http/main.cpp
index ecbe100..817b2be 100644
--- a/examples/network/http/main.cpp
+++ b/examples/network/http/main.cpp
@@ -46,7 +46,6 @@
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
- qWarning("The usage of QHttp is not recommended anymore, please use QNetworkAccessManager.");
HttpWindow httpWin;
httpWin.show();
return httpWin.exec();
diff --git a/examples/network/loopback/dialog.cpp b/examples/network/loopback/dialog.cpp
index 27cff31..b504e36 100644
--- a/examples/network/loopback/dialog.cpp
+++ b/examples/network/loopback/dialog.cpp
@@ -44,12 +44,12 @@
#include "dialog.h"
-#if !defined(Q_OS_WINCE)
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
static const int TotalBytes = 50 * 1024 * 1024;
#else
static const int TotalBytes = 5 * 1024 * 1024;
#endif
-static const int PayloadSize = 65536;
+static const int PayloadSize = 64 * 1024; // 64 KB
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
@@ -130,6 +130,7 @@ void Dialog::acceptConnection()
void Dialog::startTransfer()
{
+ // called when the TCP client connected to the loopback server
bytesToWrite = TotalBytes - (int)tcpClient.write(QByteArray(PayloadSize, '@'));
clientStatusLabel->setText(tr("Connected"));
}
@@ -155,8 +156,11 @@ void Dialog::updateServerProgress()
void Dialog::updateClientProgress(qint64 numBytes)
{
+ // callen when the TCP client has written some bytes
bytesWritten += (int)numBytes;
- if (bytesToWrite > 0)
+
+ // only write more if not finished and when the Qt write buffer is below a certain size.
+ if (bytesToWrite > 0 && tcpClient.bytesToWrite() <= 4*PayloadSize)
bytesToWrite -= (int)tcpClient.write(QByteArray(qMin(bytesToWrite, PayloadSize), '@'));
clientProgressBar->setMaximum(TotalBytes);
diff --git a/mkspecs/aix-g++-64/qmake.conf b/mkspecs/aix-g++-64/qmake.conf
index 995178b..d9d9c38 100644
--- a/mkspecs/aix-g++-64/qmake.conf
+++ b/mkspecs/aix-g++-64/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/aix-g++/qmake.conf b/mkspecs/aix-g++/qmake.conf
index 969aa76..5fc4c17 100644
--- a/mkspecs/aix-g++/qmake.conf
+++ b/mkspecs/aix-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/aix-xlc-64/qmake.conf b/mkspecs/aix-xlc-64/qmake.conf
index a18aa9f..c67bd0b 100644
--- a/mkspecs/aix-xlc-64/qmake.conf
+++ b/mkspecs/aix-xlc-64/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/aix-xlc/qmake.conf b/mkspecs/aix-xlc/qmake.conf
index 42f6f7e..e81fb66 100644
--- a/mkspecs/aix-xlc/qmake.conf
+++ b/mkspecs/aix-xlc/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/common/qws.conf b/mkspecs/common/qws.conf
index 0242db4..96341a7 100644
--- a/mkspecs/common/qws.conf
+++ b/mkspecs/common/qws.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl
QT += core gui network
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index d2edbdb..48a28b7 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -115,6 +115,7 @@ QMAKE_STRIPFLAGS_LIB += --strip-unneeded
load(qt_config)
load(symbian/platform_paths)
+load(symbian/add_mmp_rules)
symbian-abld {
# Versions of abld prior to Symbian^3 have a bug where you cannot remove something from the command line without replacing it
@@ -123,7 +124,7 @@ symbian-abld {
} else {
MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA = "OPTION_REPLACE ARMCC --export_all_vtbl // don't use --export_all_vtbl"
}
-MMP_RULES += PAGED
+MMP_RULES += PAGED BYTEPAIRCOMPRESSTARGET
MMP_RULES += $$MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA
SYMBIAN_PLATFORMS = WINSCW GCCE ARMV5 ARMV6
@@ -153,7 +154,7 @@ exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/series60v5.0.sis
S60_VERSION = 3.2
} else {
S60_VERSION = 3.1
- MMP_RULES -= PAGED
+ MMP_RULES -= PAGED BYTEPAIRCOMPRESSTARGET
}
}
@@ -171,4 +172,4 @@ symbian {
# [TODO] QMAKE_CXXFLAGS.GCCE += $${QMAKE_CXXFLAGS_FAST_VFP.GCCE}
}
}
-} \ No newline at end of file
+}
diff --git a/mkspecs/cygwin-g++/qmake.conf b/mkspecs/cygwin-g++/qmake.conf
index 9cbc3d7..af9881b 100644
--- a/mkspecs/cygwin-g++/qmake.conf
+++ b/mkspecs/cygwin-g++/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl
QT += core gui
diff --git a/mkspecs/darwin-g++/qmake.conf b/mkspecs/darwin-g++/qmake.conf
index 72baa89..995679e 100644
--- a/mkspecs/darwin-g++/qmake.conf
+++ b/mkspecs/darwin-g++/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = macx
TEMPLATE = app
CONFIG += qt warn_on release link_prl native_precompiled_headers
QT += core gui
diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf
index 01074f4..155bfc3 100644
--- a/mkspecs/features/default_post.prf
+++ b/mkspecs/features/default_post.prf
@@ -8,3 +8,14 @@ incredibuild_xge {
QMAKE_INCDIR += $$QMAKE_INCDIR_POST
QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST
+
+# Let every project have a standard GNU `check' target
+!contains(QMAKE_EXTRA_TARGETS, check) {
+ # `make check' should iterate through all subdirs
+ contains(TEMPLATE, subdirs) {
+ check.CONFIG = recursive
+ check.recurse = $$SUBDIRS
+ check.recurse_target = check
+ }
+ QMAKE_EXTRA_TARGETS += check
+}
diff --git a/mkspecs/features/qttest_p4.prf b/mkspecs/features/qttest_p4.prf
index e0b22f2..53c0d74 100644
--- a/mkspecs/features/qttest_p4.prf
+++ b/mkspecs/features/qttest_p4.prf
@@ -20,12 +20,32 @@ check.path = .
macx: check.commands += ./$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
else:unix: check.commands += ./$(QMAKE_TARGET)
else:win32: {
- CONFIG(debug, debug|release):check.commands += debug\\$(QMAKE_TARGET)
- else:check.commands += release\\$(QMAKE_TARGET)
+ CONFIG(debug, debug|release):check.commands += $(DESTDIR_TARGET)
+ else:check.commands += $(DESTDIR_TARGET)
}
embedded: check.commands += -qws
QMAKE_EXTRA_TARGETS += check
+!debug_and_release|build_pass {
+ check.depends = $(DESTDIR_TARGET)
+} else {
+ check.CONFIG = recursive
+ # In debug and release mode, only run the test once.
+ # Run debug if available, release otherwise.
+ debug_and_release {
+ check.target = dummy_check
+ check.recurse_target = check
+ debug {
+ real_check.depends = debug-check
+ real_check.target = check
+ QMAKE_EXTRA_TARGETS += real_check
+ } else {
+ real_check.depends = release-check
+ real_check.target = check
+ QMAKE_EXTRA_TARGETS += real_check
+ }
+ }
+}
target.path += $$[QT_INSTALL_PREFIX]/tests/qt4
INSTALLS += target
diff --git a/mkspecs/features/symbian/add_mmp_rules.prf b/mkspecs/features/symbian/add_mmp_rules.prf
new file mode 100644
index 0000000..5384dbe
--- /dev/null
+++ b/mkspecs/features/symbian/add_mmp_rules.prf
@@ -0,0 +1,33 @@
+# Arg1: List of conditions to generate block for
+# Arg2: List of variables containing rules to add
+defineTest(addMMPRules) {
+ unset(myConditions)
+ unset(myVariables)
+ unset(myIfDef)
+
+ myConditions = $$eval($$1) default
+ myVariables = $$eval($$2)
+ myIfDef = if
+
+ for(condition, $$list($$myConditions)) {
+ contains(condition, default) {
+ libBlock = "$${LITERAL_HASH}else"
+ } else {
+ libBlock = "$${LITERAL_HASH}$${myIfDef} defined($${condition})"
+ myIfDef = elif
+ }
+
+ for(var, $$list($$myVariables)) {
+ varVal = $$eval($${var}.$${condition})
+ isEmpty(varVal) {
+ # No value defined for current condition, so use default
+ varVal = $$eval($${var}.default)
+ }
+ !isEmpty(varVal): libBlock += "$$join(varVal,$$escape_expand(\n))"
+ }
+
+ MMP_RULES += $$libBlock
+ }
+ MMP_RULES += "$${LITERAL_HASH}endif"
+ export(MMP_RULES)
+}
diff --git a/mkspecs/freebsd-g++/qmake.conf b/mkspecs/freebsd-g++/qmake.conf
index acd2a6a..51a1960 100644
--- a/mkspecs/freebsd-g++/qmake.conf
+++ b/mkspecs/freebsd-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/freebsd-g++34/qmake.conf b/mkspecs/freebsd-g++34/qmake.conf
index 9627b46..3e6bf6a 100644
--- a/mkspecs/freebsd-g++34/qmake.conf
+++ b/mkspecs/freebsd-g++34/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/freebsd-g++40/qmake.conf b/mkspecs/freebsd-g++40/qmake.conf
index e3a3c86..43d6980 100644
--- a/mkspecs/freebsd-g++40/qmake.conf
+++ b/mkspecs/freebsd-g++40/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/freebsd-icc/qmake.conf b/mkspecs/freebsd-icc/qmake.conf
index 60fa7ee..c9c3140 100644
--- a/mkspecs/freebsd-icc/qmake.conf
+++ b/mkspecs/freebsd-icc/qmake.conf
@@ -28,6 +28,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/hpux-acc-64/qmake.conf b/mkspecs/hpux-acc-64/qmake.conf
index 8757459..b138ef8 100644
--- a/mkspecs/hpux-acc-64/qmake.conf
+++ b/mkspecs/hpux-acc-64/qmake.conf
@@ -46,6 +46,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/hpux-acc-o64/qmake.conf b/mkspecs/hpux-acc-o64/qmake.conf
index d4d2c7d..b703540 100644
--- a/mkspecs/hpux-acc-o64/qmake.conf
+++ b/mkspecs/hpux-acc-o64/qmake.conf
@@ -46,6 +46,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/hpux-acc/qmake.conf b/mkspecs/hpux-acc/qmake.conf
index 19ee00f..8223a07 100644
--- a/mkspecs/hpux-acc/qmake.conf
+++ b/mkspecs/hpux-acc/qmake.conf
@@ -25,6 +25,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/hpux-g++-64/qmake.conf b/mkspecs/hpux-g++-64/qmake.conf
index f76bd4e..734a5f7 100644
--- a/mkspecs/hpux-g++-64/qmake.conf
+++ b/mkspecs/hpux-g++-64/qmake.conf
@@ -6,6 +6,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/hpux-g++/qmake.conf b/mkspecs/hpux-g++/qmake.conf
index 1ed2ee6..6935ea9 100644
--- a/mkspecs/hpux-g++/qmake.conf
+++ b/mkspecs/hpux-g++/qmake.conf
@@ -6,6 +6,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl plugin_no_soname
QT += core gui
diff --git a/mkspecs/hpuxi-acc-32/qmake.conf b/mkspecs/hpuxi-acc-32/qmake.conf
index 00b400f..93006e5 100644
--- a/mkspecs/hpuxi-acc-32/qmake.conf
+++ b/mkspecs/hpuxi-acc-32/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release plugin_no_soname
QT += core gui
diff --git a/mkspecs/hpuxi-acc-64/qmake.conf b/mkspecs/hpuxi-acc-64/qmake.conf
index feefd30..2fa1f01 100644
--- a/mkspecs/hpuxi-acc-64/qmake.conf
+++ b/mkspecs/hpuxi-acc-64/qmake.conf
@@ -46,6 +46,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release plugin_no_soname
QT += core gui
diff --git a/mkspecs/hpuxi-g++-64/qmake.conf b/mkspecs/hpuxi-g++-64/qmake.conf
index e8fa053..05b0691 100644
--- a/mkspecs/hpuxi-g++-64/qmake.conf
+++ b/mkspecs/hpuxi-g++-64/qmake.conf
@@ -11,6 +11,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/hurd-g++/qmake.conf b/mkspecs/hurd-g++/qmake.conf
index f213f2d..6570e40 100644
--- a/mkspecs/hurd-g++/qmake.conf
+++ b/mkspecs/hurd-g++/qmake.conf
@@ -6,6 +6,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
QT += core gui
CONFIG += qt warn_on release link_prl
diff --git a/mkspecs/irix-cc-64/qmake.conf b/mkspecs/irix-cc-64/qmake.conf
index bf5febb..4b651b2 100644
--- a/mkspecs/irix-cc-64/qmake.conf
+++ b/mkspecs/irix-cc-64/qmake.conf
@@ -35,6 +35,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/irix-cc/qmake.conf b/mkspecs/irix-cc/qmake.conf
index 99e8064..0070d42 100644
--- a/mkspecs/irix-cc/qmake.conf
+++ b/mkspecs/irix-cc/qmake.conf
@@ -35,6 +35,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/irix-g++-64/qmake.conf b/mkspecs/irix-g++-64/qmake.conf
index d614b9d..56f02f1 100644
--- a/mkspecs/irix-g++-64/qmake.conf
+++ b/mkspecs/irix-g++-64/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/irix-g++/qmake.conf b/mkspecs/irix-g++/qmake.conf
index 1f1df30..c1eafdb 100644
--- a/mkspecs/irix-g++/qmake.conf
+++ b/mkspecs/irix-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/linux-cxx/qmake.conf b/mkspecs/linux-cxx/qmake.conf
index 633b738..879c78a 100644
--- a/mkspecs/linux-cxx/qmake.conf
+++ b/mkspecs/linux-cxx/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/linux-ecc-64/qmake.conf b/mkspecs/linux-ecc-64/qmake.conf
index 359d44b..21f2960 100644
--- a/mkspecs/linux-ecc-64/qmake.conf
+++ b/mkspecs/linux-ecc-64/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/linux-g++-32/qmake.conf b/mkspecs/linux-g++-32/qmake.conf
index 44866cf..1e5c50b 100644
--- a/mkspecs/linux-g++-32/qmake.conf
+++ b/mkspecs/linux-g++-32/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl
QT += core gui
diff --git a/mkspecs/linux-g++-64/qmake.conf b/mkspecs/linux-g++-64/qmake.conf
index 4f8794f..e7372cc 100644
--- a/mkspecs/linux-g++-64/qmake.conf
+++ b/mkspecs/linux-g++-64/qmake.conf
@@ -6,6 +6,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl
QT += core gui
diff --git a/mkspecs/linux-g++-maemo/qmake.conf b/mkspecs/linux-g++-maemo/qmake.conf
index 38c26a6..ca201bc 100644
--- a/mkspecs/linux-g++-maemo/qmake.conf
+++ b/mkspecs/linux-g++-maemo/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl
CONFIG += nostrip
diff --git a/mkspecs/linux-g++/qmake.conf b/mkspecs/linux-g++/qmake.conf
index 47784e2..4b21896 100644
--- a/mkspecs/linux-g++/qmake.conf
+++ b/mkspecs/linux-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl
QT += core gui
diff --git a/mkspecs/linux-icc/qmake.conf b/mkspecs/linux-icc/qmake.conf
index 965de0c..eeb24a3 100644
--- a/mkspecs/linux-icc/qmake.conf
+++ b/mkspecs/linux-icc/qmake.conf
@@ -11,6 +11,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/linux-kcc/qmake.conf b/mkspecs/linux-kcc/qmake.conf
index 009c486..217572f 100644
--- a/mkspecs/linux-kcc/qmake.conf
+++ b/mkspecs/linux-kcc/qmake.conf
@@ -14,6 +14,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/linux-llvm/qmake.conf b/mkspecs/linux-llvm/qmake.conf
index 9c34377..73d6609 100644
--- a/mkspecs/linux-llvm/qmake.conf
+++ b/mkspecs/linux-llvm/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl
QT += core gui
diff --git a/mkspecs/linux-lsb-g++/qmake.conf b/mkspecs/linux-lsb-g++/qmake.conf
index b603a16..4b4deab 100644
--- a/mkspecs/linux-lsb-g++/qmake.conf
+++ b/mkspecs/linux-lsb-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl
QT += core gui
diff --git a/mkspecs/linux-pgcc/qmake.conf b/mkspecs/linux-pgcc/qmake.conf
index 756f1af..19af8ee 100644
--- a/mkspecs/linux-pgcc/qmake.conf
+++ b/mkspecs/linux-pgcc/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/lynxos-g++/qmake.conf b/mkspecs/lynxos-g++/qmake.conf
index 40f2b9f..eae3308 100644
--- a/mkspecs/lynxos-g++/qmake.conf
+++ b/mkspecs/lynxos-g++/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl
QT += core gui
diff --git a/mkspecs/macx-g++/qmake.conf b/mkspecs/macx-g++/qmake.conf
index 4355073..4464686 100644
--- a/mkspecs/macx-g++/qmake.conf
+++ b/mkspecs/macx-g++/qmake.conf
@@ -7,6 +7,7 @@
#
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
diff --git a/mkspecs/macx-g++40/qmake.conf b/mkspecs/macx-g++40/qmake.conf
index d6fd09d..784f5fc 100644
--- a/mkspecs/macx-g++40/qmake.conf
+++ b/mkspecs/macx-g++40/qmake.conf
@@ -7,6 +7,7 @@
#
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
diff --git a/mkspecs/macx-g++42/qmake.conf b/mkspecs/macx-g++42/qmake.conf
index 06bbdcb..fb93697 100644
--- a/mkspecs/macx-g++42/qmake.conf
+++ b/mkspecs/macx-g++42/qmake.conf
@@ -7,6 +7,7 @@
#
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
diff --git a/mkspecs/macx-icc/qmake.conf b/mkspecs/macx-icc/qmake.conf
index b7753d8..00de6c4 100644
--- a/mkspecs/macx-icc/qmake.conf
+++ b/mkspecs/macx-icc/qmake.conf
@@ -13,6 +13,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = macx
TEMPLATE = app
CONFIG += qt warn_on release link_prl app_bundle
QT += core gui
diff --git a/mkspecs/macx-llvm/qmake.conf b/mkspecs/macx-llvm/qmake.conf
index de8040c..d46baea 100644
--- a/mkspecs/macx-llvm/qmake.conf
+++ b/mkspecs/macx-llvm/qmake.conf
@@ -7,6 +7,7 @@
#
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
diff --git a/mkspecs/macx-xlc/qmake.conf b/mkspecs/macx-xlc/qmake.conf
index 6a8c246..f84524b 100644
--- a/mkspecs/macx-xlc/qmake.conf
+++ b/mkspecs/macx-xlc/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = macx
TEMPLATE = app
CONFIG += qt warn_on release app_bundle global_init_link_order lib_version_first plugin_no_soname link_prl
QT += core gui
diff --git a/mkspecs/netbsd-g++/qmake.conf b/mkspecs/netbsd-g++/qmake.conf
index 622bace..1cb449f 100644
--- a/mkspecs/netbsd-g++/qmake.conf
+++ b/mkspecs/netbsd-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/openbsd-g++/qmake.conf b/mkspecs/openbsd-g++/qmake.conf
index 4204f65..c948c90 100644
--- a/mkspecs/openbsd-g++/qmake.conf
+++ b/mkspecs/openbsd-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/qws/freebsd-generic-g++/qmake.conf b/mkspecs/qws/freebsd-generic-g++/qmake.conf
index 19d6709..6e30d4f 100644
--- a/mkspecs/qws/freebsd-generic-g++/qmake.conf
+++ b/mkspecs/qws/freebsd-generic-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release
QT += core gui network
diff --git a/mkspecs/qws/macx-generic-g++/qmake.conf b/mkspecs/qws/macx-generic-g++/qmake.conf
index b724cbc..f753222 100644
--- a/mkspecs/qws/macx-generic-g++/qmake.conf
+++ b/mkspecs/qws/macx-generic-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = macx
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui network
diff --git a/mkspecs/qws/solaris-generic-g++/qmake.conf b/mkspecs/qws/solaris-generic-g++/qmake.conf
index db83a57..f5874c2 100644
--- a/mkspecs/qws/solaris-generic-g++/qmake.conf
+++ b/mkspecs/qws/solaris-generic-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui network
diff --git a/mkspecs/sco-cc/qmake.conf b/mkspecs/sco-cc/qmake.conf
index f682f49..6eb5ca1 100644
--- a/mkspecs/sco-cc/qmake.conf
+++ b/mkspecs/sco-cc/qmake.conf
@@ -8,6 +8,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
QT += core gui
CONFIG += qt warn_on release link_prl
diff --git a/mkspecs/sco-g++/qmake.conf b/mkspecs/sco-g++/qmake.conf
index 268bf32..746cf2c 100644
--- a/mkspecs/sco-g++/qmake.conf
+++ b/mkspecs/sco-g++/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/solaris-cc-64/qmake.conf b/mkspecs/solaris-cc-64/qmake.conf
index d51d77a..3d35d62 100644
--- a/mkspecs/solaris-cc-64/qmake.conf
+++ b/mkspecs/solaris-cc-64/qmake.conf
@@ -22,6 +22,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/solaris-cc/qmake.conf b/mkspecs/solaris-cc/qmake.conf
index 354b83c..0c97620 100644
--- a/mkspecs/solaris-cc/qmake.conf
+++ b/mkspecs/solaris-cc/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/solaris-g++-64/qmake.conf b/mkspecs/solaris-g++-64/qmake.conf
index e89aff3..587c630 100644
--- a/mkspecs/solaris-g++-64/qmake.conf
+++ b/mkspecs/solaris-g++-64/qmake.conf
@@ -26,6 +26,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/solaris-g++/qmake.conf b/mkspecs/solaris-g++/qmake.conf
index bce0889..0814980 100644
--- a/mkspecs/solaris-g++/qmake.conf
+++ b/mkspecs/solaris-g++/qmake.conf
@@ -9,6 +9,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/symbian-abld/qmake.conf b/mkspecs/symbian-abld/qmake.conf
index 499bf63..33b897d 100644
--- a/mkspecs/symbian-abld/qmake.conf
+++ b/mkspecs/symbian-abld/qmake.conf
@@ -5,5 +5,6 @@
#
MAKEFILE_GENERATOR = SYMBIAN_ABLD
+option(recursive)
include(../common/symbian/symbian.conf)
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm b/mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm
index 3defe30..3877edb 100644
--- a/mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm
@@ -7,14 +7,12 @@
# **
# ****************************************************************************/
-include $(FLMHOME)/metaflm.mk
SINGLETON:=$(call sanitise,TARGET_$(DEPLOY_TARGET))
CLEAN_TARGET:=
define qmake_emulator_deployment
$(ALLTARGET):: $(1)
-FINAL::$(1)
# Prevent duplicate targets from being created
$(SINGLETON):=1
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 79ab8cb..daf33d4 100644
--- a/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm
@@ -7,21 +7,17 @@
# **
# ****************************************************************************/
-include $(FLMHOME)/metaflm.mk
SINGLETON:=$(call sanitise,TARGET_$(PREDEP_TARGET))
define qmake_extra_pre_targetdep
-$(ALLTARGET):: $(PREDEP_TARGET)
EXPORT:: $(PREDEP_TARGET)
-LIBRARY:: $(PREDEP_TARGET)
-TARGET:: $(PREDEP_TARGET)
# Prevent duplicate targets from being created
$(SINGLETON):=1
-$(PREDEP_TARGET): $(DEPS)
- $(call startrule,qmake_extra_pre_targetdep) \
+$(PREDEP_TARGET): $(DEPS)
+ $(call startrule,qmake_extra_pre_targetdep,FORCESUCCESS) \
$(COMMAND) \
$(call endrule,qmake_extra_pre_targetdep)
endef
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qmake_post_link.flm b/mkspecs/symbian-sbsv2/flm/qt/qmake_post_link.flm
index 8ad89e7..9612d2e 100644
--- a/mkspecs/symbian-sbsv2/flm/qt/qmake_post_link.flm
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_post_link.flm
@@ -7,7 +7,6 @@
# **
# ****************************************************************************/
-include $(FLMHOME)/metaflm.mk
POST_LINK_TARGET:=POST_LINK_$(PLATFORM_PATH)_$(CFG_PATH)_$(call sanitise,$(LINK_TARGET))
POST_LINK_DEP:=$(EPOCROOT)/epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/$(LINK_TARGET)
@@ -21,7 +20,6 @@ endef
define qmake_post_link
$(ALLTARGET):: $(POST_LINK_TARGET)
-FINAL:: $(POST_LINK_TARGET)
$(POST_LINK_TARGET): $(POST_LINK_DEP)
$(call startrule,qmake_post_link) \
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qmake_store_build.flm b/mkspecs/symbian-sbsv2/flm/qt/qmake_store_build.flm
index d952f8f..e0b6503 100644
--- a/mkspecs/symbian-sbsv2/flm/qt/qmake_store_build.flm
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_store_build.flm
@@ -7,7 +7,6 @@
# **
# ****************************************************************************/
-include $(FLMHOME)/metaflm.mk
SINGLETON:=$(call sanitise,TSTORE_SINGLETON_$(EXTENSION_ROOT))
@@ -27,7 +26,7 @@ VISUAL_CFG:=RELEASE
endif
define qmake_store_build
-FINAL:: $(STORE_BUILD_TARGET)
+$(ALLTARGET):: $(STORE_BUILD_TARGET)
$(STORE_BUILD_TARGET):
$(call startrule,qmake_store_build) \
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qt.xml b/mkspecs/symbian-sbsv2/flm/qt/qt.xml
index 904f113..0f7db3c 100644
--- a/mkspecs/symbian-sbsv2/flm/qt/qt.xml
+++ b/mkspecs/symbian-sbsv2/flm/qt/qt.xml
@@ -16,7 +16,7 @@
<!-- Extension interfaces : replacements for Template Extension Makefiles -->
- <interface name="qt.qmake_extra_pre_targetdep" extends="Symbian.UserFLM"
+ <interface name="qt.qmake_extra_pre_targetdep.export" extends="Symbian.UserFLM"
flm="qmake_extra_pre_targetdep.flm">
<param name='PREDEP_TARGET' />
<param name='DEPS' default = '' />
diff --git a/mkspecs/symbian-sbsv2/qmake.conf b/mkspecs/symbian-sbsv2/qmake.conf
index 0a5e878..585e645 100644
--- a/mkspecs/symbian-sbsv2/qmake.conf
+++ b/mkspecs/symbian-sbsv2/qmake.conf
@@ -5,5 +5,6 @@
#
MAKEFILE_GENERATOR = SYMBIAN_SBSV2
+option(recursive)
include(../common/symbian/symbian.conf)
diff --git a/mkspecs/tru64-cxx/qmake.conf b/mkspecs/tru64-cxx/qmake.conf
index 8cef84d..88021df 100644
--- a/mkspecs/tru64-cxx/qmake.conf
+++ b/mkspecs/tru64-cxx/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl plugin_no_soname
QT += core gui
diff --git a/mkspecs/tru64-g++/qmake.conf b/mkspecs/tru64-g++/qmake.conf
index 7749013..71e5682 100644
--- a/mkspecs/tru64-g++/qmake.conf
+++ b/mkspecs/tru64-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl plugin_no_soname
QT += core gui
diff --git a/mkspecs/unixware-cc/qmake.conf b/mkspecs/unixware-cc/qmake.conf
index 978aaa1..5fb2b2c 100644
--- a/mkspecs/unixware-cc/qmake.conf
+++ b/mkspecs/unixware-cc/qmake.conf
@@ -8,6 +8,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/unixware-g++/qmake.conf b/mkspecs/unixware-g++/qmake.conf
index ce1a0f1..b6a438a 100644
--- a/mkspecs/unixware-g++/qmake.conf
+++ b/mkspecs/unixware-g++/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf b/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf
index 1ade6b9..28e7754 100644
--- a/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf
+++ b/mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf
@@ -12,6 +12,7 @@
# $staging/usr/lib/pkgconfig)
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl
QT += core gui
diff --git a/mkspecs/unsupported/qnx-g++/qmake.conf b/mkspecs/unsupported/qnx-g++/qmake.conf
index 2e568dc..37e7bce 100644
--- a/mkspecs/unsupported/qnx-g++/qmake.conf
+++ b/mkspecs/unsupported/qnx-g++/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/unsupported/qws/qnx-641/qmake.conf b/mkspecs/unsupported/qws/qnx-641/qmake.conf
index db333b7..12eaf1d 100644
--- a/mkspecs/unsupported/qws/qnx-641/qmake.conf
+++ b/mkspecs/unsupported/qws/qnx-641/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf b/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf
index 51fe697..62857bf 100644
--- a/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf
+++ b/mkspecs/unsupported/qws/qnx-generic-g++/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/unsupported/qws/qnx-i386-g++/qmake.conf b/mkspecs/unsupported/qws/qnx-i386-g++/qmake.conf
index fffb80f..dce60ea 100644
--- a/mkspecs/unsupported/qws/qnx-i386-g++/qmake.conf
+++ b/mkspecs/unsupported/qws/qnx-i386-g++/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/unsupported/qws/qnx-ppc-g++/qmake.conf b/mkspecs/unsupported/qws/qnx-ppc-g++/qmake.conf
index 56a9c66..93d04ff 100644
--- a/mkspecs/unsupported/qws/qnx-ppc-g++/qmake.conf
+++ b/mkspecs/unsupported/qws/qnx-ppc-g++/qmake.conf
@@ -5,6 +5,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release link_prl
QT += core gui
diff --git a/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf b/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf
index a8f7e49..fc0b125 100644
--- a/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf
+++ b/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl vxworks
QT += core gui network
diff --git a/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf b/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf
index be8c13d..80b5f3e 100644
--- a/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf
+++ b/mkspecs/unsupported/vxworks-ppc-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl vxworks
QT += core gui network
diff --git a/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf b/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf
index 6228a6b..be35172 100644
--- a/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf
+++ b/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl vxworks
QT += core gui network
diff --git a/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf b/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf
index 29e9c70..83f46c0 100644
--- a/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf
+++ b/mkspecs/unsupported/vxworks-simpentium-g++/qmake.conf
@@ -3,6 +3,7 @@
#
MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl vxworks
QT += core gui network
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index ec712a0..a8c1c3c 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -2152,12 +2152,14 @@ QString MakefileGenerator::buildArgs(const QString &outdir)
ret += " -nodependheuristics";
if(!Option::mkfile::qmakespec_commandline.isEmpty())
ret += " -spec " + specdir(outdir);
- if(Option::target_mode == Option::TARG_MACX_MODE)
- ret += " -macx";
- else if(Option::target_mode == Option::TARG_UNIX_MODE)
- ret += " -unix";
- else if(Option::target_mode == Option::TARG_WIN_MODE)
- ret += " -win32";
+ if (Option::target_mode_overridden) {
+ if (Option::target_mode == Option::TARG_MACX_MODE)
+ ret += " -macx";
+ else if (Option::target_mode == Option::TARG_UNIX_MODE)
+ ret += " -unix";
+ else if (Option::target_mode == Option::TARG_WIN_MODE)
+ ret += " -win32";
+ }
//configs
for(QStringList::Iterator it = Option::user_configs.begin();
diff --git a/qmake/generators/makefile.h b/qmake/generators/makefile.h
index d89c3b1..addb1f5 100644
--- a/qmake/generators/makefile.h
+++ b/qmake/generators/makefile.h
@@ -247,7 +247,8 @@ public:
virtual bool supportsMergedBuilds() { return false; }
virtual bool mergeBuildProject(MakefileGenerator * /*other*/) { return false; }
virtual bool openOutput(QFile &, const QString &build) const;
- virtual bool isWindowsShell() const { return Option::target_mode == Option::TARG_WIN_MODE; }
+ virtual bool isWindowsShell() const { return Option::host_mode == Option::HOST_WIN_MODE; }
+ virtual bool isForSymbianSbsv2() const { return false; } // FIXME: killme - i'm ugly!
};
inline void MakefileGenerator::setNoIO(bool o)
diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp
index f48491c..bc8927c 100644
--- a/qmake/generators/metamakefile.cpp
+++ b/qmake/generators/metamakefile.cpp
@@ -293,7 +293,15 @@ SubdirsMetaMakefileGenerator::init()
init_flag = true;
bool hasError = false;
- if(Option::recursive) {
+ // It might make sense to bequeath the CONFIG option to the recursed
+ // projects. OTOH, one would most likely have it in all projects anyway -
+ // either through a qmakespec, a .qmake.cache or explicitly - as otherwise
+ // running qmake in a subdirectory would have a different auto-recurse
+ // setting than in parent directories.
+ bool recurse = Option::recursive == Option::QMAKE_RECURSIVE_YES
+ || (Option::recursive == Option::QMAKE_RECURSIVE_DEFAULT
+ && project->isRecursive());
+ if(recurse) {
QString old_output_dir = Option::output_dir;
QString old_output = Option::output.fileName();
QString oldpwd = qmake_getpwd();
@@ -375,7 +383,7 @@ SubdirsMetaMakefileGenerator::init()
Subdir *self = new Subdir;
self->input_dir = qmake_getpwd();
self->output_dir = Option::output_dir;
- if(!Option::recursive || (!Option::output.fileName().endsWith(Option::dir_sep) && !QFileInfo(Option::output).isDir()))
+ if(!recurse || (!Option::output.fileName().endsWith(Option::dir_sep) && !QFileInfo(Option::output).isDir()))
self->output_file = Option::output.fileName();
self->makefile = new BuildsMetaMakefileGenerator(project, name, false);
self->makefile->init();
@@ -458,7 +466,7 @@ MetaMakefileGenerator::createMakefileGenerator(QMakeProject *proj, bool noIO)
} else if(gen == "PROJECTBUILDER" || gen == "XCODE") {
mkfile = new ProjectBuilderMakefileGenerator;
} else if(gen == "MSVC.NET") {
- if(proj->first("TEMPLATE").indexOf(QRegExp("^vc.*")) != -1)
+ if (proj->first("TEMPLATE").startsWith("vc"))
mkfile = new VcprojGenerator;
else
mkfile = new NmakeMakefileGenerator;
@@ -478,6 +486,40 @@ MetaMakefileGenerator::createMakefileGenerator(QMakeProject *proj, bool noIO)
return mkfile;
}
+bool
+MetaMakefileGenerator::modesForGenerator(const QString &gen,
+ Option::HOST_MODE *host_mode, Option::TARG_MODE *target_mode)
+{
+ if (gen == "UNIX") {
+#ifdef Q_OS_MAC
+ *host_mode = Option::HOST_MACX_MODE;
+ *target_mode = Option::TARG_MACX_MODE;
+#else
+ *host_mode = Option::HOST_UNIX_MODE;
+ *target_mode = Option::TARG_UNIX_MODE;
+#endif
+ } else if (gen == "MSVC.NET" || gen == "MINGW" || gen == "BMAKE") {
+ *host_mode = Option::HOST_WIN_MODE;
+ *target_mode = Option::TARG_WIN_MODE;
+ } else if (gen == "PROJECTBUILDER" || gen == "XCODE") {
+ *host_mode = Option::HOST_MACX_MODE;
+ *target_mode = Option::TARG_MACX_MODE;
+ } else if (gen == "SYMBIAN_ABLD" || gen == "SYMBIAN_SBSV2") {
+#if defined(Q_OS_MAC)
+ *host_mode = Option::HOST_MACX_MODE;
+#elif defined(Q_OS_UNIX)
+ *host_mode = Option::HOST_UNIX_MODE;
+#else
+ *host_mode = Option::HOST_WIN_MODE;
+#endif
+ *target_mode = Option::TARG_SYMBIAN_MODE;
+ } else {
+ fprintf(stderr, "Unknown generator specified: %s\n", gen.toLatin1().constData());
+ return false;
+ }
+ return true;
+}
+
MetaMakefileGenerator *
MetaMakefileGenerator::createMetaGenerator(QMakeProject *proj, const QString &name, bool op, bool *success)
{
diff --git a/qmake/generators/metamakefile.h b/qmake/generators/metamakefile.h
index 8675115..e559c8e 100644
--- a/qmake/generators/metamakefile.h
+++ b/qmake/generators/metamakefile.h
@@ -42,6 +42,8 @@
#ifndef METAMAKEFILE_H
#define METAMAKEFILE_H
+#include <option.h>
+
#include <qlist.h>
#include <qstring.h>
@@ -65,6 +67,9 @@ public:
static MetaMakefileGenerator *createMetaGenerator(QMakeProject *proj, const QString &name, bool op=true, bool *success = 0);
static MakefileGenerator *createMakefileGenerator(QMakeProject *proj, bool noIO = false);
+ static bool modesForGenerator(const QString &generator,
+ Option::HOST_MODE *host_mode, Option::TARG_MODE *target_mode);
+
inline QMakeProject *projectFile() const { return project; }
virtual bool init() = 0;
diff --git a/qmake/generators/projectgenerator.cpp b/qmake/generators/projectgenerator.cpp
index 8622cd9..d225635 100644
--- a/qmake/generators/projectgenerator.cpp
+++ b/qmake/generators/projectgenerator.cpp
@@ -111,7 +111,7 @@ ProjectGenerator::init()
add_depend = true;
if(dir.right(1) != Option::dir_sep)
dir += Option::dir_sep;
- if(Option::recursive) {
+ if(Option::recursive == Option::QMAKE_RECURSIVE_YES) {
QStringList files = QDir(dir).entryList(QDir::Files);
for(int i = 0; i < (int)files.count(); i++) {
if(files[i] != "." && files[i] != "..")
@@ -138,7 +138,7 @@ ProjectGenerator::init()
dir = regex.left(s+1);
regex = regex.right(regex.length() - (s+1));
}
- if(Option::recursive) {
+ if(Option::recursive == Option::QMAKE_RECURSIVE_YES) {
QStringList entries = QDir(dir).entryList(QDir::Dirs);
for(int i = 0; i < (int)entries.count(); i++) {
if(entries[i] != "." && entries[i] != "..") {
@@ -193,7 +193,7 @@ ProjectGenerator::init()
subdirs.append(nd);
}
}
- if(Option::recursive) {
+ if(Option::recursive == Option::QMAKE_RECURSIVE_YES) {
QStringList dirs = QDir(newdir).entryList(QDir::Dirs);
for(int i = 0; i < (int)dirs.count(); i++) {
QString nd = fileFixify(newdir + QDir::separator() + dirs[i]);
@@ -230,7 +230,8 @@ ProjectGenerator::init()
}
}
}
- if(Option::recursive && !knownDirs.contains(newdir, Qt::CaseInsensitive))
+ if(Option::recursive == Option::QMAKE_RECURSIVE_YES
+ && !knownDirs.contains(newdir, Qt::CaseInsensitive))
knownDirs.append(newdir);
}
}
diff --git a/qmake/generators/symbian/initprojectdeploy_symbian.cpp b/qmake/generators/symbian/initprojectdeploy_symbian.cpp
index 0d50112..81c9408 100644
--- a/qmake/generators/symbian/initprojectdeploy_symbian.cpp
+++ b/qmake/generators/symbian/initprojectdeploy_symbian.cpp
@@ -49,12 +49,18 @@
// Included from tools/shared
#include <symbian/epocroot.h>
-#define SYSBIN_DIR "\\sys\\bin"
+#define SYSBIN_DIR "/sys/bin"
#define SUFFIX_DLL "dll"
#define SUFFIX_EXE "exe"
#define SUFFIX_QTPLUGIN "qtplugin"
+static QString fixPathToEpocOS(const QString &src)
+{
+ QString ret = Option::fixPathToTargetOS(src);
+ return ret.replace('/', '\\');
+}
+
static bool isPlugin(const QFileInfo& info, const QString& devicePath)
{
// Libraries are plugins if deployment path is something else than
@@ -85,12 +91,12 @@ static void createPluginStub(const QFileInfo& info,
QStringList& generatedDirs,
QStringList& generatedFiles)
{
- QDir().mkpath(PLUGIN_STUB_DIR);
+ QDir().mkpath(QLatin1String(PLUGIN_STUB_DIR));
if (!generatedDirs.contains(PLUGIN_STUB_DIR))
generatedDirs << PLUGIN_STUB_DIR;
// Plugin stubs must have different name from the actual plugins, because
// the toolchain for creating ROM images cannot handle non-binary .dll files properly.
- QFile stubFile(QDir(PLUGIN_STUB_DIR).filePath(info.completeBaseName() + "." SUFFIX_QTPLUGIN));
+ QFile stubFile(QLatin1String(PLUGIN_STUB_DIR "/") + info.completeBaseName() + "." SUFFIX_QTPLUGIN);
if (stubFile.open(QIODevice::WriteOnly)) {
if (!generatedFiles.contains(stubFile.fileName()))
generatedFiles << stubFile.fileName();
@@ -104,7 +110,7 @@ static void createPluginStub(const QFileInfo& info,
}
QFileInfo stubInfo(stubFile);
deploymentList.append(CopyItem(Option::fixPathToLocalOS(stubInfo.absoluteFilePath()),
- Option::fixPathToLocalOS(devicePath + "\\" + stubInfo.fileName())));
+ fixPathToEpocOS(devicePath + "/" + stubInfo.fileName())));
}
QString generate_uid(const QString& target)
@@ -168,21 +174,29 @@ void initProjectDeploySymbian(QMakeProject* project,
foreach(QString item, project->values("DEPLOYMENT")) {
QString devicePath = project->first(item + ".path");
+ QString devicePathWithoutDrive = devicePath;
+
+ bool devicePathHasDriveLetter = false;
+ if (devicePath.size() > 1) {
+ devicePathHasDriveLetter = devicePath.at(1) == QLatin1Char(':');
+ }
+
+ // Sometimes devicePath can contain disk but APP_RESOURCE_DIR does not,
+ // so remove the drive letter for comparison purposes.
+ if (devicePathHasDriveLetter)
+ {
+ devicePathWithoutDrive.remove(0,2);
+ }
if (!deployBinaries
- && !devicePath.isEmpty()
- && (0 == devicePath.compare(project->values("APP_RESOURCE_DIR").join(""), Qt::CaseInsensitive)
- || 0 == devicePath.compare(project->values("REG_RESOURCE_IMPORT_DIR").join(""), Qt::CaseInsensitive))) {
+ && !devicePathWithoutDrive.isEmpty()
+ && (0 == devicePathWithoutDrive.compare(project->values("APP_RESOURCE_DIR").join(""), Qt::CaseInsensitive)
+ || 0 == devicePathWithoutDrive.compare(project->values("REG_RESOURCE_IMPORT_DIR").join(""), Qt::CaseInsensitive))) {
// Do not deploy resources in emulator builds, as that seems to cause conflicts
// If there is ever a real need to deploy pre-built resources for emulator,
// BLD_INF_RULES.prj_exports can be used as a workaround.
continue;
}
- bool devicePathHasDriveLetter = false;
- if (devicePath.size() > 1) {
- devicePathHasDriveLetter = devicePath.at(1) == QLatin1Char(':');
- }
-
if (devicePath.isEmpty() || devicePath == QLatin1String(".")) {
devicePath = targetPath;
}
@@ -190,24 +204,35 @@ void initProjectDeploySymbian(QMakeProject* project,
else if (!(devicePath.at(0) == QLatin1Char('/')
|| devicePath.at(0) == QLatin1Char('\\')
|| devicePathHasDriveLetter)) {
- // create output path
- devicePath = Option::fixPathToLocalOS(QDir::cleanPath(targetPath + QLatin1Char('\\') + devicePath));
+ // Create output path
+ devicePath = Option::fixPathToLocalOS(QDir::cleanPath(targetPath + QLatin1Char('/') + devicePath));
} else {
- if (0 == platform.compare(QLatin1String("winscw"), Qt::CaseInsensitive)) {
+ if (!platform.compare(QLatin1String(EMULATOR_DEPLOYMENT_PLATFORM))) {
if (devicePathHasDriveLetter) {
- devicePath = epocRoot() + "epoc32\\winscw\\" + devicePath.remove(1, 1);
+ devicePath = epocRoot() + "epoc32/winscw/" + devicePath.remove(1, 1);
} else {
- devicePath = epocRoot() + "epoc32\\winscw\\c" + devicePath;
+ devicePath = epocRoot() + "epoc32/winscw/c" + devicePath;
}
} else {
- // Drive letter needed if targetpath contains one and it is not already in
- if (targetPathHasDriveLetter && !devicePathHasDriveLetter) {
- devicePath = deploymentDrive + devicePath;
+ if (!devicePathHasDriveLetter) {
+ if (!platform.compare(QLatin1String(ROM_DEPLOYMENT_PLATFORM))) {
+ //For plugin deployment under ARM no needed drive letter
+ devicePath = epocRoot() + "epoc32/data/z" + devicePath;
+ } else if (targetPathHasDriveLetter) {
+ // Drive letter needed if targetpath contains one and it is not already in
+ devicePath = deploymentDrive + devicePath;
+ }
+ } else {
+ //it is necessary to delete drive letter for ARM deployment
+ if (!platform.compare(QLatin1String(ROM_DEPLOYMENT_PLATFORM))) {
+ devicePath.remove(0,2);
+ devicePath = epocRoot() + "epoc32/data/z" + devicePath;
+ }
}
}
}
- devicePath.replace(QLatin1String("/"), QLatin1String("\\"));
+ devicePath.replace(QLatin1String("\\"), QLatin1String("/"));
if (!deployBinaries &&
0 == devicePath.right(8).compare(QLatin1String(SYSBIN_DIR), Qt::CaseInsensitive)) {
@@ -231,7 +256,7 @@ void initProjectDeploySymbian(QMakeProject* project,
dirSearch = true;
} else {
if (info.exists() || source.indexOf('*') != -1) {
- nameFilter = source.split('\\').last();
+ nameFilter = source.split(QDir::separator()).last();
searchPath = info.absolutePath();
} else {
// Entry was not found. That is ok if it is a binary, since those do not necessarily yet exist.
@@ -239,13 +264,19 @@ void initProjectDeploySymbian(QMakeProject* project,
if (isBinary(info)) {
if (deployBinaries) {
// Executables and libraries are deployed to \sys\bin
- QFileInfo releasePath(epocRoot() + QDir::toNativeSeparators("epoc32/release/" + platform + "/" + build + "/"));
+ QFileInfo targetPath(epocRoot() + "epoc32/release/" + platform + "/" + build + "/");
if(devicePathHasDriveLetter) {
- deploymentList.append(CopyItem(Option::fixPathToLocalOS(QDir(releasePath.absolutePath()).filePath(info.fileName()), false, true),
- Option::fixPathToLocalOS(devicePath.left(2) + QLatin1String(SYSBIN_DIR "\\") + info.fileName())));
+ deploymentList.append(CopyItem(
+ Option::fixPathToLocalOS(targetPath.absolutePath() + "/" + info.fileName(),
+ false, true),
+ fixPathToEpocOS(devicePath.left(2) + QLatin1String(SYSBIN_DIR "/")
+ + info.fileName())));
} else {
- deploymentList.append(CopyItem(Option::fixPathToLocalOS(QDir(releasePath.absolutePath()).filePath(info.fileName()), false, true),
- Option::fixPathToLocalOS(deploymentDrive + QLatin1String(SYSBIN_DIR "\\") + info.fileName())));
+ deploymentList.append(CopyItem(
+ Option::fixPathToLocalOS(targetPath.absolutePath() + "/" + info.fileName(),
+ false, true),
+ fixPathToEpocOS(deploymentDrive + QLatin1String(SYSBIN_DIR "/")
+ + info.fileName())));
}
}
if (isPlugin(info, devicePath)) {
@@ -256,7 +287,7 @@ void initProjectDeploySymbian(QMakeProject* project,
// Generate deployment even if file doesn't exist, as this may be the case
// when generating .pkg files.
deploymentList.append(CopyItem(Option::fixPathToLocalOS(info.absoluteFilePath()),
- Option::fixPathToLocalOS(devicePath + "\\" + info.fileName())));
+ fixPathToEpocOS(devicePath + "/" + info.fileName())));
continue;
}
}
@@ -278,14 +309,26 @@ void initProjectDeploySymbian(QMakeProject* project,
// This deploys pre-built plugins. Other pre-built binaries will deploy normally,
// as they have SYSBIN_DIR target path.
if (deployBinaries) {
- deploymentList.append(CopyItem(Option::fixPathToLocalOS(absoluteItemPath + "\\" + iterator.fileName()),
- Option::fixPathToLocalOS(deploymentDrive + QLatin1String(SYSBIN_DIR "\\") + iterator.fileName())));
+ if (devicePathHasDriveLetter) {
+ deploymentList.append(CopyItem(
+ Option::fixPathToLocalOS(absoluteItemPath + "/" + iterator.fileName()),
+ fixPathToEpocOS(devicePath.left(2) + QLatin1String(SYSBIN_DIR "/")
+ + iterator.fileName())));
+ } else {
+ deploymentList.append(CopyItem(
+ Option::fixPathToLocalOS(absoluteItemPath + "/" + iterator.fileName()),
+ fixPathToEpocOS(deploymentDrive + QLatin1String(SYSBIN_DIR "/")
+ + iterator.fileName())));
+ }
}
- createPluginStub(info, devicePath + "\\" + absoluteItemPath.right(diffSize), deploymentList, generatedDirs, generatedFiles);
+ createPluginStub(info, devicePath + "/" + absoluteItemPath.right(diffSize),
+ deploymentList, generatedDirs, generatedFiles);
continue;
} else {
- deploymentList.append(CopyItem(Option::fixPathToLocalOS(absoluteItemPath + "\\" + iterator.fileName()),
- Option::fixPathToLocalOS(devicePath + "\\" + absoluteItemPath.right(diffSize) + "\\" + iterator.fileName())));
+ deploymentList.append(CopyItem(
+ Option::fixPathToLocalOS(absoluteItemPath + "/" + iterator.fileName()),
+ fixPathToEpocOS(devicePath + "/" + absoluteItemPath.right(diffSize)
+ + "/" + iterator.fileName())));
}
}
}
diff --git a/qmake/generators/symbian/initprojectdeploy_symbian.h b/qmake/generators/symbian/initprojectdeploy_symbian.h
index b409225..c621915 100644
--- a/qmake/generators/symbian/initprojectdeploy_symbian.h
+++ b/qmake/generators/symbian/initprojectdeploy_symbian.h
@@ -51,6 +51,8 @@
#include <stdlib.h>
#define PLUGIN_STUB_DIR "qmakepluginstubs"
+#define ROM_DEPLOYMENT_PLATFORM "rom"
+#define EMULATOR_DEPLOYMENT_PLATFORM "emulator"
struct CopyItem
{
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
index ac4bca3..214f95c 100644
--- a/qmake/generators/symbian/symmake.cpp
+++ b/qmake/generators/symbian/symmake.cpp
@@ -64,7 +64,7 @@
#define BLD_INF_TAG_MMPFILES "prj_mmpfiles"
#define BLD_INF_TAG_TESTMMPFILES "prj_testmmpfiles"
#define BLD_INF_TAG_EXTENSIONS "prj_extensions"
-#define BLD_INF_TAG_EXPORTS "prj_exports"
+#define BLD_INF_TAG_TESTEXTENSIONS "prj_testextensions"
#define RSS_RULES "RSS_RULES"
#define RSS_RULES_BASE "RSS_RULES."
@@ -101,11 +101,13 @@ QString SymbianMakefileGenerator::fixPathForMmp(const QString& origPath, const Q
{
static QString epocRootStr;
if (epocRootStr.isEmpty()) {
- QFileInfo efi(epocRoot());
- epocRootStr = efi.canonicalFilePath();
- if (epocRootStr.isEmpty()) {
+ epocRootStr = epocRoot();
+ QFileInfo efi(epocRootStr);
+ if (!efi.exists() || epocRootStr.isEmpty()) {
fprintf(stderr, "Unable to resolve epocRoot '%s' to real dir on current drive, defaulting to '/' for mmp paths\n", qPrintable(epocRoot()));
epocRootStr = "/";
+ } else {
+ epocRootStr = efi.absoluteFilePath();
}
if (!epocRootStr.endsWith("/"))
epocRootStr += "/";
@@ -129,33 +131,26 @@ QString SymbianMakefileGenerator::fixPathForMmp(const QString& origPath, const Q
return resultPath;
}
-QString SymbianMakefileGenerator::canonizePath(const QString& origPath)
+QString SymbianMakefileGenerator::absolutizePath(const QString& origPath)
{
- // Since current path gets appended almost always anyway, use it as default
- // for nonexisting paths.
- static QString defaultPath;
- if (defaultPath.isEmpty()) {
- QFileInfo fi(".");
- defaultPath = fi.canonicalFilePath();
- }
-
// Prepend epocroot to any paths beginning with "/epoc32/"
QString resultPath = QDir::fromNativeSeparators(origPath);
if (resultPath.startsWith("/epoc32/", Qt::CaseInsensitive))
resultPath = QDir::fromNativeSeparators(epocRoot()) + resultPath.mid(1);
QFileInfo fi(fileInfo(resultPath));
- if (fi.isDir()) {
- resultPath = fi.canonicalFilePath();
+
+ // Since origPath can be something given in HEADERS, we need to check if we are dealing
+ // with a file or a directory. In case the origPath doesn't yet exist, isFile() returns
+ // false and we default to assuming it is a dir.
+ if (fi.isFile()) {
+ resultPath = fi.absolutePath();
} else {
- resultPath = fi.canonicalPath();
+ resultPath = fi.absoluteFilePath();
}
resultPath = QDir::cleanPath(resultPath);
- if (resultPath.isEmpty())
- resultPath = defaultPath;
-
return resultPath;
}
@@ -687,7 +682,7 @@ void SymbianMakefileGenerator::initMmpVariables()
srcpaths << project->values("UI_DIR");
QDir current = QDir::current();
- QString canonizedCurrent = canonizePath(".");
+ QString absolutizedCurrent = absolutizePath(".");
for (int j = 0; j < srcpaths.size(); ++j) {
QFileInfo fi(fileInfo(srcpaths.at(j)));
@@ -695,10 +690,10 @@ void SymbianMakefileGenerator::initMmpVariables()
if (fi.suffix().startsWith("c")) {
if (fi.filePath().length() > fi.fileName().length()) {
appendIfnotExist(srcincpaths, fi.path());
- sources[canonizePath(fi.path())] += fi.fileName();
+ sources[absolutizePath(fi.path())] += fi.fileName();
} else {
- sources[canonizedCurrent] += fi.fileName();
- appendIfnotExist(srcincpaths, canonizedCurrent);
+ sources[absolutizedCurrent] += fi.fileName();
+ appendIfnotExist(srcincpaths, absolutizedCurrent);
}
}
}
@@ -712,7 +707,7 @@ void SymbianMakefileGenerator::initMmpVariables()
incpaths << project->values("UI_DIR");
for (int j = 0; j < incpaths.size(); ++j) {
- QString includepath = canonizePath(incpaths.at(j));
+ QString includepath = absolutizePath(incpaths.at(j));
appendIfnotExist(sysincspaths, includepath);
appendAbldTempDirs(sysincspaths, includepath);
}
@@ -754,15 +749,14 @@ void SymbianMakefileGenerator::initMmpVariables()
QStringList restrictedMmpKeywords;
bool inResourceBlock = false;
- overridableMmpKeywords << QLatin1String(MMP_TARGETTYPE);
+ overridableMmpKeywords << QLatin1String(MMP_TARGETTYPE) << QLatin1String(MMP_EPOCHEAPSIZE);
restrictableMmpKeywords << QLatin1String(MMP_TARGET) << QLatin1String(MMP_SECUREID)
<< QLatin1String(MMP_OPTION_CW) << QLatin1String(MMP_OPTION_ARMCC)
<< QLatin1String(MMP_OPTION_GCCE) << QLatin1String(MMP_LINKEROPTION_CW)
<< QLatin1String(MMP_LINKEROPTION_ARMCC) << QLatin1String(MMP_LINKEROPTION_GCCE)
<< QLatin1String(MMP_CAPABILITY) << QLatin1String(MMP_EPOCALLOWDLLDATA)
- << QLatin1String(MMP_EPOCHEAPSIZE) << QLatin1String(MMP_EPOCSTACKSIZE)
- << QLatin1String(MMP_UID) << QLatin1String(MMP_VENDORID)
- << QLatin1String(MMP_VERSION);
+ << QLatin1String(MMP_EPOCSTACKSIZE) << QLatin1String(MMP_UID)
+ << QLatin1String(MMP_VENDORID) << QLatin1String(MMP_VERSION);
foreach (QString item, project->values("MMP_RULES")) {
if (project->values(item).isEmpty()) {
@@ -932,6 +926,7 @@ void SymbianMakefileGenerator::addMacro(QTextStream& t, const QString& value)
void SymbianMakefileGenerator::writeMmpFileTargetPart(QTextStream& t)
{
bool skipTargetType = overriddenMmpKeywords.contains(MMP_TARGETTYPE);
+ bool skipEpocHeapSize = overriddenMmpKeywords.contains(MMP_EPOCHEAPSIZE);
if (targetType == TypeExe) {
t << MMP_TARGET "\t\t" << fixedTarget << ".exe" << endl;
@@ -983,7 +978,7 @@ void SymbianMakefileGenerator::writeMmpFileTargetPart(QTextStream& t)
if (0 != project->first("TARGET.EPOCSTACKSIZE").size())
t << MMP_EPOCSTACKSIZE "\t\t" << project->first("TARGET.EPOCSTACKSIZE") << endl;
- if (0 != project->values("TARGET.EPOCHEAPSIZE").size())
+ if (!skipEpocHeapSize && 0 != project->values("TARGET.EPOCHEAPSIZE").size())
t << MMP_EPOCHEAPSIZE "\t\t" << project->values("TARGET.EPOCHEAPSIZE").join(" ") << endl;
if (0 != project->values("TARGET.EPOCALLOWDLLDATA").size())
t << MMP_EPOCALLOWDLLDATA << endl;
@@ -1362,7 +1357,7 @@ void SymbianMakefileGenerator::writeBldInfContent(QTextStream &t, bool addDeploy
// Add project mmps and old style extension makefiles
QString mmpTag;
- if (project->isActiveConfig("symbian_test"))
+ if (project->isActiveConfig(SYMBIAN_TEST_CONFIG))
mmpTag = QLatin1String(BLD_INF_TAG_TESTMMPFILES);
else
mmpTag = QLatin1String(BLD_INF_TAG_MMPFILES);
@@ -1385,35 +1380,22 @@ void SymbianMakefileGenerator::writeBldInfContent(QTextStream &t, bool addDeploy
t << item << endl;
userBldInfRules.remove(mmpTag);
- t << endl << BLD_INF_TAG_EXTENSIONS << endl << endl;
+ QString extensionTag;
+ if (project->isActiveConfig(SYMBIAN_TEST_CONFIG))
+ extensionTag = QLatin1String(BLD_INF_TAG_TESTEXTENSIONS);
+ else
+ extensionTag = QLatin1String(BLD_INF_TAG_EXTENSIONS);
+
+ t << endl << extensionTag << endl << endl;
// Generate extension rules
writeBldInfExtensionRulesPart(t, iconFile);
- userItems = userBldInfRules.value(BLD_INF_TAG_EXTENSIONS);
- foreach(QString item, userItems)
- t << item << endl;
- userBldInfRules.remove(BLD_INF_TAG_EXTENSIONS);
-
- t << endl << BLD_INF_TAG_EXPORTS << endl << endl;
-
- // Generate export rules
-
- // Export any deployed plugin stubs under /epoc32/data/z to support ROM builds
- for (int i = 0; i < depList.size(); ++i) {
- int index = depList.at(i).from.indexOf(PLUGIN_STUB_DIR);
- if (index != -1) {
- t << QString("%1 /epoc32/data/z%2")
- .arg(QString(depList.at(i).from).mid(index).replace('\\','/'))
- .arg(QString(depList.at(i).to).mid(2).replace('\\','/')) << endl;
- }
- }
-
- userItems = userBldInfRules.value(BLD_INF_TAG_EXPORTS);
+ userItems = userBldInfRules.value(extensionTag);
foreach(QString item, userItems)
t << item << endl;
- userBldInfRules.remove(BLD_INF_TAG_EXPORTS);
+ userBldInfRules.remove(extensionTag);
// Add rest of the user defined content
diff --git a/qmake/generators/symbian/symmake.h b/qmake/generators/symbian/symmake.h
index 76fd98b..fa55ae7 100644
--- a/qmake/generators/symbian/symmake.h
+++ b/qmake/generators/symbian/symmake.h
@@ -49,9 +49,9 @@ QT_BEGIN_NAMESPACE
#define BLD_INF_FILENAME "bld.inf"
#define MAKEFILE_DEPENDENCY_SEPARATOR " \\\n\t"
-
#define QT_EXTRA_INCLUDE_DIR "tmp"
#define MAKE_CACHE_NAME ".make.cache"
+#define SYMBIAN_TEST_CONFIG "symbian_test"
class SymbianMakefileGenerator : public MakefileGenerator
{
@@ -84,7 +84,7 @@ protected:
void removeSpecialCharacters(QString& str);
QString fixPathForMmp(const QString& origPath, const QDir& parentDir);
- QString canonizePath(const QString& origPath);
+ QString absolutizePath(const QString& origPath);
virtual bool writeMakefile(QTextStream &t);
void generatePkgFile(const QString &iconFile, DeploymentList &depList);
diff --git a/qmake/generators/symbian/symmake_abld.cpp b/qmake/generators/symbian/symmake_abld.cpp
index 81165f5..42031b9 100644
--- a/qmake/generators/symbian/symmake_abld.cpp
+++ b/qmake/generators/symbian/symmake_abld.cpp
@@ -59,6 +59,8 @@
#define FINALIZE_TARGET "finalize"
#define GENERATED_SOURCES_TARGET "generated_sources"
#define ALL_SOURCE_DEPS_TARGET "all_source_deps"
+#define DEPLOYMENT_TARGET "deployment"
+#define DEPLOYMENT_CLEAN_TARGET "deployment_clean"
#define WINSCW_DEPLOYMENT_TARGET "winscw_deployment"
#define WINSCW_DEPLOYMENT_CLEAN_TARGET "winscw_deployment_clean"
#define STORE_BUILD_TARGET "store_build"
@@ -112,25 +114,29 @@ void SymbianAbldMakefileGenerator::writeMkFile(const QString& wrapperFileName, b
QStringList wrapperTargets;
if (deploymentOnly) {
buildDeps.append(STORE_BUILD_TARGET);
- cleanDeps.append(DO_NOTHING_TARGET);
- cleanDepsWinscw.append(WINSCW_DEPLOYMENT_CLEAN_TARGET);
- finalDeps.append(DO_NOTHING_TARGET);
- finalDepsWinscw.append(WINSCW_DEPLOYMENT_TARGET);
+ cleanDeps.append(DEPLOYMENT_CLEAN_TARGET);
+ cleanDepsWinscw.append(WINSCW_DEPLOYMENT_CLEAN_TARGET " " DEPLOYMENT_CLEAN_TARGET);
+ finalDeps.append(DEPLOYMENT_TARGET);
+ finalDepsWinscw.append(WINSCW_DEPLOYMENT_TARGET " " DEPLOYMENT_TARGET);
wrapperTargets << WINSCW_DEPLOYMENT_TARGET
<< WINSCW_DEPLOYMENT_CLEAN_TARGET
+ << DEPLOYMENT_TARGET
+ << DEPLOYMENT_CLEAN_TARGET
<< STORE_BUILD_TARGET;
} else {
buildDeps.append(CREATE_TEMPS_TARGET " " PRE_TARGETDEPS_TARGET " " STORE_BUILD_TARGET);
- cleanDeps.append(EXTENSION_CLEAN);
- cleanDepsWinscw.append(EXTENSION_CLEAN " " WINSCW_DEPLOYMENT_CLEAN_TARGET);
- finalDeps.append(FINALIZE_TARGET);
- finalDepsWinscw.append(FINALIZE_TARGET " " WINSCW_DEPLOYMENT_TARGET);
+ cleanDeps.append(EXTENSION_CLEAN " " DEPLOYMENT_CLEAN_TARGET);
+ cleanDepsWinscw.append(EXTENSION_CLEAN " " WINSCW_DEPLOYMENT_CLEAN_TARGET " " DEPLOYMENT_CLEAN_TARGET);
+ finalDeps.append(FINALIZE_TARGET " " DEPLOYMENT_TARGET);
+ finalDepsWinscw.append(FINALIZE_TARGET " " WINSCW_DEPLOYMENT_TARGET " " DEPLOYMENT_TARGET);
wrapperTargets << PRE_TARGETDEPS_TARGET
<< CREATE_TEMPS_TARGET
<< EXTENSION_CLEAN
<< FINALIZE_TARGET
<< WINSCW_DEPLOYMENT_CLEAN_TARGET
<< WINSCW_DEPLOYMENT_TARGET
+ << DEPLOYMENT_CLEAN_TARGET
+ << DEPLOYMENT_TARGET
<< STORE_BUILD_TARGET;
}
@@ -175,7 +181,7 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool
releasePlatforms.removeAll("winscw"); // No release for emulator
QString testClause;
- if (project->isActiveConfig("symbian_test"))
+ if (project->isActiveConfig(SYMBIAN_TEST_CONFIG))
testClause = QLatin1String(" test");
else
testClause = QLatin1String("");
@@ -369,7 +375,9 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool
qDeleteAll(subtargets);
}
- writeDeploymentTargets(t);
+ // Deploymend targets for both emulator and rom deployment
+ writeDeploymentTargets(t, false);
+ writeDeploymentTargets(t, true);
generateDistcleanTargets(t);
@@ -410,13 +418,21 @@ void SymbianAbldMakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t,
Q_UNUSED(iconTargetFile);
}
-bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t)
+bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t, bool isRom)
{
- t << WINSCW_DEPLOYMENT_TARGET ":" << endl;
+ if (isRom)
+ t << DEPLOYMENT_TARGET ":" << endl;
+ else
+ t << WINSCW_DEPLOYMENT_TARGET ":" << endl;
- QString remoteTestPath = epocRoot() + QLatin1String("epoc32\\winscw\\c\\private\\") + privateDirUid; // default 4 OpenC; 4 all Symbian too
+ QString remoteTestPath = epocRoot()
+ + QLatin1String(isRom ? "epoc32\\data\\z\\private\\" : "epoc32\\winscw\\c\\private\\")
+ + privateDirUid;
DeploymentList depList;
- initProjectDeploySymbian(project, depList, remoteTestPath, false, QLatin1String("winscw"), QLatin1String("udeb"), generatedDirs, generatedFiles);
+
+ initProjectDeploySymbian(project, depList, remoteTestPath, false,
+ QLatin1String(isRom ? ROM_DEPLOYMENT_PLATFORM : EMULATOR_DEPLOYMENT_PLATFORM),
+ QString(), generatedDirs, generatedFiles);
if (depList.size())
t << "\t-echo Deploying changed files..." << endl;
@@ -425,12 +441,17 @@ bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t)
// 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;
+ t << "\t-$(XCOPY) \"" << depList.at(i).from << "\" \""
+ << depList.at(i).to.left(depList.at(i).to.lastIndexOf("\\") + 1) << "\"" << endl;
}
t << endl;
- t << WINSCW_DEPLOYMENT_CLEAN_TARGET ":" << endl;
+ if (isRom)
+ t << DEPLOYMENT_CLEAN_TARGET ":" << endl;
+ else
+ t << WINSCW_DEPLOYMENT_CLEAN_TARGET ":" << endl;
+
QStringList cleanList;
for (int i = 0; i < depList.size(); ++i) {
cleanList.append(depList.at(i).to);
diff --git a/qmake/generators/symbian/symmake_abld.h b/qmake/generators/symbian/symmake_abld.h
index d0f38b0..f998b28 100644
--- a/qmake/generators/symbian/symmake_abld.h
+++ b/qmake/generators/symbian/symmake_abld.h
@@ -57,7 +57,7 @@ protected:
virtual void writeWrapperMakefile(QFile& wrapperFile, bool isPrimaryMakefile);
virtual void appendAbldTempDirs(QStringList& sysincspaths, QString includepath);
- bool writeDeploymentTargets(QTextStream &t);
+ bool writeDeploymentTargets(QTextStream &t, bool isRom);
public:
diff --git a/qmake/generators/symbian/symmake_sbsv2.cpp b/qmake/generators/symbian/symmake_sbsv2.cpp
index 4366f0e..4391a64 100644
--- a/qmake/generators/symbian/symmake_sbsv2.cpp
+++ b/qmake/generators/symbian/symmake_sbsv2.cpp
@@ -90,6 +90,23 @@ void SymbianSbsv2MakefileGenerator::exportFlm()
}
}
+void SymbianSbsv2MakefileGenerator::writeSbsDeploymentList(const DeploymentList& depList, QTextStream& t)
+{
+ for (int i = 0; i < depList.size(); ++i) {
+ t << "START EXTENSION qt/qmake_emulator_deployment" << endl;
+ QString fromItem = depList.at(i).from;
+ QString toItem = depList.at(i).to;
+ fromItem.replace("\\", "/");
+ toItem.replace("\\", "/");
+#if defined(Q_OS_WIN)
+ toItem.prepend(QDir::current().absolutePath().left(2)); // add drive
+#endif
+ t << "OPTION DEPLOY_SOURCE " << fromItem << endl;
+ t << "OPTION DEPLOY_TARGET " << toItem << endl;
+ t << "END" << endl;
+ }
+}
+
void SymbianSbsv2MakefileGenerator::writeMkFile(const QString& wrapperFileName, bool deploymentOnly)
{
// Can't use extension makefile with sbsv2
@@ -109,7 +126,7 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo
releasePlatforms.removeAll("winscw"); // No release for emulator
QString testClause;
- if (project->isActiveConfig("symbian_test"))
+ if (project->isActiveConfig(SYMBIAN_TEST_CONFIG))
testClause = QLatin1String(".test");
else
testClause = QLatin1String("");
@@ -343,7 +360,7 @@ void SymbianSbsv2MakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t
}
}
- t << "START EXTENSION qt/qmake_extra_pre_targetdep" << endl;
+ t << "START EXTENSION qt/qmake_extra_pre_targetdep.export" << endl;
t << "OPTION PREDEP_TARGET " << absoluteTarget << endl;
t << "OPTION DEPS " << absoluteDeps << endl;
@@ -363,27 +380,23 @@ void SymbianSbsv2MakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t
t << endl;
- // Write winscw deployment rules
+ // Write deployment rules
QString remoteTestPath = epocRoot() + QLatin1String("epoc32/winscw/c/private/") + privateDirUid;
DeploymentList depList;
- initProjectDeploySymbian(project, depList, remoteTestPath, false, QLatin1String("winscw"), QLatin1String("udeb"), generatedDirs, generatedFiles);
+ //write emulator deployment
t << "#if defined(WINSCW)" << endl;
- for (int i = 0; i < depList.size(); ++i) {
- t << "START EXTENSION qt/qmake_emulator_deployment" << endl;
- QString fromItem = depList.at(i).from;
- QString toItem = depList.at(i).to;
- fromItem.replace("\\", "/");
- toItem.replace("\\", "/");
-#if defined(Q_OS_WIN)
- toItem.prepend(QDir::current().absolutePath().left(2)); // add drive
-#endif
- t << "OPTION DEPLOY_SOURCE " << fromItem << endl;
- t << "OPTION DEPLOY_TARGET " << toItem << endl;
- t << "END" << endl;
- }
+ initProjectDeploySymbian(project, depList, remoteTestPath, false,
+ QLatin1String(EMULATOR_DEPLOYMENT_PLATFORM), QString(), generatedDirs, generatedFiles);
+ writeSbsDeploymentList(depList, t);
t << "#endif" << endl;
+ //write ROM deployment
+ remoteTestPath = epocRoot() + QLatin1String("epoc32/data/z/private/") + privateDirUid;
+ depList.clear();
+ initProjectDeploySymbian(project, depList, remoteTestPath, false,
+ QLatin1String(ROM_DEPLOYMENT_PLATFORM), QString(), generatedDirs, generatedFiles);
+ writeSbsDeploymentList(depList, t);
t << endl;
// Write post link rules
diff --git a/qmake/generators/symbian/symmake_sbsv2.h b/qmake/generators/symbian/symmake_sbsv2.h
index 5c31249..286c91c 100644
--- a/qmake/generators/symbian/symmake_sbsv2.h
+++ b/qmake/generators/symbian/symmake_sbsv2.h
@@ -56,6 +56,7 @@ protected:
virtual void writeMkFile(const QString& wrapperFileName, bool deploymentOnly);
virtual void writeWrapperMakefile(QFile& wrapperFile, bool isPrimaryMakefile);
virtual void appendAbldTempDirs(QStringList& sysincspaths, QString includepath);
+ virtual bool isForSymbianSbsv2() const { return true; } // FIXME: killme - i'm ugly!
public:
@@ -64,6 +65,7 @@ public:
private:
void exportFlm();
+ void writeSbsDeploymentList(const DeploymentList& depList, QTextStream& t);
QString extraTargetsCache;
QString extraCompilersCache;
diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
index 9d3b4c6..9998c1f 100644
--- a/qmake/generators/win32/winmakefile.cpp
+++ b/qmake/generators/win32/winmakefile.cpp
@@ -764,6 +764,11 @@ QString Win32MakefileGenerator::getLibTarget()
return QString(project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".lib");
}
+QString Win32MakefileGenerator::getPdbTarget()
+{
+ return QString(project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".pdb");
+}
+
QString Win32MakefileGenerator::defaultInstall(const QString &t)
{
if((t != "target" && t != "dlltarget") ||
@@ -804,6 +809,18 @@ QString Win32MakefileGenerator::defaultInstall(const QString &t)
uninst.append("\n\t");
uninst.append("-$(DEL_FILE) \"" + dst_targ + "\"");
}
+ if(project->isActiveConfig("shared") && project->isActiveConfig("debug")) {
+ QString pdb_target = getPdbTarget();
+ pdb_target.remove('"');
+ QString src_targ = (project->isEmpty("DESTDIR") ? QString("$(DESTDIR)") : project->first("DESTDIR")) + pdb_target;
+ QString dst_targ = filePrefixRoot(root, fileFixify(targetdir + pdb_target, FileFixifyAbsolute));
+ if(!ret.isEmpty())
+ ret += "\n\t";
+ ret += QString("-$(INSTALL_FILE)") + " \"" + src_targ + "\" \"" + dst_targ + "\"";
+ if(!uninst.isEmpty())
+ uninst.append("\n\t");
+ uninst.append("-$(DEL_FILE) \"" + dst_targ + "\"");
+ }
}
if(t == "dlltarget" || project->values(t + ".CONFIG").indexOf("no_dll") == -1) {
diff --git a/qmake/generators/win32/winmakefile.h b/qmake/generators/win32/winmakefile.h
index 5437524..3a2e3a1 100644
--- a/qmake/generators/win32/winmakefile.h
+++ b/qmake/generators/win32/winmakefile.h
@@ -83,6 +83,7 @@ protected:
virtual void processRcFileVar();
virtual void processFileTagsVar();
virtual QString getLibTarget();
+ virtual QString getPdbTarget();
};
inline Win32MakefileGenerator::~Win32MakefileGenerator()
diff --git a/qmake/main.cpp b/qmake/main.cpp
index 50f9272..42679a2 100644
--- a/qmake/main.cpp
+++ b/qmake/main.cpp
@@ -149,7 +149,7 @@ int runQMake(int argc, char **argv)
//setup pwd properly
debug_msg(1, "Resetting dir to: %s", oldpwd.toLatin1().constData());
qmake_setpwd(oldpwd); //reset the old pwd
- int di = fn.lastIndexOf(Option::dir_sep);
+ int di = fn.lastIndexOf(QDir::separator());
if(di != -1) {
debug_msg(1, "Changing dir to: %s", fn.left(di).toLatin1().constData());
if(!qmake_setpwd(fn.left(di)))
diff --git a/qmake/option.cpp b/qmake/option.cpp
index 18f0541..6f0f46b 100644
--- a/qmake/option.cpp
+++ b/qmake/option.cpp
@@ -88,7 +88,7 @@ int Option::warn_level = WarnLogic;
int Option::debug_level = 0;
QFile Option::output;
QString Option::output_dir;
-bool Option::recursive = false;
+Option::QMAKE_RECURSIVE Option::recursive = Option::QMAKE_RECURSIVE_DEFAULT;
QStringList Option::before_user_vars;
QStringList Option::after_user_vars;
QStringList Option::user_configs;
@@ -96,13 +96,9 @@ QStringList Option::after_user_configs;
QString Option::user_template;
QString Option::user_template_prefix;
QStringList Option::shellPath;
-#if defined(Q_OS_WIN32)
-Option::TARG_MODE Option::target_mode = Option::TARG_WIN_MODE;
-#elif defined(Q_OS_MAC)
-Option::TARG_MODE Option::target_mode = Option::TARG_MACX_MODE;
-#else
-Option::TARG_MODE Option::target_mode = Option::TARG_UNIX_MODE;
-#endif
+Option::HOST_MODE Option::host_mode = Option::HOST_UNKNOWN_MODE;
+Option::TARG_MODE Option::target_mode = Option::TARG_UNKNOWN_MODE;
+bool Option::target_mode_overridden = false;
//QMAKE_*_PROPERTY stuff
QStringList Option::prop::properties;
@@ -126,7 +122,7 @@ QString Option::mkfile::qmakespec_commandline;
static Option::QMAKE_MODE default_mode(QString progname)
{
- int s = progname.lastIndexOf(Option::dir_sep);
+ int s = progname.lastIndexOf(QDir::separator());
if(s != -1)
progname = progname.right(progname.length() - (s + 1));
if(progname == "qmakegen")
@@ -184,9 +180,6 @@ bool usage(const char *a0)
" * processed as if it was in [files]. These assignments will be parsed *\n"
" * before [files]. *\n"
" -o file Write output to file\n"
- " -unix Run in unix mode\n"
- " -win32 Run in win32 mode\n"
- " -macx Run in Mac OS X mode\n"
" -d Increase debug level\n"
" -t templ Overrides TEMPLATE as templ\n"
" -tp prefix Overrides TEMPLATE so that prefix is prefixed into the value\n"
@@ -223,7 +216,7 @@ Option::parseCommandLine(int argc, char **argv, int skip)
if(x == 1) {
bool specified = true;
if(opt == "project") {
- Option::recursive = true;
+ Option::recursive = Option::QMAKE_RECURSIVE_YES;
Option::qmake_mode = Option::QMAKE_GENERATE_PROJECT;
} else if(opt == "prl") {
Option::mkfile::do_deps = false;
@@ -251,11 +244,20 @@ Option::parseCommandLine(int argc, char **argv, int skip)
} else if(opt == "tp" || opt == "template_prefix") {
Option::user_template_prefix = argv[++x];
} else if(opt == "macx") {
+ fprintf(stderr, "-macx is deprecated.\n");
+ Option::host_mode = HOST_MACX_MODE;
Option::target_mode = TARG_MACX_MODE;
+ Option::target_mode_overridden = true;
} else if(opt == "unix") {
+ fprintf(stderr, "-unix is deprecated.\n");
+ Option::host_mode = HOST_UNIX_MODE;
Option::target_mode = TARG_UNIX_MODE;
+ Option::target_mode_overridden = true;
} else if(opt == "win32") {
+ fprintf(stderr, "-win32 is deprecated.\n");
+ Option::host_mode = HOST_WIN_MODE;
Option::target_mode = TARG_WIN_MODE;
+ Option::target_mode_overridden = true;
} else if(opt == "d") {
Option::debug_level++;
} else if(opt == "version" || opt == "v" || opt == "-version") {
@@ -279,9 +281,9 @@ Option::parseCommandLine(int argc, char **argv, int skip)
} else if(opt == "Wnone") {
Option::warn_level = WarnNone;
} else if(opt == "r" || opt == "recursive") {
- Option::recursive = true;
- } else if(opt == "norecursive") {
- Option::recursive = false;
+ Option::recursive = Option::QMAKE_RECURSIVE_YES;
+ } else if(opt == "nr" || opt == "norecursive") {
+ Option::recursive = Option::QMAKE_RECURSIVE_NO;
} else if(opt == "config") {
Option::user_configs += argv[++x];
} else {
@@ -405,6 +407,7 @@ Option::init(int argc, char **argv)
#ifdef Q_OS_WIN
Option::dirlist_sep = ";";
Option::shellPath = detectShellPath();
+ Option::res_ext = ".res";
#else
Option::dirlist_sep = ":";
#endif
@@ -525,18 +528,23 @@ Option::init(int argc, char **argv)
}
//defaults for globals
- if(Option::target_mode == Option::TARG_WIN_MODE) {
- Option::dir_sep = "\\";
- Option::obj_ext = ".obj";
- Option::res_ext = ".res";
- } else {
- Option::dir_sep = "/";
- Option::obj_ext = ".o";
- }
- Option::qmake_abslocation = Option::fixPathToTargetOS(Option::qmake_abslocation);
+ if (Option::host_mode != Option::HOST_UNKNOWN_MODE)
+ applyHostMode();
return QMAKE_CMDLINE_SUCCESS;
}
+void Option::applyHostMode()
+{
+ if (Option::host_mode == Option::HOST_WIN_MODE) {
+ Option::dir_sep = "\\";
+ Option::obj_ext = ".obj";
+ } else {
+ Option::dir_sep = "/";
+ Option::obj_ext = ".o";
+ }
+ Option::qmake_abslocation = Option::fixPathToTargetOS(Option::qmake_abslocation);
+}
+
bool Option::postProcessProject(QMakeProject *project)
{
Option::cpp_ext = project->variables()["QMAKE_EXT_CPP"];
diff --git a/qmake/option.h b/qmake/option.h
index a2ca676..9bfdaed 100644
--- a/qmake/option.h
+++ b/qmake/option.h
@@ -106,6 +106,7 @@ struct Option
//both of these must be called..
static int init(int argc=0, char **argv=0); //parse cmdline
+ static void applyHostMode();
static bool postProcessProject(QMakeProject *);
enum StringFixFlags {
@@ -148,10 +149,15 @@ struct Option
static QString output_dir;
static int debug_level;
static int warn_level;
- static bool recursive;
+ enum QMAKE_RECURSIVE { QMAKE_RECURSIVE_DEFAULT, QMAKE_RECURSIVE_YES, QMAKE_RECURSIVE_NO };
+ static QMAKE_RECURSIVE recursive;
static QStringList before_user_vars, after_user_vars, user_configs, after_user_configs;
- enum TARG_MODE { TARG_UNIX_MODE, TARG_WIN_MODE, TARG_MACX_MODE };
+ enum HOST_MODE { HOST_UNKNOWN_MODE, HOST_UNIX_MODE, HOST_WIN_MODE, HOST_MACX_MODE };
+ static HOST_MODE host_mode;
+ enum TARG_MODE { TARG_UNKNOWN_MODE, TARG_UNIX_MODE, TARG_WIN_MODE, TARG_MACX_MODE,
+ TARG_SYMBIAN_MODE };
static TARG_MODE target_mode;
+ static bool target_mode_overridden;
static QString user_template, user_template_prefix;
static QStringList shellPath;
diff --git a/qmake/project.cpp b/qmake/project.cpp
index 4193163..951ca33 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -43,6 +43,7 @@
#include "property.h"
#include "option.h"
#include "cachekeys.h"
+#include "generators/metamakefile.h"
#include <qdatetime.h>
#include <qfile.h>
@@ -121,7 +122,7 @@ enum TestFunc { T_REQUIRES=1, T_GREATERTHAN, T_LESSTHAN, T_EQUALS,
T_EXISTS, T_EXPORT, T_CLEAR, T_UNSET, T_EVAL, T_CONFIG, T_SYSTEM,
T_RETURN, T_BREAK, T_NEXT, T_DEFINED, T_CONTAINS, T_INFILE,
T_COUNT, T_ISEMPTY, T_INCLUDE, T_LOAD, T_DEBUG, T_ERROR,
- T_MESSAGE, T_WARNING, T_IF };
+ T_MESSAGE, T_WARNING, T_IF, T_OPTION };
QMap<QString, TestFunc> qmake_testFunctions()
{
static QMap<QString, TestFunc> *qmake_test_functions = 0;
@@ -155,6 +156,7 @@ QMap<QString, TestFunc> qmake_testFunctions()
qmake_test_functions->insert("error", T_ERROR);
qmake_test_functions->insert("message", T_MESSAGE);
qmake_test_functions->insert("warning", T_WARNING);
+ qmake_test_functions->insert("option", T_OPTION);
}
return *qmake_test_functions;
}
@@ -507,69 +509,6 @@ static void qmake_error_msg(const QString &msg)
msg.toLatin1().constData());
}
-enum isForSymbian_enum {
- isForSymbian_NOT_SET = -1,
- isForSymbian_FALSE = 0,
- isForSymbian_ABLD = 1,
- isForSymbian_SBSV2 = 2,
-};
-
-static isForSymbian_enum isForSymbian_value = isForSymbian_NOT_SET;
-
-// Checking for symbian build is primarily determined from the qmake spec,
-// but if that is not specified, detect if symbian is the default spec
-// by checking the MAKEFILE_GENERATOR variable value.
-static void init_symbian(const QMap<QString, QStringList>& vars)
-{
- if (isForSymbian_value != isForSymbian_NOT_SET)
- return;
-
- QString spec = QFileInfo(Option::mkfile::qmakespec).fileName();
- if (spec.startsWith("symbian-abld", Qt::CaseInsensitive)) {
- isForSymbian_value = isForSymbian_ABLD;
- } else if (spec.startsWith("symbian-sbsv2", Qt::CaseInsensitive)) {
- isForSymbian_value = isForSymbian_SBSV2;
- } else {
- QStringList generatorList = vars["MAKEFILE_GENERATOR"];
-
- if (!generatorList.isEmpty()) {
- QString generator = generatorList.first();
- if (generator.startsWith("SYMBIAN_ABLD"))
- isForSymbian_value = isForSymbian_ABLD;
- else if (generator.startsWith("SYMBIAN_SBSV2"))
- isForSymbian_value = isForSymbian_SBSV2;
- else
- isForSymbian_value = isForSymbian_FALSE;
- } else {
- isForSymbian_value = isForSymbian_FALSE;
- }
- }
-
- // Force recursive on Symbian, as non-recursive is not really a viable option there
- if (isForSymbian_value != isForSymbian_FALSE)
- Option::recursive = true;
-}
-
-bool isForSymbian()
-{
- // If isForSymbian_value has not been initialized explicitly yet,
- // call initializer with dummy map to check qmake spec.
- if (isForSymbian_value == isForSymbian_NOT_SET)
- init_symbian(QMap<QString, QStringList>());
-
- return (isForSymbian_value != isForSymbian_FALSE);
-}
-
-bool isForSymbianSbsv2()
-{
- // If isForSymbian_value has not been initialized explicitly yet,
- // call initializer with dummy map to check qmake spec.
- if (isForSymbian_value == isForSymbian_NOT_SET)
- init_symbian(QMap<QString, QStringList>());
-
- return (isForSymbian_value == isForSymbian_SBSV2);
-}
-
/*
1) environment variable QMAKEFEATURES (as separated by colons)
2) property variable QMAKEFEATURES (as separated by colons)
@@ -595,22 +534,16 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0)
concat << base_concat + QDir::separator() + "macx";
concat << base_concat + QDir::separator() + "unix";
break;
+ default: // Can't happen, just make the compiler shut up
case Option::TARG_UNIX_MODE:
- {
- if (isForSymbian())
- concat << base_concat + QDir::separator() + "symbian";
- else
- concat << base_concat + QDir::separator() + "unix";
- break;
- }
+ concat << base_concat + QDir::separator() + "unix";
+ break;
case Option::TARG_WIN_MODE:
- {
- if (isForSymbian())
- concat << base_concat + QDir::separator() + "symbian";
- else
- concat << base_concat + QDir::separator() + "win32";
- break;
- }
+ concat << base_concat + QDir::separator() + "win32";
+ break;
+ case Option::TARG_SYMBIAN_MODE:
+ concat << base_concat + QDir::separator() + "symbian";
+ break;
}
concat << base_concat;
}
@@ -623,7 +556,7 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0)
feature_roots += splitPathList(prop->value("QMAKEFEATURES"));
if(!Option::mkfile::cachefile.isEmpty()) {
QString path;
- int last_slash = Option::mkfile::cachefile.lastIndexOf(Option::dir_sep);
+ int last_slash = Option::mkfile::cachefile.lastIndexOf(QDir::separator());
if(last_slash != -1)
path = Option::fixPathToLocalOS(Option::mkfile::cachefile.left(last_slash));
for(QStringList::Iterator concat_it = concat.begin();
@@ -766,6 +699,7 @@ QMakeProject::reset()
scope_blocks.push(ScopeBlock());
iterator = 0;
function = 0;
+ recursive = false;
}
bool
@@ -1356,16 +1290,7 @@ bool
QMakeProject::read(uchar cmd)
{
if(cfile.isEmpty()) {
- //find out where qmake (myself) lives
- if (!base_vars.contains("QMAKE_QMAKE")) {
- if (!Option::qmake_abslocation.isNull())
- base_vars["QMAKE_QMAKE"] = QStringList(Option::qmake_abslocation);
- else
- base_vars["QMAKE_QMAKE"] = QStringList("qmake");
- }
-
// hack to get the Option stuff in there
- base_vars["QMAKE_EXT_OBJ"] = QStringList(Option::obj_ext);
base_vars["QMAKE_EXT_CPP"] = Option::cpp_ext;
base_vars["QMAKE_EXT_C"] = Option::c_ext;
base_vars["QMAKE_EXT_H"] = Option::h_ext;
@@ -1456,8 +1381,7 @@ QMakeProject::read(uchar cmd)
fprintf(stderr, "Failure to read QMAKESPEC conf file %s.\n", spec.toLatin1().constData());
return false;
}
-
- init_symbian(base_vars);
+ validateModes();
if(Option::mkfile::do_cache && !Option::mkfile::cachefile.isEmpty()) {
debug_msg(1, "QMAKECACHE file: reading %s", Option::mkfile::cachefile.toLatin1().constData());
@@ -1581,6 +1505,46 @@ QMakeProject::read(uchar cmd)
return true;
}
+void QMakeProject::validateModes()
+{
+ if (Option::host_mode == Option::HOST_UNKNOWN_MODE
+ || Option::target_mode == Option::TARG_UNKNOWN_MODE) {
+ Option::HOST_MODE host_mode;
+ Option::TARG_MODE target_mode;
+ const QStringList &gen = base_vars.value("MAKEFILE_GENERATOR");
+ if (gen.isEmpty()) {
+ fprintf(stderr, "%s:%d: Using OS scope before setting MAKEFILE_GENERATOR\n",
+ parser.file.toLatin1().constData(), parser.line_no);
+ } else if (MetaMakefileGenerator::modesForGenerator(gen.first(),
+ &host_mode, &target_mode)) {
+ if (Option::host_mode == Option::HOST_UNKNOWN_MODE) {
+ Option::host_mode = host_mode;
+ Option::applyHostMode();
+ }
+
+ if (Option::target_mode == Option::TARG_UNKNOWN_MODE) {
+ const QStringList &tgt = base_vars.value("TARGET_PLATFORM");
+ if (!tgt.isEmpty()) {
+ const QString &os = tgt.first();
+ if (os == "unix")
+ Option::target_mode = Option::TARG_UNIX_MODE;
+ else if (os == "macx")
+ Option::target_mode = Option::TARG_MACX_MODE;
+ else if (os == "symbian")
+ Option::target_mode = Option::TARG_SYMBIAN_MODE;
+ else if (os == "win32")
+ Option::target_mode = Option::TARG_WIN_MODE;
+ else
+ fprintf(stderr, "Unknown target platform specified: %s\n",
+ os.toLatin1().constData());
+ } else {
+ Option::target_mode = target_mode;
+ }
+ }
+ }
+ }
+}
+
bool
QMakeProject::isActiveConfig(const QString &x, bool regex, QMap<QString, QStringList> *place)
{
@@ -1593,26 +1557,26 @@ QMakeProject::isActiveConfig(const QString &x, bool regex, QMap<QString, QString
else if(x == "false")
return false;
+ if (x == "unix") {
+ validateModes();
+ return Option::target_mode == Option::TARG_UNIX_MODE
+ || Option::target_mode == Option::TARG_MACX_MODE
+ || Option::target_mode == Option::TARG_SYMBIAN_MODE;
+ } else if (x == "macx" || x == "mac") {
+ validateModes();
+ return Option::target_mode == Option::TARG_MACX_MODE;
+ } else if (x == "symbian") {
+ validateModes();
+ return Option::target_mode == Option::TARG_SYMBIAN_MODE;
+ } else if (x == "win32") {
+ validateModes();
+ return Option::target_mode == Option::TARG_WIN_MODE;
+ }
+
+ //mkspecs
static QString spec;
if(spec.isEmpty())
spec = QFileInfo(Option::mkfile::qmakespec).fileName();
-
- // Symbian is an exception to how scopes are resolved. Since we do not
- // have a separate target mode for Symbian, but we expect the scope to resolve
- // on other platforms we base it entirely on the mkspec. This means that
- // using a mkspec starting with 'symbian*' will resolve both the 'symbian'
- // and the 'unix' (because of Open C) scopes to true.
- if(isForSymbian() && (x == "symbian" || x == "unix"))
- return true;
-
- //mkspecs
- if((Option::target_mode == Option::TARG_MACX_MODE ||
- Option::target_mode == Option::TARG_UNIX_MODE) && x == "unix")
- return !isForSymbian();
- else if(Option::target_mode == Option::TARG_MACX_MODE && (x == "macx" || x == "mac"))
- return !isForSymbian();
- else if(Option::target_mode == Option::TARG_WIN_MODE && x == "win32")
- return !isForSymbian();
QRegExp re(x, Qt::CaseSensitive, QRegExp::Wildcard);
if((regex && re.exactMatch(spec)) || (!regex && spec == x))
return true;
@@ -1704,7 +1668,7 @@ QMakeProject::doProjectInclude(QString file, uchar flags, QMap<QString, QStringL
if(file.indexOf(Option::dir_sep) == -1 || !QFile::exists(file)) {
static QStringList *feature_roots = 0;
if(!feature_roots) {
- init_symbian(base_vars);
+ validateModes();
feature_roots = new QStringList(qmake_feature_paths(prop));
qmakeAddCacheClear(qmakeDeleteCacheClear_QStringList, (void**)&feature_roots);
}
@@ -2768,6 +2732,21 @@ QMakeProject::doProjectTest(QString func, QList<QStringList> args_list, QMap<QSt
exit(2);
#endif
return true; }
+ case T_OPTION:
+ if (args.count() != 1) {
+ fprintf(stderr, "%s:%d: option() requires one argument.\n",
+ parser.file.toLatin1().constData(), parser.line_no);
+ return false;
+ }
+ if (args.first() == "recursive") {
+ recursive = true;
+ } else {
+ fprintf(stderr, "%s:%d: unrecognized option() argument '%s'.\n",
+ parser.file.toLatin1().constData(), parser.line_no,
+ args.first().toLatin1().constData());
+ return false;
+ }
+ return true;
default:
fprintf(stderr, "%s:%d: Unknown test function: %s\n", parser.file.toLatin1().constData(), parser.line_no,
func.toLatin1().constData());
@@ -3150,6 +3129,19 @@ QStringList &QMakeProject::values(const QString &_var, QMap<QString, QStringList
} else if (var == QLatin1String("QMAKE_DIR_SEP")) {
if (place[var].isEmpty())
return values("DIR_SEPARATOR", place);
+ } else if (var == QLatin1String("QMAKE_EXT_OBJ")) {
+ if (place[var].isEmpty()) {
+ var = ".BUILTIN." + var;
+ place[var] = QStringList(Option::obj_ext);
+ }
+ } else if (var == QLatin1String("QMAKE_QMAKE")) {
+ if (place[var].isEmpty()) {
+ var = ".BUILTIN." + var;
+ if (!Option::qmake_abslocation.isNull())
+ place[var] = QStringList(Option::qmake_abslocation);
+ else
+ place[var] = QStringList("qmake");
+ }
} else if (var == QLatin1String("EPOCROOT")) {
if (place[var].isEmpty())
place[var] = QStringList(epocRoot());
diff --git a/qmake/project.h b/qmake/project.h
index 1f53bf2..bfebed0 100644
--- a/qmake/project.h
+++ b/qmake/project.h
@@ -78,6 +78,7 @@ class QMakeProject
FunctionBlock *function;
QMap<QString, FunctionBlock*> testFunctions, replaceFunctions;
+ bool recursive;
bool own_prop;
QString pfile, cfile;
QMakeProperty *prop;
@@ -105,6 +106,7 @@ class QMakeProject
QStringList doVariableReplaceExpand(const QString &str, QMap<QString, QStringList> &place, bool *ok=0);
void init(QMakeProperty *, const QMap<QString, QStringList> *);
QStringList &values(const QString &v, QMap<QString, QStringList> &place);
+ void validateModes();
public:
QMakeProject() { init(0, 0); }
@@ -154,6 +156,8 @@ public:
QString first(const QString &v);
QMap<QString, QStringList> &variables();
+ bool isRecursive() const { return recursive; }
+
protected:
friend class MakefileGenerator;
bool read(const QString &file, QMap<QString, QStringList> &place);
@@ -192,10 +196,6 @@ inline QString QMakeProject::first(const QString &v)
inline QMap<QString, QStringList> &QMakeProject::variables()
{ return vars; }
-// Helper functions needed for Symbian
-bool isForSymbian();
-bool isForSymbianSbsv2();
-
QT_END_NAMESPACE
#endif // PROJECT_H
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
index 1e717cb..abe15c8 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
@@ -241,7 +241,7 @@ NEVER_INLINE CollectorBlock* Heap::allocateBlock()
#elif PLATFORM(WINCE)
void* address = VirtualAlloc(NULL, BLOCK_SIZE, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
#elif PLATFORM(WIN_OS)
-#if COMPILER(MINGW)
+#if COMPILER(MINGW) && !PLATFORM(X86_64)
void* address = __mingw_aligned_malloc(BLOCK_SIZE, BLOCK_SIZE);
#else
void* address = _aligned_malloc(BLOCK_SIZE, BLOCK_SIZE);
@@ -327,7 +327,7 @@ NEVER_INLINE void Heap::freeBlock(CollectorBlock* block)
#elif PLATFORM(WINCE)
VirtualFree(block, 0, MEM_RELEASE);
#elif PLATFORM(WIN_OS)
-#if COMPILER(MINGW)
+#if COMPILER(MINGW) && !PLATFORM(X86_64)
__mingw_aligned_free(block);
#else
_aligned_free(block);
@@ -617,7 +617,7 @@ static inline void* currentThreadStackBase()
MOV pTib, EAX
}
return static_cast<void*>(pTib->StackBase);
-#elif PLATFORM(WIN_OS) && PLATFORM(X86_64) && COMPILER(MSVC)
+#elif PLATFORM(WIN_OS) && PLATFORM(X86_64) && (COMPILER(MSVC) ||COMPILER(GCC))
PNT_TIB64 pTib = reinterpret_cast<PNT_TIB64>(NtCurrentTeb());
return reinterpret_cast<void*>(pTib->StackBase);
#elif PLATFORM(WIN_OS) && PLATFORM(X86) && COMPILER(GCC)
diff --git a/src/3rdparty/libpng/png.h b/src/3rdparty/libpng/png.h
index 14e3416..5ea2b0d 100644
--- a/src/3rdparty/libpng/png.h
+++ b/src/3rdparty/libpng/png.h
@@ -386,7 +386,7 @@
#include "zlib.h"
#endif
-#ifdef AIX
+#ifdef _AIX
#define jmpbuf __jmpbuf
#endif
diff --git a/src/3rdparty/libpng/pngconf.h b/src/3rdparty/libpng/pngconf.h
index 5d202db..1f8bef8 100644
--- a/src/3rdparty/libpng/pngconf.h
+++ b/src/3rdparty/libpng/pngconf.h
@@ -1379,7 +1379,7 @@ typedef char FAR * FAR * FAR * png_charppp;
/* memory model/platform independent fns */
#ifndef PNG_ABORT
-# ifdef _WINDOWS_
+# if defined(_WINDOWS_) || defined(_WIN32_WCE)
# define PNG_ABORT() ExitProcess(0)
# else
# define PNG_ABORT() abort()
diff --git a/src/3rdparty/libpng/pngpriv.h b/src/3rdparty/libpng/pngpriv.h
index 13c2b3f..87a4ba6 100644
--- a/src/3rdparty/libpng/pngpriv.h
+++ b/src/3rdparty/libpng/pngpriv.h
@@ -74,7 +74,9 @@
#if defined(WIN32) || defined(_Windows) || defined(_WINDOWS) || \
defined(_WIN32) || defined(__WIN32__)
-# include <windows.h> /* defines _WINDOWS_ macro */
+# if !defined(__SYMBIAN32__)
+# include <windows.h> /* defines _WINDOWS_ macro */
+# endif
/* I have no idea why is this necessary... */
# ifdef _MSC_VER
# include <malloc.h>
diff --git a/src/3rdparty/libtiff/libtiff/tif_wince.c b/src/3rdparty/libtiff/libtiff/tif_wince.c
new file mode 100644
index 0000000..4e283da
--- /dev/null
+++ b/src/3rdparty/libtiff/libtiff/tif_wince.c
@@ -0,0 +1,281 @@
+/* $Id: tif_wince.c,v 1.1 2007-01-15 18:40:39 mloskot Exp $ */
+
+/*
+ * Copyright (c) 1988-1997 Sam Leffler
+ * Copyright (c) 1991-1997 Silicon Graphics, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the names of
+ * Sam Leffler and Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Sam Leffler and Silicon Graphics.
+ *
+ * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
+ */
+
+/*
+ * Windows CE-specific routines for TIFF Library.
+ * Adapted from tif_win32.c 01/10/2006 by Mateusz Loskot (mateusz@loskot.net)
+ */
+
+#ifndef _WIN32_WCE
+# error "Only Windows CE target is supported!"
+#endif
+
+#include "tiffiop.h"
+#include <windows.h>
+
+/* Turn off console support on Windows CE. */
+#undef TIF_PLATFORM_CONSOLE
+
+
+/*
+ * Open a TIFF file for read/writing.
+ */
+TIFF*
+TIFFOpen(const char* name, const char* mode)
+{
+ static const char module[] = "TIFFOpen";
+ thandle_t fd;
+ int m;
+ DWORD dwMode;
+ TIFF* tif;
+ size_t nLen;
+ size_t nWideLen;
+ wchar_t* wchName;
+
+ m = _TIFFgetMode(mode, module);
+
+ switch(m)
+ {
+ case O_RDONLY:
+ dwMode = OPEN_EXISTING;
+ break;
+ case O_RDWR:
+ dwMode = OPEN_ALWAYS;
+ break;
+ case O_RDWR|O_CREAT:
+ dwMode = OPEN_ALWAYS;
+ break;
+ case O_RDWR|O_TRUNC:
+ dwMode = CREATE_ALWAYS;
+ break;
+ case O_RDWR|O_CREAT|O_TRUNC:
+ dwMode = CREATE_ALWAYS;
+ break;
+ default:
+ return ((TIFF*)0);
+ }
+
+ /* On Windows CE, CreateFile is mapped to CreateFileW,
+ * but file path is passed as char-based string,
+ * so the path has to be converted to wchar_t.
+ */
+
+ nWideLen = 0;
+ wchName = NULL;
+ nLen = strlen(name) + 1;
+
+ nWideLen = MultiByteToWideChar(CP_ACP, 0, name, nLen, NULL, 0);
+ wchName = (wchar_t*)malloc(sizeof(wchar_t) * nWideLen);
+ if (NULL == wchName)
+ {
+ TIFFErrorExt(0, module, "Memory allocation error!");
+ return ((TIFF *)0);
+ }
+ memset(wchName, 0, sizeof(wchar_t) * nWideLen);
+ MultiByteToWideChar(CP_ACP, 0, name, nLen, wchName, nWideLen);
+
+ fd = (thandle_t)CreateFile(wchName,
+ (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ | GENERIC_WRITE),
+ FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode,
+ (m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL,
+ NULL);
+
+ free(wchName);
+
+ if (fd == INVALID_HANDLE_VALUE) {
+ TIFFErrorExt(0, module, "%s: Cannot open", name);
+ return ((TIFF *)0);
+ }
+
+ /* TODO - mloskot: change to TIFFdOpenW and pass wchar path */
+
+ tif = TIFFFdOpen((int)fd, name, mode);
+ if(!tif)
+ CloseHandle(fd);
+ return tif;
+}
+
+/*
+ * Open a TIFF file with a Unicode filename, for read/writing.
+ */
+TIFF*
+TIFFOpenW(const wchar_t* name, const char* mode)
+{
+ static const char module[] = "TIFFOpenW";
+ thandle_t fd;
+ int m;
+ DWORD dwMode;
+ int mbsize;
+ char *mbname;
+ TIFF *tif;
+
+ m = _TIFFgetMode(mode, module);
+
+ switch(m) {
+ case O_RDONLY: dwMode = OPEN_EXISTING; break;
+ case O_RDWR: dwMode = OPEN_ALWAYS; break;
+ case O_RDWR|O_CREAT: dwMode = OPEN_ALWAYS; break;
+ case O_RDWR|O_TRUNC: dwMode = CREATE_ALWAYS; break;
+ case O_RDWR|O_CREAT|O_TRUNC: dwMode = CREATE_ALWAYS; break;
+ default: return ((TIFF*)0);
+ }
+
+ /* On Windows CE, CreateFile is mapped to CreateFileW,
+ * so no conversion of wchar_t to char is required.
+ */
+
+ fd = (thandle_t)CreateFile(name,
+ (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ|GENERIC_WRITE),
+ FILE_SHARE_READ, NULL, dwMode,
+ (m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL,
+ NULL);
+ if (fd == INVALID_HANDLE_VALUE) {
+ TIFFErrorExt(0, module, "%S: Cannot open", name);
+ return ((TIFF *)0);
+ }
+
+ mbname = NULL;
+ mbsize = WideCharToMultiByte(CP_ACP, 0, name, -1, NULL, 0, NULL, NULL);
+ if (mbsize > 0) {
+ mbname = (char *)_TIFFmalloc(mbsize);
+ if (!mbname) {
+ TIFFErrorExt(0, module,
+ "Can't allocate space for filename conversion buffer");
+ return ((TIFF*)0);
+ }
+
+ WideCharToMultiByte(CP_ACP, 0, name, -1, mbname, mbsize,
+ NULL, NULL);
+ }
+
+ tif = TIFFFdOpen((int)fd,
+ (mbname != NULL) ? mbname : "<unknown>", mode);
+ if(!tif)
+ CloseHandle(fd);
+
+ _TIFFfree(mbname);
+
+ return tif;
+}
+
+static void
+Win32WarningHandler(const char* module, const char* fmt, va_list ap)
+{
+ /* On Windows CE, MessageBox is mapped to wide-char based MessageBoxW. */
+
+ size_t nWideLen = 0;
+ LPTSTR szWideTitle = NULL;
+ LPTSTR szWideMsg = NULL;
+
+ LPSTR szTitle;
+ LPSTR szTmp;
+ LPCSTR szTitleText = "%s Warning";
+ LPCSTR szDefaultModule = "LIBTIFF";
+ LPCSTR szTmpModule;
+
+ szTmpModule = (module == NULL) ? szDefaultModule : module;
+ if ((szTitle = (LPSTR)LocalAlloc(LMEM_FIXED,
+ (strlen(szTmpModule) + strlen(szTitleText)
+ + strlen(fmt) + 128) * sizeof(char))) == NULL)
+ return;
+
+ sprintf(szTitle, szTitleText, szTmpModule);
+ szTmp = szTitle + (strlen(szTitle) + 2) * sizeof(char);
+ vsprintf(szTmp, fmt, ap);
+
+ /* Convert error message to Unicode. */
+
+ nWideLen = MultiByteToWideChar(CP_ACP, 0, szTitle, -1, NULL, 0);
+ szWideTitle = (wchar_t*)malloc(sizeof(wchar_t) * nWideLen);
+ MultiByteToWideChar(CP_ACP, 0, szTitle, -1, szWideTitle, nWideLen);
+
+ nWideLen = MultiByteToWideChar(CP_ACP, 0, szTmp, -1, NULL, 0);
+ szWideMsg = (wchar_t*)malloc(sizeof(wchar_t) * nWideLen);
+ MultiByteToWideChar(CP_ACP, 0, szTmp, -1, szWideMsg, nWideLen);
+
+ /* Display message */
+
+ MessageBox(GetFocus(), szWideMsg, szWideTitle, MB_OK | MB_ICONEXCLAMATION);
+
+ /* Free resources */
+
+ LocalFree(szTitle);
+ free(szWideMsg);
+ free(szWideTitle);
+}
+
+TIFFErrorHandler _TIFFwarningHandler = Win32WarningHandler;
+
+static void
+Win32ErrorHandler(const char* module, const char* fmt, va_list ap)
+{
+ /* On Windows CE, MessageBox is mapped to wide-char based MessageBoxW. */
+
+ size_t nWideLen = 0;
+ LPTSTR szWideTitle = NULL;
+ LPTSTR szWideMsg = NULL;
+
+ LPSTR szTitle;
+ LPSTR szTmp;
+ LPCSTR szTitleText = "%s Error";
+ LPCSTR szDefaultModule = "LIBTIFF";
+ LPCSTR szTmpModule;
+
+ szTmpModule = (module == NULL) ? szDefaultModule : module;
+ if ((szTitle = (LPSTR)LocalAlloc(LMEM_FIXED,
+ (strlen(szTmpModule) + strlen(szTitleText)
+ + strlen(fmt) + 128) * sizeof(char))) == NULL)
+ return;
+
+ sprintf(szTitle, szTitleText, szTmpModule);
+ szTmp = szTitle + (strlen(szTitle) + 2) * sizeof(char);
+ vsprintf(szTmp, fmt, ap);
+
+ /* Convert error message to Unicode. */
+
+ nWideLen = MultiByteToWideChar(CP_ACP, 0, szTitle, -1, NULL, 0);
+ szWideTitle = (wchar_t*)malloc(sizeof(wchar_t) * nWideLen);
+ MultiByteToWideChar(CP_ACP, 0, szTitle, -1, szWideTitle, nWideLen);
+
+ nWideLen = MultiByteToWideChar(CP_ACP, 0, szTmp, -1, NULL, 0);
+ szWideMsg = (wchar_t*)malloc(sizeof(wchar_t) * nWideLen);
+ MultiByteToWideChar(CP_ACP, 0, szTmp, -1, szWideMsg, nWideLen);
+
+ /* Display message */
+
+ MessageBox(GetFocus(), szWideMsg, szWideTitle, MB_OK | MB_ICONEXCLAMATION);
+
+ /* Free resources */
+
+ LocalFree(szTitle);
+ free(szWideMsg);
+ free(szWideTitle);
+}
+
+TIFFErrorHandler _TIFFerrorHandler = Win32ErrorHandler;
+
+
+/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp b/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp
index 79fc51e..5c87fe6 100644
--- a/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp
+++ b/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp
@@ -368,7 +368,7 @@ static inline void handleElementNamespaces(Element* newElement, const QXmlStream
for (int i = 0; i < ns.count(); ++i) {
const QXmlStreamNamespaceDeclaration &decl = ns[i];
String namespaceURI = decl.namespaceUri();
- String namespaceQName = decl.prefix().isEmpty() ? String("xmlns") : String("xmlns:") + decl.prefix();
+ String namespaceQName = decl.prefix().isEmpty() ? String("xmlns") : String("xmlns:") + String(decl.prefix());
newElement->setAttributeNS("http://www.w3.org/2000/xmlns/", namespaceQName, namespaceURI, ec);
if (ec) // exception setting attributes
return;
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
index 7a1bfd5..5fbc876 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
@@ -179,7 +179,7 @@ void InspectorClientQt::populateSetting(const String& key, InspectorController::
return;
}
- QString settingKey(settingStoragePrefix + key);
+ QString settingKey(settingStoragePrefix + QString(key));
QString storedValueType = qsettings.value(settingKey + settingStorageTypeSuffix).toString();
QVariant storedValue = qsettings.value(settingKey);
storedValue.convert(QVariant::nameToType(storedValueType.toAscii().data()));
@@ -196,7 +196,7 @@ void InspectorClientQt::storeSetting(const String& key, const InspectorControlle
}
QVariant valueToStore = settingToVariant(setting);
- QString settingKey(settingStoragePrefix + key);
+ QString settingKey(settingStoragePrefix + QString(key));
qsettings.setValue(settingKey, valueToStore);
qsettings.setValue(settingKey + settingStorageTypeSuffix, QVariant::typeToName(valueToStore.type()));
}
diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp
index 02a29d9..7692749 100644
--- a/src/activeqt/container/qaxbase.cpp
+++ b/src/activeqt/container/qaxbase.cpp
@@ -1353,11 +1353,9 @@ bool QAxBase::initializeFromFile(IUnknown** ptr)
// There seams to be a naming problem in mingw headers
-#ifdef Q_CC_GNU
-#ifndef COAUTHIDENTITY
+#if defined(Q_CC_GNU) && !defined(COAUTHIDENTITY) && !defined(__MINGW64_VERSION_MAJOR)
#define COAUTHIDENTITY AUTH_IDENTITY
#endif
-#endif
/*!
diff --git a/src/activeqt/container/qaxwidget.cpp b/src/activeqt/container/qaxwidget.cpp
index 9149320..7d2dde7 100644
--- a/src/activeqt/container/qaxwidget.cpp
+++ b/src/activeqt/container/qaxwidget.cpp
@@ -77,25 +77,21 @@
// #define QAX_SUPPORT_BORDERSPACE
// missing interface from win32api
-#if defined(Q_CC_GNU)
-# if !defined(IOleInPlaceObjectWindowless)
-# undef INTERFACE
-# define INTERFACE IOleInPlaceObjectWindowless
- DECLARE_INTERFACE_(IOleInPlaceObjectWindowless,IOleInPlaceObject)
- {
- STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
- STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
- STDMETHOD(InPlaceDeactivate)(THIS) PURE;
- STDMETHOD(UIDeactivate)(THIS) PURE;
- STDMETHOD(SetObjectRects)(THIS_ LPCRECT,LPCRECT) PURE;
- STDMETHOD(ReactivateAndUndo)(THIS) PURE;
- STDMETHOD(OnWindowMessage)(THIS_ UINT, WPARAM, LPARAM, LRESULT*) PURE;
- STDMETHOD(GetDropTarget)(THIS_ IDropTarget**) PURE;
- };
-# endif
+#if defined(Q_CC_GNU) && !defined(__MINGW64_VERSION_MAJOR)
+ DECLARE_INTERFACE_(IOleInPlaceObjectWindowless,IOleInPlaceObject)
+ {
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+ STDMETHOD(InPlaceDeactivate)(THIS) PURE;
+ STDMETHOD(UIDeactivate)(THIS) PURE;
+ STDMETHOD(SetObjectRects)(THIS_ LPCRECT,LPCRECT) PURE;
+ STDMETHOD(ReactivateAndUndo)(THIS) PURE;
+ STDMETHOD(OnWindowMessage)(THIS_ UINT, WPARAM, LPARAM, LRESULT*) PURE;
+ STDMETHOD(GetDropTarget)(THIS_ IDropTarget**) PURE;
+ };
#endif
#include "../shared/qaxtypes.h"
diff --git a/src/activeqt/control/qaxserverbase.cpp b/src/activeqt/control/qaxserverbase.cpp
index 5fa0aad..ce71490 100644
--- a/src/activeqt/control/qaxserverbase.cpp
+++ b/src/activeqt/control/qaxserverbase.cpp
@@ -1536,7 +1536,7 @@ HWND QAxServerBase::create(HWND hWndParent, RECT& rcPos)
HINSTANCE hInst = (HINSTANCE)qAxInstance;
EnterCriticalSection(&createWindowSection);
QString cn(QLatin1String("QAxControl"));
- cn += QString::number((int)ActiveXProc);
+ cn += QString::number((quintptr)ActiveXProc);
if (!atom) {
WNDCLASS wcTemp;
wcTemp.style = CS_DBLCLKS;
@@ -1599,10 +1599,10 @@ HMENU QAxServerBase::createPopup(QMenu *popup, HMENU oldMenu)
ushort itemId;
if (flags & MF_POPUP) {
itemId = static_cast<ushort>(
- reinterpret_cast<ulong>(createPopup(action->menu()))
+ reinterpret_cast<quintptr>(createPopup(action->menu()))
);
} else {
- itemId = static_cast<ushort>(reinterpret_cast<ulong>(action));
+ itemId = static_cast<ushort>(reinterpret_cast<quintptr>(action));
actionMap.remove(itemId);
actionMap.insert(itemId, action);
}
@@ -1646,10 +1646,10 @@ void QAxServerBase::createMenu(QMenuBar *menuBar)
ushort itemId;
if (flags & MF_POPUP) {
itemId = static_cast<ushort>(
- reinterpret_cast<ulong>(createPopup(action->menu()))
+ reinterpret_cast<quintptr>(createPopup(action->menu()))
);
} else {
- itemId = static_cast<ushort>(reinterpret_cast<ulong>(action));
+ itemId = static_cast<ushort>(reinterpret_cast<quintptr>(action));
actionMap.insert(itemId, action);
}
AppendMenu(hmenuShared, flags, itemId, (const wchar_t *)action->text().utf16());
diff --git a/src/corelib/concurrent/qfuturewatcher.cpp b/src/corelib/concurrent/qfuturewatcher.cpp
index 3065205..3b808b8 100644
--- a/src/corelib/concurrent/qfuturewatcher.cpp
+++ b/src/corelib/concurrent/qfuturewatcher.cpp
@@ -499,6 +499,13 @@ void QFutureWatcherBasePrivate::sendCallOutEvent(QFutureCallOutEvent *event)
/*! \fn void QFutureWatcher::setFuture(const QFuture<T> &future)
Starts watching the given \a future.
+
+ One of the signals might be emitted for the current state of the
+ \a future. For example, if the future is already stopped, the
+ finished signal will be emitted.
+
+ To avoid a race condition, it is important to call this function
+ \i after doing the connections.
*/
/*! \fn QFuture<T> QFutureWatcher::future() const
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index efee610..df9a463 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -52,3 +52,25 @@ symbian: {
partial_upgrade.path = c:/sys/bin
DEPLOYMENT = partial_upgrade $$DEPLOYMENT
}
+
+mmx {
+ DEFINES += QT_HAVE_MMX
+}
+3dnow {
+ DEFINES += QT_HAVE_3DNOW
+}
+sse {
+ DEFINES += QT_HAVE_SSE
+ DEFINES += QT_HAVE_MMXEXT
+}
+sse2 {
+ DEFINES += QT_HAVE_SSE2
+}
+iwmmxt {
+ DEFINES += QT_HAVE_IWMMXT
+}
+neon {
+ DEFINES += QT_HAVE_NEON
+ QMAKE_CXXFLAGS *= -mfpu=neon
+}
+
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index 7e7d7d8..4d48b60 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -814,7 +814,7 @@ namespace QT_NAMESPACE {}
# define Q_WS_MAC32
# endif
# elif defined(Q_OS_SYMBIAN)
-# if (defined(__SERIES60_31__) || defined(__S60_32__) || defined(__S60_50__)) && !defined(QT_NO_S60)
+# if !defined(QT_NO_S60)
# define Q_WS_S60
# endif
# elif !defined(Q_WS_QWS)
@@ -2414,10 +2414,11 @@ QT3_SUPPORT Q_CORE_EXPORT const char *qInstallPathSysconf();
#if defined(Q_OS_SYMBIAN)
-#ifdef SYMBIAN_GRAPHICS_USE_GCE
+#ifdef SYMBIAN_BUILD_GCE
//RWsPointerCursor is fixed, so don't use low performance sprites
#define Q_SYMBIAN_FIXED_POINTER_CURSORS
#define Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE
+#define Q_SYMBIAN_WINDOW_SIZE_CACHE
//enabling new graphics resources
#define QT_SYMBIAN_SUPPORTS_SGIMAGE
#define QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index 9690406..9490225 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -444,7 +444,7 @@ QLibraryInfo::location(LibraryLocation loc)
QCFType<CFURLRef> urlRef = CFBundleCopyBundleURL(bundleRef);
if (urlRef) {
QCFString path = CFURLCopyFileSystemPath(urlRef, kCFURLPOSIXPathStyle);
- return QDir::cleanPath(path + QLatin1String("/Contents/") + ret);
+ return QDir::cleanPath(QString(path) + QLatin1String("/Contents/") + ret);
}
}
#endif
diff --git a/src/corelib/io/qdatastream.cpp b/src/corelib/io/qdatastream.cpp
index fc35bfa..2731ae1 100644
--- a/src/corelib/io/qdatastream.cpp
+++ b/src/corelib/io/qdatastream.cpp
@@ -159,10 +159,9 @@ QT_BEGIN_NAMESPACE
\section1 Reading and writing Qt collection classes
- The Qt collection classes can also be serialized to a QDataStream.
+ The Qt container classes can also be serialized to a QDataStream.
These include QList, QLinkedList, QVector, QSet, QHash, and QMap.
- These classes have have stream operators declared as non-member of
- the class.
+ The stream operators are declared as non-members of the classes.
\target Serializing Qt Classes
\section1 Reading and writing other Qt classes.
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index 7cfdddf..505889e 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -960,13 +960,14 @@ void QDir::setNameFilters(const QStringList &nameFilters)
/*!
\obsolete
+
+ Use QDir::addSearchPath() with a prefix instead.
+
Adds \a path to the search paths searched in to find resources
that are not specified with an absolute path. The default search
path is to search only in the root (\c{:/}).
- Use QDir::addSearchPath() with a prefix instead.
-
- \sa {The Qt Resource System}, QResource::addSearchPath()
+ \sa {The Qt Resource System}
*/
void QDir::addResourceSearchPath(const QString &path)
{
diff --git a/src/corelib/io/qfilesystemwatcher_fsevents.cpp b/src/corelib/io/qfilesystemwatcher_fsevents.cpp
index 54ae24e..efbc290 100644
--- a/src/corelib/io/qfilesystemwatcher_fsevents.cpp
+++ b/src/corelib/io/qfilesystemwatcher_fsevents.cpp
@@ -445,7 +445,16 @@ void QFSEventsFileSystemWatcherEngine::updateFiles()
updateHash(dirPathInfoHash);
if (filePathInfoHash.isEmpty() && dirPathInfoHash.isEmpty()) {
// Everything disappeared before we got to start, don't bother.
- stop();
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+ // Code duplicated from stop(), with the exception that we
+ // don't wait on waitForStop here. Doing this will lead to
+ // a deadlock since this function is called from the worker
+ // thread. (waitForStop.wakeAll() is only called from the
+ // end of run()).
+ stopFSStream(fsStream);
+ if (threadsRunLoop)
+ CFRunLoopStop(threadsRunLoop);
+#endif
cleanupFSStream(fsStream);
}
waitCondition.wakeAll();
diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp
index 9179485..d2fa744 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -1270,7 +1270,7 @@ uchar *QFSFileEnginePrivate::map(qint64 offset, qint64 size, QFile::MemoryMapFla
int pageSize = getpagesize();
int extra = offset % pageSize;
- if (size + extra > (size_t)-1) {
+ if (quint64(size + extra) > quint64((size_t)-1)) {
q->setError(QFile::UnspecifiedError, qt_error_string(int(EINVAL)));
return 0;
}
diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp
index 4e14ba8..662100a 100644
--- a/src/corelib/io/qiodevice.cpp
+++ b/src/corelib/io/qiodevice.cpp
@@ -1003,8 +1003,8 @@ QByteArray QIODevice::readAll()
to a maximum of \a maxSize - 1 bytes, stores the characters in \a
data, and returns the number of bytes read. If a line could not be
read but no error ocurred, this function returns 0. If an error
- occurs, this function returns what it could the length of what
- could be read, or -1 if nothing was read.
+ occurs, this function returns the length of what could be read, or
+ -1 if nothing was read.
A terminating '\0' byte is always appended to \a data, so \a
maxSize must be larger than 1.
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index adfbb15..6d33c8b 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -555,16 +555,15 @@ QStringList QResource::children() const
/*!
\obsolete
+ Use QDir::addSearchPath() with a prefix instead.
+
Adds \a path to the search paths searched in to find resources that are
not specified with an absolute path. The \a path must be an absolute
path (start with \c{/}).
The default search path is to search only in the root (\c{:/}). The last
path added will be consulted first upon next QResource creation.
-
- Use QDir::addSearchPath() with a prefix instead.
*/
-
void
QResource::addSearchPath(const QString &path)
{
@@ -578,6 +577,10 @@ 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.
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 076cc33..626bd3f 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -167,6 +167,13 @@
regardless of the Qt::FormattingOptions used.
*/
+/*!
+ \fn uint qHash(const QUrl &url)
+ \since 4.7
+ \relates QUrl
+
+ Computes a hash key from the normalized version of \a url.
+ */
#include "qplatformdefs.h"
#include "qurl.h"
#include "private/qunicodetables_p.h"
@@ -437,17 +444,19 @@ static bool QT_FASTCALL _unreserved(const char **ptr)
}
// scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
-static void QT_FASTCALL _scheme(const char **ptr, QUrlParseData *parseData)
+static bool QT_FASTCALL _scheme(const char **ptr, QUrlParseData *parseData)
{
bool first = true;
+ bool isSchemeValid = true;
parseData->scheme = *ptr;
for (;;) {
char ch = **ptr;
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
;
- } else if (!first && ((ch >= '0' && ch <= '9') || ch == '+' || ch == '-' || ch == '.')) {
- ;
+ } else if ((ch >= '0' && ch <= '9') || ch == '+' || ch == '-' || ch == '.') {
+ if (first)
+ isSchemeValid = false;
} else {
break;
}
@@ -457,11 +466,14 @@ static void QT_FASTCALL _scheme(const char **ptr, QUrlParseData *parseData)
}
if (**ptr != ':') {
+ isSchemeValid = true;
*ptr = parseData->scheme;
} else {
parseData->schemeLength = *ptr - parseData->scheme;
++(*ptr); // skip ':'
}
+
+ return isSchemeValid;
}
// IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )
@@ -3743,7 +3755,19 @@ void QUrlPrivate::parse(ParseOptions parseOptions) const
#endif
// optional scheme
- _scheme(ptr, &parseData);
+ bool isSchemeValid = _scheme(ptr, &parseData);
+
+ if (isSchemeValid == false) {
+ that->isValid = false;
+ char ch = *((*ptr)++);
+ that->errorInfo.setParams(*ptr, QT_TRANSLATE_NOOP(QUrl, "unexpected URL scheme"),
+ 0, ch);
+ QURL_SETFLAG(that->stateFlags, Validated | Parsed);
+#if defined (QURL_DEBUG)
+ qDebug("QUrlPrivate::parse(), unrecognized: %c%s", ch, *ptr);
+#endif
+ return;
+ }
// hierpart
_hierPart(ptr, &parseData);
@@ -6348,7 +6372,7 @@ QUrl QUrl::fromUserInput(const QString &userInput)
return QUrl::fromLocalFile(trimmedString);
QUrl url = QUrl::fromEncoded(trimmedString.toUtf8(), QUrl::TolerantMode);
- QUrl urlPrepended = QUrl::fromEncoded((QLatin1String("http://") + trimmedString).toUtf8(), QUrl::TolerantMode);
+ QUrl urlPrepended = QUrl::fromEncoded("http://" + trimmedString.toUtf8(), QUrl::TolerantMode);
// Check the most common case of a valid url with scheme and host
// We check if the port would be valid by adding the scheme to handle the case host:port
diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h
index 906979c..6f8331a 100644
--- a/src/corelib/io/qurl.h
+++ b/src/corelib/io/qurl.h
@@ -270,9 +270,9 @@ public:
inline DataPtr &data_ptr() { return d; }
};
-inline uint qHash(const QUrl &uri)
+inline uint qHash(const QUrl &url)
{
- return qHash(uri.toEncoded(QUrl::FormattingOption(0x100)));
+ return qHash(url.toEncoded(QUrl::FormattingOption(0x100)));
}
Q_DECLARE_TYPEINFO(QUrl, Q_MOVABLE_TYPE);
diff --git a/src/corelib/kernel/qcoreapplication_win.cpp b/src/corelib/kernel/qcoreapplication_win.cpp
index 5990f86..566626d 100644
--- a/src/corelib/kernel/qcoreapplication_win.cpp
+++ b/src/corelib/kernel/qcoreapplication_win.cpp
@@ -1021,14 +1021,14 @@ QString decodeMSG(const MSG& msg)
LPWINDOWPOS winPos = (LPWINDOWPOS)lParam;
if (!winPos)
break;
- QString hwndAfter = valueCheck((uint)winPos->hwndInsertAfter,
- FLAG_STRING((uint)HWND_BOTTOM, "HWND_BOTTOM"),
- FLAG_STRING((int)HWND_NOTOPMOST, "HWND_NOTOPMOST"),
- FLAG_STRING((uint)HWND_TOP, "HWND_TOP"),
- FLAG_STRING((int)HWND_TOPMOST, "HWND_TOPMOST"),
+ QString hwndAfter = valueCheck(quint64(winPos->hwndInsertAfter),
+ FLAG_STRING((quintptr)HWND_BOTTOM, "HWND_BOTTOM"),
+ FLAG_STRING((quintptr)HWND_NOTOPMOST, "HWND_NOTOPMOST"),
+ FLAG_STRING((quintptr)HWND_TOP, "HWND_TOP"),
+ FLAG_STRING((quintptr)HWND_TOPMOST, "HWND_TOPMOST"),
FLAG_STRING());
if (hwndAfter.size() == 0)
- hwndAfter = QString::number((uint)winPos->hwndInsertAfter, 16);
+ hwndAfter = QString::number((quintptr)winPos->hwndInsertAfter, 16);
QString flags = flagCheck(winPos->flags,
FLGSTR(SWP_DRAWFRAME),
FLGSTR(SWP_FRAMECHANGED),
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index 9e187d4..779b69b 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -225,101 +225,104 @@ QT_BEGIN_NAMESPACE
\sa Q_DECLARE_METATYPE(), QVariant::setValue(), QVariant::value(), QVariant::fromValue()
*/
+#define QT_ADD_STATIC_METATYPE(STR, TP) \
+ { STR, sizeof(STR) - 1, TP }
+
/* Note: these MUST be in the order of the enums */
-static const struct { const char * typeName; int type; } types[] = {
+static const struct { const char * typeName; int typeNameLength; int type; } types[] = {
/* All Core types */
- {"void", QMetaType::Void},
- {"bool", QMetaType::Bool},
- {"int", QMetaType::Int},
- {"uint", QMetaType::UInt},
- {"qlonglong", QMetaType::LongLong},
- {"qulonglong", QMetaType::ULongLong},
- {"double", QMetaType::Double},
- {"QChar", QMetaType::QChar},
- {"QVariantMap", QMetaType::QVariantMap},
- {"QVariantList", QMetaType::QVariantList},
- {"QString", QMetaType::QString},
- {"QStringList", QMetaType::QStringList},
- {"QByteArray", QMetaType::QByteArray},
- {"QBitArray", QMetaType::QBitArray},
- {"QDate", QMetaType::QDate},
- {"QTime", QMetaType::QTime},
- {"QDateTime", QMetaType::QDateTime},
- {"QUrl", QMetaType::QUrl},
- {"QLocale", QMetaType::QLocale},
- {"QRect", QMetaType::QRect},
- {"QRectF", QMetaType::QRectF},
- {"QSize", QMetaType::QSize},
- {"QSizeF", QMetaType::QSizeF},
- {"QLine", QMetaType::QLine},
- {"QLineF", QMetaType::QLineF},
- {"QPoint", QMetaType::QPoint},
- {"QPointF", QMetaType::QPointF},
- {"QRegExp", QMetaType::QRegExp},
- {"QVariantHash", QMetaType::QVariantHash},
- {"QEasingCurve", QMetaType::QEasingCurve},
+ QT_ADD_STATIC_METATYPE("void", QMetaType::Void),
+ QT_ADD_STATIC_METATYPE("bool", QMetaType::Bool),
+ QT_ADD_STATIC_METATYPE("int", QMetaType::Int),
+ QT_ADD_STATIC_METATYPE("uint", QMetaType::UInt),
+ QT_ADD_STATIC_METATYPE("qlonglong", QMetaType::LongLong),
+ QT_ADD_STATIC_METATYPE("qulonglong", QMetaType::ULongLong),
+ QT_ADD_STATIC_METATYPE("double", QMetaType::Double),
+ QT_ADD_STATIC_METATYPE("QChar", QMetaType::QChar),
+ QT_ADD_STATIC_METATYPE("QVariantMap", QMetaType::QVariantMap),
+ QT_ADD_STATIC_METATYPE("QVariantList", QMetaType::QVariantList),
+ QT_ADD_STATIC_METATYPE("QString", QMetaType::QString),
+ QT_ADD_STATIC_METATYPE("QStringList", QMetaType::QStringList),
+ QT_ADD_STATIC_METATYPE("QByteArray", QMetaType::QByteArray),
+ QT_ADD_STATIC_METATYPE("QBitArray", QMetaType::QBitArray),
+ QT_ADD_STATIC_METATYPE("QDate", QMetaType::QDate),
+ QT_ADD_STATIC_METATYPE("QTime", QMetaType::QTime),
+ QT_ADD_STATIC_METATYPE("QDateTime", QMetaType::QDateTime),
+ QT_ADD_STATIC_METATYPE("QUrl", QMetaType::QUrl),
+ QT_ADD_STATIC_METATYPE("QLocale", QMetaType::QLocale),
+ QT_ADD_STATIC_METATYPE("QRect", QMetaType::QRect),
+ QT_ADD_STATIC_METATYPE("QRectF", QMetaType::QRectF),
+ QT_ADD_STATIC_METATYPE("QSize", QMetaType::QSize),
+ QT_ADD_STATIC_METATYPE("QSizeF", QMetaType::QSizeF),
+ QT_ADD_STATIC_METATYPE("QLine", QMetaType::QLine),
+ QT_ADD_STATIC_METATYPE("QLineF", QMetaType::QLineF),
+ QT_ADD_STATIC_METATYPE("QPoint", QMetaType::QPoint),
+ QT_ADD_STATIC_METATYPE("QPointF", QMetaType::QPointF),
+ QT_ADD_STATIC_METATYPE("QRegExp", QMetaType::QRegExp),
+ QT_ADD_STATIC_METATYPE("QVariantHash", QMetaType::QVariantHash),
+ QT_ADD_STATIC_METATYPE("QEasingCurve", QMetaType::QEasingCurve),
/* All GUI types */
- {"QColorGroup", 63},
- {"QFont", QMetaType::QFont},
- {"QPixmap", QMetaType::QPixmap},
- {"QBrush", QMetaType::QBrush},
- {"QColor", QMetaType::QColor},
- {"QPalette", QMetaType::QPalette},
- {"QIcon", QMetaType::QIcon},
- {"QImage", QMetaType::QImage},
- {"QPolygon", QMetaType::QPolygon},
- {"QRegion", QMetaType::QRegion},
- {"QBitmap", QMetaType::QBitmap},
- {"QCursor", QMetaType::QCursor},
- {"QSizePolicy", QMetaType::QSizePolicy},
- {"QKeySequence", QMetaType::QKeySequence},
- {"QPen", QMetaType::QPen},
- {"QTextLength", QMetaType::QTextLength},
- {"QTextFormat", QMetaType::QTextFormat},
- {"QMatrix", QMetaType::QMatrix},
- {"QTransform", QMetaType::QTransform},
- {"QMatrix4x4", QMetaType::QMatrix4x4},
- {"QVector2D", QMetaType::QVector2D},
- {"QVector3D", QMetaType::QVector3D},
- {"QVector4D", QMetaType::QVector4D},
- {"QQuaternion", QMetaType::QQuaternion},
+ QT_ADD_STATIC_METATYPE("QColorGroup", 63),
+ QT_ADD_STATIC_METATYPE("QFont", QMetaType::QFont),
+ QT_ADD_STATIC_METATYPE("QPixmap", QMetaType::QPixmap),
+ QT_ADD_STATIC_METATYPE("QBrush", QMetaType::QBrush),
+ QT_ADD_STATIC_METATYPE("QColor", QMetaType::QColor),
+ QT_ADD_STATIC_METATYPE("QPalette", QMetaType::QPalette),
+ QT_ADD_STATIC_METATYPE("QIcon", QMetaType::QIcon),
+ QT_ADD_STATIC_METATYPE("QImage", QMetaType::QImage),
+ QT_ADD_STATIC_METATYPE("QPolygon", QMetaType::QPolygon),
+ QT_ADD_STATIC_METATYPE("QRegion", QMetaType::QRegion),
+ QT_ADD_STATIC_METATYPE("QBitmap", QMetaType::QBitmap),
+ QT_ADD_STATIC_METATYPE("QCursor", QMetaType::QCursor),
+ QT_ADD_STATIC_METATYPE("QSizePolicy", QMetaType::QSizePolicy),
+ QT_ADD_STATIC_METATYPE("QKeySequence", QMetaType::QKeySequence),
+ QT_ADD_STATIC_METATYPE("QPen", QMetaType::QPen),
+ QT_ADD_STATIC_METATYPE("QTextLength", QMetaType::QTextLength),
+ QT_ADD_STATIC_METATYPE("QTextFormat", QMetaType::QTextFormat),
+ QT_ADD_STATIC_METATYPE("QMatrix", QMetaType::QMatrix),
+ QT_ADD_STATIC_METATYPE("QTransform", QMetaType::QTransform),
+ QT_ADD_STATIC_METATYPE("QMatrix4x4", QMetaType::QMatrix4x4),
+ QT_ADD_STATIC_METATYPE("QVector2D", QMetaType::QVector2D),
+ QT_ADD_STATIC_METATYPE("QVector3D", QMetaType::QVector3D),
+ QT_ADD_STATIC_METATYPE("QVector4D", QMetaType::QVector4D),
+ QT_ADD_STATIC_METATYPE("QQuaternion", QMetaType::QQuaternion),
/* All Metatype builtins */
- {"void*", QMetaType::VoidStar},
- {"long", QMetaType::Long},
- {"short", QMetaType::Short},
- {"char", QMetaType::Char},
- {"ulong", QMetaType::ULong},
- {"ushort", QMetaType::UShort},
- {"uchar", QMetaType::UChar},
- {"float", QMetaType::Float},
- {"QObject*", QMetaType::QObjectStar},
- {"QWidget*", QMetaType::QWidgetStar},
+ QT_ADD_STATIC_METATYPE("void*", QMetaType::VoidStar),
+ QT_ADD_STATIC_METATYPE("long", QMetaType::Long),
+ QT_ADD_STATIC_METATYPE("short", QMetaType::Short),
+ QT_ADD_STATIC_METATYPE("char", QMetaType::Char),
+ QT_ADD_STATIC_METATYPE("ulong", QMetaType::ULong),
+ QT_ADD_STATIC_METATYPE("ushort", QMetaType::UShort),
+ QT_ADD_STATIC_METATYPE("uchar", QMetaType::UChar),
+ QT_ADD_STATIC_METATYPE("float", QMetaType::Float),
+ QT_ADD_STATIC_METATYPE("QObject*", QMetaType::QObjectStar),
+ QT_ADD_STATIC_METATYPE("QWidget*", QMetaType::QWidgetStar),
/* Type aliases - order doesn't matter */
- {"unsigned long", QMetaType::ULong},
- {"unsigned int", QMetaType::UInt},
- {"unsigned short", QMetaType::UShort},
- {"unsigned char", QMetaType::UChar},
- {"long long", QMetaType::LongLong},
- {"unsigned long long", QMetaType::ULongLong},
- {"qint8", QMetaType::Char},
- {"quint8", QMetaType::UChar},
- {"qint16", QMetaType::Short},
- {"quint16", QMetaType::UShort},
- {"qint32", QMetaType::Int},
- {"quint32", QMetaType::UInt},
- {"qint64", QMetaType::LongLong},
- {"quint64", QMetaType::ULongLong},
- {"QList<QVariant>", QMetaType::QVariantList},
- {"QMap<QString,QVariant>", QMetaType::QVariantMap},
- {"QHash<QString,QVariant>", QMetaType::QVariantHash},
+ QT_ADD_STATIC_METATYPE("unsigned long", QMetaType::ULong),
+ QT_ADD_STATIC_METATYPE("unsigned int", QMetaType::UInt),
+ QT_ADD_STATIC_METATYPE("unsigned short", QMetaType::UShort),
+ QT_ADD_STATIC_METATYPE("unsigned char", QMetaType::UChar),
+ QT_ADD_STATIC_METATYPE("long long", QMetaType::LongLong),
+ QT_ADD_STATIC_METATYPE("unsigned long long", QMetaType::ULongLong),
+ QT_ADD_STATIC_METATYPE("qint8", QMetaType::Char),
+ QT_ADD_STATIC_METATYPE("quint8", QMetaType::UChar),
+ QT_ADD_STATIC_METATYPE("qint16", QMetaType::Short),
+ QT_ADD_STATIC_METATYPE("quint16", QMetaType::UShort),
+ QT_ADD_STATIC_METATYPE("qint32", QMetaType::Int),
+ QT_ADD_STATIC_METATYPE("quint32", QMetaType::UInt),
+ QT_ADD_STATIC_METATYPE("qint64", QMetaType::LongLong),
+ QT_ADD_STATIC_METATYPE("quint64", QMetaType::ULongLong),
+ QT_ADD_STATIC_METATYPE("QList<QVariant>", QMetaType::QVariantList),
+ QT_ADD_STATIC_METATYPE("QMap<QString,QVariant>", QMetaType::QVariantMap),
+ QT_ADD_STATIC_METATYPE("QHash<QString,QVariant>", QMetaType::QVariantHash),
// let QMetaTypeId2 figure out the type at compile time
- {"qreal", QMetaTypeId2<qreal>::MetaType},
+ QT_ADD_STATIC_METATYPE("qreal", QMetaTypeId2<qreal>::MetaType),
- {0, QMetaType::Void}
+ {0, 0, QMetaType::Void}
};
struct QMetaTypeGuiHelper
@@ -410,24 +413,35 @@ const char *QMetaType::typeName(int type)
}
/*! \internal
- Same as QMetaType::type(), but doesn't lock the mutex.
+ Similar to QMetaType::type(), but only looks in the static set of types.
*/
-static int qMetaTypeType_unlocked(const QByteArray &typeName)
+static inline int qMetaTypeStaticType(const char *typeName, int length)
{
int i = 0;
- while (types[i].typeName && strcmp(typeName.constData(), types[i].typeName))
+ while (types[i].typeName && ((length != types[i].typeNameLength)
+ || strcmp(typeName, types[i].typeName))) {
++i;
- if (!types[i].type) {
- const QVector<QCustomTypeInfo> * const ct = customTypes();
- if (!ct)
- return 0;
+ }
+ return types[i].type;
+}
+
+/*! \internal
+ Similar to QMetaType::type(), but only looks in the custom set of
+ types, and doesn't lock the mutex.
+*/
+static int qMetaTypeCustomType_unlocked(const char *typeName, int length)
+{
+ const QVector<QCustomTypeInfo> * const ct = customTypes();
+ if (!ct)
+ return 0;
- for (int v = 0; v < ct->count(); ++v) {
- if (ct->at(v).typeName == typeName)
- return v + QMetaType::User;
+ for (int v = 0; v < ct->count(); ++v) {
+ if ((length == ct->at(v).typeName.size())
+ && !strcmp(typeName, ct->at(v).typeName.constData())) {
+ return v + QMetaType::User;
}
}
- return types[i].type;
+ return 0;
}
/*! \internal
@@ -449,16 +463,21 @@ int QMetaType::registerType(const char *typeName, Destructor destructor,
NS(QByteArray) normalizedTypeName = QMetaObject::normalizedType(typeName);
#endif
- QWriteLocker locker(customTypesLock());
- int idx = qMetaTypeType_unlocked(normalizedTypeName);
+ int idx = qMetaTypeStaticType(normalizedTypeName.constData(),
+ normalizedTypeName.size());
if (!idx) {
- QCustomTypeInfo inf;
- inf.typeName = normalizedTypeName;
- inf.constr = constructor;
- inf.destr = destructor;
- idx = ct->size() + User;
- ct->append(inf);
+ QWriteLocker locker(customTypesLock());
+ idx = qMetaTypeCustomType_unlocked(normalizedTypeName.constData(),
+ normalizedTypeName.size());
+ if (!idx) {
+ QCustomTypeInfo inf;
+ inf.typeName = normalizedTypeName;
+ inf.constr = constructor;
+ inf.destr = destructor;
+ idx = ct->size() + User;
+ ct->append(inf);
+ }
}
return idx;
}
@@ -517,14 +536,24 @@ bool QMetaType::isRegistered(int type)
*/
int QMetaType::type(const char *typeName)
{
-#ifdef QT_NO_QOBJECT
- const NS(QByteArray) normalizedTypeName = typeName;
-#else
- const NS(QByteArray) normalizedTypeName = QMetaObject::normalizedType(typeName);
+ int length = qstrlen(typeName);
+ int type = qMetaTypeStaticType(typeName, length);
+ if (!type) {
+ QReadLocker locker(customTypesLock());
+ type = qMetaTypeCustomType_unlocked(typeName, length);
+#ifndef QT_NO_QOBJECT
+ if (!type) {
+ const NS(QByteArray) normalizedTypeName = QMetaObject::normalizedType(typeName);
+ type = qMetaTypeStaticType(normalizedTypeName.constData(),
+ normalizedTypeName.size());
+ if (!type) {
+ type = qMetaTypeCustomType_unlocked(normalizedTypeName.constData(),
+ normalizedTypeName.size());
+ }
+ }
#endif
-
- QReadLocker locker(customTypesLock());
- return qMetaTypeType_unlocked(normalizedTypeName);
+ }
+ return type;
}
#ifndef QT_NO_DATASTREAM
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index 384a3cd..227a60d 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -1936,13 +1936,13 @@ static const ushort map_from_three[MapFromThreeCount] =
QVariant::Date,
QVariant::Time,
QVariant::DateTime,
- QVariant::EasingCurve,
QVariant::ByteArray,
QVariant::BitArray,
QVariant::KeySequence,
QVariant::Pen,
QVariant::LongLong,
- QVariant::ULongLong
+ QVariant::ULongLong,
+ QVariant::EasingCurve
};
/*!
diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp
index ec50ac8..43df13a 100644
--- a/src/corelib/thread/qmutex.cpp
+++ b/src/corelib/thread/qmutex.cpp
@@ -41,6 +41,7 @@
#include "qplatformdefs.h"
#include "qmutex.h"
+#include <qdebug.h>
#ifndef QT_NO_THREAD
#include "qatomic.h"
@@ -159,8 +160,7 @@ void QMutex::lock()
if (!isLocked) {
#ifndef QT_NO_DEBUG
if (d->owner == self)
- qWarning("QMutex::lock: Deadlock detected in thread %ld",
- long(d->owner));
+ qWarning() << "QMutex::lock: Deadlock detected in thread" << d->owner;
#endif
// didn't get the lock, wait for it
@@ -197,8 +197,7 @@ void QMutex::lock()
if (!isLocked) {
#ifndef QT_NO_DEBUG
if (d->owner == self)
- qWarning("QMutex::lock: Deadlock detected in thread %ld",
- long(d->owner));
+ qWarning() << "QMutex::lock: Deadlock detected in thread" << d->owner;
#endif
// didn't get the lock, wait for it
diff --git a/src/corelib/tools/qeasingcurve.cpp b/src/corelib/tools/qeasingcurve.cpp
index 89edb2d..d4b2c27 100644
--- a/src/corelib/tools/qeasingcurve.cpp
+++ b/src/corelib/tools/qeasingcurve.cpp
@@ -860,8 +860,8 @@ QDebug operator<<(QDebug debug, const QEasingCurve &item)
QDataStream &operator<<(QDataStream &stream, const QEasingCurve &easing)
{
- stream << easing.d_ptr->type;
- stream << quint64(intptr_t(easing.d_ptr->func));
+ stream << quint8(easing.d_ptr->type);
+ stream << quint64(quintptr(easing.d_ptr->func));
bool hasConfig = easing.d_ptr->config;
stream << hasConfig;
@@ -886,14 +886,14 @@ QDataStream &operator<<(QDataStream &stream, const QEasingCurve &easing)
QDataStream &operator>>(QDataStream &stream, QEasingCurve &easing)
{
QEasingCurve::Type type;
- int int_type;
+ quint8 int_type;
stream >> int_type;
type = static_cast<QEasingCurve::Type>(int_type);
easing.setType(type);
quint64 ptr_func;
stream >> ptr_func;
- easing.d_ptr->func = QEasingCurve::EasingFunction(intptr_t(ptr_func));
+ easing.d_ptr->func = QEasingCurve::EasingFunction(quintptr(ptr_func));
bool hasConfig;
stream >> hasConfig;
diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h
index f1030ae..3374c80 100644
--- a/src/corelib/tools/qhash.h
+++ b/src/corelib/tools/qhash.h
@@ -625,6 +625,7 @@ template <class Key, class T>
Q_OUTOFLINE_TEMPLATE QList<Key> QHash<Key, T>::uniqueKeys() const
{
QList<Key> res;
+ res.reserve(size()); // May be too much, but assume short lifetime
const_iterator i = begin();
if (i != end()) {
for (;;) {
@@ -644,6 +645,7 @@ template <class Key, class T>
Q_OUTOFLINE_TEMPLATE QList<Key> QHash<Key, T>::keys() const
{
QList<Key> res;
+ res.reserve(size());
const_iterator i = begin();
while (i != end()) {
res.append(i.key());
@@ -688,6 +690,7 @@ template <class Key, class T>
Q_OUTOFLINE_TEMPLATE QList<T> QHash<Key, T>::values() const
{
QList<T> res;
+ res.reserve(size());
const_iterator i = begin();
while (i != end()) {
res.append(i.value());
diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h
index 3a29e13..c6dd106 100644
--- a/src/corelib/tools/qlist.h
+++ b/src/corelib/tools/qlist.h
@@ -525,7 +525,8 @@ Q_OUTOFLINE_TEMPLATE void QList<T>::append(const T &t)
PodNode cpy = *reinterpret_cast<const PodNode *>(&t);
Node *n = reinterpret_cast<Node *>(p.append());
QT_TRY {
- node_construct(n, *reinterpret_cast<const T *>(&cpy));
+ void *ptr = &cpy;
+ node_construct(n, *reinterpret_cast<T *>(ptr));
} QT_CATCH(...) {
--d->end;
QT_RETHROW;
@@ -559,7 +560,8 @@ inline void QList<T>::prepend(const T &t)
PodNode cpy = *reinterpret_cast<const PodNode *>(&t);
Node *n = reinterpret_cast<Node *>(p.prepend());
QT_TRY {
- node_construct(n, *reinterpret_cast<const T *>(&cpy));
+ void *ptr = &cpy;
+ node_construct(n, *reinterpret_cast<T *>(ptr));
} QT_CATCH(...) {
++d->begin;
QT_RETHROW;
@@ -593,7 +595,8 @@ inline void QList<T>::insert(int i, const T &t)
PodNode cpy = *reinterpret_cast<const PodNode *>(&t);
Node *n = reinterpret_cast<Node *>(p.insert(i));
QT_TRY {
- node_construct(n, *reinterpret_cast<const T *>(&cpy));
+ void *ptr = &cpy;
+ node_construct(n, *reinterpret_cast<T *>(ptr));
} QT_CATCH(...) {
p.remove(i);
QT_RETHROW;
@@ -808,15 +811,22 @@ Q_OUTOFLINE_TEMPLATE typename QList<T>::iterator QList<T>::erase(typename QList<
template <typename T>
Q_OUTOFLINE_TEMPLATE QList<T> &QList<T>::operator+=(const QList<T> &l)
{
- Node *n = (d->ref != 1)
- ? detach_helper_grow(INT_MAX, l.size())
- : reinterpret_cast<Node *>(p.append2(l.p));
- QT_TRY{
- node_copy(n, reinterpret_cast<Node *>(p.end()), reinterpret_cast<Node *>(l.p.begin()));
- } QT_CATCH(...) {
- // restore the old end
- d->end -= int(reinterpret_cast<Node *>(p.end()) - n);
- QT_RETHROW;
+ if (!l.isEmpty()) {
+ if (isEmpty()) {
+ *this = l;
+ } else {
+ Node *n = (d->ref != 1)
+ ? detach_helper_grow(INT_MAX, l.size())
+ : reinterpret_cast<Node *>(p.append2(l.p));
+ QT_TRY {
+ node_copy(n, reinterpret_cast<Node *>(p.end()),
+ reinterpret_cast<Node *>(l.p.begin()));
+ } QT_CATCH(...) {
+ // restore the old end
+ d->end -= int(reinterpret_cast<Node *>(p.end()) - n);
+ QT_RETHROW;
+ }
+ }
}
return *this;
}
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index b4bfcaf..84bc154 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -465,7 +465,7 @@ static QString winToQtFormat(const QString &sys_fmt)
if (text == QLatin1String("'"))
result += QLatin1String("''");
else
- result += QLatin1Char('\'') + text + QLatin1Char('\'');
+ result += QString(QLatin1Char('\'') + text + QLatin1Char('\''));
continue;
}
@@ -681,8 +681,8 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const
case DateTimeFormatLong:
case DateTimeFormatShort:
- return query(type == DateTimeFormatLong ? DateFormatLong : DateFormatShort).toString()
- + QLatin1Char(' ') + query(type == DateTimeFormatLong ? TimeFormatLong : TimeFormatShort).toString();
+ return QString(query(type == DateTimeFormatLong ? DateFormatLong : DateFormatShort).toString()
+ + QLatin1Char(' ') + query(type == DateTimeFormatLong ? TimeFormatLong : TimeFormatShort).toString());
case DayNameLong:
case DayNameShort:
return winDayName(in.toInt(), (type == DayNameShort));
@@ -698,8 +698,8 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const
case DateTimeToStringShort:
case DateTimeToStringLong: {
const QDateTime dt = in.toDateTime();
- return winDateToString(dt.date(), type == DateTimeToStringShort ? DATE_SHORTDATE : DATE_LONGDATE)
- + QLatin1Char(' ') + winTimeToString(dt.time()); }
+ return QString(winDateToString(dt.date(), type == DateTimeToStringShort ? DATE_SHORTDATE : DATE_LONGDATE)
+ + QLatin1Char(' ') + winTimeToString(dt.time())); }
case ZeroDigit:
locale_info = LOCALE_SNATIVEDIGITS;
diff --git a/src/corelib/tools/qlocale_symbian.cpp b/src/corelib/tools/qlocale_symbian.cpp
index b1a7caa..58e3ba8 100644
--- a/src/corelib/tools/qlocale_symbian.cpp
+++ b/src/corelib/tools/qlocale_symbian.cpp
@@ -841,7 +841,7 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const
return symbianTimeFormat();
case DateTimeFormatLong:
case DateTimeFormatShort:
- return symbianDateFormat( (type == DateTimeFormatShort) ) + QLatin1Char(' ') + symbianTimeFormat();
+ return QString(symbianDateFormat( (type == DateTimeFormatShort) ) + QLatin1Char(' ') + symbianTimeFormat());
case DateToStringShort:
case DateToStringLong:
return symbianDateToString(in.toDate(), (type == DateToStringShort) );
@@ -851,8 +851,8 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const
case DateTimeToStringShort:
case DateTimeToStringLong: {
const QDateTime dt = in.toDateTime();
- return symbianDateToString(dt.date(), (type == DateTimeToStringShort) )
- + QLatin1Char(' ') + symbianTimeToString(dt.time());
+ return QString(symbianDateToString(dt.date(), (type == DateTimeToStringShort) )
+ + QLatin1Char(' ') + symbianTimeToString(dt.time()));
}
case MeasurementSystem:
return static_cast<int>(symbianMeasurementSystem());
diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h
index 2e21547..df0ae46 100644
--- a/src/corelib/tools/qmap.h
+++ b/src/corelib/tools/qmap.h
@@ -773,6 +773,7 @@ template <class Key, class T>
Q_OUTOFLINE_TEMPLATE QList<Key> QMap<Key, T>::uniqueKeys() const
{
QList<Key> res;
+ res.reserve(size()); // May be too much, but assume short lifetime
const_iterator i = begin();
if (i != end()) {
for (;;) {
@@ -792,6 +793,7 @@ template <class Key, class T>
Q_OUTOFLINE_TEMPLATE QList<Key> QMap<Key, T>::keys() const
{
QList<Key> res;
+ res.reserve(size());
const_iterator i = begin();
while (i != end()) {
res.append(i.key());
@@ -836,6 +838,7 @@ template <class Key, class T>
Q_OUTOFLINE_TEMPLATE QList<T> QMap<Key, T>::values() const
{
QList<T> res;
+ res.reserve(size());
const_iterator i = begin();
while (i != end()) {
res.append(i.value());
diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp
index 25255f9..20ad444 100644
--- a/src/corelib/tools/qregexp.cpp
+++ b/src/corelib/tools/qregexp.cpp
@@ -1466,9 +1466,14 @@ void QRegExpMatchState::match(const QChar *str0, int len0, int pos0,
#ifndef QT_NO_REGEXP_CAPTURE
for (int i = 0; i < numCaptures; ++i) {
int j = eng->captureForOfficialCapture.at(i);
- int len = capEnd[j] - capBegin[j];
- *c++ = (len > 0) ? pos + capBegin[j] : 0;
- *c++ = len;
+ if (capBegin[j] != EmptyCapture) {
+ int len = capEnd[j] - capBegin[j];
+ *c++ = (len > 0) ? pos + capBegin[j] : 0;
+ *c++ = len;
+ } else {
+ *c++ = -1;
+ *c++ = -1;
+ }
}
#endif
} else {
diff --git a/src/corelib/tools/qscopedpointer.cpp b/src/corelib/tools/qscopedpointer.cpp
index 12badf0..e7dd769 100644
--- a/src/corelib/tools/qscopedpointer.cpp
+++ b/src/corelib/tools/qscopedpointer.cpp
@@ -225,4 +225,59 @@ QT_BEGIN_NAMESPACE
Swap this pointer with \a other.
*/
+/*!
+ \class QScopedArrayPointer
+
+ \brief The QScopedArrayPointer class stores a pointer to a
+ dynamically allocated array of objects, and deletes it upon
+ destruction.
+
+ \since 4.6
+ \reentrant
+ \ingroup misc
+
+ A QScopedArrayPointer is a QScopedPointer that defaults to
+ deleting the object it is pointing to with the delete[] operator. It
+ also features operator[] for convenience, so we can write:
+
+ \code
+ void foo()
+ {
+ QScopedArrayPointer<int> i(new int[10]);
+ i[2] = 42;
+ ...
+ return; // our integer array is now deleted using delete[]
+ }
+ \endcode
+*/
+
+/*!
+ \fn QScopedArrayPointer::QScopedArrayPointer(T *p = 0)
+
+ Constructs this QScopedArrayPointer instance and sets its pointer
+ to \a p.
+*/
+
+/*!
+ \fn T *QScopedArrayPointer::operator[](int i)
+
+ Provides access to entry \a i of the scoped pointer's array of
+ objects.
+
+ If the contained pointer is \c null, behavior is undefined.
+
+ \sa isNull()
+*/
+
+/*!
+ \fn T *QScopedArrayPointer::operator[](int i) const
+
+ Provides access to entry \a i of the scoped pointer's array of
+ objects.
+
+ If the contained pointer is \c null, behavior is undefined.
+
+ \sa isNull()
+*/
+
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index d85c248..bfc65bc 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -209,6 +209,7 @@ namespace QtSharedPointer {
inline bool destroy() { destroyer(this); return true; }
inline void operator delete(void *ptr) { ::operator delete(ptr); }
+ inline void operator delete(void *, void *) { }
};
// sizeof(ExternalRefCountWithDestroyFn) = 16 (32-bit) / 24 (64-bit)
diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp
new file mode 100644
index 0000000..52d2cea
--- /dev/null
+++ b/src/corelib/tools/qsimd.cpp
@@ -0,0 +1,246 @@
+/****************************************************************************
+**
+** Copyright (C) 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 "qsimd_p.h"
+#include <QByteArray>
+
+QT_BEGIN_NAMESPACE
+
+uint qDetectCPUFeatures()
+{
+ static uint features = 0xffffffff;
+ if (features != 0xffffffff)
+ return features;
+
+#if defined (Q_OS_WINCE)
+#if defined (ARM)
+ if (IsProcessorFeaturePresent(PF_ARM_INTEL_WMMX)) {
+ features = IWMMXT;
+ return features;
+ }
+#elif defined(_X86_)
+ features = 0;
+#if defined QT_HAVE_MMX
+ if (IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE))
+ features |= MMX;
+#endif
+#if defined QT_HAVE_3DNOW
+ if (IsProcessorFeaturePresent(PF_3DNOW_INSTRUCTIONS_AVAILABLE))
+ features |= MMX3DNOW;
+#endif
+ return features;
+#endif
+ features = 0;
+ return features;
+#elif defined(QT_HAVE_IWMMXT)
+ // runtime detection only available when running as a previlegied process
+ static const bool doIWMMXT = !qgetenv("QT_NO_IWMMXT").toInt();
+ features = doIWMMXT ? IWMMXT : 0;
+ return features;
+#elif defined(QT_HAVE_NEON)
+ static const bool doNEON = !qgetenv("QT_NO_NEON").toInt();
+ features = doNEON ? NEON : 0;
+ return features;
+#else
+ features = 0;
+#if defined(__x86_64__) || defined(Q_OS_WIN64)
+ features = MMX|SSE|SSE2|CMOV;
+#elif defined(__ia64__)
+ features = MMX|SSE|SSE2;
+#elif defined(__i386__) || defined(_M_IX86)
+ unsigned int extended_result = 0;
+ uint result = 0;
+ /* see p. 118 of amd64 instruction set manual Vol3 */
+#if defined(Q_CC_GNU)
+ asm ("push %%ebx\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "mov %%eax, %%ebx\n"
+ "xor $0x00200000, %%eax\n"
+ "push %%eax\n"
+ "popf\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "xor %%edx, %%edx\n"
+ "xor %%ebx, %%eax\n"
+ "jz 1f\n"
+
+ "mov $0x00000001, %%eax\n"
+ "cpuid\n"
+ "1:\n"
+ "pop %%ebx\n"
+ "mov %%edx, %0\n"
+ : "=r" (result)
+ :
+ : "%eax", "%ecx", "%edx"
+ );
+
+ asm ("push %%ebx\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "mov %%eax, %%ebx\n"
+ "xor $0x00200000, %%eax\n"
+ "push %%eax\n"
+ "popf\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "xor %%edx, %%edx\n"
+ "xor %%ebx, %%eax\n"
+ "jz 2f\n"
+
+ "mov $0x80000000, %%eax\n"
+ "cpuid\n"
+ "cmp $0x80000000, %%eax\n"
+ "jbe 2f\n"
+ "mov $0x80000001, %%eax\n"
+ "cpuid\n"
+ "2:\n"
+ "pop %%ebx\n"
+ "mov %%edx, %0\n"
+ : "=r" (extended_result)
+ :
+ : "%eax", "%ecx", "%edx"
+ );
+#elif defined (Q_OS_WIN)
+ _asm {
+ push eax
+ push ebx
+ push ecx
+ push edx
+ pushfd
+ pop eax
+ mov ebx, eax
+ xor eax, 00200000h
+ push eax
+ popfd
+ pushfd
+ pop eax
+ mov edx, 0
+ xor eax, ebx
+ jz skip
+
+ mov eax, 1
+ cpuid
+ mov result, edx
+ skip:
+ pop edx
+ pop ecx
+ pop ebx
+ pop eax
+ }
+
+ _asm {
+ push eax
+ push ebx
+ push ecx
+ push edx
+ pushfd
+ pop eax
+ mov ebx, eax
+ xor eax, 00200000h
+ push eax
+ popfd
+ pushfd
+ pop eax
+ mov edx, 0
+ xor eax, ebx
+ jz skip2
+
+ mov eax, 80000000h
+ cpuid
+ cmp eax, 80000000h
+ jbe skip2
+ mov eax, 80000001h
+ cpuid
+ mov extended_result, edx
+ skip2:
+ pop edx
+ pop ecx
+ pop ebx
+ pop eax
+ }
+#endif
+
+ // result now contains the standard feature bits
+ if (result & (1u << 15))
+ features |= CMOV;
+ if (result & (1u << 23))
+ features |= MMX;
+ if (extended_result & (1u << 22))
+ features |= MMXEXT;
+ if (extended_result & (1u << 31))
+ features |= MMX3DNOW;
+ if (extended_result & (1u << 30))
+ features |= MMX3DNOWEXT;
+ if (result & (1u << 25))
+ features |= SSE;
+ if (result & (1u << 26))
+ features |= SSE2;
+#endif // i386
+
+#if defined(QT_HAVE_MMX)
+ if (qgetenv("QT_NO_MMX").toInt())
+ features ^= MMX;
+#endif
+ if (qgetenv("QT_NO_MMXEXT").toInt())
+ features ^= MMXEXT;
+
+#if defined(QT_HAVE_3DNOW)
+ if (qgetenv("QT_NO_3DNOW").toInt())
+ features ^= MMX3DNOW;
+#endif
+ if (qgetenv("QT_NO_3DNOWEXT").toInt())
+ features ^= MMX3DNOWEXT;
+
+#if defined(QT_HAVE_SSE)
+ if (qgetenv("QT_NO_SSE").toInt())
+ features ^= SSE;
+#endif
+#if defined(QT_HAVE_SSE2)
+ if (qgetenv("QT_NO_SSE2").toInt())
+ features ^= SSE2;
+#endif
+
+ return features;
+#endif
+}
+
+QT_END_NAMESPACE
diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h
new file mode 100644
index 0000000..44c1798
--- /dev/null
+++ b/src/corelib/tools/qsimd_p.h
@@ -0,0 +1,126 @@
+/****************************************************************************
+**
+** Copyright (C) 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 QSIMD_P_H
+#define QSIMD_P_H
+
+#include <qglobal.h>
+
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Core)
+
+#if defined(QT_NO_MAC_XARCH) || (defined(Q_OS_DARWIN) && (defined(__ppc__) || defined(__ppc64__)))
+// Disable MMX and SSE on Mac/PPC builds, or if the compiler
+// does not support -Xarch argument passing
+#undef QT_HAVE_SSE2
+#undef QT_HAVE_SSE
+#undef QT_HAVE_3DNOW
+#undef QT_HAVE_MMX
+#endif
+
+// SSE intrinsics
+#if defined(__SSE2__) && defined(QT_HAVE_SSE2) && !defined(QT_BOOTSTRAPPED)
+#if defined(QT_LINUXBASE)
+/// this is an evil hack - the posix_memalign declaration in LSB
+/// is wrong - see http://bugs.linuxbase.org/show_bug.cgi?id=2431
+# define posix_memalign _lsb_hack_posix_memalign
+# include <emmintrin.h>
+# undef posix_memalign
+#else
+# include <emmintrin.h>
+#endif
+
+#define QT_ALWAYS_HAVE_SSE2
+#endif
+
+// NEON intrinsics
+#if defined(QT_HAVE_NEON)
+#include <arm_neon.h>
+#endif
+
+
+// IWMMXT intrinsics
+#if defined(QT_HAVE_IWMMXT)
+#include <mmintrin.h>
+#if defined(Q_OS_WINCE)
+# include "qplatformdefs.h"
+#endif
+#endif
+
+#if defined(QT_HAVE_IWMMXT)
+#if !defined(__IWMMXT__) && !defined(Q_OS_WINCE)
+# include <xmmintrin.h>
+#elif defined(Q_OS_WINCE_STD) && defined(_X86_)
+# pragma warning(disable: 4391)
+# include <xmmintrin.h>
+#endif
+#endif
+
+// 3D now intrinsics
+#if defined(QT_HAVE_3DNOW)
+#include <mm3dnow.h>
+#endif
+
+enum CPUFeatures {
+ None = 0,
+ MMX = 0x1,
+ MMXEXT = 0x2,
+ MMX3DNOW = 0x4,
+ MMX3DNOWEXT = 0x8,
+ SSE = 0x10,
+ SSE2 = 0x20,
+ CMOV = 0x40,
+ IWMMXT = 0x80,
+ NEON = 0x100
+};
+
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+Q_CORE_EXPORT uint qDetectCPUFeatures();
+
+#endif // QSIMD_P_H
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index ac1bee7..e9b7b9a 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -46,6 +46,7 @@
#include <qtextcodec.h>
#endif
#include <private/qutfcodec_p.h>
+#include "qsimd_p.h"
#include <qdatastream.h>
#include <qlist.h>
#include "qlocale.h"
@@ -3479,12 +3480,82 @@ static QByteArray toLatin1_helper(const QChar *data, int length)
QByteArray ba;
if (length) {
ba.resize(length);
- const ushort *i = reinterpret_cast<const ushort *>(data);
- const ushort *e = i + length;
- uchar *s = (uchar*) ba.data();
- while (i != e) {
- *s++ = (*i>0xff) ? '?' : (uchar) *i;
- ++i;
+ const ushort *src = reinterpret_cast<const ushort *>(data);
+ uchar *dst = (uchar*) ba.data();
+#if defined(QT_ALWAYS_HAVE_SSE2)
+ if (length >= 16) {
+ const int chunkCount = length >> 4; // divided by 16
+ const __m128i questionMark = _mm_set1_epi16('?');
+ // SSE has no compare instruction for unsigned comparison.
+ // The variables must be shiffted + 0x8000 to be compared
+ const __m128i signedBitOffset = _mm_set1_epi16(0x8000);
+ const __m128i thresholdMask = _mm_set1_epi16(0xff + 0x8000);
+ for (int i = 0; i < chunkCount; ++i) {
+ __m128i chunk1 = _mm_loadu_si128((__m128i*)src); // load
+ src += 8;
+ {
+ // each 16 bit is equal to 0xFF if the source is outside latin 1 (>0xff)
+ const __m128i signedChunk = _mm_add_epi16(chunk1, signedBitOffset);
+ const __m128i offLimitMask = _mm_cmpgt_epi16(signedChunk, thresholdMask);
+
+ // offLimitQuestionMark contains '?' for each 16 bits that was off-limit
+ // the 16 bits that were correct contains zeros
+ const __m128i offLimitQuestionMark = _mm_and_si128(offLimitMask, questionMark);
+
+ // correctBytes contains the bytes that were in limit
+ // the 16 bits that were off limits contains zeros
+ const __m128i correctBytes = _mm_andnot_si128(offLimitMask, chunk1);
+
+ // merge offLimitQuestionMark and correctBytes to have the result
+ chunk1 = _mm_or_si128(correctBytes, offLimitQuestionMark);
+ }
+
+ __m128i chunk2 = _mm_loadu_si128((__m128i*)src); // load
+ src += 8;
+ {
+ // exactly the same operations as for the previous chunk of data
+ const __m128i signedChunk = _mm_add_epi16(chunk2, signedBitOffset);
+ const __m128i offLimitMask = _mm_cmpgt_epi16(signedChunk, thresholdMask);
+ const __m128i offLimitQuestionMark = _mm_and_si128(offLimitMask, questionMark);
+ const __m128i correctBytes = _mm_andnot_si128(offLimitMask, chunk2);
+ chunk2 = _mm_or_si128(correctBytes, offLimitQuestionMark);
+ }
+
+ // pack the two vector to 16 x 8bits elements
+ const __m128i result = _mm_packus_epi16(chunk1, chunk2);
+
+ _mm_storeu_si128((__m128i*)dst, result); // store
+ dst += 16;
+ }
+ length = length % 16;
+ }
+#elif QT_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
+ // 2) packing is done to 64 bits (8 x 8bits component).
+ if (length >= 16) {
+ const int chunkCount = length >> 3; // divided by 8
+ const uint16x8_t questionMark = vdupq_n_u16('?'); // set
+ const uint16x8_t thresholdMask = vdupq_n_u16(0xff); // set
+ for (int i = 0; i < chunkCount; ++i) {
+ uint16x8_t chunk = vld1q_u16((uint16_t *)src); // load
+ src += 8;
+
+ const uint16x8_t offLimitMask = vcgtq_u16(chunk, thresholdMask); // chunk > thresholdMask
+ const uint16x8_t offLimitQuestionMark = vandq_u16(offLimitMask, questionMark); // offLimitMask & questionMark
+ const uint16x8_t correctBytes = vbicq_u16(chunk, offLimitMask); // !offLimitMask & chunk
+ chunk = vorrq_u16(correctBytes, offLimitQuestionMark); // correctBytes | offLimitQuestionMark
+ const uint8x8_t result = vmovn_u16(chunk); // narrowing move->packing
+ vst1_u8(dst, result); // store
+ dst += 8;
+ }
+ length = length % 8;
+ }
+#endif
+ while (length--) {
+ *dst++ = (*src>0xff) ? '?' : (uchar) *src;
+ ++src;
}
}
return ba;
@@ -3647,10 +3718,35 @@ QString::Data *QString::fromLatin1_helper(const char *str, int size)
d->alloc = d->size = size;
d->clean = d->asciiCache = d->simpletext = d->righttoleft = d->capacity = 0;
d->data = d->array;
- ushort *i = d->data;
d->array[size] = '\0';
+ ushort *dst = d->data;
+ /* SIMD:
+ * Unpacking with SSE has been shown to improve performance on recent CPUs
+ * The same method gives no improvement with NEON.
+ */
+#if defined(QT_ALWAYS_HAVE_SSE2)
+ if (size >= 16) {
+ int chunkCount = size >> 4; // divided by 16
+ const __m128i nullMask = _mm_set1_epi32(0);
+ for (int i = 0; i < chunkCount; ++i) {
+ const __m128i chunk = _mm_loadu_si128((__m128i*)str); // load
+ str += 16;
+
+ // unpack the first 8 bytes, padding with zeros
+ const __m128i firstHalf = _mm_unpacklo_epi8(chunk, nullMask);
+ _mm_storeu_si128((__m128i*)dst, firstHalf); // store
+ dst += 8;
+
+ // unpack the last 8 bytes, padding with zeros
+ const __m128i secondHalf = _mm_unpackhi_epi8 (chunk, nullMask);
+ _mm_storeu_si128((__m128i*)dst, secondHalf); // store
+ dst += 8;
+ }
+ size = size % 16;
+ }
+#endif
while (size--)
- *i++ = (uchar)*str++;
+ *dst++ = (uchar)*str++;
}
return d;
}
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index 8de3c7d..a59c0bd 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -73,6 +73,16 @@ typedef std::basic_string<wchar_t> QStdWString;
#error qstring.h must be included before any header file that defines truncate
#endif
+#if defined(Q_CC_GNU) && (__GNUC__ == 4 && __GNUC_MINOR__ == 0)
+//There is a bug in GCC 4.0 that tries to instantiate template of annonymous enum
+# ifdef QT_USE_FAST_OPERATOR_PLUS
+# undef QT_USE_FAST_OPERATOR_PLUS
+# endif
+# ifdef QT_USE_FAST_CONCATENATION
+# undef QT_USE_FAST_CONCATENATION
+# endif
+#endif
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/tools/qstringbuilder.h b/src/corelib/tools/qstringbuilder.h
index 74661c2..0c3ba06 100644
--- a/src/corelib/tools/qstringbuilder.h
+++ b/src/corelib/tools/qstringbuilder.h
@@ -100,14 +100,18 @@ public:
operator QString() const
{
- QString s(QConcatenable< QStringBuilder<A, B> >::size(*this),
- Qt::Uninitialized);
+ const uint size = QConcatenable< QStringBuilder<A, B> >::size(*this);
+ QString s(size, Qt::Uninitialized);
QChar *d = s.data();
+ const QChar * const start = d;
QConcatenable< QStringBuilder<A, B> >::appendTo(*this, d);
- // this resize is necessary since we allocate a bit too much
- // when dealing with variable sized 8-bit encodings
- s.resize(d - s.data());
+
+ if (!QConcatenable< QStringBuilder<A, B> >::ExactSize && int(size) != d - start) {
+ // this resize is necessary since we allocate a bit too much
+ // when dealing with variable sized 8-bit encodings
+ s.resize(d - start);
+ }
return s;
}
QByteArray toLatin1() const { return QString(*this).toLatin1(); }
@@ -116,10 +120,24 @@ public:
const B &b;
};
+template <>
+class QStringBuilder <QString, QString>
+{
+ public:
+ QStringBuilder(const QString &a_, const QString &b_) : a(a_), b(b_) {}
+
+ operator QString() const
+ { QString r(a); r += b; return r; }
+ QByteArray toLatin1() const { return QString(*this).toLatin1(); }
+
+ const QString &a;
+ const QString &b;
+};
template <> struct QConcatenable<char> : private QAbstractConcatenable
{
typedef char type;
+ enum { ExactSize = true };
static int size(const char) { return 1; }
static inline void appendTo(const char c, QChar *&out)
{
@@ -130,6 +148,7 @@ template <> struct QConcatenable<char> : private QAbstractConcatenable
template <> struct QConcatenable<QLatin1Char>
{
typedef QLatin1Char type;
+ enum { ExactSize = true };
static int size(const QLatin1Char) { return 1; }
static inline void appendTo(const QLatin1Char c, QChar *&out)
{
@@ -140,6 +159,7 @@ template <> struct QConcatenable<QLatin1Char>
template <> struct QConcatenable<QChar>
{
typedef QChar type;
+ enum { ExactSize = true };
static int size(const QChar) { return 1; }
static inline void appendTo(const QChar c, QChar *&out)
{
@@ -150,6 +170,7 @@ template <> struct QConcatenable<QChar>
template <> struct QConcatenable<QCharRef>
{
typedef QCharRef type;
+ enum { ExactSize = true };
static int size(const QCharRef &) { return 1; }
static inline void appendTo(const QCharRef &c, QChar *&out)
{
@@ -160,6 +181,7 @@ template <> struct QConcatenable<QCharRef>
template <> struct QConcatenable<QLatin1String>
{
typedef QLatin1String type;
+ enum { ExactSize = true };
static int size(const QLatin1String &a) { return qstrlen(a.latin1()); }
static inline void appendTo(const QLatin1String &a, QChar *&out)
{
@@ -172,6 +194,7 @@ template <> struct QConcatenable<QLatin1String>
template <> struct QConcatenable<QLatin1Literal>
{
typedef QLatin1Literal type;
+ enum { ExactSize = true };
static int size(const QLatin1Literal &a) { return a.size(); }
static inline void appendTo(const QLatin1Literal &a, QChar *&out)
{
@@ -183,6 +206,7 @@ template <> struct QConcatenable<QLatin1Literal>
template <> struct QConcatenable<QString>
{
typedef QString type;
+ enum { ExactSize = true };
static int size(const QString &a) { return a.size(); }
static inline void appendTo(const QString &a, QChar *&out)
{
@@ -195,6 +219,7 @@ template <> struct QConcatenable<QString>
template <> struct QConcatenable<QStringRef>
{
typedef QStringRef type;
+ enum { ExactSize = true };
static int size(const QStringRef &a) { return a.size(); }
static inline void appendTo(QStringRef a, QChar *&out)
{
@@ -208,6 +233,7 @@ template <> struct QConcatenable<QStringRef>
template <int N> struct QConcatenable<char[N]> : private QAbstractConcatenable
{
typedef char type[N];
+ enum { ExactSize = false };
static int size(const char[N])
{
return N - 1;
@@ -221,6 +247,7 @@ template <int N> struct QConcatenable<char[N]> : private QAbstractConcatenable
template <int N> struct QConcatenable<const char[N]> : private QAbstractConcatenable
{
typedef const char type[N];
+ enum { ExactSize = false };
static int size(const char[N]) { return N - 1; }
static inline void appendTo(const char a[N], QChar *&out)
{
@@ -231,6 +258,7 @@ template <int N> struct QConcatenable<const char[N]> : private QAbstractConcaten
template <> struct QConcatenable<const char *> : private QAbstractConcatenable
{
typedef char const *type;
+ enum { ExactSize = false };
static int size(const char *a) { return qstrlen(a); }
static inline void appendTo(const char *a, QChar *&out)
{
@@ -241,6 +269,7 @@ template <> struct QConcatenable<const char *> : private QAbstractConcatenable
template <> struct QConcatenable<QByteArray> : private QAbstractConcatenable
{
typedef QByteArray type;
+ enum { ExactSize = false };
static int size(const QByteArray &ba) { return qstrnlen(ba.constData(), ba.size()); }
static inline void appendTo(const QByteArray &ba, QChar *&out)
{
@@ -253,6 +282,7 @@ template <typename A, typename B>
struct QConcatenable< QStringBuilder<A, B> >
{
typedef QStringBuilder<A, B> type;
+ enum { ExactSize = QConcatenable<A>::ExactSize && QConcatenable<B>::ExactSize };
static int size(const type &p)
{
return QConcatenable<A>::size(p.a) + QConcatenable<B>::size(p.b);
diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri
index 3406e41..6d64915 100644
--- a/src/corelib/tools/tools.pri
+++ b/src/corelib/tools/tools.pri
@@ -33,6 +33,7 @@ HEADERS += \
tools/qsharedpointer.h \
tools/qsharedpointer_impl.h \
tools/qset.h \
+ tools/qsimd_p.h \
tools/qsize.h \
tools/qstack.h \
tools/qstring.h \
@@ -68,6 +69,7 @@ SOURCES += \
tools/qregexp.cpp \
tools/qshareddata.cpp \
tools/qsharedpointer.cpp \
+ tools/qsimd.cpp \
tools/qsize.cpp \
tools/qstring.cpp \
tools/qstringbuilder.cpp \
diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt
index cf1080b..34e4834 100644
--- a/src/declarative/QmlChanges.txt
+++ b/src/declarative/QmlChanges.txt
@@ -1,7 +1,17 @@
=============================================================================
The changes below are pre Qt 4.7.0 alpha
+Flickable: renamed viewportWidth -> contentWidth
+Flickable: renamed viewportHeight -> contentHeight
+Flickable: renamed viewportX -> contentX
+Flickable: renamed viewportY -> contentY
+Removed Flickable.reportedVelocitySmoothing
Renamed MouseRegion -> MouseArea
+Connection: syntax and rename:
+ Connection { sender: a; signal: foo(); script: xxx }
+ Connection { sender: a; signal: bar(); script: yyy }
+ becomes:
+ Connections { target: a; onFoo: xxx; onBar: yyy }
QmlView
-------
diff --git a/src/declarative/graphicsitems/qdeclarativeeffects.cpp b/src/declarative/graphicsitems/qdeclarativeeffects.cpp
index efab24e..ea1f9cc 100644
--- a/src/declarative/graphicsitems/qdeclarativeeffects.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeeffects.cpp
@@ -45,6 +45,7 @@
/*!
\qmlclass Blur QGraphicsBlurEffect
+ \since 4.7
\brief The Blur object provides a blur effect.
A blur effect blurs the source item. This effect is useful for reducing details;
@@ -80,6 +81,7 @@
/*!
\qmlclass Colorize QGraphicsColorizeEffect
+ \since 4.7
\brief The Colorize object provides a colorize effect.
A colorize effect renders the source item with a tint of its color.
@@ -106,6 +108,7 @@
/*!
\qmlclass DropShadow QGraphicsDropShadowEffect
+ \since 4.7
\brief The DropShadow object provides a drop shadow effect.
A drop shadow effect renders the source item with a drop shadow. The color of
@@ -147,6 +150,7 @@
/*!
\qmlclass Opacity QGraphicsOpacityEffect
+ \since 4.7
\brief The Opacity object provides an opacity effect.
An opacity effect renders the source with an opacity. This effect is useful
diff --git a/src/declarative/graphicsitems/qdeclarativeevents.cpp b/src/declarative/graphicsitems/qdeclarativeevents.cpp
index d2cbb54..8be2f40 100644
--- a/src/declarative/graphicsitems/qdeclarativeevents.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeevents.cpp
@@ -114,6 +114,7 @@ Item {
/*!
\qmlclass MouseEvent QDeclarativeMouseEvent
+ \since 4.7
\brief The MouseEvent object provides information about a mouse event.
The position of the mouse can be found via the x and y properties.
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
index 9f19f53..c54ddd0 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
@@ -128,7 +128,7 @@ QDeclarativeFlickablePrivate::QDeclarativeFlickablePrivate()
, vWidth(-1), vHeight(-1), overShoot(true), flicked(false), moving(false), stealMouse(false)
, pressed(false), atXEnd(false), atXBeginning(true), atYEnd(false), atYBeginning(true)
, interactive(true), deceleration(500), maxVelocity(2000), reportedVelocitySmoothing(100)
- , delayedPressEvent(0), delayedPressTarget(0), pressDelay(0), fixupDuration(200)
+ , delayedPressEvent(0), delayedPressTarget(0), pressDelay(0), fixupDuration(600)
, horizontalVelocity(this), verticalVelocity(this), vTime(0), visibleArea(0)
, flickDirection(QDeclarativeFlickable::AutoFlickDirection)
{
@@ -142,12 +142,29 @@ void QDeclarativeFlickablePrivate::init()
QObject::connect(&timeline, SIGNAL(completed()), q, SLOT(movementEnding()));
q->setAcceptedMouseButtons(Qt::LeftButton);
q->setFiltersChildEvents(true);
- QObject::connect(viewport, SIGNAL(xChanged()), q, SIGNAL(positionXChanged()));
- QObject::connect(viewport, SIGNAL(yChanged()), q, SIGNAL(positionYChanged()));
+ QObject::connect(viewport, SIGNAL(xChanged()), q, SIGNAL(contentXChanged()));
+ QObject::connect(viewport, SIGNAL(yChanged()), q, SIGNAL(contentYChanged()));
QObject::connect(q, SIGNAL(heightChanged()), q, SLOT(heightChange()));
QObject::connect(q, SIGNAL(widthChanged()), q, SLOT(widthChange()));
}
+/*
+ Returns the amount to overshoot by given a velocity.
+ Will be roughly in range 0 - size/4
+*/
+qreal QDeclarativeFlickablePrivate::overShootDistance(qreal velocity, qreal size)
+{
+ Q_Q(QDeclarativeFlickable);
+ if (maxVelocity <= 0)
+ return 0.0;
+
+ velocity = qAbs(velocity);
+ if (velocity > maxVelocity)
+ velocity = maxVelocity;
+ qreal dist = size / 4 * velocity / maxVelocity;
+ return dist;
+}
+
void QDeclarativeFlickablePrivate::flickX(qreal velocity)
{
Q_Q(QDeclarativeFlickable);
@@ -156,12 +173,12 @@ void QDeclarativeFlickablePrivate::flickX(qreal velocity)
if (velocity > 0) {
const qreal minX = q->minXExtent();
if (_moveX.value() < minX)
- maxDistance = qAbs(minX -_moveX.value() + (overShoot?30:0));
+ maxDistance = qAbs(minX -_moveX.value() + (overShoot?overShootDistance(velocity,q->width()):0));
flickTargetX = minX;
} else {
const qreal maxX = q->maxXExtent();
if (_moveX.value() > maxX)
- maxDistance = qAbs(maxX - _moveX.value()) + (overShoot?30:0);
+ maxDistance = qAbs(maxX - _moveX.value()) + (overShoot?overShootDistance(velocity,q->width()):0);
flickTargetX = maxX;
}
if (maxDistance > 0) {
@@ -194,12 +211,12 @@ void QDeclarativeFlickablePrivate::flickY(qreal velocity)
if (velocity > 0) {
const qreal minY = q->minYExtent();
if (_moveY.value() < minY)
- maxDistance = qAbs(minY -_moveY.value() + (overShoot?30:0));
+ maxDistance = qAbs(minY -_moveY.value() + (overShoot?overShootDistance(velocity,q->height()):0));
flickTargetY = minY;
} else {
const qreal maxY = q->maxYExtent();
if (_moveY.value() > maxY)
- maxDistance = qAbs(maxY - _moveY.value()) + (overShoot?30:0);
+ maxDistance = qAbs(maxY - _moveY.value()) + (overShoot?overShootDistance(velocity,q->height()):0);
flickTargetY = maxY;
}
if (maxDistance > 0) {
@@ -233,18 +250,24 @@ void QDeclarativeFlickablePrivate::fixupX()
if (_moveX.value() > q->minXExtent() || (q->maxXExtent() > q->minXExtent())) {
timeline.reset(_moveX);
if (_moveX.value() != q->minXExtent()) {
- if (fixupDuration)
- timeline.move(_moveX, q->minXExtent(), QEasingCurve(QEasingCurve::InOutQuad), fixupDuration);
- else
- _moveY.setValue(q->minYExtent());
+ if (fixupDuration) {
+ qreal dist = q->minXExtent() - _moveX;
+ timeline.move(_moveX, q->minXExtent() - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4);
+ timeline.move(_moveX, q->minXExtent(), QEasingCurve(QEasingCurve::OutQuint), 3*fixupDuration/4);
+ } else {
+ _moveX.setValue(q->minXExtent());
+ }
}
//emit flickingChanged();
} else if (_moveX.value() < q->maxXExtent()) {
timeline.reset(_moveX);
- if (fixupDuration)
- timeline.move(_moveX, q->maxXExtent(), QEasingCurve(QEasingCurve::InOutQuad), fixupDuration);
- else
- _moveY.setValue(q->maxYExtent());
+ if (fixupDuration) {
+ qreal dist = q->maxXExtent() - _moveX;
+ timeline.move(_moveX, q->maxXExtent() - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4);
+ timeline.move(_moveX, q->maxXExtent(), QEasingCurve(QEasingCurve::OutQuint), 3*fixupDuration/4);
+ } else {
+ _moveX.setValue(q->maxXExtent());
+ }
//emit flickingChanged();
} else {
flicked = false;
@@ -272,18 +295,24 @@ void QDeclarativeFlickablePrivate::fixupY()
if (_moveY.value() > q->minYExtent() || (q->maxYExtent() > q->minYExtent())) {
timeline.reset(_moveY);
if (_moveY.value() != q->minYExtent()) {
- if (fixupDuration)
- timeline.move(_moveY, q->minYExtent(), QEasingCurve(QEasingCurve::InOutQuad), fixupDuration);
- else
+ if (fixupDuration) {
+ qreal dist = q->minYExtent() - _moveY;
+ timeline.move(_moveY, q->minYExtent() - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4);
+ timeline.move(_moveY, q->minYExtent(), QEasingCurve(QEasingCurve::OutQuint), 3*fixupDuration/4);
+ } else {
_moveY.setValue(q->minYExtent());
+ }
}
//emit flickingChanged();
} else if (_moveY.value() < q->maxYExtent()) {
timeline.reset(_moveY);
- if (fixupDuration)
- timeline.move(_moveY, q->maxYExtent(), QEasingCurve(QEasingCurve::InOutQuad), fixupDuration);
- else
+ if (fixupDuration) {
+ qreal dist = q->maxYExtent() - _moveY;
+ timeline.move(_moveY, q->maxYExtent() - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4);
+ timeline.move(_moveY, q->maxYExtent(), QEasingCurve(QEasingCurve::OutQuint), 3*fixupDuration/4);
+ } else {
_moveY.setValue(q->maxYExtent());
+ }
//emit flickingChanged();
} else {
flicked = false;
@@ -336,6 +365,7 @@ void QDeclarativeFlickablePrivate::updateBeginningEnd()
/*!
\qmlclass Flickable QDeclarativeFlickable
+ \since 4.7
\brief The Flickable item provides a surface that can be "flicked".
\inherits Item
@@ -343,7 +373,7 @@ void QDeclarativeFlickablePrivate::updateBeginningEnd()
\code
Flickable {
- width: 200; height: 200; viewportWidth: image.width; viewportHeight: image.height
+ width: 200; height: 200; contentWidth: image.width; contentHeight: image.height
Image { id: image; source: "bigimage.png" }
}
\endcode
@@ -429,20 +459,20 @@ QDeclarativeFlickable::~QDeclarativeFlickable()
}
/*!
- \qmlproperty int Flickable::viewportX
- \qmlproperty int Flickable::viewportY
+ \qmlproperty int Flickable::contentX
+ \qmlproperty int Flickable::contentY
These properties hold the surface coordinate currently at the top-left
corner of the Flickable. For example, if you flick an image up 100 pixels,
- \c yPosition will be 100.
+ \c contentY will be 100.
*/
-qreal QDeclarativeFlickable::viewportX() const
+qreal QDeclarativeFlickable::contentX() const
{
Q_D(const QDeclarativeFlickable);
return -d->_moveX.value();
}
-void QDeclarativeFlickable::setViewportX(qreal pos)
+void QDeclarativeFlickable::setContentX(qreal pos)
{
Q_D(QDeclarativeFlickable);
pos = qRound(pos);
@@ -454,13 +484,13 @@ void QDeclarativeFlickable::setViewportX(qreal pos)
}
}
-qreal QDeclarativeFlickable::viewportY() const
+qreal QDeclarativeFlickable::contentY() const
{
Q_D(const QDeclarativeFlickable);
return -d->_moveY.value();
}
-void QDeclarativeFlickable::setViewportY(qreal pos)
+void QDeclarativeFlickable::setContentY(qreal pos)
{
Q_D(QDeclarativeFlickable);
pos = qRound(pos);
@@ -506,12 +536,10 @@ void QDeclarativeFlickable::setInteractive(bool interactive)
/*!
\qmlproperty real Flickable::horizontalVelocity
\qmlproperty real Flickable::verticalVelocity
- \qmlproperty real Flickable::reportedVelocitySmoothing
The instantaneous velocity of movement along the x and y axes, in pixels/sec.
The reported velocity is smoothed to avoid erratic output.
- reportedVelocitySmoothing determines how much smoothing is applied.
*/
qreal QDeclarativeFlickable::horizontalVelocity() const
{
@@ -584,8 +612,8 @@ QDeclarativeFlickableVisibleArea *QDeclarativeFlickable::visibleArea()
\list
\o AutoFlickDirection (default) - allows flicking vertically if the
- \e viewportHeight is not equal to the \e height of the Flickable.
- Allows flicking horizontally if the \e viewportWidth is not equal
+ \e contentHeight is not equal to the \e height of the Flickable.
+ Allows flicking horizontally if the \e contentWidth is not equal
to the \e width of the Flickable.
\o HorizontalFlick - allows flicking horizontally.
\o VerticalFlick - allows flicking vertically.
@@ -968,10 +996,10 @@ QDeclarativeListProperty<QDeclarativeItem> QDeclarativeFlickable::flickableChild
/*!
\qmlproperty bool Flickable::overShoot
- This property holds the number of pixels the surface may overshoot the
+ This property holds whether the surface may overshoot the
Flickable's boundaries when flicked.
- If overShoot is non-zero the contents can be flicked beyond the boundary
+ If overShoot is true the contents can be flicked beyond the boundary
of the Flickable before being moved back to the boundary. This provides
the feeling that the edges of the view are soft, rather than a hard
physical boundary.
@@ -992,26 +1020,26 @@ void QDeclarativeFlickable::setOverShoot(bool o)
}
/*!
- \qmlproperty int Flickable::viewportWidth
- \qmlproperty int Flickable::viewportHeight
+ \qmlproperty int Flickable::contentWidth
+ \qmlproperty int Flickable::contentHeight
- The dimensions of the viewport (the surface controlled by Flickable). Typically this
+ 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.
\code
Flickable {
- width: 320; height: 480; viewportWidth: image.width; viewportHeight: image.height
+ width: 320; height: 480; contentWidth: image.width; contentHeight: image.height
Image { id: image; source: "bigimage.png" }
}
\endcode
*/
-qreal QDeclarativeFlickable::viewportWidth() const
+qreal QDeclarativeFlickable::contentWidth() const
{
Q_D(const QDeclarativeFlickable);
return d->vWidth;
}
-void QDeclarativeFlickable::setViewportWidth(qreal w)
+void QDeclarativeFlickable::setContentWidth(qreal w)
{
Q_D(QDeclarativeFlickable);
if (d->vWidth == w)
@@ -1024,7 +1052,7 @@ void QDeclarativeFlickable::setViewportWidth(qreal w)
// Make sure that we're entirely in view.
if (!d->pressed)
d->fixupX();
- emit viewportWidthChanged();
+ emit contentWidthChanged();
d->updateBeginningEnd();
}
@@ -1033,7 +1061,7 @@ void QDeclarativeFlickable::widthChange()
Q_D(QDeclarativeFlickable);
if (d->vWidth < 0) {
d->viewport->setWidth(width());
- emit viewportWidthChanged();
+ emit contentWidthChanged();
}
d->updateBeginningEnd();
}
@@ -1043,18 +1071,18 @@ void QDeclarativeFlickable::heightChange()
Q_D(QDeclarativeFlickable);
if (d->vHeight < 0) {
d->viewport->setHeight(height());
- emit viewportHeightChanged();
+ emit contentHeightChanged();
}
d->updateBeginningEnd();
}
-qreal QDeclarativeFlickable::viewportHeight() const
+qreal QDeclarativeFlickable::contentHeight() const
{
Q_D(const QDeclarativeFlickable);
return d->vHeight;
}
-void QDeclarativeFlickable::setViewportHeight(qreal h)
+void QDeclarativeFlickable::setContentHeight(qreal h)
{
Q_D(QDeclarativeFlickable);
if (d->vHeight == h)
@@ -1067,7 +1095,7 @@ void QDeclarativeFlickable::setViewportHeight(qreal h)
// Make sure that we're entirely in view.
if (!d->pressed)
d->fixupY();
- emit viewportHeightChanged();
+ emit contentHeightChanged();
d->updateBeginningEnd();
}
@@ -1259,22 +1287,6 @@ void QDeclarativeFlickable::setPressDelay(int delay)
emit pressDelayChanged();
}
-qreal QDeclarativeFlickable::reportedVelocitySmoothing() const
-{
- Q_D(const QDeclarativeFlickable);
- return d->reportedVelocitySmoothing;
-}
-
-void QDeclarativeFlickable::setReportedVelocitySmoothing(qreal reportedVelocitySmoothing)
-{
- Q_D(QDeclarativeFlickable);
- Q_ASSERT(reportedVelocitySmoothing >= 0);
- if (reportedVelocitySmoothing == d->reportedVelocitySmoothing)
- return;
- d->reportedVelocitySmoothing = reportedVelocitySmoothing;
- emit reportedVelocitySmoothingChanged(reportedVelocitySmoothing);
-}
-
/*!
\qmlproperty bool Flickable::moving
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p.h
index 19fb2a9..4617688 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeflickable_p.h
@@ -56,14 +56,13 @@ class Q_DECLARATIVE_EXPORT QDeclarativeFlickable : public QDeclarativeItem
{
Q_OBJECT
- Q_PROPERTY(qreal viewportWidth READ viewportWidth WRITE setViewportWidth NOTIFY viewportWidthChanged)
- Q_PROPERTY(qreal viewportHeight READ viewportHeight WRITE setViewportHeight NOTIFY viewportHeightChanged)
- Q_PROPERTY(qreal viewportX READ viewportX WRITE setViewportX NOTIFY positionXChanged)
- Q_PROPERTY(qreal viewportY READ viewportY WRITE setViewportY NOTIFY positionYChanged)
+ Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth NOTIFY contentWidthChanged)
+ Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight NOTIFY contentHeightChanged)
+ Q_PROPERTY(qreal contentX READ contentX WRITE setContentX NOTIFY contentXChanged)
+ Q_PROPERTY(qreal contentY READ contentY WRITE setContentY NOTIFY contentYChanged)
Q_PROPERTY(qreal horizontalVelocity READ horizontalVelocity NOTIFY horizontalVelocityChanged)
Q_PROPERTY(qreal verticalVelocity READ verticalVelocity NOTIFY verticalVelocityChanged)
- Q_PROPERTY(qreal reportedVelocitySmoothing READ reportedVelocitySmoothing WRITE setReportedVelocitySmoothing NOTIFY reportedVelocitySmoothingChanged)
Q_PROPERTY(bool overShoot READ overShoot WRITE setOverShoot NOTIFY overShootChanged)
Q_PROPERTY(qreal maximumFlickVelocity READ maximumFlickVelocity WRITE setMaximumFlickVelocity NOTIFY maximumFlickVelocityChanged)
@@ -98,17 +97,17 @@ public:
bool overShoot() const;
void setOverShoot(bool);
- qreal viewportWidth() const;
- void setViewportWidth(qreal);
+ qreal contentWidth() const;
+ void setContentWidth(qreal);
- qreal viewportHeight() const;
- void setViewportHeight(qreal);
+ qreal contentHeight() const;
+ void setContentHeight(qreal);
- qreal viewportX() const;
- void setViewportX(qreal pos);
+ qreal contentX() const;
+ void setContentX(qreal pos);
- qreal viewportY() const;
- void setViewportY(qreal pos);
+ qreal contentY() const;
+ void setContentY(qreal pos);
bool isMoving() const;
bool isFlicking() const;
@@ -116,9 +115,6 @@ public:
int pressDelay() const;
void setPressDelay(int delay);
- qreal reportedVelocitySmoothing() const;
- void setReportedVelocitySmoothing(qreal);
-
qreal maximumFlickVelocity() const;
void setMaximumFlickVelocity(qreal);
@@ -143,17 +139,16 @@ public:
void setFlickDirection(FlickDirection);
Q_SIGNALS:
- void viewportWidthChanged();
- void viewportHeightChanged();
- void positionXChanged();
- void positionYChanged();
+ void contentWidthChanged();
+ void contentHeightChanged();
+ void contentXChanged();
+ void contentYChanged();
void movingChanged();
void flickingChanged();
void movementStarted();
void movementEnded();
void flickStarted();
void flickEnded();
- void reportedVelocitySmoothingChanged(int);
void horizontalVelocityChanged();
void verticalVelocityChanged();
void isAtBoundaryChanged();
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
index dc3a8a2..ad7a04d 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
@@ -85,6 +85,8 @@ public:
void setRoundedViewportX(qreal x);
void setRoundedViewportY(qreal y);
+ qreal overShootDistance(qreal velocity, qreal size);
+
public:
QDeclarativeItem *viewport;
QDeclarativeTimeLineValueProxy<QDeclarativeFlickablePrivate> _moveX;
@@ -132,8 +134,10 @@ public:
Velocity(QDeclarativeFlickablePrivate *p)
: parent(p) {}
virtual void setValue(qreal v) {
- QDeclarativeTimeLineValue::setValue(v);
- parent->updateVelocity();
+ if (v != value()) {
+ QDeclarativeTimeLineValue::setValue(v);
+ parent->updateVelocity();
+ }
}
QDeclarativeFlickablePrivate *parent;
};
diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp
index b378db2..b43b30b 100644
--- a/src/declarative/graphicsitems/qdeclarativegridview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp
@@ -133,14 +133,14 @@ public:
qreal position() const {
Q_Q(const QDeclarativeGridView);
- return flow == QDeclarativeGridView::LeftToRight ? q->viewportY() : q->viewportX();
+ return flow == QDeclarativeGridView::LeftToRight ? q->contentY() : q->contentX();
}
void setPosition(qreal pos) {
Q_Q(QDeclarativeGridView);
if (flow == QDeclarativeGridView::LeftToRight)
- q->setViewportY(pos);
+ q->setContentY(pos);
else
- q->setViewportX(pos);
+ q->setContentX(pos);
}
int size() const {
Q_Q(const QDeclarativeGridView);
@@ -315,9 +315,9 @@ FxGridItem *QDeclarativeGridViewPrivate::createItem(int modelIndex)
if (QDeclarativeItem *item = model->item(modelIndex, false)) {
listItem = new FxGridItem(item, q);
listItem->index = modelIndex;
+ listItem->item->setZValue(1);
// complete
model->completeItem();
- listItem->item->setZValue(1);
listItem->item->setParent(q->viewport());
unrequestedItems.remove(listItem->item);
}
@@ -458,9 +458,9 @@ void QDeclarativeGridViewPrivate::refill(qreal from, qreal to, bool doBuffer)
}
if (changed) {
if (flow == QDeclarativeGridView::LeftToRight)
- q->setViewportHeight(endPosition() - startPosition());
+ q->setContentHeight(endPosition() - startPosition());
else
- q->setViewportWidth(endPosition() - startPosition());
+ q->setContentWidth(endPosition() - startPosition());
} else if (!doBuffer && buffer && bufferMode != NoBuffer) {
refill(from, to, true);
}
@@ -473,9 +473,9 @@ void QDeclarativeGridViewPrivate::updateGrid()
columns = (int)qMax((flow == QDeclarativeGridView::LeftToRight ? q->width() : q->height()) / colSize(), qreal(1.));
if (isValid()) {
if (flow == QDeclarativeGridView::LeftToRight)
- q->setViewportHeight(endPosition() - startPosition());
+ q->setContentHeight(endPosition() - startPosition());
else
- q->setViewportWidth(endPosition() - startPosition());
+ q->setContentWidth(endPosition() - startPosition());
}
}
@@ -516,10 +516,10 @@ void QDeclarativeGridViewPrivate::layout(bool removed)
updateHighlight();
moveReason = Other;
if (flow == QDeclarativeGridView::LeftToRight) {
- q->setViewportHeight(endPosition() - startPosition());
+ q->setContentHeight(endPosition() - startPosition());
fixupY();
} else {
- q->setViewportWidth(endPosition() - startPosition());
+ q->setContentWidth(endPosition() - startPosition());
fixupX();
}
updateUnrequestedPositions();
@@ -607,11 +607,11 @@ void QDeclarativeGridViewPrivate::createHighlight()
item->setParent(q->viewport());
highlight = new FxGridItem(item, q);
highlightXAnimator = new QDeclarativeEaseFollow(q);
- highlightXAnimator->setTarget(QDeclarativeMetaProperty(highlight->item, QLatin1String("x")));
+ highlightXAnimator->setTarget(QDeclarativeProperty(highlight->item, QLatin1String("x")));
highlightXAnimator->setDuration(150);
highlightXAnimator->setEnabled(autoHighlight);
highlightYAnimator = new QDeclarativeEaseFollow(q);
- highlightYAnimator->setTarget(QDeclarativeMetaProperty(highlight->item, QLatin1String("y")));
+ highlightYAnimator->setTarget(QDeclarativeProperty(highlight->item, QLatin1String("y")));
highlightYAnimator->setDuration(150);
highlightYAnimator->setEnabled(autoHighlight);
changed = true;
@@ -675,6 +675,7 @@ void QDeclarativeGridViewPrivate::updateCurrent(int modelIndex)
/*!
\qmlclass GridView QDeclarativeGridView
+ \since 4.7
\inherits Flickable
\brief The GridView item provides a grid view of items provided by a model.
@@ -1028,10 +1029,10 @@ void QDeclarativeGridView::setFlow(Flow flow)
if (d->flow != flow) {
d->flow = flow;
if (d->flow == LeftToRight) {
- setViewportWidth(-1);
+ setContentWidth(-1);
setFlickDirection(QDeclarativeFlickable::VerticalFlick);
} else {
- setViewportHeight(-1);
+ setContentHeight(-1);
setFlickDirection(QDeclarativeFlickable::HorizontalFlick);
}
d->clear();
diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp
index 338b086..99ab053 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp
@@ -127,7 +127,7 @@ QT_BEGIN_NAMESPACE
QDeclarativeImage::QDeclarativeImage(QDeclarativeItem *parent)
: QDeclarativeImageBase(*(new QDeclarativeImagePrivate), parent)
{
- connect(this, SIGNAL(sourceChanged(QUrl)), this, SLOT(updatePaintedGeometry()));
+ connect(this, SIGNAL(pixmapChanged()), this, SLOT(updatePaintedGeometry()));
}
QDeclarativeImage::QDeclarativeImage(QDeclarativeImagePrivate &dd, QDeclarativeItem *parent)
@@ -139,12 +139,6 @@ QDeclarativeImage::~QDeclarativeImage()
{
}
-void QDeclarativeImage::setSource(const QUrl &url)
-{
- QDeclarativeImageBase::setSource(url);
- updatePaintedGeometry();
-}
-
/*!
\qmlproperty QPixmap Image::pixmap
@@ -268,10 +262,10 @@ void QDeclarativeImage::updatePaintedGeometry()
Q_D(QDeclarativeImage);
if (d->fillMode == PreserveAspectFit) {
- qreal widthScale = width() / qreal(d->pix.width());
- qreal heightScale = height() / qreal(d->pix.height());
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) {
d->paintedWidth = width();
d->paintedHeight = widthScale * qreal(d->pix.height());
diff --git a/src/declarative/graphicsitems/qdeclarativeimage_p.h b/src/declarative/graphicsitems/qdeclarativeimage_p.h
index 5b365e7..fb77ac9 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeimage_p.h
@@ -76,7 +76,6 @@ public:
qreal paintedWidth() const;
qreal paintedHeight() const;
- void setSource(const QUrl &url);
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
Q_SIGNALS:
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp
index c282808..f48c761 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp
@@ -1730,8 +1730,12 @@ void QDeclarativeItem::geometryChanged(const QRectF &newGeometry,
if (d->_anchors)
d->_anchors->d_func()->updateMe();
- if (transformOrigin() != QDeclarativeItem::TopLeft)
- setTransformOriginPoint(d->computeTransformOrigin());
+ if (transformOrigin() != QDeclarativeItem::TopLeft
+ && (newGeometry.width() != oldGeometry.width() || newGeometry.height() != oldGeometry.height())) {
+ QPointF origin = d->computeTransformOrigin();
+ if (transformOriginPoint() != origin)
+ setTransformOriginPoint(origin);
+ }
if (newGeometry.x() != oldGeometry.x())
emit xChanged();
diff --git a/src/declarative/graphicsitems/qdeclarativeitem_p.h b/src/declarative/graphicsitems/qdeclarativeitem_p.h
index 81c5688..4b4917e 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeitem_p.h
@@ -60,8 +60,8 @@
#include "qdeclarativeitemchangelistener_p.h"
#include <private/qpodvector_p.h>
-#include "../util/qdeclarativestate_p.h"
-#include "../util/qdeclarativenullablevalue_p_p.h"
+#include <private/qdeclarativestate_p.h>
+#include <private/qdeclarativenullablevalue_p_p.h>
#include <qdeclarative.h>
#include <qdeclarativecontext.h>
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index bd2f4fc..03303a0 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -203,14 +203,14 @@ public:
qreal position() const {
Q_Q(const QDeclarativeListView);
- return orient == QDeclarativeListView::Vertical ? q->viewportY() : q->viewportX();
+ return orient == QDeclarativeListView::Vertical ? q->contentY() : q->contentX();
}
void setPosition(qreal pos) {
Q_Q(QDeclarativeListView);
if (orient == QDeclarativeListView::Vertical)
- q->setViewportY(pos);
+ q->setContentY(pos);
else
- q->setViewportX(pos);
+ q->setContentX(pos);
}
qreal size() const {
Q_Q(const QDeclarativeListView);
@@ -382,9 +382,9 @@ public:
void updateViewport() {
Q_Q(QDeclarativeListView);
if (orient == QDeclarativeListView::Vertical) {
- q->setViewportHeight(endPosition() - startPosition() + 1);
+ q->setContentHeight(endPosition() - startPosition() + 1);
} else {
- q->setViewportWidth(endPosition() - startPosition() + 1);
+ q->setContentWidth(endPosition() - startPosition() + 1);
}
}
@@ -530,9 +530,9 @@ FxListItem *QDeclarativeListViewPrivate::createItem(int modelIndex)
listItem->attached->m_prevSection = sectionAt(modelIndex-1);
}
}
+ listItem->item->setZValue(1);
// complete
model->completeItem();
- listItem->item->setZValue(1);
listItem->item->setParent(q->viewport());
QDeclarativeItemPrivate *itemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(item));
itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry);
@@ -804,13 +804,13 @@ void QDeclarativeListViewPrivate::createHighlight()
highlight->item->setWidth(currentItem->item->width());
const QLatin1String posProp(orient == QDeclarativeListView::Vertical ? "y" : "x");
highlightPosAnimator = new QDeclarativeEaseFollow(q);
- highlightPosAnimator->setTarget(QDeclarativeMetaProperty(highlight->item, posProp));
+ highlightPosAnimator->setTarget(QDeclarativeProperty(highlight->item, posProp));
highlightPosAnimator->setVelocity(highlightMoveSpeed);
highlightPosAnimator->setEnabled(autoHighlight);
const QLatin1String sizeProp(orient == QDeclarativeListView::Vertical ? "height" : "width");
highlightSizeAnimator = new QDeclarativeEaseFollow(q);
highlightSizeAnimator->setVelocity(highlightResizeSpeed);
- highlightSizeAnimator->setTarget(QDeclarativeMetaProperty(highlight->item, sizeProp));
+ highlightSizeAnimator->setTarget(QDeclarativeProperty(highlight->item, sizeProp));
highlightSizeAnimator->setEnabled(autoHighlight);
changed = true;
}
@@ -1073,7 +1073,7 @@ void QDeclarativeListViewPrivate::fixupY()
qreal pos = currentItem->position() - highlightRangeStart;
timeline.reset(_moveY);
if (fixupDuration)
- timeline.move(_moveY, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration);
+ timeline.move(_moveY, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2);
else
_moveY.setValue(-pos);
vTime = timeline.time();
@@ -1085,7 +1085,7 @@ void QDeclarativeListViewPrivate::fixupY()
if (dist > 0) {
timeline.reset(_moveY);
if (fixupDuration)
- timeline.move(_moveY, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration);
+ timeline.move(_moveY, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2);
else
_moveY.setValue(-pos);
vTime = timeline.time();
@@ -1155,7 +1155,7 @@ void QDeclarativeListViewPrivate::flickX(qreal velocity)
if (FxListItem *item = firstVisibleItem())
maxDistance = qAbs(item->position() + _moveX.value());
} else if (_moveX.value() < minX) {
- maxDistance = qAbs(minX -_moveX.value() + (overShoot?30:0));
+ maxDistance = qAbs(minX -_moveX.value() + (overShoot?overShootDistance(velocity, q->width()):0));
}
if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
flickTargetX = minX;
@@ -1164,7 +1164,7 @@ void QDeclarativeListViewPrivate::flickX(qreal velocity)
if (FxListItem *item = nextVisibleItem())
maxDistance = qAbs(item->position() + _moveX.value());
} else if (_moveX.value() > maxX) {
- maxDistance = qAbs(maxX - _moveX.value()) + (overShoot?30:0);
+ maxDistance = qAbs(maxX - _moveX.value()) + (overShoot?overShootDistance(velocity, q->width()):0);
}
if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
flickTargetX = maxX;
@@ -1196,7 +1196,7 @@ void QDeclarativeListViewPrivate::flickX(qreal velocity)
overshootDist = 0.0;
} else {
flickTargetX = velocity > 0 ? minX : maxX;
- overshootDist = overShoot ? 30 : 0;
+ overshootDist = overShoot ? overShootDistance(v, q->width()) : 0;
}
timeline.reset(_moveX);
timeline.accel(_moveX, v, accel, maxDistance + overshootDist);
@@ -1253,7 +1253,7 @@ void QDeclarativeListViewPrivate::flickY(qreal velocity)
if (FxListItem *item = firstVisibleItem())
maxDistance = qAbs(item->position() + _moveY.value());
} else if (_moveY.value() < minY) {
- maxDistance = qAbs(minY -_moveY.value() + (overShoot?30:0));
+ maxDistance = qAbs(minY -_moveY.value() + (overShoot?overShootDistance(velocity, q->height()):0));
}
if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
flickTargetY = minY;
@@ -1262,7 +1262,7 @@ void QDeclarativeListViewPrivate::flickY(qreal velocity)
if (FxListItem *item = nextVisibleItem())
maxDistance = qAbs(item->position() + _moveY.value());
} else if (_moveY.value() > maxY) {
- maxDistance = qAbs(maxY - _moveY.value()) + (overShoot?30:0);
+ maxDistance = qAbs(maxY - _moveY.value()) + (overShoot?overShootDistance(velocity, q->height()):0);
}
if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
flickTargetY = maxY;
@@ -1294,7 +1294,7 @@ void QDeclarativeListViewPrivate::flickY(qreal velocity)
overshootDist = 0.0;
} else {
flickTargetY = velocity > 0 ? minY : maxY;
- overshootDist = overShoot ? 30 : 0;
+ overshootDist = overShoot ? overShootDistance(v, q->height()) : 0;
}
timeline.reset(_moveY);
timeline.accel(_moveY, v, accel, maxDistance + overshootDist);
@@ -1819,10 +1819,10 @@ void QDeclarativeListView::setOrientation(QDeclarativeListView::Orientation orie
if (d->orient != orientation) {
d->orient = orientation;
if (d->orient == QDeclarativeListView::Vertical) {
- setViewportWidth(-1);
+ setContentWidth(-1);
setFlickDirection(VerticalFlick);
} else {
- setViewportHeight(-1);
+ setContentHeight(-1);
setFlickDirection(HorizontalFlick);
}
d->clear();
@@ -1980,6 +1980,12 @@ void QDeclarativeListView::setHighlightResizeSpeed(qreal speed)
visible item at the time the mouse button is released. This mode is particularly
useful for moving one page at a time.
\endlist
+
+ snapMode does not affect the currentIndex. To update the
+ currentIndex as the list is moved set \e highlightRangeMode
+ to \e StrictlyEnforceRange.
+
+ \sa highlightRangeMode
*/
QDeclarativeListView::SnapMode QDeclarativeListView::snapMode() const
{
diff --git a/src/declarative/graphicsitems/qdeclarativeparticles.cpp b/src/declarative/graphicsitems/qdeclarativeparticles.cpp
index 3c07798..1a58d3f 100644
--- a/src/declarative/graphicsitems/qdeclarativeparticles.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeparticles.cpp
@@ -1260,7 +1260,7 @@ void QDeclarativeParticlesPainter::paint(QPainter *p, const QStyleOptionGraphics
const int myX = x() + parentItem()->x();
const int myY = y() + parentItem()->y();
- QVarLengthArray<QDrawPixmaps::Data, 256> pixmapData;
+ QVarLengthArray<QPainter::Fragment, 256> pixmapData;
pixmapData.resize(d->particles.count());
const QRectF sourceRect = d->image.rect();
@@ -1268,16 +1268,20 @@ void QDeclarativeParticlesPainter::paint(QPainter *p, const QStyleOptionGraphics
qreal halfPHeight = sourceRect.height()/2.;
for (int i = 0; i < d->particles.count(); ++i) {
const QDeclarativeParticle &particle = d->particles.at(i);
- pixmapData[i].point = QPointF(particle.x - myX + halfPWidth, particle.y - myY + halfPHeight);
+ pixmapData[i].x = particle.x - myX + halfPWidth;
+ pixmapData[i].y = particle.y - myY + halfPHeight;
pixmapData[i].opacity = particle.opacity;
//these never change
pixmapData[i].rotation = 0;
pixmapData[i].scaleX = 1;
pixmapData[i].scaleY = 1;
- pixmapData[i].source = sourceRect;
+ pixmapData[i].sourceLeft = sourceRect.left();
+ pixmapData[i].sourceTop = sourceRect.top();
+ pixmapData[i].width = sourceRect.width();
+ pixmapData[i].height = sourceRect.height();
}
- qDrawPixmaps(p, pixmapData.data(), d->particles.count(), d->image);
+ p->drawPixmapFragments(pixmapData.data(), d->particles.count(), d->image);
}
void QDeclarativeParticles::componentComplete()
diff --git a/src/declarative/graphicsitems/qdeclarativepathview.cpp b/src/declarative/graphicsitems/qdeclarativepathview.cpp
index c131f4c..f1b0213 100644
--- a/src/declarative/graphicsitems/qdeclarativepathview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepathview.cpp
@@ -111,7 +111,7 @@ QDeclarativeItem *QDeclarativePathViewPrivate::getItem(int modelIndex)
{
Q_Q(QDeclarativePathView);
requestedIndex = modelIndex;
- QDeclarativeItem *item = model->item(modelIndex);
+ QDeclarativeItem *item = model->item(modelIndex, false);
if (item) {
if (QObject *obj = QDeclarativePathView::qmlAttachedProperties(item))
static_cast<QDeclarativePathViewAttached *>(obj)->setOnPath(true);
@@ -655,6 +655,7 @@ void QDeclarativePathViewPrivate::regenerate()
}
items.append(item);
item->setZValue(i);
+ model->completeItem();
if (currentIndex == index)
item->setFocus(true);
}
@@ -715,6 +716,7 @@ void QDeclarativePathView::refill()
int index = (d->firstIndex + d->items.count())%d->model->count();
QDeclarativeItem *item = d->getItem(index);
item->setZValue(wrapIndex);
+ d->model->completeItem();
if (d->currentIndex == index)
item->setFocus(true);
d->items << item;
@@ -731,6 +733,7 @@ void QDeclarativePathView::refill()
d->firstIndex = d->model->count() - 1;
QDeclarativeItem *item = d->getItem(d->firstIndex);
item->setZValue(d->firstIndex);
+ d->model->completeItem();
if (d->currentIndex == d->firstIndex)
item->setFocus(true);
d->items.prepend(item);
@@ -757,6 +760,7 @@ void QDeclarativePathView::itemsInserted(int modelIndex, int count)
for (int i = 0; i < count; ++i) {
QDeclarativeItem *item = d->getItem(modelIndex + i);
item->setZValue(modelIndex + i);
+ d->model->completeItem();
d->items.insert(modelIndex + i, item);
}
refill();
diff --git a/src/declarative/graphicsitems/qdeclarativepositioners_p.h b/src/declarative/graphicsitems/qdeclarativepositioners_p.h
index ff6fc4b..f38847c 100644
--- a/src/declarative/graphicsitems/qdeclarativepositioners_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepositioners_p.h
@@ -44,7 +44,7 @@
#include "qdeclarativeitem.h"
-#include "../util/qdeclarativestate_p.h"
+#include <private/qdeclarativestate_p.h>
#include <private/qpodvector_p.h>
#include <QtCore/QObject>
diff --git a/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h b/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h
index 92b3f91..fbf9040 100644
--- a/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h
@@ -44,7 +44,7 @@
#include "qdeclarativeborderimage_p.h"
-#include "../util/qdeclarativepixmapcache_p.h"
+#include <private/qdeclarativepixmapcache_p.h>
#include <qdeclarative.h>
#include <QtCore/QString>
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
index 9919904..3382628 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
@@ -704,6 +704,8 @@ bool QDeclarativeTextInput::event(QEvent* ev)
break;
default:
handled = d->control->processEvent(ev);
+ if (ev->type() == QEvent::InputMethod)
+ updateSize();
}
if(!handled)
return QDeclarativePaintedItem::event(ev);
diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
index 2402648..cd72ef9 100644
--- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
+++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
@@ -917,7 +917,7 @@ QDeclarativeVisualDataModel::ReleaseFlags QDeclarativeVisualDataModel::release(Q
if (inPackage) {
emit destroyingPackage(qobject_cast<QDeclarativePackage*>(obj));
} else {
- item->setVisible(false);
+ item->setOpacity(0.0);
static_cast<QGraphicsItem*>(item)->setParentItem(0);
}
stat |= Destroyed;
diff --git a/src/declarative/graphicsitems/qdeclarativewebview.cpp b/src/declarative/graphicsitems/qdeclarativewebview.cpp
index 61b5b56..a2b16ba 100644
--- a/src/declarative/graphicsitems/qdeclarativewebview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativewebview.cpp
@@ -177,6 +177,8 @@ void QDeclarativeWebView::init()
{
Q_D(QDeclarativeWebView);
+ QWebSettings::enablePersistentStorage();
+
setAcceptHoverEvents(true);
setAcceptedMouseButtons(Qt::LeftButton);
setFlag(QGraphicsItem::ItemHasNoContents, false);
@@ -955,6 +957,7 @@ void QDeclarativeWebView::setPage(QWebPage *page)
connect(d->page,SIGNAL(repaintRequested(QRect)),this,SLOT(paintPage(QRect)));
connect(d->page->mainFrame(),SIGNAL(urlChanged(QUrl)),this,SLOT(pageUrlChanged()));
connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(titleChanged(QString)));
+ connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(iconChanged()));
connect(d->page->mainFrame(), SIGNAL(iconChanged()), this, SIGNAL(iconChanged()));
connect(d->page->mainFrame(), SIGNAL(contentsSizeChanged(QSize)), this, SLOT(noteContentsSizeChanged(QSize)));
connect(d->page->mainFrame(), SIGNAL(initialLayoutCompleted()), this, SLOT(initialLayout()));
diff --git a/src/declarative/qml/parser/qdeclarativejs.g b/src/declarative/qml/parser/qdeclarativejs.g
index e1cb5a5..7cf81b2 100644
--- a/src/declarative/qml/parser/qdeclarativejs.g
+++ b/src/declarative/qml/parser/qdeclarativejs.g
@@ -65,6 +65,7 @@
%token T_PUBLIC "public"
%token T_IMPORT "import"
%token T_AS "as"
+%token T_ON "on"
--- feed tokens
%token T_FEED_UI_PROGRAM
@@ -773,6 +774,17 @@ case $rule_number: {
} break;
./
+UiObjectMember: UiQualifiedId T_ON UiQualifiedId UiObjectInitializer ;
+/.
+case $rule_number: {
+ AST::UiObjectBinding *node = makeAstNode<AST::UiObjectBinding> (driver->nodePool(),
+ sym(3).UiQualifiedId, sym(1).UiQualifiedId, sym(4).UiObjectInitializer);
+ node->colonToken = loc(2);
+ node->hasOnToken = true;
+ sym(1).Node = node;
+} break;
+./
+
UiObjectMember: UiQualifiedId T_COLON Block ;
/.case $rule_number:./
@@ -870,8 +882,8 @@ case $rule_number: {
} break;
./
-UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT T_IDENTIFIER T_AUTOMATIC_SEMICOLON ;
-UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT T_IDENTIFIER T_SEMICOLON ;
+UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT JsIdentifier T_AUTOMATIC_SEMICOLON ;
+UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT JsIdentifier T_SEMICOLON ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(4).sval, sym(6).sval);
@@ -885,8 +897,8 @@ case $rule_number: {
} break;
./
-UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER T_AUTOMATIC_SEMICOLON ;
-UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER T_SEMICOLON ;
+UiObjectMember: T_PROPERTY UiPropertyType JsIdentifier T_AUTOMATIC_SEMICOLON ;
+UiObjectMember: T_PROPERTY UiPropertyType JsIdentifier T_SEMICOLON ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval);
@@ -898,8 +910,8 @@ case $rule_number: {
} break;
./
-UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER T_AUTOMATIC_SEMICOLON ;
-UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER T_SEMICOLON ;
+UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType JsIdentifier T_AUTOMATIC_SEMICOLON ;
+UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType JsIdentifier T_SEMICOLON ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval);
@@ -913,8 +925,8 @@ case $rule_number: {
} break;
./
-UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_AUTOMATIC_SEMICOLON ;
-UiObjectMember: T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_SEMICOLON ;
+UiObjectMember: T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_AUTOMATIC_SEMICOLON ;
+UiObjectMember: T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_SEMICOLON ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval,
@@ -928,8 +940,8 @@ case $rule_number: {
} break;
./
-UiObjectMember: T_READONLY T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_AUTOMATIC_SEMICOLON ;
-UiObjectMember: T_READONLY T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_SEMICOLON ;
+UiObjectMember: T_READONLY T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_AUTOMATIC_SEMICOLON ;
+UiObjectMember: T_READONLY T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_SEMICOLON ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
@@ -945,8 +957,8 @@ case $rule_number: {
} break;
./
-UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_AUTOMATIC_SEMICOLON ;
-UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType T_IDENTIFIER T_COLON Expression T_SEMICOLON ;
+UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_AUTOMATIC_SEMICOLON ;
+UiObjectMember: T_DEFAULT T_PROPERTY UiPropertyType JsIdentifier T_COLON Expression T_SEMICOLON ;
/.
case $rule_number: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
@@ -1005,6 +1017,15 @@ case $rule_number: {
}
./
+JsIdentifier: T_ON ;
+/.
+case $rule_number: {
+ QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_READONLY]);
+ sym(1).sval = driver->intern(s.constData(), s.length());
+ break;
+}
+./
+
--------------------------------------------------------------------------------------------------------
-- Expressions
--------------------------------------------------------------------------------------------------------
diff --git a/src/declarative/qml/parser/qdeclarativejsast_p.h b/src/declarative/qml/parser/qdeclarativejsast_p.h
index 0a83fe2..c1945ce 100644
--- a/src/declarative/qml/parser/qdeclarativejsast_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsast_p.h
@@ -2599,11 +2599,17 @@ public:
UiObjectInitializer *initializer)
: qualifiedId(qualifiedId),
qualifiedTypeNameId(qualifiedTypeNameId),
- initializer(initializer)
+ initializer(initializer),
+ hasOnToken(false)
{ kind = K; }
virtual SourceLocation firstSourceLocation() const
- { return qualifiedId->identifierToken; }
+ {
+ if (hasOnToken && qualifiedTypeNameId)
+ return qualifiedTypeNameId->identifierToken;
+
+ return qualifiedId->identifierToken;
+ }
virtual SourceLocation lastSourceLocation() const
{ return initializer->rbraceToken; }
@@ -2615,6 +2621,7 @@ public:
UiQualifiedId *qualifiedTypeNameId;
UiObjectInitializer *initializer;
SourceLocation colonToken;
+ bool hasOnToken;
};
class QML_PARSER_EXPORT UiScriptBinding: public UiObjectMember
diff --git a/src/declarative/qml/parser/qdeclarativejsgrammar.cpp b/src/declarative/qml/parser/qdeclarativejsgrammar.cpp
index aadb432..0677bc5 100644
--- a/src/declarative/qml/parser/qdeclarativejsgrammar.cpp
+++ b/src/declarative/qml/parser/qdeclarativejsgrammar.cpp
@@ -54,581 +54,608 @@ const char *const QDeclarativeJSGrammar::spell [] = {
")", ";", 0, "*", "*=", "string literal", "property", "signal", "readonly", "switch",
"this", "throw", "~", "try", "typeof", "var", "void", "while", "with", "^",
"^=", "null", "true", "false", "const", "debugger", "reserved word", "multiline string literal", "comment", "public",
- "import", "as", 0, 0, 0, 0, 0, 0, 0, 0};
+ "import", "as", "on", 0, 0, 0, 0, 0, 0, 0,
+ 0};
const short QDeclarativeJSGrammar::lhs [] = {
- 100, 100, 100, 100, 100, 100, 101, 107, 107, 110,
- 110, 112, 111, 111, 111, 111, 111, 111, 111, 111,
- 114, 109, 108, 117, 117, 118, 118, 119, 119, 116,
- 105, 105, 105, 105, 105, 105, 105, 125, 125, 125,
- 126, 126, 127, 127, 105, 105, 105, 105, 105, 105,
- 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
- 105, 105, 115, 115, 115, 115, 130, 130, 130, 130,
- 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
- 130, 130, 130, 130, 120, 132, 132, 132, 132, 131,
- 131, 134, 134, 136, 136, 136, 136, 136, 136, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 138, 138, 113, 113, 113, 113, 113, 141, 141, 142,
- 142, 142, 142, 140, 140, 143, 143, 144, 144, 145,
- 145, 145, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 147, 147, 147, 147, 148, 148, 148, 149,
- 149, 149, 149, 150, 150, 150, 150, 150, 150, 150,
- 151, 151, 151, 151, 151, 151, 152, 152, 152, 152,
- 152, 153, 153, 153, 153, 153, 154, 154, 155, 155,
+ 101, 101, 101, 101, 101, 101, 102, 108, 108, 111,
+ 111, 113, 112, 112, 112, 112, 112, 112, 112, 112,
+ 115, 110, 109, 118, 118, 119, 119, 120, 120, 117,
+ 106, 106, 106, 106, 106, 106, 106, 106, 126, 126,
+ 126, 127, 127, 128, 128, 106, 106, 106, 106, 106,
+ 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
+ 106, 106, 106, 116, 116, 116, 116, 116, 131, 131,
+ 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
+ 131, 131, 131, 131, 131, 131, 121, 133, 133, 133,
+ 133, 132, 132, 135, 135, 137, 137, 137, 137, 137,
+ 137, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 139, 139, 114, 114, 114, 114, 114, 142,
+ 142, 143, 143, 143, 143, 141, 141, 144, 144, 145,
+ 145, 146, 146, 146, 147, 147, 147, 147, 147, 147,
+ 147, 147, 147, 147, 148, 148, 148, 148, 149, 149,
+ 149, 150, 150, 150, 150, 151, 151, 151, 151, 151,
+ 151, 151, 152, 152, 152, 152, 152, 152, 153, 153,
+ 153, 153, 153, 154, 154, 154, 154, 154, 155, 155,
156, 156, 157, 157, 158, 158, 159, 159, 160, 160,
161, 161, 162, 162, 163, 163, 164, 164, 165, 165,
- 135, 135, 166, 166, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 103, 103, 168, 168,
- 169, 169, 170, 170, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 121,
- 182, 182, 181, 181, 129, 129, 183, 183, 184, 184,
- 186, 186, 185, 187, 190, 188, 188, 191, 189, 189,
- 122, 123, 123, 124, 124, 171, 171, 171, 171, 171,
- 171, 171, 172, 172, 172, 172, 173, 173, 173, 173,
- 174, 174, 175, 177, 192, 192, 195, 195, 193, 193,
- 196, 194, 176, 176, 176, 178, 178, 179, 179, 179,
- 197, 198, 180, 180, 128, 139, 202, 202, 199, 199,
- 200, 200, 203, 106, 204, 204, 104, 104, 201, 201,
- 133, 133, 205};
+ 166, 166, 136, 136, 167, 167, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 104, 104,
+ 169, 169, 170, 170, 171, 171, 103, 103, 103, 103,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 122, 183, 183, 182, 182, 130, 130, 184, 184,
+ 185, 185, 187, 187, 186, 188, 191, 189, 189, 192,
+ 190, 190, 123, 124, 124, 125, 125, 172, 172, 172,
+ 172, 172, 172, 172, 173, 173, 173, 173, 174, 174,
+ 174, 174, 175, 175, 176, 178, 193, 193, 196, 196,
+ 194, 194, 197, 195, 177, 177, 177, 179, 179, 180,
+ 180, 180, 198, 199, 181, 181, 129, 140, 203, 203,
+ 200, 200, 201, 201, 204, 107, 205, 205, 105, 105,
+ 202, 202, 134, 134, 206};
const short QDeclarativeJSGrammar::rhs [] = {
2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
2, 1, 2, 2, 3, 3, 5, 5, 4, 4,
2, 0, 1, 1, 2, 1, 3, 2, 3, 2,
- 1, 5, 4, 3, 3, 3, 3, 1, 1, 1,
- 0, 1, 2, 4, 6, 6, 3, 3, 7, 7,
- 4, 4, 5, 5, 6, 6, 7, 7, 7, 7,
+ 1, 5, 4, 4, 3, 3, 3, 3, 1, 1,
+ 1, 0, 1, 2, 4, 6, 6, 3, 3, 7,
+ 7, 4, 4, 5, 5, 6, 6, 7, 7, 7,
+ 7, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 3, 4, 5, 3, 4, 3, 1, 1, 2, 3,
+ 4, 1, 2, 3, 5, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 3, 3, 4,
- 5, 3, 4, 3, 1, 1, 2, 3, 4, 1,
- 2, 3, 5, 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, 4, 3, 5, 1, 2, 4,
- 4, 4, 3, 0, 1, 1, 3, 1, 1, 1,
- 2, 2, 1, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 3, 3, 3, 1, 3, 3, 1,
- 3, 3, 3, 1, 3, 3, 3, 3, 3, 3,
- 1, 3, 3, 3, 3, 3, 1, 3, 3, 3,
- 3, 1, 3, 3, 3, 3, 1, 3, 1, 3,
+ 1, 1, 1, 1, 1, 1, 4, 3, 5, 1,
+ 2, 4, 4, 4, 3, 0, 1, 1, 3, 1,
+ 1, 1, 2, 2, 1, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 1, 3, 3, 3, 1, 3,
+ 3, 1, 3, 3, 3, 1, 3, 3, 3, 3,
+ 3, 3, 1, 3, 3, 3, 3, 3, 1, 3,
+ 3, 3, 3, 1, 3, 3, 3, 3, 1, 3,
1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
- 1, 3, 1, 3, 1, 3, 1, 5, 1, 5,
- 1, 3, 1, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 0, 1,
- 1, 3, 0, 1, 1, 1, 1, 1, 1, 1,
+ 1, 3, 1, 3, 1, 3, 1, 3, 1, 5,
+ 1, 5, 1, 3, 1, 3, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
- 1, 2, 0, 1, 3, 3, 1, 1, 1, 3,
- 1, 3, 2, 2, 2, 0, 1, 2, 0, 1,
- 1, 2, 2, 7, 5, 7, 7, 5, 9, 10,
- 7, 8, 2, 2, 3, 3, 2, 2, 3, 3,
- 3, 3, 5, 5, 3, 5, 1, 2, 0, 1,
- 4, 3, 3, 3, 3, 3, 3, 3, 3, 4,
- 5, 2, 2, 2, 8, 8, 1, 3, 0, 1,
- 0, 1, 1, 1, 1, 2, 1, 1, 0, 1,
- 0, 1, 2};
+ 0, 1, 1, 3, 0, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 3, 1, 2, 0, 1, 3, 3, 1, 1,
+ 1, 3, 1, 3, 2, 2, 2, 0, 1, 2,
+ 0, 1, 1, 2, 2, 7, 5, 7, 7, 5,
+ 9, 10, 7, 8, 2, 2, 3, 3, 2, 2,
+ 3, 3, 3, 3, 5, 5, 3, 5, 1, 2,
+ 0, 1, 4, 3, 3, 3, 3, 3, 3, 3,
+ 3, 4, 5, 2, 2, 2, 8, 8, 1, 3,
+ 0, 1, 0, 1, 1, 1, 1, 2, 1, 1,
+ 0, 1, 0, 1, 2};
const short QDeclarativeJSGrammar::action_default [] = {
- 0, 0, 0, 0, 0, 0, 22, 0, 170, 237,
- 201, 209, 205, 149, 221, 197, 3, 134, 68, 150,
- 213, 217, 138, 167, 148, 153, 133, 187, 174, 0,
- 75, 76, 71, 339, 63, 341, 0, 0, 0, 0,
- 73, 0, 0, 69, 72, 0, 0, 64, 66, 65,
- 74, 67, 0, 70, 0, 0, 163, 0, 0, 150,
- 169, 152, 151, 0, 0, 0, 165, 166, 164, 168,
- 0, 198, 0, 0, 0, 0, 188, 0, 0, 0,
- 0, 0, 0, 178, 0, 0, 0, 172, 173, 171,
- 176, 180, 179, 177, 175, 190, 189, 191, 0, 206,
- 0, 202, 0, 0, 144, 131, 143, 132, 100, 101,
- 102, 127, 103, 128, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 129, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 130, 0,
- 0, 142, 238, 145, 0, 146, 0, 147, 141, 0,
- 234, 227, 225, 232, 233, 231, 230, 236, 229, 228,
- 226, 235, 222, 0, 210, 0, 0, 214, 0, 0,
- 218, 0, 0, 144, 136, 0, 135, 0, 140, 154,
- 0, 340, 329, 330, 0, 327, 0, 328, 0, 331,
- 245, 252, 251, 259, 247, 0, 248, 332, 0, 338,
- 249, 250, 255, 253, 335, 333, 337, 256, 0, 267,
- 0, 0, 0, 0, 339, 63, 0, 341, 64, 239,
- 281, 65, 0, 0, 0, 268, 0, 0, 257, 258,
- 0, 246, 254, 282, 283, 326, 336, 0, 297, 298,
- 299, 300, 0, 293, 294, 295, 296, 323, 324, 0,
- 0, 0, 0, 0, 286, 287, 243, 241, 203, 211,
- 207, 223, 199, 244, 0, 150, 215, 219, 192, 181,
- 0, 0, 200, 0, 0, 0, 0, 193, 0, 0,
- 0, 0, 0, 185, 183, 186, 184, 182, 195, 194,
- 196, 0, 208, 0, 204, 0, 242, 150, 0, 224,
- 239, 240, 0, 239, 0, 0, 289, 0, 0, 0,
- 291, 0, 212, 0, 0, 216, 0, 0, 220, 279,
- 0, 271, 280, 274, 0, 278, 0, 239, 272, 0,
- 239, 0, 0, 290, 0, 0, 0, 292, 340, 329,
- 0, 0, 331, 0, 325, 0, 315, 0, 0, 0,
- 285, 0, 284, 0, 342, 0, 99, 261, 264, 0,
- 100, 267, 103, 128, 105, 106, 71, 110, 111, 63,
- 112, 115, 69, 72, 64, 239, 65, 74, 118, 67,
- 120, 70, 122, 123, 268, 125, 126, 130, 0, 92,
- 0, 0, 94, 98, 96, 83, 95, 97, 0, 93,
- 82, 262, 260, 138, 139, 144, 0, 137, 0, 314,
- 0, 301, 302, 0, 313, 0, 0, 0, 304, 309,
- 307, 310, 0, 0, 308, 309, 0, 305, 0, 306,
- 263, 312, 0, 263, 311, 0, 316, 317, 0, 263,
- 318, 319, 0, 0, 320, 0, 0, 0, 321, 322,
- 156, 155, 0, 0, 0, 288, 0, 0, 0, 303,
- 276, 269, 0, 277, 273, 0, 275, 265, 0, 266,
- 270, 86, 0, 0, 90, 77, 0, 79, 88, 0,
- 80, 89, 91, 81, 87, 78, 0, 84, 160, 158,
- 162, 159, 157, 161, 6, 334, 4, 2, 61, 85,
- 0, 0, 64, 66, 65, 31, 5, 0, 62, 0,
- 40, 39, 38, 0, 0, 53, 0, 54, 0, 59,
- 60, 0, 40, 0, 0, 0, 0, 0, 49, 50,
- 0, 51, 0, 52, 0, 55, 56, 0, 0, 0,
- 0, 0, 57, 58, 0, 47, 41, 48, 42, 0,
- 0, 0, 0, 44, 0, 45, 46, 43, 0, 0,
- 30, 34, 35, 36, 37, 138, 263, 0, 0, 100,
- 267, 103, 128, 105, 106, 71, 110, 111, 63, 112,
- 115, 69, 72, 64, 239, 65, 74, 118, 67, 120,
- 70, 122, 123, 268, 125, 126, 130, 138, 0, 26,
- 0, 0, 32, 27, 33, 28, 24, 0, 29, 25,
- 8, 0, 10, 0, 9, 0, 1, 21, 12, 0,
- 13, 0, 14, 0, 19, 20, 0, 15, 16, 0,
- 17, 18, 11, 23, 7, 343};
+ 0, 0, 0, 0, 0, 0, 22, 0, 172, 239,
+ 203, 211, 207, 151, 223, 199, 3, 136, 70, 152,
+ 215, 219, 140, 169, 150, 155, 135, 189, 176, 0,
+ 77, 78, 73, 341, 64, 343, 0, 0, 0, 0,
+ 75, 0, 0, 71, 74, 68, 0, 0, 65, 67,
+ 66, 76, 69, 0, 72, 0, 0, 165, 0, 0,
+ 152, 171, 154, 153, 0, 0, 0, 167, 168, 166,
+ 170, 0, 200, 0, 0, 0, 0, 190, 0, 0,
+ 0, 0, 0, 0, 180, 0, 0, 0, 174, 175,
+ 173, 178, 182, 181, 179, 177, 192, 191, 193, 0,
+ 208, 0, 204, 0, 0, 146, 133, 145, 134, 102,
+ 103, 104, 129, 105, 130, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 131, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 132,
+ 0, 0, 144, 240, 147, 0, 148, 0, 149, 143,
+ 0, 236, 229, 227, 234, 235, 233, 232, 238, 231,
+ 230, 228, 237, 224, 0, 212, 0, 0, 216, 0,
+ 0, 220, 0, 0, 146, 138, 0, 137, 0, 142,
+ 156, 0, 342, 331, 332, 0, 329, 0, 330, 0,
+ 333, 247, 254, 253, 261, 249, 0, 250, 334, 0,
+ 340, 251, 252, 257, 255, 337, 335, 339, 258, 0,
+ 269, 0, 0, 0, 0, 341, 64, 0, 343, 65,
+ 241, 283, 66, 0, 0, 0, 270, 0, 0, 259,
+ 260, 0, 248, 256, 284, 285, 328, 338, 0, 299,
+ 300, 301, 302, 0, 295, 296, 297, 298, 325, 326,
+ 0, 0, 0, 0, 0, 288, 289, 245, 243, 205,
+ 213, 209, 225, 201, 246, 0, 152, 217, 221, 194,
+ 183, 0, 0, 202, 0, 0, 0, 0, 195, 0,
+ 0, 0, 0, 0, 187, 185, 188, 186, 184, 197,
+ 196, 198, 0, 210, 0, 206, 0, 244, 152, 0,
+ 226, 241, 242, 0, 241, 0, 0, 291, 0, 0,
+ 0, 293, 0, 214, 0, 0, 218, 0, 0, 222,
+ 281, 0, 273, 282, 276, 0, 280, 0, 241, 274,
+ 0, 241, 0, 0, 292, 0, 0, 0, 294, 342,
+ 331, 0, 0, 333, 0, 327, 0, 317, 0, 0,
+ 0, 287, 0, 286, 0, 344, 0, 101, 263, 266,
+ 0, 102, 269, 105, 130, 107, 108, 73, 112, 113,
+ 64, 114, 117, 71, 74, 65, 241, 66, 76, 120,
+ 69, 122, 72, 124, 125, 270, 127, 128, 132, 0,
+ 94, 0, 0, 96, 100, 98, 85, 97, 99, 0,
+ 95, 84, 264, 262, 140, 141, 146, 0, 139, 0,
+ 316, 0, 303, 304, 0, 315, 0, 0, 0, 306,
+ 311, 309, 312, 0, 0, 310, 311, 0, 307, 0,
+ 308, 265, 314, 0, 265, 313, 0, 318, 319, 0,
+ 265, 320, 321, 0, 0, 322, 0, 0, 0, 323,
+ 324, 158, 157, 0, 0, 0, 290, 0, 0, 0,
+ 305, 278, 271, 0, 279, 275, 0, 277, 267, 0,
+ 268, 272, 88, 0, 0, 92, 79, 0, 81, 90,
+ 0, 82, 91, 93, 83, 89, 80, 0, 86, 162,
+ 160, 164, 161, 159, 163, 6, 336, 4, 2, 62,
+ 87, 0, 0, 65, 67, 66, 31, 5, 0, 63,
+ 0, 41, 40, 39, 0, 0, 54, 0, 55, 0,
+ 60, 61, 0, 41, 0, 0, 0, 0, 0, 50,
+ 51, 0, 52, 0, 53, 0, 56, 57, 0, 0,
+ 0, 0, 0, 58, 59, 0, 48, 42, 49, 43,
+ 0, 0, 0, 0, 45, 0, 46, 47, 44, 0,
+ 0, 0, 30, 35, 36, 37, 38, 140, 265, 0,
+ 0, 102, 269, 105, 130, 107, 108, 73, 112, 113,
+ 64, 114, 117, 71, 74, 65, 241, 66, 76, 120,
+ 69, 122, 72, 124, 125, 270, 127, 128, 132, 140,
+ 0, 26, 0, 0, 32, 27, 33, 28, 24, 0,
+ 29, 25, 0, 34, 8, 0, 10, 0, 9, 0,
+ 1, 21, 12, 0, 13, 0, 14, 0, 19, 20,
+ 0, 15, 16, 0, 17, 18, 11, 23, 7, 345};
const short QDeclarativeJSGrammar::goto_default [] = {
- 7, 616, 206, 195, 204, 506, 494, 615, 634, 610,
- 614, 612, 617, 22, 613, 18, 505, 607, 598, 560,
- 507, 190, 194, 196, 200, 523, 549, 548, 199, 231,
- 26, 473, 472, 355, 354, 9, 353, 356, 106, 17,
- 144, 24, 13, 143, 19, 25, 56, 23, 8, 28,
- 27, 268, 15, 262, 10, 258, 12, 260, 11, 259,
- 20, 266, 21, 267, 14, 261, 257, 298, 410, 263,
- 264, 201, 192, 191, 203, 232, 202, 207, 228, 229,
- 193, 359, 358, 230, 462, 461, 320, 321, 464, 323,
- 463, 322, 418, 422, 425, 421, 420, 440, 441, 184,
- 198, 180, 183, 197, 205, 0};
+ 7, 620, 207, 196, 205, 507, 495, 619, 638, 614,
+ 618, 616, 621, 22, 617, 18, 506, 609, 600, 562,
+ 508, 191, 195, 197, 201, 524, 550, 549, 200, 232,
+ 26, 474, 473, 356, 355, 9, 354, 357, 107, 17,
+ 145, 24, 13, 144, 19, 25, 57, 23, 8, 28,
+ 27, 269, 15, 263, 10, 259, 12, 261, 11, 260,
+ 20, 267, 21, 268, 14, 262, 258, 299, 411, 264,
+ 265, 202, 193, 192, 204, 233, 203, 208, 229, 230,
+ 194, 360, 359, 231, 463, 462, 321, 322, 465, 324,
+ 464, 323, 419, 423, 426, 422, 421, 441, 442, 185,
+ 199, 181, 184, 198, 206, 0};
const short QDeclarativeJSGrammar::action_index [] = {
- 439, 1109, 2228, 2228, 2132, 814, -74, 18, 147, -100,
- 31, -17, -49, 232, -100, 318, 85, -100, -100, 554,
- 33, 94, 331, 215, -100, -100, -100, 448, 231, 1109,
- -100, -100, -100, 320, -100, 1940, 1472, 1109, 1109, 1109,
- -100, 724, 1109, -100, -100, 1109, 1109, -100, -100, -100,
- -100, -100, 1109, -100, 1109, 1109, -100, 1109, 1109, 129,
- 157, -100, -100, 1109, 1109, 1109, -100, -100, -100, 200,
- 1109, 293, 1109, 1109, 1109, 1109, 466, 1109, 1109, 1109,
- 1109, 1109, 1109, 179, 1109, 1109, 1109, 119, 125, 95,
- 188, 198, 184, 203, 178, 567, 567, 484, 1109, -5,
- 1109, 67, 1844, 1109, 1109, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, -100, -100, -100, -100, -100, -100, 110,
- 1109, -100, -100, 70, 61, -100, 1109, -100, -100, 1109,
- -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, 1109, 55, 1109, 1109, 73, 63, 1109,
- -100, 1844, 1109, 1109, -100, 141, -100, 41, -100, -100,
- 87, -100, 255, 80, 78, -100, 287, -100, 83, 2228,
- -100, -100, -100, -100, -100, 225, -100, -100, 52, -100,
- -100, -100, -100, -100, -100, 2228, -100, -100, 420, -100,
- 408, 113, 2132, 50, 330, 65, 46, 2420, 72, 1109,
- -100, 74, 75, 1109, 77, -100, 53, 56, -100, -100,
- 323, -100, -100, -100, -100, -100, -100, 96, -100, -100,
- -100, -100, 99, -100, -100, -100, -100, -100, -100, 60,
- 47, 1109, 118, 93, -100, -100, 1291, -100, 79, 66,
- 64, -100, 413, 76, 51, 664, 89, 97, 393, 183,
- 337, 1109, 413, 1109, 1109, 1109, 1109, 411, 1109, 1109,
- 1109, 1109, 1109, 252, 272, 212, 217, 221, 490, 490,
- 383, 1109, 64, 1109, 84, 1109, -100, 536, 1109, -100,
- 1109, 69, 68, 1109, 44, 2132, -100, 1109, 124, 2132,
- -100, 1109, 54, 1109, 1109, 71, 88, 1109, -100, 82,
- 122, 154, -100, -100, 1109, -100, 343, 1109, -100, 81,
- 1109, 90, 2132, -100, 1109, 112, 2132, -100, 86, 333,
- -39, -10, 2228, -33, -100, 2132, -100, 1109, 246, 2132,
- 4, 2132, -100, 10, 16, -21, -100, -100, 2132, -26,
- 480, 19, 462, 128, 1109, 2132, 6, -9, 400, 8,
- -22, 840, -3, -6, -100, 1202, -100, -7, -28, 5,
- 1109, 2, -23, 1109, 0, 1109, -34, -30, 1109, -100,
- 2036, 21, -100, -100, -100, -100, -100, -100, 1109, -100,
- -100, -100, -100, 209, -100, 1109, 40, -100, 2132, -100,
- 101, -100, -100, 2132, -100, 1109, 120, 43, -100, 62,
- -100, 59, 109, 1109, -100, 57, 58, -100, 39, -100,
- 2132, -100, 117, 2132, -100, 199, -100, -100, 107, 2132,
- 34, -100, 24, 11, -100, 346, -19, 14, -100, -100,
- -100, -100, 1109, 133, 2132, -100, 1109, 126, 2132, -100,
- 20, -100, 173, -100, -100, 1109, -100, -100, 303, -100,
- -100, -100, 100, 1656, -100, -100, 1564, -100, -100, 1748,
- -100, -100, -100, -100, -100, -100, 131, -100, -100, -100,
- -100, -100, -100, -100, -100, 2228, -100, -100, -100, 158,
- -20, 752, 165, -16, 22, -100, -100, 98, -100, 189,
- -100, -100, -100, 28, 170, -100, 1109, -100, 230, -100,
- -100, 247, 1, 13, 238, 37, -24, 106, -100, -100,
- 273, -100, 1109, -100, 265, -100, -100, 242, -4, 12,
- 1109, 241, -100, -100, 234, -100, 245, -100, 3, 9,
- 311, 190, 316, -100, 134, -100, -100, -100, 1380, 1020,
- -100, -100, -100, -100, -100, 359, 2324, 1472, 15, 444,
- 38, 394, 138, 1109, 2132, 36, 17, 397, 42, 23,
- 840, 32, 29, -100, 1202, -100, 26, 35, 48, 1109,
- 45, 25, 1109, 49, 1109, 27, 30, 314, 132, -100,
- 7, 752, -100, -100, -100, -100, -100, 930, -100, -100,
- -100, 752, -100, 253, -87, 617, -100, -100, 102, 290,
- -100, 191, -100, 140, -100, -100, 275, -100, -100, 91,
- -100, -100, -100, -100, -100, -100,
+ 314, 1273, 2404, 2404, 2307, 1001, 58, 98, 78, -101,
+ 95, 56, 4, 236, -101, 296, 86, -101, -101, 545,
+ 97, 115, 162, 197, -101, -101, -101, 447, 192, 1273,
+ -101, -101, -101, 369, -101, 2113, 1919, 1273, 1273, 1273,
+ -101, 732, 1273, -101, -101, -101, 1273, 1273, -101, -101,
+ -101, -101, -101, 1273, -101, 1273, 1273, -101, 1273, 1273,
+ 81, 195, -101, -101, 1273, 1273, 1273, -101, -101, -101,
+ 185, 1273, 283, 1273, 1273, 1273, 1273, 447, 1273, 1273,
+ 1273, 1273, 1273, 1273, 297, 1273, 1273, 1273, 107, 85,
+ 116, 297, 297, 297, 297, 191, 447, 447, 447, 1273,
+ 74, 1273, 102, 2016, 1273, 1273, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ 112, 1273, -101, -101, 92, 61, -101, 1273, -101, -101,
+ 1273, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, 1273, 36, 1273, 1273, 65, 62,
+ 1273, -101, 2016, 1273, 1273, -101, 127, -101, 42, -101,
+ -101, 57, -101, 294, 60, 35, -101, 259, -101, 32,
+ 2404, -101, -101, -101, -101, -101, 200, -101, -101, 33,
+ -101, -101, -101, -101, -101, -101, 2404, -101, -101, 436,
+ -101, 433, 100, 2307, 34, 369, 67, 45, 2598, 71,
+ 1273, -101, 72, 51, 1273, 59, -101, 54, 55, -101,
+ -101, 324, -101, -101, -101, -101, -101, -101, 88, -101,
+ -101, -101, -101, 76, -101, -101, -101, -101, -101, -101,
+ 5, 49, 1273, 104, 84, -101, -101, 1457, -101, 70,
+ 41, 1, -101, 287, 68, 46, 643, 73, 77, 364,
+ 297, 369, 1273, 238, 1273, 1273, 1273, 1273, 341, 1273,
+ 1273, 1273, 1273, 1273, 297, 175, 167, 161, 176, 348,
+ 315, 331, 1273, -13, 1273, 63, 1273, -101, 545, 1273,
+ -101, 1273, 64, 40, 1273, 2, 2307, -101, 1273, 152,
+ 2307, -101, 1273, 69, 1273, 1273, 75, 79, 1273, -101,
+ 44, 149, 66, -101, -101, 1273, -101, 369, 1273, -101,
+ 52, 1273, -54, 2307, -101, 1273, 151, 2307, -101, -29,
+ 369, -41, -11, 2404, -46, -101, 2307, -101, 1273, 131,
+ 2307, -5, 2307, -101, 8, 13, -55, -101, -101, 2307,
+ -51, 360, -2, 352, 119, 1273, 2307, 39, -19, 366,
+ 3, -24, 910, 6, 7, -101, 1367, -101, 11, -16,
+ -4, 1273, -6, -31, 1273, 9, 1273, -12, 17, 1273,
+ -101, 2210, 37, -101, -101, -101, -101, -101, -101, 1273,
+ -101, -101, -101, -101, 258, -101, 1273, -15, -101, 2307,
+ -101, 117, -101, -101, 2307, -101, 1273, 106, 16, -101,
+ 38, -101, 135, 96, 1273, -101, 135, 43, -101, 18,
+ -101, 2307, -101, 101, 2307, -101, 179, -101, -101, 99,
+ 2307, 31, -101, -7, -8, -101, 369, -34, -1, -101,
+ -101, -101, -101, 1273, 124, 2307, -101, 1273, 122, 2307,
+ -101, 25, -101, 207, -101, -101, 1273, -101, -101, 290,
+ -101, -101, -101, 114, 1733, -101, -101, 1826, -101, -101,
+ 1550, -101, -101, -101, -101, -101, -101, 103, -101, -101,
+ -101, -101, -101, -101, -101, -101, 2404, -101, -101, -101,
+ 221, -43, 704, 164, -26, 12, -101, -101, 188, -101,
+ 196, -101, -101, -101, 369, 183, -101, 1273, -101, 165,
+ -101, -101, 170, 0, 369, 160, 10, 369, 113, -101,
+ -101, 215, -101, 1273, -101, 225, -101, -101, 203, 369,
+ 28, 1273, 229, -101, -101, 202, -101, 218, -101, 30,
+ -21, 369, 199, 278, -101, 110, -101, -101, -101, 1640,
+ 1092, 583, -101, -101, -101, -101, -101, 284, 2501, 1919,
+ 14, 388, 29, 424, 93, 1273, 2307, 39, -9, 338,
+ 21, -3, 821, 24, 23, -101, 1367, -101, 48, 20,
+ 47, 1273, 50, 26, 1273, 53, 1273, 27, 22, 264,
+ 120, -101, 15, 813, -101, -101, -101, -101, -101, 1183,
+ -101, -101, 19, -101, -101, 498, -101, 249, -82, 902,
+ -101, -101, 118, 369, -101, 204, -101, 80, -101, -101,
+ 369, -101, -101, 82, -101, -101, -101, -101, -101, -101,
- -106, 12, -87, 18, 17, 212, -106, -106, -106, -106,
- -106, -106, -106, -106, -106, -106, -106, -106, -106, -53,
- -106, -106, -106, -106, -106, -106, -106, -106, -106, 162,
- -106, -106, -106, -4, -106, -106, -11, 24, 75, 76,
- -106, 83, 55, -106, -106, 157, 158, -106, -106, -106,
- -106, -106, 150, -106, 172, 176, -106, 168, 167, -106,
- -106, -106, -106, 173, 154, 115, -106, -106, -106, -106,
- 147, -106, 121, 113, 112, 125, -106, 128, 143, 146,
- 140, 139, 136, -106, 122, 138, 130, -106, -106, -106,
- -106, -106, -106, -106, -106, -106, -106, -106, 149, -106,
- 153, -106, 110, 82, 46, -106, -106, -106, -106, -106,
- -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, 17, -83, 19, 24, 228, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -49,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, 101,
+ -106, -106, -106, 2, -106, -106, -2, 29, 107, 166,
+ -106, 204, 183, -106, -106, -106, 174, 169, -106, -106,
+ -106, -106, -106, 145, -106, 141, 137, -106, 152, 161,
+ -106, -106, -106, -106, 163, 158, 157, -106, -106, -106,
+ -106, 132, -106, 142, 138, 187, 178, -106, 167, 181,
+ 81, 82, 85, 83, -106, 93, 114, 96, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, 170,
+ -106, 74, -106, 109, 80, 51, -106, -106, -106, -106,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- 35, -106, -106, -106, -106, -106, 37, -106, -106, 45,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, -106, -106, 92, -106, 88, 58, -106, -106, 51,
- -106, 209, 72, 78, -106, -106, -106, -106, -106, -106,
- -106, -106, 27, -106, -106, -106, 63, -106, -106, -106,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, -106, -106, -106, -106, 50, -106, -106, 28, -106,
- 29, -106, 47, -106, 33, -106, -106, 66, -106, 73,
- -106, -106, -106, 81, 53, -106, -106, -106, -106, -106,
- -13, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, 25, -106, -106, -106, -106, -106, 41, -106, -106,
+ 50, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, 98, -106, 104, 43, -106, -106,
+ 42, -106, 221, 64, 117, -106, -106, -106, -106, -106,
+ -106, -106, -106, 54, -106, -106, -106, 55, -106, -106,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, 9, -106, -106, -106, -106, 111, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, 47, -106, -106, 38,
+ -106, 33, -106, 92, -106, 73, -106, -106, 88, -106,
+ 86, -106, -106, -106, 94, 23, -106, -106, -106, -106,
+ -106, -11, -106, -106, -106, -106, -106, -106, -106, -106,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- 3, 186, -106, 220, 228, 234, 204, -106, 90, 91,
- 94, 97, 93, -106, -106, -106, -106, -106, -106, -106,
- -106, 210, -106, 187, -106, 214, -106, -106, 208, -106,
- 207, -106, -106, 155, -106, 8, -106, 4, -106, -1,
- -106, 217, -106, 177, 185, -106, -106, 184, -106, -106,
- -106, -106, -106, -106, 183, -106, 194, 105, -106, -106,
- 99, -106, 71, -106, 74, -106, 65, -106, -106, 114,
- -106, -106, -55, -106, -106, 64, -106, 44, -106, 30,
- -106, 31, -106, -106, -106, -106, -106, -106, 57, -106,
- 36, -106, 40, -106, 70, 59, -106, -106, 42, -106,
- -106, 104, -106, -106, -106, 38, -106, -106, -106, -106,
- 79, -106, 69, 108, -106, 84, -106, -106, 56, -106,
- 68, -106, -106, -106, -106, -106, -106, -106, 52, -106,
- -106, -106, -106, -106, -106, 109, -106, -106, 77, -106,
- -106, -106, -106, 86, -106, 80, -106, -106, -106, -106,
- -106, -59, -106, 43, -106, -63, -106, -106, -106, -106,
- 98, -106, -106, 95, -106, -106, -106, -106, -106, 60,
- -34, -106, -106, 32, -106, 41, -106, 39, -106, -106,
- -106, -106, 49, -106, 61, -106, 62, -106, 48, -106,
- -106, -106, -106, -106, -106, 23, -106, -106, 96, -106,
- -106, -106, -106, 34, -106, -106, 133, -106, -106, 54,
+ -106, -106, 22, -106, -106, -106, -106, 105, -106, -106,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, -106, -106, -106, -106, 67, -106, -106, -106, -106,
- -106, 22, -106, -106, -106, -106, -106, -106, -106, -22,
- -106, -106, -106, -106, -106, -106, 2, -106, -106, -106,
- -106, -106, -106, -106, -19, -106, -106, -106, -106, -106,
- -106, -106, 100, -106, -106, -106, -106, -21, -106, -106,
- -3, -106, -106, -106, -106, -106, 13, -106, -106, -106,
- 11, 14, 10, -106, -106, -106, -106, -106, 279, 283,
- -106, -106, -106, -106, -106, -106, 19, 273, 15, 16,
- -106, 21, -106, 224, 6, -106, -106, 25, -106, -106,
- 85, -106, -106, -106, 26, -106, -106, -106, -106, 20,
- -106, 7, 87, -106, 107, -106, -106, -106, -106, -106,
- -106, 317, -106, -106, -106, -106, -106, 277, -106, -106,
- -106, 0, -106, -106, -2, 271, -106, -106, -106, 1,
- -106, -106, -106, -106, -106, -106, 5, -106, -106, -106,
- -106, -106, -106, -106, -106, -106};
+ -106, 7, 235, -106, 249, 219, 216, 222, -106, 124,
+ 125, 123, 122, 116, -106, -106, -106, -106, -106, -106,
+ -106, -106, 191, -106, 232, -106, 225, -106, -106, 231,
+ -106, 156, -106, -106, 130, -106, 91, -106, 5, -106,
+ 8, -106, 233, -106, 200, 189, -106, -106, 198, -106,
+ -106, -106, -106, -106, -106, 245, -106, 108, 95, -106,
+ -106, 298, -106, 195, -106, 89, -106, 71, -106, -106,
+ 120, -106, -106, -5, -106, -106, 52, -106, 53, -106,
+ 56, -106, 60, -106, -106, -106, -106, -106, -106, 39,
+ -106, 37, -106, 49, -106, 133, 69, -106, -106, 59,
+ -106, -106, 102, -106, -106, -106, 79, -106, -106, -106,
+ -106, 62, -106, 45, 67, -106, 75, -106, -106, 44,
+ -106, 1, -106, -106, -106, -106, -106, -106, -106, 46,
+ -106, -106, -106, -106, -106, -106, 115, -106, -106, 66,
+ -106, -106, -106, -106, 70, -106, 77, -106, -106, -106,
+ -106, -106, -9, -106, 72, -106, -38, -106, -106, -106,
+ -106, 97, -106, -106, 99, -106, -106, -106, -106, -106,
+ 40, -51, -106, -106, 36, -106, 34, -106, 63, -106,
+ -106, -106, -106, 35, -106, 48, -106, 58, -106, 57,
+ -106, -106, -106, -106, -106, -106, 28, -106, -106, 90,
+ -106, -106, -106, -106, 65, -106, -106, 159, -106, -106,
+ 61, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, 87, -106, -106, -106,
+ -106, -106, -13, -106, -106, -106, -106, -106, -106, -106,
+ -18, -106, -106, -106, -10, -106, -106, 0, -106, -106,
+ -106, -106, -106, -106, -4, -12, -106, -6, -106, -106,
+ -106, -106, -106, 3, -106, -106, -106, -106, -23, -14,
+ -106, 11, -106, -106, -106, -106, -106, 15, -106, -106,
+ -106, 16, 18, 14, -106, -106, -106, -106, -106, 292,
+ 399, 180, -106, -106, -106, -106, -106, -106, 26, 286,
+ 20, 21, -106, 30, -106, 177, 10, -106, -106, 31,
+ -106, -106, 193, -106, -106, -106, 32, -106, -106, -106,
+ -106, 27, -106, 13, 76, -106, 68, -106, -106, -106,
+ -106, -106, -106, 230, -106, -106, -106, -106, -106, 290,
+ -106, -106, -3, -106, -106, 6, -106, -106, 4, 270,
+ -106, -106, -106, 9, -106, -106, -106, -106, -106, -106,
+ 12, -106, -106, -106, -106, -106, -106, -106, -106, -106};
const short QDeclarativeJSGrammar::action_info [] = {
- -97, -98, 452, 611, -116, 527, 456, -124, 415, -121,
- 439, 551, -119, -108, 347, -94, 611, 388, 635, 540,
- 351, 341, 344, 342, 390, 539, -127, 256, 398, 402,
- 100, 98, 70, -97, 400, 163, -98, 465, 524, -116,
- 559, 447, 530, -108, 439, -127, 509, 439, 559, -94,
- 537, 544, -121, 256, 443, -119, -124, 514, 439, 347,
- 445, 526, 423, 452, 423, 430, 456, 423, 70, 554,
- 169, 415, 345, 311, 100, 163, 419, 140, 146, 408,
- 271, 413, 347, 251, 295, 271, 256, 0, 186, 452,
- 0, 311, 456, 140, 429, 317, 0, 0, 0, 324,
- 407, 178, 291, 98, 305, 558, 0, 235, 476, 0,
- 439, 415, 300, 442, 291, 0, 189, 171, 140, 426,
- 140, 148, 339, 182, 433, 140, 140, 443, 140, 303,
- 326, 559, 140, 0, 140, 57, 172, 250, 188, 140,
- 601, 140, 330, 293, 165, 0, 58, 313, 166, 140,
- 332, 314, 631, 630, 255, 254, 477, 241, 240, 57,
- 246, 245, 412, 411, 427, 57, 141, 529, 528, 63,
- 58, 61, 336, 171, 248, 247, 58, 516, 253, 0,
- 417, 468, 62, 327, 309, 334, 458, 57, 602, 248,
- 247, 487, 172, 454, 522, 556, 555, 176, 58, 248,
- 247, 625, 624, 84, 84, 85, 85, 140, 84, 84,
- 85, 85, 63, 84, 64, 85, 86, 86, 510, 510,
- 65, 86, 86, 84, 171, 85, 86, 63, 84, 0,
- 85, 517, 515, 140, 469, 467, 86, 84, 140, 85,
- 512, 86, 84, 172, 85, 405, 84, 102, 85, 140,
- 86, 511, 628, 627, 140, 86, 84, 64, 85, 86,
- 437, 436, 171, 65, 512, 512, 103, 510, 104, 86,
- 546, 510, 64, 140, 510, 511, 511, 84, 65, 85,
- 532, 172, 626, 405, 34, 0, 234, 233, 0, 0,
- 86, 520, 519, 0, 0, 547, 545, 84, 0, 85,
- 621, 0, 543, 542, 34, 0, 349, 0, 0, 0,
- 86, 72, 73, 512, 622, 620, 34, 512, 0, 34,
- 512, 47, 49, 48, 511, 0, 536, 535, 511, 171,
- 0, 511, 34, 0, 533, 531, 72, 73, 74, 75,
- 34, 47, 49, 48, 619, 34, 171, -85, 172, 34,
- 173, 0, 34, 47, 49, 48, 47, 49, 48, 34,
- 0, 0, 34, 74, 75, 172, 34, 173, 0, 47,
- 49, 48, 34, 0, 171, 34, 0, 47, 49, 48,
- 0, 0, 47, 49, 48, 0, 47, 49, 48, 47,
- 49, 48, -85, 172, 0, 173, 47, 49, 48, 47,
- 49, 48, 0, 47, 49, 48, 278, 279, 0, 47,
- 49, 48, 47, 49, 48, 280, 278, 279, 281, 0,
- 282, 0, 0, 34, 0, 280, 34, 0, 281, 34,
- 282, 273, 274, -339, 278, 279, -339, 34, 0, 0,
- 0, 0, 0, 280, 0, 0, 281, 0, 282, 34,
- 0, 0, 0, 0, 0, 244, 243, 0, 275, 276,
- 47, 49, 48, 47, 49, 48, 47, 49, 48, 244,
- 243, 77, 78, 34, 47, 49, 48, 0, 0, 79,
- 80, 239, 238, 81, 0, 82, 47, 49, 48, 77,
- 78, 34, 0, 0, 0, 0, 0, 79, 80, 0,
- 0, 81, 0, 82, 0, 239, 238, 77, 78, 34,
- 47, 49, 48, 278, 279, 79, 80, 0, 0, 81,
- 0, 82, 280, 244, 243, 281, 0, 282, 47, 49,
- 48, 6, 5, 4, 1, 3, 2, 0, 0, 150,
- 0, 239, 238, 0, 0, 0, 47, 49, 48, 151,
- 0, 0, 0, 152, 0, 0, 0, 150, 0, 0,
- 0, 0, 153, 0, 154, 0, 0, 151, 0, 0,
- 0, 152, 0, 0, 0, 155, 0, 156, 61, 0,
- 153, 0, 154, 0, 0, 157, 0, 0, 158, 62,
- 77, 78, 0, 155, 159, 156, 61, 0, 79, 80,
- 160, 0, 81, 157, 82, 0, 158, 62, 0, 0,
- 0, 0, 159, 0, 0, 0, 161, 0, 160, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,
- 31, 0, 0, 0, 161, 0, 0, 0, 0, 33,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
- 35, 36, 0, 37, 0, 0, 0, 0, 0, 0,
- 501, 0, 0, 0, 44, 0, 0, 150, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 151, 0, 0,
- 0, 152, 50, 47, 49, 48, 0, 51, 0, 0,
- 153, 0, 154, 0, 0, 307, 0, 0, 43, 53,
- 32, 0, 0, 155, 40, 156, 61, 0, 0, 0,
- 0, 0, 0, 157, 0, 0, 158, 62, 0, 0,
- 0, 0, 159, 0, 0, 0, 0, 0, 160, 0,
+ 401, -123, 440, -121, 403, -129, 333, 340, 615, 345,
+ -96, 352, 348, -118, -100, 389, -126, 257, -99, 342,
+ 416, 391, 343, 510, 453, 440, 448, 257, -96, 446,
+ -100, -118, 440, 348, 527, 541, -129, 525, 552, 555,
+ 538, 545, 466, 424, 399, 408, -110, 560, 560, 420,
+ 431, 444, 560, 457, -121, -99, 416, -123, 457, 440,
+ -126, 325, 306, 453, 272, 190, 294, 164, 187, 170,
+ 257, 272, 141, 430, 346, 312, 296, 312, 409, 414,
+ 294, 348, 251, 101, 99, 252, 318, 416, 236, 292,
+ 453, 457, 440, 183, 141, 189, 71, 335, 639, 164,
+ 147, 304, 179, 71, 99, 443, 427, 301, 434, 141,
+ 0, 141, 141, 331, 141, 0, 0, 292, 58, 444,
+ 141, 149, 477, 62, 0, 58, 0, 314, 603, 59,
+ 141, 315, 141, 172, 63, 141, 59, 247, 246, 141,
+ 424, 629, 628, 635, 634, 256, 255, 58, 615, 242,
+ 241, 428, 173, 101, 249, 248, 58, 327, 59, 141,
+ 141, 249, 248, 488, 254, 166, 418, 59, 142, 167,
+ 478, 557, 556, 141, 530, 529, 604, 172, 413, 412,
+ 249, 248, 459, 177, 455, 172, 85, 141, 86, 511,
+ 517, 350, 85, 523, 86, 559, 173, 64, 174, 87,
+ 85, 85, 86, 86, 173, 87, 406, 64, 141, 64,
+ 328, 337, 310, 87, 87, 469, 85, 85, 86, 86,
+ 0, 560, 533, 0, 0, 511, 521, 520, 511, 87,
+ 87, 0, 511, 141, 0, 513, 172, 141, 547, 513,
+ 438, 437, 65, 0, 518, 516, 512, 511, 66, 0,
+ 512, 103, 65, 0, 65, 173, 274, 275, 66, 0,
+ 66, 235, 234, 548, 546, 632, 631, 0, 470, 468,
+ 104, 513, 105, 172, 513, 0, 534, 532, 513, 172,
+ 561, 0, 512, 276, 277, 512, 537, 536, 34, 512,
+ 544, 543, 173, 513, 406, 630, 625, -87, 173, 172,
+ 174, 73, 74, 0, 512, 274, 275, 34, 0, 0,
+ 626, 624, 0, 0, 73, 74, 0, -87, 173, 34,
+ 174, 0, 85, 34, 86, 48, 50, 49, 75, 76,
+ 0, 0, 276, 277, 0, 87, 0, 0, 279, 280,
+ 623, 75, 76, 0, 48, 50, 49, 281, 0, 0,
+ 282, 45, 283, 34, 279, 280, 48, 50, 49, 0,
+ 48, 50, 49, 281, 279, 280, 282, 34, 283, 0,
+ 45, 279, 280, 281, -341, 0, 282, 0, 283, 0,
+ 281, 34, 45, 282, 0, 283, 45, 279, 280, 34,
+ 48, 50, 49, 0, 0, 34, 281, 0, 34, 282,
+ 0, 283, -341, 0, 48, 50, 49, 6, 5, 4,
+ 1, 3, 2, 245, 244, 0, 45, 34, 48, 50,
+ 49, 240, 239, 0, 0, 0, 48, 50, 49, 0,
+ 45, 0, 48, 50, 49, 48, 50, 49, 0, 0,
+ 0, 0, 0, 0, 45, 0, 0, 0, 0, 240,
+ 239, 0, 45, 34, 48, 50, 49, 0, 45, 0,
+ 0, 45, 34, 0, 0, 34, 0, 0, 0, 0,
+ 78, 79, 0, 0, 0, 0, 0, 0, 80, 81,
+ 45, 0, 82, 0, 83, 245, 244, 0, 0, 0,
+ 48, 50, 49, 0, 245, 244, 0, 240, 239, 48,
+ 50, 49, 48, 50, 49, 0, 0, 0, 0, 0,
+ 30, 31, 0, 0, 0, 0, 45, 0, 0, 0,
+ 33, 0, 0, 0, 0, 45, 0, 34, 45, 0,
+ 0, 35, 36, 0, 37, 0, 0, 0, 0, 0,
+ 0, 502, 0, 0, 0, 44, 0, 0, 151, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 152, 0,
+ 0, 0, 153, 51, 48, 50, 49, 0, 52, 0,
+ 0, 154, 0, 155, 0, 0, 0, 0, 0, 43,
+ 54, 32, 0, 0, 156, 40, 157, 62, 0, 0,
+ 45, 0, 0, 0, 158, 30, 31, 159, 63, 0,
+ 0, 0, 0, 160, 0, 33, 0, 0, 0, 161,
+ 0, 0, 34, 0, 0, 0, 35, 36, 0, 37,
+ 0, 0, 0, 0, 0, 162, 502, 0, 0, 0,
+ 44, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 151, 0, 51, 48,
+ 50, 49, 0, 52, 0, 0, 152, 0, 0, 0,
+ 153, 0, 0, 0, 43, 54, 32, 0, 0, 154,
+ 40, 155, 0, 0, 308, 45, 0, 0, 0, 0,
+ 0, 0, 156, 0, 157, 62, 0, 0, 0, 0,
+ 0, 0, 158, 0, 0, 159, 63, 0, 0, 0,
+ 0, 160, 0, 0, 0, 0, 0, 161, 0, 0,
0, 0, 0, 0, 0, 0, 30, 31, 0, 0,
- 0, 0, 0, 0, 161, 0, 33, 0, 0, 0,
+ 0, 0, 0, 162, 0, 0, 33, 0, 0, 0,
0, 0, 0, 34, 0, 0, 0, 35, 36, 0,
- 37, 0, 0, 0, 30, 31, 0, 41, 0, 0,
+ 37, 0, 0, 0, 30, 31, 0, 502, 0, 0,
0, 44, 0, 0, 33, 0, 0, 0, 0, 0,
- 0, 34, 0, 0, 0, 35, 36, 0, 37, 50,
- 47, 49, 48, 0, 51, 501, 0, 0, 0, 44,
- 0, 0, 0, 0, 0, 43, 53, 32, 0, 0,
- 0, 40, 0, 0, 0, 0, 0, 50, 47, 49,
- 48, 0, 51, 0, 500, 0, 30, 31, 0, 0,
- 0, 0, 0, 43, 53, 32, 214, 0, 0, 40,
- 0, 0, 0, 34, 0, 0, 0, 35, 36, 0,
- 37, 0, 30, 31, 0, 0, 0, 501, 0, 0,
- 0, 44, 33, 0, 0, 0, 0, 0, 0, 34,
- 0, 0, 0, 35, 36, 0, 37, 0, 0, 50,
- 502, 504, 503, 41, 51, 0, 0, 44, 0, 225,
- 0, 0, 0, 0, 0, 43, 53, 32, 209, 0,
- 0, 40, 0, 0, 0, 50, 47, 49, 48, 0,
- 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 43, 53, 32, 0, 0, 0, 40, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 500, 0, 30, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 214, 0, 0, 0, 0, 0, 0, 34,
- 0, 0, 0, 35, 36, 0, 37, 0, 0, 0,
- 0, 0, 0, 501, 0, 0, 0, 44, 0, 0,
- 0, 0, 0, 0, 0, 608, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 50, 502, 504, 503, 0,
- 51, 0, 0, 0, 0, 225, 0, 0, 0, 0,
- 0, 43, 53, 32, 209, 0, 0, 40, 0, 0,
+ 0, 34, 0, 0, 0, 35, 36, 0, 37, 51,
+ 48, 50, 49, 0, 52, 41, 0, 0, 0, 44,
+ 0, 0, 0, 0, 0, 43, 54, 32, 0, 0,
+ 0, 40, 0, 0, 0, 0, 45, 51, 48, 50,
+ 49, 0, 52, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 43, 54, 32, 0, 0, 0, 40,
+ 0, 0, 0, 0, 45, 30, 31, 0, 0, 0,
+ 0, 0, 0, 30, 31, 33, 0, 0, 0, 0,
+ 0, 0, 34, 33, 0, 0, 35, 36, 0, 37,
+ 34, 0, 0, 0, 35, 36, 502, 37, 0, 0,
+ 44, 0, 0, 0, 41, 0, 0, 0, 44, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 51, 48,
+ 50, 49, 0, 52, 0, 0, 51, 48, 50, 49,
+ 0, 52, 0, 0, 43, 54, 32, 0, 0, 0,
+ 40, 0, 43, 54, 32, 45, 0, 0, 40, 0,
+ 0, 0, 0, 45, 30, 31, 0, 0, 0, 0,
+ 0, 0, 30, 31, 33, 0, 0, 0, 0, 0,
+ 0, 34, 33, 0, 0, 35, 36, 0, 37, 34,
+ 0, 0, 0, 35, 36, 502, 37, 0, 0, 44,
+ 0, 0, 0, 41, 0, 0, 0, 44, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 51, 48, 50,
+ 49, 0, 52, 0, 0, 51, 48, 50, 49, 0,
+ 52, 0, 0, 43, 54, 32, 0, 0, 0, 40,
+ 0, 43, 54, 32, 45, 0, 0, 40, 0, 0,
+ 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
+ 0, 501, 0, 30, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 215, 0, 0, 0, 0, 0, 0,
+ 34, 0, 0, 0, 35, 36, 0, 37, 0, 0,
+ 0, 0, 0, 0, 502, 0, 0, 0, 44, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 500, 0, 30, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 214, 0, 0, 0, 0, 0, 0, 34,
+ 0, 0, 0, 0, 0, 0, 51, 503, 505, 504,
+ 0, 52, 0, 0, 0, 0, 226, 0, 0, 0,
+ 0, 0, 43, 54, 32, 210, 0, 0, 40, 0,
+ 0, 0, 0, 45, 0, 0, 0, 0, 0, 0,
+ 0, 0, 501, 0, 30, 31, 0, 0, 0, 0,
+ 0, 0, 0, 0, 215, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 35, 36, 0, 37, 0,
+ 0, 0, 0, 0, 0, 502, 0, 0, 0, 44,
+ 0, 0, 0, 0, 0, 0, 0, 607, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 51, 503, 505,
+ 504, 0, 52, 0, 0, 0, 0, 226, 0, 0,
+ 0, 0, 0, 43, 54, 32, 210, 0, 0, 40,
+ 0, 0, 0, 0, 45, 0, 0, 0, 0, 0,
+ 0, 0, 0, 501, 0, 30, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 215, 0, 0, 0, 0,
+ 0, 0, 34, 0, 0, 0, 35, 36, 0, 37,
+ 0, 0, 0, 0, 0, 0, 502, 0, 0, 0,
+ 44, 0, 0, 0, 0, 0, 0, 0, 610, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 51, 503,
+ 505, 504, 0, 52, 0, 0, 0, 0, 226, 0,
+ 0, 0, 0, 0, 43, 54, 32, 210, 0, 0,
+ 40, 0, 0, 0, 0, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 29, 30, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
+ 0, 0, 34, 0, 0, 0, 35, 36, 0, 37,
+ 0, 0, 0, 38, 0, 39, 41, 42, 0, 0,
+ 44, 0, 0, 0, 46, 0, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 51, 48,
+ 50, 49, 0, 52, 0, 53, 0, 55, 0, 56,
+ 0, 0, 0, 0, 43, 54, 32, 0, 0, 0,
+ 40, 0, 0, 0, 0, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, -119, 0, 0, 0, 29, 30,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 33,
+ 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
+ 35, 36, 0, 37, 0, 0, 0, 38, 0, 39,
+ 41, 42, 0, 0, 44, 0, 0, 0, 46, 0,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 51, 48, 50, 49, 0, 52, 0, 53,
+ 0, 55, 0, 56, 0, 0, 0, 0, 43, 54,
+ 32, 0, 0, 0, 40, 0, 0, 0, 0, 45,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 30,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 33,
+ 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
+ 35, 36, 0, 37, 0, 0, 0, 38, 0, 39,
+ 41, 42, 0, 0, 44, 0, 0, 0, 46, 0,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 51, 48, 50, 49, 0, 52, 0, 53,
+ 0, 55, 271, 56, 0, 0, 0, 0, 43, 54,
+ 32, 0, 0, 0, 40, 0, 0, 0, 0, 45,
+ 0, 0, 0, 0, 0, 0, 0, 0, 483, 0,
+ 0, 29, 30, 31, 0, 0, 0, 0, 0, 0,
+ 0, 0, 33, 0, 0, 0, 0, 0, 0, 34,
0, 0, 0, 35, 36, 0, 37, 0, 0, 0,
- 0, 0, 0, 501, 0, 0, 0, 44, 0, 0,
- 0, 0, 0, 0, 0, 605, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 50, 502, 504, 503, 0,
- 51, 0, 0, 0, 0, 225, 0, 0, 0, 0,
- 0, 43, 53, 32, 209, 0, 0, 40, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 38, 0, 39, 41, 42, 0, 0, 44, 0, 0,
+ 0, 46, 0, 47, 0, 0, 484, 0, 0, 0,
+ 0, 0, 0, 0, 0, 51, 48, 50, 49, 0,
+ 52, 0, 53, 0, 55, 0, 56, 0, 0, 0,
+ 0, 43, 54, 32, 0, 0, 0, 40, 0, 0,
+ 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
+ 0, 29, 30, 31, 0, 0, 0, 0, 0, 0,
+ 0, 0, 33, 0, 0, 0, 0, 0, 0, 34,
+ 217, 0, 0, 568, 569, 0, 37, 0, 0, 0,
+ 38, 0, 39, 41, 42, 0, 0, 44, 0, 0,
+ 0, 46, 0, 47, 0, 0, 0, 0, 0, 0,
+ 0, 221, 0, 0, 0, 51, 48, 50, 49, 0,
+ 52, 0, 53, 0, 55, 0, 56, 0, 0, 0,
+ 0, 43, 54, 32, 0, 0, 0, 40, 0, 0,
+ 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
+ 0, 483, 0, 0, 29, 30, 31, 0, 0, 0,
+ 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
+ 0, 0, 34, 0, 0, 0, 35, 36, 0, 37,
+ 0, 0, 0, 38, 0, 39, 41, 42, 0, 0,
+ 44, 0, 0, 0, 46, 0, 47, 0, 0, 486,
+ 0, 0, 0, 0, 0, 0, 0, 0, 51, 48,
+ 50, 49, 0, 52, 0, 53, 0, 55, 0, 56,
+ 0, 0, 0, 0, 43, 54, 32, 0, 0, 0,
+ 40, 0, 0, 0, 0, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 475, 0, 0, 29, 30, 31,
+ 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 35,
+ 36, 0, 37, 0, 0, 0, 38, 0, 39, 41,
+ 42, 0, 0, 44, 0, 0, 0, 46, 0, 47,
+ 0, 0, 481, 0, 0, 0, 0, 0, 0, 0,
+ 0, 51, 48, 50, 49, 0, 52, 0, 53, 0,
+ 55, 0, 56, 0, 0, 0, 0, 43, 54, 32,
+ 0, 0, 0, 40, 0, 0, 0, 0, 45, 0,
+ 0, 0, 0, 0, 0, 0, 0, 475, 0, 0,
29, 30, 31, 0, 0, 0, 0, 0, 0, 0,
0, 33, 0, 0, 0, 0, 0, 0, 34, 0,
0, 0, 35, 36, 0, 37, 0, 0, 0, 38,
0, 39, 41, 42, 0, 0, 44, 0, 0, 0,
- 45, 0, 46, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 50, 47, 49, 48, 0, 51,
- 0, 52, 0, 54, 0, 55, 0, 0, 0, 0,
- 43, 53, 32, 0, 0, 0, 40, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -117,
- 0, 0, 0, 29, 30, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 33, 0, 0, 0, 0, 0,
- 0, 34, 0, 0, 0, 35, 36, 0, 37, 0,
- 0, 0, 38, 0, 39, 41, 42, 0, 0, 44,
- 0, 0, 0, 45, 0, 46, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 50, 47, 49,
- 48, 0, 51, 0, 52, 0, 54, 0, 55, 0,
- 0, 0, 0, 43, 53, 32, 0, 0, 0, 40,
+ 46, 0, 47, 0, 0, 476, 0, 0, 0, 0,
+ 0, 0, 0, 0, 51, 48, 50, 49, 0, 52,
+ 0, 53, 0, 55, 0, 56, 0, 0, 0, 0,
+ 43, 54, 32, 0, 0, 0, 40, 0, 0, 0,
+ 0, 45, 0, 0, 0, 0, 0, 0, 0, 0,
+ 109, 110, 111, 0, 0, 113, 115, 116, 0, 0,
+ 117, 0, 118, 0, 0, 0, 120, 121, 122, 0,
+ 0, 0, 0, 0, 0, 34, 123, 124, 125, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 126,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 30, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 33, 0, 0, 0, 0, 0, 0,
- 34, 0, 0, 0, 35, 36, 0, 37, 0, 0,
- 0, 38, 0, 39, 41, 42, 0, 0, 44, 0,
- 0, 0, 45, 0, 46, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 50, 47, 49, 48,
- 0, 51, 0, 52, 0, 54, 270, 55, 0, 0,
- 0, 0, 43, 53, 32, 0, 0, 0, 40, 0,
+ 0, 0, 0, 0, 0, 129, 0, 0, 0, 0,
+ 0, 0, 48, 50, 49, 130, 131, 132, 0, 134,
+ 135, 136, 137, 138, 139, 0, 0, 127, 133, 119,
+ 112, 114, 128, 0, 0, 0, 0, 0, 45, 0,
+ 0, 0, 0, 0, 0, 0, 0, 109, 110, 111,
+ 0, 0, 113, 115, 116, 0, 0, 117, 0, 118,
+ 0, 0, 0, 120, 121, 122, 0, 0, 0, 0,
+ 0, 0, 393, 123, 124, 125, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 126, 0, 0, 0,
+ 394, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 129, 0, 0, 0, 0, 0, 398, 395,
+ 397, 0, 130, 131, 132, 0, 134, 135, 136, 137,
+ 138, 139, 0, 0, 127, 133, 119, 112, 114, 128,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 29, 30, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 33, 0, 0, 0, 0, 0, 0, 34,
- 216, 0, 0, 566, 567, 0, 37, 0, 0, 0,
- 38, 0, 39, 41, 42, 0, 0, 44, 0, 0,
- 0, 45, 0, 46, 0, 0, 0, 0, 0, 0,
- 0, 220, 0, 0, 0, 50, 47, 49, 48, 0,
- 51, 0, 52, 0, 54, 0, 55, 0, 0, 0,
- 0, 43, 53, 32, 0, 0, 0, 40, 0, 0,
+ 0, 0, 0, 0, 109, 110, 111, 0, 0, 113,
+ 115, 116, 0, 0, 117, 0, 118, 0, 0, 0,
+ 120, 121, 122, 0, 0, 0, 0, 0, 0, 393,
+ 123, 124, 125, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 126, 0, 0, 0, 394, 0, 0,
+ 0, 0, 0, 0, 0, 396, 0, 0, 0, 129,
+ 0, 0, 0, 0, 0, 398, 395, 397, 0, 130,
+ 131, 132, 0, 134, 135, 136, 137, 138, 139, 0,
+ 0, 127, 133, 119, 112, 114, 128, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 474, 0, 0, 29, 30, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 33, 0, 0, 0, 0, 0,
- 0, 34, 0, 0, 0, 35, 36, 0, 37, 0,
- 0, 0, 38, 0, 39, 41, 42, 0, 0, 44,
- 0, 0, 0, 45, 0, 46, 0, 0, 475, 0,
- 0, 0, 0, 0, 0, 0, 0, 50, 47, 49,
- 48, 0, 51, 0, 52, 0, 54, 0, 55, 0,
- 0, 0, 0, 43, 53, 32, 0, 0, 0, 40,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 474, 0, 0, 29, 30, 31, 0, 0,
- 0, 0, 0, 0, 0, 0, 33, 0, 0, 0,
- 0, 0, 0, 34, 0, 0, 0, 35, 36, 0,
+ 0, 209, 0, 0, 0, 0, 211, 0, 29, 30,
+ 31, 213, 0, 0, 0, 0, 0, 0, 214, 33,
+ 0, 0, 0, 0, 0, 0, 216, 217, 0, 0,
+ 218, 36, 0, 37, 0, 0, 0, 38, 0, 39,
+ 41, 42, 0, 0, 44, 0, 0, 0, 46, 0,
+ 47, 0, 0, 0, 0, 0, 220, 0, 221, 0,
+ 0, 0, 51, 219, 222, 49, 223, 52, 224, 53,
+ 225, 55, 226, 56, 227, 228, 0, 0, 43, 54,
+ 32, 210, 212, 0, 40, 0, 0, 0, 0, 45,
+ 0, 0, 0, 0, 0, 0, 0, 0, 209, 0,
+ 0, 0, 0, 211, 0, 29, 30, 31, 213, 0,
+ 0, 0, 0, 0, 0, 214, 215, 0, 0, 0,
+ 0, 0, 0, 216, 217, 0, 0, 218, 36, 0,
37, 0, 0, 0, 38, 0, 39, 41, 42, 0,
- 0, 44, 0, 0, 0, 45, 0, 46, 0, 0,
- 480, 0, 0, 0, 0, 0, 0, 0, 0, 50,
- 47, 49, 48, 0, 51, 0, 52, 0, 54, 0,
- 55, 0, 0, 0, 0, 43, 53, 32, 0, 0,
- 0, 40, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 482, 0, 0, 29, 30, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,
- 0, 0, 0, 0, 0, 34, 0, 0, 0, 35,
- 36, 0, 37, 0, 0, 0, 38, 0, 39, 41,
- 42, 0, 0, 44, 0, 0, 0, 45, 0, 46,
- 0, 0, 485, 0, 0, 0, 0, 0, 0, 0,
- 0, 50, 47, 49, 48, 0, 51, 0, 52, 0,
- 54, 0, 55, 0, 0, 0, 0, 43, 53, 32,
- 0, 0, 0, 40, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 482, 0, 0, 29,
- 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 33, 0, 0, 0, 0, 0, 0, 34, 0, 0,
- 0, 35, 36, 0, 37, 0, 0, 0, 38, 0,
- 39, 41, 42, 0, 0, 44, 0, 0, 0, 45,
- 0, 46, 0, 0, 483, 0, 0, 0, 0, 0,
- 0, 0, 0, 50, 47, 49, 48, 0, 51, 0,
- 52, 0, 54, 0, 55, 0, 0, 0, 0, 43,
- 53, 32, 0, 0, 0, 40, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 108, 109,
- 110, 0, 0, 112, 114, 115, 0, 0, 116, 0,
- 117, 0, 0, 0, 119, 120, 121, 0, 0, 0,
- 0, 0, 0, 34, 122, 123, 124, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 125, 0, 0,
+ 0, 44, 0, 0, 0, 46, 0, 47, 0, 0,
+ 0, 0, 0, 220, 0, 221, 0, 0, 0, 51,
+ 219, 222, 49, 223, 52, 224, 53, 225, 55, 226,
+ 56, 227, 228, 0, 0, 43, 54, 32, 210, 212,
+ 0, 40, 0, 0, 0, 0, 45, 0, 0, 0,
+ 0, 0, 0, 0, 0, 571, 110, 111, 0, 0,
+ 573, 115, 575, 30, 31, 576, 0, 118, 0, 0,
+ 0, 120, 578, 579, 0, 0, 0, 0, 0, 0,
+ 580, 581, 124, 125, 218, 36, 0, 37, 0, 0,
+ 0, 38, 0, 39, 582, 42, 0, 0, 584, 0,
+ 0, 0, 46, 0, 47, 0, 0, 0, 0, 0,
+ 586, 0, 221, 0, 0, 0, 588, 585, 587, 49,
+ 589, 590, 591, 53, 593, 594, 595, 596, 597, 598,
+ 0, 0, 583, 592, 577, 572, 574, 128, 40, 0,
+ 0, 0, 0, 45, 0, 0, 0, 0, 0, 0,
+ 0, 0, 361, 110, 111, 0, 0, 363, 115, 365,
+ 30, 31, 366, 0, 118, 0, 0, 0, 120, 368,
+ 369, 0, 0, 0, 0, 0, 0, 370, 371, 124,
+ 125, 218, 36, 0, 37, 0, 0, 0, 38, 0,
+ 39, 372, 42, 0, 0, 374, 0, 0, 0, 46,
+ 0, 47, 0, -265, 0, 0, 0, 376, 0, 221,
+ 0, 0, 0, 378, 375, 377, 49, 379, 380, 381,
+ 53, 383, 384, 385, 386, 387, 388, 0, 0, 373,
+ 382, 367, 362, 364, 128, 40, 0, 0, 0, 0,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 522, 540, 539, 519, 461, 515, 535, 514, 309, 528,
+ 311, 531, 250, 526, 542, 636, 613, 182, 150, 622,
+ 16, 496, 320, 497, 627, 253, 498, 633, 358, 554,
+ 436, 558, 487, 472, 439, 302, 238, 392, 454, 606,
+ 551, 402, 358, 553, 439, 243, 182, 445, 243, 447,
+ 456, 237, 238, 238, 347, 429, 349, 450, 351, 460,
+ 143, 458, 353, 467, 243, 436, 439, 176, 410, 186,
+ 188, 250, 415, 338, 182, 433, 148, 171, 169, 390,
+ 417, 400, 302, 140, 449, 163, 146, 425, 339, 302,
+ 358, 237, 336, 307, 250, 344, 482, 436, 302, 358,
+ 485, 358, 0, 0, 0, 461, 0, 0, 0, 0,
+ 0, 60, 60, 451, 452, 404, 0, 0, 60, 60,
+ 60, 452, 451, 320, 106, 60, 60, 60, 102, 60,
+ 92, 93, 95, 302, 94, 186, 0, 60, 0, 0,
+ 60, 88, 60, 405, 90, 60, 108, 180, 60, 266,
+ 146, 60, 146, 489, 270, 407, 165, 178, 60, 302,
+ 60, 0, 89, 330, 168, 288, 60, 60, 60, 60,
+ 0, 287, 286, 284, 285, 471, 60, 60, 432, 180,
+ 435, 60, 60, 452, 72, 60, 60, 451, 96, 60,
+ 480, 494, 77, 500, 479, 329, 60, 334, 305, 61,
+ 612, 60, 60, 69, 68, 60, 404, 60, 70, 67,
+ 60, 60, 490, 60, 60, 493, 84, 404, 60, 341,
+ 492, 60, 60, 180, 303, 60, 100, 60, 98, 491,
+ 91, 60, 0, 298, 405, 60, 106, 97, 270, 0,
+ 270, 500, 298, 500, 60, 405, 605, 270, 293, 270,
+ 602, 0, 0, 0, 0, 317, 499, 509, 108, 175,
+ 60, 316, 0, 60, 319, 270, 60, 290, 270, 298,
+ 289, 270, 0, 291, 270, 298, 60, 60, 0, 60,
+ 270, 270, 270, 500, 270, 0, 637, 295, 273, 298,
+ 602, 297, 313, 60, 270, 611, 0, 300, 270, 599,
+ 278, 302, 601, 500, 0, 567, 602, 0, 0, 0,
+ 0, 326, 570, 563, 564, 565, 566, 0, 499, 509,
+ 0, 472, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 128, 0, 0, 0, 0, 0, 0,
- 47, 49, 48, 129, 130, 131, 0, 133, 134, 135,
- 136, 137, 138, 0, 0, 126, 132, 118, 111, 113,
- 127, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 108, 109, 110, 0, 0, 112,
- 114, 115, 0, 0, 116, 0, 117, 0, 0, 0,
- 119, 120, 121, 0, 0, 0, 0, 0, 0, 392,
- 122, 123, 124, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 125, 0, 0, 0, 393, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
- 0, 0, 0, 0, 0, 397, 394, 396, 0, 129,
- 130, 131, 0, 133, 134, 135, 136, 137, 138, 0,
- 0, 126, 132, 118, 111, 113, 127, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 108, 109, 110, 0, 0, 112, 114, 115, 0, 0,
- 116, 0, 117, 0, 0, 0, 119, 120, 121, 0,
- 0, 0, 0, 0, 0, 392, 122, 123, 124, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 125,
- 0, 0, 0, 393, 0, 0, 0, 0, 0, 0,
- 0, 395, 0, 0, 0, 128, 0, 0, 0, 0,
- 0, 397, 394, 396, 0, 129, 130, 131, 0, 133,
- 134, 135, 136, 137, 138, 0, 0, 126, 132, 118,
- 111, 113, 127, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 208, 0, 0, 0,
- 0, 210, 0, 29, 30, 31, 212, 0, 0, 0,
- 0, 0, 0, 213, 33, 0, 0, 0, 0, 0,
- 0, 215, 216, 0, 0, 217, 36, 0, 37, 0,
- 0, 0, 38, 0, 39, 41, 42, 0, 0, 44,
- 0, 0, 0, 45, 0, 46, 0, 0, 0, 0,
- 0, 219, 0, 220, 0, 0, 0, 50, 218, 221,
- 48, 222, 51, 223, 52, 224, 54, 225, 55, 226,
- 227, 0, 0, 43, 53, 32, 209, 211, 0, 40,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 208, 0, 0, 0, 0, 210, 0, 29,
- 30, 31, 212, 0, 0, 0, 0, 0, 0, 213,
- 214, 0, 0, 0, 0, 0, 0, 215, 216, 0,
- 0, 217, 36, 0, 37, 0, 0, 0, 38, 0,
- 39, 41, 42, 0, 0, 44, 0, 0, 0, 45,
- 0, 46, 0, 0, 0, 0, 0, 219, 0, 220,
- 0, 0, 0, 50, 218, 221, 48, 222, 51, 223,
- 52, 224, 54, 225, 55, 226, 227, 0, 0, 43,
- 53, 32, 209, 211, 0, 40, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 569, 109,
- 110, 0, 0, 571, 114, 573, 30, 31, 574, 0,
- 117, 0, 0, 0, 119, 576, 577, 0, 0, 0,
- 0, 0, 0, 578, 579, 123, 124, 217, 36, 0,
- 37, 0, 0, 0, 38, 0, 39, 580, 42, 0,
- 0, 582, 0, 0, 0, 45, 0, 46, 0, 0,
- 0, 0, 0, 584, 0, 220, 0, 0, 0, 586,
- 583, 585, 48, 587, 588, 589, 52, 591, 592, 593,
- 594, 595, 596, 0, 0, 581, 590, 575, 570, 572,
- 127, 40, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 360, 109, 110, 0, 0, 362,
- 114, 364, 30, 31, 365, 0, 117, 0, 0, 0,
- 119, 367, 368, 0, 0, 0, 0, 0, 0, 369,
- 370, 123, 124, 217, 36, 0, 37, 0, 0, 0,
- 38, 0, 39, 371, 42, 0, 0, 373, 0, 0,
- 0, 45, 0, 46, 0, -263, 0, 0, 0, 375,
- 0, 220, 0, 0, 0, 377, 374, 376, 48, 378,
- 379, 380, 52, 382, 383, 384, 385, 386, 387, 0,
- 0, 372, 381, 366, 361, 363, 127, 40, 0, 0,
+ 0, 0, 0, 0, 0, 0, 332, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
- 541, 310, 460, 513, 538, 518, 525, 308, 249, 632,
- 306, 181, 252, 618, 149, 16, 623, 495, 319, 497,
- 629, 357, 496, 435, 471, 553, 557, 486, 438, 301,
- 428, 237, 350, 352, 604, 521, 242, 424, 550, 552,
- 181, 301, 185, 237, 242, 343, 432, 348, 338, 249,
- 459, 237, 453, 449, 236, 242, 446, 181, 466, 401,
- 448, 249, 357, 455, 444, 457, 346, 337, 357, 484,
- 142, 236, 147, 333, 438, 175, 301, 335, 187, 409,
- 162, 145, 435, 416, 435, 139, 170, 399, 414, 481,
- 438, 389, 0, 168, 0, 0, 403, 357, 403, 59,
- 357, 490, 301, 534, 391, 0, 0, 0, 301, 0,
- 0, 460, 0, 145, 59, 0, 179, 403, 177, 59,
- 59, 488, 489, 0, 404, 105, 404, 0, 59, 185,
- 451, 59, 59, 450, 59, 59, 59, 59, 59, 283,
- 284, 59, 287, 285, 145, 404, 286, 107, 167, 406,
- 164, 59, 59, 451, 450, 265, 59, 59, 301, 59,
- 269, 68, 96, 95, 479, 59, 59, 331, 478, 59,
- 87, 76, 59, 329, 59, 97, 434, 83, 89, 431,
- 59, 470, 59, 59, 59, 94, 88, 59, 93, 92,
- 59, 59, 90, 59, 59, 91, 493, 59, 59, 71,
- 67, 59, 59, 491, 492, 99, 59, 101, 179, 319,
- 301, 59, 59, 340, 69, 60, 59, 59, 450, 66,
- 59, 59, 451, 304, 105, 499, 269, 297, 297, 297,
- 59, 59, 269, 269, 269, 269, 269, 0, 315, 272,
- 498, 508, 294, 0, 0, 0, 107, 174, 59, 325,
- 318, 316, 297, 269, 59, 290, 0, 269, 297, 269,
- 0, 59, 0, 269, 59, 0, 269, 292, 59, 269,
- 179, 277, 59, 0, 299, 302, 312, 269, 59, 288,
- 296, 328, 609, 269, 499, 289, 597, 633, 606, 599,
- 499, 600, 565, 600, 0, 0, 499, 0, 0, 568,
- 561, 562, 563, 564, 0, 498, 508, 0, 471, 0,
- 0, 498, 508, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 499, 0, 0, 603, 0, 0, 0, 600, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 608, 0, 0, 0, 0, 0,
+ 0, 0, 500, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 499, 509, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -636,148 +663,174 @@ const short QDeclarativeJSGrammar::action_info [] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0};
+ 0, 0, 0, 0, 0};
const short QDeclarativeJSGrammar::action_check [] = {
- 7, 7, 36, 90, 7, 29, 36, 7, 36, 7,
- 33, 8, 7, 7, 36, 7, 90, 7, 0, 7,
- 16, 60, 55, 33, 8, 29, 7, 36, 7, 55,
- 79, 48, 1, 7, 55, 2, 7, 17, 37, 7,
- 33, 60, 29, 7, 33, 7, 66, 33, 33, 7,
- 66, 29, 7, 36, 20, 7, 7, 29, 33, 36,
- 36, 24, 5, 36, 5, 7, 36, 5, 1, 60,
- 7, 36, 7, 2, 79, 2, 33, 8, 8, 7,
- 1, 7, 36, 36, 8, 1, 36, -1, 8, 36,
- -1, 2, 36, 8, 55, 7, -1, -1, -1, 17,
- 60, 60, 48, 48, 60, 7, -1, 55, 8, -1,
- 33, 36, 61, 6, 48, -1, 33, 15, 8, 10,
- 8, 60, 36, 36, 7, 8, 8, 20, 8, 61,
- 8, 33, 8, -1, 8, 40, 34, 77, 60, 8,
- 8, 8, 61, 79, 50, -1, 51, 50, 54, 8,
- 60, 54, 61, 62, 61, 62, 56, 61, 62, 40,
- 61, 62, 61, 62, 55, 40, 56, 61, 62, 12,
- 51, 42, 60, 15, 61, 62, 51, 7, 60, -1,
- 60, 8, 53, 61, 60, 31, 60, 40, 56, 61,
- 62, 60, 34, 60, 29, 61, 62, 56, 51, 61,
- 62, 61, 62, 25, 25, 27, 27, 8, 25, 25,
- 27, 27, 12, 25, 57, 27, 38, 38, 29, 29,
- 63, 38, 38, 25, 15, 27, 38, 12, 25, -1,
- 27, 61, 62, 8, 61, 62, 38, 25, 8, 27,
- 75, 38, 25, 34, 27, 36, 25, 15, 27, 8,
- 38, 86, 61, 62, 8, 38, 25, 57, 27, 38,
- 61, 62, 15, 63, 75, 75, 34, 29, 36, 38,
- 36, 29, 57, 8, 29, 86, 86, 25, 63, 27,
- 7, 34, 91, 36, 29, -1, 61, 62, -1, -1,
- 38, 61, 62, -1, -1, 61, 62, 25, -1, 27,
- 47, -1, 61, 62, 29, -1, 60, -1, -1, -1,
- 38, 18, 19, 75, 61, 62, 29, 75, -1, 29,
- 75, 66, 67, 68, 86, -1, 61, 62, 86, 15,
- -1, 86, 29, -1, 61, 62, 18, 19, 45, 46,
- 29, 66, 67, 68, 91, 29, 15, 33, 34, 29,
- 36, -1, 29, 66, 67, 68, 66, 67, 68, 29,
- -1, -1, 29, 45, 46, 34, 29, 36, -1, 66,
- 67, 68, 29, -1, 15, 29, -1, 66, 67, 68,
- -1, -1, 66, 67, 68, -1, 66, 67, 68, 66,
- 67, 68, 33, 34, -1, 36, 66, 67, 68, 66,
- 67, 68, -1, 66, 67, 68, 23, 24, -1, 66,
- 67, 68, 66, 67, 68, 32, 23, 24, 35, -1,
- 37, -1, -1, 29, -1, 32, 29, -1, 35, 29,
- 37, 18, 19, 36, 23, 24, 36, 29, -1, -1,
- -1, -1, -1, 32, -1, -1, 35, -1, 37, 29,
- -1, -1, -1, -1, -1, 61, 62, -1, 45, 46,
- 66, 67, 68, 66, 67, 68, 66, 67, 68, 61,
- 62, 23, 24, 29, 66, 67, 68, -1, -1, 31,
- 32, 61, 62, 35, -1, 37, 66, 67, 68, 23,
- 24, 29, -1, -1, -1, -1, -1, 31, 32, -1,
- -1, 35, -1, 37, -1, 61, 62, 23, 24, 29,
- 66, 67, 68, 23, 24, 31, 32, -1, -1, 35,
- -1, 37, 32, 61, 62, 35, -1, 37, 66, 67,
- 68, 92, 93, 94, 95, 96, 97, -1, -1, 3,
- -1, 61, 62, -1, -1, -1, 66, 67, 68, 13,
- -1, -1, -1, 17, -1, -1, -1, 3, -1, -1,
- -1, -1, 26, -1, 28, -1, -1, 13, -1, -1,
- -1, 17, -1, -1, -1, 39, -1, 41, 42, -1,
- 26, -1, 28, -1, -1, 49, -1, -1, 52, 53,
- 23, 24, -1, 39, 58, 41, 42, -1, 31, 32,
- 64, -1, 35, 49, 37, -1, 52, 53, -1, -1,
- -1, -1, 58, -1, -1, -1, 80, -1, 64, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 12,
- 13, -1, -1, -1, 80, -1, -1, -1, -1, 22,
- -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
- 33, 34, -1, 36, -1, -1, -1, -1, -1, -1,
- 43, -1, -1, -1, 47, -1, -1, 3, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 13, -1, -1,
- -1, 17, 65, 66, 67, 68, -1, 70, -1, -1,
- 26, -1, 28, -1, -1, 31, -1, -1, 81, 82,
- 83, -1, -1, 39, 87, 41, 42, -1, -1, -1,
- -1, -1, -1, 49, -1, -1, 52, 53, -1, -1,
- -1, -1, 58, -1, -1, -1, -1, -1, 64, -1,
+ 55, 7, 33, 7, 55, 7, 60, 36, 90, 55,
+ 7, 16, 36, 7, 7, 7, 7, 36, 7, 60,
+ 36, 8, 33, 66, 36, 33, 60, 36, 7, 36,
+ 7, 7, 33, 36, 24, 7, 7, 37, 8, 60,
+ 66, 29, 17, 5, 7, 60, 7, 33, 33, 33,
+ 7, 20, 33, 36, 7, 7, 36, 7, 36, 33,
+ 7, 17, 60, 36, 1, 33, 79, 2, 8, 7,
+ 36, 1, 8, 55, 7, 2, 8, 2, 7, 7,
+ 79, 36, 77, 79, 48, 36, 7, 36, 55, 48,
+ 36, 36, 33, 36, 8, 60, 1, 31, 0, 2,
+ 8, 61, 60, 1, 48, 6, 10, 61, 7, 8,
+ -1, 8, 8, 61, 8, -1, -1, 48, 40, 20,
+ 8, 60, 8, 42, -1, 40, -1, 50, 8, 51,
+ 8, 54, 8, 15, 53, 8, 51, 61, 62, 8,
+ 5, 61, 62, 61, 62, 61, 62, 40, 90, 61,
+ 62, 55, 34, 79, 61, 62, 40, 8, 51, 8,
+ 8, 61, 62, 60, 60, 50, 60, 51, 56, 54,
+ 56, 61, 62, 8, 61, 62, 56, 15, 61, 62,
+ 61, 62, 60, 56, 60, 15, 25, 8, 27, 29,
+ 7, 60, 25, 29, 27, 7, 34, 12, 36, 38,
+ 25, 25, 27, 27, 34, 38, 36, 12, 8, 12,
+ 61, 60, 60, 38, 38, 8, 25, 25, 27, 27,
+ -1, 33, 7, -1, -1, 29, 61, 62, 29, 38,
+ 38, -1, 29, 8, -1, 75, 15, 8, 36, 75,
+ 61, 62, 57, -1, 61, 62, 86, 29, 63, -1,
+ 86, 15, 57, -1, 57, 34, 18, 19, 63, -1,
+ 63, 61, 62, 61, 62, 61, 62, -1, 61, 62,
+ 34, 75, 36, 15, 75, -1, 61, 62, 75, 15,
+ 92, -1, 86, 45, 46, 86, 61, 62, 29, 86,
+ 61, 62, 34, 75, 36, 91, 47, 33, 34, 15,
+ 36, 18, 19, -1, 86, 18, 19, 29, -1, -1,
+ 61, 62, -1, -1, 18, 19, -1, 33, 34, 29,
+ 36, -1, 25, 29, 27, 66, 67, 68, 45, 46,
+ -1, -1, 45, 46, -1, 38, -1, -1, 23, 24,
+ 91, 45, 46, -1, 66, 67, 68, 32, -1, -1,
+ 35, 92, 37, 29, 23, 24, 66, 67, 68, -1,
+ 66, 67, 68, 32, 23, 24, 35, 29, 37, -1,
+ 92, 23, 24, 32, 36, -1, 35, -1, 37, -1,
+ 32, 29, 92, 35, -1, 37, 92, 23, 24, 29,
+ 66, 67, 68, -1, -1, 29, 32, -1, 29, 35,
+ -1, 37, 36, -1, 66, 67, 68, 93, 94, 95,
+ 96, 97, 98, 61, 62, -1, 92, 29, 66, 67,
+ 68, 61, 62, -1, -1, -1, 66, 67, 68, -1,
+ 92, -1, 66, 67, 68, 66, 67, 68, -1, -1,
+ -1, -1, -1, -1, 92, -1, -1, -1, -1, 61,
+ 62, -1, 92, 29, 66, 67, 68, -1, 92, -1,
+ -1, 92, 29, -1, -1, 29, -1, -1, -1, -1,
+ 23, 24, -1, -1, -1, -1, -1, -1, 31, 32,
+ 92, -1, 35, -1, 37, 61, 62, -1, -1, -1,
+ 66, 67, 68, -1, 61, 62, -1, 61, 62, 66,
+ 67, 68, 66, 67, 68, -1, -1, -1, -1, -1,
+ 12, 13, -1, -1, -1, -1, 92, -1, -1, -1,
+ 22, -1, -1, -1, -1, 92, -1, 29, 92, -1,
+ -1, 33, 34, -1, 36, -1, -1, -1, -1, -1,
+ -1, 43, -1, -1, -1, 47, -1, -1, 3, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 13, -1,
+ -1, -1, 17, 65, 66, 67, 68, -1, 70, -1,
+ -1, 26, -1, 28, -1, -1, -1, -1, -1, 81,
+ 82, 83, -1, -1, 39, 87, 41, 42, -1, -1,
+ 92, -1, -1, -1, 49, 12, 13, 52, 53, -1,
+ -1, -1, -1, 58, -1, 22, -1, -1, -1, 64,
+ -1, -1, 29, -1, -1, -1, 33, 34, -1, 36,
+ -1, -1, -1, -1, -1, 80, 43, -1, -1, -1,
+ 47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3, -1, 65, 66,
+ 67, 68, -1, 70, -1, -1, 13, -1, -1, -1,
+ 17, -1, -1, -1, 81, 82, 83, -1, -1, 26,
+ 87, 28, -1, -1, 31, 92, -1, -1, -1, -1,
+ -1, -1, 39, -1, 41, 42, -1, -1, -1, -1,
+ -1, -1, 49, -1, -1, 52, 53, -1, -1, -1,
+ -1, 58, -1, -1, -1, -1, -1, 64, -1, -1,
-1, -1, -1, -1, -1, -1, 12, 13, -1, -1,
- -1, -1, -1, -1, 80, -1, 22, -1, -1, -1,
+ -1, -1, -1, 80, -1, -1, 22, -1, -1, -1,
-1, -1, -1, 29, -1, -1, -1, 33, 34, -1,
36, -1, -1, -1, 12, 13, -1, 43, -1, -1,
-1, 47, -1, -1, 22, -1, -1, -1, -1, -1,
-1, 29, -1, -1, -1, 33, 34, -1, 36, 65,
66, 67, 68, -1, 70, 43, -1, -1, -1, 47,
-1, -1, -1, -1, -1, 81, 82, 83, -1, -1,
- -1, 87, -1, -1, -1, -1, -1, 65, 66, 67,
- 68, -1, 70, -1, 10, -1, 12, 13, -1, -1,
- -1, -1, -1, 81, 82, 83, 22, -1, -1, 87,
- -1, -1, -1, 29, -1, -1, -1, 33, 34, -1,
- 36, -1, 12, 13, -1, -1, -1, 43, -1, -1,
- -1, 47, 22, -1, -1, -1, -1, -1, -1, 29,
- -1, -1, -1, 33, 34, -1, 36, -1, -1, 65,
- 66, 67, 68, 43, 70, -1, -1, 47, -1, 75,
- -1, -1, -1, -1, -1, 81, 82, 83, 84, -1,
- -1, 87, -1, -1, -1, 65, 66, 67, 68, -1,
- 70, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 81, 82, 83, -1, -1, -1, 87, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 10, -1, 12, 13, -1, -1, -1, -1, -1, -1,
- -1, -1, 22, -1, -1, -1, -1, -1, -1, 29,
- -1, -1, -1, 33, 34, -1, 36, -1, -1, -1,
- -1, -1, -1, 43, -1, -1, -1, 47, -1, -1,
- -1, -1, -1, -1, -1, 55, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 65, 66, 67, 68, -1,
- 70, -1, -1, -1, -1, 75, -1, -1, -1, -1,
- -1, 81, 82, 83, 84, -1, -1, 87, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 10, -1, 12, 13, -1, -1, -1, -1, -1, -1,
- -1, -1, 22, -1, -1, -1, -1, -1, -1, 29,
- -1, -1, -1, 33, 34, -1, 36, -1, -1, -1,
+ -1, 87, -1, -1, -1, -1, 92, 65, 66, 67,
+ 68, -1, 70, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 81, 82, 83, -1, -1, -1, 87,
+ -1, -1, -1, -1, 92, 12, 13, -1, -1, -1,
+ -1, -1, -1, 12, 13, 22, -1, -1, -1, -1,
+ -1, -1, 29, 22, -1, -1, 33, 34, -1, 36,
+ 29, -1, -1, -1, 33, 34, 43, 36, -1, -1,
+ 47, -1, -1, -1, 43, -1, -1, -1, 47, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
+ 67, 68, -1, 70, -1, -1, 65, 66, 67, 68,
+ -1, 70, -1, -1, 81, 82, 83, -1, -1, -1,
+ 87, -1, 81, 82, 83, 92, -1, -1, 87, -1,
+ -1, -1, -1, 92, 12, 13, -1, -1, -1, -1,
+ -1, -1, 12, 13, 22, -1, -1, -1, -1, -1,
+ -1, 29, 22, -1, -1, 33, 34, -1, 36, 29,
+ -1, -1, -1, 33, 34, 43, 36, -1, -1, 47,
-1, -1, -1, 43, -1, -1, -1, 47, -1, -1,
- -1, -1, -1, -1, -1, 55, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 65, 66, 67, 68, -1,
- 70, -1, -1, -1, -1, 75, -1, -1, -1, -1,
- -1, 81, 82, 83, 84, -1, -1, 87, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
- -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
- -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
- 51, -1, 53, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, 66, 67, 68, -1, 70,
- -1, 72, -1, 74, -1, 76, -1, -1, -1, -1,
- 81, 82, 83, -1, -1, -1, 87, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 7,
- -1, -1, -1, 11, 12, 13, -1, -1, -1, -1,
- -1, -1, -1, -1, 22, -1, -1, -1, -1, -1,
- -1, 29, -1, -1, -1, 33, 34, -1, 36, -1,
- -1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
- -1, -1, -1, 51, -1, 53, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 65, 66, 67,
- 68, -1, 70, -1, 72, -1, 74, -1, 76, -1,
- -1, -1, -1, 81, 82, 83, -1, -1, -1, 87,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 11, 12, 13, -1, -1, -1, -1, -1,
+ 68, -1, 70, -1, -1, 65, 66, 67, 68, -1,
+ 70, -1, -1, 81, 82, 83, -1, -1, -1, 87,
+ -1, 81, 82, 83, 92, -1, -1, 87, -1, -1,
+ -1, -1, 92, -1, -1, -1, -1, -1, -1, -1,
+ -1, 10, -1, 12, 13, -1, -1, -1, -1, -1,
-1, -1, -1, 22, -1, -1, -1, -1, -1, -1,
29, -1, -1, -1, 33, 34, -1, 36, -1, -1,
- -1, 40, -1, 42, 43, 44, -1, -1, 47, -1,
- -1, -1, 51, -1, 53, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 65, 66, 67, 68,
- -1, 70, -1, 72, -1, 74, 75, 76, -1, -1,
- -1, -1, 81, 82, 83, -1, -1, -1, 87, -1,
+ -1, -1, -1, -1, 43, -1, -1, -1, 47, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 65, 66, 67, 68,
+ -1, 70, -1, -1, -1, -1, 75, -1, -1, -1,
+ -1, -1, 81, 82, 83, 84, -1, -1, 87, -1,
+ -1, -1, -1, 92, -1, -1, -1, -1, -1, -1,
+ -1, -1, 10, -1, 12, 13, -1, -1, -1, -1,
+ -1, -1, -1, -1, 22, -1, -1, -1, -1, -1,
+ -1, 29, -1, -1, -1, 33, 34, -1, 36, -1,
+ -1, -1, -1, -1, -1, 43, -1, -1, -1, 47,
+ -1, -1, -1, -1, -1, -1, -1, 55, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 65, 66, 67,
+ 68, -1, 70, -1, -1, -1, -1, 75, -1, -1,
+ -1, -1, -1, 81, 82, 83, 84, -1, -1, 87,
+ -1, -1, -1, -1, 92, -1, -1, -1, -1, -1,
+ -1, -1, -1, 10, -1, 12, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, 22, -1, -1, -1, -1,
+ -1, -1, 29, -1, -1, -1, 33, 34, -1, 36,
+ -1, -1, -1, -1, -1, -1, 43, -1, -1, -1,
+ 47, -1, -1, -1, -1, -1, -1, -1, 55, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
+ 67, 68, -1, 70, -1, -1, -1, -1, 75, -1,
+ -1, -1, -1, -1, 81, 82, 83, 84, -1, -1,
+ 87, -1, -1, -1, -1, 92, -1, -1, -1, -1,
+ -1, -1, -1, -1, 11, 12, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, 22, -1, -1, -1, -1,
+ -1, -1, 29, -1, -1, -1, 33, 34, -1, 36,
+ -1, -1, -1, 40, -1, 42, 43, 44, -1, -1,
+ 47, -1, -1, -1, 51, -1, 53, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
+ 67, 68, -1, 70, -1, 72, -1, 74, -1, 76,
+ -1, -1, -1, -1, 81, 82, 83, -1, -1, -1,
+ 87, -1, -1, -1, -1, 92, -1, -1, -1, -1,
+ -1, -1, -1, -1, 7, -1, -1, -1, 11, 12,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, 22,
+ -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
+ 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
+ 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
+ 53, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 65, 66, 67, 68, -1, 70, -1, 72,
+ -1, 74, -1, 76, -1, -1, -1, -1, 81, 82,
+ 83, -1, -1, -1, 87, -1, -1, -1, -1, 92,
+ -1, -1, -1, -1, -1, -1, -1, -1, 11, 12,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, 22,
+ -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
+ 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
+ 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
+ 53, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 65, 66, 67, 68, -1, 70, -1, 72,
+ -1, 74, 75, 76, -1, -1, -1, -1, 81, 82,
+ 83, -1, -1, -1, 87, -1, -1, -1, -1, 92,
+ -1, -1, -1, -1, -1, -1, -1, -1, 8, -1,
+ -1, 11, 12, 13, -1, -1, -1, -1, -1, -1,
+ -1, -1, 22, -1, -1, -1, -1, -1, -1, 29,
+ -1, -1, -1, 33, 34, -1, 36, -1, -1, -1,
+ 40, -1, 42, 43, 44, -1, -1, 47, -1, -1,
+ -1, 51, -1, 53, -1, -1, 56, -1, -1, -1,
+ -1, -1, -1, -1, -1, 65, 66, 67, 68, -1,
+ 70, -1, 72, -1, 74, -1, 76, -1, -1, -1,
+ -1, 81, 82, 83, -1, -1, -1, 87, -1, -1,
+ -1, -1, 92, -1, -1, -1, -1, -1, -1, -1,
-1, 11, 12, 13, -1, -1, -1, -1, -1, -1,
-1, -1, 22, -1, -1, -1, -1, -1, -1, 29,
30, -1, -1, 33, 34, -1, 36, -1, -1, -1,
@@ -786,25 +839,16 @@ const short QDeclarativeJSGrammar::action_check [] = {
-1, 61, -1, -1, -1, 65, 66, 67, 68, -1,
70, -1, 72, -1, 74, -1, 76, -1, -1, -1,
-1, 81, 82, 83, -1, -1, -1, 87, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 8, -1, -1, 11, 12, 13, -1, -1, -1, -1,
- -1, -1, -1, -1, 22, -1, -1, -1, -1, -1,
- -1, 29, -1, -1, -1, 33, 34, -1, 36, -1,
- -1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
- -1, -1, -1, 51, -1, 53, -1, -1, 56, -1,
- -1, -1, -1, -1, -1, -1, -1, 65, 66, 67,
- 68, -1, 70, -1, 72, -1, 74, -1, 76, -1,
- -1, -1, -1, 81, 82, 83, -1, -1, -1, 87,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 8, -1, -1, 11, 12, 13, -1, -1,
- -1, -1, -1, -1, -1, -1, 22, -1, -1, -1,
- -1, -1, -1, 29, -1, -1, -1, 33, 34, -1,
- 36, -1, -1, -1, 40, -1, 42, 43, 44, -1,
- -1, 47, -1, -1, -1, 51, -1, 53, -1, -1,
- 56, -1, -1, -1, -1, -1, -1, -1, -1, 65,
- 66, 67, 68, -1, 70, -1, 72, -1, 74, -1,
- 76, -1, -1, -1, -1, 81, 82, 83, -1, -1,
- -1, 87, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 92, -1, -1, -1, -1, -1, -1, -1,
+ -1, 8, -1, -1, 11, 12, 13, -1, -1, -1,
+ -1, -1, -1, -1, -1, 22, -1, -1, -1, -1,
+ -1, -1, 29, -1, -1, -1, 33, 34, -1, 36,
+ -1, -1, -1, 40, -1, 42, 43, 44, -1, -1,
+ 47, -1, -1, -1, 51, -1, 53, -1, -1, 56,
+ -1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
+ 67, 68, -1, 70, -1, 72, -1, 74, -1, 76,
+ -1, -1, -1, -1, 81, 82, 83, -1, -1, -1,
+ 87, -1, -1, -1, -1, 92, -1, -1, -1, -1,
-1, -1, -1, -1, 8, -1, -1, 11, 12, 13,
-1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
-1, -1, -1, -1, -1, 29, -1, -1, -1, 33,
@@ -813,120 +857,129 @@ const short QDeclarativeJSGrammar::action_check [] = {
-1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
-1, 65, 66, 67, 68, -1, 70, -1, 72, -1,
74, -1, 76, -1, -1, -1, -1, 81, 82, 83,
- -1, -1, -1, 87, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 8, -1, -1, 11,
- 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
- 22, -1, -1, -1, -1, -1, -1, 29, -1, -1,
- -1, 33, 34, -1, 36, -1, -1, -1, 40, -1,
- 42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
- -1, 53, -1, -1, 56, -1, -1, -1, -1, -1,
- -1, -1, -1, 65, 66, 67, 68, -1, 70, -1,
- 72, -1, 74, -1, 76, -1, -1, -1, -1, 81,
- 82, 83, -1, -1, -1, 87, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4, 5,
- 6, -1, -1, 9, 10, 11, -1, -1, 14, -1,
- 16, -1, -1, -1, 20, 21, 22, -1, -1, -1,
- -1, -1, -1, 29, 30, 31, 32, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 43, -1, -1,
+ -1, -1, -1, 87, -1, -1, -1, -1, 92, -1,
+ -1, -1, -1, -1, -1, -1, -1, 8, -1, -1,
+ 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
+ -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
+ -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
+ -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
+ 51, -1, 53, -1, -1, 56, -1, -1, -1, -1,
+ -1, -1, -1, -1, 65, 66, 67, 68, -1, 70,
+ -1, 72, -1, 74, -1, 76, -1, -1, -1, -1,
+ 81, 82, 83, -1, -1, -1, 87, -1, -1, -1,
+ -1, 92, -1, -1, -1, -1, -1, -1, -1, -1,
+ 4, 5, 6, -1, -1, 9, 10, 11, -1, -1,
+ 14, -1, 16, -1, -1, -1, 20, 21, 22, -1,
+ -1, -1, -1, -1, -1, 29, 30, 31, 32, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 43,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 59, -1, -1, -1, -1,
+ -1, -1, 66, 67, 68, 69, 70, 71, -1, 73,
+ 74, 75, 76, 77, 78, -1, -1, 81, 82, 83,
+ 84, 85, 86, -1, -1, -1, -1, -1, 92, -1,
+ -1, -1, -1, -1, -1, -1, -1, 4, 5, 6,
+ -1, -1, 9, 10, 11, -1, -1, 14, -1, 16,
+ -1, -1, -1, 20, 21, 22, -1, -1, -1, -1,
+ -1, -1, 29, 30, 31, 32, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 43, -1, -1, -1,
+ 47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 59, -1, -1, -1, -1, -1, 65, 66,
+ 67, -1, 69, 70, 71, -1, 73, 74, 75, 76,
+ 77, 78, -1, -1, 81, 82, 83, 84, 85, 86,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 59, -1, -1, -1, -1, -1, -1,
- 66, 67, 68, 69, 70, 71, -1, 73, 74, 75,
- 76, 77, 78, -1, -1, 81, 82, 83, 84, 85,
- 86, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 4, 5, 6, -1, -1, 9,
10, 11, -1, -1, 14, -1, 16, -1, -1, -1,
20, 21, 22, -1, -1, -1, -1, -1, -1, 29,
30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 43, -1, -1, -1, 47, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
+ -1, -1, -1, -1, -1, 55, -1, -1, -1, 59,
-1, -1, -1, -1, -1, 65, 66, 67, -1, 69,
70, 71, -1, 73, 74, 75, 76, 77, 78, -1,
-1, 81, 82, 83, 84, 85, 86, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 4, 5, 6, -1, -1, 9, 10, 11, -1, -1,
- 14, -1, 16, -1, -1, -1, 20, 21, 22, -1,
- -1, -1, -1, -1, -1, 29, 30, 31, 32, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 43,
- -1, -1, -1, 47, -1, -1, -1, -1, -1, -1,
- -1, 55, -1, -1, -1, 59, -1, -1, -1, -1,
- -1, 65, 66, 67, -1, 69, 70, 71, -1, 73,
- 74, 75, 76, 77, 78, -1, -1, 81, 82, 83,
- 84, 85, 86, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 4, -1, -1, -1,
- -1, 9, -1, 11, 12, 13, 14, -1, -1, -1,
- -1, -1, -1, 21, 22, -1, -1, -1, -1, -1,
- -1, 29, 30, -1, -1, 33, 34, -1, 36, -1,
- -1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
- -1, -1, -1, 51, -1, 53, -1, -1, -1, -1,
- -1, 59, -1, 61, -1, -1, -1, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, -1, -1, 81, 82, 83, 84, 85, -1, 87,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 4, -1, -1, -1, -1, 9, -1, 11,
- 12, 13, 14, -1, -1, -1, -1, -1, -1, 21,
- 22, -1, -1, -1, -1, -1, -1, 29, 30, -1,
- -1, 33, 34, -1, 36, -1, -1, -1, 40, -1,
- 42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
- -1, 53, -1, -1, -1, -1, -1, 59, -1, 61,
- -1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, -1, -1, 81,
- 82, 83, 84, 85, -1, 87, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 4, 5,
- 6, -1, -1, 9, 10, 11, 12, 13, 14, -1,
- 16, -1, -1, -1, 20, 21, 22, -1, -1, -1,
- -1, -1, -1, 29, 30, 31, 32, 33, 34, -1,
+ -1, 4, -1, -1, -1, -1, 9, -1, 11, 12,
+ 13, 14, -1, -1, -1, -1, -1, -1, 21, 22,
+ -1, -1, -1, -1, -1, -1, 29, 30, -1, -1,
+ 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
+ 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
+ 53, -1, -1, -1, -1, -1, 59, -1, 61, -1,
+ -1, -1, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, -1, -1, 81, 82,
+ 83, 84, 85, -1, 87, -1, -1, -1, -1, 92,
+ -1, -1, -1, -1, -1, -1, -1, -1, 4, -1,
+ -1, -1, -1, 9, -1, 11, 12, 13, 14, -1,
+ -1, -1, -1, -1, -1, 21, 22, -1, -1, -1,
+ -1, -1, -1, 29, 30, -1, -1, 33, 34, -1,
36, -1, -1, -1, 40, -1, 42, 43, 44, -1,
-1, 47, -1, -1, -1, 51, -1, 53, -1, -1,
-1, -1, -1, 59, -1, 61, -1, -1, -1, 65,
66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, -1, -1, 81, 82, 83, 84, 85,
- 86, 87, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4, 5, 6, -1, -1, 9,
- 10, 11, 12, 13, 14, -1, 16, -1, -1, -1,
- 20, 21, 22, -1, -1, -1, -1, -1, -1, 29,
- 30, 31, 32, 33, 34, -1, 36, -1, -1, -1,
- 40, -1, 42, 43, 44, -1, -1, 47, -1, -1,
- -1, 51, -1, 53, -1, 55, -1, -1, -1, 59,
- -1, 61, -1, -1, -1, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, -1,
- -1, 81, 82, 83, 84, 85, 86, 87, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 87, -1, -1, -1, -1, 92, -1, -1, -1,
+ -1, -1, -1, -1, -1, 4, 5, 6, -1, -1,
+ 9, 10, 11, 12, 13, 14, -1, 16, -1, -1,
+ -1, 20, 21, 22, -1, -1, -1, -1, -1, -1,
+ 29, 30, 31, 32, 33, 34, -1, 36, -1, -1,
+ -1, 40, -1, 42, 43, 44, -1, -1, 47, -1,
+ -1, -1, 51, -1, 53, -1, -1, -1, -1, -1,
+ 59, -1, 61, -1, -1, -1, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ -1, -1, 81, 82, 83, 84, 85, 86, 87, -1,
+ -1, -1, -1, 92, -1, -1, -1, -1, -1, -1,
+ -1, -1, 4, 5, 6, -1, -1, 9, 10, 11,
+ 12, 13, 14, -1, 16, -1, -1, -1, 20, 21,
+ 22, -1, -1, -1, -1, -1, -1, 29, 30, 31,
+ 32, 33, 34, -1, 36, -1, -1, -1, 40, -1,
+ 42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
+ -1, 53, -1, 55, -1, -1, -1, 59, -1, 61,
+ -1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, -1, -1, 81,
+ 82, 83, 84, 85, 86, 87, -1, -1, -1, -1,
+ 92, -1, -1, -1, -1, -1, -1, -1, -1,
- 3, 2, 15, 25, 25, 3, 25, 3, 2, 11,
- 2, 15, 3, 13, 67, 3, 15, 104, 15, 2,
- 15, 2, 4, 3, 35, 15, 15, 3, 21, 3,
- 93, 15, 2, 2, 19, 13, 15, 96, 25, 25,
- 15, 3, 15, 15, 15, 100, 3, 3, 15, 2,
- 2, 15, 3, 21, 4, 15, 15, 15, 35, 2,
- 21, 2, 2, 2, 98, 3, 2, 2, 2, 35,
- 35, 4, 35, 2, 21, 3, 3, 3, 15, 2,
- 35, 35, 3, 3, 3, 3, 35, 35, 2, 35,
- 21, 35, -1, 35, -1, -1, 13, 2, 13, 44,
- 2, 46, 3, 3, 36, -1, -1, -1, 3, -1,
- -1, 15, -1, 35, 44, -1, 46, 13, 40, 44,
- 44, 46, 46, -1, 41, 15, 41, -1, 44, 15,
- 46, 44, 44, 46, 44, 44, 44, 44, 44, 49,
- 49, 44, 49, 49, 35, 41, 49, 37, 60, 40,
- 58, 44, 44, 46, 46, 44, 44, 44, 3, 44,
- 49, 46, 50, 50, 31, 44, 44, 68, 35, 44,
- 48, 50, 44, 68, 44, 50, 81, 49, 48, 81,
- 44, 85, 44, 44, 44, 49, 48, 44, 49, 49,
- 44, 44, 49, 44, 44, 49, 46, 44, 44, 52,
- 46, 44, 44, 46, 46, 56, 44, 54, 46, 15,
- 3, 44, 44, 99, 47, 47, 44, 44, 46, 46,
- 44, 44, 46, 68, 15, 13, 49, 44, 44, 44,
- 44, 44, 49, 49, 49, 49, 49, -1, 61, 53,
- 28, 29, 55, -1, -1, -1, 37, 38, 44, 66,
- 66, 66, 44, 49, 44, 51, -1, 49, 44, 49,
- -1, 44, -1, 49, 44, -1, 49, 57, 44, 49,
- 46, 51, 44, -1, 66, 68, 59, 49, 44, 51,
- 66, 87, 5, 49, 13, 51, 13, 16, 5, 16,
- 13, 20, 13, 20, -1, -1, 13, -1, -1, 20,
- 21, 22, 23, 24, -1, 28, 29, -1, 35, -1,
- -1, 28, 29, -1, -1, -1, -1, -1, -1, -1,
+ 13, 15, 25, 3, 15, 15, 3, 25, 3, 15,
+ 2, 15, 2, 25, 3, 11, 19, 15, 67, 13,
+ 3, 104, 15, 4, 15, 3, 2, 15, 2, 15,
+ 3, 15, 3, 35, 21, 3, 15, 36, 3, 19,
+ 25, 2, 2, 25, 21, 15, 15, 98, 15, 15,
+ 2, 4, 15, 15, 2, 93, 3, 21, 2, 2,
+ 35, 3, 2, 35, 15, 3, 21, 3, 2, 15,
+ 15, 2, 2, 2, 15, 3, 35, 35, 35, 35,
+ 3, 35, 3, 3, 21, 35, 35, 96, 15, 3,
+ 2, 4, 3, 2, 2, 100, 35, 3, 3, 2,
+ 35, 2, -1, -1, -1, 15, -1, -1, -1, -1,
+ -1, 44, 44, 46, 46, 13, -1, -1, 44, 44,
+ 44, 46, 46, 15, 15, 44, 44, 44, 54, 44,
+ 49, 49, 49, 3, 49, 15, -1, 44, -1, -1,
+ 44, 48, 44, 41, 48, 44, 37, 46, 44, 44,
+ 35, 44, 35, 46, 49, 40, 58, 40, 44, 3,
+ 44, -1, 48, 68, 60, 49, 44, 44, 44, 44,
+ -1, 49, 49, 49, 49, 85, 44, 44, 81, 46,
+ 81, 44, 44, 46, 52, 44, 44, 46, 50, 44,
+ 31, 46, 50, 13, 35, 87, 44, 2, 68, 47,
+ 20, 44, 44, 46, 46, 44, 13, 44, 47, 46,
+ 44, 44, 46, 44, 44, 46, 49, 13, 44, 99,
+ 46, 44, 44, 46, 68, 44, 56, 44, 50, 46,
+ 49, 44, -1, 44, 41, 44, 15, 50, 49, -1,
+ 49, 13, 44, 13, 44, 41, 16, 49, 57, 49,
+ 20, -1, -1, -1, -1, 66, 28, 29, 37, 38,
+ 44, 61, -1, 44, 66, 49, 44, 51, 49, 44,
+ 51, 49, -1, 51, 49, 44, 44, 44, -1, 44,
+ 49, 49, 49, 13, 49, -1, 16, 55, 53, 44,
+ 20, 66, 59, 44, 49, 5, -1, 66, 49, 13,
+ 51, 3, 16, 13, -1, 13, 20, -1, -1, -1,
+ -1, 66, 20, 21, 22, 23, 24, -1, 28, 29,
+ -1, 35, -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, -1, 68, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 13, -1, -1, 16, -1, -1, -1, 20, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 5, -1, -1, -1, -1, -1,
+ -1, -1, 13, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 28, 29, -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,
@@ -934,6 +987,6 @@ const short QDeclarativeJSGrammar::action_check [] = {
-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};
QT_END_NAMESPACE
diff --git a/src/declarative/qml/parser/qdeclarativejsgrammar_p.h b/src/declarative/qml/parser/qdeclarativejsgrammar_p.h
index d6c3d6b..2b2e3d1 100644
--- a/src/declarative/qml/parser/qdeclarativejsgrammar_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsgrammar_p.h
@@ -61,10 +61,10 @@ QT_BEGIN_NAMESPACE
class QDeclarativeJSGrammar
{
public:
- enum VariousConstants {
+ enum {
EOF_SYMBOL = 0,
- REDUCE_HERE = 99,
- SHIFT_THERE = 98,
+ REDUCE_HERE = 100,
+ SHIFT_THERE = 99,
T_AND = 1,
T_AND_AND = 2,
T_AND_EQ = 3,
@@ -90,12 +90,12 @@ public:
T_EQ_EQ = 18,
T_EQ_EQ_EQ = 19,
T_FALSE = 83,
- T_FEED_JS_EXPRESSION = 95,
- T_FEED_JS_PROGRAM = 97,
- T_FEED_JS_SOURCE_ELEMENT = 96,
- T_FEED_JS_STATEMENT = 94,
- T_FEED_UI_OBJECT_MEMBER = 93,
- T_FEED_UI_PROGRAM = 92,
+ T_FEED_JS_EXPRESSION = 96,
+ T_FEED_JS_PROGRAM = 98,
+ T_FEED_JS_SOURCE_ELEMENT = 97,
+ T_FEED_JS_STATEMENT = 95,
+ T_FEED_UI_OBJECT_MEMBER = 94,
+ T_FEED_UI_PROGRAM = 93,
T_FINALLY = 20,
T_FOR = 21,
T_FUNCTION = 22,
@@ -127,6 +127,7 @@ public:
T_NOT_EQ_EQ = 46,
T_NULL = 81,
T_NUMERIC_LITERAL = 47,
+ T_ON = 92,
T_OR = 48,
T_OR_EQ = 49,
T_OR_OR = 50,
@@ -163,15 +164,15 @@ public:
T_XOR = 79,
T_XOR_EQ = 80,
- ACCEPT_STATE = 635,
- RULE_COUNT = 343,
- STATE_COUNT = 636,
- TERMINAL_COUNT = 100,
+ ACCEPT_STATE = 639,
+ RULE_COUNT = 345,
+ STATE_COUNT = 640,
+ TERMINAL_COUNT = 101,
NON_TERMINAL_COUNT = 106,
- GOTO_INDEX_OFFSET = 636,
- GOTO_INFO_OFFSET = 2520,
- GOTO_CHECK_OFFSET = 2520
+ GOTO_INDEX_OFFSET = 640,
+ GOTO_INFO_OFFSET = 2699,
+ GOTO_CHECK_OFFSET = 2699
};
static const char *const spell [];
diff --git a/src/declarative/qml/parser/qdeclarativejslexer.cpp b/src/declarative/qml/parser/qdeclarativejslexer.cpp
index 384d00c..34163a4 100644
--- a/src/declarative/qml/parser/qdeclarativejslexer.cpp
+++ b/src/declarative/qml/parser/qdeclarativejslexer.cpp
@@ -166,6 +166,8 @@ int Lexer::findReservedWord(const QChar *c, int size) const
return QDeclarativeJSGrammar::T_IN;
else if (c[0] == QLatin1Char('a') && c[1] == QLatin1Char('s'))
return QDeclarativeJSGrammar::T_AS;
+ else if (c[0] == QLatin1Char('o') && c[1] == QLatin1Char('n'))
+ return QDeclarativeJSGrammar::T_ON;
} break;
case 3: {
diff --git a/src/declarative/qml/parser/qdeclarativejsparser.cpp b/src/declarative/qml/parser/qdeclarativejsparser.cpp
index 4aa4960..fd9e690 100644
--- a/src/declarative/qml/parser/qdeclarativejsparser.cpp
+++ b/src/declarative/qml/parser/qdeclarativejsparser.cpp
@@ -356,7 +356,15 @@ case 32: {
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 33:case 34:case 35:case 36:
+
+case 33: {
+ AST::UiObjectBinding *node = makeAstNode<AST::UiObjectBinding> (driver->nodePool(),
+ sym(3).UiQualifiedId, sym(1).UiQualifiedId, sym(4).UiObjectInitializer);
+ node->colonToken = loc(2);
+ node->hasOnToken = true;
+ sym(1).Node = node;
+} break;
+case 34:case 35:case 36:case 37:
{
AST::UiScriptBinding *node = makeAstNode<AST::UiScriptBinding> (driver->nodePool(),
sym(1).UiQualifiedId, sym(3).Statement);
@@ -364,35 +372,35 @@ case 33:case 34:case 35:case 36:
sym(1).Node = node;
} break;
-case 37:
+case 38:
-case 38: {
+case 39: {
sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
break;
}
-case 40: {
+case 41: {
sym(1).Node = 0;
} break;
-case 41: {
+case 42: {
sym(1).Node = sym(1).UiParameterList->finish ();
} break;
-case 42: {
+case 43: {
AST::UiParameterList *node = makeAstNode<AST::UiParameterList> (driver->nodePool(), sym(1).sval, sym(2).sval);
node->identifierToken = loc(2);
sym(1).Node = node;
} break;
-case 43: {
+case 44: {
AST::UiParameterList *node = makeAstNode<AST::UiParameterList> (driver->nodePool(), sym(1).UiParameterList, sym(3).sval, sym(4).sval);
node->commaToken = loc(2);
node->identifierToken = loc(4);
sym(1).Node = node;
} break;
-case 45: {
+case 46: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), (NameId *)0, sym(2).sval);
node->type = AST::UiPublicMember::Signal;
node->propertyToken = loc(1);
@@ -403,7 +411,7 @@ case 45: {
sym(1).Node = node;
} break;
-case 47: {
+case 48: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), (NameId *)0, sym(2).sval);
node->type = AST::UiPublicMember::Signal;
node->propertyToken = loc(1);
@@ -413,7 +421,7 @@ case 47: {
sym(1).Node = node;
} break;
-case 49: {
+case 50: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(4).sval, sym(6).sval);
node->typeModifier = sym(2).sval;
node->propertyToken = loc(1);
@@ -424,7 +432,7 @@ case 49: {
sym(1).Node = node;
} break;
-case 51: {
+case 52: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval);
node->propertyToken = loc(1);
node->typeToken = loc(2);
@@ -433,7 +441,7 @@ case 51: {
sym(1).Node = node;
} break;
-case 53: {
+case 54: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval);
node->isDefaultMember = true;
node->defaultToken = loc(1);
@@ -444,7 +452,7 @@ case 53: {
sym(1).Node = node;
} break;
-case 55: {
+case 56: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval,
sym(5).Expression);
node->propertyToken = loc(1);
@@ -455,7 +463,7 @@ case 55: {
sym(1).Node = node;
} break;
-case 57: {
+case 58: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
sym(6).Expression);
node->isReadonlyMember = true;
@@ -468,7 +476,7 @@ case 57: {
sym(1).Node = node;
} break;
-case 59: {
+case 60: {
AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(3).sval, sym(4).sval,
sym(6).Expression);
node->isDefaultMember = true;
@@ -481,75 +489,81 @@ case 59: {
sym(1).Node = node;
} break;
-case 60: {
+case 61: {
sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
-case 61: {
+case 62: {
sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
-case 63: {
+case 64: {
QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_PROPERTY]);
sym(1).sval = driver->intern(s.constData(), s.length());
break;
}
-case 64: {
+case 65: {
QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_SIGNAL]);
sym(1).sval = driver->intern(s.constData(), s.length());
break;
}
-case 65: {
+case 66: {
QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_READONLY]);
sym(1).sval = driver->intern(s.constData(), s.length());
break;
}
-case 66: {
+case 67: {
+ QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_READONLY]);
+ sym(1).sval = driver->intern(s.constData(), s.length());
+ break;
+}
+
+case 68: {
AST::ThisExpression *node = makeAstNode<AST::ThisExpression> (driver->nodePool());
node->thisToken = loc(1);
sym(1).Node = node;
} break;
-case 67: {
+case 69: {
AST::IdentifierExpression *node = makeAstNode<AST::IdentifierExpression> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 68: {
+case 70: {
AST::NullExpression *node = makeAstNode<AST::NullExpression> (driver->nodePool());
node->nullToken = loc(1);
sym(1).Node = node;
} break;
-case 69: {
+case 71: {
AST::TrueLiteral *node = makeAstNode<AST::TrueLiteral> (driver->nodePool());
node->trueToken = loc(1);
sym(1).Node = node;
} break;
-case 70: {
+case 72: {
AST::FalseLiteral *node = makeAstNode<AST::FalseLiteral> (driver->nodePool());
node->falseToken = loc(1);
sym(1).Node = node;
} break;
-case 71: {
+case 73: {
AST::NumericLiteral *node = makeAstNode<AST::NumericLiteral> (driver->nodePool(), sym(1).dval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 72:
-case 73: {
+case 74:
+case 75: {
AST::StringLiteral *node = makeAstNode<AST::StringLiteral> (driver->nodePool(), sym(1).sval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 74: {
+case 76: {
bool rx = lexer->scanRegExp(Lexer::NoPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
@@ -560,7 +574,7 @@ case 74: {
sym(1).Node = node;
} break;
-case 75: {
+case 77: {
bool rx = lexer->scanRegExp(Lexer::EqualPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
@@ -571,28 +585,28 @@ case 75: {
sym(1).Node = node;
} break;
-case 76: {
+case 78: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), (AST::Elision *) 0);
node->lbracketToken = loc(1);
node->rbracketToken = loc(2);
sym(1).Node = node;
} break;
-case 77: {
+case 79: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).Elision->finish());
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 78: {
+case 80: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish ());
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 79: {
+case 81: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (),
(AST::Elision *) 0);
node->lbracketToken = loc(1);
@@ -601,7 +615,7 @@ case 79: {
sym(1).Node = node;
} break;
-case 80: {
+case 82: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (),
sym(4).Elision->finish());
node->lbracketToken = loc(1);
@@ -610,7 +624,7 @@ case 80: {
sym(1).Node = node;
} break;
-case 81: {
+case 83: {
AST::ObjectLiteral *node = 0;
if (sym(2).Node)
node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
@@ -622,7 +636,7 @@ case 81: {
sym(1).Node = node;
} break;
-case 82: {
+case 84: {
AST::ObjectLiteral *node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
sym(2).PropertyNameAndValueList->finish ());
node->lbraceToken = loc(1);
@@ -630,14 +644,14 @@ case 82: {
sym(1).Node = node;
} break;
-case 83: {
+case 85: {
AST::NestedExpression *node = makeAstNode<AST::NestedExpression>(driver->nodePool(), sym(2).Expression);
node->lparenToken = loc(1);
node->rparenToken = loc(3);
sym(1).Node = node;
} break;
-case 84: {
+case 86: {
if (AST::ArrayMemberExpression *mem = AST::cast<AST::ArrayMemberExpression *>(sym(1).Expression)) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Warning, mem->lbracketToken,
QLatin1String("Ignored annotation")));
@@ -657,48 +671,48 @@ case 84: {
}
} break;
-case 85: {
+case 87: {
sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), (AST::Elision *) 0, sym(1).Expression);
} break;
-case 86: {
+case 88: {
sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).Elision->finish(), sym(2).Expression);
} break;
-case 87: {
+case 89: {
AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList,
(AST::Elision *) 0, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 88: {
+case 90: {
AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList, sym(3).Elision->finish(),
sym(4).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 89: {
+case 91: {
AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool());
node->commaToken = loc(1);
sym(1).Node = node;
} break;
-case 90: {
+case 92: {
AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool(), sym(1).Elision);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 91: {
+case 93: {
AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
sym(1).PropertyName, sym(3).Expression);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 92: {
+case 94: {
AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression);
node->commaToken = loc(2);
@@ -706,40 +720,36 @@ case 92: {
sym(1).Node = node;
} break;
-case 93: {
+case 95: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 94:
-case 95: {
+case 96:
+case 97: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()));
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 96: {
+case 98: {
AST::StringLiteralPropertyName *node = makeAstNode<AST::StringLiteralPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 97: {
+case 99: {
AST::NumericLiteralPropertyName *node = makeAstNode<AST::NumericLiteralPropertyName> (driver->nodePool(), sym(1).dval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 98: {
+case 100: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 99:
-
-case 100:
-
case 101:
case 102:
@@ -797,25 +807,29 @@ case 127:
case 128:
case 129:
+
+case 130:
+
+case 131:
{
sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
} break;
-case 134: {
+case 136: {
AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 135: {
+case 137: {
AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 136: {
+case 138: {
AST::NewMemberExpression *node = makeAstNode<AST::NewMemberExpression> (driver->nodePool(), sym(2).Expression, sym(4).ArgumentList);
node->newToken = loc(1);
node->lparenToken = loc(3);
@@ -823,316 +837,309 @@ case 136: {
sym(1).Node = node;
} break;
-case 138: {
+case 140: {
AST::NewExpression *node = makeAstNode<AST::NewExpression> (driver->nodePool(), sym(2).Expression);
node->newToken = loc(1);
sym(1).Node = node;
} break;
-case 139: {
+case 141: {
AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 140: {
+case 142: {
AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 141: {
+case 143: {
AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 142: {
+case 144: {
AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 143: {
+case 145: {
sym(1).Node = 0;
} break;
-case 144: {
+case 146: {
sym(1).Node = sym(1).ArgumentList->finish();
} break;
-case 145: {
+case 147: {
sym(1).Node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).Expression);
} break;
-case 146: {
+case 148: {
AST::ArgumentList *node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).ArgumentList, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 150: {
+case 152: {
AST::PostIncrementExpression *node = makeAstNode<AST::PostIncrementExpression> (driver->nodePool(), sym(1).Expression);
node->incrementToken = loc(2);
sym(1).Node = node;
} break;
-case 151: {
+case 153: {
AST::PostDecrementExpression *node = makeAstNode<AST::PostDecrementExpression> (driver->nodePool(), sym(1).Expression);
node->decrementToken = loc(2);
sym(1).Node = node;
} break;
-case 153: {
+case 155: {
AST::DeleteExpression *node = makeAstNode<AST::DeleteExpression> (driver->nodePool(), sym(2).Expression);
node->deleteToken = loc(1);
sym(1).Node = node;
} break;
-case 154: {
+case 156: {
AST::VoidExpression *node = makeAstNode<AST::VoidExpression> (driver->nodePool(), sym(2).Expression);
node->voidToken = loc(1);
sym(1).Node = node;
} break;
-case 155: {
+case 157: {
AST::TypeOfExpression *node = makeAstNode<AST::TypeOfExpression> (driver->nodePool(), sym(2).Expression);
node->typeofToken = loc(1);
sym(1).Node = node;
} break;
-case 156: {
+case 158: {
AST::PreIncrementExpression *node = makeAstNode<AST::PreIncrementExpression> (driver->nodePool(), sym(2).Expression);
node->incrementToken = loc(1);
sym(1).Node = node;
} break;
-case 157: {
+case 159: {
AST::PreDecrementExpression *node = makeAstNode<AST::PreDecrementExpression> (driver->nodePool(), sym(2).Expression);
node->decrementToken = loc(1);
sym(1).Node = node;
} break;
-case 158: {
+case 160: {
AST::UnaryPlusExpression *node = makeAstNode<AST::UnaryPlusExpression> (driver->nodePool(), sym(2).Expression);
node->plusToken = loc(1);
sym(1).Node = node;
} break;
-case 159: {
+case 161: {
AST::UnaryMinusExpression *node = makeAstNode<AST::UnaryMinusExpression> (driver->nodePool(), sym(2).Expression);
node->minusToken = loc(1);
sym(1).Node = node;
} break;
-case 160: {
+case 162: {
AST::TildeExpression *node = makeAstNode<AST::TildeExpression> (driver->nodePool(), sym(2).Expression);
node->tildeToken = loc(1);
sym(1).Node = node;
} break;
-case 161: {
+case 163: {
AST::NotExpression *node = makeAstNode<AST::NotExpression> (driver->nodePool(), sym(2).Expression);
node->notToken = loc(1);
sym(1).Node = node;
} break;
-case 163: {
+case 165: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Mul, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 164: {
+case 166: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Div, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 165: {
+case 167: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Mod, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 167: {
+case 169: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Add, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 168: {
+case 170: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Sub, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 170: {
+case 172: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::LShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 171: {
+case 173: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::RShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 172: {
+case 174: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::URShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 174: {
+case 176: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 175: {
+case 177: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 176: {
+case 178: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 177: {
+case 179: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 178: {
+case 180: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 179: {
+case 181: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::In, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 181: {
+case 183: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 182: {
+case 184: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 183: {
+case 185: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 184: {
+case 186: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 185: {
+case 187: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 187: {
+case 189: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 188: {
+case 190: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 189: {
+case 191: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 190: {
+case 192: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 192: {
+case 194: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 193: {
+case 195: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 194: {
+case 196: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 195: {
- AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::StrictNotEqual, sym(3).Expression);
- node->operatorToken = loc(2);
- sym(1).Node = node;
-} break;
-
case 197: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::BitAnd, sym(3).Expression);
+ QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
@@ -1146,7 +1153,7 @@ case 199: {
case 201: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::BitXor, sym(3).Expression);
+ QSOperator::BitAnd, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
@@ -1160,7 +1167,7 @@ case 203: {
case 205: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::BitOr, sym(3).Expression);
+ QSOperator::BitXor, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
@@ -1174,7 +1181,7 @@ case 207: {
case 209: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::And, sym(3).Expression);
+ QSOperator::BitOr, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
@@ -1188,7 +1195,7 @@ case 211: {
case 213: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::Or, sym(3).Expression);
+ QSOperator::And, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
@@ -1201,6 +1208,13 @@ case 215: {
} break;
case 217: {
+ AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
+ QSOperator::Or, sym(3).Expression);
+ node->operatorToken = loc(2);
+ sym(1).Node = node;
+} break;
+
+case 219: {
AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -1208,7 +1222,7 @@ case 217: {
sym(1).Node = node;
} break;
-case 219: {
+case 221: {
AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -1216,112 +1230,112 @@ case 219: {
sym(1).Node = node;
} break;
-case 221: {
+case 223: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 223: {
+case 225: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 224: {
+case 226: {
sym(1).ival = QSOperator::Assign;
} break;
-case 225: {
+case 227: {
sym(1).ival = QSOperator::InplaceMul;
} break;
-case 226: {
+case 228: {
sym(1).ival = QSOperator::InplaceDiv;
} break;
-case 227: {
+case 229: {
sym(1).ival = QSOperator::InplaceMod;
} break;
-case 228: {
+case 230: {
sym(1).ival = QSOperator::InplaceAdd;
} break;
-case 229: {
+case 231: {
sym(1).ival = QSOperator::InplaceSub;
} break;
-case 230: {
+case 232: {
sym(1).ival = QSOperator::InplaceLeftShift;
} break;
-case 231: {
+case 233: {
sym(1).ival = QSOperator::InplaceRightShift;
} break;
-case 232: {
+case 234: {
sym(1).ival = QSOperator::InplaceURightShift;
} break;
-case 233: {
+case 235: {
sym(1).ival = QSOperator::InplaceAnd;
} break;
-case 234: {
+case 236: {
sym(1).ival = QSOperator::InplaceXor;
} break;
-case 235: {
+case 237: {
sym(1).ival = QSOperator::InplaceOr;
} break;
-case 237: {
+case 239: {
AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 238: {
+case 240: {
sym(1).Node = 0;
} break;
-case 241: {
+case 243: {
AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 242: {
+case 244: {
sym(1).Node = 0;
} break;
-case 259: {
+case 261: {
AST::Block *node = makeAstNode<AST::Block> (driver->nodePool(), sym(2).StatementList);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 260: {
+case 262: {
sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).Statement);
} break;
-case 261: {
+case 263: {
sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).StatementList, sym(2).Statement);
} break;
-case 262: {
+case 264: {
sym(1).Node = 0;
} break;
-case 263: {
+case 265: {
sym(1).Node = sym(1).StatementList->finish ();
} break;
-case 265: {
+case 267: {
AST::VariableStatement *node = makeAstNode<AST::VariableStatement> (driver->nodePool(),
sym(2).VariableDeclarationList->finish (/*readOnly=*/sym(1).ival == T_CONST));
node->declarationKindToken = loc(1);
@@ -1329,76 +1343,76 @@ case 265: {
sym(1).Node = node;
} break;
-case 266: {
+case 268: {
sym(1).ival = T_CONST;
} break;
-case 267: {
+case 269: {
sym(1).ival = T_VAR;
} break;
-case 268: {
+case 270: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
} break;
-case 269: {
+case 271: {
AST::VariableDeclarationList *node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(),
sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 270: {
+case 272: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
} break;
-case 271: {
+case 273: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
} break;
-case 272: {
+case 274: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 273: {
+case 275: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 274: {
+case 276: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 275: {
+case 277: {
sym(1).Node = 0;
} break;
-case 277: {
+case 279: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 278: {
+case 280: {
sym(1).Node = 0;
} break;
-case 280: {
+case 282: {
AST::EmptyStatement *node = makeAstNode<AST::EmptyStatement> (driver->nodePool());
node->semicolonToken = loc(1);
sym(1).Node = node;
} break;
-case 282: {
+case 284: {
AST::ExpressionStatement *node = makeAstNode<AST::ExpressionStatement> (driver->nodePool(), sym(1).Expression);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 283: {
+case 285: {
AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement, sym(7).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1407,7 +1421,7 @@ case 283: {
sym(1).Node = node;
} break;
-case 284: {
+case 286: {
AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1415,7 +1429,7 @@ case 284: {
sym(1).Node = node;
} break;
-case 286: {
+case 288: {
AST::DoWhileStatement *node = makeAstNode<AST::DoWhileStatement> (driver->nodePool(), sym(2).Statement, sym(5).Expression);
node->doToken = loc(1);
node->whileToken = loc(3);
@@ -1425,7 +1439,7 @@ case 286: {
sym(1).Node = node;
} break;
-case 287: {
+case 289: {
AST::WhileStatement *node = makeAstNode<AST::WhileStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->whileToken = loc(1);
node->lparenToken = loc(2);
@@ -1433,7 +1447,7 @@ case 287: {
sym(1).Node = node;
} break;
-case 288: {
+case 290: {
AST::ForStatement *node = makeAstNode<AST::ForStatement> (driver->nodePool(), sym(3).Expression,
sym(5).Expression, sym(7).Expression, sym(9).Statement);
node->forToken = loc(1);
@@ -1444,7 +1458,7 @@ case 288: {
sym(1).Node = node;
} break;
-case 289: {
+case 291: {
AST::LocalForStatement *node = makeAstNode<AST::LocalForStatement> (driver->nodePool(),
sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression,
sym(8).Expression, sym(10).Statement);
@@ -1457,7 +1471,7 @@ case 289: {
sym(1).Node = node;
} break;
-case 290: {
+case 292: {
AST:: ForEachStatement *node = makeAstNode<AST::ForEachStatement> (driver->nodePool(), sym(3).Expression,
sym(5).Expression, sym(7).Statement);
node->forToken = loc(1);
@@ -1467,7 +1481,7 @@ case 290: {
sym(1).Node = node;
} break;
-case 291: {
+case 293: {
AST::LocalForEachStatement *node = makeAstNode<AST::LocalForEachStatement> (driver->nodePool(),
sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement);
node->forToken = loc(1);
@@ -1478,14 +1492,14 @@ case 291: {
sym(1).Node = node;
} break;
-case 293: {
+case 295: {
AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool());
node->continueToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 295: {
+case 297: {
AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool(), sym(2).sval);
node->continueToken = loc(1);
node->identifierToken = loc(2);
@@ -1493,14 +1507,14 @@ case 295: {
sym(1).Node = node;
} break;
-case 297: {
+case 299: {
AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool());
node->breakToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 299: {
+case 301: {
AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool(), sym(2).sval);
node->breakToken = loc(1);
node->identifierToken = loc(2);
@@ -1508,14 +1522,14 @@ case 299: {
sym(1).Node = node;
} break;
-case 301: {
+case 303: {
AST::ReturnStatement *node = makeAstNode<AST::ReturnStatement> (driver->nodePool(), sym(2).Expression);
node->returnToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 302: {
+case 304: {
AST::WithStatement *node = makeAstNode<AST::WithStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->withToken = loc(1);
node->lparenToken = loc(2);
@@ -1523,7 +1537,7 @@ case 302: {
sym(1).Node = node;
} break;
-case 303: {
+case 305: {
AST::SwitchStatement *node = makeAstNode<AST::SwitchStatement> (driver->nodePool(), sym(3).Expression, sym(5).CaseBlock);
node->switchToken = loc(1);
node->lparenToken = loc(2);
@@ -1531,90 +1545,90 @@ case 303: {
sym(1).Node = node;
} break;
-case 304: {
+case 306: {
AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 305: {
+case 307: {
AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(5);
sym(1).Node = node;
} break;
-case 306: {
+case 308: {
sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClause);
} break;
-case 307: {
+case 309: {
sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClauses, sym(2).CaseClause);
} break;
-case 308: {
+case 310: {
sym(1).Node = 0;
} break;
-case 309: {
+case 311: {
sym(1).Node = sym(1).CaseClauses->finish ();
} break;
-case 310: {
+case 312: {
AST::CaseClause *node = makeAstNode<AST::CaseClause> (driver->nodePool(), sym(2).Expression, sym(4).StatementList);
node->caseToken = loc(1);
node->colonToken = loc(3);
sym(1).Node = node;
} break;
-case 311: {
+case 313: {
AST::DefaultClause *node = makeAstNode<AST::DefaultClause> (driver->nodePool(), sym(3).StatementList);
node->defaultToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 312:
-case 313: {
+case 314:
+case 315: {
AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()), sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 314: {
+case 316: {
AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), sym(1).sval, sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 316: {
+case 318: {
AST::ThrowStatement *node = makeAstNode<AST::ThrowStatement> (driver->nodePool(), sym(2).Expression);
node->throwToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 317: {
+case 319: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 318: {
+case 320: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 319: {
+case 321: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch, sym(4).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 320: {
+case 322: {
AST::Catch *node = makeAstNode<AST::Catch> (driver->nodePool(), sym(3).sval, sym(5).Block);
node->catchToken = loc(1);
node->lparenToken = loc(2);
@@ -1623,20 +1637,20 @@ case 320: {
sym(1).Node = node;
} break;
-case 321: {
+case 323: {
AST::Finally *node = makeAstNode<AST::Finally> (driver->nodePool(), sym(2).Block);
node->finallyToken = loc(1);
sym(1).Node = node;
} break;
-case 323: {
+case 325: {
AST::DebuggerStatement *node = makeAstNode<AST::DebuggerStatement> (driver->nodePool());
node->debuggerToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 324: {
+case 326: {
AST::FunctionDeclaration *node = makeAstNode<AST::FunctionDeclaration> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
node->identifierToken = loc(2);
@@ -1647,7 +1661,7 @@ case 324: {
sym(1).Node = node;
} break;
-case 325: {
+case 327: {
AST::FunctionExpression *node = makeAstNode<AST::FunctionExpression> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
if (sym(2).sval)
@@ -1659,60 +1673,60 @@ case 325: {
sym(1).Node = node;
} break;
-case 326: {
+case 328: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 327: {
+case 329: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).FormalParameterList, sym(3).sval);
node->commaToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 328: {
+case 330: {
sym(1).Node = 0;
} break;
-case 329: {
+case 331: {
sym(1).Node = sym(1).FormalParameterList->finish ();
} break;
-case 330: {
+case 332: {
sym(1).Node = 0;
} break;
-case 332: {
+case 334: {
sym(1).Node = makeAstNode<AST::FunctionBody> (driver->nodePool(), sym(1).SourceElements->finish ());
} break;
-case 333: {
+case 335: {
sym(1).Node = makeAstNode<AST::Program> (driver->nodePool(), sym(1).SourceElements->finish ());
} break;
-case 334: {
+case 336: {
sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElement);
} break;
-case 335: {
+case 337: {
sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElements, sym(2).SourceElement);
} break;
-case 336: {
+case 338: {
sym(1).Node = makeAstNode<AST::StatementSourceElement> (driver->nodePool(), sym(1).Statement);
} break;
-case 337: {
+case 339: {
sym(1).Node = makeAstNode<AST::FunctionSourceElement> (driver->nodePool(), sym(1).FunctionDeclaration);
} break;
-case 338: {
+case 340: {
sym(1).sval = 0;
} break;
-case 340: {
+case 342: {
sym(1).Node = 0;
} break;
diff --git a/src/declarative/qml/parser/qdeclarativejsparser_p.h b/src/declarative/qml/parser/qdeclarativejsparser_p.h
index c7e097a..3864398 100644
--- a/src/declarative/qml/parser/qdeclarativejsparser_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsparser_p.h
@@ -235,9 +235,9 @@ protected:
-#define J_SCRIPT_REGEXPLITERAL_RULE1 74
+#define J_SCRIPT_REGEXPLITERAL_RULE1 76
-#define J_SCRIPT_REGEXPLITERAL_RULE2 75
+#define J_SCRIPT_REGEXPLITERAL_RULE2 77
QT_QML_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativebinding.cpp b/src/declarative/qml/qdeclarativebinding.cpp
index 720c562..88ca5cd 100644
--- a/src/declarative/qml/qdeclarativebinding.cpp
+++ b/src/declarative/qml/qdeclarativebinding.cpp
@@ -97,7 +97,7 @@ QDeclarativeBinding::~QDeclarativeBinding()
{
}
-void QDeclarativeBinding::setTarget(const QDeclarativeMetaProperty &prop)
+void QDeclarativeBinding::setTarget(const QDeclarativeProperty &prop)
{
Q_D(QDeclarativeBinding);
d->bindingData()->property = prop;
@@ -105,13 +105,13 @@ void QDeclarativeBinding::setTarget(const QDeclarativeMetaProperty &prop)
update();
}
-QDeclarativeMetaProperty QDeclarativeBinding::property() const
+QDeclarativeProperty QDeclarativeBinding::property() const
{
Q_D(const QDeclarativeBinding);
return d->bindingData()->property;
}
-void QDeclarativeBinding::update(QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativeBinding::update(QDeclarativePropertyPrivate::WriteFlags flags)
{
Q_D(QDeclarativeBinding);
@@ -130,7 +130,7 @@ void QDeclarativeBinding::update(QDeclarativeMetaPropertyPrivate::WriteFlags fla
if (data->property.propertyType() == qMetaTypeId<QDeclarativeBinding *>()) {
- int idx = data->property.coreIndex();
+ int idx = data->property.index();
Q_ASSERT(idx != -1);
@@ -161,7 +161,7 @@ void QDeclarativeBinding::update(QDeclarativeMetaPropertyPrivate::WriteFlags fla
data->error.setDescription(QLatin1String("Unable to assign [undefined] to ") + QLatin1String(QMetaType::typeName(data->property.propertyType())));
} else if (!isUndefined && data->property.object() &&
- !QDeclarativeMetaPropertyPrivate::write(data->property, value, flags)) {
+ !QDeclarativePropertyPrivate::write(data->property, value, flags)) {
QUrl url = QUrl(data->url);
int line = data->line;
@@ -204,7 +204,7 @@ void QDeclarativeBindingPrivate::emitValueChanged()
q->update();
}
-void QDeclarativeBinding::setEnabled(bool e, QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativeBinding::setEnabled(bool e, QDeclarativePropertyPrivate::WriteFlags flags)
{
Q_D(QDeclarativeBinding);
d->bindingData()->enabled = e;
@@ -223,7 +223,7 @@ void QDeclarativeBinding::setEnabled(bool e, QDeclarativeMetaPropertyPrivate::Wr
int QDeclarativeBinding::propertyIndex()
{
Q_D(QDeclarativeBinding);
- return d->bindingData()->property.coreIndex();
+ return d->bindingData()->property.index();
}
bool QDeclarativeBinding::enabled() const
@@ -300,7 +300,7 @@ QString QDeclarativeAbstractBinding::expression() const
return QLatin1String("<Unknown>");
}
-void QDeclarativeAbstractBinding::setEnabled(bool e, QDeclarativeMetaPropertyPrivate::WriteFlags)
+void QDeclarativeAbstractBinding::setEnabled(bool e, QDeclarativePropertyPrivate::WriteFlags)
{
if (e) m_mePtr = 0;
}
diff --git a/src/declarative/qml/qdeclarativebinding_p.h b/src/declarative/qml/qdeclarativebinding_p.h
index ac174fa..f66b9c7 100644
--- a/src/declarative/qml/qdeclarativebinding_p.h
+++ b/src/declarative/qml/qdeclarativebinding_p.h
@@ -56,8 +56,8 @@
#include "qdeclarative.h"
#include "qdeclarativepropertyvaluesource.h"
#include "qdeclarativeexpression.h"
-#include "qdeclarativemetaproperty.h"
-#include "qdeclarativemetaproperty_p.h"
+#include "qdeclarativeproperty.h"
+#include "qdeclarativeproperty_p.h"
#include <QtCore/QObject>
#include <QtCore/QMetaProperty>
@@ -74,12 +74,12 @@ public:
virtual QString expression() const;
- void setEnabled(bool e) { setEnabled(e, QDeclarativeMetaPropertyPrivate::DontRemoveBinding); }
- virtual void setEnabled(bool, QDeclarativeMetaPropertyPrivate::WriteFlags) = 0;
+ void setEnabled(bool e) { setEnabled(e, QDeclarativePropertyPrivate::DontRemoveBinding); }
+ virtual void setEnabled(bool, QDeclarativePropertyPrivate::WriteFlags) = 0;
virtual int propertyIndex() = 0;
- void update() { update(QDeclarativeMetaPropertyPrivate::DontRemoveBinding); }
- virtual void update(QDeclarativeMetaPropertyPrivate::WriteFlags) = 0;
+ void update() { update(QDeclarativePropertyPrivate::DontRemoveBinding); }
+ virtual void update(QDeclarativePropertyPrivate::WriteFlags) = 0;
void addToObject(QObject *);
void removeFromObject();
@@ -89,8 +89,8 @@ protected:
private:
friend class QDeclarativeDeclarativeData;
- friend class QDeclarativeMetaProperty;
- friend class QDeclarativeMetaPropertyPrivate;
+ friend class QDeclarativeProperty;
+ friend class QDeclarativePropertyPrivate;
friend class QDeclarativeVME;
QObject *m_object;
@@ -110,19 +110,19 @@ public:
QObject *parent);
~QDeclarativeBinding();
- void setTarget(const QDeclarativeMetaProperty &);
- QDeclarativeMetaProperty property() const;
+ void setTarget(const QDeclarativeProperty &);
+ QDeclarativeProperty property() const;
bool enabled() const;
// Inherited from QDeclarativeAbstractBinding
- virtual void setEnabled(bool, QDeclarativeMetaPropertyPrivate::WriteFlags flags);
+ virtual void setEnabled(bool, QDeclarativePropertyPrivate::WriteFlags flags);
virtual int propertyIndex();
- virtual void update(QDeclarativeMetaPropertyPrivate::WriteFlags flags);
+ virtual void update(QDeclarativePropertyPrivate::WriteFlags flags);
virtual QString expression() const;
public Q_SLOTS:
- void update() { update(QDeclarativeMetaPropertyPrivate::DontRemoveBinding); }
+ void update() { update(QDeclarativePropertyPrivate::DontRemoveBinding); }
protected:
void emitValueChanged();
diff --git a/src/declarative/qml/qdeclarativebinding_p_p.h b/src/declarative/qml/qdeclarativebinding_p_p.h
index ac88400..041103c 100644
--- a/src/declarative/qml/qdeclarativebinding_p_p.h
+++ b/src/declarative/qml/qdeclarativebinding_p_p.h
@@ -55,7 +55,7 @@
#include "qdeclarativebinding_p.h"
-#include "qdeclarativemetaproperty.h"
+#include "qdeclarativeproperty.h"
#include "qdeclarativeexpression_p.h"
QT_BEGIN_NAMESPACE
@@ -69,7 +69,7 @@ public:
bool updating:1;
bool enabled:1;
- QDeclarativeMetaProperty property;
+ QDeclarativeProperty property;
virtual void refresh();
};
diff --git a/src/declarative/qml/qdeclarativeboundsignal.cpp b/src/declarative/qml/qdeclarativeboundsignal.cpp
index ce396fd..6a5a102 100644
--- a/src/declarative/qml/qdeclarativeboundsignal.cpp
+++ b/src/declarative/qml/qdeclarativeboundsignal.cpp
@@ -104,7 +104,7 @@ QDeclarativeBoundSignal::QDeclarativeBoundSignal(QObject *scope, const QMetaMeth
// is that they both do the work to figure it out. Boo hoo.
if (evaluateIdx == -1) evaluateIdx = metaObject()->methodCount();
- QDeclarativeGraphics_setParent_noEvent(this, parent);
+ QDeclarative_setParent_noEvent(this, parent);
QMetaObject::connect(scope, m_signal.methodIndex(), this, evaluateIdx);
}
@@ -120,7 +120,7 @@ QDeclarativeBoundSignal::QDeclarativeBoundSignal(QDeclarativeContext *ctxt, cons
// is that they both do the work to figure it out. Boo hoo.
if (evaluateIdx == -1) evaluateIdx = metaObject()->methodCount();
- QDeclarativeGraphics_setParent_noEvent(this, parent);
+ QDeclarative_setParent_noEvent(this, parent);
QMetaObject::connect(scope, m_signal.methodIndex(), this, evaluateIdx);
m_expression = new QDeclarativeExpression(ctxt, val, scope);
diff --git a/src/declarative/qml/qdeclarativecompiledbindings.cpp b/src/declarative/qml/qdeclarativecompiledbindings.cpp
index a88f02e..17937fd 100644
--- a/src/declarative/qml/qdeclarativecompiledbindings.cpp
+++ b/src/declarative/qml/qdeclarativecompiledbindings.cpp
@@ -109,9 +109,9 @@ public:
scope(0), target(0), parent(0) {}
// Inherited from QDeclarativeAbstractBinding
- virtual void setEnabled(bool, QDeclarativeMetaPropertyPrivate::WriteFlags flags);
+ virtual void setEnabled(bool, QDeclarativePropertyPrivate::WriteFlags flags);
virtual int propertyIndex();
- virtual void update(QDeclarativeMetaPropertyPrivate::WriteFlags flags);
+ virtual void update(QDeclarativePropertyPrivate::WriteFlags flags);
virtual void destroy();
int index:30;
@@ -244,7 +244,7 @@ QDeclarativeAbstractBinding *QDeclarativeCompiledBindings::configBinding(int ind
return rv;
}
-void QDeclarativeCompiledBindingsPrivate::Binding::setEnabled(bool e, QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativeCompiledBindingsPrivate::Binding::setEnabled(bool e, QDeclarativePropertyPrivate::WriteFlags flags)
{
if (e) {
addToObject(target);
@@ -267,7 +267,7 @@ int QDeclarativeCompiledBindingsPrivate::Binding::propertyIndex()
return property & 0xFFFF;
}
-void QDeclarativeCompiledBindingsPrivate::Binding::update(QDeclarativeMetaPropertyPrivate::WriteFlags)
+void QDeclarativeCompiledBindingsPrivate::Binding::update(QDeclarativePropertyPrivate::WriteFlags)
{
parent->run(this);
}
@@ -324,7 +324,7 @@ void QDeclarativeCompiledBindingsPrivate::run(Binding *binding)
run(binding->index, cp, binding, binding->scope, target);
vt->write(binding->target, binding->property & 0xFFFF,
- QDeclarativeMetaPropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::DontRemoveBinding);
} else {
run(binding->index, cp, binding, binding->scope, binding->target);
}
@@ -1701,7 +1701,7 @@ bool QDeclarativeBindingCompilerPrivate::compile(QDeclarativeJS::AST::Node *node
const QMetaObject *from = type.metaObject;
const QMetaObject *to = engine->rawMetaObjectForType(destination->type);
- if (QDeclarativeMetaPropertyPrivate::canConvert(from, to))
+ if (QDeclarativePropertyPrivate::canConvert(from, to))
type.type = destination->type;
}
diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp
index 9ac65f9..5da207d 100644
--- a/src/declarative/qml/qdeclarativecompiler.cpp
+++ b/src/declarative/qml/qdeclarativecompiler.cpp
@@ -58,7 +58,7 @@
#include "parser/qdeclarativejsast_p.h"
#include "qdeclarativevmemetaobject_p.h"
#include "qdeclarativeexpression_p.h"
-#include "qdeclarativemetaproperty_p.h"
+#include "qdeclarativeproperty_p.h"
#include "qdeclarativerewrite_p.h"
#include "qdeclarativescriptstring.h"
#include "qdeclarativeglobal_p.h"
@@ -1314,8 +1314,9 @@ int QDeclarativeCompiler::componentTypeRef()
return output->types.count() - 1;
}
-int QDeclarativeCompiler::findSignalByName(const QMetaObject *mo, const QByteArray &name)
+QMetaMethod QDeclarativeCompiler::findSignalByName(const QMetaObject *mo, const QByteArray &name)
{
+ Q_ASSERT(mo);
int methods = mo->methodCount();
for (int ii = methods - 1; ii >= 0; --ii) {
QMetaMethod method = mo->method(ii);
@@ -1324,7 +1325,7 @@ int QDeclarativeCompiler::findSignalByName(const QMetaObject *mo, const QByteArr
methodName = methodName.left(idx);
if (methodName == name)
- return ii;
+ return method;
}
// If no signal is found, but the signal is of the form "onBlahChanged",
@@ -1332,11 +1333,14 @@ int QDeclarativeCompiler::findSignalByName(const QMetaObject *mo, const QByteArr
if (name.endsWith("Changed")) {
QByteArray propName = name.mid(0, name.length() - 7);
int propIdx = mo->indexOfProperty(propName.constData());
- if (propIdx >= 0)
- return mo->property(propIdx).notifySignalIndex();
+ if (propIdx >= 0) {
+ QMetaProperty prop = mo->property(propIdx);
+ if (prop.hasNotifySignal())
+ return prop.notifySignal();
+ }
}
- return -1;
+ return QMetaMethod();
}
bool QDeclarativeCompiler::buildSignal(QDeclarativeParser::Property *prop, QDeclarativeParser::Object *obj,
@@ -1351,7 +1355,7 @@ bool QDeclarativeCompiler::buildSignal(QDeclarativeParser::Property *prop, QDecl
if(name[0] >= 'A' && name[0] <= 'Z')
name[0] = name[0] - 'A' + 'a';
- int sigIdx = findSignalByName(obj->metaObject(), name);
+ int sigIdx = findSignalByName(obj->metaObject(), name).methodIndex();
if (sigIdx == -1) {
@@ -2036,7 +2040,7 @@ bool QDeclarativeCompiler::buildPropertyObjectAssignment(QDeclarativeParser::Pro
if (propertyMetaObject) {
const QMetaObject *c = v->object->metatype;
while(c) {
- isAssignable |= (QDeclarativeMetaPropertyPrivate::equal(c, propertyMetaObject));
+ isAssignable |= (QDeclarativePropertyPrivate::equal(c, propertyMetaObject));
c = c->superClass();
}
}
@@ -2619,7 +2623,7 @@ int QDeclarativeCompiler::genValueTypeData(QDeclarativeParser::Property *valueTy
QDeclarativeParser::Property *prop)
{
QByteArray data =
- QDeclarativeMetaPropertyPrivate::saveValueType(prop->parent->metaObject(), prop->index,
+ QDeclarativePropertyPrivate::saveValueType(prop->parent->metaObject(), prop->index,
QDeclarativeEnginePrivate::get(engine)->valueTypes[prop->type]->metaObject(),
valueTypeProp->index);
// valueTypeProp->index, valueTypeProp->type);
@@ -2629,7 +2633,7 @@ int QDeclarativeCompiler::genValueTypeData(QDeclarativeParser::Property *valueTy
int QDeclarativeCompiler::genPropertyData(QDeclarativeParser::Property *prop)
{
- return output->indexForByteArray(QDeclarativeMetaPropertyPrivate::saveProperty(prop->parent->metaObject(), prop->index));
+ return output->indexForByteArray(QDeclarativePropertyPrivate::saveProperty(prop->parent->metaObject(), prop->index));
}
bool QDeclarativeCompiler::completeComponentBuild()
@@ -2735,7 +2739,7 @@ bool QDeclarativeCompiler::canCoerce(int to, QDeclarativeParser::Object *from)
const QMetaObject *fromMo = from->metaObject();
while (fromMo) {
- if (QDeclarativeMetaPropertyPrivate::equal(fromMo, toMo))
+ if (QDeclarativePropertyPrivate::equal(fromMo, toMo))
return true;
fromMo = fromMo->superClass();
}
@@ -2754,7 +2758,7 @@ bool QDeclarativeCompiler::canCoerce(int to, int from)
QDeclarativeEnginePrivate::get(engine)->rawMetaObjectForType(from);
while (fromMo) {
- if (QDeclarativeMetaPropertyPrivate::equal(fromMo, toMo))
+ if (QDeclarativePropertyPrivate::equal(fromMo, toMo))
return true;
fromMo = fromMo->superClass();
}
diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h
index 627490d..2ea3366 100644
--- a/src/declarative/qml/qdeclarativecompiler_p.h
+++ b/src/declarative/qml/qdeclarativecompiler_p.h
@@ -159,6 +159,8 @@ public:
static bool isAttachedPropertyName(const QByteArray &);
static bool isSignalPropertyName(const QByteArray &);
+ static QMetaMethod findSignalByName(const QMetaObject *, const QByteArray &name);
+
private:
static void reset(QDeclarativeCompiledData *);
@@ -263,7 +265,6 @@ private:
int componentTypeRef();
- static int findSignalByName(const QMetaObject *, const QByteArray &name);
static QDeclarativeType *toQmlType(QDeclarativeParser::Object *from);
bool canCoerce(int to, QDeclarativeParser::Object *from);
bool canCoerce(int to, int from);
diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp
index aaf36e0..6a2d2d1 100644
--- a/src/declarative/qml/qdeclarativecomponent.cpp
+++ b/src/declarative/qml/qdeclarativecomponent.cpp
@@ -618,7 +618,7 @@ QDeclarativeComponentPrivate::beginCreate(QDeclarativeContext *context, const QB
QObject *rv = begin(ctxt, ep, cc, start, count, &state, bindings);
if (rv) {
- QDeclarativeGraphics_setParent_noEvent(ctxt, rv);
+ QDeclarative_setParent_noEvent(ctxt, rv);
} else {
delete ctxt;
}
@@ -698,8 +698,8 @@ void QDeclarativeComponentPrivate::complete(QDeclarativeEnginePrivate *enginePri
state->bindValues.at(ii);
for (int jj = 0; jj < bv.count; ++jj) {
if(bv.at(jj))
- bv.at(jj)->setEnabled(true, QDeclarativeMetaPropertyPrivate::BypassInterceptor |
- QDeclarativeMetaPropertyPrivate::DontRemoveBinding);
+ bv.at(jj)->setEnabled(true, QDeclarativePropertyPrivate::BypassInterceptor |
+ QDeclarativePropertyPrivate::DontRemoveBinding);
}
QDeclarativeEnginePrivate::clear(bv);
}
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index 4435a5b..af75e98 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -49,7 +49,6 @@
#include "qdeclarativecontext.h"
#include "qdeclarativeexpression.h"
#include "qdeclarativecomponent.h"
-#include "qdeclarativemetaproperty_p.h"
#include "qdeclarativebinding_p_p.h"
#include "qdeclarativevme_p.h"
#include "qdeclarativeenginedebug_p.h"
@@ -110,7 +109,7 @@
#define CSIDL_APPDATA 0x001a // <username>\Application Data
#endif
-Q_DECLARE_METATYPE(QDeclarativeMetaProperty)
+Q_DECLARE_METATYPE(QDeclarativeProperty)
QT_BEGIN_NAMESPACE
@@ -337,6 +336,7 @@ void QDeclarativeEnginePrivate::clear(SimpleList<QDeclarativeParserStatus> &pss)
}
Q_GLOBAL_STATIC(QDeclarativeEngineDebugServer, qmlEngineDebugServer);
+Q_GLOBAL_STATIC(QSet<QString>, qmlEnginePluginsWithRegisteredTypes);
void QDeclarativeEnginePrivate::init()
{
@@ -1409,7 +1409,7 @@ public:
qmldirParser.parse();
foreach (const QDeclarativeDirParser::Plugin &plugin, qmldirParser.plugins()) {
- QString resolvedFilePath = QDeclarativeEnginePrivate::get(engine)->resolvePlugin(dir + QDir::separator() + plugin.path,
+ QString resolvedFilePath = QDeclarativeEnginePrivate::get(engine)->resolvePlugin(QDir(dir + QDir::separator() + plugin.path),
plugin.name);
if (!resolvedFilePath.isEmpty())
@@ -1622,10 +1622,32 @@ void QDeclarativeEngine::addImportPath(const QString& path)
*/
bool QDeclarativeEngine::importExtension(const QString &fileName, const QString &uri)
{
- QPluginLoader loader(fileName);
+ QFileInfo fileInfo(fileName);
+ const QString absoluteFilePath = fileInfo.absoluteFilePath();
+ QPluginLoader loader(absoluteFilePath);
if (QDeclarativeExtensionInterface *iface = qobject_cast<QDeclarativeExtensionInterface *>(loader.instance())) {
- iface->initialize(this, uri.toUtf8().constData());
+ const QByteArray bytes = uri.toUtf8();
+ const char *moduleId = bytes.constData();
+
+ // ### this code should probably be protected with a mutex.
+ if (! qmlEnginePluginsWithRegisteredTypes()->contains(absoluteFilePath)) {
+ // types should only be registered once (they're global).
+
+ qmlEnginePluginsWithRegisteredTypes()->insert(absoluteFilePath);
+ iface->registerTypes(moduleId);
+ }
+
+ QDeclarativeEnginePrivate *d = QDeclarativeEnginePrivate::get(this);
+
+ if (! d->initializedPlugins.contains(absoluteFilePath)) {
+ // things on the engine (eg. adding new global objects) have to be done for every engine.
+
+ // protect against double initialization
+ d->initializedPlugins.insert(absoluteFilePath);
+ iface->initializeEngine(this, moduleId);
+ }
+
return true;
}
@@ -1670,7 +1692,6 @@ QString QDeclarativeEnginePrivate::resolvePlugin(const QDir &dir, const QString
const QStringList &suffixes,
const QString &prefix)
{
- qWarning() << baseName;
foreach (const QString &suffix, suffixes) {
QString pluginFileName = prefix;
diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h
index c4a40c5..0359f98 100644
--- a/src/declarative/qml/qdeclarativeengine_p.h
+++ b/src/declarative/qml/qdeclarativeengine_p.h
@@ -62,7 +62,7 @@
#include "qdeclarativevaluetype_p.h"
#include "qdeclarativecontext.h"
#include "qdeclarativeexpression.h"
-#include "qdeclarativemetaproperty_p.h"
+#include "qdeclarativeproperty_p.h"
#include "qdeclarativepropertycache_p.h"
#include "qdeclarativeobjectscriptclass_p.h"
#include "qdeclarativecontextscriptclass_p.h"
@@ -267,6 +267,7 @@ public:
QStringList environmentImportPath;
+ QSet<QString> initializedPlugins;
QString resolvePlugin(const QDir &dir, const QString &baseName,
const QStringList &suffixes,
diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp
index 2ae0b54..09882cb 100644
--- a/src/declarative/qml/qdeclarativeenginedebug.cpp
+++ b/src/declarative/qml/qdeclarativeenginedebug.cpp
@@ -44,8 +44,8 @@
#include "qdeclarativeboundsignal_p.h"
#include "qdeclarativeengine.h"
#include "qdeclarativemetatype_p.h"
-#include "qdeclarativemetaproperty.h"
-#include "qdeclarativemetaproperty_p.h"
+#include "qdeclarativeproperty.h"
+#include "qdeclarativeproperty_p.h"
#include "qdeclarativebinding_p.h"
#include "qdeclarativecontext_p.h"
#include "qdeclarativewatcher_p.h"
@@ -110,7 +110,7 @@ QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx)
rv.name = QString::fromUtf8(prop.name());
rv.hasNotifySignal = prop.hasNotifySignal();
QDeclarativeAbstractBinding *binding =
- QDeclarativeMetaPropertyPrivate::binding(QDeclarativeMetaProperty(obj, rv.name));
+ QDeclarativePropertyPrivate::binding(QDeclarativeProperty(obj, rv.name));
if (binding)
rv.binding = binding->expression();
diff --git a/src/declarative/qml/qdeclarativeenginedebug_p.h b/src/declarative/qml/qdeclarativeenginedebug_p.h
index 89da399..a95449b 100644
--- a/src/declarative/qml/qdeclarativeenginedebug_p.h
+++ b/src/declarative/qml/qdeclarativeenginedebug_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "../debugger/qdeclarativedebugservice_p.h"
+#include <private/qdeclarativedebugservice_p.h>
#include <QtCore/qurl.h>
#include <QtCore/qvariant.h>
diff --git a/src/declarative/qml/qdeclarativeextensioninterface.h b/src/declarative/qml/qdeclarativeextensioninterface.h
index a8ae064..0fabd6d 100644
--- a/src/declarative/qml/qdeclarativeextensioninterface.h
+++ b/src/declarative/qml/qdeclarativeextensioninterface.h
@@ -55,7 +55,8 @@ class QDeclarativeEngine;
struct Q_DECLARATIVE_EXPORT QDeclarativeExtensionInterface
{
virtual ~QDeclarativeExtensionInterface() {}
- virtual void initialize(QDeclarativeEngine *engine, const char *uri) = 0;
+ virtual void registerTypes(const char *uri) = 0;
+ virtual void initializeEngine(QDeclarativeEngine *engine, const char *uri) = 0;
};
Q_DECLARE_INTERFACE(QDeclarativeExtensionInterface, "com.trolltech.Qt.QDeclarativeExtensionInterface/1.0")
diff --git a/src/declarative/qml/qdeclarativeextensionplugin.cpp b/src/declarative/qml/qdeclarativeextensionplugin.cpp
index 6af3a6d..3d44d63 100644
--- a/src/declarative/qml/qdeclarativeextensionplugin.cpp
+++ b/src/declarative/qml/qdeclarativeextensionplugin.cpp
@@ -63,9 +63,9 @@ QT_BEGIN_NAMESPACE
*/
/*!
- \fn void QDeclarativeExtensionPlugin::initialize(QDeclarativeEngine *engine)
+ \fn void QDeclarativeExtensionPlugin::registerTypes(const char *uri)
- Initializes the extension specified in the given \a engine.
+ Registers the QML types in the given \a uri.
*/
/*!
@@ -84,4 +84,16 @@ QDeclarativeExtensionPlugin::~QDeclarativeExtensionPlugin()
{
}
+/*!
+ \fn void QDeclarativeExtensionPlugin::initializeEngine(QDeclarativeEngine *engine, const char *uri)
+
+ Initializes the extension specified in the given \a engine.
+*/
+
+void QDeclarativeExtensionPlugin::initializeEngine(QDeclarativeEngine *engine, const char *uri)
+{
+ Q_UNUSED(engine);
+ Q_UNUSED(uri);
+}
+
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativeextensionplugin.h b/src/declarative/qml/qdeclarativeextensionplugin.h
index 79df52b..c2ad798 100644
--- a/src/declarative/qml/qdeclarativeextensionplugin.h
+++ b/src/declarative/qml/qdeclarativeextensionplugin.h
@@ -62,7 +62,8 @@ public:
explicit QDeclarativeExtensionPlugin(QObject *parent = 0);
~QDeclarativeExtensionPlugin();
- virtual void initialize(QDeclarativeEngine *engine, const char *uri) = 0;
+ virtual void registerTypes(const char *uri) = 0;
+ virtual void initializeEngine(QDeclarativeEngine *engine, const char *uri);
};
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativeglobal_p.h b/src/declarative/qml/qdeclarativeglobal_p.h
index bbdc91c..1041992 100644
--- a/src/declarative/qml/qdeclarativeglobal_p.h
+++ b/src/declarative/qml/qdeclarativeglobal_p.h
@@ -79,7 +79,7 @@ struct QDeclarativeGraphics_DerivedObject : public QObject
neither \a parent nor the object's previous parent (if it had one) will
receive ChildRemoved or ChildAdded events.
*/
-inline void QDeclarativeGraphics_setParent_noEvent(QObject *object, QObject *parent)
+inline void QDeclarative_setParent_noEvent(QObject *object, QObject *parent)
{
static_cast<QDeclarativeGraphics_DerivedObject *>(object)->setParent_noEvent(parent);
}
diff --git a/src/declarative/qml/qdeclarativelist.cpp b/src/declarative/qml/qdeclarativelist.cpp
index 4c9586c..9691f32 100644
--- a/src/declarative/qml/qdeclarativelist.cpp
+++ b/src/declarative/qml/qdeclarativelist.cpp
@@ -42,7 +42,7 @@
#include "qdeclarativelist.h"
#include "qdeclarativelist_p.h"
#include "qdeclarativeengine_p.h"
-#include "qdeclarativemetaproperty_p.h"
+#include "qdeclarativeproperty_p.h"
QT_BEGIN_NAMESPACE
@@ -85,18 +85,57 @@ void QDeclarativeListReferencePrivate::release()
delete this;
}
+/*!
+\class QDeclarativeListReference
+\brief The QDeclarativeListReference class allows the manipulation of QDeclarativeListProperty properties.
+
+QDeclarativeListReference allows programs to read from, and assign values to a QML list property in a
+simple and type safe way. A QDeclarativeListReference can be created by passing an object and property
+name or through a QDeclarativeProperty instance. These two are equivalant:
+
+\code
+QDeclarativeListReference ref1(object, "children");
+
+QDeclarativeProperty ref2(object, "children");
+QDeclarativeListReference ref2 = qvariant_cast<QDeclarativeListReference>(ref2.read());
+\endcode
+
+Not all QML list properties support all operations. A set of methods, canAppend(), canAt(), canClear() and
+canCount() allow programs to query whether an operation is supported on a given property.
+
+QML list properties are typesafe. Only QObject's that derive from the correct base class can be assigned to
+the list. The listElementType() method can be used to query the QMetaObject of the QObject type supported.
+Attempting to add objects of the incorrect type to a list property will fail.
+
+Like with normal lists, when accessing a list element by index, it is the callers responsibility to ensure
+that it does not request an out of range element using the count() method before calling at().
+*/
+
+/*!
+Constructs an invalid instance.
+*/
QDeclarativeListReference::QDeclarativeListReference()
: d(0)
{
}
-QDeclarativeListReference::QDeclarativeListReference(QObject *o, const char *property, QDeclarativeEngine *engine)
+/*!
+Constructs a QDeclarativeListReference for \a object's \a property. If \a property is not a list
+property, an invalid QDeclarativeListReference is created. If \a object is destroyed after
+the reference is constructed, it will automatically become invalid. That is, it is safe to hold
+QDeclarativeListReference instances even after \a object is deleted.
+
+Passing \a engine is required to access some QML created list properties. If in doubt, and an engine
+is available, pass it.
+*/
+QDeclarativeListReference::QDeclarativeListReference(QObject *object, const char *property, QDeclarativeEngine *engine)
: d(0)
{
- if (!o || !property) return;
+ if (!object || !property) return;
QDeclarativePropertyCache::Data local;
- QDeclarativePropertyCache::Data *data = QDeclarativePropertyCache::property(engine, o, QLatin1String(property), local);
+ QDeclarativePropertyCache::Data *data =
+ QDeclarativePropertyCache::property(engine, object, QLatin1String(property), local);
if (!data || !(data->flags & QDeclarativePropertyCache::Data::IsQList)) return;
@@ -106,20 +145,22 @@ QDeclarativeListReference::QDeclarativeListReference(QObject *o, const char *pro
if (listType == -1) return;
d = new QDeclarativeListReferencePrivate;
- d->object = o;
+ d->object = object;
d->elementType = p?p->rawMetaObjectForType(listType):QDeclarativeMetaType::qmlType(listType)->baseMetaObject();
d->propertyType = data->propType;
void *args[] = { &d->property, 0 };
- QMetaObject::metacall(o, QMetaObject::ReadProperty, data->coreIndex, args);
+ QMetaObject::metacall(object, QMetaObject::ReadProperty, data->coreIndex, args);
}
+/*! \internal */
QDeclarativeListReference::QDeclarativeListReference(const QDeclarativeListReference &o)
: d(o.d)
{
if (d) d->addref();
}
+/*! \internal */
QDeclarativeListReference &QDeclarativeListReference::operator=(const QDeclarativeListReference &o)
{
if (o.d) o.d->addref();
@@ -128,60 +169,108 @@ QDeclarativeListReference &QDeclarativeListReference::operator=(const QDeclarati
return *this;
}
+/*! \internal */
QDeclarativeListReference::~QDeclarativeListReference()
{
if (d) d->release();
}
+/*!
+Returns true if the instance refers to a valid list property, otherwise false.
+*/
bool QDeclarativeListReference::isValid() const
{
return d && d->object;
}
+/*!
+Returns the list property's object. Returns 0 if the reference is invalid.
+*/
QObject *QDeclarativeListReference::object() const
{
if (isValid()) return d->object;
else return 0;
}
+/*!
+Returns the QMetaObject for the elements stored in the list property. Returns 0 if the reference
+is invalid.
+
+The QMetaObject can be used ahead of time to determine whether a given instance can be added
+to a list.
+*/
const QMetaObject *QDeclarativeListReference::listElementType() const
{
if (isValid()) return d->elementType;
else return 0;
}
+/*!
+Returns true if the list property can be appended to, otherwise false. Returns false if the
+reference is invalid.
+
+\sa append()
+*/
bool QDeclarativeListReference::canAppend() const
{
return (isValid() && d->property.append);
}
+/*!
+Returns true if the list property can queried by index, otherwise false. Returns false if the
+reference is invalid.
+
+\sa at()
+*/
bool QDeclarativeListReference::canAt() const
{
return (isValid() && d->property.at);
}
+/*!
+Returns true if the list property can be cleared, otherwise false. Returns false if the
+reference is invalid.
+
+\sa clear()
+*/
bool QDeclarativeListReference::canClear() const
{
return (isValid() && d->property.clear);
}
+/*!
+Returns true if the list property can be queried for its element count, otherwise false.
+Returns false if the reference is invalid.
+
+\sa count()
+*/
bool QDeclarativeListReference::canCount() const
{
return (isValid() && d->property.count);
}
-bool QDeclarativeListReference::append(QObject *o) const
+/*!
+Appends \a object to the list. Returns true if the operation succeeded, otherwise false.
+
+\sa canAppend()
+*/
+bool QDeclarativeListReference::append(QObject *object) const
{
if (!canAppend()) return false;
- if (o && !QDeclarativeMetaPropertyPrivate::canConvert(o->metaObject(), d->elementType))
+ if (object && !QDeclarativePropertyPrivate::canConvert(object->metaObject(), d->elementType))
return false;
- d->property.append(&d->property, o);
+ d->property.append(&d->property, object);
return true;
}
+/*!
+Returns the list element at \a index, or 0 if the operation failed.
+
+\sa canAt()
+*/
QObject *QDeclarativeListReference::at(int index) const
{
if (!canAt()) return 0;
@@ -189,6 +278,11 @@ QObject *QDeclarativeListReference::at(int index) const
return d->property.at(&d->property, index);
}
+/*!
+Clears the list. Returns true if the operation succeeded, otherwise false.
+
+\sa canClear()
+*/
bool QDeclarativeListReference::clear() const
{
if (!canClear()) return false;
@@ -198,6 +292,9 @@ bool QDeclarativeListReference::clear() const
return true;
}
+/*!
+Returns the number of objects in the list, or 0 if the operation failed.
+*/
int QDeclarativeListReference::count() const
{
if (!canCount()) return 0;
diff --git a/src/declarative/qml/qdeclarativemetatype.cpp b/src/declarative/qml/qdeclarativemetatype.cpp
index e87f8ba..abbb9d6 100644
--- a/src/declarative/qml/qdeclarativemetatype.cpp
+++ b/src/declarative/qml/qdeclarativemetatype.cpp
@@ -619,7 +619,7 @@ QDeclarativeType *QDeclarativeMetaType::qmlType(const QByteArray &name, int vers
QList<QDeclarativeType*> types = data->nameToType.values(name);
foreach (QDeclarativeType *t, types) {
- // XXX version_major<0 just a kludge for QDeclarativeMetaPropertyPrivate::initProperty
+ // XXX version_major<0 just a kludge for QDeclarativePropertyPrivate::initProperty
if (version_major<0 || t->availableInVersion(version_major,version_minor))
return t;
}
diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
index 50fe5c0..542f417 100644
--- a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
+++ b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
@@ -338,7 +338,7 @@ void QDeclarativeObjectScriptClass::setProperty(QObject *obj,
}
}
- QDeclarativeAbstractBinding *delBinding = QDeclarativeMetaPropertyPrivate::setBinding(obj, *lastData, 0);
+ QDeclarativeAbstractBinding *delBinding = QDeclarativePropertyPrivate::setBinding(obj, *lastData, 0);
if (delBinding)
delBinding->destroy();
@@ -348,7 +348,7 @@ void QDeclarativeObjectScriptClass::setProperty(QObject *obj,
} else {
// ### Can well known types be optimized?
QVariant v = QDeclarativeScriptClass::toVariant(engine, value);
- QDeclarativeMetaPropertyPrivate::write(obj, *lastData, v, evalContext);
+ QDeclarativePropertyPrivate::write(obj, *lastData, v, evalContext);
}
}
diff --git a/src/declarative/qml/qdeclarativemetaproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp
index a976140..e1ec2cd 100644
--- a/src/declarative/qml/qdeclarativemetaproperty.cpp
+++ b/src/declarative/qml/qdeclarativeproperty.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativemetaproperty.h"
-#include "qdeclarativemetaproperty_p.h"
+#include "qdeclarativeproperty.h"
+#include "qdeclarativeproperty_p.h"
#include "qdeclarativecompositetypedata_p.h"
#include "qdeclarative.h"
@@ -53,6 +53,7 @@
#include "qdeclarativedeclarativedata_p.h"
#include "qdeclarativestringconverters_p.h"
#include "qdeclarativelist_p.h"
+#include "qdeclarativecompiler_p.h"
#include <QStringList>
#include <QtCore/qdebug.h>
@@ -62,71 +63,102 @@
QT_BEGIN_NAMESPACE
/*!
- \class QDeclarativeMetaProperty
- \brief The QDeclarativeMetaProperty class abstracts accessing QML properties.
- \internal
- */
+\class QDeclarativeProperty
+\brief The QDeclarativeProperty class abstracts accessing properties on objects created from QML.
+
+As QML uses Qt's meta-type system all of the existing QMetaObject classes can be used to introspect
+and interact with objects created by QML. However, some of the new features provided by QML - such
+as type safety and attached properties - are most easily used through the QDeclarativeProperty class
+that simplifies some of their natural complexity.
+
+Unlike QMetaProperty which represents a property on a class type, QDeclarativeProperty encapsulates
+a property on a specific object instance. To read a property's value, programmers create a
+QDeclarativeProperty instance and call the read() method. Likewise to write a property value the
+write() method is used.
+
+\code
+
+QObject *object = declarativeComponent.create();
+
+QDeclarativeProperty property(object, "font.pixelSize");
+qWarning() << "Current pixel size:" << property.read().toInt();
+property.write(24);
+qWarning() << "Pixel size should now be 24:" << property.read().toInt();
+
+\endcode
+*/
/*!
- Create an invalid QDeclarativeMetaProperty.
+ Create an invalid QDeclarativeProperty.
*/
-QDeclarativeMetaProperty::QDeclarativeMetaProperty()
-: d(new QDeclarativeMetaPropertyPrivate)
+QDeclarativeProperty::QDeclarativeProperty()
+: d(new QDeclarativePropertyPrivate)
{
d->q = this;
}
/*! \internal */
-QDeclarativeMetaProperty::~QDeclarativeMetaProperty()
+QDeclarativeProperty::~QDeclarativeProperty()
{
delete d; d = 0;
}
/*!
- Creates a QDeclarativeMetaProperty for the default property of \a obj. If there is no
- default property, an invalid QDeclarativeMetaProperty will be created.
+ Creates a QDeclarativeProperty for the default property of \a obj. If there is no
+ default property, an invalid QDeclarativeProperty will be created.
*/
-QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj)
-: d(new QDeclarativeMetaPropertyPrivate)
+QDeclarativeProperty::QDeclarativeProperty(QObject *obj)
+: d(new QDeclarativePropertyPrivate)
{
d->q = this;
d->initDefault(obj);
}
/*!
- \internal
- Creates a QDeclarativeMetaProperty for the default property of \a obj. If there is no
- default property, an invalid QDeclarativeMetaProperty will be created.
+ Creates a QDeclarativeProperty for the default property of \a obj. If there is no
+ default property, an invalid QDeclarativeProperty will be created.
*/
-QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj, QDeclarativeContext *ctxt)
-: d(new QDeclarativeMetaPropertyPrivate)
+QDeclarativeProperty::QDeclarativeProperty(QObject *obj, QDeclarativeContext *ctxt)
+: d(new QDeclarativePropertyPrivate)
{
d->q = this;
d->context = ctxt;
+ d->engine = ctxt?ctxt->engine():0;
+ d->initDefault(obj);
+}
+
+/*!
+ Creates a QDeclarativeProperty for the default property of \a obj. If there is no
+ default property, an invalid QDeclarativeProperty will be created.
+ */
+QDeclarativeProperty::QDeclarativeProperty(QObject *obj, QDeclarativeEngine *engine)
+: d(new QDeclarativePropertyPrivate)
+{
+ d->q = this;
+ d->context = 0;
+ d->engine = engine;
d->initDefault(obj);
}
/*!
Initialize from the default property of \a obj
*/
-void QDeclarativeMetaPropertyPrivate::initDefault(QObject *obj)
+void QDeclarativePropertyPrivate::initDefault(QObject *obj)
{
if (!obj)
return;
QMetaProperty p = QDeclarativeMetaType::defaultProperty(obj);
core.load(p);
- if (core.isValid()) {
- isDefaultProperty = true;
+ if (core.isValid())
object = obj;
- }
}
/*!
- Creates a QDeclarativeMetaProperty for the property \a name of \a obj.
+ Creates a QDeclarativeProperty for the property \a name of \a obj.
*/
-QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj, const QString &name)
-: d(new QDeclarativeMetaPropertyPrivate)
+QDeclarativeProperty::QDeclarativeProperty(QObject *obj, const QString &name)
+: d(new QDeclarativePropertyPrivate)
{
d->q = this;
d->initProperty(obj, name);
@@ -134,25 +166,37 @@ QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj, const QString &
}
/*!
- \internal
- Creates a QDeclarativeMetaProperty for the property \a name of \a obj.
+ Creates a QDeclarativeProperty for the property \a name of \a obj.
*/
-QDeclarativeMetaProperty::QDeclarativeMetaProperty(QObject *obj, const QString &name, QDeclarativeContext *ctxt)
-: d(new QDeclarativeMetaPropertyPrivate)
+QDeclarativeProperty::QDeclarativeProperty(QObject *obj, const QString &name, QDeclarativeContext *ctxt)
+: d(new QDeclarativePropertyPrivate)
{
d->q = this;
d->context = ctxt;
+ d->engine = ctxt?ctxt->engine():0;
+ d->initProperty(obj, name);
+ if (!isValid()) { d->object = 0; d->context = 0; d->engine = 0; }
+}
+
+/*!
+ Creates a QDeclarativeProperty for the property \a name of \a obj.
+ */
+QDeclarativeProperty::QDeclarativeProperty(QObject *obj, const QString &name, QDeclarativeEngine *engine)
+: d(new QDeclarativePropertyPrivate)
+{
+ d->q = this;
+ d->context = 0;
+ d->engine = engine;
d->initProperty(obj, name);
- if (!isValid()) { d->object = 0; d->context = 0; }
+ if (!isValid()) { d->object = 0; d->context = 0; d->engine = 0; }
}
Q_GLOBAL_STATIC(QDeclarativeValueTypeFactory, qmlValueTypes);
-void QDeclarativeMetaPropertyPrivate::initProperty(QObject *obj, const QString &name)
+void QDeclarativePropertyPrivate::initProperty(QObject *obj, const QString &name)
{
if (!obj) return;
- QDeclarativeEngine *engine = context?context->engine():0;
QDeclarativeTypeNameCache *typeNameCache = context?QDeclarativeContextPrivate::get(context)->imports:0;
QStringList path = name.split(QLatin1Char('.'));
@@ -235,7 +279,7 @@ void QDeclarativeMetaPropertyPrivate::initProperty(QObject *obj, const QString &
QString signalName = terminal.mid(2);
signalName[0] = signalName.at(0).toLower();
- QMetaMethod method = findSignal(currentObject, signalName);
+ QMetaMethod method = QDeclarativeCompiler::findSignalByName(currentObject->metaObject(), signalName.toLatin1().constData());
if (method.signature()) {
object = currentObject;
core.load(method);
@@ -246,7 +290,7 @@ void QDeclarativeMetaPropertyPrivate::initProperty(QObject *obj, const QString &
// Property
QDeclarativePropertyCache::Data local;
QDeclarativePropertyCache::Data *property =
- QDeclarativePropertyCache::property(context?context->engine():0, currentObject, terminal, local);
+ QDeclarativePropertyCache::property(engine, currentObject, terminal, local);
if (property && !(property->flags & QDeclarativePropertyCache::Data::IsFunction)) {
object = currentObject;
core = *property;
@@ -256,63 +300,62 @@ void QDeclarativeMetaPropertyPrivate::initProperty(QObject *obj, const QString &
/*!
Create a copy of \a other.
*/
-QDeclarativeMetaProperty::QDeclarativeMetaProperty(const QDeclarativeMetaProperty &other)
-: d(new QDeclarativeMetaPropertyPrivate(*other.d))
+QDeclarativeProperty::QDeclarativeProperty(const QDeclarativeProperty &other)
+: d(new QDeclarativePropertyPrivate(*other.d))
{
d->q = this;
}
/*!
- \enum QDeclarativeMetaProperty::PropertyTypeCategory
+ \enum QDeclarativeProperty::PropertyTypeCategory
This enum specifies a category of QML property.
- \value InvalidCategory The property is invalid.
- \value List The property is a QList pointer
+ \value InvalidCategory The property is invalid, or is a signal property.
+ \value List The property is a QDeclarativeListProperty list property
\value Object The property is a QObject derived type pointer
- \value Normal The property is none of the above.
+ \value Normal The property is a normal value property.
*/
/*!
- \enum QDeclarativeMetaProperty::Type
+ \enum QDeclarativeProperty::Type
This enum specifies a type of QML property.
\value Invalid The property is invalid.
\value Property The property is a regular Qt property.
\value SignalProperty The property is a signal property.
- \value Default The property is the default property.
*/
/*!
Returns the property category.
*/
-QDeclarativeMetaProperty::PropertyTypeCategory QDeclarativeMetaProperty::propertyTypeCategory() const
+QDeclarativeProperty::PropertyTypeCategory QDeclarativeProperty::propertyTypeCategory() const
{
return d->propertyTypeCategory();
}
-QDeclarativeMetaProperty::PropertyTypeCategory
-QDeclarativeMetaPropertyPrivate::propertyTypeCategory() const
+QDeclarativeProperty::PropertyTypeCategory
+QDeclarativePropertyPrivate::propertyTypeCategory() const
{
uint type = q->type();
- if (type & QDeclarativeMetaProperty::ValueTypeProperty) {
- return QDeclarativeMetaProperty::Normal;
- } else if (type & QDeclarativeMetaProperty::Property) {
+ if (isValueType()) {
+ return QDeclarativeProperty::Normal;
+ } else if (type & QDeclarativeProperty::Property) {
int type = propertyType();
if (type == QVariant::Invalid)
- return QDeclarativeMetaProperty::InvalidCategory;
+ return QDeclarativeProperty::InvalidCategory;
else if ((uint)type < QVariant::UserType)
- return QDeclarativeMetaProperty::Normal;
+ return QDeclarativeProperty::Normal;
else if (core.flags & QDeclarativePropertyCache::Data::IsQObjectDerived)
- return QDeclarativeMetaProperty::Object;
+ return QDeclarativeProperty::Object;
else if (core.flags & QDeclarativePropertyCache::Data::IsQList)
- return QDeclarativeMetaProperty::List;
+ return QDeclarativeProperty::List;
else
- return QDeclarativeMetaProperty::Normal;
+ return QDeclarativeProperty::Normal;
} else {
- return QDeclarativeMetaProperty::InvalidCategory;
+ return QDeclarativeProperty::InvalidCategory;
}
}
@@ -320,9 +363,9 @@ QDeclarativeMetaPropertyPrivate::propertyTypeCategory() const
Returns the type name of the property, or 0 if the property has no type
name.
*/
-const char *QDeclarativeMetaProperty::propertyTypeName() const
+const char *QDeclarativeProperty::propertyTypeName() const
{
- if (type() & ValueTypeProperty) {
+ if (d->isValueType()) {
QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(d->context);
QDeclarativeValueType *valueType = 0;
@@ -343,10 +386,10 @@ const char *QDeclarativeMetaProperty::propertyTypeName() const
}
/*!
- Returns true if \a other and this QDeclarativeMetaProperty represent the same
+ Returns true if \a other and this QDeclarativeProperty represent the same
property.
*/
-bool QDeclarativeMetaProperty::operator==(const QDeclarativeMetaProperty &other) const
+bool QDeclarativeProperty::operator==(const QDeclarativeProperty &other) const
{
// category is intentially omitted here as it is generated
// from the other members
@@ -359,17 +402,22 @@ bool QDeclarativeMetaProperty::operator==(const QDeclarativeMetaProperty &other)
Returns the QVariant type of the property, or QVariant::Invalid if the
property has no QVariant type.
*/
-int QDeclarativeMetaProperty::propertyType() const
+int QDeclarativeProperty::propertyType() const
{
return d->propertyType();
}
-int QDeclarativeMetaPropertyPrivate::propertyType() const
+bool QDeclarativePropertyPrivate::isValueType() const
+{
+ return valueType.valueTypeCoreIdx != -1;
+}
+
+int QDeclarativePropertyPrivate::propertyType() const
{
uint type = q->type();
- if (type & QDeclarativeMetaProperty::ValueTypeProperty) {
+ if (isValueType()) {
return valueType.valueTypePropType;
- } else if (type & QDeclarativeMetaProperty::Property) {
+ } else if (type & QDeclarativeProperty::Property) {
if (core.propType == (int)QVariant::LastType)
return qMetaTypeId<QVariant>();
else
@@ -382,51 +430,49 @@ int QDeclarativeMetaPropertyPrivate::propertyType() const
/*!
Returns the type of the property.
*/
-QDeclarativeMetaProperty::Type QDeclarativeMetaProperty::type() const
+QDeclarativeProperty::Type QDeclarativeProperty::type() const
{
if (d->core.flags & QDeclarativePropertyCache::Data::IsFunction)
return SignalProperty;
- else if (d->valueType.valueTypeCoreIdx != -1)
- return (Type)(Property | ValueTypeProperty);
else if (d->core.isValid())
- return (Type)(Property | ((d->isDefaultProperty)?Default:0));
+ return Property;
else
return Invalid;
}
/*!
- Returns true if this QDeclarativeMetaProperty represents a regular Qt property.
+ Returns true if this QDeclarativeProperty represents a regular Qt property.
*/
-bool QDeclarativeMetaProperty::isProperty() const
+bool QDeclarativeProperty::isProperty() const
{
return type() & Property;
}
/*!
- Returns true if this QDeclarativeMetaProperty represents a default property.
+ Returns true if this QDeclarativeProperty represents a QML signal property.
*/
-bool QDeclarativeMetaProperty::isDefault() const
+bool QDeclarativeProperty::isSignalProperty() const
{
- return type() & Default;
+ return type() & SignalProperty;
}
/*!
- Returns the QDeclarativeMetaProperty's QObject.
+ Returns the QDeclarativeProperty's QObject.
*/
-QObject *QDeclarativeMetaProperty::object() const
+QObject *QDeclarativeProperty::object() const
{
return d->object;
}
/*!
- Assign \a other to this QDeclarativeMetaProperty.
+ Assign \a other to this QDeclarativeProperty.
*/
-QDeclarativeMetaProperty &QDeclarativeMetaProperty::operator=(const QDeclarativeMetaProperty &other)
+QDeclarativeProperty &QDeclarativeProperty::operator=(const QDeclarativeProperty &other)
{
d->context = other.d->context;
+ d->engine = other.d->engine;
d->object = other.d->object;
- d->isDefaultProperty = other.d->isDefaultProperty;
d->isNameCached = other.d->isNameCached;
d->core = other.d->core;
d->nameCache = other.d->nameCache;
@@ -439,9 +485,9 @@ QDeclarativeMetaProperty &QDeclarativeMetaProperty::operator=(const QDeclarative
/*!
Returns true if the property is writable, otherwise false.
*/
-bool QDeclarativeMetaProperty::isWritable() const
+bool QDeclarativeProperty::isWritable() const
{
- QDeclarativeMetaProperty::PropertyTypeCategory category = propertyTypeCategory();
+ QDeclarativeProperty::PropertyTypeCategory category = propertyTypeCategory();
if (!d->object)
return false;
@@ -458,7 +504,7 @@ bool QDeclarativeMetaProperty::isWritable() const
/*!
Returns true if the property is designable, otherwise false.
*/
-bool QDeclarativeMetaProperty::isDesignable() const
+bool QDeclarativeProperty::isDesignable() const
{
if (type() & Property && d->core.isValid() && d->object)
return d->object->metaObject()->property(d->core.coreIndex).isDesignable();
@@ -469,7 +515,7 @@ bool QDeclarativeMetaProperty::isDesignable() const
/*!
Returns true if the property is resettable, otherwise false.
*/
-bool QDeclarativeMetaProperty::isResettable() const
+bool QDeclarativeProperty::isResettable() const
{
if (type() & Property && d->core.isValid() && d->object)
return d->core.flags & QDeclarativePropertyCache::Data::IsResettable;
@@ -478,10 +524,10 @@ bool QDeclarativeMetaProperty::isResettable() const
}
/*!
- Returns true if the QDeclarativeMetaProperty refers to a valid property, otherwise
+ Returns true if the QDeclarativeProperty refers to a valid property, otherwise
false.
*/
-bool QDeclarativeMetaProperty::isValid() const
+bool QDeclarativeProperty::isValid() const
{
return type() != Invalid;
}
@@ -489,15 +535,15 @@ bool QDeclarativeMetaProperty::isValid() const
/*!
Return the name of this QML property.
*/
-QString QDeclarativeMetaProperty::name() const
+QString QDeclarativeProperty::name() const
{
if (!d->isNameCached) {
// ###
if (!d->object) {
- } else if (type() & ValueTypeProperty) {
+ } else if (d->isValueType()) {
QString rv = d->core.name(d->object) + QLatin1Char('.');
- QDeclarativeEnginePrivate *ep = d->context?QDeclarativeEnginePrivate::get(d->context->engine()):0;
+ QDeclarativeEnginePrivate *ep = d->engine?QDeclarativeEnginePrivate::get(d->engine):0;
QDeclarativeValueType *valueType = 0;
if (ep) valueType = ep->valueTypes[d->core.propType];
else valueType = QDeclarativeValueTypeFactory::valueType(d->core.propType);
@@ -525,7 +571,7 @@ QString QDeclarativeMetaProperty::name() const
Returns the \l{QMetaProperty} {Qt property} associated with
this QML property.
*/
-QMetaProperty QDeclarativeMetaProperty::property() const
+QMetaProperty QDeclarativeProperty::property() const
{
if (type() & Property && d->core.isValid() && d->object)
return d->object->metaObject()->property(d->core.coreIndex);
@@ -537,7 +583,7 @@ QMetaProperty QDeclarativeMetaProperty::property() const
Return the QMetaMethod for this property if it is a SignalProperty,
otherwise returns an invalid QMetaMethod.
*/
-QMetaMethod QDeclarativeMetaProperty::method() const
+QMetaMethod QDeclarativeProperty::method() const
{
if (type() & SignalProperty && d->object)
return d->object->metaObject()->method(d->core.coreIndex);
@@ -551,7 +597,7 @@ QMetaMethod QDeclarativeMetaProperty::method() const
exists.
*/
QDeclarativeAbstractBinding *
-QDeclarativeMetaPropertyPrivate::binding(const QDeclarativeMetaProperty &that)
+QDeclarativePropertyPrivate::binding(const QDeclarativeProperty &that)
{
if (!that.isProperty() || !that.d->object)
return 0;
@@ -587,7 +633,7 @@ QDeclarativeMetaPropertyPrivate::binding(const QDeclarativeMetaProperty &that)
the binding sets the intial value, it will use these flags for the write).
*/
QDeclarativeAbstractBinding *
-QDeclarativeMetaPropertyPrivate::setBinding(const QDeclarativeMetaProperty &that,
+QDeclarativePropertyPrivate::setBinding(const QDeclarativeProperty &that,
QDeclarativeAbstractBinding *newBinding,
WriteFlags flags)
{
@@ -601,7 +647,7 @@ QDeclarativeMetaPropertyPrivate::setBinding(const QDeclarativeMetaProperty &that
}
QDeclarativeAbstractBinding *
-QDeclarativeMetaPropertyPrivate::setBinding(QObject *object, const QDeclarativePropertyCache::Data &core,
+QDeclarativePropertyPrivate::setBinding(QObject *object, const QDeclarativePropertyCache::Data &core,
QDeclarativeAbstractBinding *newBinding, WriteFlags flags)
{
QDeclarativeDeclarativeData *data = QDeclarativeDeclarativeData::get(object, 0 != newBinding);
@@ -634,9 +680,9 @@ QDeclarativeMetaPropertyPrivate::setBinding(QObject *object, const QDeclarativeP
signal expression exists.
*/
QDeclarativeExpression *
-QDeclarativeMetaPropertyPrivate::signalExpression(const QDeclarativeMetaProperty &that)
+QDeclarativePropertyPrivate::signalExpression(const QDeclarativeProperty &that)
{
- if (!(that.type() & QDeclarativeMetaProperty::SignalProperty))
+ if (!(that.type() & QDeclarativeProperty::SignalProperty))
return 0;
const QObjectList &children = that.d->object->children();
@@ -645,7 +691,7 @@ QDeclarativeMetaPropertyPrivate::signalExpression(const QDeclarativeMetaProperty
QObject *child = children.at(ii);
QDeclarativeBoundSignal *signal = QDeclarativeBoundSignal::cast(child);
- if (signal && signal->index() == that.coreIndex())
+ if (signal && signal->index() == that.index())
return signal->expression();
}
@@ -660,10 +706,10 @@ QDeclarativeMetaPropertyPrivate::signalExpression(const QDeclarativeMetaProperty
assumed by the caller.
*/
QDeclarativeExpression *
-QDeclarativeMetaPropertyPrivate::setSignalExpression(const QDeclarativeMetaProperty &that,
+QDeclarativePropertyPrivate::setSignalExpression(const QDeclarativeProperty &that,
QDeclarativeExpression *expr)
{
- if (!(that.type() & QDeclarativeMetaProperty::SignalProperty)) {
+ if (!(that.type() & QDeclarativeProperty::SignalProperty)) {
delete expr;
return 0;
}
@@ -674,7 +720,7 @@ QDeclarativeMetaPropertyPrivate::setSignalExpression(const QDeclarativeMetaPrope
QObject *child = children.at(ii);
QDeclarativeBoundSignal *signal = QDeclarativeBoundSignal::cast(child);
- if (signal && signal->index() == that.coreIndex())
+ if (signal && signal->index() == that.index())
return signal->setExpression(expr);
}
@@ -686,27 +732,10 @@ QDeclarativeMetaPropertyPrivate::setSignalExpression(const QDeclarativeMetaPrope
}
}
-QMetaMethod QDeclarativeMetaPropertyPrivate::findSignal(QObject *obj, const QString &name)
-{
- const QMetaObject *mo = obj->metaObject();
-
- int methods = mo->methodCount();
- for (int ii = methods - 1; ii >= 0; --ii) {
- QMetaMethod method = mo->method(ii);
- QString methodName = QString::fromUtf8(method.signature());
- int idx = methodName.indexOf(QLatin1Char('('));
- methodName = methodName.left(idx);
-
- if (methodName == name)
- return method;
- }
- return QMetaMethod();
-}
-
/*!
Returns the property value.
*/
-QVariant QDeclarativeMetaProperty::read() const
+QVariant QDeclarativeProperty::read() const
{
if (!d->object)
return QVariant();
@@ -723,10 +752,48 @@ QVariant QDeclarativeMetaProperty::read() const
return QVariant();
}
-QVariant QDeclarativeMetaPropertyPrivate::readValueProperty()
+/*!
+Return the \a name property value of \a object. This method is equivalent to:
+\code
+ QDeclarativeProperty p(object, name);
+ p.read();
+\endcode
+*/
+QVariant QDeclarativeProperty::read(QObject *object, const QString &name)
{
- uint type = q->type();
- if(type & QDeclarativeMetaProperty::ValueTypeProperty) {
+ QDeclarativeProperty p(object, name);
+ return p.read();
+}
+
+/*!
+Return the \a name property value of \a object. This method is equivalent to:
+\code
+ QDeclarativeProperty p(object, name, context);
+ p.read();
+\endcode
+*/
+QVariant QDeclarativeProperty::read(QObject *object, const QString &name, QDeclarativeContext *ctxt)
+{
+ QDeclarativeProperty p(object, name, ctxt);
+ return p.read();
+}
+
+/*!
+Return the \a name property value of \a object. This method is equivalent to:
+\code
+ QDeclarativeProperty p(object, name, engine);
+ p.read();
+\endcode
+*/
+QVariant QDeclarativeProperty::read(QObject *object, const QString &name, QDeclarativeEngine *engine)
+{
+ QDeclarativeProperty p(object, name, engine);
+ return p.read();
+}
+
+QVariant QDeclarativePropertyPrivate::readValueProperty()
+{
+ if(isValueType()) {
QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(context);
QDeclarativeValueType *valueType = 0;
@@ -747,7 +814,7 @@ QVariant QDeclarativeMetaPropertyPrivate::readValueProperty()
QDeclarativeListProperty<QObject> prop;
void *args[] = { &prop, 0 };
QMetaObject::metacall(object, QMetaObject::ReadProperty, core.coreIndex, args);
- return QVariant::fromValue(QDeclarativeListReferencePrivate::init(prop, core.propType, context?context->engine():0));
+ return QVariant::fromValue(QDeclarativeListReferencePrivate::init(prop, core.propType, engine));
} else {
@@ -756,10 +823,8 @@ QVariant QDeclarativeMetaPropertyPrivate::readValueProperty()
}
}
-//###
//writeEnumProperty MIRRORS the relelvant bit of QMetaProperty::write AND MUST BE KEPT IN SYNC!
-//###
-bool QDeclarativeMetaPropertyPrivate::writeEnumProperty(const QMetaProperty &prop, int idx, QObject *object, const QVariant &value, int flags)
+bool QDeclarativePropertyPrivate::writeEnumProperty(const QMetaProperty &prop, int idx, QObject *object, const QVariant &value, int flags)
{
if (!object || !prop.isWritable())
return false;
@@ -796,7 +861,7 @@ bool QDeclarativeMetaPropertyPrivate::writeEnumProperty(const QMetaProperty &pro
return status;
}
-bool QDeclarativeMetaPropertyPrivate::writeValueProperty(const QVariant &value, WriteFlags flags)
+bool QDeclarativePropertyPrivate::writeValueProperty(const QVariant &value, WriteFlags flags)
{
// Remove any existing bindings on this property
if (!(flags & DontRemoveBinding)) {
@@ -805,8 +870,7 @@ bool QDeclarativeMetaPropertyPrivate::writeValueProperty(const QVariant &value,
}
bool rv = false;
- uint type = q->type();
- if (type & QDeclarativeMetaProperty::ValueTypeProperty) {
+ if (isValueType()) {
QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(context);
QDeclarativeValueType *writeBack = 0;
@@ -836,7 +900,7 @@ bool QDeclarativeMetaPropertyPrivate::writeValueProperty(const QVariant &value,
return rv;
}
-bool QDeclarativeMetaPropertyPrivate::write(QObject *object, const QDeclarativePropertyCache::Data &property,
+bool QDeclarativePropertyPrivate::write(QObject *object, const QDeclarativePropertyCache::Data &property,
const QVariant &value, QDeclarativeContext *context,
WriteFlags flags)
{
@@ -947,13 +1011,13 @@ bool QDeclarativeMetaPropertyPrivate::write(QObject *object, const QDeclarativeP
for (int ii = 0; ii < list.count(); ++ii) {
QObject *o = list.at(ii);
- if (!canConvert(o->metaObject(), listType))
+ if (o && !canConvert(o->metaObject(), listType))
o = 0;
prop.append(&prop, (void *)o);
}
} else {
QObject *o = enginePriv?enginePriv->toQObject(value):QDeclarativeMetaType::toQObject(value);
- if (!canConvert(o->metaObject(), listType))
+ if (o && !canConvert(o->metaObject(), listType))
o = 0;
prop.append(&prop, (void *)o);
}
@@ -991,7 +1055,7 @@ bool QDeclarativeMetaPropertyPrivate::write(QObject *object, const QDeclarativeP
return true;
}
-const QMetaObject *QDeclarativeMetaPropertyPrivate::rawMetaObjectForType(QDeclarativeEnginePrivate *engine, int userType)
+const QMetaObject *QDeclarativePropertyPrivate::rawMetaObjectForType(QDeclarativeEnginePrivate *engine, int userType)
{
if (engine) {
return engine->rawMetaObjectForType(userType);
@@ -1004,15 +1068,56 @@ const QMetaObject *QDeclarativeMetaPropertyPrivate::rawMetaObjectForType(QDeclar
/*!
Set the property value to \a value.
*/
-bool QDeclarativeMetaProperty::write(const QVariant &value) const
+bool QDeclarativeProperty::write(const QVariant &value) const
{
- return QDeclarativeMetaPropertyPrivate::write(*this, value, 0);
+ return QDeclarativePropertyPrivate::write(*this, value, 0);
+}
+
+/*!
+Writes \a value to the \a name property of \a object. This method is equivalent to:
+\code
+ QDeclarativeProperty p(object, name);
+ p.write(value);
+\endcode
+*/
+bool QDeclarativeProperty::write(QObject *object, const QString &name, const QVariant &value)
+{
+ QDeclarativeProperty p(object, name);
+ return p.write(value);
+}
+
+/*!
+Writes \a value to the \a name property of \a object. This method is equivalent to:
+\code
+ QDeclarativeProperty p(object, name, ctxt);
+ p.write(value);
+\endcode
+*/
+bool QDeclarativeProperty::write(QObject *object, const QString &name, const QVariant &value,
+ QDeclarativeContext *ctxt)
+{
+ QDeclarativeProperty p(object, name, ctxt);
+ return p.write(value);
+}
+
+/*!
+Writes \a value to the \a name property of \a object. This method is equivalent to:
+\code
+ QDeclarativeProperty p(object, name, engine);
+ p.write(value);
+\endcode
+*/
+bool QDeclarativeProperty::write(QObject *object, const QString &name, const QVariant &value,
+ QDeclarativeEngine *engine)
+{
+ QDeclarativeProperty p(object, name, engine);
+ return p.write(value);
}
/*!
Resets the property value.
*/
-bool QDeclarativeMetaProperty::reset() const
+bool QDeclarativeProperty::reset() const
{
if (isResettable()) {
void *args[] = { 0 };
@@ -1023,10 +1128,10 @@ bool QDeclarativeMetaProperty::reset() const
}
}
-bool QDeclarativeMetaPropertyPrivate::write(const QDeclarativeMetaProperty &that,
+bool QDeclarativePropertyPrivate::write(const QDeclarativeProperty &that,
const QVariant &value, WriteFlags flags)
{
- if (that.d->object && that.type() & QDeclarativeMetaProperty::Property &&
+ if (that.d->object && that.type() & QDeclarativeProperty::Property &&
that.d->core.isValid() && that.isWritable())
return that.d->writeValueProperty(value, flags);
else
@@ -1036,7 +1141,7 @@ bool QDeclarativeMetaPropertyPrivate::write(const QDeclarativeMetaProperty &that
/*!
Returns true if the property has a change notifier signal, otherwise false.
*/
-bool QDeclarativeMetaProperty::hasChangedNotifier() const
+bool QDeclarativeProperty::hasNotifySignal() const
{
if (type() & Property && d->object) {
return d->object->metaObject()->property(d->core.coreIndex).hasNotifySignal();
@@ -1051,7 +1156,7 @@ bool QDeclarativeMetaProperty::hasChangedNotifier() const
Some properties, such as attached properties or those whose value never
changes, do not require a change notifier.
*/
-bool QDeclarativeMetaProperty::needsChangedNotifier() const
+bool QDeclarativeProperty::needsNotifySignal() const
{
return type() & Property && !property().isConstant();
}
@@ -1064,7 +1169,7 @@ bool QDeclarativeMetaProperty::needsChangedNotifier() const
change notifier signal, or if the \a dest object does
not have the specified \a method.
*/
-bool QDeclarativeMetaProperty::connectNotifier(QObject *dest, int method) const
+bool QDeclarativeProperty::connectNotifySignal(QObject *dest, int method) const
{
if (!(type() & Property) || !d->object)
return false;
@@ -1085,7 +1190,7 @@ bool QDeclarativeMetaProperty::connectNotifier(QObject *dest, int method) const
change notifier signal, or if the \a dest object does
not have the specified \a slot.
*/
-bool QDeclarativeMetaProperty::connectNotifier(QObject *dest, const char *slot) const
+bool QDeclarativeProperty::connectNotifySignal(QObject *dest, const char *slot) const
{
if (!(type() & Property) || !d->object)
return false;
@@ -1102,18 +1207,18 @@ bool QDeclarativeMetaProperty::connectNotifier(QObject *dest, const char *slot)
/*!
Return the Qt metaobject index of the property.
*/
-int QDeclarativeMetaProperty::coreIndex() const
+int QDeclarativeProperty::index() const
{
return d->core.coreIndex;
}
-int QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(const QDeclarativeMetaProperty &that)
+int QDeclarativePropertyPrivate::valueTypeCoreIndex(const QDeclarativeProperty &that)
{
return that.d->valueType.valueTypeCoreIdx;
}
struct SerializedData {
- QDeclarativeMetaProperty::Type type;
+ bool isValueType;
QDeclarativePropertyCache::Data core;
};
@@ -1121,14 +1226,14 @@ struct ValueTypeSerializedData : public SerializedData {
QDeclarativePropertyCache::ValueTypeData valueType;
};
-QByteArray QDeclarativeMetaPropertyPrivate::saveValueType(const QMetaObject *metaObject, int index,
+QByteArray QDeclarativePropertyPrivate::saveValueType(const QMetaObject *metaObject, int index,
const QMetaObject *subObject, int subIndex)
{
QMetaProperty prop = metaObject->property(index);
QMetaProperty subProp = subObject->property(subIndex);
ValueTypeSerializedData sd;
- sd.type = QDeclarativeMetaProperty::ValueTypeProperty;
+ sd.isValueType = true;
sd.core.load(metaObject->property(index));
sd.valueType.flags = QDeclarativePropertyCache::Data::flagsForProperty(subProp);
sd.valueType.valueTypeCoreIdx = subIndex;
@@ -1139,34 +1244,35 @@ QByteArray QDeclarativeMetaPropertyPrivate::saveValueType(const QMetaObject *met
return rv;
}
-QByteArray QDeclarativeMetaPropertyPrivate::saveProperty(const QMetaObject *metaObject, int index)
+QByteArray QDeclarativePropertyPrivate::saveProperty(const QMetaObject *metaObject, int index)
{
SerializedData sd;
- sd.type = QDeclarativeMetaProperty::Property;
+ sd.isValueType = false;
sd.core.load(metaObject->property(index));
QByteArray rv((const char *)&sd, sizeof(sd));
return rv;
}
-QDeclarativeMetaProperty
-QDeclarativeMetaPropertyPrivate::restore(const QByteArray &data, QObject *object, QDeclarativeContext *ctxt)
+QDeclarativeProperty
+QDeclarativePropertyPrivate::restore(const QByteArray &data, QObject *object, QDeclarativeContext *ctxt)
{
- QDeclarativeMetaProperty prop;
+ QDeclarativeProperty prop;
if (data.isEmpty())
return prop;
prop.d->object = object;
prop.d->context = ctxt;
+ prop.d->engine = ctxt?ctxt->engine():0;
const SerializedData *sd = (const SerializedData *)data.constData();
- if (sd->type == QDeclarativeMetaProperty::Property) {
- prop.d->core = sd->core;
- } else if(sd->type == QDeclarativeMetaProperty::ValueTypeProperty) {
+ if (sd->isValueType) {
const ValueTypeSerializedData *vt = (const ValueTypeSerializedData *)sd;
prop.d->core = vt->core;
prop.d->valueType = vt->valueType;
+ } else {
+ prop.d->core = sd->core;
}
return prop;
@@ -1175,7 +1281,7 @@ QDeclarativeMetaPropertyPrivate::restore(const QByteArray &data, QObject *object
/*!
Returns true if lhs and rhs refer to the same metaobject data
*/
-bool QDeclarativeMetaPropertyPrivate::equal(const QMetaObject *lhs, const QMetaObject *rhs)
+bool QDeclarativePropertyPrivate::equal(const QMetaObject *lhs, const QMetaObject *rhs)
{
return lhs == rhs || (1 && lhs && rhs && lhs->d.stringdata == rhs->d.stringdata);
}
@@ -1183,7 +1289,7 @@ bool QDeclarativeMetaPropertyPrivate::equal(const QMetaObject *lhs, const QMetaO
/*!
Returns true if from inherits to.
*/
-bool QDeclarativeMetaPropertyPrivate::canConvert(const QMetaObject *from, const QMetaObject *to)
+bool QDeclarativePropertyPrivate::canConvert(const QMetaObject *from, const QMetaObject *to)
{
if (from && to == &QObject::staticMetaObject)
return true;
diff --git a/src/declarative/qml/qdeclarativemetaproperty.h b/src/declarative/qml/qdeclarativeproperty.h
index 828749f..73bccf3 100644
--- a/src/declarative/qml/qdeclarativemetaproperty.h
+++ b/src/declarative/qml/qdeclarativeproperty.h
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#ifndef QDECLARATIVEMETAPROPERTY_H
-#define QDECLARATIVEMETAPROPERTY_H
+#ifndef QDECLARATIVEPROPERTY_H
+#define QDECLARATIVEPROPERTY_H
#include <QtCore/qmetaobject.h>
@@ -51,16 +51,12 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QObject;
-class QDeclarativeAbstractBinding;
-class QDeclarativeExpression;
-class QStringList;
class QVariant;
-struct QMetaObject;
class QDeclarativeContext;
class QDeclarativeEngine;
-class QDeclarativeMetaPropertyPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeMetaProperty
+class QDeclarativePropertyPrivate;
+class Q_DECLARATIVE_EXPORT QDeclarativeProperty
{
public:
enum PropertyTypeCategory {
@@ -70,64 +66,73 @@ public:
Normal
};
- enum Type { Invalid = 0x00,
- Property = 0x01,
- SignalProperty = 0x02,
- Default = 0x08,
- ValueTypeProperty = 0x10
+ enum Type {
+ Invalid,
+ Property,
+ SignalProperty
};
- QDeclarativeMetaProperty();
- ~QDeclarativeMetaProperty();
+ QDeclarativeProperty();
+ ~QDeclarativeProperty();
- QDeclarativeMetaProperty(QObject *);
- QDeclarativeMetaProperty(QObject *, QDeclarativeContext *);
+ QDeclarativeProperty(QObject *);
+ QDeclarativeProperty(QObject *, QDeclarativeContext *);
+ QDeclarativeProperty(QObject *, QDeclarativeEngine *);
- QDeclarativeMetaProperty(QObject *, const QString &);
- QDeclarativeMetaProperty(QObject *, const QString &, QDeclarativeContext *);
+ QDeclarativeProperty(QObject *, const QString &);
+ QDeclarativeProperty(QObject *, const QString &, QDeclarativeContext *);
+ QDeclarativeProperty(QObject *, const QString &, QDeclarativeEngine *);
- QDeclarativeMetaProperty(const QDeclarativeMetaProperty &);
- QDeclarativeMetaProperty &operator=(const QDeclarativeMetaProperty &);
+ QDeclarativeProperty(const QDeclarativeProperty &);
+ QDeclarativeProperty &operator=(const QDeclarativeProperty &);
+
+ bool operator==(const QDeclarativeProperty &) const;
+
+ Type type() const;
+ bool isValid() const;
+ bool isProperty() const;
+ bool isSignalProperty() const;
+
+ int propertyType() const;
+ PropertyTypeCategory propertyTypeCategory() const;
+ const char *propertyTypeName() const;
QString name() const;
QVariant read() const;
+ static QVariant read(QObject *, const QString &);
+ static QVariant read(QObject *, const QString &, QDeclarativeContext *);
+ static QVariant read(QObject *, const QString &, QDeclarativeEngine *);
+
bool write(const QVariant &) const;
+ static bool write(QObject *, const QString &, const QVariant &);
+ static bool write(QObject *, const QString &, const QVariant &, QDeclarativeContext *);
+ static bool write(QObject *, const QString &, const QVariant &, QDeclarativeEngine *);
+
bool reset() const;
- bool hasChangedNotifier() const;
- bool needsChangedNotifier() const;
- bool connectNotifier(QObject *dest, const char *slot) const;
- bool connectNotifier(QObject *dest, int method) const;
+ bool hasNotifySignal() const;
+ bool needsNotifySignal() const;
+ bool connectNotifySignal(QObject *dest, const char *slot) const;
+ bool connectNotifySignal(QObject *dest, int method) const;
- Type type() const;
- bool isProperty() const;
- bool isDefault() const;
bool isWritable() const;
bool isDesignable() const;
bool isResettable() const;
- bool isValid() const;
QObject *object() const;
- int propertyType() const;
- PropertyTypeCategory propertyTypeCategory() const;
- const char *propertyTypeName() const;
-
- bool operator==(const QDeclarativeMetaProperty &) const;
-
- int coreIndex() const;
+ int index() const;
QMetaProperty property() const;
QMetaMethod method() const;
private:
- friend class QDeclarativeEnginePrivate;
- friend class QDeclarativeMetaPropertyPrivate;
- QDeclarativeMetaPropertyPrivate *d;
+ friend class QDeclarativePropertyPrivate;
+ QDeclarativePropertyPrivate *d;
};
-typedef QList<QDeclarativeMetaProperty> QDeclarativeMetaProperties;
+typedef QList<QDeclarativeProperty> QDeclarativeProperties;
QT_END_NAMESPACE
QT_END_HEADER
-#endif // QDECLARATIVEMETAPROPERTY_H
+#endif // QDECLARATIVEPROPERTY_H
diff --git a/src/declarative/qml/qdeclarativemetaproperty_p.h b/src/declarative/qml/qdeclarativeproperty_p.h
index a171545..1fda7f4 100644
--- a/src/declarative/qml/qdeclarativemetaproperty_p.h
+++ b/src/declarative/qml/qdeclarativeproperty_p.h
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#ifndef QDECLARATIVEMETAPROPERTY_P_H
-#define QDECLARATIVEMETAPROPERTY_P_H
+#ifndef QDECLARATIVEPROPERTY_P_H
+#define QDECLARATIVEPROPERTY_P_H
//
// W A R N I N G
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativemetaproperty.h"
+#include "qdeclarativeproperty.h"
#include "qdeclarativepropertycache_p.h"
#include "qdeclarativeguard_p.h"
@@ -64,27 +64,28 @@ QT_BEGIN_NAMESPACE
class QDeclarativeContext;
class QDeclarativeEnginePrivate;
-class Q_AUTOTEST_EXPORT QDeclarativeMetaPropertyPrivate
+class QDeclarativeExpression;
+class Q_AUTOTEST_EXPORT QDeclarativePropertyPrivate
{
public:
enum WriteFlag { BypassInterceptor = 0x01, DontRemoveBinding = 0x02 };
Q_DECLARE_FLAGS(WriteFlags, WriteFlag)
- QDeclarativeMetaPropertyPrivate()
- : q(0), context(0), object(0), isDefaultProperty(false), isNameCached(false) {}
+ QDeclarativePropertyPrivate()
+ : q(0), context(0), engine(0), object(0), isNameCached(false) {}
- QDeclarativeMetaPropertyPrivate(const QDeclarativeMetaPropertyPrivate &other)
- : q(0), context(other.context), object(other.object),
- isDefaultProperty(other.isDefaultProperty), isNameCached(other.isNameCached),
+ QDeclarativePropertyPrivate(const QDeclarativePropertyPrivate &other)
+ : q(0), context(other.context), engine(other.engine), object(other.object),
+ isNameCached(other.isNameCached),
core(other.core), nameCache(other.nameCache),
valueType(other.valueType) {}
- QDeclarativeMetaProperty *q;
+ QDeclarativeProperty *q;
QDeclarativeContext *context;
+ QDeclarativeEngine *engine;
QDeclarativeGuard<QObject> object;
- bool isDefaultProperty:1;
bool isNameCached:1;
QDeclarativePropertyCache::Data core;
QString nameCache;
@@ -97,8 +98,9 @@ public:
QMetaMethod findSignal(QObject *, const QString &);
+ bool isValueType() const;
int propertyType() const;
- QDeclarativeMetaProperty::PropertyTypeCategory propertyTypeCategory() const;
+ QDeclarativeProperty::PropertyTypeCategory propertyTypeCategory() const;
QVariant readValueProperty();
bool writeValueProperty(const QVariant &, WriteFlags);
@@ -115,26 +117,26 @@ public:
static QByteArray saveValueType(const QMetaObject *, int,
const QMetaObject *, int);
static QByteArray saveProperty(const QMetaObject *, int);
- static QDeclarativeMetaProperty restore(const QByteArray &, QObject *, QDeclarativeContext *);
+ static QDeclarativeProperty restore(const QByteArray &, QObject *, QDeclarativeContext *);
static bool equal(const QMetaObject *, const QMetaObject *);
static bool canConvert(const QMetaObject *from, const QMetaObject *to);
// "Public" (to QML) methods
- static QDeclarativeAbstractBinding *binding(const QDeclarativeMetaProperty &that);
- static QDeclarativeAbstractBinding *setBinding(const QDeclarativeMetaProperty &that,
+ static QDeclarativeAbstractBinding *binding(const QDeclarativeProperty &that);
+ static QDeclarativeAbstractBinding *setBinding(const QDeclarativeProperty &that,
QDeclarativeAbstractBinding *,
WriteFlags flags = DontRemoveBinding);
- static QDeclarativeExpression *signalExpression(const QDeclarativeMetaProperty &that);
- static QDeclarativeExpression *setSignalExpression(const QDeclarativeMetaProperty &that,
+ static QDeclarativeExpression *signalExpression(const QDeclarativeProperty &that);
+ static QDeclarativeExpression *setSignalExpression(const QDeclarativeProperty &that,
QDeclarativeExpression *) ;
- static bool write(const QDeclarativeMetaProperty &that, const QVariant &, WriteFlags);
- static int valueTypeCoreIndex(const QDeclarativeMetaProperty &that);
+ static bool write(const QDeclarativeProperty &that, const QVariant &, WriteFlags);
+ static int valueTypeCoreIndex(const QDeclarativeProperty &that);
};
-Q_DECLARE_OPERATORS_FOR_FLAGS(QDeclarativeMetaPropertyPrivate::WriteFlags)
+Q_DECLARE_OPERATORS_FOR_FLAGS(QDeclarativePropertyPrivate::WriteFlags)
QT_END_NAMESPACE
-#endif // QDECLARATIVEMETAPROPERTY_P_H
+#endif // QDECLARATIVEPROPERTY_P_H
diff --git a/src/declarative/qml/qdeclarativepropertyvalueinterceptor.cpp b/src/declarative/qml/qdeclarativepropertyvalueinterceptor.cpp
index 7626d56..3f6d805 100644
--- a/src/declarative/qml/qdeclarativepropertyvalueinterceptor.cpp
+++ b/src/declarative/qml/qdeclarativepropertyvalueinterceptor.cpp
@@ -66,7 +66,7 @@ QDeclarativePropertyValueInterceptor::~QDeclarativePropertyValueInterceptor()
}
/*!
- \fn void QDeclarativePropertyValueInterceptor::setTarget(const QDeclarativeMetaProperty &property)
+ \fn void QDeclarativePropertyValueInterceptor::setTarget(const QDeclarativeProperty &property)
Set the target \a property for the value interceptor. This method will
be called by the QML engine when assigning a value interceptor.
*/
diff --git a/src/declarative/qml/qdeclarativepropertyvalueinterceptor.h b/src/declarative/qml/qdeclarativepropertyvalueinterceptor.h
index 2a29d5b..3de5abc 100644
--- a/src/declarative/qml/qdeclarativepropertyvalueinterceptor.h
+++ b/src/declarative/qml/qdeclarativepropertyvalueinterceptor.h
@@ -50,13 +50,13 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
-class QDeclarativeMetaProperty;
+class QDeclarativeProperty;
class Q_DECLARATIVE_EXPORT QDeclarativePropertyValueInterceptor
{
public:
QDeclarativePropertyValueInterceptor();
virtual ~QDeclarativePropertyValueInterceptor();
- virtual void setTarget(const QDeclarativeMetaProperty &property) = 0;
+ virtual void setTarget(const QDeclarativeProperty &property) = 0;
virtual void write(const QVariant &value) = 0;
};
Q_DECLARE_INTERFACE(QDeclarativePropertyValueInterceptor, "com.trolltech.qml.QDeclarativePropertyValueInterceptor")
diff --git a/src/declarative/qml/qdeclarativepropertyvaluesource.cpp b/src/declarative/qml/qdeclarativepropertyvaluesource.cpp
index 626e391..b106d4f 100644
--- a/src/declarative/qml/qdeclarativepropertyvaluesource.cpp
+++ b/src/declarative/qml/qdeclarativepropertyvaluesource.cpp
@@ -63,7 +63,7 @@ QDeclarativePropertyValueSource::~QDeclarativePropertyValueSource()
}
/*!
- \fn void QDeclarativePropertyValueSource::setTarget(const QDeclarativeMetaProperty &property)
+ \fn void QDeclarativePropertyValueSource::setTarget(const QDeclarativeProperty &property)
Set the target \a property for the value source. This method will
be called by the QML engine when assigning a value source.
*/
diff --git a/src/declarative/qml/qdeclarativepropertyvaluesource.h b/src/declarative/qml/qdeclarativepropertyvaluesource.h
index 99c80af..70d2c03 100644
--- a/src/declarative/qml/qdeclarativepropertyvaluesource.h
+++ b/src/declarative/qml/qdeclarativepropertyvaluesource.h
@@ -50,13 +50,13 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
-class QDeclarativeMetaProperty;
+class QDeclarativeProperty;
class Q_DECLARATIVE_EXPORT QDeclarativePropertyValueSource
{
public:
QDeclarativePropertyValueSource();
virtual ~QDeclarativePropertyValueSource();
- virtual void setTarget(const QDeclarativeMetaProperty &) = 0;
+ virtual void setTarget(const QDeclarativeProperty &) = 0;
};
Q_DECLARE_INTERFACE(QDeclarativePropertyValueSource, "com.trolltech.qml.QDeclarativePropertyValueSource")
diff --git a/src/declarative/qml/qdeclarativescript.cpp b/src/declarative/qml/qdeclarativescript.cpp
index acfb9e1..ac4b2c1 100644
--- a/src/declarative/qml/qdeclarativescript.cpp
+++ b/src/declarative/qml/qdeclarativescript.cpp
@@ -43,6 +43,7 @@
/*!
\qmlclass Script QDeclarativeScript
+ \since 4.7
\brief The Script element provides a way to add JavaScript code snippets in QML.
\ingroup group_utility
diff --git a/src/declarative/qml/qdeclarativevaluetype.cpp b/src/declarative/qml/qdeclarativevaluetype.cpp
index d35371f..01fa214 100644
--- a/src/declarative/qml/qdeclarativevaluetype.cpp
+++ b/src/declarative/qml/qdeclarativevaluetype.cpp
@@ -100,7 +100,7 @@ void QDeclarativePointFValueType::read(QObject *obj, int idx)
QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a);
}
-void QDeclarativePointFValueType::write(QObject *obj, int idx, QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativePointFValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags)
{
int status = -1;
void *a[] = { &point, 0, &status, &flags };
@@ -148,7 +148,7 @@ void QDeclarativePointValueType::read(QObject *obj, int idx)
QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a);
}
-void QDeclarativePointValueType::write(QObject *obj, int idx, QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativePointValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags)
{
int status = -1;
void *a[] = { &point, 0, &status, &flags };
@@ -196,7 +196,7 @@ void QDeclarativeSizeFValueType::read(QObject *obj, int idx)
QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a);
}
-void QDeclarativeSizeFValueType::write(QObject *obj, int idx, QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativeSizeFValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags)
{
int status = -1;
void *a[] = { &size, 0, &status, &flags };
@@ -244,7 +244,7 @@ void QDeclarativeSizeValueType::read(QObject *obj, int idx)
QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a);
}
-void QDeclarativeSizeValueType::write(QObject *obj, int idx, QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativeSizeValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags)
{
int status = -1;
void *a[] = { &size, 0, &status, &flags };
@@ -292,7 +292,7 @@ void QDeclarativeRectFValueType::read(QObject *obj, int idx)
QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a);
}
-void QDeclarativeRectFValueType::write(QObject *obj, int idx, QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativeRectFValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags)
{
int status = -1;
void *a[] = { &rect, 0, &status, &flags };
@@ -360,7 +360,7 @@ void QDeclarativeRectValueType::read(QObject *obj, int idx)
QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a);
}
-void QDeclarativeRectValueType::write(QObject *obj, int idx, QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativeRectValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags)
{
int status = -1;
void *a[] = { &rect, 0, &status, &flags };
@@ -428,7 +428,7 @@ void QDeclarativeVector3DValueType::read(QObject *obj, int idx)
QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a);
}
-void QDeclarativeVector3DValueType::write(QObject *obj, int idx, QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativeVector3DValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags)
{
int status = -1;
void *a[] = { &vector, 0, &status, &flags };
@@ -486,7 +486,7 @@ void QDeclarativeEasingValueType::read(QObject *obj, int idx)
QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a);
}
-void QDeclarativeEasingValueType::write(QObject *obj, int idx, QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativeEasingValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags)
{
int status = -1;
void *a[] = { &easing, 0, &status, &flags };
@@ -554,7 +554,7 @@ void QDeclarativeFontValueType::read(QObject *obj, int idx)
QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a);
}
-void QDeclarativeFontValueType::write(QObject *obj, int idx, QDeclarativeMetaPropertyPrivate::WriteFlags flags)
+void QDeclarativeFontValueType::write(QObject *obj, int idx, QDeclarativePropertyPrivate::WriteFlags flags)
{
int status = -1;
void *a[] = { &font, 0, &status, &flags };
diff --git a/src/declarative/qml/qdeclarativevaluetype_p.h b/src/declarative/qml/qdeclarativevaluetype_p.h
index 792598b..cb153be 100644
--- a/src/declarative/qml/qdeclarativevaluetype_p.h
+++ b/src/declarative/qml/qdeclarativevaluetype_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativemetaproperty.h"
-#include "qdeclarativemetaproperty_p.h"
+#include "qdeclarativeproperty.h"
+#include "qdeclarativeproperty_p.h"
#include <QtCore/qobject.h>
#include <QtCore/qrect.h>
@@ -71,7 +71,7 @@ class Q_DECLARATIVE_EXPORT QDeclarativeValueType : public QObject
public:
QDeclarativeValueType(QObject *parent = 0);
virtual void read(QObject *, int) = 0;
- virtual void write(QObject *, int, QDeclarativeMetaPropertyPrivate::WriteFlags flags) = 0;
+ virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags flags) = 0;
virtual QVariant value() = 0;
virtual void setValue(QVariant) = 0;
};
@@ -96,7 +96,7 @@ public:
QDeclarativePointFValueType(QObject *parent = 0);
virtual void read(QObject *, int);
- virtual void write(QObject *, int, QDeclarativeMetaPropertyPrivate::WriteFlags);
+ virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
virtual QVariant value();
virtual void setValue(QVariant value);
@@ -118,7 +118,7 @@ public:
QDeclarativePointValueType(QObject *parent = 0);
virtual void read(QObject *, int);
- virtual void write(QObject *, int, QDeclarativeMetaPropertyPrivate::WriteFlags);
+ virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
virtual QVariant value();
virtual void setValue(QVariant value);
@@ -140,7 +140,7 @@ public:
QDeclarativeSizeFValueType(QObject *parent = 0);
virtual void read(QObject *, int);
- virtual void write(QObject *, int, QDeclarativeMetaPropertyPrivate::WriteFlags);
+ virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
virtual QVariant value();
virtual void setValue(QVariant value);
@@ -162,7 +162,7 @@ public:
QDeclarativeSizeValueType(QObject *parent = 0);
virtual void read(QObject *, int);
- virtual void write(QObject *, int, QDeclarativeMetaPropertyPrivate::WriteFlags);
+ virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
virtual QVariant value();
virtual void setValue(QVariant value);
@@ -186,7 +186,7 @@ public:
QDeclarativeRectFValueType(QObject *parent = 0);
virtual void read(QObject *, int);
- virtual void write(QObject *, int, QDeclarativeMetaPropertyPrivate::WriteFlags);
+ virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
virtual QVariant value();
virtual void setValue(QVariant value);
@@ -215,7 +215,7 @@ public:
QDeclarativeRectValueType(QObject *parent = 0);
virtual void read(QObject *, int);
- virtual void write(QObject *, int, QDeclarativeMetaPropertyPrivate::WriteFlags);
+ virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
virtual QVariant value();
virtual void setValue(QVariant value);
@@ -243,7 +243,7 @@ public:
QDeclarativeVector3DValueType(QObject *parent = 0);
virtual void read(QObject *, int);
- virtual void write(QObject *, int, QDeclarativeMetaPropertyPrivate::WriteFlags);
+ virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
virtual QVariant value();
virtual void setValue(QVariant value);
@@ -297,7 +297,7 @@ public:
QDeclarativeEasingValueType(QObject *parent = 0);
virtual void read(QObject *, int);
- virtual void write(QObject *, int, QDeclarativeMetaPropertyPrivate::WriteFlags);
+ virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
virtual QVariant value();
virtual void setValue(QVariant value);
@@ -348,7 +348,7 @@ public:
QDeclarativeFontValueType(QObject *parent = 0);
virtual void read(QObject *, int);
- virtual void write(QObject *, int, QDeclarativeMetaPropertyPrivate::WriteFlags);
+ virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
virtual QVariant value();
virtual void setValue(QVariant value);
diff --git a/src/declarative/qml/qdeclarativevme.cpp b/src/declarative/qml/qdeclarativevme.cpp
index f7af843..fc3722d 100644
--- a/src/declarative/qml/qdeclarativevme.cpp
+++ b/src/declarative/qml/qdeclarativevme.cpp
@@ -156,7 +156,7 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati
QDeclarativeContextPrivate *cp = (QDeclarativeContextPrivate *)QObjectPrivate::get(ctxt);
int status = -1; //for dbus
- QDeclarativeMetaPropertyPrivate::WriteFlags flags = QDeclarativeMetaPropertyPrivate::BypassInterceptor;
+ QDeclarativePropertyPrivate::WriteFlags flags = QDeclarativePropertyPrivate::BypassInterceptor;
for (int ii = start; !isError() && ii < (start + count); ++ii) {
const QDeclarativeInstruction &instr = comp->bytecode.at(ii);
@@ -217,7 +217,7 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati
// TODO: parent might be a layout
}
} else {
- QDeclarativeGraphics_setParent_noEvent(o, parent);
+ QDeclarative_setParent_noEvent(o, parent);
// o->setParent(parent);
}
}
@@ -515,8 +515,8 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati
int sigIdx = instr.assignSignalObject.signal;
const QByteArray &pr = datas.at(sigIdx);
- QDeclarativeMetaProperty prop(target, QString::fromUtf8(pr));
- if (prop.type() & QDeclarativeMetaProperty::SignalProperty) {
+ QDeclarativeProperty prop(target, QString::fromUtf8(pr));
+ if (prop.type() & QDeclarativeProperty::SignalProperty) {
QMetaMethod method = QDeclarativeMetaType::defaultMethod(assign);
if (method.signature() == 0)
@@ -525,7 +525,7 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati
if (!QMetaObject::checkConnectArgs(prop.method().signature(), method.signature()))
VME_EXCEPTION(QCoreApplication::translate("QDeclarativeVME","Cannot connect mismatched signal/slot %1 %vs. %2").arg(QString::fromLatin1(method.signature())).arg(QString::fromLatin1(prop.method().signature())));
- QMetaObject::connect(target, prop.coreIndex(), assign, method.methodIndex());
+ QMetaObject::connect(target, prop.index(), assign, method.methodIndex());
} else {
VME_EXCEPTION(QCoreApplication::translate("QDeclarativeVME","Cannot assign an object to signal property %1").arg(QString::fromUtf8(pr)));
@@ -590,10 +590,10 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati
QObject *context =
stack.at(stack.count() - 1 - instr.assignBinding.context);
- QDeclarativeMetaProperty mp =
- QDeclarativeMetaPropertyPrivate::restore(datas.at(instr.assignBinding.property), target, ctxt);
+ QDeclarativeProperty mp =
+ QDeclarativePropertyPrivate::restore(datas.at(instr.assignBinding.property), target, ctxt);
- int coreIndex = mp.coreIndex();
+ int coreIndex = mp.index();
if (stack.count() == 1 && bindingSkipList.testBit(coreIndex))
break;
@@ -631,8 +631,8 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati
QDeclarativePropertyValueSource *vs = reinterpret_cast<QDeclarativePropertyValueSource *>(reinterpret_cast<char *>(obj) + instr.assignValueSource.castValue);
QObject *target = stack.at(stack.count() - 1 - instr.assignValueSource.owner);
- QDeclarativeMetaProperty prop =
- QDeclarativeMetaPropertyPrivate::restore(datas.at(instr.assignValueSource.property), target, ctxt);
+ QDeclarativeProperty prop =
+ QDeclarativePropertyPrivate::restore(datas.at(instr.assignValueSource.property), target, ctxt);
obj->setParent(target);
vs->setTarget(prop);
}
@@ -643,12 +643,12 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati
QObject *obj = stack.pop();
QDeclarativePropertyValueInterceptor *vi = reinterpret_cast<QDeclarativePropertyValueInterceptor *>(reinterpret_cast<char *>(obj) + instr.assignValueInterceptor.castValue);
QObject *target = stack.at(stack.count() - 1 - instr.assignValueInterceptor.owner);
- QDeclarativeMetaProperty prop =
- QDeclarativeMetaPropertyPrivate::restore(datas.at(instr.assignValueInterceptor.property), target, ctxt);
+ QDeclarativeProperty prop =
+ QDeclarativePropertyPrivate::restore(datas.at(instr.assignValueInterceptor.property), target, ctxt);
obj->setParent(target);
vi->setTarget(prop);
QDeclarativeVMEMetaObject *mo = static_cast<QDeclarativeVMEMetaObject *>((QMetaObject*)target->metaObject());
- mo->registerInterceptor(prop.coreIndex(), QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), vi);
+ mo->registerInterceptor(prop.index(), QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), vi);
}
break;
@@ -807,7 +807,7 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarati
static_cast<QDeclarativeValueType *>(stack.pop());
QObject *target = stack.top();
valueHandler->write(target, instr.fetchValue.property,
- QDeclarativeMetaPropertyPrivate::BypassInterceptor);
+ QDeclarativePropertyPrivate::BypassInterceptor);
}
break;
diff --git a/src/declarative/qml/qdeclarativevmemetaobject.cpp b/src/declarative/qml/qdeclarativevmemetaobject.cpp
index 6edb707..d67c834 100644
--- a/src/declarative/qml/qdeclarativevmemetaobject.cpp
+++ b/src/declarative/qml/qdeclarativevmemetaobject.cpp
@@ -105,7 +105,7 @@ int QDeclarativeVMEMetaObject::metaCall(QMetaObject::Call c, int _id, void **a)
int id = _id;
if(c == QMetaObject::WriteProperty) {
int flags = *reinterpret_cast<int*>(a[3]);
- if (!(flags & QDeclarativeMetaPropertyPrivate::BypassInterceptor)
+ if (!(flags & QDeclarativePropertyPrivate::BypassInterceptor)
&& !aInterceptors.isEmpty()
&& aInterceptors.testBit(id)) {
QPair<int, QDeclarativePropertyValueInterceptor*> pair = interceptors.value(id);
diff --git a/src/declarative/qml/qml.pri b/src/declarative/qml/qml.pri
index 8a43cec..aa1a34b 100644
--- a/src/declarative/qml/qml.pri
+++ b/src/declarative/qml/qml.pri
@@ -6,7 +6,7 @@ SOURCES += \
$$PWD/qdeclarativeengine.cpp \
$$PWD/qdeclarativeexpression.cpp \
$$PWD/qdeclarativebinding.cpp \
- $$PWD/qdeclarativemetaproperty.cpp \
+ $$PWD/qdeclarativeproperty.cpp \
$$PWD/qdeclarativecomponent.cpp \
$$PWD/qdeclarativecontext.cpp \
$$PWD/qdeclarativecustomparser.cpp \
@@ -62,7 +62,7 @@ HEADERS += \
$$PWD/qdeclarative.h \
$$PWD/qdeclarativebinding_p.h \
$$PWD/qdeclarativebinding_p_p.h \
- $$PWD/qdeclarativemetaproperty.h \
+ $$PWD/qdeclarativeproperty.h \
$$PWD/qdeclarativecomponent.h \
$$PWD/qdeclarativecomponent_p.h \
$$PWD/qdeclarativecustomparser_p.h \
@@ -87,7 +87,7 @@ HEADERS += \
$$PWD/qdeclarativestringconverters_p.h \
$$PWD/qdeclarativeclassfactory_p.h \
$$PWD/qdeclarativeinfo.h \
- $$PWD/qdeclarativemetaproperty_p.h \
+ $$PWD/qdeclarativeproperty_p.h \
$$PWD/qdeclarativecontext_p.h \
$$PWD/qdeclarativecompositetypedata_p.h \
$$PWD/qdeclarativecompositetypemanager_p.h \
diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp
index a327ccb..10230d3 100644
--- a/src/declarative/util/qdeclarativeanimation.cpp
+++ b/src/declarative/util/qdeclarativeanimation.cpp
@@ -52,7 +52,7 @@
#include <qdeclarativestringconverters_p.h>
#include <qdeclarativeglobal_p.h>
#include <qdeclarativemetatype_p.h>
-#include <qdeclarativemetaproperty_p.h>
+#include <qdeclarativeproperty_p.h>
#include <qvariant.h>
#include <qcolor.h>
@@ -63,6 +63,7 @@
#include <QtCore/qrect.h>
#include <QtCore/qpoint.h>
#include <QtCore/qsize.h>
+#include <QtCore/qmath.h>
#include <private/qvariantanimation_p.h>
@@ -70,7 +71,7 @@ QT_BEGIN_NAMESPACE
/*!
\qmlclass Animation QDeclarativeAbstractAnimation
- \since 4.7
+ \since 4.7
\brief The Animation element is the base of all QML animations.
The Animation element cannot be used directly in a QML file. It exists
@@ -145,7 +146,7 @@ void QDeclarativeAbstractAnimationPrivate::commence()
Q_Q(QDeclarativeAbstractAnimation);
QDeclarativeStateActions actions;
- QDeclarativeMetaProperties properties;
+ QDeclarativeProperties properties;
q->transition(actions, properties, QDeclarativeAbstractAnimation::Forward);
q->qtAnimation()->start();
@@ -155,15 +156,15 @@ void QDeclarativeAbstractAnimationPrivate::commence()
}
}
-QDeclarativeMetaProperty QDeclarativeAbstractAnimationPrivate::createProperty(QObject *obj, const QString &str, QObject *infoObj)
+QDeclarativeProperty QDeclarativeAbstractAnimationPrivate::createProperty(QObject *obj, const QString &str, QObject *infoObj)
{
- QDeclarativeMetaProperty prop(obj, str, qmlContext(infoObj));
+ QDeclarativeProperty prop(obj, str, qmlContext(infoObj));
if (!prop.isValid()) {
qmlInfo(infoObj) << QDeclarativeAbstractAnimation::tr("Cannot animate non-existent property \"%1\"").arg(str);
- return QDeclarativeMetaProperty();
+ return QDeclarativeProperty();
} else if (!prop.isWritable()) {
qmlInfo(infoObj) << QDeclarativeAbstractAnimation::tr("Cannot animate read-only property \"%1\"").arg(str);
- return QDeclarativeMetaProperty();
+ return QDeclarativeProperty();
}
return prop;
}
@@ -360,9 +361,6 @@ void QDeclarativeAbstractAnimation::setGroup(QDeclarativeAnimationGroup *g)
if (d->group && !static_cast<QDeclarativeAnimationGroupPrivate *>(d->group->d_func())->animations.contains(this))
static_cast<QDeclarativeAnimationGroupPrivate *>(d->group->d_func())->animations.append(this);
- if (d->group)
- ((QAnimationGroup*)d->group->qtAnimation())->addAnimation(qtAnimation());
-
//if (g) //if removed from a group, then the group should no longer be the parent
setParent(g);
}
@@ -466,7 +464,7 @@ void QDeclarativeAbstractAnimation::complete()
}
}
-void QDeclarativeAbstractAnimation::setTarget(const QDeclarativeMetaProperty &p)
+void QDeclarativeAbstractAnimation::setTarget(const QDeclarativeProperty &p)
{
Q_D(QDeclarativeAbstractAnimation);
d->defaultProperty = p;
@@ -480,7 +478,7 @@ void QDeclarativeAbstractAnimation::setTarget(const QDeclarativeMetaProperty &p)
so this function allows us to do the same thing as setTarget without
that assumption
*/
-void QDeclarativeAbstractAnimation::setDefaultTarget(const QDeclarativeMetaProperty &p)
+void QDeclarativeAbstractAnimation::setDefaultTarget(const QDeclarativeProperty &p)
{
Q_D(QDeclarativeAbstractAnimation);
d->defaultProperty = p;
@@ -498,7 +496,7 @@ void QDeclarativeAbstractAnimation::setDisableUserControl()
}
void QDeclarativeAbstractAnimation::transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction)
{
Q_UNUSED(actions);
@@ -517,7 +515,7 @@ void QDeclarativeAbstractAnimation::timelineComplete()
/*!
\qmlclass PauseAnimation QDeclarativePauseAnimation
- \since 4.7
+ \since 4.7
\inherits Animation
\brief The PauseAnimation element provides a pause for an animation.
@@ -554,7 +552,7 @@ void QDeclarativePauseAnimationPrivate::init()
{
Q_Q(QDeclarativePauseAnimation);
pa = new QPauseAnimation;
- QDeclarativeGraphics_setParent_noEvent(pa, q);
+ QDeclarative_setParent_noEvent(pa, q);
}
/*!
@@ -591,7 +589,7 @@ QAbstractAnimation *QDeclarativePauseAnimation::qtAnimation()
/*!
\qmlclass ColorAnimation QDeclarativeColorAnimation
- \since 4.7
+ \since 4.7
\inherits PropertyAnimation
\brief The ColorAnimation element allows you to animate color changes.
@@ -655,7 +653,7 @@ void QDeclarativeColorAnimation::setTo(const QColor &t)
/*!
\qmlclass ScriptAction QDeclarativeScriptAction
- \since 4.7
+ \since 4.7
\inherits Animation
\brief The ScriptAction element allows scripts to be run during an animation.
@@ -679,7 +677,7 @@ void QDeclarativeScriptActionPrivate::init()
{
Q_Q(QDeclarativeScriptAction);
rsa = new QActionAnimation(&proxy);
- QDeclarativeGraphics_setParent_noEvent(rsa, q);
+ QDeclarative_setParent_noEvent(rsa, q);
}
/*!
@@ -729,7 +727,7 @@ void QDeclarativeScriptActionPrivate::execute()
}
void QDeclarativeScriptAction::transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction)
{
Q_D(QDeclarativeScriptAction);
@@ -761,7 +759,7 @@ QAbstractAnimation *QDeclarativeScriptAction::qtAnimation()
/*!
\qmlclass PropertyAction QDeclarativePropertyAction
- \since 4.7
+ \since 4.7
\inherits Animation
\brief The PropertyAction element allows immediate property changes during animation.
@@ -797,7 +795,7 @@ void QDeclarativePropertyActionPrivate::init()
{
Q_Q(QDeclarativePropertyAction);
spa = new QActionAnimation;
- QDeclarativeGraphics_setParent_noEvent(spa, q);
+ QDeclarative_setParent_noEvent(spa, q);
}
/*!
@@ -912,7 +910,7 @@ QAbstractAnimation *QDeclarativePropertyAction::qtAnimation()
}
void QDeclarativePropertyAction::transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction)
{
Q_D(QDeclarativePropertyAction);
@@ -925,7 +923,7 @@ void QDeclarativePropertyAction::transition(QDeclarativeStateActions &actions,
{
for (int ii = 0; ii < actions.count(); ++ii) {
const QDeclarativeAction &action = actions.at(ii);
- QDeclarativeMetaPropertyPrivate::write(action.property, action.toValue, QDeclarativeMetaPropertyPrivate::BypassInterceptor | QDeclarativeMetaPropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::write(action.property, action.toValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
}
}
};
@@ -1010,7 +1008,7 @@ void QDeclarativePropertyAction::transition(QDeclarativeStateActions &actions,
/*!
\qmlclass ParentAction QDeclarativeParentAction
- \since 4.7
+ \since 4.7
\inherits Animation
\brief The ParentAction element allows parent changes during animation.
@@ -1058,7 +1056,7 @@ void QDeclarativeParentActionPrivate::init()
{
Q_Q(QDeclarativeParentAction);
cpa = new QActionAnimation;
- QDeclarativeGraphics_setParent_noEvent(cpa, q);
+ QDeclarative_setParent_noEvent(cpa, q);
}
/*!
@@ -1133,7 +1131,7 @@ QAbstractAnimation *QDeclarativeParentAction::qtAnimation()
}
void QDeclarativeParentAction::transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction)
{
Q_D(QDeclarativeParentAction);
@@ -1214,7 +1212,7 @@ void QDeclarativeParentAction::transition(QDeclarativeStateActions &actions,
/*!
\qmlclass NumberAnimation QDeclarativeNumberAnimation
- \since 4.7
+ \since 4.7
\inherits PropertyAnimation
\brief The NumberAnimation element allows you to animate changes in properties of type qreal.
@@ -1278,7 +1276,7 @@ void QDeclarativeNumberAnimation::setTo(qreal t)
/*!
\qmlclass Vector3dAnimation QDeclarativeVector3dAnimation
- \since 4.7
+ \since 4.7
\inherits PropertyAnimation
\brief The Vector3dAnimation element allows you to animate changes in properties of type QVector3d.
*/
@@ -1337,6 +1335,7 @@ void QDeclarativeVector3dAnimation::setTo(QVector3D t)
/*!
\qmlclass RotationAnimation QDeclarativeRotationAnimation
+ \since 4.7
\inherits PropertyAnimation
\brief The RotationAnimation element allows you to animate rotations.
@@ -1511,12 +1510,18 @@ QDeclarativeAnimationGroup::QDeclarativeAnimationGroup(QObject *parent)
{
}
+QDeclarativeAnimationGroup::QDeclarativeAnimationGroup(QDeclarativeAnimationGroupPrivate &dd, QObject *parent)
+ : QDeclarativeAbstractAnimation(dd, parent)
+{
+}
+
void QDeclarativeAnimationGroupPrivate::append_animation(QDeclarativeListProperty<QDeclarativeAbstractAnimation> *list, QDeclarativeAbstractAnimation *a)
{
QDeclarativeAnimationGroup *q = qobject_cast<QDeclarativeAnimationGroup *>(list->object);
if (q) {
q->d_func()->animations.append(a);
a->setGroup(q);
+ q->d_func()->ag->addAnimation(a->qtAnimation());
}
}
@@ -1545,7 +1550,7 @@ QDeclarativeListProperty<QDeclarativeAbstractAnimation> QDeclarativeAnimationGro
/*!
\qmlclass SequentialAnimation QDeclarativeSequentialAnimation
- \since 4.7
+ \since 4.7
\inherits Animation
\brief The SequentialAnimation element allows you to run animations sequentially.
@@ -1582,7 +1587,7 @@ QAbstractAnimation *QDeclarativeSequentialAnimation::qtAnimation()
}
void QDeclarativeSequentialAnimation::transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction)
{
Q_D(QDeclarativeAnimationGroup);
@@ -1606,7 +1611,7 @@ void QDeclarativeSequentialAnimation::transition(QDeclarativeStateActions &actio
/*!
\qmlclass ParallelAnimation QDeclarativeParallelAnimation
- \since 4.7
+ \since 4.7
\inherits Animation
\brief The ParallelAnimation element allows you to run animations in parallel.
@@ -1647,7 +1652,7 @@ QAbstractAnimation *QDeclarativeParallelAnimation::qtAnimation()
}
void QDeclarativeParallelAnimation::transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction)
{
Q_D(QDeclarativeAnimationGroup);
@@ -1715,7 +1720,7 @@ void QDeclarativePropertyAnimationPrivate::convertVariant(QVariant &variant, int
/*!
\qmlclass PropertyAnimation QDeclarativePropertyAnimation
- \since 4.7
+ \since 4.7
\inherits Animation
\brief The PropertyAnimation element allows you to animate property changes.
@@ -1793,7 +1798,7 @@ void QDeclarativePropertyAnimationPrivate::init()
{
Q_Q(QDeclarativePropertyAnimation);
va = new QDeclarativeTimeLineValueAnimator;
- QDeclarativeGraphics_setParent_noEvent(va, q);
+ QDeclarative_setParent_noEvent(va, q);
}
/*!
@@ -2231,7 +2236,7 @@ struct PropertyUpdater : public QDeclarativeTimeLineValue
QDeclarativeAction &action = actions[ii];
if (v == 1.)
- QDeclarativeMetaPropertyPrivate::write(action.property, action.toValue, QDeclarativeMetaPropertyPrivate::BypassInterceptor | QDeclarativeMetaPropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::write(action.property, action.toValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
else {
if (!fromSourced && !fromDefined) {
action.fromValue = action.property.read();
@@ -2246,7 +2251,7 @@ struct PropertyUpdater : public QDeclarativeTimeLineValue
}
}
if (interpolator)
- QDeclarativeMetaPropertyPrivate::write(action.property, interpolator(action.fromValue.constData(), action.toValue.constData(), v), QDeclarativeMetaPropertyPrivate::BypassInterceptor | QDeclarativeMetaPropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::write(action.property, interpolator(action.fromValue.constData(), action.toValue.constData(), v), QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
}
if (deleted)
return;
@@ -2257,7 +2262,7 @@ struct PropertyUpdater : public QDeclarativeTimeLineValue
};
void QDeclarativePropertyAnimation::transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction)
{
Q_D(QDeclarativePropertyAnimation);
@@ -2366,6 +2371,241 @@ void QDeclarativePropertyAnimation::transition(QDeclarativeStateActions &actions
}
}
+QDeclarativeParentAnimation::QDeclarativeParentAnimation(QObject *parent)
+ : QDeclarativeAnimationGroup(*(new QDeclarativeParentAnimationPrivate), parent)
+{
+ Q_D(QDeclarativeParentAnimation);
+ d->topLevelGroup = new QSequentialAnimationGroup;
+ QDeclarative_setParent_noEvent(d->topLevelGroup, this);
+
+ d->startAction = new QActionAnimation;
+ d->topLevelGroup->addAnimation(d->startAction);
+
+ d->ag = new QParallelAnimationGroup;
+ d->topLevelGroup->addAnimation(d->ag);
+
+ d->endAction = new QActionAnimation;
+ d->topLevelGroup->addAnimation(d->endAction);
+}
+
+QDeclarativeParentAnimation::~QDeclarativeParentAnimation()
+{
+}
+
+QDeclarativeItem *QDeclarativeParentAnimation::target() const
+{
+ Q_D(const QDeclarativeParentAnimation);
+ return d->target;
+}
+
+void QDeclarativeParentAnimation::setTarget(QDeclarativeItem *target)
+{
+ Q_D(QDeclarativeParentAnimation);
+ d->target = target;
+}
+
+QDeclarativeItem *QDeclarativeParentAnimation::newParent() const
+{
+ Q_D(const QDeclarativeParentAnimation);
+ return d->newParent;
+}
+
+void QDeclarativeParentAnimation::setNewParent(QDeclarativeItem *newParent)
+{
+ Q_D(QDeclarativeParentAnimation);
+ d->newParent = newParent;
+}
+
+QDeclarativeItem *QDeclarativeParentAnimation::via() const
+{
+ Q_D(const QDeclarativeParentAnimation);
+ return d->via;
+}
+
+void QDeclarativeParentAnimation::setVia(QDeclarativeItem *via)
+{
+ Q_D(QDeclarativeParentAnimation);
+ d->via = via;
+}
+
+//### mirrors same-named function in QDeclarativeItem
+QPointF QDeclarativeParentAnimationPrivate::computeTransformOrigin(QDeclarativeItem::TransformOrigin origin, qreal width, qreal height) const
+{
+ switch(origin) {
+ default:
+ case QDeclarativeItem::TopLeft:
+ return QPointF(0, 0);
+ case QDeclarativeItem::Top:
+ return QPointF(width / 2., 0);
+ case QDeclarativeItem::TopRight:
+ return QPointF(width, 0);
+ case QDeclarativeItem::Left:
+ return QPointF(0, height / 2.);
+ case QDeclarativeItem::Center:
+ return QPointF(width / 2., height / 2.);
+ case QDeclarativeItem::Right:
+ return QPointF(width, height / 2.);
+ case QDeclarativeItem::BottomLeft:
+ return QPointF(0, height);
+ case QDeclarativeItem::Bottom:
+ return QPointF(width / 2., height);
+ case QDeclarativeItem::BottomRight:
+ return QPointF(width, height);
+ }
+}
+
+void QDeclarativeParentAnimation::transition(QDeclarativeStateActions &actions,
+ QDeclarativeProperties &modified,
+ TransitionDirection direction)
+{
+ Q_D(QDeclarativeParentAnimation);
+
+ struct QDeclarativeParentActionData : public QAbstractAnimationAction
+ {
+ QDeclarativeParentActionData(): pc(0) {}
+ ~QDeclarativeParentActionData() { delete pc; }
+
+ QDeclarativeStateActions actions;
+ bool reverse;
+ QDeclarativeParentChange *pc;
+ virtual void doAction()
+ {
+ for (int ii = 0; ii < actions.count(); ++ii) {
+ const QDeclarativeAction &action = actions.at(ii);
+ if (reverse)
+ action.event->reverse();
+ else
+ action.event->execute();
+ }
+ }
+ };
+
+ QDeclarativeParentActionData *data = new QDeclarativeParentActionData;
+ QDeclarativeParentActionData *viaData = new QDeclarativeParentActionData;
+ for (int i = 0; i < actions.size(); ++i) {
+ QDeclarativeAction &action = actions[i];
+ if (action.event && action.event->typeName() == QLatin1String("ParentChange")
+ && (!d->target || static_cast<QDeclarativeParentChange*>(action.event)->object() == d->target)) {
+
+ QDeclarativeParentChange *pc = static_cast<QDeclarativeParentChange*>(action.event);
+ QDeclarativeAction myAction = action;
+ data->reverse = action.reverseEvent;
+ action.actionDone = true;
+ data->actions << myAction;
+
+ if (d->via) {
+ viaData->reverse = false;
+ QDeclarativeAction myAction;
+ QDeclarativeParentChange *vpc = new QDeclarativeParentChange;
+ vpc->setObject(pc->object());
+ vpc->setParent(d->via);
+ myAction.event = vpc;
+ viaData->pc = vpc;
+ viaData->actions << myAction;
+ QDeclarativeAction dummyAction;
+ QDeclarativeAction &xAction = pc->xIsSet() ? actions[++i] : dummyAction;
+ QDeclarativeAction &yAction = pc->yIsSet() ? actions[++i] : dummyAction;
+ QDeclarativeAction &sAction = pc->scaleIsSet() ? actions[++i] : dummyAction;
+ QDeclarativeAction &rAction = pc->rotationIsSet() ? actions[++i] : dummyAction;
+ bool forward = (direction == QDeclarativeAbstractAnimation::Forward);
+ QDeclarativeItem *target = pc->object();
+ QDeclarativeItem *targetParent = forward ? pc->parent() : pc->originalParent();
+
+ //### this mirrors the logic in QDeclarativeParentChange.
+ bool ok;
+ const QTransform &transform = targetParent->itemTransform(d->via, &ok);
+ if (transform.type() >= QTransform::TxShear || !ok) {
+ qmlInfo(this) << QDeclarativeParentAnimation::tr("Unable to preserve appearance under complex transform");
+ ok = false;
+ }
+
+ qreal scale = 1;
+ qreal rotation = 0;
+ if (ok && transform.type() != QTransform::TxRotate) {
+ if (transform.m11() == transform.m22())
+ scale = transform.m11();
+ else {
+ qmlInfo(this) << QDeclarativeParentAnimation::tr("Unable to preserve appearance under non-uniform scale");
+ ok = false;
+ }
+ } else if (ok && transform.type() == QTransform::TxRotate) {
+ if (transform.m11() == transform.m22())
+ scale = qSqrt(transform.m11()*transform.m11() + transform.m12()*transform.m12());
+ else {
+ qmlInfo(this) << QDeclarativeParentAnimation::tr("Unable to preserve appearance under non-uniform scale");
+ ok = false;
+ }
+
+ if (scale != 0)
+ rotation = atan2(transform.m12()/scale, transform.m11()/scale) * 180/M_PI;
+ else {
+ qmlInfo(this) << QDeclarativeParentAnimation::tr("Unable to preserve appearance under scale of 0");
+ ok = false;
+ }
+ }
+
+ const QPointF &point = transform.map(QPointF(xAction.toValue.toReal(),yAction.toValue.toReal()));
+ qreal x = point.x();
+ qreal y = point.y();
+ if (ok && target->transformOrigin() != QDeclarativeItem::TopLeft) {
+ qreal w = target->width();
+ qreal h = target->height();
+ if (pc->widthIsSet())
+ w = actions[++i].toValue.toReal();
+ if (pc->heightIsSet())
+ h = actions[++i].toValue.toReal();
+ const QPointF &transformOrigin
+ = d->computeTransformOrigin(target->transformOrigin(), w,h);
+ qreal tempxt = transformOrigin.x();
+ qreal tempyt = transformOrigin.y();
+ QTransform t;
+ t.translate(-tempxt, -tempyt);
+ t.rotate(rotation);
+ t.scale(scale, scale);
+ t.translate(tempxt, tempyt);
+ const QPointF &offset = t.map(QPointF(0,0));
+ x += offset.x();
+ y += offset.y();
+ }
+
+ if (ok) {
+ //qDebug() << x << y << rotation << scale;
+ xAction.toValue = x;
+ yAction.toValue = y;
+ sAction.toValue = sAction.toValue.toReal() * scale;
+ rAction.toValue = rAction.toValue.toReal() + rotation;
+ }
+ }
+ }
+ }
+
+ if (data->actions.count()) {
+ if (direction == QDeclarativeAbstractAnimation::Forward) {
+ d->startAction->setAnimAction(d->via ? viaData : data, QActionAnimation::DeleteWhenStopped);
+ d->endAction->setAnimAction(d->via ? data : 0, QActionAnimation::DeleteWhenStopped);
+ } else {
+ d->endAction->setAnimAction(d->via ? viaData : data, QActionAnimation::DeleteWhenStopped);
+ d->startAction->setAnimAction(d->via ? data : 0, QActionAnimation::DeleteWhenStopped);
+ }
+ } else {
+ delete data;
+ delete viaData;
+ }
+
+ //take care of any child animations
+ bool valid = d->defaultProperty.isValid();
+ for (int ii = 0; ii < d->animations.count(); ++ii) {
+ if (valid)
+ d->animations.at(ii)->setDefaultTarget(d->defaultProperty);
+ d->animations.at(ii)->transition(actions, modified, direction);
+ }
+
+}
+QAbstractAnimation *QDeclarativeParentAnimation::qtAnimation()
+{
+ Q_D(QDeclarativeParentAnimation);
+ return d->topLevelGroup;
+}
QT_END_NAMESPACE
diff --git a/src/declarative/util/qdeclarativeanimation_p.h b/src/declarative/util/qdeclarativeanimation_p.h
index 02dacb3..0f23f5c 100644
--- a/src/declarative/util/qdeclarativeanimation_p.h
+++ b/src/declarative/util/qdeclarativeanimation_p.h
@@ -95,7 +95,7 @@ public:
QDeclarativeAnimationGroup *group() const;
void setGroup(QDeclarativeAnimationGroup *);
- void setDefaultTarget(const QDeclarativeMetaProperty &);
+ void setDefaultTarget(const QDeclarativeProperty &);
void setDisableUserControl();
void classBegin();
@@ -123,7 +123,7 @@ protected:
public:
enum TransitionDirection { Forward, Backward };
virtual void transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction);
virtual QAbstractAnimation *qtAnimation() = 0;
@@ -131,7 +131,7 @@ private Q_SLOTS:
void timelineComplete();
private:
- virtual void setTarget(const QDeclarativeMetaProperty &);
+ virtual void setTarget(const QDeclarativeProperty &);
};
class QDeclarativePauseAnimationPrivate;
@@ -177,7 +177,7 @@ public:
protected:
virtual void transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction);
virtual QAbstractAnimation *qtAnimation();
};
@@ -221,7 +221,7 @@ Q_SIGNALS:
protected:
virtual void transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction);
virtual QAbstractAnimation *qtAnimation();
};
@@ -248,7 +248,7 @@ public:
protected:
virtual void transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction);
virtual QAbstractAnimation *qtAnimation();
};
@@ -300,7 +300,7 @@ public:
protected:
QDeclarativePropertyAnimation(QDeclarativePropertyAnimationPrivate &dd, QObject *parent);
virtual void transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction);
virtual QAbstractAnimation *qtAnimation();
@@ -413,6 +413,9 @@ public:
QDeclarativeListProperty<QDeclarativeAbstractAnimation> animations();
friend class QDeclarativeAbstractAnimation;
+
+protected:
+ QDeclarativeAnimationGroup(QDeclarativeAnimationGroupPrivate &dd, QObject *parent);
};
class QDeclarativeSequentialAnimation : public QDeclarativeAnimationGroup
@@ -426,7 +429,7 @@ public:
protected:
virtual void transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
TransitionDirection direction);
virtual QAbstractAnimation *qtAnimation();
};
@@ -442,7 +445,37 @@ public:
protected:
virtual void transition(QDeclarativeStateActions &actions,
- QDeclarativeMetaProperties &modified,
+ QDeclarativeProperties &modified,
+ TransitionDirection direction);
+ virtual QAbstractAnimation *qtAnimation();
+};
+
+class QDeclarativeParentAnimationPrivate;
+class QDeclarativeParentAnimation : public QDeclarativeAnimationGroup
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QDeclarativeParentAnimation)
+
+ Q_PROPERTY(QDeclarativeItem *target READ target WRITE setTarget)
+ //Q_PROPERTY(QDeclarativeItem *newParent READ newParent WRITE setNewParent)
+ Q_PROPERTY(QDeclarativeItem *via READ via WRITE setVia)
+
+public:
+ QDeclarativeParentAnimation(QObject *parent=0);
+ virtual ~QDeclarativeParentAnimation();
+
+ QDeclarativeItem *target() const;
+ void setTarget(QDeclarativeItem *);
+
+ QDeclarativeItem *newParent() const;
+ void setNewParent(QDeclarativeItem *);
+
+ QDeclarativeItem *via() const;
+ void setVia(QDeclarativeItem *);
+
+protected:
+ virtual void transition(QDeclarativeStateActions &actions,
+ QDeclarativeProperties &modified,
TransitionDirection direction);
virtual QAbstractAnimation *qtAnimation();
};
@@ -461,6 +494,7 @@ QML_DECLARE_TYPE(QDeclarativeSequentialAnimation)
QML_DECLARE_TYPE(QDeclarativeParallelAnimation)
QML_DECLARE_TYPE(QDeclarativeVector3dAnimation)
QML_DECLARE_TYPE(QDeclarativeRotationAnimation)
+QML_DECLARE_TYPE(QDeclarativeParentAnimation)
QT_END_HEADER
diff --git a/src/declarative/util/qdeclarativeanimation_p_p.h b/src/declarative/util/qdeclarativeanimation_p_p.h
index 65c9807..e582066 100644
--- a/src/declarative/util/qdeclarativeanimation_p_p.h
+++ b/src/declarative/util/qdeclarativeanimation_p_p.h
@@ -59,6 +59,7 @@
#include "qdeclarativetimeline_p_p.h"
#include <qdeclarative.h>
+#include <qdeclarativeitem.h>
#include <qdeclarativecontext.h>
#include <QtCore/QPauseAnimation>
@@ -104,6 +105,12 @@ public:
: QAbstractAnimation(parent), animAction(action), policy(KeepWhenStopped), running(false) {}
~QActionAnimation() { if (policy == DeleteWhenStopped) { delete animAction; animAction = 0; } }
virtual int duration() const { return 0; }
+ void clearAnimAction()
+ {
+ if (policy == DeleteWhenStopped)
+ delete animAction;
+ animAction = 0;
+ }
void setAnimAction(QAbstractAnimationAction *action, DeletionPolicy p)
{
if (state() == Running)
@@ -226,11 +233,11 @@ public:
void commence();
- QDeclarativeMetaProperty defaultProperty;
+ QDeclarativeProperty defaultProperty;
QDeclarativeAnimationGroup *group;
- static QDeclarativeMetaProperty createProperty(QObject *obj, const QString &str, QObject *infoObj);
+ static QDeclarativeProperty createProperty(QObject *obj, const QString &str, QObject *infoObj);
};
class QDeclarativePauseAnimationPrivate : public QDeclarativeAbstractAnimationPrivate
@@ -311,8 +318,6 @@ public:
static void append_animation(QDeclarativeListProperty<QDeclarativeAbstractAnimation> *list, QDeclarativeAbstractAnimation *role);
static void clear_animation(QDeclarativeListProperty<QDeclarativeAbstractAnimation> *list);
- static void removeAt_animation(QDeclarativeListProperty<QDeclarativeAbstractAnimation> *list, int i);
- static void insert_animation(QDeclarativeListProperty<QDeclarativeAbstractAnimation> *list, int i, QDeclarativeAbstractAnimation *role);
QList<QDeclarativeAbstractAnimation *> animations;
QAnimationGroup *ag;
};
@@ -362,6 +367,25 @@ public:
QDeclarativeRotationAnimation::RotationDirection direction;
};
+class QDeclarativeParentAnimationPrivate : public QDeclarativeAnimationGroupPrivate
+{
+ Q_DECLARE_PUBLIC(QDeclarativeParentAnimation)
+public:
+ QDeclarativeParentAnimationPrivate()
+ : QDeclarativeAnimationGroupPrivate(), target(0), newParent(0),
+ via(0), topLevelGroup(0), startAction(0), endAction(0) {}
+
+ QDeclarativeItem *target;
+ QDeclarativeItem *newParent;
+ QDeclarativeItem *via;
+
+ QSequentialAnimationGroup *topLevelGroup;
+ QActionAnimation *startAction;
+ QActionAnimation *endAction;
+
+ QPointF computeTransformOrigin(QDeclarativeItem::TransformOrigin origin, qreal width, qreal height) const;
+};
+
QT_END_NAMESPACE
#endif // QDECLARATIVEANIMATION_P_H
diff --git a/src/declarative/util/qdeclarativebehavior.cpp b/src/declarative/util/qdeclarativebehavior.cpp
index b1f1677..5352341 100644
--- a/src/declarative/util/qdeclarativebehavior.cpp
+++ b/src/declarative/util/qdeclarativebehavior.cpp
@@ -46,7 +46,7 @@
#include <qdeclarativecontext.h>
#include <qdeclarativeinfo.h>
-#include <qdeclarativemetaproperty_p.h>
+#include <qdeclarativeproperty_p.h>
#include <QtCore/qparallelanimationgroup.h>
@@ -62,7 +62,7 @@ class QDeclarativeBehaviorPrivate : public QObjectPrivate
public:
QDeclarativeBehaviorPrivate() : animation(0), enabled(true) {}
- QDeclarativeMetaProperty property;
+ QDeclarativeProperty property;
QVariant currentValue;
QDeclarativeAbstractAnimation *animation;
bool enabled;
@@ -70,6 +70,7 @@ public:
/*!
\qmlclass Behavior QDeclarativeBehavior
+ \since 4.7
\brief The Behavior element allows you to specify a default animation for a property change.
Behaviors provide one way to specify \l{qdeclarativeanimation.html}{animations} in QML.
@@ -157,7 +158,7 @@ void QDeclarativeBehavior::write(const QVariant &value)
{
Q_D(QDeclarativeBehavior);
if (!d->animation || !d->enabled) {
- QDeclarativeMetaPropertyPrivate::write(d->property, value, QDeclarativeMetaPropertyPrivate::BypassInterceptor | QDeclarativeMetaPropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::write(d->property, value, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
return;
}
@@ -172,15 +173,15 @@ void QDeclarativeBehavior::write(const QVariant &value)
action.toValue = value;
actions << action;
- QList<QDeclarativeMetaProperty> after;
+ QList<QDeclarativeProperty> after;
if (d->animation)
d->animation->transition(actions, after, QDeclarativeAbstractAnimation::Forward);
d->animation->qtAnimation()->start();
if (!after.contains(d->property))
- QDeclarativeMetaPropertyPrivate::write(d->property, value, QDeclarativeMetaPropertyPrivate::BypassInterceptor | QDeclarativeMetaPropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::write(d->property, value, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
}
-void QDeclarativeBehavior::setTarget(const QDeclarativeMetaProperty &property)
+void QDeclarativeBehavior::setTarget(const QDeclarativeProperty &property)
{
Q_D(QDeclarativeBehavior);
d->property = property;
diff --git a/src/declarative/util/qdeclarativebehavior_p.h b/src/declarative/util/qdeclarativebehavior_p.h
index fbc19f8..a633b55 100644
--- a/src/declarative/util/qdeclarativebehavior_p.h
+++ b/src/declarative/util/qdeclarativebehavior_p.h
@@ -70,7 +70,7 @@ public:
QDeclarativeBehavior(QObject *parent=0);
~QDeclarativeBehavior();
- virtual void setTarget(const QDeclarativeMetaProperty &);
+ virtual void setTarget(const QDeclarativeProperty &);
virtual void write(const QVariant &value);
QDeclarativeAbstractAnimation *animation();
diff --git a/src/declarative/util/qdeclarativebind.cpp b/src/declarative/util/qdeclarativebind.cpp
index d75e98d..e95a03e 100644
--- a/src/declarative/util/qdeclarativebind.cpp
+++ b/src/declarative/util/qdeclarativebind.cpp
@@ -45,7 +45,7 @@
#include <qdeclarativeengine.h>
#include <qdeclarativecontext.h>
-#include <qdeclarativemetaproperty.h>
+#include <qdeclarativeproperty.h>
#include <QtCore/qfile.h>
#include <QtCore/qdebug.h>
@@ -196,7 +196,7 @@ void QDeclarativeBind::eval()
if (!d->obj || d->value.isNull || !d->when || !d->componentComplete)
return;
- QDeclarativeMetaProperty prop(d->obj, d->prop);
+ QDeclarativeProperty prop(d->obj, d->prop);
prop.write(d->value.value);
}
diff --git a/src/declarative/util/qdeclarativeconnection.cpp b/src/declarative/util/qdeclarativeconnection.cpp
deleted file mode 100644
index e9ae74b..0000000
--- a/src/declarative/util/qdeclarativeconnection.cpp
+++ /dev/null
@@ -1,287 +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 QtDeclarative 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 "qdeclarativeconnection_p.h"
-
-#include <qdeclarativeexpression.h>
-#include <qdeclarativeboundsignal_p.h>
-#include <qdeclarativecontext.h>
-
-#include <QtCore/qdebug.h>
-#include <QtCore/qstringlist.h>
-
-#include <private/qobject_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QDeclarativeConnectionPrivate : public QObjectPrivate
-{
-public:
- QDeclarativeConnectionPrivate() : boundsignal(0), signalSender(0), scriptset(false), componentcomplete(false) {}
-
- QDeclarativeBoundSignal *boundsignal;
- QObject *signalSender;
- QDeclarativeScriptString script;
- bool scriptset;
- QString signal;
- bool componentcomplete;
-};
-
-/*!
- \qmlclass Connection QDeclarativeConnection
- \since 4.7
- \brief A Connection object describes generalized connections to signals.
-
- When connecting to signals in QML, the usual way is to create an
- "on<Signal>" handler that reacts when a signal is received, like this:
-
- \qml
- MouseArea {
- onClicked: { foo(x+123,y+456) }
- }
- \endqml
-
- However, in some cases, it is not possible to connect to a signal in this
- way. For example, JavaScript-in-HTML style signal properties do not allow:
-
- \list
- \i connecting to signals with the same name but different parameters
- \i conformance checking that parameters are correctly named
- \i multiple connections to the same signal
- \i connections outside the scope of the signal sender
- \i signals in classes with coincidentally-named on<Signal> properties
- \endlist
-
- When any of these are needed, the Connection object can be used instead.
-
- For example, the above code can be changed to use a Connection object,
- like this:
-
- \qml
- MouseArea {
- Connection {
- signal: "clicked(x,y)"
- script: { foo(x+123,y+456) }
- }
- }
- \endqml
-
- More generally, the Connection object can be a child of some other object than
- the sender of the signal:
-
- \qml
- MouseArea {
- id: mr
- }
- ...
- Connection {
- sender: mr
- signal: "clicked(x,y)"
- script: { foo(x+123,y+456) }
- }
- \endqml
-*/
-
-/*!
- \internal
- \class QDeclarativeConnection
- \brief The QDeclarativeConnection class describes generalized connections to signals.
-
-*/
-QDeclarativeConnection::QDeclarativeConnection(QObject *parent) :
- QObject(*(new QDeclarativeConnectionPrivate), parent)
-{
-}
-
-QDeclarativeConnection::~QDeclarativeConnection()
-{
- Q_D(QDeclarativeConnection);
- delete d->boundsignal;
-}
-
-/*!
- \qmlproperty Object Connection::sender
- This property holds the object that sends the signal.
-
- By default, the sender is assumed to be the parent of the Connection.
-*/
-QObject *QDeclarativeConnection::signalSender() const
-{
- Q_D(const QDeclarativeConnection);
- return d->signalSender ? d->signalSender : parent();
-}
-
-void QDeclarativeConnection::setSignalSender(QObject *obj)
-{
- Q_D(QDeclarativeConnection);
- if (d->signalSender == obj)
- return;
- disconnectIfValid();
- d->signalSender = obj;
- connectIfValid();
-}
-
-void QDeclarativeConnection::connectIfValid()
-{
- Q_D(QDeclarativeConnection);
- if (!d->componentcomplete)
- return;
- // boundsignal must not exist
- if ((d->signalSender || parent()) && !d->signal.isEmpty() && d->scriptset) {
- // create
- // XXX scope?
- int sigIdx = -1;
- int lparen = d->signal.indexOf(QLatin1Char('('));
- QList<QByteArray> sigparams;
- if (lparen >= 0 && d->signal.length() > lparen+2) {
- QStringList l = d->signal.mid(lparen+1,d->signal.length()-lparen-2).split(QLatin1Char(','));
- foreach (const QString &s, l) {
- sigparams.append(s.trimmed().toUtf8());
- }
- }
- QString signalname = d->signal.left(lparen);
- QObject *sender = d->signalSender ? d->signalSender : parent();
- const QMetaObject *mo = sender->metaObject();
- int methods = mo->methodCount();
- for (int ii = 0; ii < methods; ++ii) {
- QMetaMethod method = mo->method(ii);
- QString methodName = QString::fromUtf8(method.signature());
- int idx = methodName.indexOf(QLatin1Char('('));
- methodName = methodName.left(idx);
- if (methodName == signalname && (lparen<0 || method.parameterNames() == sigparams)) {
- sigIdx = ii;
- break;
- }
- }
- if (sigIdx < 0) {
- // Cannot usefully warn, since could be in middle of
- // changing sender and signal.
- // XXX need state change transactions to do better
- return;
- }
-
- d->boundsignal = new QDeclarativeBoundSignal(qmlContext(this), d->script.script(), sender, mo->method(sigIdx), this);
- }
-}
-
-void QDeclarativeConnection::disconnectIfValid()
-{
- Q_D(QDeclarativeConnection);
- if (!d->componentcomplete)
- return;
- if ((d->signalSender || parent()) && !d->signal.isEmpty() && d->scriptset) {
- // boundsignal must exist
- // destroy
- delete d->boundsignal;
- d->boundsignal = 0;
- }
-}
-
-void QDeclarativeConnection::componentComplete()
-{
- Q_D(QDeclarativeConnection);
- d->componentcomplete=true;
- connectIfValid();
-}
-
-
-/*!
- \qmlproperty script Connection::script
- This property holds the JavaScript executed whenever the signal is sent.
-*/
-QDeclarativeScriptString QDeclarativeConnection::script() const
-{
- Q_D(const QDeclarativeConnection);
- return d->script;
-}
-
-void QDeclarativeConnection::setScript(const QDeclarativeScriptString& script)
-{
- Q_D(QDeclarativeConnection);
- if ((d->signalSender || parent()) && !d->signal.isEmpty()) {
- if (!d->scriptset) {
- // mustn't exist - create
- d->scriptset = true;
- d->script = script;
- connectIfValid();
- } else {
- // must exist - update
- d->script = script;
- d->boundsignal->expression()->setExpression(script.script());
- }
- } else {
- d->scriptset = true;
- d->script = script;
- }
-}
-
-/*!
- \qmlproperty string Connection::signal
- This property holds the signal from the sender to which the script is attached.
-
- The signal's formal parameter names must be given in parentheses:
-
- \qml
-Connection {
- signal: "clicked(x,y)"
- script: { ... }
-}
- \endqml
-*/
-QString QDeclarativeConnection::signal() const
-{
- Q_D(const QDeclarativeConnection);
- return d->signal;
-}
-
-void QDeclarativeConnection::setSignal(const QString& sig)
-{
- Q_D(QDeclarativeConnection);
- if (d->signal == sig)
- return;
- disconnectIfValid();
- d->signal = sig;
- connectIfValid();
-}
-
-
-
-QT_END_NAMESPACE
diff --git a/src/declarative/util/qdeclarativeconnections.cpp b/src/declarative/util/qdeclarativeconnections.cpp
new file mode 100644
index 0000000..0b9e3ab
--- /dev/null
+++ b/src/declarative/util/qdeclarativeconnections.cpp
@@ -0,0 +1,245 @@
+/****************************************************************************
+**
+** Copyright (C) 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:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt 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 "qdeclarativeconnections_p.h"
+
+#include <qdeclarativeexpression.h>
+#include <qdeclarativeproperty_p.h>
+#include <qdeclarativeboundsignal_p.h>
+#include <qdeclarativecontext.h>
+#include <qdeclarativeinfo.h>
+
+#include <QtCore/qdebug.h>
+#include <QtCore/qstringlist.h>
+
+#include <private/qobject_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QDeclarativeConnectionsPrivate : public QObjectPrivate
+{
+public:
+ QDeclarativeConnectionsPrivate() : target(0), componentcomplete(false) {}
+
+ QList<QDeclarativeBoundSignal*> boundsignals;
+ QObject *target;
+
+ bool componentcomplete;
+
+ QByteArray data;
+};
+
+/*!
+ \qmlclass Connections QDeclarativeConnections
+ \since 4.7
+ \brief A Connections object describes generalized connections to signals.
+
+ When connecting to signals in QML, the usual way is to create an
+ "on<Signal>" handler that reacts when a signal is received, like this:
+
+ \qml
+ MouseArea {
+ onClicked: { foo(...) }
+ }
+ \endqml
+
+ However, in some cases, it is not possible to connect to a signal in this
+ way, such as:
+
+ \list
+ \i multiple connections to the same signal
+ \i connections outside the scope of the signal sender
+ \i connections to targets not defined in QML
+ \endlist
+
+ When any of these are needed, the Connections object can be used instead.
+
+ For example, the above code can be changed to use a Connections object,
+ like this:
+
+ \qml
+ MouseArea {
+ Connections {
+ onClicked: foo(...)
+ }
+ }
+ \endqml
+
+ More generally, the Connections object can be a child of some other object than
+ the sender of the signal:
+
+ \qml
+ MouseArea {
+ id: area
+ }
+ ...
+ Connections {
+ target: area
+ onClicked: foo(...)
+ }
+ \endqml
+*/
+
+/*!
+ \internal
+ \class QDeclarativeConnections
+ \brief The QDeclarativeConnections class describes generalized connections to signals.
+
+*/
+QDeclarativeConnections::QDeclarativeConnections(QObject *parent) :
+ QObject(*(new QDeclarativeConnectionsPrivate), parent)
+{
+}
+
+QDeclarativeConnections::~QDeclarativeConnections()
+{
+}
+
+/*!
+ \qmlproperty Object Connections::target
+ This property holds the object that sends the signal.
+
+ By default, the target is assumed to be the parent of the Connections.
+*/
+QObject *QDeclarativeConnections::target() const
+{
+ Q_D(const QDeclarativeConnections);
+ return d->target ? d->target : parent();
+}
+
+void QDeclarativeConnections::setTarget(QObject *obj)
+{
+ Q_D(QDeclarativeConnections);
+ if (d->target == obj)
+ return;
+ foreach (QDeclarativeBoundSignal *s, d->boundsignals)
+ delete s;
+ d->boundsignals.clear();
+ d->target = obj;
+ connectSignals();
+ emit targetChanged();
+}
+
+
+QByteArray
+QDeclarativeConnectionsParser::compile(const QList<QDeclarativeCustomParserProperty> &props)
+{
+ QByteArray rv;
+ QDataStream ds(&rv, QIODevice::WriteOnly);
+
+ for(int ii = 0; ii < props.count(); ++ii)
+ {
+ QString propName = QString::fromUtf8(props.at(ii).name());
+ if (!propName.startsWith(QLatin1String("on")) || !propName.at(2).isUpper()) {
+ error(props.at(ii), QDeclarativeConnections::tr("Cannot assign to non-existent property \"%1\"").arg(propName));
+ return QByteArray();
+ }
+
+ QList<QVariant> values = props.at(ii).assignedValues();
+
+ for (int i = 0; i < values.count(); ++i) {
+ const QVariant &value = values.at(i);
+
+ if (value.userType() == qMetaTypeId<QDeclarativeCustomParserNode>()) {
+ error(props.at(ii), QDeclarativeConnections::tr("Connections: nested objects not allowed"));
+ return QByteArray();
+ } else if (value.userType() == qMetaTypeId<QDeclarativeCustomParserProperty>()) {
+ error(props.at(ii), QDeclarativeConnections::tr("Connections: syntax error"));
+ return QByteArray();
+ } else {
+ QDeclarativeParser::Variant v = qvariant_cast<QDeclarativeParser::Variant>(value);
+ if (v.isScript()) {
+ ds << propName;
+ ds << v.asScript();
+ } else {
+ error(props.at(ii), QDeclarativeConnections::tr("Connections: script expected"));
+ return QByteArray();
+ }
+ }
+ }
+ }
+
+ return rv;
+}
+
+void QDeclarativeConnectionsParser::setCustomData(QObject *object,
+ const QByteArray &data)
+{
+ QDeclarativeConnectionsPrivate *p =
+ static_cast<QDeclarativeConnectionsPrivate *>(QObjectPrivate::get(object));
+ p->data = data;
+}
+
+
+void QDeclarativeConnections::connectSignals()
+{
+ Q_D(QDeclarativeConnections);
+ if (!d->componentcomplete)
+ return;
+
+ QDataStream ds(d->data);
+ while (!ds.atEnd()) {
+ QString propName;
+ ds >> propName;
+ QString script;
+ ds >> script;
+ QDeclarativeProperty prop(target(), propName);
+ if (!prop.isValid()) {
+ qmlInfo(this) << tr("Cannot assign to non-existent property \"%1\"").arg(propName);
+ } else if (prop.type() & QDeclarativeProperty::SignalProperty) {
+ QDeclarativeBoundSignal *signal =
+ new QDeclarativeBoundSignal(target(), prop.method(), this);
+ signal->setExpression(new QDeclarativeExpression(qmlContext(this), script, 0));
+ d->boundsignals += signal;
+ } else {
+ qmlInfo(this) << tr("Cannot assign to non-existent property \"%1\"").arg(propName);
+ }
+ }
+}
+
+void QDeclarativeConnections::componentComplete()
+{
+ Q_D(QDeclarativeConnections);
+ d->componentcomplete=true;
+ connectSignals();
+}
+
+QT_END_NAMESPACE
diff --git a/src/declarative/util/qdeclarativeconnection_p.h b/src/declarative/util/qdeclarativeconnections_p.h
index ae2efe9..3eacf12 100644
--- a/src/declarative/util/qdeclarativeconnection_p.h
+++ b/src/declarative/util/qdeclarativeconnections_p.h
@@ -39,11 +39,12 @@
**
****************************************************************************/
-#ifndef QDECLARATIVECONNECTION_H
-#define QDECLARATIVECONNECTION_H
+#ifndef QDECLARATIVECONNECTIONS_H
+#define QDECLARATIVECONNECTIONS_H
#include <qdeclarative.h>
#include <qdeclarativescriptstring.h>
+#include <private/qdeclarativecustomparser_p.h>
#include <QtCore/qobject.h>
#include <QtCore/qstring.h>
@@ -56,37 +57,41 @@ QT_MODULE(Declarative)
class QDeclarativeBoundSignal;
class QDeclarativeContext;
-class QDeclarativeConnectionPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeConnection : public QObject, public QDeclarativeParserStatus
+class QDeclarativeConnectionsPrivate;
+class Q_DECLARATIVE_EXPORT QDeclarativeConnections : public QObject, public QDeclarativeParserStatus
{
Q_OBJECT
- Q_DECLARE_PRIVATE(QDeclarativeConnection)
+ Q_DECLARE_PRIVATE(QDeclarativeConnections)
Q_INTERFACES(QDeclarativeParserStatus)
- Q_PROPERTY(QObject *sender READ signalSender WRITE setSignalSender)
- Q_PROPERTY(QDeclarativeScriptString script READ script WRITE setScript)
- Q_PROPERTY(QString signal READ signal WRITE setSignal)
+ Q_PROPERTY(QObject *target READ target WRITE setTarget NOTIFY targetChanged)
public:
- QDeclarativeConnection(QObject *parent=0);
- ~QDeclarativeConnection();
+ QDeclarativeConnections(QObject *parent=0);
+ ~QDeclarativeConnections();
- QObject *signalSender() const;
- void setSignalSender(QObject *);
- QDeclarativeScriptString script() const;
- void setScript(const QDeclarativeScriptString&);
- QString signal() const;
- void setSignal(const QString&);
+ QObject *target() const;
+ void setTarget(QObject *);
+
+Q_SIGNALS:
+ void targetChanged();
private:
- void disconnectIfValid();
- void connectIfValid();
+ void connectSignals();
void componentComplete();
};
+class QDeclarativeConnectionsParser : public QDeclarativeCustomParser
+{
+public:
+ virtual QByteArray compile(const QList<QDeclarativeCustomParserProperty> &);
+ virtual void setCustomData(QObject *, const QByteArray &);
+};
+
+
QT_END_NAMESPACE
-QML_DECLARE_TYPE(QDeclarativeConnection)
+QML_DECLARE_TYPE(QDeclarativeConnections)
QT_END_HEADER
diff --git a/src/declarative/util/qdeclarativeeasefollow.cpp b/src/declarative/util/qdeclarativeeasefollow.cpp
index 0430a0b..3fa9866 100644
--- a/src/declarative/util/qdeclarativeeasefollow.cpp
+++ b/src/declarative/util/qdeclarativeeasefollow.cpp
@@ -43,7 +43,7 @@
#include "qdeclarativeanimation_p_p.h"
-#include <qdeclarativemetaproperty.h>
+#include <qdeclarativeproperty.h>
#include <QtCore/qdebug.h>
@@ -77,7 +77,7 @@ public:
qreal trackVelocity;
- QDeclarativeMetaProperty target;
+ QDeclarativeProperty target;
int clockOffset;
int lastTick;
@@ -251,6 +251,7 @@ void QDeclarativeEaseFollowPrivate::tick(int t)
/*!
\qmlclass EaseFollow QDeclarativeEaseFollow
+ \since 4.7
\brief The EaseFollow element allows a property to smoothly track a value.
The EaseFollow smoothly animates a property's value to a set target value
@@ -500,7 +501,7 @@ void QDeclarativeEaseFollow::setEnabled(bool enabled)
emit enabledChanged();
}
-void QDeclarativeEaseFollow::setTarget(const QDeclarativeMetaProperty &t)
+void QDeclarativeEaseFollow::setTarget(const QDeclarativeProperty &t)
{
Q_D(QDeclarativeEaseFollow);
d->target = t;
diff --git a/src/declarative/util/qdeclarativeeasefollow_p.h b/src/declarative/util/qdeclarativeeasefollow_p.h
index 6d14eb5..83d1eff 100644
--- a/src/declarative/util/qdeclarativeeasefollow_p.h
+++ b/src/declarative/util/qdeclarativeeasefollow_p.h
@@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
-class QDeclarativeMetaProperty;
+class QDeclarativeProperty;
class QDeclarativeEaseFollowPrivate;
class Q_DECLARATIVE_EXPORT QDeclarativeEaseFollow : public QObject,
public QDeclarativePropertyValueSource
@@ -94,7 +94,7 @@ public:
qreal maximumEasingTime() const;
void setMaximumEasingTime(qreal);
- virtual void setTarget(const QDeclarativeMetaProperty &);
+ virtual void setTarget(const QDeclarativeProperty &);
Q_SIGNALS:
void sourceChanged();
diff --git a/src/declarative/util/qdeclarativefontloader.cpp b/src/declarative/util/qdeclarativefontloader.cpp
index ac30384..4d12ae1 100644
--- a/src/declarative/util/qdeclarativefontloader.cpp
+++ b/src/declarative/util/qdeclarativefontloader.cpp
@@ -75,6 +75,7 @@ public:
/*!
\qmlclass FontLoader QDeclarativeFontLoader
+ \since 4.7
\ingroup group_utility
\brief This item allows using fonts by name or url.
diff --git a/src/declarative/util/qdeclarativelistmodel.cpp b/src/declarative/util/qdeclarativelistmodel.cpp
index e78e0e1..e3f26d7 100644
--- a/src/declarative/util/qdeclarativelistmodel.cpp
+++ b/src/declarative/util/qdeclarativelistmodel.cpp
@@ -70,6 +70,7 @@ static void dump(ModelNode *node, int ind);
/*!
\qmlclass ListModel QDeclarativeListModel
+ \since 4.7
\brief The ListModel element defines a free-form list data source.
The ListModel is a simple hierarchy of elements containing data roles. The contents can
@@ -936,6 +937,7 @@ bool QDeclarativeListModelParser::definesEmptyList(const QString &s)
/*!
\qmlclass ListElement
+ \since 4.7
\brief The ListElement element defines a data item in a ListModel.
\sa ListModel
diff --git a/src/declarative/util/qdeclarativelistmodel_p.h b/src/declarative/util/qdeclarativelistmodel_p.h
index 251a31f..8eb6583 100644
--- a/src/declarative/util/qdeclarativelistmodel_p.h
+++ b/src/declarative/util/qdeclarativelistmodel_p.h
@@ -50,7 +50,7 @@
#include <QtCore/QHash>
#include <QtCore/QList>
#include <QtCore/QVariant>
-#include "../3rdparty/qlistmodelinterface_p.h"
+#include <private/qlistmodelinterface_p.h>
#include <QtScript/qscriptvalue.h>
QT_BEGIN_HEADER
diff --git a/src/declarative/util/qdeclarativepackage.cpp b/src/declarative/util/qdeclarativepackage.cpp
index 34ae466..d144777 100644
--- a/src/declarative/util/qdeclarativepackage.cpp
+++ b/src/declarative/util/qdeclarativepackage.cpp
@@ -42,7 +42,7 @@
#include "qdeclarativepackage_p.h"
#include <private/qobject_p.h>
-#include "private/qdeclarativeguard_p.h"
+#include <private/qdeclarativeguard_p.h>
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/util/qdeclarativepropertychanges.cpp b/src/declarative/util/qdeclarativepropertychanges.cpp
index 454fb06..9c2b1e6 100644
--- a/src/declarative/util/qdeclarativepropertychanges.cpp
+++ b/src/declarative/util/qdeclarativepropertychanges.cpp
@@ -50,7 +50,7 @@
#include <qdeclarativebinding_p.h>
#include <qdeclarativecontext.h>
#include <qdeclarativeguard_p.h>
-#include <qdeclarativemetaproperty_p.h>
+#include <qdeclarativeproperty_p.h>
#include <QtCore/qdebug.h>
@@ -153,19 +153,19 @@ public:
virtual QString typeName() const { return QLatin1String("ReplaceSignalHandler"); }
- QDeclarativeMetaProperty property;
+ QDeclarativeProperty property;
QDeclarativeExpression *expression;
QDeclarativeExpression *reverseExpression;
QDeclarativeExpression *rewindExpression;
QDeclarativeGuard<QDeclarativeExpression> ownedExpression;
virtual void execute() {
- ownedExpression = QDeclarativeMetaPropertyPrivate::setSignalExpression(property, expression);
+ ownedExpression = QDeclarativePropertyPrivate::setSignalExpression(property, expression);
}
virtual bool isReversable() { return true; }
virtual void reverse() {
- ownedExpression = QDeclarativeMetaPropertyPrivate::setSignalExpression(property, reverseExpression);
+ ownedExpression = QDeclarativePropertyPrivate::setSignalExpression(property, reverseExpression);
}
virtual void saveOriginals() {
@@ -174,10 +174,10 @@ public:
}
virtual void rewind() {
- ownedExpression = QDeclarativeMetaPropertyPrivate::setSignalExpression(property, rewindExpression);
+ ownedExpression = QDeclarativePropertyPrivate::setSignalExpression(property, rewindExpression);
}
virtual void saveCurrentValues() {
- rewindExpression = QDeclarativeMetaPropertyPrivate::signalExpression(property);
+ rewindExpression = QDeclarativePropertyPrivate::signalExpression(property);
}
virtual bool override(QDeclarativeActionEvent*other) {
@@ -212,7 +212,7 @@ public:
QList<QPair<QByteArray, QDeclarativeExpression *> > expressions;
QList<QDeclarativeReplaceSignalHandler*> signalReplacements;
- QDeclarativeMetaProperty property(const QByteArray &);
+ QDeclarativeProperty property(const QByteArray &);
};
void
@@ -296,8 +296,8 @@ void QDeclarativePropertyChangesPrivate::decode()
ds >> isScript;
ds >> data;
- QDeclarativeMetaProperty prop = property(name); //### better way to check for signal property?
- if (prop.type() & QDeclarativeMetaProperty::SignalProperty) {
+ QDeclarativeProperty prop = property(name); //### better way to check for signal property?
+ if (prop.type() & QDeclarativeProperty::SignalProperty) {
QDeclarativeExpression *expression = new QDeclarativeExpression(qmlContext(q), data.toString(), object);
QDeclarativeReplaceSignalHandler *handler = new QDeclarativeReplaceSignalHandler;
handler->property = prop;
@@ -371,17 +371,17 @@ void QDeclarativePropertyChanges::setRestoreEntryValues(bool v)
d->restore = v;
}
-QDeclarativeMetaProperty
+QDeclarativeProperty
QDeclarativePropertyChangesPrivate::property(const QByteArray &property)
{
Q_Q(QDeclarativePropertyChanges);
- QDeclarativeMetaProperty prop(object, QString::fromUtf8(property));
+ QDeclarativeProperty prop(object, QString::fromUtf8(property));
if (!prop.isValid()) {
qmlInfo(q) << QDeclarativePropertyChanges::tr("Cannot assign to non-existent property \"%1\"").arg(QString::fromUtf8(property));
- return QDeclarativeMetaProperty();
- } else if (!(prop.type() & QDeclarativeMetaProperty::SignalProperty) && !prop.isWritable()) {
+ return QDeclarativeProperty();
+ } else if (!(prop.type() & QDeclarativeProperty::SignalProperty) && !prop.isWritable()) {
qmlInfo(q) << QDeclarativePropertyChanges::tr("Cannot assign to read-only property \"%1\"").arg(QString::fromUtf8(property));
- return QDeclarativeMetaProperty();
+ return QDeclarativeProperty();
}
return prop;
}
@@ -426,7 +426,7 @@ QDeclarativePropertyChanges::ActionList QDeclarativePropertyChanges::actions()
for (int ii = 0; ii < d->expressions.count(); ++ii) {
QByteArray property = d->expressions.at(ii).first;
- QDeclarativeMetaProperty prop = d->property(property);
+ QDeclarativeProperty prop = d->property(property);
if (prop.isValid()) {
QDeclarativeAction a;
diff --git a/src/declarative/util/qdeclarativespringfollow.cpp b/src/declarative/util/qdeclarativespringfollow.cpp
index b26a7e2..6205ab9 100644
--- a/src/declarative/util/qdeclarativespringfollow.cpp
+++ b/src/declarative/util/qdeclarativespringfollow.cpp
@@ -63,7 +63,7 @@ public:
, mass(1.0), spring(0.), damping(0.), velocity(0), epsilon(0.01)
, modulus(0.0), useMass(false), haveModulus(false), enabled(true), mode(Track), clock(this) {}
- QDeclarativeMetaProperty property;
+ QDeclarativeProperty property;
qreal currentValue;
qreal sourceValue;
qreal maxVelocity;
@@ -213,6 +213,7 @@ void QDeclarativeSpringFollowPrivate::stop()
/*!
\qmlclass SpringFollow QDeclarativeSpringFollow
+ \since 4.7
\brief The SpringFollow element allows a property to track a value.
In example below, \e rect2 will follow \e rect1 moving with a velocity of up to 200:
@@ -254,7 +255,7 @@ QDeclarativeSpringFollow::~QDeclarativeSpringFollow()
{
}
-void QDeclarativeSpringFollow::setTarget(const QDeclarativeMetaProperty &property)
+void QDeclarativeSpringFollow::setTarget(const QDeclarativeProperty &property)
{
Q_D(QDeclarativeSpringFollow);
d->property = property;
diff --git a/src/declarative/util/qdeclarativespringfollow_p.h b/src/declarative/util/qdeclarativespringfollow_p.h
index 63d38a4..2ac0d82 100644
--- a/src/declarative/util/qdeclarativespringfollow_p.h
+++ b/src/declarative/util/qdeclarativespringfollow_p.h
@@ -74,7 +74,7 @@ public:
QDeclarativeSpringFollow(QObject *parent=0);
~QDeclarativeSpringFollow();
- virtual void setTarget(const QDeclarativeMetaProperty &);
+ virtual void setTarget(const QDeclarativeProperty &);
qreal sourceValue() const;
void setSourceValue(qreal value);
diff --git a/src/declarative/util/qdeclarativestate.cpp b/src/declarative/util/qdeclarativestate.cpp
index 3b06e33..1d70d33 100644
--- a/src/declarative/util/qdeclarativestate.cpp
+++ b/src/declarative/util/qdeclarativestate.cpp
@@ -334,7 +334,7 @@ void QDeclarativeState::cancel()
void QDeclarativeAction::deleteFromBinding()
{
if (fromBinding) {
- QDeclarativeMetaPropertyPrivate::setBinding(property, 0);
+ QDeclarativePropertyPrivate::setBinding(property, 0);
fromBinding->destroy();
fromBinding = 0;
}
@@ -388,7 +388,7 @@ void QDeclarativeState::apply(QDeclarativeStateGroup *group, QDeclarativeTransit
else if (action.event->isRewindable())
action.event->saveCurrentValues();
} else {
- action.fromBinding = QDeclarativeMetaPropertyPrivate::binding(action.property);
+ action.fromBinding = QDeclarativePropertyPrivate::binding(action.property);
for (jj = 0; jj < d->revertList.count(); ++jj) {
if (d->revertList.at(jj).property == action.property) {
@@ -437,7 +437,7 @@ void QDeclarativeState::apply(QDeclarativeStateGroup *group, QDeclarativeTransit
if (!found) {
QVariant cur = d->revertList.at(ii).property.read();
QDeclarativeAbstractBinding *delBinding =
- QDeclarativeMetaPropertyPrivate::setBinding(d->revertList.at(ii).property, 0);
+ QDeclarativePropertyPrivate::setBinding(d->revertList.at(ii).property, 0);
if (delBinding)
delBinding->destroy();
diff --git a/src/declarative/util/qdeclarativestate_p.h b/src/declarative/util/qdeclarativestate_p.h
index 4a62481..0c6e7a3 100644
--- a/src/declarative/util/qdeclarativestate_p.h
+++ b/src/declarative/util/qdeclarativestate_p.h
@@ -43,7 +43,7 @@
#define QDECLARATIVESTATE_H
#include <qdeclarative.h>
-#include <qdeclarativemetaproperty.h>
+#include <qdeclarativeproperty.h>
#include <QtCore/qobject.h>
QT_BEGIN_HEADER
@@ -53,7 +53,9 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QDeclarativeActionEvent;
+class QDeclarativeAbstractBinding;
class QDeclarativeBinding;
+class QDeclarativeExpression;
class Q_DECLARATIVE_EXPORT QDeclarativeAction
{
public:
@@ -65,7 +67,7 @@ public:
bool reverseEvent:1;
bool deletableToBinding:1;
- QDeclarativeMetaProperty property;
+ QDeclarativeProperty property;
QVariant fromValue;
QVariant toValue;
diff --git a/src/declarative/util/qdeclarativestate_p_p.h b/src/declarative/util/qdeclarativestate_p_p.h
index 6b32f04..6f52219 100644
--- a/src/declarative/util/qdeclarativestate_p_p.h
+++ b/src/declarative/util/qdeclarativestate_p_p.h
@@ -58,7 +58,7 @@
#include "qdeclarativeanimation_p_p.h"
#include "qdeclarativetransitionmanager_p_p.h"
-#include <qdeclarativemetaproperty_p.h>
+#include <qdeclarativeproperty_p.h>
#include <qdeclarativeguard_p.h>
#include <private/qobject_p.h>
@@ -77,7 +77,7 @@ public:
event = a.event;
if (state == StartState) {
value = a.fromValue;
- binding = QDeclarativeMetaPropertyPrivate::binding(property);
+ binding = QDeclarativePropertyPrivate::binding(property);
reverseEvent = true;
} else {
value = a.toValue;
@@ -86,7 +86,7 @@ public:
}
}
- QDeclarativeMetaProperty property;
+ QDeclarativeProperty property;
QVariant value;
QDeclarativeAbstractBinding *binding;
QObject *specifiedObject;
@@ -139,7 +139,7 @@ public:
QDeclarativeTransitionManager transitionManager;
SimpleActionList revertList;
- QList<QDeclarativeMetaProperty> reverting;
+ QList<QDeclarativeProperty> reverting;
QString extends;
mutable bool inState;
QDeclarativeStateGroup *group;
diff --git a/src/declarative/util/qdeclarativestategroup.cpp b/src/declarative/util/qdeclarativestategroup.cpp
index 1a7c256..083e87d 100644
--- a/src/declarative/util/qdeclarativestategroup.cpp
+++ b/src/declarative/util/qdeclarativestategroup.cpp
@@ -84,6 +84,7 @@ public:
/*!
\qmlclass StateGroup QDeclarativeStateGroup
+ \since 4.7
\brief The StateGroup element provides state support for non-Item elements.
Item (and all dervied elements) provides built in support for states and transitions
@@ -406,7 +407,7 @@ void QDeclarativeStateGroupPrivate::setCurrentStateInternal(const QString &state
}
if (oldState == 0 || newState == 0) {
- if (!nullState) { nullState = new QDeclarativeState; QDeclarativeGraphics_setParent_noEvent(nullState, q); }
+ if (!nullState) { nullState = new QDeclarativeState; QDeclarative_setParent_noEvent(nullState, q); }
if (!oldState) oldState = nullState;
if (!newState) newState = nullState;
}
diff --git a/src/declarative/util/qdeclarativestateoperations.cpp b/src/declarative/util/qdeclarativestateoperations.cpp
index 98edf85..cea9ad7 100644
--- a/src/declarative/util/qdeclarativestateoperations.cpp
+++ b/src/declarative/util/qdeclarativestateoperations.cpp
@@ -48,6 +48,7 @@
#include <qdeclarativeanchors_p_p.h>
#include <qdeclarativeitem_p.h>
#include <qdeclarativeguard_p.h>
+#include <qdeclarativenullablevalue_p_p.h>
#include <QtCore/qdebug.h>
#include <QtGui/qgraphicsitem.h>
@@ -62,7 +63,7 @@ class QDeclarativeParentChangePrivate : public QObjectPrivate
Q_DECLARE_PUBLIC(QDeclarativeParentChange)
public:
QDeclarativeParentChangePrivate() : target(0), parent(0), origParent(0), origStackBefore(0),
- rewindParent(0), rewindStackBefore(0) {}
+ rewindParent(0), rewindStackBefore(0) {}
QDeclarativeItem *target;
QDeclarativeItem *parent;
@@ -71,6 +72,13 @@ public:
QDeclarativeItem *rewindParent;
QDeclarativeItem *rewindStackBefore;
+ QDeclarativeNullableValue<qreal> x;
+ QDeclarativeNullableValue<qreal> y;
+ QDeclarativeNullableValue<qreal> width;
+ QDeclarativeNullableValue<qreal> height;
+ QDeclarativeNullableValue<qreal> scale;
+ QDeclarativeNullableValue<qreal> rotation;
+
void doChange(QDeclarativeItem *targetParent, QDeclarativeItem *stackBefore = 0);
};
@@ -173,6 +181,120 @@ QDeclarativeParentChange::~QDeclarativeParentChange()
{
}
+qreal QDeclarativeParentChange::x() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->x.isNull ? qreal(0.) : d->x.value;
+}
+
+void QDeclarativeParentChange::setX(qreal x)
+{
+ Q_D(QDeclarativeParentChange);
+ d->x = x;
+}
+
+bool QDeclarativeParentChange::xIsSet() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->x.isValid();
+}
+
+qreal QDeclarativeParentChange::y() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->y.isNull ? qreal(0.) : d->y.value;
+}
+
+void QDeclarativeParentChange::setY(qreal y)
+{
+ Q_D(QDeclarativeParentChange);
+ d->y = y;
+}
+
+bool QDeclarativeParentChange::yIsSet() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->y.isValid();
+}
+
+qreal QDeclarativeParentChange::width() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->width.isNull ? qreal(0.) : d->width.value;
+}
+
+void QDeclarativeParentChange::setWidth(qreal width)
+{
+ Q_D(QDeclarativeParentChange);
+ d->width = width;
+}
+
+bool QDeclarativeParentChange::widthIsSet() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->width.isValid();
+}
+
+qreal QDeclarativeParentChange::height() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->height.isNull ? qreal(0.) : d->height.value;
+}
+
+void QDeclarativeParentChange::setHeight(qreal height)
+{
+ Q_D(QDeclarativeParentChange);
+ d->height = height;
+}
+
+bool QDeclarativeParentChange::heightIsSet() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->height.isValid();
+}
+
+qreal QDeclarativeParentChange::scale() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->scale.isNull ? qreal(1.) : d->scale.value;
+}
+
+void QDeclarativeParentChange::setScale(qreal scale)
+{
+ Q_D(QDeclarativeParentChange);
+ d->scale = scale;
+}
+
+bool QDeclarativeParentChange::scaleIsSet() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->scale.isValid();
+}
+
+qreal QDeclarativeParentChange::rotation() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->rotation.isNull ? qreal(0.) : d->rotation.value;
+}
+
+void QDeclarativeParentChange::setRotation(qreal rotation)
+{
+ Q_D(QDeclarativeParentChange);
+ d->rotation = rotation;
+}
+
+bool QDeclarativeParentChange::rotationIsSet() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->rotation.isValid();
+}
+
+QDeclarativeItem *QDeclarativeParentChange::originalParent() const
+{
+ Q_D(const QDeclarativeParentChange);
+ return d->origParent;
+}
+
/*!
\qmlproperty Item ParentChange::target
This property holds the item to be reparented
@@ -213,10 +335,43 @@ QDeclarativeStateOperation::ActionList QDeclarativeParentChange::actions()
if (!d->target || !d->parent)
return ActionList();
+ ActionList actions;
+
QDeclarativeAction a;
a.event = this;
+ actions << a;
- return ActionList() << a;
+ if (d->x.isValid()) {
+ QDeclarativeAction xa(d->target, QLatin1String("x"), x());
+ actions << xa;
+ }
+
+ if (d->y.isValid()) {
+ QDeclarativeAction ya(d->target, QLatin1String("y"), y());
+ actions << ya;
+ }
+
+ if (d->scale.isValid()) {
+ QDeclarativeAction sa(d->target, QLatin1String("scale"), scale());
+ actions << sa;
+ }
+
+ if (d->rotation.isValid()) {
+ QDeclarativeAction ra(d->target, QLatin1String("rotation"), rotation());
+ actions << ra;
+ }
+
+ if (d->width.isValid()) {
+ QDeclarativeAction wa(d->target, QLatin1String("width"), width());
+ actions << wa;
+ }
+
+ if (d->height.isValid()) {
+ QDeclarativeAction ha(d->target, QLatin1String("height"), height());
+ actions << ha;
+ }
+
+ return actions;
}
class AccessibleFxItem : public QDeclarativeItem
@@ -661,19 +816,19 @@ QList<QDeclarativeAction> QDeclarativeAnchorChanges::extraActions()
if (d->target) {
QDeclarativeAction a;
a.fromValue = d->fromX;
- a.property = QDeclarativeMetaProperty(d->target, QLatin1String("x"));
+ a.property = QDeclarativeProperty(d->target, QLatin1String("x"));
extra << a;
a.fromValue = d->fromY;
- a.property = QDeclarativeMetaProperty(d->target, QLatin1String("y"));
+ a.property = QDeclarativeProperty(d->target, QLatin1String("y"));
extra << a;
a.fromValue = d->fromWidth;
- a.property = QDeclarativeMetaProperty(d->target, QLatin1String("width"));
+ a.property = QDeclarativeProperty(d->target, QLatin1String("width"));
extra << a;
a.fromValue = d->fromHeight;
- a.property = QDeclarativeMetaProperty(d->target, QLatin1String("height"));
+ a.property = QDeclarativeProperty(d->target, QLatin1String("height"));
extra << a;
}
diff --git a/src/declarative/util/qdeclarativestateoperations_p.h b/src/declarative/util/qdeclarativestateoperations_p.h
index 9204a58..dd4248023 100644
--- a/src/declarative/util/qdeclarativestateoperations_p.h
+++ b/src/declarative/util/qdeclarativestateoperations_p.h
@@ -45,7 +45,7 @@
#include "qdeclarativestate_p.h"
#include <qdeclarativeitem.h>
-#include "private/qdeclarativeanchors_p.h"
+#include <private/qdeclarativeanchors_p.h>
#include <qdeclarativescriptstring.h>
QT_BEGIN_HEADER
@@ -62,6 +62,12 @@ class Q_DECLARATIVE_EXPORT QDeclarativeParentChange : public QDeclarativeStateOp
Q_PROPERTY(QDeclarativeItem *target READ object WRITE setObject)
Q_PROPERTY(QDeclarativeItem *parent READ parent WRITE setParent)
+ Q_PROPERTY(qreal x READ x WRITE setX)
+ Q_PROPERTY(qreal y READ y WRITE setY)
+ Q_PROPERTY(qreal width READ width WRITE setWidth)
+ Q_PROPERTY(qreal height READ height WRITE setHeight)
+ Q_PROPERTY(qreal scale READ scale WRITE setScale)
+ Q_PROPERTY(qreal rotation READ rotation WRITE setRotation)
public:
QDeclarativeParentChange(QObject *parent=0);
~QDeclarativeParentChange();
@@ -72,6 +78,32 @@ public:
QDeclarativeItem *parent() const;
void setParent(QDeclarativeItem *);
+ QDeclarativeItem *originalParent() const;
+
+ qreal x() const;
+ void setX(qreal x);
+ bool xIsSet() const;
+
+ qreal y() const;
+ void setY(qreal y);
+ bool yIsSet() const;
+
+ qreal width() const;
+ void setWidth(qreal width);
+ bool widthIsSet() const;
+
+ qreal height() const;
+ void setHeight(qreal height);
+ bool heightIsSet() const;
+
+ qreal scale() const;
+ void setScale(qreal scale);
+ bool scaleIsSet() const;
+
+ qreal rotation() const;
+ void setRotation(qreal rotation);
+ bool rotationIsSet() const;
+
virtual ActionList actions();
virtual void saveOriginals();
diff --git a/src/declarative/util/qdeclarativesystempalette.cpp b/src/declarative/util/qdeclarativesystempalette.cpp
index 1e00f22..d819c27 100644
--- a/src/declarative/util/qdeclarativesystempalette.cpp
+++ b/src/declarative/util/qdeclarativesystempalette.cpp
@@ -58,6 +58,7 @@ public:
/*!
\qmlclass SystemPalette QDeclarativeSystemPalette
+ \since 4.7
\ingroup group_utility
\brief The SystemPalette item gives access to the Qt palettes.
\sa QPalette
diff --git a/src/declarative/util/qdeclarativetimer.cpp b/src/declarative/util/qdeclarativetimer.cpp
index 89c461b..d7e02b1 100644
--- a/src/declarative/util/qdeclarativetimer.cpp
+++ b/src/declarative/util/qdeclarativetimer.cpp
@@ -70,6 +70,7 @@ public:
/*!
\qmlclass Timer QDeclarativeTimer
+ \since 4.7
\brief The Timer item triggers a handler at a specified interval.
A timer can be used to trigger an action either once, or repeatedly
diff --git a/src/declarative/util/qdeclarativetransition.cpp b/src/declarative/util/qdeclarativetransition.cpp
index 3482814..ac07b10 100644
--- a/src/declarative/util/qdeclarativetransition.cpp
+++ b/src/declarative/util/qdeclarativetransition.cpp
@@ -148,7 +148,7 @@ void QDeclarativeTransition::setReversed(bool r)
}
void QDeclarativeTransition::prepare(QDeclarativeStateOperation::ActionList &actions,
- QList<QDeclarativeMetaProperty> &after,
+ QList<QDeclarativeProperty> &after,
QDeclarativeTransitionManager *endState)
{
Q_D(QDeclarativeTransition);
diff --git a/src/declarative/util/qdeclarativetransition_p.h b/src/declarative/util/qdeclarativetransition_p.h
index 96448b8..861111a 100644
--- a/src/declarative/util/qdeclarativetransition_p.h
+++ b/src/declarative/util/qdeclarativetransition_p.h
@@ -85,7 +85,7 @@ public:
QDeclarativeListProperty<QDeclarativeAbstractAnimation> animations();
void prepare(QDeclarativeStateOperation::ActionList &actions,
- QList<QDeclarativeMetaProperty> &after,
+ QList<QDeclarativeProperty> &after,
QDeclarativeTransitionManager *end);
void setReversed(bool r);
diff --git a/src/declarative/util/qdeclarativetransitionmanager.cpp b/src/declarative/util/qdeclarativetransitionmanager.cpp
index 6429dab..e1143fa 100644
--- a/src/declarative/util/qdeclarativetransitionmanager.cpp
+++ b/src/declarative/util/qdeclarativetransitionmanager.cpp
@@ -45,7 +45,7 @@
#include <qdeclarativebinding_p.h>
#include <qdeclarativeglobal_p.h>
-#include <qdeclarativemetaproperty_p.h>
+#include <qdeclarativeproperty_p.h>
QT_BEGIN_NAMESPACE
@@ -85,7 +85,7 @@ void QDeclarativeTransitionManager::complete()
d->applyBindings();
for (int ii = 0; ii < d->completeList.count(); ++ii) {
- const QDeclarativeMetaProperty &prop = d->completeList.at(ii).property;
+ const QDeclarativeProperty &prop = d->completeList.at(ii).property;
prop.write(d->completeList.at(ii).value);
}
@@ -99,7 +99,7 @@ void QDeclarativeTransitionManagerPrivate::applyBindings()
{
foreach(const QDeclarativeAction &action, bindingsList) {
if (action.toBinding) {
- QDeclarativeMetaPropertyPrivate::setBinding(action.property, action.toBinding);
+ QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding);
} else if (action.event) {
if (action.reverseEvent)
action.event->reverse();
@@ -123,7 +123,7 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
if (action.toBinding)
d->bindingsList << action;
if (action.fromBinding)
- QDeclarativeMetaPropertyPrivate::setBinding(action.property, 0); // Disable current binding
+ QDeclarativePropertyPrivate::setBinding(action.property, 0); // Disable current binding
if (action.event && action.event->changesBindings()) { //### assume isReversable()?
d->bindingsList << action;
if (action.reverseEvent)
@@ -150,9 +150,9 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
for (int ii = 0; ii < applyList.size(); ++ii) {
const QDeclarativeAction &action = applyList.at(ii);
if (action.toBinding) {
- QDeclarativeMetaPropertyPrivate::setBinding(action.property, action.toBinding, QDeclarativeMetaPropertyPrivate::BypassInterceptor | QDeclarativeMetaPropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
} else if (!action.event) {
- QDeclarativeMetaPropertyPrivate::write(action.property, action.toValue, QDeclarativeMetaPropertyPrivate::BypassInterceptor | QDeclarativeMetaPropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::write(action.property, action.toValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
} else if (action.event->isReversable()) {
if (action.reverseEvent)
action.event->reverse();
@@ -167,7 +167,7 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
QDeclarativeAction *action = &applyList[ii];
if (action->event)
continue;
- const QDeclarativeMetaProperty &prop = action->property;
+ const QDeclarativeProperty &prop = action->property;
if (action->toBinding || !action->toValue.isValid()) { //### is this always right (used for exta actions)
action->toValue = prop.read();
}
@@ -191,14 +191,14 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
}
if (action.toBinding)
- QDeclarativeMetaPropertyPrivate::setBinding(action.property, 0); // Make sure this is disabled during the transition
+ QDeclarativePropertyPrivate::setBinding(action.property, 0); // Make sure this is disabled during the transition
- QDeclarativeMetaPropertyPrivate::write(action.property, action.fromValue, QDeclarativeMetaPropertyPrivate::BypassInterceptor | QDeclarativeMetaPropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::write(action.property, action.fromValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
}
}
if (transition) {
- QList<QDeclarativeMetaProperty> touched;
+ QList<QDeclarativeProperty> touched;
d->transition = transition;
d->transition->prepare(applyList, touched, this);
@@ -267,7 +267,7 @@ void QDeclarativeTransitionManager::cancel()
for(int i = 0; i < d->bindingsList.count(); ++i) {
QDeclarativeAction action = d->bindingsList[i];
if (action.toBinding && action.deletableToBinding) {
- QDeclarativeMetaPropertyPrivate::setBinding(action.property, 0);
+ QDeclarativePropertyPrivate::setBinding(action.property, 0);
action.toBinding->destroy();
action.toBinding = 0;
action.deletableToBinding = false;
diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp
index ecaa607c..2b8c7de 100644
--- a/src/declarative/util/qdeclarativeutilmodule.cpp
+++ b/src/declarative/util/qdeclarativeutilmodule.cpp
@@ -45,7 +45,7 @@
#include "qdeclarativeanimation_p_p.h"
#include "qdeclarativebehavior_p.h"
#include "qdeclarativebind_p.h"
-#include "qdeclarativeconnection_p.h"
+#include "qdeclarativeconnections_p.h"
#include "qdeclarativedatetimeformatter_p.h"
#include "qdeclarativeeasefollow_p.h"
#include "qdeclarativefontloader_p.h"
@@ -80,7 +80,7 @@ void QDeclarativeUtilModule::defineModule()
QML_REGISTER_TYPE(Qt,4,6,Behavior,QDeclarativeBehavior);
QML_REGISTER_TYPE(Qt,4,6,Binding,QDeclarativeBind);
QML_REGISTER_TYPE(Qt,4,6,ColorAnimation,QDeclarativeColorAnimation);
- QML_REGISTER_TYPE(Qt,4,6,Connection,QDeclarativeConnection);
+ QML_REGISTER_TYPE(Qt,4,6,Connections,QDeclarativeConnections);
QML_REGISTER_TYPE(Qt,4,6,DateTimeFormatter,QDeclarativeDateTimeFormatter);
QML_REGISTER_TYPE(Qt,4,6,EaseFollow,QDeclarativeEaseFollow);;
QML_REGISTER_TYPE(Qt,4,6,FontLoader,QDeclarativeFontLoader);
@@ -90,6 +90,7 @@ void QDeclarativeUtilModule::defineModule()
QML_REGISTER_TYPE(Qt,4,6,Package,QDeclarativePackage);
QML_REGISTER_TYPE(Qt,4,6,ParallelAnimation,QDeclarativeParallelAnimation);
QML_REGISTER_TYPE(Qt,4,6,ParentAction,QDeclarativeParentAction);
+ QML_REGISTER_TYPE(Qt,4,6,ParentAnimation,QDeclarativeParentAnimation);
QML_REGISTER_TYPE(Qt,4,6,ParentChange,QDeclarativeParentChange);
QML_REGISTER_TYPE(Qt,4,6,PauseAnimation,QDeclarativePauseAnimation);
QML_REGISTER_TYPE(Qt,4,6,PropertyAction,QDeclarativePropertyAction);
@@ -117,4 +118,5 @@ void QDeclarativeUtilModule::defineModule()
QML_REGISTER_CUSTOM_TYPE(Qt, 4,6, ListModel, QDeclarativeListModel, QDeclarativeListModelParser);
QML_REGISTER_CUSTOM_TYPE(Qt, 4,6, PropertyChanges, QDeclarativePropertyChanges, QDeclarativePropertyChangesParser);
+ QML_REGISTER_CUSTOM_TYPE(Qt, 4,6, Connections, QDeclarativeConnections, QDeclarativeConnectionsParser);
}
diff --git a/src/declarative/util/qdeclarativexmllistmodel.cpp b/src/declarative/util/qdeclarativexmllistmodel.cpp
index 386df46..162a669 100644
--- a/src/declarative/util/qdeclarativexmllistmodel.cpp
+++ b/src/declarative/util/qdeclarativexmllistmodel.cpp
@@ -709,8 +709,24 @@ void QDeclarativeXmlListModel::reload()
d->qmlXmlQuery.abort();
d->queryId = -1;
- if (d->size < 0)
+ int count = d->size;
+ if (count < 0)
d->size = 0;
+ bool hasKeys = false;
+ for (int i=0; i<d->roleObjects.count(); i++) {
+ if (d->roleObjects[i]->isKey()) {
+ hasKeys = true;
+ break;
+ }
+ }
+ if (!hasKeys) {
+ d->data.clear();
+ d->size = 0;
+ if (count > 0) {
+ emit itemsRemoved(0, count);
+ emit countChanged();
+ }
+ }
if (d->src.isEmpty() && d->xml.isEmpty())
return;
@@ -782,9 +798,10 @@ void QDeclarativeXmlListModel::queryCompleted(int id, int size)
d->data = d->qmlXmlQuery.modelData();
QList<QDeclarativeXmlListRange> removed = d->qmlXmlQuery.removedItemRanges();
+ QList<QDeclarativeXmlListRange> inserted = d->qmlXmlQuery.insertedItemRanges();
+
for (int i=0; i<removed.count(); i++)
emit itemsRemoved(removed[i].first, removed[i].second);
- QList<QDeclarativeXmlListRange> inserted = d->qmlXmlQuery.insertedItemRanges();
for (int i=0; i<inserted.count(); i++)
emit itemsInserted(inserted[i].first, inserted[i].second);
diff --git a/src/declarative/util/qdeclarativexmllistmodel_p.h b/src/declarative/util/qdeclarativexmllistmodel_p.h
index 132a53c..f0ad4b8 100644
--- a/src/declarative/util/qdeclarativexmllistmodel_p.h
+++ b/src/declarative/util/qdeclarativexmllistmodel_p.h
@@ -47,7 +47,7 @@
#include <QtCore/qurl.h>
-#include "../3rdparty/qlistmodelinterface_p.h"
+#include <private/qlistmodelinterface_p.h>
QT_BEGIN_HEADER
diff --git a/src/declarative/util/util.pri b/src/declarative/util/util.pri
index 610eb3f..198e9e5 100644
--- a/src/declarative/util/util.pri
+++ b/src/declarative/util/util.pri
@@ -5,7 +5,7 @@ SOURCES += \
$$PWD/qdeclarativeview.cpp \
$$PWD/qfxperf.cpp \
$$PWD/qperformancelog.cpp \
- $$PWD/qdeclarativeconnection.cpp \
+ $$PWD/qdeclarativeconnections.cpp \
$$PWD/qdeclarativepackage.cpp \
$$PWD/qdeclarativeanimation.cpp \
$$PWD/qdeclarativesystempalette.cpp \
@@ -37,7 +37,7 @@ HEADERS += \
$$PWD/qdeclarativeview.h \
$$PWD/qfxperf_p_p.h \
$$PWD/qperformancelog_p_p.h \
- $$PWD/qdeclarativeconnection_p.h \
+ $$PWD/qdeclarativeconnections_p.h \
$$PWD/qdeclarativepackage_p.h \
$$PWD/qdeclarativeanimation_p.h \
$$PWD/qdeclarativeanimation_p_p.h \
diff --git a/src/gui/dialogs/qcolordialog_mac.mm b/src/gui/dialogs/qcolordialog_mac.mm
index bdcb872..8af0d2b 100644
--- a/src/gui/dialogs/qcolordialog_mac.mm
+++ b/src/gui/dialogs/qcolordialog_mac.mm
@@ -96,6 +96,7 @@ QT_USE_NAMESPACE
- (void)finishOffWithCode:(NSInteger)result;
- (void)showColorPanel;
- (void)exec;
+- (void)setResultSet:(BOOL)result;
@end
@implementation QCocoaColorPanelDelegate
@@ -158,6 +159,11 @@ QT_USE_NAMESPACE
[super dealloc];
}
+- (void)setResultSet:(BOOL)result
+{
+ mResultSet = result;
+}
+
- (BOOL)windowShouldClose:(id)window
{
Q_UNUSED(window);
@@ -320,7 +326,7 @@ QT_USE_NAMESPACE
} else {
mPriv->colorDialog()->accept();
}
- }
+ }
}
}
@@ -433,7 +439,7 @@ void QColorDialogPrivate::openCocoaColorPanel(const QColor &initial,
priv:this];
[colorPanel setDelegate:static_cast<QCocoaColorPanelDelegate *>(delegate)];
}
-
+ [delegate setResultSet:false];
setCocoaPanelColor(initial);
[static_cast<QCocoaColorPanelDelegate *>(delegate) showColorPanel];
}
diff --git a/src/gui/dialogs/qfontdialog.cpp b/src/gui/dialogs/qfontdialog.cpp
index 56580a9..a4bf15d 100644
--- a/src/gui/dialogs/qfontdialog.cpp
+++ b/src/gui/dialogs/qfontdialog.cpp
@@ -989,34 +989,24 @@ void QFontDialog::open(QObject *receiver, const char *member)
void QFontDialog::setVisible(bool visible)
{
Q_D(QFontDialog);
- if (visible)
- d->selectedFont = QFont();
-
-#if defined(Q_WS_MAC)
- bool isCurrentlyVisible = (isVisible() || d->delegate);
-
- if (!visible == !isCurrentlyVisible)
- return;
-
if (visible) {
- if (!(d->opts & DontUseNativeDialog) && QFontDialogPrivate::sharedFontPanelAvailable) {
- d->delegate = QFontDialogPrivate::openCocoaFontPanel(
- currentFont(), parentWidget(), windowTitle(), options(), d);
- QFontDialogPrivate::sharedFontPanelAvailable = false;
- return;
- }
-
- setWindowFlags(windowModality() == Qt::WindowModal ? Qt::Sheet : DefaultWindowFlags);
- } else {
- if (d->delegate) {
- QFontDialogPrivate::closeCocoaFontPanel(d->delegate);
- d->delegate = 0;
- QFontDialogPrivate::sharedFontPanelAvailable = true;
+ if (testAttribute(Qt::WA_WState_ExplicitShowHide) && !testAttribute(Qt::WA_WState_Hidden))
return;
+ } else if (testAttribute(Qt::WA_WState_ExplicitShowHide) && testAttribute(Qt::WA_WState_Hidden))
+ return;
+#ifdef Q_WS_MAC
+ if (d->canBeNativeDialog()){
+ if (d->setVisible_sys(visible)){
+ d->nativeDialogInUse = true;
+ // Set WA_DontShowOnScreen so that QDialog::setVisible(visible) below
+ // updates the state correctly, but skips showing the non-native version:
+ setAttribute(Qt::WA_DontShowOnScreen, true);
+ } else {
+ d->nativeDialogInUse = false;
+ setAttribute(Qt::WA_DontShowOnScreen, false);
}
}
-#endif
-
+#endif // Q_WS_MAC
QDialog::setVisible(visible);
}
@@ -1032,11 +1022,14 @@ void QFontDialog::done(int result)
Q_D(QFontDialog);
QDialog::done(result);
if (result == Accepted) {
- d->selectedFont = currentFont();
+ // We check if this is the same font we had before, if so we emit currentFontChanged
+ QFont selectedFont = currentFont();
+ if(selectedFont != d->selectedFont)
+ emit(currentFontChanged(selectedFont));
+ d->selectedFont = selectedFont;
emit fontSelected(d->selectedFont);
- } else {
+ } else
d->selectedFont = QFont();
- }
if (d->receiverToDisconnectOnClose) {
disconnect(this, SIGNAL(fontSelected(QFont)),
d->receiverToDisconnectOnClose, d->memberToDisconnectOnClose);
@@ -1045,6 +1038,23 @@ void QFontDialog::done(int result)
d->memberToDisconnectOnClose.clear();
}
+#ifdef Q_WS_MAC
+bool QFontDialogPrivate::canBeNativeDialog()
+{
+ Q_Q(QFontDialog);
+ if (nativeDialogInUse)
+ return true;
+ if (q->testAttribute(Qt::WA_DontShowOnScreen))
+ return false;
+ if (opts & QFontDialog::DontUseNativeDialog)
+ return false;
+
+ QLatin1String staticName(QFontDialog::staticMetaObject.className());
+ QLatin1String dynamicName(q->metaObject()->className());
+ return (staticName == dynamicName);
+}
+#endif // Q_WS_MAC
+
/*!
\fn QFont QFontDialog::getFont(bool *ok, const QFont &initial, QWidget* parent, const char* name)
\since 4.5
diff --git a/src/gui/dialogs/qfontdialog.h b/src/gui/dialogs/qfontdialog.h
index e6f209e..6035a3a 100644
--- a/src/gui/dialogs/qfontdialog.h
+++ b/src/gui/dialogs/qfontdialog.h
@@ -131,6 +131,9 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_styleHighlighted(int))
Q_PRIVATE_SLOT(d_func(), void _q_sizeHighlighted(int))
Q_PRIVATE_SLOT(d_func(), void _q_updateSample())
+#if defined(Q_WS_MAC)
+ Q_PRIVATE_SLOT(d_func(), void _q_macRunNativeAppModalPanel())
+#endif
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QFontDialog::FontDialogOptions)
diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm
index 68f5f00..67d32b8 100644
--- a/src/gui/dialogs/qfontdialog_mac.mm
+++ b/src/gui/dialogs/qfontdialog_mac.mm
@@ -49,6 +49,7 @@
#include <private/qfontengine_p.h>
#include <private/qt_cocoa_helpers_mac_p.h>
#include <private/qt_mac_p.h>
+#include <qabstracteventdispatcher.h>
#include <qdebug.h>
#import <AppKit/AppKit.h>
#import <Foundation/Foundation.h>
@@ -372,7 +373,12 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont)
[NSApp endModalSession:mModalSession];
mModalSession = 0;
}
-
+ // Hack alert!
+ // Since this code path was never intended to be followed when starting from exec
+ // we need to force the dialog to communicate the new font, otherwise the signal
+ // won't get emitted.
+ if(code == NSOKButton)
+ mPriv->sampleEdit->setFont([self qtFont]);
mPriv->done((code == NSOKButton) ? QDialog::Accepted : QDialog::Rejected);
} else {
[NSApp stopModalWithCode:code];
@@ -567,7 +573,6 @@ void *QFontDialogPrivate::openCocoaFontPanel(const QFont &initial,
[ourPanel makeKeyAndOrderFront:ourPanel];
}
}
-
return delegate;
}
@@ -640,6 +645,145 @@ void QFontDialogPrivate::setFont(void *delegate, const QFont &font)
[static_cast<QCocoaFontPanelDelegate *>(delegate) setQtFont:font];
}
+void *QFontDialogPrivate::_q_constructNativePanel()
+{
+ QMacCocoaAutoReleasePool pool;
+
+ bool sharedFontPanelExisted = [NSFontPanel sharedFontPanelExists];
+ NSFontPanel *sharedFontPanel = [NSFontPanel sharedFontPanel];
+ [sharedFontPanel setHidesOnDeactivate:false];
+
+ // hack to ensure that QCocoaApplication's validModesForFontPanel:
+ // implementation is honored
+ if (!sharedFontPanelExisted) {
+ [sharedFontPanel makeKeyAndOrderFront:sharedFontPanel];
+ [sharedFontPanel close];
+ }
+
+ NSPanel *ourPanel = 0;
+ NSView *stolenContentView = 0;
+ NSButton *okButton = 0;
+ NSButton *cancelButton = 0;
+
+ CGFloat dialogExtraWidth = 0.0;
+ CGFloat dialogExtraHeight = 0.0;
+
+ // compute dialogExtra{Width,Height}
+ dialogExtraWidth = 2.0 * DialogSideMargin;
+ dialogExtraHeight = DialogTopMargin + ButtonTopMargin + ButtonMinHeight
+ + ButtonBottomMargin;
+
+ // compute initial contents rectangle
+ NSRect contentRect = [sharedFontPanel contentRectForFrameRect:[sharedFontPanel frame]];
+ contentRect.size.width += dialogExtraWidth;
+ contentRect.size.height += dialogExtraHeight;
+
+ // create the new panel
+ ourPanel = [[NSPanel alloc] initWithContentRect:contentRect
+ styleMask:StyleMask
+ backing:NSBackingStoreBuffered
+ defer:YES];
+ [ourPanel setReleasedWhenClosed:YES];
+
+ stolenContentView = [sharedFontPanel contentView];
+
+ // steal the font panel's contents view
+ [stolenContentView retain];
+ [sharedFontPanel setContentView:0];
+
+ {
+ // create a new content view and add the stolen one as a subview
+ NSRect frameRect = { { 0.0, 0.0 }, { 0.0, 0.0 } };
+ NSView *ourContentView = [[NSView alloc] initWithFrame:frameRect];
+ [ourContentView addSubview:stolenContentView];
+
+ // create OK and Cancel buttons and add these as subviews
+ okButton = macCreateButton("&OK", ourContentView);
+ cancelButton = macCreateButton("Cancel", ourContentView);
+
+ [ourPanel setContentView:ourContentView];
+ [ourPanel setDefaultButtonCell:[okButton cell]];
+ }
+ // create a delegate and set it
+ QCocoaFontPanelDelegate *delegate =
+ [[QCocoaFontPanelDelegate alloc] initWithFontPanel:sharedFontPanel
+ stolenContentView:stolenContentView
+ okButton:okButton
+ cancelButton:cancelButton
+ priv:this
+ extraWidth:dialogExtraWidth
+ extraHeight:dialogExtraHeight];
+ [ourPanel setDelegate:delegate];
+ [[NSFontManager sharedFontManager] setDelegate:delegate];
+#ifdef QT_MAC_USE_COCOA
+ [[NSFontManager sharedFontManager] setTarget:delegate];
+#endif
+ setFont(delegate, QApplication::font());
+
+ {
+ // hack to get correct initial layout
+ NSRect frameRect = [ourPanel frame];
+ frameRect.size.width += 1.0;
+ [ourPanel setFrame:frameRect display:NO];
+ frameRect.size.width -= 1.0;
+ frameRect.size = [delegate windowWillResize:ourPanel toSize:frameRect.size];
+ [ourPanel setFrame:frameRect display:NO];
+ [ourPanel center];
+ }
+ NSString *title = @"Select font";
+ [ourPanel setTitle:title];
+
+ [delegate setModalSession:[NSApp beginModalSessionForWindow:ourPanel]];
+ return delegate;
+}
+
+void QFontDialogPrivate::mac_nativeDialogModalHelp()
+{
+ // Copied from QFileDialogPrivate
+ // Do a queued meta-call to open the native modal dialog so it opens after the new
+ // event loop has started to execute (in QDialog::exec). Using a timer rather than
+ // a queued meta call is intentional to ensure that the call is only delivered when
+ // [NSApp run] runs (timers are handeled special in cocoa). If NSApp is not
+ // running (which is the case if e.g a top-most QEventLoop has been
+ // interrupted, and the second-most event loop has not yet been reactivated (regardless
+ // if [NSApp run] is still on the stack)), showing a native modal dialog will fail.
+ if (nativeDialogInUse) {
+ Q_Q(QFontDialog);
+ QTimer::singleShot(1, q, SLOT(_q_macRunNativeAppModalPanel()));
+ }
+}
+
+// The problem with the native font dialog is that OS X does not
+// offer a proper dialog, but a panel (i.e. without Ok and Cancel buttons).
+// This means we need to "construct" a native dialog by taking the panel
+// and "adding" the buttons.
+void QFontDialogPrivate::_q_macRunNativeAppModalPanel()
+{
+ QBoolBlocker nativeDialogOnTop(QApplicationPrivate::native_modal_dialog_active);
+ Q_Q(QFontDialog);
+ QCocoaFontPanelDelegate *delegate = (QCocoaFontPanelDelegate *)_q_constructNativePanel();
+ NSWindow *ourPanel = [delegate actualPanel];
+ [ourPanel retain];
+ int rval = [NSApp runModalForWindow:ourPanel];
+ QAbstractEventDispatcher::instance()->interrupt();
+ [ourPanel release];
+ [delegate cleanUpAfterMyself];
+ [delegate release];
+ bool isOk = (rval == NSOKButton);
+ if(isOk)
+ rescode = QDialog::Accepted;
+ else
+ rescode = QDialog::Rejected;
+}
+
+bool QFontDialogPrivate::setVisible_sys(bool visible)
+{
+ Q_Q(QFontDialog);
+ if (!visible == q->isHidden())
+ return false;
+ return visible;
+}
+
QT_END_NAMESPACE
#endif
diff --git a/src/gui/dialogs/qfontdialog_p.h b/src/gui/dialogs/qfontdialog_p.h
index ca2b10b..7654a80 100644
--- a/src/gui/dialogs/qfontdialog_p.h
+++ b/src/gui/dialogs/qfontdialog_p.h
@@ -152,6 +152,12 @@ public:
inline QFontDialog *fontDialog() { return q_func(); }
void *delegate;
+ bool nativeDialogInUse;
+ bool canBeNativeDialog();
+ bool setVisible_sys(bool visible);
+ void *_q_constructNativePanel();
+ void _q_macRunNativeAppModalPanel();
+ void mac_nativeDialogModalHelp();
static bool sharedFontPanelAvailable;
#endif
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index ca20101..5735cd6 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -414,12 +414,6 @@
/*!
\enum QGraphicsItem::GraphicsItemChange
- ItemVisibleHasChanged,
- ItemEnabledHasChanged,
- ItemSelectedHasChanged,
- ItemParentHasChanged,
- ItemSceneHasChanged
-
This enum describes the state changes that are notified by
QGraphicsItem::itemChange(). The notifications are sent as the state
changes, and in some cases, adjustments can be made (see the documentation
@@ -647,9 +641,16 @@
are children of a modal panel are not blocked.
The values are:
- \value NonModal The panel is not modal and does not block input to other panels.
- \value PanelModal The panel is modal to a single item hierarchy and blocks input to its parent pane, all grandparent panels, and all siblings of its parent and grandparent panels.
- \value SceneModal The window is modal to the entire scene and blocks input to all panels.
+
+ \value NonModal The panel is not modal and does not block input to
+ other panels. This is the default value for panels.
+
+ \value PanelModal The panel is modal to a single item hierarchy
+ and blocks input to its parent pane, all grandparent panels, and
+ all siblings of its parent and grandparent panels.
+
+ \value SceneModal The window is modal to the entire scene and
+ blocks input to all panels.
\sa QGraphicsItem::setPanelModality(), QGraphicsItem::panelModality(), QGraphicsItem::ItemIsPanel
*/
diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h
index a059a77..4c4bfaf 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -156,8 +156,8 @@ public:
needSortChildren(0),
allChildrenDirty(0),
fullUpdatePending(0),
- flags(0),
dirtyChildrenBoundingRect(1),
+ flags(0),
paintedViewBoundingRectsNeedRepaint(0),
dirtySceneTransform(1),
geometryChanged(1),
@@ -474,11 +474,11 @@ public:
quint32 inSetPosHelper : 1;
quint32 needSortChildren : 1;
quint32 allChildrenDirty : 1;
+ quint32 fullUpdatePending : 1;
+ quint32 dirtyChildrenBoundingRect : 1;
// Packed 32 bits
- quint32 fullUpdatePending : 1;
quint32 flags : 17;
- quint32 dirtyChildrenBoundingRect : 1;
quint32 paintedViewBoundingRectsNeedRepaint : 1;
quint32 dirtySceneTransform : 1;
quint32 geometryChanged : 1;
@@ -492,10 +492,10 @@ public:
quint32 sceneTransformTranslateOnly : 1;
quint32 notifyBoundingRectChanged : 1;
quint32 notifyInvalidated : 1;
-
- // New 32 bits
quint32 mouseSetsFocus : 1;
quint32 explicitActivate : 1;
+
+ // New 32 bits
quint32 wantsActive : 1;
quint32 holesInSiblingIndex : 1;
quint32 sequentialOrdering : 1;
@@ -503,6 +503,7 @@ public:
quint32 scenePosDescendants : 1;
quint32 pendingPolish : 1;
quint32 mayHaveChildWithGraphicsEffect : 1;
+ quint32 padding : 25;
// Optional stacking order
int globalStackingOrder;
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index aaae88e..365afdd 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -693,6 +693,18 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
--selectionChanging;
if (!selectionChanging && selectedItems.size() != oldSelectedItemsSize)
emit q->selectionChanged();
+
+ QHash<QGesture *, QGraphicsObject *>::iterator it;
+ for (it = gestureTargets.begin(); it != gestureTargets.end();) {
+ if (it.value() == item)
+ it = gestureTargets.erase(it);
+ else
+ ++it;
+ }
+ QGraphicsObject *dummy = static_cast<QGraphicsObject *>(item);
+ cachedTargetItems.removeOne(dummy);
+ cachedItemGestures.remove(dummy);
+ cachedAlreadyDeliveredGestures.remove(dummy);
}
/*!
@@ -801,7 +813,8 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item,
// do it ourselves.
if (item) {
for (int i = 0; i < views.size(); ++i)
- views.at(i)->inputContext()->reset();
+ if (views.at(i)->inputContext())
+ views.at(i)->inputContext()->reset();
}
}
#endif //QT_NO_IM
@@ -4680,7 +4693,8 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter *
if (widget)
item->d_ptr->paintedViewBoundingRects.insert(widget, viewBoundingRect);
viewBoundingRect.adjust(-1, -1, 1, 1);
- drawItem = exposedRegion ? exposedRegion->intersects(viewBoundingRect) : !viewBoundingRect.isEmpty();
+ drawItem = exposedRegion ? exposedRegion->intersects(viewBoundingRect)
+ : !viewBoundingRect.normalized().isEmpty();
if (!drawItem) {
if (!itemHasChildren)
return;
@@ -5900,45 +5914,51 @@ void QGraphicsScenePrivate::leaveModal(QGraphicsItem *panel)
dispatchHoverEvent(&hoverEvent);
}
-void QGraphicsScenePrivate::getGestureTargets(const QSet<QGesture *> &gestures,
- QWidget *viewport,
- QMap<Qt::GestureType, QGesture *> *conflictedGestures,
- QList<QList<QGraphicsObject *> > *conflictedItems,
- QHash<QGesture *, QGraphicsObject *> *normalGestures)
+void QGraphicsScenePrivate::gestureTargetsAtHotSpots(const QSet<QGesture *> &gestures,
+ Qt::GestureFlag flag,
+ QHash<QGraphicsObject *, QSet<QGesture *> > *targets,
+ QSet<QGraphicsObject *> *itemsSet,
+ QSet<QGesture *> *normal,
+ QSet<QGesture *> *conflicts)
{
+ QSet<QGesture *> normalGestures; // that are not in conflicted state.
foreach (QGesture *gesture, gestures) {
- Qt::GestureType gestureType = gesture->gestureType();
- if (gesture->hasHotSpot()) {
- QPoint screenPos = gesture->hotSpot().toPoint();
- QList<QGraphicsItem *> items = itemsAtPosition(screenPos, QPointF(), viewport);
- QList<QGraphicsObject *> result;
- for (int j = 0; j < items.size(); ++j) {
- QGraphicsItem *item = items.at(j);
+ if (!gesture->hasHotSpot())
+ continue;
+ const Qt::GestureType gestureType = gesture->gestureType();
+ QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), gesture->d_func()->sceneHotSpot, 0);
+ for (int j = 0; j < items.size(); ++j) {
+ QGraphicsItem *item = items.at(j);
- // Check if the item is blocked by a modal panel and use it as
- // a target instead of this item.
- (void) item->isBlockedByModalPanel(&item);
+ // Check if the item is blocked by a modal panel and use it as
+ // a target instead of this item.
+ (void) item->isBlockedByModalPanel(&item);
- if (QGraphicsObject *itemobj = item->toGraphicsObject()) {
- QGraphicsItemPrivate *d = item->d_func();
- if (d->gestureContext.contains(gestureType)) {
- result.append(itemobj);
+ if (QGraphicsObject *itemobj = item->toGraphicsObject()) {
+ QGraphicsItemPrivate *d = item->QGraphicsItem::d_func();
+ QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator it =
+ d->gestureContext.find(gestureType);
+ if (it != d->gestureContext.end() && (!flag || (it.value() & flag))) {
+ if (normalGestures.contains(gesture)) {
+ normalGestures.remove(gesture);
+ if (conflicts)
+ conflicts->insert(gesture);
+ } else {
+ normalGestures.insert(gesture);
}
+ if (targets)
+ (*targets)[itemobj].insert(gesture);
+ if (itemsSet)
+ (*itemsSet).insert(itemobj);
}
- // Don't propagate through panels.
- if (item->isPanel())
- break;
- }
- DEBUG() << "QGraphicsScenePrivate::getGestureTargets:"
- << gesture << result;
- if (result.size() == 1) {
- normalGestures->insert(gesture, result.first());
- } else if (!result.isEmpty()) {
- conflictedGestures->insert(gestureType, gesture);
- conflictedItems->append(result);
}
+ // Don't propagate through panels.
+ if (item->isPanel())
+ break;
}
}
+ if (normal)
+ *normal = normalGestures;
}
void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
@@ -5946,266 +5966,215 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
QWidget *viewport = event->widget();
if (!viewport)
return;
+ QGraphicsView *graphicsView = qobject_cast<QGraphicsView *>(viewport->parent());
+ if (!graphicsView)
+ return;
+
QList<QGesture *> allGestures = event->gestures();
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
<< "Delivering gestures:" << allGestures;
- typedef QHash<QGraphicsObject *, QList<QGesture *> > GesturesPerItem;
- GesturesPerItem gesturesPerItem;
-
- // gestures that are only supposed to propagate to parent items.
- QSet<QGesture *> parentPropagatedGestures;
-
QSet<QGesture *> startedGestures;
+ QPoint delta = graphicsView->mapFromGlobal(QPoint());
+ QTransform toScene = QTransform::fromTranslate(delta.x(), delta.y())
+ * graphicsView->viewportTransform().inverted();
foreach (QGesture *gesture, allGestures) {
+ // cache scene coordinates of the hot spot
+ if (gesture->hasHotSpot()) {
+ gesture->d_func()->sceneHotSpot = toScene.map(gesture->hotSpot());
+ } else {
+ gesture->d_func()->sceneHotSpot = QPointF();
+ }
+
QGraphicsObject *target = gestureTargets.value(gesture, 0);
if (!target) {
// when we are not in started mode but don't have a target
// then the only one interested in gesture is the view/scene
if (gesture->state() == Qt::GestureStarted)
startedGestures.insert(gesture);
- } else {
- gesturesPerItem[target].append(gesture);
- Qt::GestureFlags flags =
- target->QGraphicsItem::d_func()->gestureContext.value(gesture->gestureType());
- if (flags & Qt::IgnoredGesturesPropagateToParent)
- parentPropagatedGestures.insert(gesture);
}
}
- QMap<Qt::GestureType, QGesture *> conflictedGestures;
- QList<QList<QGraphicsObject *> > conflictedItems;
- QHash<QGesture *, QGraphicsObject *> normalGestures;
- getGestureTargets(startedGestures, viewport, &conflictedGestures, &conflictedItems,
- &normalGestures);
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "Conflicting gestures:" << conflictedGestures.values() << conflictedItems;
- Q_ASSERT((conflictedGestures.isEmpty() && conflictedItems.isEmpty()) ||
- (!conflictedGestures.isEmpty() && !conflictedItems.isEmpty()));
-
- // gestures that were sent as override events, but no one accepted them
- QHash<QGesture *, QGraphicsObject *> ignoredConflictedGestures;
-
- // deliver conflicted gestures as override events first
- while (!conflictedGestures.isEmpty() && !conflictedItems.isEmpty()) {
- // get the topmost item to deliver the override event
- Q_ASSERT(!conflictedItems.isEmpty());
- Q_ASSERT(!conflictedItems.first().isEmpty());
- QGraphicsObject *topmost = conflictedItems.first().first();
- for (int i = 1; i < conflictedItems.size(); ++i) {
- QGraphicsObject *item = conflictedItems.at(i).first();
- if (qt_closestItemFirst(item, topmost)) {
- topmost = item;
- }
- }
- // get a list of gestures to send to the item
- QList<Qt::GestureType> grabbedGestures =
- topmost->QGraphicsItem::d_func()->gestureContext.keys();
- QList<QGesture *> gestures;
- for (int i = 0; i < grabbedGestures.size(); ++i) {
- if (QGesture *g = conflictedGestures.value(grabbedGestures.at(i), 0)) {
- gestures.append(g);
- if (!ignoredConflictedGestures.contains(g))
- ignoredConflictedGestures.insert(g, topmost);
- }
- }
-
- // send gesture override to the topmost item
- QGestureEvent ev(gestures);
- ev.t = QEvent::GestureOverride;
- ev.setWidget(event->widget());
- // mark event and individual gestures as ignored
- ev.ignore();
- foreach(QGesture *g, gestures)
- ev.setAccepted(g, false);
+ if (!startedGestures.isEmpty()) {
+ QSet<QGesture *> normalGestures; // that have just one target
+ QSet<QGesture *> conflictedGestures; // that have multiple possible targets
+ gestureTargetsAtHotSpots(startedGestures, Qt::GestureFlag(0), &cachedItemGestures, 0,
+ &normalGestures, &conflictedGestures);
+ cachedTargetItems = cachedItemGestures.keys();
+ qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "delivering override to"
- << topmost << gestures;
- sendEvent(topmost, &ev);
- // mark all accepted gestures to deliver them as normal gesture events
- foreach (QGesture *g, gestures) {
- if (ev.isAccepted() || ev.isAccepted(g)) {
- conflictedGestures.remove(g->gestureType());
- gestureTargets.remove(g);
- // add the gesture to the list of normal delivered gestures
- normalGestures.insert(g, topmost);
+ << "Conflicting gestures:" << conflictedGestures;
+
+ // deliver conflicted gestures as override events AND remember
+ // initial gesture targets
+ if (!conflictedGestures.isEmpty()) {
+ for (int i = 0; i < cachedTargetItems.size(); ++i) {
+ QWeakPointer<QGraphicsObject> item = cachedTargetItems.at(i);
+
+ // get gestures to deliver to the current item
+ QSet<QGesture *> gestures = conflictedGestures & cachedItemGestures.value(item.data());
+ if (gestures.isEmpty())
+ continue;
+
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "override was accepted:"
- << g << topmost;
- ignoredConflictedGestures.remove(g);
+ << "delivering override to"
+ << item.data() << gestures;
+ // send gesture override
+ QGestureEvent ev(gestures.toList());
+ ev.t = QEvent::GestureOverride;
+ ev.setWidget(event->widget());
+ // mark event and individual gestures as ignored
+ ev.ignore();
+ foreach(QGesture *g, gestures)
+ ev.setAccepted(g, false);
+ sendEvent(item.data(), &ev);
+ // mark all accepted gestures to deliver them as normal gesture events
+ foreach (QGesture *g, gestures) {
+ if (ev.isAccepted() || ev.isAccepted(g)) {
+ conflictedGestures.remove(g);
+ // mark the item as a gesture target
+ if (item)
+ gestureTargets.insert(g, item.data());
+ DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
+ << "override was accepted:"
+ << g << item.data();
+ }
+ // remember the first item that received the override event
+ // as it most likely become a target if noone else accepts
+ // the override event
+ if (!gestureTargets.contains(g) && item)
+ gestureTargets.insert(g, item.data());
+
+ }
+ if (conflictedGestures.isEmpty())
+ break;
}
}
- // remove the item that we've already delivered from the list
- for (int i = 0; i < conflictedItems.size(); ) {
- QList<QGraphicsObject *> &items = conflictedItems[i];
- if (items.first() == topmost) {
- items.removeFirst();
- if (items.isEmpty()) {
- conflictedItems.removeAt(i);
- continue;
+ // remember the initial target item for each gesture that was not in
+ // the conflicted state.
+ if (!normalGestures.isEmpty()) {
+ for (int i = 0; i < cachedTargetItems.size() && !normalGestures.isEmpty(); ++i) {
+ QGraphicsObject *item = cachedTargetItems.at(i);
+
+ // get gestures to deliver to the current item
+ foreach (QGesture *g, cachedItemGestures.value(item)) {
+ if (!gestureTargets.contains(g)) {
+ gestureTargets.insert(g, item);
+ normalGestures.remove(g);
+ }
}
}
- ++i;
}
}
- // put back those started gestures that are not in the conflicted state
- // and remember their targets
- QHash<QGesture *, QGraphicsObject *>::const_iterator it = normalGestures.begin(),
- e = normalGestures.end();
- for (; it != e; ++it) {
- QGesture *g = it.key();
- QGraphicsObject *receiver = it.value();
- Q_ASSERT(!gestureTargets.contains(g));
- gestureTargets.insert(g, receiver);
- gesturesPerItem[receiver].append(g);
- Qt::GestureFlags flags =
- receiver->QGraphicsItem::d_func()->gestureContext.value(g->gestureType());
- if (flags & Qt::IgnoredGesturesPropagateToParent)
- parentPropagatedGestures.insert(g);
- }
- it = ignoredConflictedGestures.begin();
- e = ignoredConflictedGestures.end();
- for (; it != e; ++it) {
- QGesture *g = it.key();
- QGraphicsObject *receiver = it.value();
- Q_ASSERT(!gestureTargets.contains(g));
- gestureTargets.insert(g, receiver);
- gesturesPerItem[receiver].append(g);
- Qt::GestureFlags flags =
- receiver->QGraphicsItem::d_func()->gestureContext.value(g->gestureType());
- if (flags & Qt::IgnoredGesturesPropagateToParent)
- parentPropagatedGestures.insert(g);
- }
-
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "Started gestures:" << normalGestures.keys()
- << "All gestures:" << gesturesPerItem.values();
// deliver all gesture events
- QList<QGesture *> alreadyIgnoredGestures;
- QHash<QGraphicsObject *, QSet<QGesture *> > itemIgnoredGestures;
- QList<QGraphicsObject *> targetItems = gesturesPerItem.keys();
- qSort(targetItems.begin(), targetItems.end(), qt_closestItemFirst);
- for (int i = 0; i < targetItems.size(); ++i) {
- QGraphicsObject *item = targetItems.at(i);
- QList<QGesture *> gestures = gesturesPerItem.value(item);
- // remove gestures that were already delivered once and were ignored
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "already ignored gestures for item"
- << item << ":" << itemIgnoredGestures.value(item);
-
- if (itemIgnoredGestures.contains(item)) // don't deliver twice to the same item
- continue;
-
- QGraphicsItemPrivate *gid = item->QGraphicsItem::d_func();
- foreach(QGesture *g, alreadyIgnoredGestures) {
- QMap<Qt::GestureType, Qt::GestureFlags>::iterator contextit =
- gid->gestureContext.find(g->gestureType());
- bool deliver = false;
- if (contextit != gid->gestureContext.end()) {
- if (g->state() == Qt::GestureStarted) {
- deliver = true;
- } else {
- const Qt::GestureFlags flags = contextit.value();
- if (flags & Qt::ReceivePartialGestures) {
- QGraphicsObject *originalTarget = gestureTargets.value(g);
- Q_ASSERT(originalTarget);
- QGraphicsItemPrivate *otd = originalTarget->QGraphicsItem::d_func();
- const Qt::GestureFlags originalTargetFlags = otd->gestureContext.value(g->gestureType());
- if (originalTargetFlags & Qt::IgnoredGesturesPropagateToParent) {
- // only deliver to parents of the original target item
- deliver = item->isAncestorOf(originalTarget);
- } else {
- deliver = true;
- }
- }
- }
- }
- if (deliver)
- gestures += g;
+ QSet<QGesture *> undeliveredGestures;
+ QSet<QGesture *> parentPropagatedGestures;
+ foreach (QGesture *gesture, allGestures) {
+ if (QGraphicsObject *target = gestureTargets.value(gesture, 0)) {
+ cachedItemGestures[target].insert(gesture);
+ cachedTargetItems.append(target);
+ undeliveredGestures.insert(gesture);
+ QGraphicsItemPrivate *d = target->QGraphicsItem::d_func();
+ const Qt::GestureFlags flags = d->gestureContext.value(gesture->gestureType());
+ if (flags & Qt::IgnoredGesturesPropagateToParent)
+ parentPropagatedGestures.insert(gesture);
}
+ }
+ qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
+ for (int i = 0; i < cachedTargetItems.size(); ++i) {
+ QWeakPointer<QGraphicsObject> receiver = cachedTargetItems.at(i);
+ QSet<QGesture *> gestures =
+ undeliveredGestures & cachedItemGestures.value(receiver.data());
+ gestures -= cachedAlreadyDeliveredGestures.value(receiver.data());
+
if (gestures.isEmpty())
continue;
+
+ cachedAlreadyDeliveredGestures[receiver.data()] += gestures;
+ const bool isPanel = receiver.data()->isPanel();
+
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
<< "delivering to"
- << item << gestures;
- QGestureEvent ev(gestures);
+ << receiver.data() << gestures;
+ QGestureEvent ev(gestures.toList());
ev.setWidget(event->widget());
- sendEvent(item, &ev);
+ sendEvent(receiver.data(), &ev);
QSet<QGesture *> ignoredGestures;
foreach (QGesture *g, gestures) {
if (!ev.isAccepted() && !ev.isAccepted(g)) {
- ignoredGestures.insert(g);
+ // if the gesture was ignored by its target, we will update the
+ // targetItems list with a possible target items (items that
+ // want to receive partial gestures).
+ // ### wont' work if the target was destroyed in the event
+ // we will just stop delivering it.
+ if (receiver && receiver.data() == gestureTargets.value(g, 0))
+ ignoredGestures.insert(g);
} else {
- if (g->state() == Qt::GestureStarted)
- gestureTargets[g] = item;
- }
- }
- if (!ignoredGestures.isEmpty()) {
- // get a list of items under the (current) hotspot of each ignored
- // gesture and start delivery again from the beginning
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "item has ignored the event, will propagate."
- << item << ignoredGestures;
- itemIgnoredGestures[item] += ignoredGestures;
- alreadyIgnoredGestures = ignoredGestures.toList();
-
- // remove gestures that are supposed to be propagated to
- // parent items only.
- QSet<QGesture *> parentGestures;
- for (QSet<QGesture *>::iterator it = ignoredGestures.begin();
- it != ignoredGestures.end();) {
- if (parentPropagatedGestures.contains(*it)) {
- parentGestures.insert(*it);
- it = ignoredGestures.erase(it);
- } else {
- ++it;
+ if (receiver && g->state() == Qt::GestureStarted) {
+ // someone accepted the propagated initial GestureStarted
+ // event, let it be the new target for all following events.
+ gestureTargets[g] = receiver.data();
}
+ undeliveredGestures.remove(g);
}
+ }
+ if (undeliveredGestures.isEmpty())
+ break;
- QSet<QGraphicsObject *> itemsSet = targetItems.toSet();
-
- foreach(QGesture *g, parentGestures) {
- // get the original target for the gesture
- QGraphicsItem *item = gestureTargets.value(g, 0);
- Q_ASSERT(item);
- const Qt::GestureType gestureType = g->gestureType();
- // iterate through parent items of the original gesture
- // target item and collect potential receivers
- do {
- if (QGraphicsObject *obj = item->toGraphicsObject()) {
- if (item->d_func()->gestureContext.contains(gestureType))
- itemsSet.insert(obj);
+ // ignoredGestures list is only filled when delivering to the gesture
+ // target item, so it is safe to assume item == target.
+ if (!ignoredGestures.isEmpty() && !isPanel) {
+ // look for new potential targets for gestures that were ignored
+ // and should be propagated.
+
+ QSet<QGraphicsObject *> targetsSet = cachedTargetItems.toSet();
+
+ if (receiver) {
+ // first if the gesture should be propagated to parents only
+ for (QSet<QGesture *>::iterator it = ignoredGestures.begin();
+ it != ignoredGestures.end();) {
+ if (parentPropagatedGestures.contains(*it)) {
+ QGesture *gesture = *it;
+ const Qt::GestureType gestureType = gesture->gestureType();
+ QGraphicsItem *item = receiver.data();
+ while (item) {
+ if (QGraphicsObject *obj = item->toGraphicsObject()) {
+ if (item->d_func()->gestureContext.contains(gestureType)) {
+ targetsSet.insert(obj);
+ cachedItemGestures[obj].insert(gesture);
+ }
+ }
+ if (item->isPanel())
+ break;
+ item = item->parentItem();
+ }
+
+ it = ignoredGestures.erase(it);
+ continue;
}
- if (item->isPanel())
- break;
- } while ((item = item->parentItem()));
+ ++it;
+ }
}
- QMap<Qt::GestureType, QGesture *> conflictedGestures;
- QList<QList<QGraphicsObject *> > itemsForConflictedGestures;
- QHash<QGesture *, QGraphicsObject *> normalGestures;
- getGestureTargets(ignoredGestures, viewport,
- &conflictedGestures, &itemsForConflictedGestures,
- &normalGestures);
- for (int k = 0; k < itemsForConflictedGestures.size(); ++k)
- itemsSet += itemsForConflictedGestures.at(k).toSet();
-
- targetItems = itemsSet.toList();
+ gestureTargetsAtHotSpots(ignoredGestures, Qt::ReceivePartialGestures,
+ &cachedItemGestures, &targetsSet, 0, 0);
- qSort(targetItems.begin(), targetItems.end(), qt_closestItemFirst);
+ cachedTargetItems = targetsSet.toList();
+ qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "new targets:" << targetItems;
+ << "new targets:" << cachedTargetItems;
i = -1; // start delivery again
continue;
}
}
+
foreach (QGesture *g, startedGestures) {
if (g->gestureCancelPolicy() == QGesture::CancelAllInContext) {
DEBUG() << "lets try to cancel some";
// find gestures in context in Qt::GestureStarted or Qt::GestureUpdated state and cancel them
- cancelGesturesForChildren(g, event->widget());
+ cancelGesturesForChildren(g);
}
}
@@ -6220,9 +6189,13 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
break;
}
}
+
+ cachedTargetItems.clear();
+ cachedItemGestures.clear();
+ cachedAlreadyDeliveredGestures.clear();
}
-void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original, QWidget *viewport)
+void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original)
{
Q_ASSERT(original);
QGraphicsItem *originalItem = gestureTargets.value(original);
@@ -6278,8 +6251,7 @@ void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original, QWidge
if (!g->hasHotSpot())
continue;
- QPoint screenPos = g->hotSpot().toPoint();
- QList<QGraphicsItem *> items = itemsAtPosition(screenPos, QPointF(), viewport);
+ QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), g->d_func()->sceneHotSpot, 0);
for (int j = 0; j < items.size(); ++j) {
QGraphicsObject *item = items.at(j)->toGraphicsObject();
if (!item)
diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h
index 04ffe0f..ca8b829 100644
--- a/src/gui/graphicsview/qgraphicsscene_p.h
+++ b/src/gui/graphicsview/qgraphicsscene_p.h
@@ -294,13 +294,18 @@ public:
bool allItemsIgnoreTouchEvents;
void enableTouchEventsOnViews();
+ QList<QGraphicsObject *> cachedTargetItems;
+ QHash<QGraphicsObject *, QSet<QGesture *> > cachedItemGestures;
+ QHash<QGraphicsObject *, QSet<QGesture *> > cachedAlreadyDeliveredGestures;
QHash<QGesture *, QGraphicsObject *> gestureTargets;
void gestureEventHandler(QGestureEvent *event);
- void getGestureTargets(const QSet<QGesture *> &gestures, QWidget *viewport,
- QMap<Qt::GestureType, QGesture *> *conflictedGestures,
- QList<QList<QGraphicsObject *> > *conflictedItems,
- QHash<QGesture *, QGraphicsObject *> *normalGestures);
- void cancelGesturesForChildren(QGesture *original, QWidget *viewport);
+ void gestureTargetsAtHotSpots(const QSet<QGesture *> &gestures,
+ Qt::GestureFlag flag,
+ QHash<QGraphicsObject *, QSet<QGesture *> > *targets,
+ QSet<QGraphicsObject *> *itemsSet = 0,
+ QSet<QGesture *> *normal = 0,
+ QSet<QGesture *> *conflicts = 0);
+ void cancelGesturesForChildren(QGesture *original);
void updateInputMethodSensitivityInViews();
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 06b7438..1ced3d7 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -3400,6 +3400,13 @@ void QGraphicsView::paintEvent(QPaintEvent *event)
if (!d->scene->d_func()->painterStateProtection)
painter.setWorldTransform(viewTransform);
} else {
+ // Make sure we don't have unpolished items before we draw
+ if (!d->scene->d_func()->unpolishedItems.isEmpty())
+ d->scene->d_func()->_q_polishItems();
+ // We reset updateAll here (after we've issued polish events)
+ // so that we can discard update requests coming from polishEvent().
+ d->scene->d_func()->updateAll = false;
+
// Find all exposed items
bool allItems = false;
QList<QGraphicsItem *> itemList = d->findItems(d->exposedRegion, &allItems, viewTransform);
@@ -3408,9 +3415,25 @@ void QGraphicsView::paintEvent(QPaintEvent *event)
const int numItems = itemList.size();
QGraphicsItem **itemArray = &itemList[0]; // Relies on QList internals, but is perfectly valid.
QStyleOptionGraphicsItem *styleOptionArray = d->allocStyleOptionsArray(numItems);
+ QTransform transform(Qt::Uninitialized);
for (int i = 0; i < numItems; ++i) {
- itemArray[i]->d_ptr->initStyleOption(&styleOptionArray[i], viewTransform,
- d->exposedRegion, allItems);
+ QGraphicsItem *item = itemArray[i];
+ QGraphicsItemPrivate *itemd = item->d_ptr.data();
+ itemd->initStyleOption(&styleOptionArray[i], viewTransform, d->exposedRegion, allItems);
+ // Cache the item's area in view coordinates.
+ // Note that we have to do this here in case the base class implementation
+ // (QGraphicsScene::drawItems) is not called. If it is, we'll do this
+ // operation twice, but that's the price one has to pay for using indirect
+ // painting :-/.
+ const QRectF brect = adjustedItemEffectiveBoundingRect(item);
+ if (!itemd->itemIsUntransformable()) {
+ transform = item->sceneTransform();
+ if (viewTransformed)
+ transform *= viewTransform;
+ } else {
+ transform = item->deviceTransform(viewTransform);
+ }
+ itemd->paintedViewBoundingRects.insert(d->viewport, transform.mapRect(brect).toRect());
}
// Draw the items.
drawItems(&painter, numItems, itemArray, styleOptionArray);
diff --git a/src/gui/image/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp
index 2226901..8446387 100644
--- a/src/gui/image/qnativeimage.cpp
+++ b/src/gui/image/qnativeimage.cpp
@@ -182,7 +182,7 @@ QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /*
qWarning() << "Error while marking the shared memory segment to be destroyed";
ok = (xshminfo.shmaddr != (char*)-1);
if (ok)
- image = QImage((uchar *)xshmimg->data, width, height, systemFormat());
+ image = QImage((uchar *)xshmimg->data, width, height, format);
}
xshminfo.readOnly = false;
if (ok)
diff --git a/src/gui/image/qpaintengine_pic.cpp b/src/gui/image/qpaintengine_pic.cpp
index 1aeb524..029154b 100644
--- a/src/gui/image/qpaintengine_pic.cpp
+++ b/src/gui/image/qpaintengine_pic.cpp
@@ -486,8 +486,11 @@ void QPicturePaintEngine::drawTextItem(const QPointF &p , const QTextItem &ti)
qDebug() << " -> drawTextItem():" << p << ti.text();
#endif
+ const QTextItemInt &si = static_cast<const QTextItemInt &>(ti);
+ if (si.chars == 0)
+ QPaintEngine::drawTextItem(p, ti); // Draw as path
+
if (d->pic_d->formatMajor >= 9) {
- const QTextItemInt &si = static_cast<const QTextItemInt &>(ti);
int pos;
SERIALIZE_CMD(QPicturePrivate::PdcDrawTextItem);
QFont fnt = ti.font();
diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp
index adf3ce3..bc6db90 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -2119,6 +2119,11 @@ void QAbstractItemView::focusOutEvent(QFocusEvent *event)
Q_D(QAbstractItemView);
QAbstractScrollArea::focusOutEvent(event);
d->viewport->update();
+
+#ifdef QT_SOFTKEYS_ENABLED
+ if(!hasEditFocus())
+ removeAction(d->doneSoftKey);
+#endif
}
/*!
@@ -2144,7 +2149,12 @@ void QAbstractItemView::keyPressEvent(QKeyEvent *event)
if (!hasEditFocus()) {
setEditFocus(true);
#ifdef QT_SOFTKEYS_ENABLED
- addAction(d->doneSoftKey);
+ // If we can't keypad navigate to any direction, there is no sense to add
+ // "Done" softkey, since it basically does nothing when there is
+ // only one widget in screen
+ if(QWidgetPrivate::canKeypadNavigate(Qt::Horizontal)
+ || QWidgetPrivate::canKeypadNavigate(Qt::Vertical))
+ addAction(d->doneSoftKey);
#endif
return;
}
@@ -2160,6 +2170,26 @@ void QAbstractItemView::keyPressEvent(QKeyEvent *event)
event->ignore();
}
return;
+ case Qt::Key_Down:
+ case Qt::Key_Up:
+ // Let's ignore vertical navigation events, only if there is no other widget
+ // what can take the focus in vertical direction. This means widget can handle navigation events
+ // even the widget don't have edit focus, and there is no other widget in requested direction.
+ if(QApplication::keypadNavigationEnabled() && !hasEditFocus()
+ && QWidgetPrivate::canKeypadNavigate(Qt::Vertical)) {
+ event->ignore();
+ return;
+ }
+ break;
+ case Qt::Key_Left:
+ case Qt::Key_Right:
+ // Similar logic as in up and down events
+ if(QApplication::keypadNavigationEnabled() && !hasEditFocus()
+ && (QWidgetPrivate::canKeypadNavigate(Qt::Horizontal) || QWidgetPrivate::inTabWidget(this))) {
+ event->ignore();
+ return;
+ }
+ break;
default:
if (QApplication::keypadNavigationEnabled() && !hasEditFocus()) {
event->ignore();
@@ -2245,7 +2275,7 @@ void QAbstractItemView::keyPressEvent(QKeyEvent *event)
case Qt::Key_Down:
case Qt::Key_Up:
#ifdef QT_KEYPAD_NAVIGATION
- if (QApplication::keypadNavigationEnabled()) {
+ if (QApplication::keypadNavigationEnabled() && QWidgetPrivate::canKeypadNavigate(Qt::Vertical)) {
event->accept(); // don't change focus
break;
}
@@ -2253,8 +2283,10 @@ void QAbstractItemView::keyPressEvent(QKeyEvent *event)
case Qt::Key_Left:
case Qt::Key_Right:
#ifdef QT_KEYPAD_NAVIGATION
- if (QApplication::navigationMode() == Qt::NavigationModeKeypadDirectional) {
- event->accept(); // don't change horizontal focus in directional mode
+ if (QApplication::navigationMode() == Qt::NavigationModeKeypadDirectional
+ && (QWidgetPrivate::canKeypadNavigate(Qt::Horizontal)
+ || (QWidgetPrivate::inTabWidget(this) && d->model->columnCount(d->root) > 1))) {
+ event->accept(); // don't change focus
break;
}
#endif // QT_KEYPAD_NAVIGATION
diff --git a/src/gui/itemviews/qabstractproxymodel.cpp b/src/gui/itemviews/qabstractproxymodel.cpp
index 40345a7..43a1327 100644
--- a/src/gui/itemviews/qabstractproxymodel.cpp
+++ b/src/gui/itemviews/qabstractproxymodel.cpp
@@ -127,6 +127,7 @@ void QAbstractProxyModel::setSourceModel(QAbstractItemModel *sourceModel)
} else {
d->model = QAbstractItemModelPrivate::staticEmptyModel();
}
+ d->roleNames = d->model->roleNames();
}
/*!
diff --git a/src/gui/itemviews/qheaderview.cpp b/src/gui/itemviews/qheaderview.cpp
index 1c26e51..5128b64 100644
--- a/src/gui/itemviews/qheaderview.cpp
+++ b/src/gui/itemviews/qheaderview.cpp
@@ -2221,7 +2221,8 @@ void QHeaderView::mouseMoveEvent(QMouseEvent *e)
return;
}
case QHeaderViewPrivate::MoveSection: {
- if (qAbs(pos - d->firstPos) >= QApplication::startDragDistance()) {
+ if (qAbs(pos - d->firstPos) >= QApplication::startDragDistance()
+ || !d->sectionIndicator->isHidden()) {
int indicatorCenter = (d->orientation == Qt::Horizontal
? d->sectionIndicator->width()
: d->sectionIndicator->height()) / 2;
@@ -2233,12 +2234,6 @@ void QHeaderView::mouseMoveEvent(QMouseEvent *e)
return;
d->target = d->logicalIndex(visual);
d->updateSectionIndicator(d->section, pos);
- } else {
- int visual = visualIndexAt(d->firstPos);
- if (visual == -1)
- return;
- d->target = d->logicalIndex(visual);
- d->updateSectionIndicator(d->section, d->firstPos);
}
return;
}
diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp
index e73013c..c63a07b 100644
--- a/src/gui/itemviews/qsortfilterproxymodel.cpp
+++ b/src/gui/itemviews/qsortfilterproxymodel.cpp
@@ -563,7 +563,7 @@ QVector<QPair<int, QVector<int > > > QSortFilterProxyModelPrivate::proxy_interva
int proxy_item = 0;
int source_items_index = 0;
QVector<int> source_items_in_interval;
- bool compare = (orient == Qt::Vertical && source_sort_column >= 0);
+ bool compare = (orient == Qt::Vertical && source_sort_column >= 0 && dynamic_sortfilter);
while (source_items_index < source_items.size()) {
source_items_in_interval.clear();
int first_new_source_item = source_items.at(source_items_index);
@@ -1244,7 +1244,7 @@ void QSortFilterProxyModelPrivate::_q_sourceRowsInserted(
const QModelIndex &source_parent, int start, int end)
{
source_items_inserted(source_parent, start, end, Qt::Vertical);
- if (update_source_sort_column()) //previous call to update_source_sort_column may fail if the model has no column.
+ if (update_source_sort_column() && dynamic_sortfilter) //previous call to update_source_sort_column may fail if the model has no column.
sort(); // now it should succeed so we need to make sure to sort again
}
@@ -1281,8 +1281,8 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsInserted(
if (source_parent.isValid())
return; //we sort according to the root column only
if (source_sort_column == -1) {
- //we update the source_sort_column depending on the prox_sort_column
- if (update_source_sort_column())
+ //we update the source_sort_column depending on the proxy_sort_column
+ if (update_source_sort_column() && dynamic_sortfilter)
sort();
} else {
if (start <= source_sort_column)
diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
index 706d2a8..37168eb 100644
--- a/src/gui/itemviews/qtreeview.cpp
+++ b/src/gui/itemviews/qtreeview.cpp
@@ -3770,10 +3770,15 @@ void QTreeViewPrivate::rowsRemoved(const QModelIndex &parent,
if (previousSibiling != -1 && after && model->rowCount(parent) == start)
viewItems[previousSibiling].hasMoreSiblings = false;
-
- updateChildCount(parentItem, -removedCount);
- if (parentItem != -1 && viewItems.at(parentItem).total == 0)
- viewItems[parentItem].hasChildren = false; //every children have been removed;
+ if (parentItem != -1) {
+ if (viewItems.at(parentItem).expanded) {
+ updateChildCount(parentItem, -removedCount);
+ if (viewItems.at(parentItem).total == 0)
+ viewItems[parentItem].hasChildren = false; //every children have been removed;
+ } else if (viewItems[parentItem].hasChildren && !hasVisibleChildren(parent)) {
+ viewItems[parentItem].hasChildren = false;
+ }
+ }
if (after) {
q->updateGeometries();
viewport->update();
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 3e2e6f6..baefdfd 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -597,7 +597,9 @@ TKeyResponse QSymbianControl::OfferKeyEvent(const TKeyEvent& keyEvent, TEventCod
TUint s60Keysym = QApplicationPrivate::resolveS60ScanCode(keyEvent.iScanCode,
keyEvent.iCode);
int keyCode;
- if (s60Keysym >= 0x20 && s60Keysym < ENonCharacterKeyBase) {
+ if (s60Keysym == EKeyNull){ //some key events have 0 in iCode, for them iScanCode should be used
+ keyCode = qt_keymapper_private()->mapS60ScanCodesToQt(keyEvent.iScanCode);
+ } else if (s60Keysym >= 0x20 && s60Keysym < ENonCharacterKeyBase) {
// Normal characters keys.
keyCode = s60Keysym;
} else {
@@ -1146,6 +1148,10 @@ void qt_init(QApplicationPrivate * /* priv */, int)
#endif
S60->wsSession().SetAutoFlush(ETrue);
+#ifdef Q_SYMBIAN_WINDOW_SIZE_CACHE
+ TRAP_IGNORE(S60->wsSession().EnableWindowSizeCacheL());
+#endif
+
S60->updateScreenSize();
diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp
index 31d245f..131b9bb 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -1905,8 +1905,13 @@ LRESULT CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam
break;
if (!msg.wParam) {
+#ifdef Q_WS_WINCE
+ // On Windows CE, lParam parameter is a constant, not a char pointer.
+ if (msg.lParam == INI_INTL) {
+#else
QString area = QString::fromWCharArray((wchar_t*)msg.lParam);
if (area == QLatin1String("intl")) {
+#endif
QLocalePrivate::updateSystemPrivate();
if (!widget->testAttribute(Qt::WA_SetLocale))
widget->dptr()->setLocale_helper(QLocale(), true);
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
index c6e192b..3c2c743 100644
--- a/src/gui/kernel/qapplication_x11.cpp
+++ b/src/gui/kernel/qapplication_x11.cpp
@@ -2221,30 +2221,60 @@ void qt_init(QApplicationPrivate *priv, int,
int format;
unsigned long length, after;
uchar *data = 0;
+ int rc;
+
+ do {
+ if (!qgetenv("KDE_FULL_SESSION").isEmpty()) {
+ X11->desktopEnvironment = DE_KDE;
+ X11->desktopVersion = qgetenv("KDE_SESSION_VERSION").toInt();
+ break;
+ }
+
+ if (qgetenv("DESKTOP_SESSION") == "gnome") {
+ X11->desktopEnvironment = DE_GNOME;
+ break;
+ }
+
+ // GNOME_DESKTOP_SESSION_ID is deprecated for some reason, but still check it
+ if (!qgetenv("GNOME_DESKTOP_SESSION_ID").isEmpty()) {
+ X11->desktopEnvironment = DE_GNOME;
+ break;
+ }
+
+ rc = XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(_DT_SAVE_MODE),
+ 0, 2, False, XA_STRING, &type, &format, &length,
+ &after, &data);
+ if (rc == Success && length) {
+ if (!strcmp(reinterpret_cast<char *>(data), "xfce4")) {
+ // Pretend that xfce4 is gnome, as it uses the same libraries.
+ // The detection above is stolen from xdg-open.
+ X11->desktopEnvironment = DE_GNOME;
+ break;
+ }
+
+ // We got the property but it wasn't xfce4. Free data before it gets overwritten.
+ XFree(data);
+ data = 0;
+ }
+
+ rc = XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(DTWM_IS_RUNNING),
+ 0, 1, False, AnyPropertyType, &type, &format, &length,
+ &after, &data);
+ if (rc == Success && length) {
+ // DTWM is running, meaning most likely CDE is running...
+ X11->desktopEnvironment = DE_CDE;
+ break;
+ }
+
+ rc = XGetWindowProperty(X11->display, QX11Info::appRootWindow(),
+ ATOM(_SGI_DESKS_MANAGER), 0, 1, False, XA_WINDOW,
+ &type, &format, &length, &after, &data);
+ if (rc == Success && length) {
+ X11->desktopEnvironment = DE_4DWM;
+ break;
+ }
+ } while(0);
- if (!qgetenv("KDE_FULL_SESSION").isEmpty()) {
- X11->desktopEnvironment = DE_KDE;
- X11->desktopVersion = qgetenv("KDE_SESSION_VERSION").toInt();
- } else if (!qgetenv("GNOME_DESKTOP_SESSION_ID").isEmpty() // Deprecated for some reason.
- || qgetenv("DESKTOP_SESSION") == "gnome") { // De-facto-standardized by GNOME.
- X11->desktopEnvironment = DE_GNOME;
- } else if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(_DT_SAVE_MODE),
- 0, 2, False, XA_STRING, &type, &format, &length,
- &after, &data) == Success
- && !strcmp(reinterpret_cast<char *>(data), "xfce4")) {
- // Pretend that xfce4 is gnome, as it uses the same libraries.
- // The detection above is stolen from xdg-open.
- X11->desktopEnvironment = DE_GNOME;
- } else if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(DTWM_IS_RUNNING),
- 0, 1, False, AnyPropertyType, &type, &format, &length,
- &after, &data) == Success && length) {
- // DTWM is running, meaning most likely CDE is running...
- X11->desktopEnvironment = DE_CDE;
- } else if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(_SGI_DESKS_MANAGER),
- 0, 1, False, XA_WINDOW, &type, &format, &length, &after, &data) == Success
- && length) {
- X11->desktopEnvironment = DE_4DWM;
- }
if (data)
XFree((char *)data);
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index 455176e..6a16403 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -419,6 +419,8 @@ extern "C" {
- (BOOL)isOpaque;
{
+ if (!qwidgetprivate)
+ return [super isOpaque];
return qwidgetprivate->isOpaque;
}
@@ -450,7 +452,7 @@ extern "C" {
}
// Make sure the opengl context is updated on resize.
- if (qwidgetprivate->isGLWidget) {
+ if (qwidgetprivate && qwidgetprivate->isGLWidget) {
qwidgetprivate->needWindowChange = true;
QEvent event(QEvent::MacGLWindowChange);
qApp->sendEvent(qwidget, &event);
@@ -459,11 +461,15 @@ extern "C" {
- (void)drawRect:(NSRect)aRect
{
+ if (!qwidget)
+ return;
+
if (QApplicationPrivate::graphicsSystem() != 0) {
if (QWidgetBackingStore *bs = qwidgetprivate->maybeBackingStore()) {
// Drawing is handled on the window level
- // See qcocoasharedwindowmethods_mac_p.
- return;
+ // See qcocoasharedwindowmethods_mac_p.h
+ if (!qwidget->testAttribute(Qt::WA_PaintOnScreen))
+ return;
}
}
CGContextRef cg = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
@@ -551,12 +557,18 @@ extern "C" {
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
+ if (!qwidget)
+ return NO;
+
Q_UNUSED(theEvent);
return !qwidget->testAttribute(Qt::WA_MacNoClickThrough);
}
- (NSView *)hitTest:(NSPoint)aPoint
{
+ if (!qwidget)
+ return [super hitTest:aPoint];
+
if (qwidget->testAttribute(Qt::WA_TransparentForMouseEvents))
return nil; // You cannot hit a transparent for mouse event widget.
return [super hitTest:aPoint];
@@ -564,6 +576,9 @@ extern "C" {
- (void)updateTrackingAreas
{
+ if (!qwidget)
+ return;
+
// [NSView addTrackingArea] is slow, so bail out early if we can:
if (NSIsEmptyRect([self visibleRect]))
return;
@@ -597,6 +612,9 @@ extern "C" {
- (void)mouseEntered:(NSEvent *)event
{
+ if (!qwidget)
+ return;
+
if (qwidgetprivate->data.in_destructor)
return;
QEvent enterEvent(QEvent::Enter);
@@ -619,6 +637,9 @@ extern "C" {
- (void)mouseExited:(NSEvent *)event
{
+ if (!qwidget)
+ return;
+
QEvent leaveEvent(QEvent::Leave);
NSPoint globalPoint = [[event window] convertBaseToScreen:[event locationInWindow]];
if (!qAppInstance()->activeModalWidget() || QApplicationPrivate::tryModalHelper(qwidget, 0)) {
@@ -637,6 +658,9 @@ extern "C" {
- (void)flagsChanged:(NSEvent *)theEvent
{
+ if (!qwidget)
+ return;
+
QWidget *widgetToGetKey = qwidget;
QWidget *popup = qAppInstance()->activePopupWidget();
@@ -648,6 +672,9 @@ extern "C" {
- (void)mouseMoved:(NSEvent *)theEvent
{
+ if (!qwidget)
+ return;
+
// We always enable mouse tracking for all QCocoaView-s. In cases where we have
// child views, we will receive mouseMoved for both parent & the child (if
// mouse is over the child). We need to ignore the parent mouseMoved in such
@@ -938,6 +965,8 @@ extern "C" {
- (void)frameDidChange:(NSNotification *)note
{
Q_UNUSED(note);
+ if (!qwidget)
+ return;
if (qwidget->isWindow())
return;
NSRect newFrame = [self frame];
@@ -961,7 +990,7 @@ extern "C" {
{
QMacCocoaAutoReleasePool pool;
[super setEnabled:flag];
- if (qwidget->isEnabled() != flag)
+ if (qwidget && qwidget->isEnabled() != flag)
qwidget->setEnabled(flag);
}
@@ -972,6 +1001,8 @@ extern "C" {
- (BOOL)acceptsFirstResponder
{
+ if (!qwidget)
+ return NO;
if (qwidget->isWindow())
return YES; // Always do it, so that windows can accept key press events.
return qwidget->focusPolicy() != Qt::NoFocus;
@@ -979,6 +1010,8 @@ extern "C" {
- (BOOL)resignFirstResponder
{
+ if (!qwidget)
+ return NO;
// Seems like the following test only triggers if this
// view is inside a QMacNativeWidget:
if (qwidget == QApplication::focusWidget())
@@ -1014,6 +1047,12 @@ extern "C" {
return qwidget;
}
+- (void) qt_clearQWidget
+{
+ qwidget = 0;
+ qwidgetprivate = 0;
+}
+
- (BOOL)qt_leftButtonIsRightButton
{
return leftButtonIsRightButton;
@@ -1067,9 +1106,11 @@ extern "C" {
- (void)viewWillMoveToWindow:(NSWindow *)window
{
+ if (qwidget == 0)
+ return;
+
if (qwidget->windowFlags() & Qt::MSWindowsOwnDC
&& (window != [self window])) { // OpenGL Widget
- // Create a stupid ClearDrawable Event
QEvent event(QEvent::MacGLClearDrawable);
qApp->sendEvent(qwidget, &event);
}
@@ -1077,6 +1118,9 @@ extern "C" {
- (void)viewDidMoveToWindow
{
+ if (qwidget == 0)
+ return;
+
if (qwidget->windowFlags() & Qt::MSWindowsOwnDC && [self window]) {
// call update paint event
qwidgetprivate->needWindowChange = true;
@@ -1272,6 +1316,9 @@ extern "C" {
- (NSArray*) validAttributesForMarkedText
{
+ if (qwidget == 0)
+ return nil;
+
if (!qwidget->testAttribute(Qt::WA_InputMethodEnabled))
return nil; // Not sure if that's correct, but it's saves a malloc.
diff --git a/src/gui/kernel/qcocoaview_mac_p.h b/src/gui/kernel/qcocoaview_mac_p.h
index 4bb10c5..33aaa24 100644
--- a/src/gui/kernel/qcocoaview_mac_p.h
+++ b/src/gui/kernel/qcocoaview_mac_p.h
@@ -103,6 +103,7 @@ Q_GUI_EXPORT
- (void)draggedImage:(NSImage *)anImage endedAt:(NSPoint)aPoint operation:(NSDragOperation)operation;
- (BOOL)isComposing;
- (QWidget *)qt_qwidget;
+- (void) qt_clearQWidget;
- (BOOL)qt_leftButtonIsRightButton;
- (void)qt_setLeftButtonIsRightButton:(BOOL)isSwapped;
+ (DnDParams*)currentMouseEvent;
diff --git a/src/gui/kernel/qgesture_p.h b/src/gui/kernel/qgesture_p.h
index dee5592..649a310 100644
--- a/src/gui/kernel/qgesture_p.h
+++ b/src/gui/kernel/qgesture_p.h
@@ -69,13 +69,13 @@ public:
QGesturePrivate()
: gestureType(Qt::CustomGesture), state(Qt::NoGesture),
isHotSpotSet(false), gestureCancelPolicy(0)
-
{
}
Qt::GestureType gestureType;
Qt::GestureState state;
QPointF hotSpot;
+ QPointF sceneHotSpot;
uint isHotSpotSet : 1;
uint gestureCancelPolicy : 2;
};
diff --git a/src/gui/kernel/qgesturerecognizer.cpp b/src/gui/kernel/qgesturerecognizer.cpp
index 8735d27..c88a9a7 100644
--- a/src/gui/kernel/qgesturerecognizer.cpp
+++ b/src/gui/kernel/qgesturerecognizer.cpp
@@ -181,6 +181,7 @@ void QGestureRecognizer::reset(QGesture *gesture)
QGesturePrivate *d = gesture->d_func();
d->state = Qt::NoGesture;
d->hotSpot = QPointF();
+ d->sceneHotSpot = QPointF();
d->isHotSpotSet = false;
}
}
diff --git a/src/gui/kernel/qkeymapper_p.h b/src/gui/kernel/qkeymapper_p.h
index 09c36c88..3e42d6e 100644
--- a/src/gui/kernel/qkeymapper_p.h
+++ b/src/gui/kernel/qkeymapper_p.h
@@ -207,12 +207,12 @@ public:
KeyboardLayoutItem *keyLayout[256];
#elif defined(Q_WS_QWS)
#elif defined(Q_OS_SYMBIAN)
-private:
- QHash<TUint, int> s60ToQtKeyMap;
- void fillKeyMap();
public:
QString translateKeyEvent(int keySym, Qt::KeyboardModifiers modifiers);
int mapS60KeyToQt(TUint s60key);
+ int mapS60ScanCodesToQt(TUint s60key);
+ int mapQtToS60Key(int qtKey);
+ int mapQtToS60ScanCodes(int qtKey);
#endif
};
diff --git a/src/gui/kernel/qkeymapper_s60.cpp b/src/gui/kernel/qkeymapper_s60.cpp
index 6e21420..fd263ef 100644
--- a/src/gui/kernel/qkeymapper_s60.cpp
+++ b/src/gui/kernel/qkeymapper_s60.cpp
@@ -46,7 +46,6 @@ QT_BEGIN_NAMESPACE
QKeyMapperPrivate::QKeyMapperPrivate()
{
- fillKeyMap();
}
QKeyMapperPrivate::~QKeyMapperPrivate()
@@ -74,174 +73,145 @@ QString QKeyMapperPrivate::translateKeyEvent(int keySym, Qt::KeyboardModifiers /
return QString(QChar(keySym));
}
-void QKeyMapperPrivate::fillKeyMap()
+#include <e32keys.h>
+struct KeyMapping{
+ TKeyCode s60KeyCode;
+ TStdScanCode s60ScanCode;
+ Qt::Key qtKey;
+};
+
+using namespace Qt;
+
+static const KeyMapping keyMapping[] = {
+ {EKeyBackspace, EStdKeyBackspace, Key_Backspace},
+ {EKeyTab, EStdKeyTab, Key_Tab},
+ {EKeyEnter, EStdKeyEnter, Key_Enter},
+ {EKeyEscape, EStdKeyEscape, Key_Escape},
+ {EKeySpace, EStdKeySpace, Key_Space},
+ {EKeyDelete, EStdKeyDelete, Key_Delete},
+ {EKeyPrintScreen, EStdKeyPrintScreen, Key_SysReq},
+ {EKeyPause, EStdKeyPause, Key_Pause},
+ {EKeyHome, EStdKeyHome, Key_Home},
+ {EKeyEnd, EStdKeyEnd, Key_End},
+ {EKeyPageUp, EStdKeyPageUp, Key_PageUp},
+ {EKeyPageDown, EStdKeyPageDown, Key_PageDown},
+ {EKeyInsert, EStdKeyInsert, Key_Insert},
+ {EKeyLeftArrow, EStdKeyLeftArrow, Key_Left},
+ {EKeyRightArrow, EStdKeyRightArrow, Key_Right},
+ {EKeyUpArrow, EStdKeyUpArrow, Key_Up},
+ {EKeyDownArrow, EStdKeyDownArrow, Key_Down},
+ {EKeyLeftShift, EStdKeyLeftShift, Key_Shift},
+ {EKeyRightShift, EStdKeyRightShift, Key_Shift},
+ {EKeyLeftAlt, EStdKeyLeftAlt, Key_Alt},
+ {EKeyRightAlt, EStdKeyRightAlt, Key_AltGr},
+ {EKeyLeftCtrl, EStdKeyLeftCtrl, Key_Control},
+ {EKeyRightCtrl, EStdKeyRightCtrl, Key_Control},
+ {EKeyLeftFunc, EStdKeyLeftFunc, Key_Super_L},
+ {EKeyRightFunc, EStdKeyRightFunc, Key_Super_R},
+ {EKeyCapsLock, EStdKeyCapsLock, Key_CapsLock},
+ {EKeyNumLock, EStdKeyNumLock, Key_NumLock},
+ {EKeyScrollLock, EStdKeyScrollLock, Key_ScrollLock},
+ {EKeyF1, EStdKeyF1, Key_F1},
+ {EKeyF2, EStdKeyF2, Key_F2},
+ {EKeyF3, EStdKeyF3, Key_F3},
+ {EKeyF4, EStdKeyF4, Key_F4},
+ {EKeyF5, EStdKeyF5, Key_F5},
+ {EKeyF6, EStdKeyF6, Key_F6},
+ {EKeyF7, EStdKeyF7, Key_F7},
+ {EKeyF8, EStdKeyF8, Key_F8},
+ {EKeyF9, EStdKeyF9, Key_F9},
+ {EKeyF10, EStdKeyF10, Key_F10},
+ {EKeyF11, EStdKeyF11, Key_F11},
+ {EKeyF12, EStdKeyF12, Key_F12},
+ {EKeyF13, EStdKeyF13, Key_F13},
+ {EKeyF14, EStdKeyF14, Key_F14},
+ {EKeyF15, EStdKeyF15, Key_F15},
+ {EKeyF16, EStdKeyF16, Key_F16},
+ {EKeyF17, EStdKeyF17, Key_F17},
+ {EKeyF18, EStdKeyF18, Key_F18},
+ {EKeyF19, EStdKeyF19, Key_F19},
+ {EKeyF20, EStdKeyF20, Key_F20},
+ {EKeyF21, EStdKeyF21, Key_F21},
+ {EKeyF22, EStdKeyF22, Key_F22},
+ {EKeyF23, EStdKeyF23, Key_F23},
+ {EKeyF24, EStdKeyF24, Key_F24},
+ {EKeyOff, EStdKeyOff, Key_PowerOff},
+// {EKeyMenu, EStdKeyMenu, Key_Menu}, // Menu is EKeyApplication0
+ {EKeyHelp, EStdKeyHelp, Key_Help},
+ {EKeyDial, EStdKeyDial, Key_Call},
+ {EKeyIncVolume, EStdKeyIncVolume, Key_VolumeUp},
+ {EKeyDecVolume, EStdKeyDecVolume, Key_VolumeDown},
+ {EKeyDevice0, EStdKeyDevice0, Key_Context1}, // Found by manual testing.
+ {EKeyDevice1, EStdKeyDevice1, Key_Context2}, // Found by manual testing.
+ {EKeyDevice3, EStdKeyDevice3, Key_Select},
+// {EKeyDevice7, EStdKeyDevice7, Key_Camera}, //not supported by qt yet
+ {EKeyApplication0, EStdKeyApplication0, Key_Menu}, // Found by manual testing.
+ {EKeyApplication1, EStdKeyApplication1, Key_Launch1}, // Found by manual testing.
+ {EKeyApplication2, EStdKeyApplication2, Key_MediaPlay}, // Found by manual testing.
+ {EKeyApplication3, EStdKeyApplication3, Key_MediaStop}, // Found by manual testing.
+ {EKeyApplication4, EStdKeyApplication4, Key_MediaNext}, // Found by manual testing.
+ {EKeyApplication5, EStdKeyApplication5, Key_MediaPrevious}, // Found by manual testing.
+ {EKeyApplication6, EStdKeyApplication6, Key_Launch6},
+ {EKeyApplication7, EStdKeyApplication7, Key_Launch7},
+ {EKeyApplication8, EStdKeyApplication8, Key_Launch8},
+ {EKeyApplication9, EStdKeyApplication9, Key_Launch9},
+ {EKeyApplicationA, EStdKeyApplicationA, Key_LaunchA},
+ {EKeyApplicationB, EStdKeyApplicationB, Key_LaunchB},
+ {EKeyApplicationC, EStdKeyApplicationC, Key_LaunchC},
+ {EKeyApplicationD, EStdKeyApplicationD, Key_LaunchD},
+ {EKeyApplicationE, EStdKeyApplicationE, Key_LaunchE},
+ {EKeyApplicationF, EStdKeyApplicationF, Key_LaunchF},
+// {EKeyApplication19, EStdKeyApplication19, Key_CameraFocus}, //not supported by qt yet
+ {EKeyYes, EStdKeyYes, Key_Yes},
+ {EKeyNo, EStdKeyNo, Key_No},
+ {TKeyCode(0), TStdScanCode(0), Qt::Key(0)}
+};
+
+int QKeyMapperPrivate::mapS60KeyToQt(TUint s60key)
{
- using namespace Qt;
- static const struct {
- TUint s60Key;
- int qtKey;
- } map[] = {
- {EKeyBell, Key_unknown},
- {EKeyBackspace, Key_Backspace},
- {EKeyTab, Key_Tab},
- {EKeyLineFeed, Key_unknown},
- {EKeyVerticalTab, Key_unknown},
- {EKeyFormFeed, Key_unknown},
- {EKeyEnter, Key_Enter},
- {EKeyEscape, Key_Escape},
- {EKeySpace, Key_Space},
- {EKeyDelete, Key_Delete},
- {EKeyPrintScreen, Key_SysReq},
- {EKeyPause, Key_Pause},
- {EKeyHome, Key_Home},
- {EKeyEnd, Key_End},
- {EKeyPageUp, Key_PageUp},
- {EKeyPageDown, Key_PageDown},
- {EKeyInsert, Key_Insert},
- {EKeyLeftArrow, Key_Left},
- {EKeyRightArrow, Key_Right},
- {EKeyUpArrow, Key_Up},
- {EKeyDownArrow, Key_Down},
- {EKeyLeftShift, Key_Shift},
- {EKeyRightShift, Key_Shift},
- {EKeyLeftAlt, Key_Alt},
- {EKeyRightAlt, Key_AltGr},
- {EKeyLeftCtrl, Key_Control},
- {EKeyRightCtrl, Key_Control},
- {EKeyLeftFunc, Key_Super_L},
- {EKeyRightFunc, Key_Super_R},
- {EKeyCapsLock, Key_CapsLock},
- {EKeyNumLock, Key_NumLock},
- {EKeyScrollLock, Key_ScrollLock},
- {EKeyF1, Key_F1},
- {EKeyF2, Key_F2},
- {EKeyF3, Key_F3},
- {EKeyF4, Key_F4},
- {EKeyF5, Key_F5},
- {EKeyF6, Key_F6},
- {EKeyF7, Key_F7},
- {EKeyF8, Key_F8},
- {EKeyF9, Key_F9},
- {EKeyF10, Key_F10},
- {EKeyF11, Key_F11},
- {EKeyF12, Key_F12},
- {EKeyF13, Key_F13},
- {EKeyF14, Key_F14},
- {EKeyF15, Key_F15},
- {EKeyF16, Key_F16},
- {EKeyF17, Key_F17},
- {EKeyF18, Key_F18},
- {EKeyF19, Key_F19},
- {EKeyF20, Key_F20},
- {EKeyF21, Key_F21},
- {EKeyF22, Key_F22},
- {EKeyF23, Key_F23},
- {EKeyF24, Key_F24},
- {EKeyOff, Key_unknown},
- {EKeyIncContrast, Key_unknown},
- {EKeyDecContrast, Key_unknown},
- {EKeyBacklightOn, Key_unknown},
- {EKeyBacklightOff, Key_unknown},
- {EKeyBacklightToggle, Key_unknown},
- {EKeySliderDown, Key_unknown},
- {EKeySliderUp, Key_unknown},
- {EKeyMenu, Key_Menu},
- {EKeyDictaphonePlay, Key_unknown},
- {EKeyDictaphoneStop, Key_unknown},
- {EKeyDictaphoneRecord, Key_unknown},
- {EKeyHelp, Key_unknown},
- {EKeyDial, Key_Call},
- {EKeyScreenDimension0, Key_unknown},
- {EKeyScreenDimension1, Key_unknown},
- {EKeyScreenDimension2, Key_unknown},
- {EKeyScreenDimension3, Key_unknown},
- {EKeyIncVolume, Key_unknown},
- {EKeyDecVolume, Key_unknown},
- {EKeyDevice0, Key_Context1}, // Found by manual testing, left softkey.
- {EKeyDevice1, Key_Context2}, // Found by manual testing.
- {EKeyDevice2, Key_unknown},
- {EKeyDevice3, Key_Select}, // Found by manual testing.
- {EKeyDevice4, Key_unknown},
- {EKeyDevice5, Key_unknown},
- {EKeyDevice6, Key_unknown},
- {EKeyDevice7, Key_unknown},
- {EKeyDevice8, Key_unknown},
- {EKeyDevice9, Key_unknown},
- {EKeyDeviceA, Key_unknown},
- {EKeyDeviceB, Key_unknown},
- {EKeyDeviceC, Key_unknown},
- {EKeyDeviceD, Key_unknown},
- {EKeyDeviceE, Key_unknown},
- {EKeyDeviceF, Key_unknown},
- {EKeyApplication0, Key_Launch0},
- {EKeyApplication1, Key_Launch1},
- {EKeyApplication2, Key_Launch2},
- {EKeyApplication3, Key_Launch3},
- {EKeyApplication4, Key_Launch4},
- {EKeyApplication5, Key_Launch5},
- {EKeyApplication6, Key_Launch6},
- {EKeyApplication7, Key_Launch7},
- {EKeyApplication8, Key_Launch8},
- {EKeyApplication9, Key_Launch9},
- {EKeyApplicationA, Key_LaunchA},
- {EKeyApplicationB, Key_LaunchB},
- {EKeyApplicationC, Key_LaunchC},
- {EKeyApplicationD, Key_LaunchD},
- {EKeyApplicationE, Key_LaunchE},
- {EKeyApplicationF, Key_LaunchF},
- {EKeyYes, Key_Yes},
- {EKeyNo, Key_No},
- {EKeyIncBrightness, Key_unknown},
- {EKeyDecBrightness, Key_unknown},
- {EKeyKeyboardExtend, Key_unknown},
- {EKeyDevice10, Key_unknown},
- {EKeyDevice11, Key_unknown},
- {EKeyDevice12, Key_unknown},
- {EKeyDevice13, Key_unknown},
- {EKeyDevice14, Key_unknown},
- {EKeyDevice15, Key_unknown},
- {EKeyDevice16, Key_unknown},
- {EKeyDevice17, Key_unknown},
- {EKeyDevice18, Key_unknown},
- {EKeyDevice19, Key_unknown},
- {EKeyDevice1A, Key_unknown},
- {EKeyDevice1B, Key_unknown},
- {EKeyDevice1C, Key_unknown},
- {EKeyDevice1D, Key_unknown},
- {EKeyDevice1E, Key_unknown},
- {EKeyDevice1F, Key_unknown},
- {EKeyApplication10, Key_unknown},
- {EKeyApplication11, Key_unknown},
- {EKeyApplication12, Key_unknown},
- {EKeyApplication13, Key_unknown},
- {EKeyApplication14, Key_unknown},
- {EKeyApplication15, Key_unknown},
- {EKeyApplication16, Key_unknown},
- {EKeyApplication17, Key_unknown},
- {EKeyApplication18, Key_unknown},
- {EKeyApplication19, Key_unknown},
- {EKeyApplication1A, Key_unknown},
- {EKeyApplication1B, Key_unknown},
- {EKeyApplication1C, Key_unknown},
- {EKeyApplication1D, Key_unknown},
- {EKeyApplication1E, Key_unknown},
- {EKeyApplication1F, Key_unknown}
- };
- const int mapSize = int(sizeof(map)/sizeof(map[0]));
- s60ToQtKeyMap.reserve(mapSize + 5); // +5? docs: Ideally, slightly more than number of items
- for (int i = 0; i < mapSize; ++i)
- s60ToQtKeyMap.insert(map[i].s60Key, map[i].qtKey);
+ int res = Qt::Key_unknown;
+ for (int i = 0; keyMapping[i].s60KeyCode != 0; i++) {
+ if (keyMapping[i].s60KeyCode == s60key) {
+ res = keyMapping[i].qtKey;
+ break;
+ }
+ }
+ return res;
}
-int QKeyMapperPrivate::mapS60KeyToQt(TUint s60key)
+int QKeyMapperPrivate::mapS60ScanCodesToQt(TUint s60scanCode)
{
- QHash<TUint, int>::const_iterator mapping;
- mapping = s60ToQtKeyMap.find(s60key);
- if (mapping != s60ToQtKeyMap.end()) {
- return *mapping;
- } else {
- return Qt::Key_unknown;
+ int res = Qt::Key_unknown;
+ for (int i = 0; keyMapping[i].s60KeyCode != 0; i++) {
+ if (keyMapping[i].s60ScanCode == s60scanCode) {
+ res = keyMapping[i].qtKey;
+ break;
+ }
}
+ return res;
}
+int QKeyMapperPrivate::mapQtToS60Key(int qtKey)
+{
+ int res = KErrUnknown;
+ for (int i = 0; keyMapping[i].s60KeyCode != 0; i++) {
+ if (keyMapping[i].qtKey == qtKey) {
+ res = keyMapping[i].s60KeyCode;
+ break;
+ }
+ }
+ return res;
+}
+
+int QKeyMapperPrivate::mapQtToS60ScanCodes(int qtKey)
+{
+ int res = KErrUnknown;
+ for (int i = 0; keyMapping[i].s60KeyCode != 0; i++) {
+ if (keyMapping[i].qtKey == qtKey) {
+ res = keyMapping[i].s60ScanCode;
+ break;
+ }
+ }
+ return res;
+}
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qkeymapper_win.cpp b/src/gui/kernel/qkeymapper_win.cpp
index 578f32a..e555c5c 100644
--- a/src/gui/kernel/qkeymapper_win.cpp
+++ b/src/gui/kernel/qkeymapper_win.cpp
@@ -619,7 +619,7 @@ void QKeyMapperPrivate::clearMappings()
/* MAKELCID()'s first argument is a WORD, and GetKeyboardLayout()
* returns a DWORD. */
- LCID newLCID = MAKELCID((DWORD)GetKeyboardLayout(0), SORT_DEFAULT);
+ LCID newLCID = MAKELCID((quintptr)GetKeyboardLayout(0), SORT_DEFAULT);
// keyboardInputLocale = qt_localeFromLCID(newLCID);
bool bidi = false;
diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm
index e9fdbda..9560952 100644
--- a/src/gui/kernel/qt_cocoa_helpers_mac.mm
+++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm
@@ -369,6 +369,16 @@ QMacTabletHash *qt_mac_tablet_hash()
}
#ifdef QT_MAC_USE_COCOA
+
+// Clears the QWidget pointer that each QCocoaView holds.
+void qt_mac_clearCocoaViewQWidgetPointers(QWidget *widget)
+{
+ QCocoaView *cocoaView = reinterpret_cast<QCocoaView *>(qt_mac_nativeview_for(widget));
+ if (cocoaView && [cocoaView respondsToSelector:@selector(qt_qwidget)]) {
+ [cocoaView qt_clearQWidget];
+ }
+}
+
void qt_dispatchTabletProximityEvent(void * /*NSEvent * */ tabletEvent)
{
NSEvent *proximityEvent = static_cast<NSEvent *>(tabletEvent);
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index d433048..2f6ec6b 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -118,6 +118,10 @@
#include "private/qgraphicssystem_p.h"
#include "private/qgesturemanager_p.h"
+#ifdef QT_KEYPAD_NAVIGATION
+#include "qtabwidget.h" // Needed in inTabWidget()
+#endif // QT_KEYPAD_NAVIGATION
+
// widget/widget data creation count
//#define QWIDGET_EXTRA_DEBUG
//#define ALIEN_DEBUG
@@ -1468,6 +1472,15 @@ QWidget::~QWidget()
d->declarativeData = 0; // don't activate again in ~QObject
}
+#ifdef QT_MAC_USE_COCOA
+ // QCocoaView holds a pointer back to this widget. Clear it now
+ // to make sure it's not followed later on. The lifetime of the
+ // QCocoaView might exceed the lifetime of this widget in cases
+ // where Cocoa itself holds references to it.
+ extern void qt_mac_clearCocoaViewQWidgetPointers(QWidget *);
+ qt_mac_clearCocoaViewQWidgetPointers(this);
+#endif
+
if (!d->children.isEmpty())
d->deleteChildren();
@@ -11632,6 +11645,45 @@ QWidget *QWidgetPrivate::widgetInNavigationDirection(Direction direction)
}
return targetWidget;
}
+
+/*!
+ \internal
+
+ Tells us if it there is currently a reachable widget by keypad navigation in
+ a certain \a orientation.
+ If no navigation is possible, occuring key events in that \a orientation may
+ be used to interact with the value in the focussed widget, even though it
+ currently has not the editFocus.
+
+ \sa QWidgetPrivate::widgetInNavigationDirection(), QWidget::hasEditFocus()
+*/
+bool QWidgetPrivate::canKeypadNavigate(Qt::Orientation orientation)
+{
+ return orientation == Qt::Horizontal?
+ (QWidgetPrivate::widgetInNavigationDirection(QWidgetPrivate::DirectionEast)
+ || QWidgetPrivate::widgetInNavigationDirection(QWidgetPrivate::DirectionWest))
+ :(QWidgetPrivate::widgetInNavigationDirection(QWidgetPrivate::DirectionNorth)
+ || QWidgetPrivate::widgetInNavigationDirection(QWidgetPrivate::DirectionSouth));
+}
+/*!
+ \internal
+
+ Checks, if the \a widget is inside a QTabWidget. If is is inside
+ one, left/right key events will be used to switch between tabs in keypad
+ navigation. If there is no QTabWidget, the horizontal key events can be used
+to
+ interact with the value in the focussed widget, even though it currently has
+ not the editFocus.
+
+ \sa QWidget::hasEditFocus()
+*/
+bool QWidgetPrivate::inTabWidget(QWidget *widget)
+{
+ for (QWidget *tabWidget = widget; tabWidget; tabWidget = tabWidget->parentWidget())
+ if (qobject_cast<const QTabWidget*>(tabWidget))
+ return true;
+ return false;
+}
#endif
/*!
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index da9e9eb..dcb87fc 100644
--- a/src/gui/kernel/qwidget_mac.mm
+++ b/src/gui/kernel/qwidget_mac.mm
@@ -4543,8 +4543,20 @@ void QWidgetPrivate::scroll_sys(int dx, int dy, const QRect &r)
}
}
+ // ### Scroll the dirty regions as well, the following is not correct.
+ QRegion displayRegion = r.isNull() ? dirtyOnWidget : (dirtyOnWidget & r);
+ const QVector<QRect> &rects = dirtyOnWidget.rects();
+ const QVector<QRect>::const_iterator end = rects.end();
+ QVector<QRect>::const_iterator it = rects.begin();
+ while (it != end) {
+ const QRect rect = *it;
+ const NSRect dirtyRect = NSMakeRect(rect.x() + dx, rect.y() + dy,
+ rect.width(), rect.height());
+ [view setNeedsDisplayInRect:dirtyRect];
+ ++it;
+ }
+
NSSize deltaSize = NSMakeSize(dx, dy);
- [view translateRectsNeedingDisplayInRect:scrollRect by:deltaSize];
[view scrollRect:scrollRect by:deltaSize];
[view setNeedsDisplayInRect:deltaXRect];
[view setNeedsDisplayInRect:deltaYRect];
diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h
index 75b4c12..efd9a0a 100644
--- a/src/gui/kernel/qwidget_p.h
+++ b/src/gui/kernel/qwidget_p.h
@@ -475,6 +475,8 @@ public:
#ifdef QT_KEYPAD_NAVIGATION
static bool navigateToDirection(Direction direction);
static QWidget *widgetInNavigationDirection(Direction direction);
+ static bool canKeypadNavigate(Qt::Orientation orientation);
+ static bool inTabWidget(QWidget *widget);
#endif
void setWindowIconText_sys(const QString &cap);
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index 070491d..891f4c2 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -46,6 +46,7 @@
#include <private/qdrawhelper_armv6_p.h>
#include <private/qdrawhelper_neon_p.h>
#include <private/qmath_p.h>
+#include <private/qsimd_p.h>
#include <qmath.h>
QT_BEGIN_NAMESPACE
@@ -3700,7 +3701,7 @@ template <>
Q_STATIC_TEMPLATE_SPECIALIZATION
inline quint32 alpha_4(const qargb8555 *src)
{
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint8 *src8 = reinterpret_cast<const quint8*>(src);
return src8[0] << 24 | src8[3] << 16 | src8[6] << 8 | src8[9];
}
@@ -4026,8 +4027,8 @@ template <>
inline void interpolate_pixel_4(qargb8565 *dest, const qargb8565 *src,
quint32 alpha)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = eff_alpha_4(alpha, dest);
const quint32 ia = eff_ialpha_4(alpha, dest);
@@ -4122,8 +4123,8 @@ template <>
inline void interpolate_pixel_4(qargb8555 *dest, const qargb8555 *src,
quint32 alpha)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = eff_alpha_4(alpha, dest);
@@ -4218,8 +4219,8 @@ template <>
inline void interpolate_pixel_4(qrgb888 *dest, const qrgb888 *src,
quint32 alpha)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = eff_alpha_4(alpha, dest);
const quint32 ia = eff_ialpha_4(alpha, dest);
@@ -4291,8 +4292,8 @@ template <class DST, class SRC>
inline void interpolate_pixel_4(DST *dest, quint8 a,
const SRC *src, quint8 b)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
dest[0] = dest[0].byte_mul(a) + DST(src[0]).byte_mul(b);
dest[1] = dest[1].byte_mul(a) + DST(src[1]).byte_mul(b);
@@ -4303,8 +4304,8 @@ inline void interpolate_pixel_4(DST *dest, quint8 a,
template <class DST, class SRC>
inline void blend_sourceOver_4(DST *dest, const SRC *src)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = alpha_4(src);
if (a == 0xffffffff) {
@@ -4319,8 +4320,8 @@ inline void blend_sourceOver_4(DST *dest, const SRC *src)
template <>
inline void blend_sourceOver_4(qargb8565 *dest, const qargb8565 *src)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = alpha_4(src);
if (a == 0xffffffff) {
@@ -4333,8 +4334,8 @@ inline void blend_sourceOver_4(qargb8565 *dest, const qargb8565 *src)
template <>
inline void blend_sourceOver_4(qargb8555 *dest, const qargb8555 *src)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = alpha_4(src);
if (a == 0xffffffff) {
@@ -4347,8 +4348,8 @@ inline void blend_sourceOver_4(qargb8555 *dest, const qargb8555 *src)
template <>
inline void blend_sourceOver_4(qargb6666 *dest, const qargb6666 *src)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = alpha_4(src);
if (a == 0xffffffff) {
@@ -7720,199 +7721,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;
-enum CPUFeatures {
- None = 0,
- MMX = 0x1,
- MMXEXT = 0x2,
- MMX3DNOW = 0x4,
- MMX3DNOWEXT = 0x8,
- SSE = 0x10,
- SSE2 = 0x20,
- CMOV = 0x40,
- IWMMXT = 0x80,
- NEON = 0x100
-};
-
-static uint detectCPUFeatures()
-{
-#if defined (Q_OS_WINCE)
-#if defined (ARM)
- if (IsProcessorFeaturePresent(PF_ARM_INTEL_WMMX))
- return IWMMXT;
-#elif defined(_X86_)
- uint features = 0;
-#if defined QT_HAVE_MMX
- if (IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE))
- features |= MMX;
-#endif
-#if defined QT_HAVE_3DNOW
- if (IsProcessorFeaturePresent(PF_3DNOW_INSTRUCTIONS_AVAILABLE))
- features |= MMX3DNOW;
-#endif
- return features;
-#endif
- return 0;
-#elif defined(QT_HAVE_IWMMXT)
- // runtime detection only available when running as a previlegied process
- static const bool doIWMMXT = !qgetenv("QT_NO_IWMMXT").toInt();
- return doIWMMXT ? IWMMXT : 0;
-#elif defined(QT_HAVE_NEON)
- static const bool doNEON = !qgetenv("QT_NO_NEON").toInt();
- return doNEON ? NEON : 0;
-#else
- uint features = 0;
-#if defined(__x86_64__) || defined(Q_OS_WIN64)
- features = MMX|SSE|SSE2|CMOV;
-#elif defined(__ia64__)
- features = MMX|SSE|SSE2;
-#elif defined(__i386__) || defined(_M_IX86)
- unsigned int extended_result = 0;
- uint result = 0;
- /* see p. 118 of amd64 instruction set manual Vol3 */
-#if defined(Q_CC_GNU)
- asm ("push %%ebx\n"
- "pushf\n"
- "pop %%eax\n"
- "mov %%eax, %%ebx\n"
- "xor $0x00200000, %%eax\n"
- "push %%eax\n"
- "popf\n"
- "pushf\n"
- "pop %%eax\n"
- "xor %%edx, %%edx\n"
- "xor %%ebx, %%eax\n"
- "jz 1f\n"
-
- "mov $0x00000001, %%eax\n"
- "cpuid\n"
- "1:\n"
- "pop %%ebx\n"
- "mov %%edx, %0\n"
- : "=r" (result)
- :
- : "%eax", "%ecx", "%edx"
- );
-
- asm ("push %%ebx\n"
- "pushf\n"
- "pop %%eax\n"
- "mov %%eax, %%ebx\n"
- "xor $0x00200000, %%eax\n"
- "push %%eax\n"
- "popf\n"
- "pushf\n"
- "pop %%eax\n"
- "xor %%edx, %%edx\n"
- "xor %%ebx, %%eax\n"
- "jz 2f\n"
-
- "mov $0x80000000, %%eax\n"
- "cpuid\n"
- "cmp $0x80000000, %%eax\n"
- "jbe 2f\n"
- "mov $0x80000001, %%eax\n"
- "cpuid\n"
- "2:\n"
- "pop %%ebx\n"
- "mov %%edx, %0\n"
- : "=r" (extended_result)
- :
- : "%eax", "%ecx", "%edx"
- );
-#elif defined (Q_OS_WIN)
- _asm {
- push eax
- push ebx
- push ecx
- push edx
- pushfd
- pop eax
- mov ebx, eax
- xor eax, 00200000h
- push eax
- popfd
- pushfd
- pop eax
- mov edx, 0
- xor eax, ebx
- jz skip
-
- mov eax, 1
- cpuid
- mov result, edx
- skip:
- pop edx
- pop ecx
- pop ebx
- pop eax
- }
-
- _asm {
- push eax
- push ebx
- push ecx
- push edx
- pushfd
- pop eax
- mov ebx, eax
- xor eax, 00200000h
- push eax
- popfd
- pushfd
- pop eax
- mov edx, 0
- xor eax, ebx
- jz skip2
-
- mov eax, 80000000h
- cpuid
- cmp eax, 80000000h
- jbe skip2
- mov eax, 80000001h
- cpuid
- mov extended_result, edx
- skip2:
- pop edx
- pop ecx
- pop ebx
- pop eax
- }
-#endif
-
- // result now contains the standard feature bits
- if (result & (1u << 15))
- features |= CMOV;
- if (result & (1u << 23))
- features |= MMX;
- if (extended_result & (1u << 22))
- features |= MMXEXT;
- if (extended_result & (1u << 31))
- features |= MMX3DNOW;
- if (extended_result & (1u << 30))
- features |= MMX3DNOWEXT;
- if (result & (1u << 25))
- features |= SSE;
- if (result & (1u << 26))
- features |= SSE2;
-#endif // i386
-
- if (qgetenv("QT_NO_MMX").toInt())
- features ^= MMX;
- if (qgetenv("QT_NO_MMXEXT").toInt())
- features ^= MMXEXT;
- if (qgetenv("QT_NO_3DNOW").toInt())
- features ^= MMX3DNOW;
- if (qgetenv("QT_NO_3DNOWEXT").toInt())
- features ^= MMX3DNOWEXT;
- if (qgetenv("QT_NO_SSE").toInt())
- features ^= SSE;
- if (qgetenv("QT_NO_SSE2").toInt())
- features ^= SSE2;
-
- return features;
-#endif
-}
-
#if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6)
// Move these to qdrawhelper_arm.c when all
// functions are implemented using arm assembly.
@@ -8005,10 +7813,7 @@ static void qt_blend_color_argb_armv6(int count, const QSpan *spans, void *userD
void qInitDrawhelperAsm()
{
- static uint features = 0xffffffff;
- if (features != 0xffffffff)
- return;
- features = detectCPUFeatures();
+ const uint features = qDetectCPUFeatures();
qt_memfill32 = qt_memfill_template<quint32, quint32>;
qt_memfill16 = qt_memfill_quint16; //qt_memfill_template<quint16, quint16>;
diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h
index cb0db4f..f5b17ea 100644
--- a/src/gui/painting/qdrawhelper_p.h
+++ b/src/gui/painting/qdrawhelper_p.h
@@ -67,15 +67,6 @@
#include "QtGui/qscreen_qws.h"
#endif
-// Disable MMX and SSE on Mac/PPC builds, or if the compiler
-// does not support -Xarch argument passing
-#if defined(QT_NO_MAC_XARCH) || (defined(Q_OS_DARWIN) && (defined(__ppc__) || defined(__ppc64__)))
-#undef QT_HAVE_SSE2
-#undef QT_HAVE_SSE
-#undef QT_HAVE_3DNOW
-#undef QT_HAVE_MMX
-#endif
-
QT_BEGIN_NAMESPACE
#if defined(Q_CC_MSVC) && _MSCVER <= 1300 && !defined(Q_CC_INTEL)
@@ -1649,7 +1640,7 @@ inline void qt_memconvert(qrgb666 *dest, const quint32 *src, int count)
return;
}
- const int align = (long(dest) & 3);
+ const int align = (quintptr(dest) & 3);
switch (align) {
case 1: *dest++ = qrgb666(*src++); --count;
case 2: *dest++ = qrgb666(*src++); --count;
diff --git a/src/gui/painting/qdrawutil.cpp b/src/gui/painting/qdrawutil.cpp
index 5619a2e..d76c709 100644
--- a/src/gui/painting/qdrawutil.cpp
+++ b/src/gui/painting/qdrawutil.cpp
@@ -1081,7 +1081,7 @@ void qDrawItem(QPainter *p, Qt::GUIStyle gs,
according to the \a margins structure.
*/
-typedef QVarLengthArray<QDrawPixmaps::Data, 16> QDrawPixmapsDataArray;
+typedef QVarLengthArray<QPainter::Fragment, 16> QPixmapFragmentsArray;
/*!
\since 4.6
@@ -1102,12 +1102,12 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin
const QPixmap &pixmap, const QRect &sourceRect,const QMargins &sourceMargins,
const QTileRules &rules, QDrawBorderPixmap::DrawingHints hints)
{
- QDrawPixmaps::Data d;
+ QPainter::Fragment d;
d.opacity = 1.0;
d.rotation = 0.0;
- QDrawPixmapsDataArray opaqueData;
- QDrawPixmapsDataArray translucentData;
+ QPixmapFragmentsArray opaqueData;
+ QPixmapFragmentsArray translucentData;
// source center
const int sourceCenterTop = sourceRect.top() + sourceMargins.top();
@@ -1182,44 +1182,56 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin
// corners
if (targetMargins.top() > 0 && targetMargins.left() > 0 && sourceMargins.top() > 0 && sourceMargins.left() > 0) { // top left
- d.point.setX(0.5 * (xTarget[1] + xTarget[0]));
- d.point.setY(0.5 * (yTarget[1] + yTarget[0]));
- d.source = QRectF(sourceRect.left(), sourceRect.top(), sourceMargins.left(), sourceMargins.top());
- d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.source.width();
- d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.source.height();
+ d.x = (0.5 * (xTarget[1] + xTarget[0]));
+ d.y = (0.5 * (yTarget[1] + yTarget[0]));
+ d.sourceLeft = sourceRect.left();
+ d.sourceTop = sourceRect.top();
+ d.width = sourceMargins.left();
+ d.height = sourceMargins.top();
+ d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width;
+ d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height;
if (hints & QDrawBorderPixmap::OpaqueTopLeft)
opaqueData.append(d);
else
translucentData.append(d);
}
if (targetMargins.top() > 0 && targetMargins.right() > 0 && sourceMargins.top() > 0 && sourceMargins.right() > 0) { // top right
- d.point.setX(0.5 * (xTarget[columns] + xTarget[columns - 1]));
- d.point.setY(0.5 * (yTarget[1] + yTarget[0]));
- d.source = QRectF(sourceCenterRight, sourceRect.top(), sourceMargins.right(), sourceMargins.top());
- d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.source.width();
- d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.source.height();
+ d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1]));
+ d.y = (0.5 * (yTarget[1] + yTarget[0]));
+ d.sourceLeft = sourceCenterRight;
+ d.sourceTop = sourceRect.top();
+ d.width = sourceMargins.right();
+ d.height = sourceMargins.top();
+ d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width;
+ d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height;
if (hints & QDrawBorderPixmap::OpaqueTopRight)
opaqueData.append(d);
else
translucentData.append(d);
}
if (targetMargins.bottom() > 0 && targetMargins.left() > 0 && sourceMargins.bottom() > 0 && sourceMargins.left() > 0) { // bottom left
- d.point.setX(0.5 * (xTarget[1] + xTarget[0]));
- d.point.setY(0.5 * (yTarget[rows] + yTarget[rows - 1]));
- d.source = QRectF(sourceRect.left(), sourceCenterBottom, sourceMargins.left(), sourceMargins.bottom());
- d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.source.width();
- d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.source.height();
+ d.x = (0.5 * (xTarget[1] + xTarget[0]));
+ d.y =(0.5 * (yTarget[rows] + yTarget[rows - 1]));
+ d.sourceLeft = sourceRect.left();
+ d.sourceTop = sourceCenterBottom;
+ d.width = sourceMargins.left();
+ d.height = sourceMargins.bottom();
+ d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width;
+ d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height;
if (hints & QDrawBorderPixmap::OpaqueBottomLeft)
opaqueData.append(d);
else
translucentData.append(d);
}
if (targetMargins.bottom() > 0 && targetMargins.right() > 0 && sourceMargins.bottom() > 0 && sourceMargins.right() > 0) { // bottom right
- d.point.setX(0.5 * (xTarget[columns] + xTarget[columns - 1]));
- d.point.setY(0.5 * (yTarget[rows] + yTarget[rows - 1]));
- d.source = QRectF(sourceCenterRight, sourceCenterBottom, sourceMargins.right(), sourceMargins.bottom());
- d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.source.width();
- d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.source.height();
+ d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1]));
+ d.y = (0.5 * (yTarget[rows] + yTarget[rows - 1]));
+ d.sourceLeft = sourceCenterRight;
+ d.sourceTop = sourceCenterBottom;
+ d.width = sourceMargins.right();
+ d.height = sourceMargins.bottom();
+ d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width;
+ d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height;
if (hints & QDrawBorderPixmap::OpaqueBottomRight)
opaqueData.append(d);
else
@@ -1229,151 +1241,107 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin
// horizontal edges
if (targetCenterWidth > 0 && sourceCenterWidth > 0) {
if (targetMargins.top() > 0 && sourceMargins.top() > 0) { // top
- QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueTop ? opaqueData : translucentData;
- d.source = QRectF(sourceCenterLeft, sourceRect.top(), sourceCenterWidth, sourceMargins.top());
- d.point.setY(0.5 * (yTarget[1] + yTarget[0]));
- d.scaleX = dx / d.source.width();
- d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.source.height();
+ QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueTop ? opaqueData : translucentData;
+ d.sourceLeft = sourceCenterLeft;
+ d.sourceTop = sourceRect.top();
+ d.width = sourceCenterWidth;
+ d.height = sourceMargins.top();
+ d.y = (0.5 * (yTarget[1] + yTarget[0]));
+ d.scaleX = dx / d.width;
+ d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height;
for (int i = 1; i < columns - 1; ++i) {
- d.point.setX(0.5 * (xTarget[i + 1] + xTarget[i]));
+ d.x = (0.5 * (xTarget[i + 1] + xTarget[i]));
data.append(d);
}
if (rules.horizontal == Qt::RepeatTile)
- data[data.size() - 1].source.setWidth((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX);
+ data[data.size() - 1].width = ((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX);
}
if (targetMargins.bottom() > 0 && sourceMargins.bottom() > 0) { // bottom
- QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueBottom ? opaqueData : translucentData;
- d.source = QRectF(sourceCenterLeft, sourceCenterBottom, sourceCenterWidth, sourceMargins.bottom());;
- d.point.setY(0.5 * (yTarget[rows] + yTarget[rows - 1]));
- d.scaleX = dx / d.source.width();
- d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.source.height();
+ QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueBottom ? opaqueData : translucentData;
+ d.sourceLeft = sourceCenterLeft;
+ d.sourceTop = sourceCenterBottom;
+ d.width = sourceCenterWidth;
+ d.height = sourceMargins.bottom();
+ d.y = (0.5 * (yTarget[rows] + yTarget[rows - 1]));
+ d.scaleX = dx / d.width;
+ d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height;
for (int i = 1; i < columns - 1; ++i) {
- d.point.setX(0.5 * (xTarget[i + 1] + xTarget[i]));
+ d.x = (0.5 * (xTarget[i + 1] + xTarget[i]));
data.append(d);
}
if (rules.horizontal == Qt::RepeatTile)
- data[data.size() - 1].source.setWidth((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX);
+ data[data.size() - 1].width = ((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX);
}
}
// vertical edges
if (targetCenterHeight > 0 && sourceCenterHeight > 0) {
if (targetMargins.left() > 0 && sourceMargins.left() > 0) { // left
- QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueLeft ? opaqueData : translucentData;
- d.source = QRectF(sourceRect.left(), sourceCenterTop, sourceMargins.left(), sourceCenterHeight);
- d.point.setX(0.5 * (xTarget[1] + xTarget[0]));
- d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.source.width();
- d.scaleY = dy / d.source.height();
+ QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueLeft ? opaqueData : translucentData;
+ d.sourceLeft = sourceRect.left();
+ d.sourceTop = sourceCenterTop;
+ d.width = sourceMargins.left();
+ d.height = sourceCenterHeight;
+ d.x = (0.5 * (xTarget[1] + xTarget[0]));
+ d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width;
+ d.scaleY = dy / d.height;
for (int i = 1; i < rows - 1; ++i) {
- d.point.setY(0.5 * (yTarget[i + 1] + yTarget[i]));
+ d.y = (0.5 * (yTarget[i + 1] + yTarget[i]));
data.append(d);
}
if (rules.vertical == Qt::RepeatTile)
- data[data.size() - 1].source.setHeight((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY);
+ data[data.size() - 1].height = ((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY);
}
if (targetMargins.right() > 0 && sourceMargins.right() > 0) { // right
- QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueRight ? opaqueData : translucentData;
- d.source = QRectF(sourceCenterRight, sourceCenterTop, sourceMargins.right(), sourceCenterHeight);
- d.point.setX(0.5 * (xTarget[columns] + xTarget[columns - 1]));
- d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.source.width();
- d.scaleY = dy / d.source.height();
+ QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueRight ? opaqueData : translucentData;
+ d.sourceLeft = sourceCenterRight;
+ d.sourceTop = sourceCenterTop;
+ d.width = sourceMargins.right();
+ d.height = sourceCenterHeight;
+ d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1]));
+ d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width;
+ d.scaleY = dy / d.height;
for (int i = 1; i < rows - 1; ++i) {
- d.point.setY(0.5 * (yTarget[i + 1] + yTarget[i]));
+ d.y = (0.5 * (yTarget[i + 1] + yTarget[i]));
data.append(d);
}
if (rules.vertical == Qt::RepeatTile)
- data[data.size() - 1].source.setHeight((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY);
+ data[data.size() - 1].height = ((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY);
}
}
// center
if (targetCenterWidth > 0 && targetCenterHeight > 0 && sourceCenterWidth > 0 && sourceCenterHeight > 0) {
- QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueCenter ? opaqueData : translucentData;
- d.source = QRectF(sourceCenterLeft, sourceCenterTop, sourceCenterWidth, sourceCenterHeight);
- d.scaleX = dx / d.source.width();
- d.scaleY = dy / d.source.height();
+ QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueCenter ? opaqueData : translucentData;
+ d.sourceLeft = sourceCenterLeft;
+ d.sourceTop = sourceCenterTop;
+ d.width = sourceCenterWidth;
+ d.height = sourceCenterHeight;
+ d.scaleX = dx / d.width;
+ d.scaleY = dy / d.height;
qreal repeatWidth = (xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX;
qreal repeatHeight = (yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY;
for (int j = 1; j < rows - 1; ++j) {
- d.point.setY(0.5 * (yTarget[j + 1] + yTarget[j]));
+ d.y = (0.5 * (yTarget[j + 1] + yTarget[j]));
for (int i = 1; i < columns - 1; ++i) {
- d.point.setX(0.5 * (xTarget[i + 1] + xTarget[i]));
+ d.x = (0.5 * (xTarget[i + 1] + xTarget[i]));
data.append(d);
}
if (rules.horizontal == Qt::RepeatTile)
- data[data.size() - 1].source.setWidth(repeatWidth);
+ data[data.size() - 1].width = repeatWidth;
}
if (rules.vertical == Qt::RepeatTile) {
for (int i = 1; i < columns - 1; ++i)
- data[data.size() - i].source.setHeight(repeatHeight);
+ data[data.size() - i].height = repeatHeight;
}
}
if (opaqueData.size())
- qDrawPixmaps(painter, opaqueData.data(), opaqueData.size(), pixmap, QDrawPixmaps::OpaqueHint);
+ painter->drawPixmapFragments(opaqueData.data(), opaqueData.size(), pixmap, QPainter::OpaqueHint);
if (translucentData.size())
- qDrawPixmaps(painter, translucentData.data(), translucentData.size(), pixmap);
-}
-
-/*!
- \class QDrawPixmaps::Data
- \since 4.6
- \internal
-
- This structure is used with the qDrawPixmaps() function.
-
- QPointF point: Specifies the center of the target rectangle.
- QRectF source: Specifies the source rectangle in the pixmap passed into the qDrawPixmaps() call.
- qreal scaleX: Specifies the horizontal scale of the target rectangle.
- qreal scaleY: Specifies the vertical scale of the target rectangle.
- qreal rotation: Specifies the rotation of the target rectangle in degrees.
- The target rectangle is rotated after scaling.
- qreal opacity: Specifies the opacity of the rectangle.
-*/
-
-/*!
- \enum QDrawPixmaps::DrawingHint
- \internal
-*/
-
-/*!
- \internal
- \since 4.6
-
- This function is used to draw \a pixmap, or a sub-rectangle of \a pixmap, at multiple positions
- with different scale, rotation and opacity on \a painter. \a drawingData is an array of \a
- dataCount elements specifying the parameters used to draw each pixmap instance.
- This can be used for example to implement a particle system.
-*/
-void qDrawPixmaps(QPainter *painter, const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints)
-{
- QPaintEngine *engine = painter->paintEngine();
- if (!engine)
- return;
-
- if (engine->isExtended()) {
- static_cast<QPaintEngineEx *>(engine)->drawPixmaps(drawingData, dataCount, pixmap, hints);
- } else {
- qreal oldOpacity = painter->opacity();
- QTransform oldTransform = painter->transform();
-
- for (int i = 0; i < dataCount; ++i) {
- QTransform transform = oldTransform;
- transform.translate(drawingData[i].point.x(), drawingData[i].point.y());
- transform.rotate(drawingData[i].rotation);
- painter->setOpacity(oldOpacity * drawingData[i].opacity);
- painter->setTransform(transform);
-
- qreal w = drawingData[i].scaleX * drawingData[i].source.width();
- qreal h = drawingData[i].scaleY * drawingData[i].source.height();
- painter->drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, drawingData[i].source);
- }
-
- painter->setOpacity(oldOpacity);
- painter->setTransform(oldTransform);
- }
+ painter->drawPixmapFragments(translucentData.data(), translucentData.size(), pixmap);
}
QT_END_NAMESPACE
diff --git a/src/gui/painting/qdrawutil.h b/src/gui/painting/qdrawutil.h
index 2801b2f..31e352f 100644
--- a/src/gui/painting/qdrawutil.h
+++ b/src/gui/painting/qdrawutil.h
@@ -188,31 +188,6 @@ inline void qDrawBorderPixmap(QPainter *painter,
qDrawBorderPixmap(painter, target, margins, pixmap, pixmap.rect(), margins);
}
-// For internal use only.
-namespace QDrawPixmaps
-{
- struct Data
- {
- QPointF point;
- QRectF source;
- qreal scaleX;
- qreal scaleY;
- qreal rotation;
- qreal opacity;
- };
-
- enum DrawingHint
- {
- OpaqueHint = 0x01
- };
-
- Q_DECLARE_FLAGS(DrawingHints, DrawingHint)
-}
-
-// This function is private and may change without notice. Do not use outside Qt!!!
-Q_GUI_EXPORT void qDrawPixmaps(QPainter *painter, const QDrawPixmaps::Data *drawingData,
- int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints = 0);
-
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 60265c5..a7c2a0b 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -3213,6 +3213,9 @@ QRasterPaintEnginePrivate::getPenFunc(const QRectF &rect,
return isUnclipped(rect, penWidth) ? data->unclipped_blend : data->blend;
}
+/*!
+ \reimp
+*/
void QRasterPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
{
ensurePen();
diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp
index 4f2fffa..98762f0 100644
--- a/src/gui/painting/qpaintengineex.cpp
+++ b/src/gui/painting/qpaintengineex.cpp
@@ -893,7 +893,7 @@ void QPaintEngineEx::drawPoints(const QPoint *points, int pointCount)
for (int i=0; i<count; ++i) {
pts[++oset] = points[i].x();
pts[++oset] = points[i].y();
- pts[++oset] = points[i].x() + 1/63;
+ pts[++oset] = points[i].x() + 1/63.;
pts[++oset] = points[i].y();
}
QVectorPath path(pts, count * 2, qpaintengineex_line_types_16, QVectorPath::LinesHint);
@@ -970,23 +970,26 @@ void QPaintEngineEx::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, con
fill(path, brush);
}
-void QPaintEngineEx::drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints /*hints*/)
+void QPaintEngineEx::drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount,
+ const QPixmap &pixmap, QPainter::FragmentHints /*hints*/)
{
qreal oldOpacity = state()->opacity;
QTransform oldTransform = state()->matrix;
- for (int i = 0; i < dataCount; ++i) {
+ for (int i = 0; i < fragmentCount; ++i) {
QTransform transform = oldTransform;
- transform.translate(drawingData[i].point.x(), drawingData[i].point.y());
- transform.rotate(drawingData[i].rotation);
- state()->opacity = oldOpacity * drawingData[i].opacity;
+ transform.translate(fragments[i].x, fragments[i].y);
+ transform.rotate(fragments[i].rotation);
+ state()->opacity = oldOpacity * fragments[i].opacity;
state()->matrix = transform;
opacityChanged();
transformChanged();
- qreal w = drawingData[i].scaleX * drawingData[i].source.width();
- qreal h = drawingData[i].scaleY * drawingData[i].source.height();
- drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, drawingData[i].source);
+ qreal w = fragments[i].scaleX * fragments[i].width;
+ qreal h = fragments[i].scaleY * fragments[i].height;
+ QRectF sourceRect(fragments[i].sourceLeft, fragments[i].sourceTop,
+ fragments[i].width, fragments[i].height);
+ drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, sourceRect);
}
state()->opacity = oldOpacity;
diff --git a/src/gui/painting/qpaintengineex_p.h b/src/gui/painting/qpaintengineex_p.h
index 90c4f9f..2401b94 100644
--- a/src/gui/painting/qpaintengineex_p.h
+++ b/src/gui/painting/qpaintengineex_p.h
@@ -197,7 +197,7 @@ public:
virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);
- virtual void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QFlags<QDrawPixmaps::DrawingHint> hints);
+ virtual void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QFlags<QPainter::FragmentHint> hints);
virtual void updateState(const QPaintEngineState &state);
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 4f532c0..dc96c17 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -5700,6 +5700,61 @@ void QPainter::drawImage(const QRectF &targetRect, const QImage &image, const QR
d->engine->drawImage(QRectF(x, y, w, h), image, QRectF(sx, sy, sw, sh), flags);
}
+
+void qt_draw_glyphs(QPainter *painter, const quint32 *glyphArray, const QPointF *positionArray,
+ int glyphCount)
+{
+ QPainterPrivate *painter_d = QPainterPrivate::get(painter);
+ painter_d->drawGlyphs(glyphArray, positionArray, glyphCount);
+}
+
+void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, const QPointF *positionArray,
+ int glyphCount)
+{
+ updateState(state);
+
+ QFontEngine *fontEngine = state->font.d->engineForScript(QUnicodeTables::Common);
+
+ QVarLengthArray<QFixedPoint, 128> positions;
+ for (int i=0; i<glyphCount; ++i) {
+ QFixedPoint fp = QFixedPoint::fromPointF(positionArray[i]);
+ positions.append(fp);
+ }
+
+ if (extended != 0) {
+ QStaticTextItem staticTextItem;
+ staticTextItem.color = state->pen.color();
+ staticTextItem.font = state->font;
+ staticTextItem.fontEngine = fontEngine;
+ staticTextItem.numGlyphs = glyphCount;
+ staticTextItem.glyphs = reinterpret_cast<glyph_t *>(const_cast<glyph_t *>(glyphArray));
+ staticTextItem.glyphPositions = positions.data();
+
+ extended->drawStaticTextItem(&staticTextItem);
+ } else {
+ QTextItemInt textItem;
+ textItem.f = &state->font;
+ textItem.fontEngine = fontEngine;
+
+ QVarLengthArray<QFixed, 128> advances(glyphCount);
+ QVarLengthArray<QGlyphJustification, 128> glyphJustifications(glyphCount);
+ QVarLengthArray<HB_GlyphAttributes, 128> glyphAttributes(glyphCount);
+ qMemSet(glyphAttributes.data(), 0, glyphAttributes.size() * sizeof(HB_GlyphAttributes));
+ qMemSet(advances.data(), 0, advances.size() * sizeof(QFixed));
+ qMemSet(glyphJustifications.data(), 0, glyphJustifications.size() * sizeof(QGlyphJustification));
+
+ textItem.glyphs.numGlyphs = glyphCount;
+ textItem.glyphs.glyphs = reinterpret_cast<HB_Glyph *>(const_cast<quint32 *>(glyphArray));
+ textItem.glyphs.offsets = positions.data();
+ textItem.glyphs.advances_x = advances.data();
+ textItem.glyphs.advances_y = advances.data();
+ textItem.glyphs.justifications = glyphJustifications.data();
+ textItem.glyphs.attributes = glyphAttributes.data();
+
+ engine->drawTextItem(QPointF(0, 0), textItem);
+ }
+}
+
/*!
\fn void QPainter::drawStaticText(const QPoint &position, const QStaticText &staticText)
@@ -8847,6 +8902,160 @@ QTransform QPainter::combinedTransform() const
return d->state->worldMatrix * d->viewTransform();
}
+/*!
+ \since 4.7
+
+ This function is used to draw \a pixmap, or a sub-rectangle of \a pixmap,
+ at multiple positions with different scale, rotation and opacity. \a
+ fragments is an array of \a fragmentCount elements specifying the
+ parameters used to draw each pixmap fragment. The \a hints
+ parameter can be used to pass in drawing hints.
+
+ This function is potentially faster than multiple calls to drawPixmap(),
+ since the backend can optimize state changes.
+
+ \sa QPainter::Fragment, QPainter::FragmentHint
+*/
+
+void QPainter::drawPixmapFragments(const Fragment *fragments, int fragmentCount,
+ const QPixmap &pixmap, FragmentHints hints)
+{
+ Q_D(QPainter);
+
+ if (!d->engine)
+ return;
+
+ if (d->engine->isExtended()) {
+ d->extended->drawPixmapFragments(fragments, fragmentCount, pixmap, hints);
+ } else {
+ qreal oldOpacity = opacity();
+ QTransform oldTransform = transform();
+
+ for (int i = 0; i < fragmentCount; ++i) {
+ QTransform transform = oldTransform;
+ transform.translate(fragments[i].x, fragments[i].y);
+ transform.rotate(fragments[i].rotation);
+ setOpacity(oldOpacity * fragments[i].opacity);
+ setTransform(transform);
+
+ qreal w = fragments[i].scaleX * fragments[i].width;
+ qreal h = fragments[i].scaleY * fragments[i].height;
+ QRectF sourceRect(fragments[i].sourceLeft, fragments[i].sourceTop,
+ fragments[i].width, fragments[i].height);
+ drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, sourceRect);
+ }
+
+ setOpacity(oldOpacity);
+ setTransform(oldTransform);
+ }
+}
+
+/*!
+ \since 4.7
+ \class QPainter::Fragment
+
+ \brief This class is used in conjunction with the
+ QPainter::drawPixmapFragments() function to specify how a pixmap, or
+ sub-rect of a pixmap, is drawn.
+
+ The \a sourceLeft, \a sourceTop, \a width and \a height variables are used
+ as a source rectangle within the pixmap passed into the
+ QPainter::drawPixmapFragments() function. The variables \a x, \a y, \a
+ width and \a height are used to calculate the target rectangle that is
+ drawn. \a x and \a y denotes the center of the target rectangle. The \a
+ width and \a heigth in the target rectangle is scaled by the \a scaleX and
+ \a scaleY values. The resulting target rectangle is then rotated \a
+ rotation degrees around the \a x, \a y center point.
+
+ \sa QPainter::drawPixmapFragments()
+*/
+
+/*!
+ \since 4.7
+
+ This is a convenience function that returns a QPainter::Fragment that is
+ initialized with the \a pos, \a sourceRect, \a scaleX, \a scaleY, \a
+ rotation, \a opacity parameters.
+*/
+
+QPainter::Fragment QPainter::Fragment::create(const QPointF &pos, const QRectF &sourceRect,
+ qreal scaleX, qreal scaleY, qreal rotation,
+ qreal opacity)
+{
+ Fragment fragment = {pos.x(), pos.y(), sourceRect.x(), sourceRect.y(), sourceRect.width(),
+ sourceRect.height(), scaleX, scaleY, rotation, opacity};
+ return fragment;
+}
+
+/*!
+ \variable QPainter::Fragment::x
+ \brief the x coordinate of center point in the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::y
+ \brief the y coordinate of the center point in the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::sourceLeft
+ \brief the left coordinate of the source rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::sourceTop
+ \brief the top coordinate of the source rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::width
+
+ \brief the width of the source rectangle and is used to calculate the width
+ of the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::height
+
+ \brief the height of the source rectangle and is used to calculate the
+ height of the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::scaleX
+ \brief the horizontal scale of the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::scaleY
+ \brief the vertical scale of the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::rotation
+
+ \brief the rotation of the target rectangle in degrees. The target
+ rectangle is rotated after it has been scaled.
+*/
+
+/*!
+ \variable QPainter::Fragment::opacity
+
+ \brief the opacity of the target rectangle, where 0.0 is fully transparent
+ and 1.0 is fully opaque.
+*/
+
+/*!
+ \since 4.7
+
+ \enum QPainter::FragmentHint
+
+ \value OpaqueHint Indicates that the pixmap fragments to be drawn are
+ opaque. Opaque fragments are potentially faster to draw.
+
+ \sa QPainter::drawPixmapFragments(), QPainter::Fragment
+*/
+
void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivate::DrawOperation operation)
{
p->draw_helper(path, operation);
diff --git a/src/gui/painting/qpainter.h b/src/gui/painting/qpainter.h
index e9fd532..bcb0b50 100644
--- a/src/gui/painting/qpainter.h
+++ b/src/gui/painting/qpainter.h
@@ -99,6 +99,29 @@ public:
Q_DECLARE_FLAGS(RenderHints, RenderHint)
+ class Fragment {
+ public:
+ qreal x;
+ qreal y;
+ qreal sourceLeft;
+ qreal sourceTop;
+ qreal width;
+ qreal height;
+ qreal scaleX;
+ qreal scaleY;
+ qreal rotation;
+ qreal opacity;
+ static Fragment Q_GUI_EXPORT create(const QPointF &pos, const QRectF &sourceRect,
+ qreal scaleX = 1, qreal scaleY = 1,
+ qreal rotation = 0, qreal opacity = 1);
+ };
+
+ enum FragmentHint {
+ OpaqueHint = 0x01
+ };
+
+ Q_DECLARE_FLAGS(FragmentHints, FragmentHint)
+
QPainter();
explicit QPainter(QPaintDevice *);
~QPainter();
@@ -352,6 +375,9 @@ public:
inline void drawPixmap(const QRect &r, const QPixmap &pm);
inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm);
+ void drawPixmapFragments(const Fragment *fragments, int fragmentCount,
+ const QPixmap &pixmap, FragmentHints hints = 0);
+
void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect,
Qt::ImageConversionFlags flags = Qt::AutoColor);
inline void drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect,
diff --git a/src/gui/painting/qpainter_p.h b/src/gui/painting/qpainter_p.h
index 02a91aa..9362dbe 100644
--- a/src/gui/painting/qpainter_p.h
+++ b/src/gui/painting/qpainter_p.h
@@ -228,6 +228,7 @@ public:
void draw_helper(const QPainterPath &path, DrawOperation operation = StrokeAndFillDraw);
void drawStretchedGradient(const QPainterPath &path, DrawOperation operation);
void drawOpaqueBackground(const QPainterPath &path, DrawOperation operation);
+ void drawGlyphs(const quint32 *glyphArray, const QPointF *positionArray, int glyphCount);
void updateMatrix();
void updateInvMatrix();
@@ -238,6 +239,11 @@ public:
void checkEmulation();
+ static QPainterPrivate *get(QPainter *painter)
+ {
+ return painter->d_ptr.data();
+ }
+
QTransform viewTransform() const;
static bool attachPainterPrivate(QPainter *q, QPaintDevice *pdev);
void detachPainterPrivate(QPainter *q);
@@ -252,6 +258,8 @@ public:
};
Q_GUI_EXPORT void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivate::DrawOperation operation);
+Q_GUI_EXPORT void qt_draw_glyphs(QPainter *painter, const quint32 *glyphArray,
+ const QPointF *positionArray, int glyphCount);
QString qt_generate_brush_key(const QBrush &brush);
diff --git a/src/gui/painting/qprintengine_win.cpp b/src/gui/painting/qprintengine_win.cpp
index d029b1e..ea9dc5d 100644
--- a/src/gui/painting/qprintengine_win.cpp
+++ b/src/gui/painting/qprintengine_win.cpp
@@ -368,7 +368,8 @@ void QWin32PrintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem
}
// We only want to convert the glyphs to text if the entire string is compatible with ASCII
- bool convertToText = true;
+ // and if we actually have access to the chars.
+ bool convertToText = ti.chars != 0;
for (int i=0; i < ti.num_chars; ++i) {
if (ti.chars[i].unicode() >= 0x80) {
convertToText = false;
diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm
index 40ee31d..116b03e 100644
--- a/src/gui/styles/qmacstyle_mac.mm
+++ b/src/gui/styles/qmacstyle_mac.mm
@@ -3760,7 +3760,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
QPalette np = tab->palette;
np.setColor(QPalette::WindowText, QColor(255, 255, 255, 75));
QRect nr = subElementRect(SE_TabBarTabText, opt, w);
- nr.moveTop(+1);
+ nr.moveTop(-1);
int alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextHideMnemonic;
proxy()->drawItemText(p, nr, alignment, np, tab->state & State_Enabled,
tab->text, QPalette::WindowText);
diff --git a/src/gui/styles/qstylesheetstyle.cpp b/src/gui/styles/qstylesheetstyle.cpp
index 1f9fc32..bc1bece 100644
--- a/src/gui/styles/qstylesheetstyle.cpp
+++ b/src/gui/styles/qstylesheetstyle.cpp
@@ -5749,6 +5749,13 @@ QRect QStyleSheetStyle::subElementRect(SubElement se, const QStyleOption *opt, c
return positionRect(w, subRule, subRule2, pe, opt->rect, opt->direction);
}
+#ifndef QT_NO_TOOLBAR
+ case SE_ToolBarHandle:
+ if (hasStyleRule(w, PseudoElement_ToolBarHandle))
+ return ParentStyle::subElementRect(se, opt, w);
+ break;
+#endif //QT_NO_TOOLBAR
+
default:
break;
}
diff --git a/src/gui/text/qfont.h b/src/gui/text/qfont.h
index a2fff70..5adf237 100644
--- a/src/gui/text/qfont.h
+++ b/src/gui/text/qfont.h
@@ -291,6 +291,7 @@ private:
friend class QFontMetricsF;
friend class QFontInfo;
friend class QPainter;
+ friend class QPainterPrivate;
friend class QPSPrintEngineFont;
friend class QApplication;
friend class QWidget;
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index c000457..e5975d2 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -587,8 +587,9 @@ QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &t)
{
QImage i = alphaMapForGlyph(glyph);
if (t.type() > QTransform::TxTranslate)
- i = i.transformed(t);
+ i = i.transformed(t).convertToFormat(QImage::Format_Indexed8);
Q_ASSERT(i.depth() <= 8); // To verify that transformed didn't change the format...
+
return i;
}
@@ -597,11 +598,14 @@ QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, int /* margin */, const Q
QImage alphaMask = alphaMapForGlyph(glyph, t);
QImage rgbMask(alphaMask.width(), alphaMask.height(), QImage::Format_RGB32);
+ QVector<QRgb> colorTable = alphaMask.colorTable();
for (int y=0; y<alphaMask.height(); ++y) {
uint *dst = (uint *) rgbMask.scanLine(y);
uchar *src = (uchar *) alphaMask.scanLine(y);
- for (int x=0; x<alphaMask.width(); ++x)
- dst[x] = qRgb(src[x], src[x], src[x]);
+ for (int x=0; x<alphaMask.width(); ++x) {
+ int val = qAlpha(colorTable.at(src[x]));
+ dst[x] = qRgb(val, val, val);
+ }
}
return rgbMask;
diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp
index 1a815d3..55e93bd 100644
--- a/src/gui/text/qfontengine_win.cpp
+++ b/src/gui/text/qfontengine_win.cpp
@@ -208,7 +208,7 @@ void QFontEngineWin::getCMap()
unitsPerEm = otm->otmEMSquare;
x_height = (int)otm->otmsXHeight;
loadKerningPairs(designToDevice);
- _faceId.filename = QString::fromWCharArray((wchar_t *)((char *)otm + (int)otm->otmpFullName)).toLatin1();
+ _faceId.filename = QString::fromWCharArray((wchar_t *)((char *)otm + (quintptr)otm->otmpFullName)).toLatin1();
lineWidth = otm->otmsUnderscoreSize;
fsType = otm->otmfsType;
free(otm);
@@ -1006,8 +1006,8 @@ QFontEngine::Properties QFontEngineWin::properties() const
Properties p;
p.emSquare = unitsPerEm;
p.italicAngle = otm->otmItalicAngle;
- p.postscriptName = QString::fromWCharArray((wchar_t *)((char *)otm + (int)otm->otmpFamilyName)).toLatin1();
- p.postscriptName += QString::fromWCharArray((wchar_t *)((char *)otm + (int)otm->otmpStyleName)).toLatin1();
+ p.postscriptName = QString::fromWCharArray((wchar_t *)((char *)otm + (quintptr)otm->otmpFamilyName)).toLatin1();
+ p.postscriptName += QString::fromWCharArray((wchar_t *)((char *)otm + (quintptr)otm->otmpStyleName)).toLatin1();
#ifndef QT_NO_PRINTER
p.postscriptName = QPdf::stripSpecialCharacters(p.postscriptName);
#endif
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index a7138b9..8fe4c47 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -350,15 +350,13 @@ QStaticTextPrivate::QStaticTextPrivate()
: items(0), itemCount(0), glyphPool(0), positionPool(0), needsClipRect(false),
useBackendOptimizations(false), textFormat(Qt::AutoText)
{
- ref = 1;
}
QStaticTextPrivate::QStaticTextPrivate(const QStaticTextPrivate &other)
: text(other.text), font(other.font), maximumSize(other.maximumSize), matrix(other.matrix),
items(0), itemCount(0), glyphPool(0), positionPool(0), needsClipRect(false),
- useBackendOptimizations(false), textFormat(other.textFormat)
+ useBackendOptimizations(other.useBackendOptimizations), textFormat(other.textFormat)
{
- ref = 1;
}
QStaticTextPrivate::~QStaticTextPrivate()
diff --git a/src/gui/widgets/qabstractslider.cpp b/src/gui/widgets/qabstractslider.cpp
index 4bd7b5a..2888490 100644
--- a/src/gui/widgets/qabstractslider.cpp
+++ b/src/gui/widgets/qabstractslider.cpp
@@ -47,9 +47,6 @@
#ifndef QT_NO_ACCESSIBILITY
#include "qaccessible.h"
#endif
-#ifdef QT_KEYPAD_NAVIGATION
-#include "qtabwidget.h" // Needed in inTabWidget()
-#endif // QT_KEYPAD_NAVIGATION
#include <limits.h>
QT_BEGIN_NAMESPACE
@@ -702,7 +699,7 @@ bool QAbstractSliderPrivate::scrollByDelta(Qt::Orientation orientation, Qt::Keyb
stepsToScroll = qBound(-pageStep, int(offset * pageStep), pageStep);
offset_accumulated = 0;
} else {
- // Calculate how many lines to scroll. Depending on what delta is (and
+ // Calculate how many lines to scroll. Depending on what delta is (and
// offset), we might end up with a fraction (e.g. scroll 1.3 lines). We can
// only scroll whole lines, so we keep the reminder until next event.
qreal stepsToScrollF =
@@ -749,45 +746,7 @@ void QAbstractSlider::wheelEvent(QWheelEvent * e)
}
#endif
-#ifdef QT_KEYPAD_NAVIGATION
-/*!
- \internal
-
- Tells us if it there is currently a reachable widget by keypad navigation in
- a certain \a orientation.
- If no navigation is possible, occuring key events in that \a orientation may
- be used to interact with the value in the focussed widget, even though it
- currently has not the editFocus.
- \sa QWidgetPrivate::widgetInNavigationDirection(), QWidget::hasEditFocus()
-*/
-inline static bool canKeypadNavigate(Qt::Orientation orientation)
-{
- return orientation == Qt::Horizontal?
- (QWidgetPrivate::widgetInNavigationDirection(QWidgetPrivate::DirectionEast)
- || QWidgetPrivate::widgetInNavigationDirection(QWidgetPrivate::DirectionWest))
- :(QWidgetPrivate::widgetInNavigationDirection(QWidgetPrivate::DirectionNorth)
- || QWidgetPrivate::widgetInNavigationDirection(QWidgetPrivate::DirectionSouth));
-}
-/*!
- \internal
-
- Checks, if the \a widget is inside a QTabWidget. If is is inside
- one, left/right key events will be used to switch between tabs in keypad
- navigation. If there is no QTabWidget, the horizontal key events can be used to
- interact with the value in the focussed widget, even though it currently has
- not the editFocus.
-
- \sa QWidget::hasEditFocus()
-*/
-inline static bool inTabWidget(QWidget *widget)
-{
- for (QWidget *tabWidget = widget; tabWidget; tabWidget = tabWidget->parentWidget())
- if (qobject_cast<const QTabWidget*>(tabWidget))
- return true;
- return false;
-}
-#endif // QT_KEYPAD_NAVIGATION
/*!
\reimp
*/
@@ -853,7 +812,8 @@ void QAbstractSlider::keyPressEvent(QKeyEvent *ev)
if (QApplication::keypadNavigationEnabled()
&& (!hasEditFocus() && QApplication::navigationMode() == Qt::NavigationModeKeypadTabOrder
|| d->orientation == Qt::Vertical
- || !hasEditFocus() && (canKeypadNavigate(Qt::Horizontal) || inTabWidget(this)))) {
+ || !hasEditFocus()
+ && (QWidgetPrivate::canKeypadNavigate(Qt::Horizontal) || QWidgetPrivate::inTabWidget(this)))) {
ev->ignore();
return;
}
@@ -872,7 +832,8 @@ void QAbstractSlider::keyPressEvent(QKeyEvent *ev)
if (QApplication::keypadNavigationEnabled()
&& (!hasEditFocus() && QApplication::navigationMode() == Qt::NavigationModeKeypadTabOrder
|| d->orientation == Qt::Vertical
- || !hasEditFocus() && (canKeypadNavigate(Qt::Horizontal) || inTabWidget(this)))) {
+ || !hasEditFocus()
+ && (QWidgetPrivate::canKeypadNavigate(Qt::Horizontal) || QWidgetPrivate::inTabWidget(this)))) {
ev->ignore();
return;
}
@@ -892,7 +853,7 @@ void QAbstractSlider::keyPressEvent(QKeyEvent *ev)
if (QApplication::keypadNavigationEnabled()
&& (QApplication::navigationMode() == Qt::NavigationModeKeypadTabOrder
|| d->orientation == Qt::Horizontal
- || !hasEditFocus() && canKeypadNavigate(Qt::Vertical))) {
+ || !hasEditFocus() && QWidgetPrivate::canKeypadNavigate(Qt::Vertical))) {
ev->ignore();
break;
}
@@ -905,7 +866,7 @@ void QAbstractSlider::keyPressEvent(QKeyEvent *ev)
if (QApplication::keypadNavigationEnabled()
&& (QApplication::navigationMode() == Qt::NavigationModeKeypadTabOrder
|| d->orientation == Qt::Horizontal
- || !hasEditFocus() && canKeypadNavigate(Qt::Vertical))) {
+ || !hasEditFocus() && QWidgetPrivate::canKeypadNavigate(Qt::Vertical))) {
ev->ignore();
break;
}
diff --git a/src/gui/widgets/qdockarealayout.cpp b/src/gui/widgets/qdockarealayout.cpp
index 2b8cf59..c1b1ea3 100644
--- a/src/gui/widgets/qdockarealayout.cpp
+++ b/src/gui/widgets/qdockarealayout.cpp
@@ -2993,8 +2993,7 @@ bool QDockAreaLayout::restoreDockWidget(QDockWidget *dockWidget)
QRect r = constrainedRect(placeHolder->topLevelRect, desktop.screenGeometry(dockWidget));
dockWidget->d_func()->setWindowState(true, true, r);
}
- dockWidget->show();
-// dockWidget->setVisible(!placeHolder->hidden);
+ dockWidget->setVisible(!placeHolder->hidden);
#ifdef Q_WS_X11
if (placeHolder->window) // gets rid of the X11BypassWindowManager window flag
dockWidget->d_func()->setWindowState(true);
diff --git a/src/gui/widgets/qlineedit_p.cpp b/src/gui/widgets/qlineedit_p.cpp
index 1aa7a2b..2c76a5c 100644
--- a/src/gui/widgets/qlineedit_p.cpp
+++ b/src/gui/widgets/qlineedit_p.cpp
@@ -129,7 +129,7 @@ void QLineEditPrivate::_q_editFocusChange(bool e)
void QLineEditPrivate::_q_selectionChanged()
{
Q_Q(QLineEdit);
- if (control->preeditAreaText().isEmpty()) {
+ if (!control->text().isEmpty() && control->preeditAreaText().isEmpty()) {
QStyleOptionFrameV2 opt;
q->initStyleOption(&opt);
bool showCursor = control->hasSelectedText() ?
diff --git a/src/multimedia/audio/qaudioinput.cpp b/src/multimedia/audio/qaudioinput.cpp
index 45cafc1..fd892dd 100644
--- a/src/multimedia/audio/qaudioinput.cpp
+++ b/src/multimedia/audio/qaudioinput.cpp
@@ -190,18 +190,18 @@ QAudioInput::~QAudioInput()
Passing a QIODevice allows the data to be transfered 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
+ state() is set to either QAudio::ActiveState or QAudio::IdleState,
+ error() is set to QAudio::NoError and the stateChanged() signal is emitted.
+
+ If a problem occurs during this process the error() is set to QAudio::OpenError,
+ state() is set to QAudio::StoppedState and stateChanged() signal is emitted.
+
\sa QIODevice
*/
void QAudioInput::start(QIODevice* device)
{
- /*
- -If currently not StoppedState, stop
- -If previous start was push mode, delete internal QIODevice.
- -open audio input.
- If ok, NoError and ActiveState, else OpenError and StoppedState.
- -emit stateChanged()
- */
d->start(device);
}
@@ -210,19 +210,18 @@ void QAudioInput::start(QIODevice* device)
transfer. This QIODevice can be used to read() audio data
directly.
+ If able to access the systems audio device the state() is set to
+ QAudio::IdleState, error() is set to QAudio::NoError
+ and the stateChanged() signal is emitted.
+
+ If a problem occurs during this process the error() is set to QAudio::OpenError,
+ state() is set to QAudio::StoppedState and stateChanged() signal is emitted.
+
\sa QIODevice
*/
QIODevice* QAudioInput::start()
{
- /*
- -If currently not StoppedState, stop
- -If no internal QIODevice, create one.
- -open audio input.
- -If ok, NoError and IdleState, else OpenError and StoppedState
- -emit stateChanged()
- -return internal QIODevice
- */
return d->start(0);
}
@@ -236,17 +235,14 @@ QAudioFormat QAudioInput::format() const
}
/*!
- Stops the audio input.
+ Stops the audio input, detaching from the system resource.
+
+ Sets error() to QAudio::NoError, state() to QAudio::StoppedState and
+ emit stateChanged() signal.
*/
void QAudioInput::stop()
{
- /*
- -If StoppedState, return
- -set to StoppedState
- -detach from audio device
- -emit stateChanged()
- */
d->stop();
}
@@ -256,42 +252,32 @@ void QAudioInput::stop()
void QAudioInput::reset()
{
- /*
- -drop all buffered audio, set buffers to zero.
- -call stop()
- */
d->reset();
}
/*!
Stops processing audio data, preserving buffered audio data.
+
+ Sets error() to QAudio::NoError, state() to QAudio::SuspendedState and
+ emit stateChanged() signal.
*/
void QAudioInput::suspend()
{
- /*
- -If not ActiveState|IdleState, return
- -stop processing audio, saving all buffered audio data
- -set NoError and SuspendedState
- -emit stateChanged()
- */
d->suspend();
}
/*!
Resumes processing audio data after a suspend().
+
+ Sets error() to QAudio::NoError.
+ Sets state() to QAudio::ActiveState if you previously called start(QIODevice*).
+ Sets state() to QAudio::IdleState if you previously called start().
+ emits stateChanged() signal.
*/
void QAudioInput::resume()
{
- /*
- -If SuspendedState, return
- -resume audio
- -(PULL MODE): set ActiveState, NoError
- -(PUSH MODE): set IdleState, NoError
- -kick start audio if needed
- -emit stateChanged()
- */
d->resume();
}
@@ -327,6 +313,9 @@ int QAudioInput::bufferSize() const
/*!
Returns the amount of audio data available to read in bytes.
+
+ NOTE: returned value is only valid while in QAudio::ActiveState or QAudio::IdleState
+ state, otherwise returns zero.
*/
int QAudioInput::bytesReady() const
@@ -352,7 +341,10 @@ int QAudioInput::periodSize() const
/*!
Sets the interval for notify() signal to be emitted.
This is based on the \a ms of audio data processed
- not on actual real-time. The resolution of the timer is platform specific.
+ not on actual real-time.
+ The minimum resolution of the timer is platform specific and values
+ should be checked with notifyInterval() to confirm actual value
+ being used.
*/
void QAudioInput::setNotifyInterval(int ms)
diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp
index 26e46b3..6010f3c 100644
--- a/src/multimedia/audio/qaudioinput_alsa_p.cpp
+++ b/src/multimedia/audio/qaudioinput_alsa_p.cpp
@@ -217,9 +217,11 @@ QIODevice* QAudioInputPrivate::start(QIODevice* device)
//set to pull mode
pullMode = true;
audioSource = device;
+ deviceState = QAudio::ActiveState;
} else {
//set to push mode
pullMode = false;
+ deviceState = QAudio::IdleState;
audioSource = new InputPrivate(this);
audioSource->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
}
@@ -413,7 +415,6 @@ bool QAudioInputPrivate::open()
timer->start(period_time*chunks/2000);
errorState = QAudio::NoError;
- deviceState = QAudio::ActiveState;
totalTimeValue = 0;
@@ -439,7 +440,7 @@ int QAudioInputPrivate::bytesReady() const
if(resuming)
return period_size;
- if(deviceState != QAudio::ActiveState)
+ if(deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState)
return 0;
int frames = snd_pcm_avail_update(handle);
if((int)frames > (int)buffer_frames)
@@ -450,8 +451,8 @@ int QAudioInputPrivate::bytesReady() const
qint64 QAudioInputPrivate::read(char* data, qint64 len)
{
- Q_UNUSED(data)
Q_UNUSED(len)
+
// Read in some audio data and write it to QIODevice, pull mode
if ( !handle )
return 0;
@@ -468,7 +469,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
if (readFrames >= 0) {
err = snd_pcm_frames_to_bytes(handle, readFrames);
#ifdef DEBUG_AUDIO
- qDebug()<<QString::fromLatin1("PULL: read in bytes = %1 (frames=%2)").arg(err).arg(readFrames).toLatin1().constData();
+ qDebug()<<QString::fromLatin1("read in bytes = %1 (frames=%2)").arg(err).arg(readFrames).toLatin1().constData();
#endif
break;
} else if((readFrames == -EAGAIN) || (readFrames == -EINTR)) {
@@ -489,28 +490,46 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
if(err > 0) {
// got some send it onward
#ifdef DEBUG_AUDIO
- qDebug()<<"PULL: frames to write to QIODevice = "<<
+ qDebug()<<"frames to write to QIODevice = "<<
snd_pcm_bytes_to_frames( handle, (int)err )<<" ("<<err<<") bytes";
#endif
- if(deviceState != QAudio::ActiveState)
+ if(deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState)
return 0;
+ if (pullMode) {
+ qint64 l = audioSource->write(audioBuffer,err);
+ if(l < 0) {
+ close();
+ errorState = QAudio::IOError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ } else if(l == 0) {
+ if (deviceState != QAudio::IdleState) {
+ errorState = QAudio::NoError;
+ deviceState = QAudio::IdleState;
+ emit stateChanged(deviceState);
+ }
+ } else {
+ totalTimeValue += err;
+ resuming = false;
+ if (deviceState != QAudio::ActiveState) {
+ errorState = QAudio::NoError;
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
+ }
+ return l;
- qint64 l = audioSource->write(audioBuffer,err);
- if(l < 0) {
- close();
- errorState = QAudio::IOError;
- deviceState = QAudio::StoppedState;
- emit stateChanged(deviceState);
- } else if(l == 0) {
- errorState = QAudio::NoError;
- deviceState = QAudio::IdleState;
} else {
- totalTimeValue += snd_pcm_bytes_to_frames(handle, err)*1000000/settings.frequency();
+ memcpy(data,audioBuffer,err);
+ totalTimeValue += err;
resuming = false;
- errorState = QAudio::NoError;
- deviceState = QAudio::ActiveState;
+ if (deviceState != QAudio::ActiveState) {
+ errorState = QAudio::NoError;
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
+ return err;
}
- return l;
}
return 0;
}
@@ -569,7 +588,7 @@ int QAudioInputPrivate::notifyInterval() const
qint64 QAudioInputPrivate::processedUSecs() const
{
- return totalTimeValue;
+ return qint64(1000000) * totalTimeValue / settings.frequency();
}
void QAudioInputPrivate::suspend()
@@ -617,34 +636,10 @@ bool QAudioInputPrivate::deviceReady()
qint64 QAudioInputPrivate::elapsedUSecs() const
{
- if(!handle)
- return 0;
-
if (deviceState == QAudio::StoppedState)
return 0;
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
- snd_pcm_status_t* status;
- snd_pcm_status_alloca(&status);
-
- snd_timestamp_t t1,t2;
- if( snd_pcm_status(handle, status) >= 0) {
- snd_pcm_status_get_tstamp(status,&t1);
- snd_pcm_status_get_trigger_tstamp(status,&t2);
- t1.tv_sec-=t2.tv_sec;
-
- signed long l = (signed long)t1.tv_usec - (signed long)t2.tv_usec;
- if(l < 0) {
- t1.tv_sec--;
- l = -l;
- l %= 1000000;
- }
- return ((t1.tv_sec * 1000000)+l);
- } else
- return 0;
-#else
return clockStamp.elapsed()*1000;
-#endif
}
void QAudioInputPrivate::reset()
@@ -670,43 +665,7 @@ InputPrivate::~InputPrivate()
qint64 InputPrivate::readData( char* data, qint64 len)
{
- // push mode, user read() called
- if((audioDevice->state() != QAudio::ActiveState) && !audioDevice->resuming)
- return 0;
-
- int readFrames;
- int count=0, err = 0;
-
- while(count < 5) {
- int frames = snd_pcm_bytes_to_frames(audioDevice->handle, len);
- readFrames = snd_pcm_readi(audioDevice->handle, data, frames);
- if (readFrames >= 0) {
- err = snd_pcm_frames_to_bytes(audioDevice->handle, readFrames);
-#ifdef DEBUG_AUDIO
- qDebug()<<QString::fromLatin1("PUSH: read in bytes = %1 (frames=%2)").arg(err).arg(readFrames).toLatin1().constData();
-#endif
- break;
- } else if((readFrames == -EAGAIN) || (readFrames == -EINTR)) {
- audioDevice->errorState = QAudio::IOError;
- err = 0;
- break;
- } else {
- if(readFrames == -EPIPE) {
- audioDevice->errorState = QAudio::UnderrunError;
- err = snd_pcm_prepare(audioDevice->handle);
- } else if(readFrames == -ESTRPIPE) {
- err = snd_pcm_prepare(audioDevice->handle);
- }
- if(err != 0) break;
- }
- count++;
- }
- if(err > 0 && readFrames > 0) {
- audioDevice->totalTimeValue += readFrames*1000/audioDevice->settings.frequency()*1000;
- audioDevice->deviceState = QAudio::ActiveState;
- return err;
- }
- return 0;
+ return audioDevice->read(data,len);
}
qint64 InputPrivate::writeData(const char* data, qint64 len)
diff --git a/src/multimedia/audio/qaudioinput_win32_p.cpp b/src/multimedia/audio/qaudioinput_win32_p.cpp
index cc4fdee..594f6ca 100644
--- a/src/multimedia/audio/qaudioinput_win32_p.cpp
+++ b/src/multimedia/audio/qaudioinput_win32_p.cpp
@@ -192,9 +192,11 @@ QIODevice* QAudioInputPrivate::start(QIODevice* device)
//set to pull mode
pullMode = true;
audioSource = device;
+ deviceState = QAudio::ActiveState;
} else {
//set to push mode
pullMode = false;
+ deviceState = QAudio::IdleState;
audioSource = new InputPrivate(this);
audioSource->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
}
@@ -311,7 +313,6 @@ bool QAudioInputPrivate::open()
elapsedTimeOffset = 0;
totalTimeValue = 0;
errorState = QAudio::NoError;
- deviceState = QAudio::ActiveState;
return true;
}
@@ -320,9 +321,9 @@ void QAudioInputPrivate::close()
if(deviceState == QAudio::StoppedState)
return;
+ deviceState = QAudio::StoppedState;
waveInReset(hWaveIn);
waveInClose(hWaveIn);
- deviceState = QAudio::StoppedState;
int count = 0;
while(!finished && count < 500) {
@@ -357,7 +358,6 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
char* p = data;
qint64 l = 0;
qint64 written = 0;
-
while(!done) {
// Read in some audio data
if(waveBlocks[header].dwBytesRecorded > 0 && waveBlocks[header].dwFlags & WHDR_DONE) {
@@ -378,11 +378,12 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
errorState = QAudio::IOError;
} else {
- totalTimeValue += waveBlocks[header].dwBytesRecorded
- /((settings.channels()*settings.sampleSize()/8))
- *10000/settings.frequency()*100;
+ totalTimeValue += waveBlocks[header].dwBytesRecorded;
errorState = QAudio::NoError;
- deviceState = QAudio::ActiveState;
+ if (deviceState != QAudio::ActiveState) {
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
resuming = false;
}
} else {
@@ -392,16 +393,17 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
#ifdef DEBUG_AUDIO
qDebug()<<"IN: "<<waveBlocks[header].dwBytesRecorded<<", OUT: "<<l;
#endif
- totalTimeValue += waveBlocks[header].dwBytesRecorded
- /((settings.channels()*settings.sampleSize()/8))
- *10000/settings.frequency()*100;
+ totalTimeValue += waveBlocks[header].dwBytesRecorded;
errorState = QAudio::NoError;
- deviceState = QAudio::ActiveState;
+ if (deviceState != QAudio::ActiveState) {
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
resuming = false;
}
} else {
//no data, not ready yet, next time
- return 0;
+ break;
}
waveInUnprepareHeader(hWaveIn,&waveBlocks[header], sizeof(WAVEHDR));
@@ -510,7 +512,13 @@ int QAudioInputPrivate::notifyInterval() const
qint64 QAudioInputPrivate::processedUSecs() const
{
- return totalTimeValue;
+ if (deviceState == QAudio::StoppedState)
+ return 0;
+ qint64 result = qint64(1000000) * totalTimeValue /
+ (settings.channels()*(settings.sampleSize()/8)) /
+ settings.frequency();
+
+ return result;
}
void QAudioInputPrivate::suspend()
@@ -540,6 +548,9 @@ bool QAudioInputPrivate::deviceReady()
QTime now(QTime::currentTime());
qDebug()<<now.second()<<"s "<<now.msec()<<"ms :deviceReady() INPUT";
#endif
+ if(deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState)
+ return true;
+
if(pullMode) {
// reads some audio data and writes it to QIODevice
read(0,0);
@@ -548,8 +559,6 @@ bool QAudioInputPrivate::deviceReady()
InputPrivate* a = qobject_cast<InputPrivate*>(audioSource);
a->trigger();
}
- if(deviceState != QAudio::ActiveState)
- return true;
if((timeStamp.elapsed() + elapsedTimeOffset) > intervalTime) {
emit notify();
@@ -582,7 +591,8 @@ InputPrivate::~InputPrivate() {}
qint64 InputPrivate::readData( char* data, qint64 len)
{
// push mode, user read() called
- if(audioDevice->deviceState != QAudio::ActiveState)
+ if(audioDevice->deviceState != QAudio::ActiveState &&
+ audioDevice->deviceState != QAudio::IdleState)
return 0;
// Read in some audio data
return audioDevice->read(data,len);
diff --git a/src/multimedia/audio/qaudiooutput.cpp b/src/multimedia/audio/qaudiooutput.cpp
index afd8a84..b0b5244 100644
--- a/src/multimedia/audio/qaudiooutput.cpp
+++ b/src/multimedia/audio/qaudiooutput.cpp
@@ -202,18 +202,18 @@ QAudioFormat QAudioOutput::format() const
Passing a QIODevice allows the data to be transfered 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
+ state() is set to QAudio::ActiveState, error() is set to QAudio::NoError
+ and the stateChanged() signal is emitted.
+
+ If a problem occurs during this process the error() is set to QAudio::OpenError,
+ state() is set to QAudio::StoppedState and stateChanged() signal is emitted.
+
\sa QIODevice
*/
void QAudioOutput::start(QIODevice* device)
{
- /*
- -If currently not StoppedState, stop.
- -If previous start was push mode, delete internal QIODevice.
- -open audio output.
- -If ok, NoError and ActiveState, else OpenError and StoppedState
- -emit stateChanged()
- */
d->start(device);
}
@@ -221,34 +221,30 @@ void QAudioOutput::start(QIODevice* device)
Returns a pointer to the QIODevice being used to handle the data
transfer. This QIODevice can be used to write() audio data directly.
+ If able to access the systems audio device the state() is set to
+ QAudio::IdleState, error() is set to QAudio::NoError
+ and the stateChanged() signal is emitted.
+
+ If a problem occurs during this process the error() is set to QAudio::OpenError,
+ state() is set to QAudio::StoppedState and stateChanged() signal is emitted.
+
\sa QIODevice
*/
QIODevice* QAudioOutput::start()
{
- /*
- -If currently not StoppedState, stop.
- -If no internal QIODevice, create one.
- -open audio output.
- -If ok, NoError and IdleState, else OpenError and StoppedState
- -emit stateChanged()
- -return internal QIODevice
- */
return d->start(0);
}
/*!
- Stops the audio output.
+ Stops the audio output, detaching from the system resource.
+
+ Sets error() to QAudio::NoError, state() to QAudio::StoppedState and
+ emit stateChanged() signal.
*/
void QAudioOutput::stop()
{
- /*
- -If StoppedState, return
- -set to StoppedState
- -detach from audio device
- -emit stateChanged()
- */
d->stop();
}
@@ -258,55 +254,44 @@ void QAudioOutput::stop()
void QAudioOutput::reset()
{
- /*
- -drop all buffered audio, set buffers to zero.
- -call stop()
- */
d->reset();
}
/*!
Stops processing audio data, preserving buffered audio data.
+
+ Sets error() to QAudio::NoError, state() to QAudio::SuspendedState and
+ emit stateChanged() signal.
*/
void QAudioOutput::suspend()
{
- /*
- -If not ActiveState|IdleState, return
- -stop processing audio, saving all buffered audio data
- -set NoError and SuspendedState
- -emit stateChanged()
- */
d->suspend();
}
/*!
Resumes processing audio data after a suspend().
+
+ Sets error() to QAudio::NoError.
+ Sets state() to QAudio::ActiveState if you previously called start(QIODevice*).
+ Sets state() to QAudio::IdleState if you previously called start().
+ emits stateChanged() signal.
*/
void QAudioOutput::resume()
{
- /*
- -If SuspendedState, return
- -resume audio
- -(PULL MODE): set ActiveState, NoError
- -(PUSH MODE): set IdleState, NoError
- -kick start audio if needed
- -emit stateChanged()
- */
d->resume();
}
/*!
Returns the free space available in bytes in the audio buffer.
+
+ NOTE: returned value is only valid while in QAudio::ActiveState or QAudio::IdleState
+ state, otherwise returns zero.
*/
int QAudioOutput::bytesFree() const
{
- /*
- -If not ActiveState|IdleState, return 0
- -return space available in audio buffer in bytes
- */
return d->bytesFree();
}
@@ -353,7 +338,10 @@ int QAudioOutput::bufferSize() const
/*!
Sets the interval for notify() signal to be emitted.
This is based on the \a ms of audio data processed
- not on actual real-time. The resolution of the timer is platform specific.
+ not on actual real-time.
+ The minimum resolution of the timer is platform specific and values
+ should be checked with notifyInterval() to confirm actual value
+ being used.
*/
void QAudioOutput::setNotifyInterval(int ms)
diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.cpp b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
index 7b89cef..b127103 100644
--- a/src/multimedia/audio/qaudiooutput_alsa_p.cpp
+++ b/src/multimedia/audio/qaudiooutput_alsa_p.cpp
@@ -259,6 +259,7 @@ void QAudioOutputPrivate::stop()
{
if(deviceState == QAudio::StoppedState)
return;
+ errorState = QAudio::NoError;
deviceState = QAudio::StoppedState;
close();
emit stateChanged(deviceState);
@@ -494,10 +495,13 @@ qint64 QAudioOutputPrivate::write( const char *data, qint64 len )
err = snd_pcm_writei( handle, data, frames );
}
if(err > 0) {
- totalTimeValue += err*1000000/settings.frequency();
+ totalTimeValue += err;
resuming = false;
errorState = QAudio::NoError;
- deviceState = QAudio::ActiveState;
+ if (deviceState != QAudio::ActiveState) {
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
return snd_pcm_frames_to_bytes( handle, err );
} else
err = xrun_recovery(err);
@@ -542,7 +546,7 @@ int QAudioOutputPrivate::notifyInterval() const
qint64 QAudioOutputPrivate::processedUSecs() const
{
- return totalTimeValue;
+ return qint64(1000000) * totalTimeValue / settings.frequency();
}
void QAudioOutputPrivate::resume()
@@ -562,10 +566,8 @@ void QAudioOutputPrivate::resume()
bytesAvailable = (int)snd_pcm_frames_to_bytes(handle, buffer_frames);
}
resuming = true;
- if(pullMode)
- deviceState = QAudio::ActiveState;
- else
- deviceState = QAudio::IdleState;
+
+ deviceState = QAudio::ActiveState;
errorState = QAudio::NoError;
timer->start(period_time/1000);
@@ -637,7 +639,9 @@ bool QAudioOutputPrivate::deviceReady()
// Got some data to output
if(deviceState != QAudio::ActiveState)
return true;
- write(audioBuffer,l);
+ qint64 bytesWritten = write(audioBuffer,l);
+ if (bytesWritten != l)
+ audioSource->seek(audioSource->pos()-(l-bytesWritten));
bytesAvailable = bytesFree();
} else if(l == 0) {
@@ -645,9 +649,11 @@ bool QAudioOutputPrivate::deviceReady()
bytesAvailable = bytesFree();
if(bytesAvailable > snd_pcm_frames_to_bytes(handle, buffer_frames-period_frames)) {
// Underrun
- errorState = QAudio::UnderrunError;
- deviceState = QAudio::IdleState;
- emit stateChanged(deviceState);
+ if (deviceState != QAudio::IdleState) {
+ errorState = QAudio::UnderrunError;
+ deviceState = QAudio::IdleState;
+ emit stateChanged(deviceState);
+ }
}
} else if(l < 0) {
@@ -655,8 +661,17 @@ bool QAudioOutputPrivate::deviceReady()
errorState = QAudio::IOError;
emit stateChanged(deviceState);
}
- } else
+ } else {
bytesAvailable = bytesFree();
+ if(bytesAvailable > snd_pcm_frames_to_bytes(handle, buffer_frames-period_frames)) {
+ // Underrun
+ if (deviceState != QAudio::IdleState) {
+ errorState = QAudio::UnderrunError;
+ deviceState = QAudio::IdleState;
+ emit stateChanged(deviceState);
+ }
+ }
+ }
if(deviceState != QAudio::ActiveState)
return true;
@@ -671,35 +686,10 @@ bool QAudioOutputPrivate::deviceReady()
qint64 QAudioOutputPrivate::elapsedUSecs() const
{
- if(!handle)
- return 0;
-
if (deviceState == QAudio::StoppedState)
return 0;
-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
- snd_pcm_status_t* status;
- snd_pcm_status_alloca(&status);
-
- snd_timestamp_t t1,t2;
- if( snd_pcm_status(handle, status) >= 0) {
- snd_pcm_status_get_tstamp(status,&t1);
- snd_pcm_status_get_trigger_tstamp(status,&t2);
- t1.tv_sec-=t2.tv_sec;
-
- signed long l = (signed long)t1.tv_usec - (signed long)t2.tv_usec;
- if(l < 0) {
- t1.tv_sec--;
- l = -l;
- l %= 1000000;
- }
- return ((t1.tv_sec * 1000000)+l);
- } else
- return 0;
-#else
return clockStamp.elapsed()*1000;
-#endif
- return 0;
}
void QAudioOutputPrivate::reset()
diff --git a/src/multimedia/audio/qaudiooutput_win32_p.cpp b/src/multimedia/audio/qaudiooutput_win32_p.cpp
index bce45c1..6200160 100644
--- a/src/multimedia/audio/qaudiooutput_win32_p.cpp
+++ b/src/multimedia/audio/qaudiooutput_win32_p.cpp
@@ -211,6 +211,13 @@ bool QAudioOutputPrivate::open()
QTime now(QTime::currentTime());
qDebug()<<now.second()<<"s "<<now.msec()<<"ms :open()";
#endif
+ if (!(settings.frequency() >= 8000 && settings.frequency() <= 48000)) {
+ errorState = QAudio::OpenError;
+ deviceState = QAudio::StoppedState;
+ emit stateChanged(deviceState);
+ qWarning("QAudioOutput: open error, frequency out of range.");
+ return false;
+ }
if(buffer_size == 0) {
// Default buffer size, 200ms, default period size is 40ms
buffer_size = settings.frequency()*settings.channels()*(settings.sampleSize()/8)*0.2;
@@ -289,6 +296,7 @@ void QAudioOutputPrivate::close()
return;
deviceState = QAudio::StoppedState;
+ errorState = QAudio::NoError;
int delay = (buffer_size-bytesFree())*1000/(settings.frequency()
*settings.channels()*(settings.sampleSize()/8));
waveOutReset(hWaveOut);
@@ -340,12 +348,20 @@ int QAudioOutputPrivate::notifyInterval() const
qint64 QAudioOutputPrivate::processedUSecs() const
{
- return totalTimeValue;
+ if (deviceState == QAudio::StoppedState)
+ return 0;
+ qint64 result = qint64(1000000) * totalTimeValue /
+ (settings.channels()*(settings.sampleSize()/8)) /
+ settings.frequency();
+
+ return result;
}
qint64 QAudioOutputPrivate::write( const char *data, qint64 len )
{
// Write out some audio data
+ if (deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState)
+ return 0;
char* p = (char*)data;
int l = (int)len;
@@ -385,13 +401,16 @@ qint64 QAudioOutputPrivate::write( const char *data, qint64 len )
current->dwBufferLength,waveFreeBlockCount);
LeaveCriticalSection(&waveOutCriticalSection);
#endif
- totalTimeValue += current->dwBufferLength
- /(settings.channels()*(settings.sampleSize()/8))
- *1000000/settings.frequency();;
+ totalTimeValue += current->dwBufferLength;
waveCurrentBlock++;
waveCurrentBlock %= buffer_size/period_size;
current = &waveBlocks[waveCurrentBlock];
current->dwUser = 0;
+ errorState = QAudio::NoError;
+ if (deviceState != QAudio::ActiveState) {
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
}
return (len-l);
}
@@ -409,8 +428,11 @@ void QAudioOutputPrivate::resume()
void QAudioOutputPrivate::suspend()
{
- if(deviceState == QAudio::ActiveState) {
+ if(deviceState == QAudio::ActiveState || deviceState == QAudio::IdleState) {
+ int delay = (buffer_size-bytesFree())*1000/(settings.frequency()
+ *settings.channels()*(settings.sampleSize()/8));
waveOutPause(hWaveOut);
+ Sleep(delay+10);
deviceState = QAudio::SuspendedState;
errorState = QAudio::NoError;
emit stateChanged(deviceState);
@@ -465,8 +487,16 @@ bool QAudioOutputPrivate::deviceReady()
int l = audioSource->read(audioBuffer,input);
if(l > 0) {
int out= write(audioBuffer,l);
- if(out > 0)
- deviceState = QAudio::ActiveState;
+ if(out > 0) {
+ if (deviceState != QAudio::ActiveState) {
+ deviceState = QAudio::ActiveState;
+ emit stateChanged(deviceState);
+ }
+ }
+ if ( out < l) {
+ // Didnt write all data
+ audioSource->seek(audioSource->pos()-(l-out));
+ }
if(startup)
waveOutRestart(hWaveOut);
} else if(l == 0) {
@@ -478,16 +508,28 @@ bool QAudioOutputPrivate::deviceReady()
LeaveCriticalSection(&waveOutCriticalSection);
if(check == buffer_size/period_size) {
errorState = QAudio::UnderrunError;
- deviceState = QAudio::IdleState;
- emit stateChanged(deviceState);
+ if (deviceState != QAudio::IdleState) {
+ deviceState = QAudio::IdleState;
+ emit stateChanged(deviceState);
+ }
}
} else if(l < 0) {
bytesAvailable = bytesFree();
errorState = QAudio::IOError;
}
+ } else {
+ int buffered;
+ EnterCriticalSection(&waveOutCriticalSection);
+ buffered = waveFreeBlockCount;
+ LeaveCriticalSection(&waveOutCriticalSection);
+ errorState = QAudio::UnderrunError;
+ if (buffered >= buffer_size/period_size && deviceState == QAudio::ActiveState) {
+ deviceState = QAudio::IdleState;
+ emit stateChanged(deviceState);
+ }
}
- if(deviceState != QAudio::ActiveState)
+ if(deviceState != QAudio::ActiveState && deviceState != QAudio::IdleState)
return true;
if((timeStamp.elapsed() + elapsedTimeOffset) > intervalTime) {
diff --git a/src/multimedia/base/qgraphicsvideoitem.cpp b/src/multimedia/base/qgraphicsvideoitem.cpp
index 21ba8c9..d5ca9e8 100644
--- a/src/multimedia/base/qgraphicsvideoitem.cpp
+++ b/src/multimedia/base/qgraphicsvideoitem.cpp
@@ -177,9 +177,10 @@ void QGraphicsVideoItemPrivate::_q_mediaObjectDestroyed()
/*!
\class QGraphicsVideoItem
-
\brief The QGraphicsVideoItem class provides a graphics item which display video produced by a QMediaObject.
+ \since 4.7
+
\ingroup multimedia
Attaching a QGraphicsVideoItem to a QMediaObject allows it to display
diff --git a/src/multimedia/base/qmediacontent.cpp b/src/multimedia/base/qmediacontent.cpp
index fd519c6..b6bf56b 100644
--- a/src/multimedia/base/qmediacontent.cpp
+++ b/src/multimedia/base/qmediacontent.cpp
@@ -76,6 +76,7 @@ private:
\class QMediaContent
\preliminary
\brief The QMediaContent class provides access to the resources relating to a media content.
+ \since 4.7
\ingroup multimedia
@@ -206,6 +207,15 @@ QUrl QMediaContent::canonicalUrl() const
}
/*!
+ Returns a QNetworkRequest that represents that canonical resource for this media content.
+*/
+
+QNetworkRequest QMediaContent::canonicalRequest() const
+{
+ return canonicalResource().request();
+}
+
+/*!
Returns a QMediaResource that represents that canonical resource for this media content.
*/
diff --git a/src/multimedia/base/qmediacontent.h b/src/multimedia/base/qmediacontent.h
index b6f3017..5a279c1 100644
--- a/src/multimedia/base/qmediacontent.h
+++ b/src/multimedia/base/qmediacontent.h
@@ -75,6 +75,7 @@ public:
bool isNull() const;
QUrl canonicalUrl() const;
+ QNetworkRequest canonicalRequest() const;
QMediaResource canonicalResource() const;
QMediaResourceList resources() const;
diff --git a/src/multimedia/base/qmediacontrol.cpp b/src/multimedia/base/qmediacontrol.cpp
index c8bbfd4..b84c49e 100644
--- a/src/multimedia/base/qmediacontrol.cpp
+++ b/src/multimedia/base/qmediacontrol.cpp
@@ -52,6 +52,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaControl
\ingroup multimedia-serv
+ \since 4.7
\preliminary
\brief The QMediaControl class provides a base interface for media service controls.
diff --git a/src/multimedia/base/qmediaobject.cpp b/src/multimedia/base/qmediaobject.cpp
index b2b8c1b..0422718 100644
--- a/src/multimedia/base/qmediaobject.cpp
+++ b/src/multimedia/base/qmediaobject.cpp
@@ -67,6 +67,7 @@ void QMediaObjectPrivate::_q_notify()
\class QMediaObject
\preliminary
\brief The QMediaObject class provides a common base for multimedia objects.
+ \since 4.7
\ingroup multimedia
diff --git a/src/multimedia/base/qmediaplaylist.cpp b/src/multimedia/base/qmediaplaylist.cpp
index ab91fd7..b3f3dd3 100644
--- a/src/multimedia/base/qmediaplaylist.cpp
+++ b/src/multimedia/base/qmediaplaylist.cpp
@@ -66,6 +66,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(QMediaPluginLoader, playlistIOLoader,
/*!
\class QMediaPlaylist
\ingroup multimedia
+ \since 4.7
\preliminary
\brief The QMediaPlaylist class provides a list of media content to play.
diff --git a/src/multimedia/base/qmediaplaylistcontrol.cpp b/src/multimedia/base/qmediaplaylistcontrol.cpp
index 2ae03ad..ba3d224 100644
--- a/src/multimedia/base/qmediaplaylistcontrol.cpp
+++ b/src/multimedia/base/qmediaplaylistcontrol.cpp
@@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlaylistControl
\ingroup multimedia-serv
+ \since 4.7
\preliminary
\brief The QMediaPlaylistControl class provides access to the playlist functionality of a
diff --git a/src/multimedia/base/qmediaplaylistioplugin.cpp b/src/multimedia/base/qmediaplaylistioplugin.cpp
index 5f11e38..48fd721 100644
--- a/src/multimedia/base/qmediaplaylistioplugin.cpp
+++ b/src/multimedia/base/qmediaplaylistioplugin.cpp
@@ -46,6 +46,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlaylistReader
\preliminary
+ \since 4.7
\brief The QMediaPlaylistReader class provides an interface for reading a playlist file.
\sa QMediaPlaylistIOPlugin
@@ -83,6 +84,7 @@ QMediaPlaylistReader::~QMediaPlaylistReader()
/*!
\class QMediaPlaylistWriter
\preliminary
+ \since 4.7
\brief The QMediaPlaylistWriter class provides an interface for writing a playlist file.
\sa QMediaPlaylistIOPlugin
@@ -111,6 +113,7 @@ QMediaPlaylistWriter::~QMediaPlaylistWriter()
/*!
\class QMediaPlaylistIOPlugin
+ \since 4.7
\brief The QMediaPlaylistIOPlugin class provides an interface for media playlist I/O plug-ins.
*/
diff --git a/src/multimedia/base/qmediaplaylistnavigator.cpp b/src/multimedia/base/qmediaplaylistnavigator.cpp
index 3c22ea4..0c52c71 100644
--- a/src/multimedia/base/qmediaplaylistnavigator.cpp
+++ b/src/multimedia/base/qmediaplaylistnavigator.cpp
@@ -193,6 +193,7 @@ int QMediaPlaylistNavigatorPrivate::previousItemPos(int steps) const
/*!
\class QMediaPlaylistNavigator
\preliminary
+ \since 4.7
\brief The QMediaPlaylistNavigator class provides navigation for a media playlist.
\sa QMediaPlaylist, QMediaPlaylistProvider
diff --git a/src/multimedia/base/qmediaplaylistprovider.cpp b/src/multimedia/base/qmediaplaylistprovider.cpp
index 65105dc..942f155 100644
--- a/src/multimedia/base/qmediaplaylistprovider.cpp
+++ b/src/multimedia/base/qmediaplaylistprovider.cpp
@@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlaylistProvider
\preliminary
+ \since 4.7
\brief The QMediaPlaylistProvider class provides an abstract list of media.
\sa QMediaPlaylist
diff --git a/src/multimedia/base/qmediaresource.cpp b/src/multimedia/base/qmediaresource.cpp
index 515e432..646d9a7 100644
--- a/src/multimedia/base/qmediaresource.cpp
+++ b/src/multimedia/base/qmediaresource.cpp
@@ -51,6 +51,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaResource
\preliminary
+ \since 4.7
\brief The QMediaResource class provides a description of a media resource.
\ingroup multimedia
diff --git a/src/multimedia/base/qmediaservice.cpp b/src/multimedia/base/qmediaservice.cpp
index e40688e..d9e980b 100644
--- a/src/multimedia/base/qmediaservice.cpp
+++ b/src/multimedia/base/qmediaservice.cpp
@@ -57,6 +57,7 @@ QT_MODULE(Multimedia)
service implementations.
\ingroup multimedia-serv
\preliminary
+ \since 4.7
Media services provide implementations of the functionality promised
by media objects, and allow multiple providers to implement a QMediaObject.
diff --git a/src/multimedia/base/qmediaserviceprovider.cpp b/src/multimedia/base/qmediaserviceprovider.cpp
index 02c9b29..eb6505c 100644
--- a/src/multimedia/base/qmediaserviceprovider.cpp
+++ b/src/multimedia/base/qmediaserviceprovider.cpp
@@ -82,6 +82,7 @@ public:
/*!
\class QMediaServiceProviderHint
\preliminary
+ \since 4.7
\brief The QMediaServiceProviderHint class describes what is required of a QMediaService.
\ingroup multimedia-serv
@@ -489,6 +490,7 @@ Q_GLOBAL_STATIC(QPluginServiceProvider, pluginProvider);
/*!
\class QMediaServiceProvider
\preliminary
+ \since 4.7
\brief The QMediaServiceProvider class provides an abstract allocator for media services.
*/
@@ -597,6 +599,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
/*!
\class QMediaServiceProviderPlugin
\preliminary
+ \since 4.7
\brief The QMediaServiceProviderPlugin class interface provides an interface for QMediaService
plug-ins.
@@ -630,6 +633,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
\class QMediaServiceSupportedFormatsInterface
\brief The QMediaServiceSupportedFormatsInterface class interface
identifies if a media service plug-in supports a media format.
+ \since 4.7
A QMediaServiceProviderPlugin may implement this interface.
*/
@@ -656,6 +660,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
\class QMediaServiceSupportedDevicesInterface
\brief The QMediaServiceSupportedDevicesInterface class interface
identifies the devices supported by a media service plug-in.
+ \since 4.7
A QMediaServiceProviderPlugin may implement this interface.
*/
@@ -682,6 +687,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
\class QMediaServiceFeaturesInterface
\brief The QMediaServiceFeaturesInterface class interface identifies
features supported by a media service plug-in.
+ \since 4.7
A QMediaServiceProviderPlugin may implement this interface.
*/
diff --git a/src/multimedia/base/qmediatimerange.cpp b/src/multimedia/base/qmediatimerange.cpp
index 0ca1948..e1cea7e 100644
--- a/src/multimedia/base/qmediatimerange.cpp
+++ b/src/multimedia/base/qmediatimerange.cpp
@@ -48,6 +48,7 @@ QT_BEGIN_NAMESPACE
\class QMediaTimeInterval
\brief The QMediaTimeInterval class represents a time interval with integer precision.
\ingroup multimedia
+ \since 4.7
An interval is specified by an inclusive start() and end() time.
These must be set in the constructor, as this is an immutable class.
@@ -308,6 +309,7 @@ void QMediaTimeRangePrivate::removeInterval(const QMediaTimeInterval &interval)
\brief The QMediaTimeRange class represents a set of zero or more disjoint
time intervals.
\ingroup multimedia
+ \since 4.7
\reentrant
diff --git a/src/multimedia/base/qmetadatacontrol.cpp b/src/multimedia/base/qmetadatacontrol.cpp
index 3ecbe8d..28a82ec 100644
--- a/src/multimedia/base/qmetadatacontrol.cpp
+++ b/src/multimedia/base/qmetadatacontrol.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMetaDataControl
\ingroup multimedia-serv
-
+ \since 4.7
\preliminary
\brief The QMetaDataControl class provides access to the meta-data of a
QMediaService's media.
diff --git a/src/multimedia/base/qvideodevicecontrol.cpp b/src/multimedia/base/qvideodevicecontrol.cpp
index 21db500..c0fe9a8 100644
--- a/src/multimedia/base/qvideodevicecontrol.cpp
+++ b/src/multimedia/base/qvideodevicecontrol.cpp
@@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoDeviceControl
\preliminary
+ \since 4.7
\brief The QVideoDeviceControl class provides an video device selector media control.
\ingroup multimedia-serv
diff --git a/src/multimedia/base/qvideooutputcontrol.cpp b/src/multimedia/base/qvideooutputcontrol.cpp
index a904385..58f1527 100644
--- a/src/multimedia/base/qvideooutputcontrol.cpp
+++ b/src/multimedia/base/qvideooutputcontrol.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoOutputControl
\preliminary
-
+ \since 4.7
\brief The QVideoOutputControl class provides a means of selecting the
active video output control.
diff --git a/src/multimedia/base/qvideorenderercontrol.cpp b/src/multimedia/base/qvideorenderercontrol.cpp
index 4e7b3da..a34ef9b 100644
--- a/src/multimedia/base/qvideorenderercontrol.cpp
+++ b/src/multimedia/base/qvideorenderercontrol.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoRendererControl
\preliminary
-
+ \since 4.7
\brief The QVideoRendererControl class provides a control for rendering
to a video surface.
diff --git a/src/multimedia/base/qvideowidget.cpp b/src/multimedia/base/qvideowidget.cpp
index 5df245e..aabfefc 100644
--- a/src/multimedia/base/qvideowidget.cpp
+++ b/src/multimedia/base/qvideowidget.cpp
@@ -488,7 +488,7 @@ void QVideoWidgetPrivate::_q_dimensionsChanged()
/*!
\class QVideoWidget
\preliminary
-
+ \since 4.7
\brief The QVideoWidget class provides a widget which presents video
produced by a media object.
\ingroup multimedia
diff --git a/src/multimedia/base/qvideowidgetcontrol.cpp b/src/multimedia/base/qvideowidgetcontrol.cpp
index bd7ce4e..c53c77b 100644
--- a/src/multimedia/base/qvideowidgetcontrol.cpp
+++ b/src/multimedia/base/qvideowidgetcontrol.cpp
@@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoWidgetControl
\preliminary
-
+ \since 4.7
\brief The QVideoWidgetControl class provides a media control which
implements a video widget.
diff --git a/src/multimedia/base/qvideowindowcontrol.cpp b/src/multimedia/base/qvideowindowcontrol.cpp
index a23cb4b..da46823 100644
--- a/src/multimedia/base/qvideowindowcontrol.cpp
+++ b/src/multimedia/base/qvideowindowcontrol.cpp
@@ -47,6 +47,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoWindowControl
\preliminary
+ \since 4.7
\ingroup multimedia-serv
\brief The QVideoWindowControl class provides a media control for rendering video to a window.
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index ca34993..27bff02 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -66,7 +66,7 @@ QT_MODULE(Multimedia)
\class QMediaPlayer
\brief The QMediaPlayer class allows the playing of a media source.
\ingroup multimedia
-
+ \since 4.7
\preliminary
The QMediaPlayer class is a high level media playback class. It can be used
diff --git a/src/multimedia/playback/qmediaplayercontrol.cpp b/src/multimedia/playback/qmediaplayercontrol.cpp
index 95ffade..2129098 100644
--- a/src/multimedia/playback/qmediaplayercontrol.cpp
+++ b/src/multimedia/playback/qmediaplayercontrol.cpp
@@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlayerControl
\ingroup multimedia-serv
-
+ \since 4.7
\preliminary
\brief The QMediaPlayerControl class provides access to the media playing
functionality of a QMediaService.
diff --git a/src/multimedia/qml/multimediadeclarative.cpp b/src/multimedia/qml/multimediadeclarative.cpp
index 086250a..7f5298f 100644
--- a/src/multimedia/qml/multimediadeclarative.cpp
+++ b/src/multimedia/qml/multimediadeclarative.cpp
@@ -55,14 +55,13 @@ namespace QtMultimedia
\internal
*/
-void qRegisterDeclarativeElements(QDeclarativeEngine *engine, const char *uri)
+void qRegisterDeclarativeElements(const char *uri)
{
- Q_UNUSED(engine)
Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.multimedia"));
- qmlRegisterType<QSoundEffect>("Qt.multimedia", 4, 7, "SoundEffect");
- qmlRegisterType<QDeclarativeAudio>("Qt.multimedia", 4, 7, "Audio");
- qmlRegisterType<QDeclarativeVideo>("Qt.multimedia", 4, 7, "Video");
+ qmlRegisterType<QSoundEffect>(uri, 4, 7, "SoundEffect");
+ qmlRegisterType<QDeclarativeAudio>(uri, 4, 7, "Audio");
+ qmlRegisterType<QDeclarativeVideo>(uri, 4, 7, "Video");
}
}
diff --git a/src/multimedia/qml/multimediadeclarative.h b/src/multimedia/qml/multimediadeclarative.h
index befddb6..29af65a 100644
--- a/src/multimedia/qml/multimediadeclarative.h
+++ b/src/multimedia/qml/multimediadeclarative.h
@@ -49,11 +49,9 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Multimedia)
-class QDeclarativeEngine;
-
namespace QtMultimedia
{
-extern void Q_MULTIMEDIA_EXPORT qRegisterDeclarativeElements(QDeclarativeEngine* engine, const char *uri);
+extern void Q_MULTIMEDIA_EXPORT qRegisterDeclarativeElements(const char *uri);
}
QT_END_NAMESPACE
diff --git a/src/multimedia/qml/qdeclarativeaudio.cpp b/src/multimedia/qml/qdeclarativeaudio.cpp
index 67df625..1cbf594 100644
--- a/src/multimedia/qml/qdeclarativeaudio.cpp
+++ b/src/multimedia/qml/qdeclarativeaudio.cpp
@@ -48,6 +48,7 @@ QT_BEGIN_NAMESPACE
/*!
\qmlclass Audio QDeclarativeAudio
+ \since 4.7
\brief The Audio element allows you to add audio playback to a scene.
\qml
diff --git a/src/multimedia/qml/qdeclarativevideo.cpp b/src/multimedia/qml/qdeclarativevideo.cpp
index d0e94f6..7f62075 100644
--- a/src/multimedia/qml/qdeclarativevideo.cpp
+++ b/src/multimedia/qml/qdeclarativevideo.cpp
@@ -69,6 +69,7 @@ void QDeclarativeVideo::_q_error(int errorCode, const QString &errorString)
/*!
\qmlclass Video QDeclarativeVideo
+ \since 4.7
\brief The Video element allows you to add videos to a scene.
\inherits Item
diff --git a/src/multimedia/qml/qsoundeffect.cpp b/src/multimedia/qml/qsoundeffect.cpp
index 919aa75..541e6c9 100644
--- a/src/multimedia/qml/qsoundeffect.cpp
+++ b/src/multimedia/qml/qsoundeffect.cpp
@@ -56,6 +56,7 @@ QT_BEGIN_NAMESPACE
/*!
\qmlclass SoundEffect QSoundEffect
+ \since 4.7
\brief The SoundEffect element provides a way to play sound effects in qml.
The following example plays a wav file on mouse click.
diff --git a/src/multimedia/qml/qsoundeffect_pulse_p.cpp b/src/multimedia/qml/qsoundeffect_pulse_p.cpp
index ec851aa..7e9a25c 100644
--- a/src/multimedia/qml/qsoundeffect_pulse_p.cpp
+++ b/src/multimedia/qml/qsoundeffect_pulse_p.cpp
@@ -72,6 +72,8 @@
// Less than ideal
#define PA_SCACHE_ENTRY_SIZE_MAX (1024*1024*16)
+QT_BEGIN_NAMESPACE
+
namespace
{
inline pa_sample_spec audioFormatToSampleSpec(const QAudioFormat &format)
@@ -502,3 +504,6 @@ void QSoundEffectPrivate::play_callback(pa_context *c, int success, void *userda
}
}
+QT_END_NAMESPACE
+
+
diff --git a/src/multimedia/qml/qsoundeffect_qmedia_p.cpp b/src/multimedia/qml/qsoundeffect_qmedia_p.cpp
index 886380a..48fb257 100644
--- a/src/multimedia/qml/qsoundeffect_qmedia_p.cpp
+++ b/src/multimedia/qml/qsoundeffect_qmedia_p.cpp
@@ -59,6 +59,8 @@
#include "qsoundeffect_qmedia_p.h"
+QT_BEGIN_NAMESPACE
+
QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent):
QObject(parent),
m_muted(false),
@@ -161,3 +163,5 @@ void QSoundEffectPrivate::setMedia(const QMediaContent &media)
m_player->setMedia(media.canonicalUrl());
}
+QT_END_NAMESPACE
+
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index 62aa2d7..a887449 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -416,13 +416,25 @@ QHttpNetworkReply* QHttpNetworkConnectionPrivate::queueRequest(const QHttpNetwor
lowPriorityQueue.prepend(pair);
break;
}
+
// this used to be called via invokeMethod and a QueuedConnection
+ // It is the only place _q_startNextRequest is called directly without going
+ // through the event loop using a QueuedConnection.
+ // This is dangerous because of recursion that might occur when emitting
+ // signals as DirectConnection from this code path. Therefore all signal
+ // emissions that can come out from this code path need to
+ // be QueuedConnection.
+ // We are currently trying to fine-tune this.
_q_startNextRequest();
+
+
return reply;
}
void QHttpNetworkConnectionPrivate::requeueRequest(const HttpMessagePair &pair)
{
+ Q_Q(QHttpNetworkConnection);
+
QHttpNetworkRequest request = pair.first;
switch (request.priority()) {
case QHttpNetworkRequest::HighPriority:
@@ -433,8 +445,8 @@ void QHttpNetworkConnectionPrivate::requeueRequest(const HttpMessagePair &pair)
lowPriorityQueue.prepend(pair);
break;
}
- // this used to be called via invokeMethod and a QueuedConnection
- _q_startNextRequest();
+
+ QMetaObject::invokeMethod(q, "_q_startNextRequest", Qt::QueuedConnection);
}
void QHttpNetworkConnectionPrivate::dequeueAndSendRequest(QAbstractSocket *socket)
@@ -682,6 +694,8 @@ void QHttpNetworkConnectionPrivate::removeReply(QHttpNetworkReply *reply)
+// This function must be called from the event loop. The only
+// exception is documented in QHttpNetworkConnectionPrivate::queueRequest
void QHttpNetworkConnectionPrivate::_q_startNextRequest()
{
//resend the necessary ones.
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index dbee72a..e92b2f3 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -459,6 +459,8 @@ void QHttpNetworkConnectionChannel::handleUnexpectedEOF()
} else {
reconnectAttempts--;
reply->d_func()->clear();
+ reply->d_func()->connection = connection;
+ reply->d_func()->connectionChannel = this;
closeAndResendCurrentRequest();
}
}
diff --git a/src/network/access/qnetworkaccessdatabackend.cpp b/src/network/access/qnetworkaccessdatabackend.cpp
index a2e7ef5..efb6e3e 100644
--- a/src/network/access/qnetworkaccessdatabackend.cpp
+++ b/src/network/access/qnetworkaccessdatabackend.cpp
@@ -44,6 +44,7 @@
#include "qnetworkreply.h"
#include "qurlinfo.h"
#include "private/qdataurl_p.h"
+#include <qcoreapplication.h>
QT_BEGIN_NAMESPACE
@@ -72,7 +73,8 @@ void QNetworkAccessDataBackend::open()
if (operation() != QNetworkAccessManager::GetOperation &&
operation() != QNetworkAccessManager::HeadOperation) {
// data: doesn't support anything but GET
- QString msg = QObject::tr("Operation not supported on %1")
+ const QString msg = QCoreApplication::translate("QNetworkAccessDataBackend",
+ "Operation not supported on %1")
.arg(uri.toString());
error(QNetworkReply::ContentOperationNotPermittedError, msg);
finished();
@@ -96,7 +98,8 @@ void QNetworkAccessDataBackend::open()
}
// something wrong with this URI
- QString msg = QObject::tr("Invalid URI: %1").arg(uri.toString());
+ const QString msg = QCoreApplication::translate("QNetworkAccessDataBackend",
+ "Invalid URI: %1").arg(uri.toString());
error(QNetworkReply::ProtocolFailure, msg);
finished();
}
diff --git a/src/network/access/qnetworkaccessdebugpipebackend.cpp b/src/network/access/qnetworkaccessdebugpipebackend.cpp
index 5926d0b..cd077e7 100644
--- a/src/network/access/qnetworkaccessdebugpipebackend.cpp
+++ b/src/network/access/qnetworkaccessdebugpipebackend.cpp
@@ -252,7 +252,7 @@ void QNetworkAccessDebugPipeBackend::socketError()
break;
}
- error(code, QObject::tr("Socket error on %1: %2")
+ error(code, QNetworkAccessDebugPipeBackend::tr("Socket error on %1: %2")
.arg(url().toString(), socket.errorString()));
finished();
disconnect(&socket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));
@@ -267,7 +267,7 @@ void QNetworkAccessDebugPipeBackend::socketDisconnected()
// normal close
} else {
// abnormal close
- QString msg = QObject::tr("Remote host closed the connection prematurely on %1")
+ QString msg = QNetworkAccessDebugPipeBackend::tr("Remote host closed the connection prematurely on %1")
.arg(url().toString());
error(QNetworkReply::RemoteHostClosedError, msg);
finished();
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index b9bd52a..5876ee2 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -110,7 +110,8 @@ static void ensureInitialized()
object, which holds the common configuration and settings for the requests
it sends. It contains the proxy and cache configuration, as well as the
signals related to such issues, and reply signals that can be used to
- monitor the progress of a network operation.
+ monitor the progress of a network operation. One QNetworkAccessManager
+ should be enough for the whole Qt application.
Once a QNetworkAccessManager object has been created, the application can
use it to send requests over the network. A group of standard functions
@@ -121,6 +122,7 @@ static void ensureInitialized()
A simple download off the network could be accomplished with:
\snippet doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp 0
+ QNetworkAccessManager has an asynchronous API.
When the \tt replyFinished slot above is called, the parameter it
takes is the QNetworkReply object containing the downloaded data
as well as meta-data (headers, etc.).
@@ -130,6 +132,11 @@ static void ensureInitialized()
delete it inside the slot connected to finished(). You can use the
deleteLater() function.
+ \note QNetworkAccessManager queues the requests it receives. The number
+ of requests executed in parallel is dependent on the protocol.
+ Currently, for the HTTP protocol on desktop platforms, 6 requests are
+ executed in parallel for one host/port combination.
+
A more involved example, assuming the manager is already existent,
can be:
\snippet doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp 1
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp
index 2175686..b201380 100644
--- a/src/network/access/qnetworkreplyimpl.cpp
+++ b/src/network/access/qnetworkreplyimpl.cpp
@@ -565,7 +565,7 @@ void QNetworkReplyImplPrivate::finished()
}
} else {
error(QNetworkReply::TemporaryNetworkFailureError,
- q->tr("Temporary network failure."));
+ QNetworkReply::tr("Temporary network failure."));
}
}
}
diff --git a/src/network/access/qnetworkreplyimpl_p.h b/src/network/access/qnetworkreplyimpl_p.h
index ec413cc..b4fbd1e 100644
--- a/src/network/access/qnetworkreplyimpl_p.h
+++ b/src/network/access/qnetworkreplyimpl_p.h
@@ -199,7 +199,7 @@ class QDisabledNetworkReply : public QNetworkReply
public:
QDisabledNetworkReply(QObject *parent, const QNetworkRequest &req,
- const QNetworkAccessManager::Operation op);
+ QNetworkAccessManager::Operation op);
~QDisabledNetworkReply();
void abort() { }
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index e563f4e..61c116d 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -138,6 +138,8 @@ QT_BEGIN_NAMESPACE
default follow redirections: it's up to the application to
determine if the requested redirection should be allowed,
according to its security policies.
+ The returned URL might be relative. Use QUrl::resolved()
+ to create an absolute URL out of it.
\value ConnectionEncryptedAttribute
Replies only, type: QVariant::Bool (default: false)
diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp
index 9de499e..93f6d13 100644
--- a/src/network/kernel/qhostinfo.cpp
+++ b/src/network/kernel/qhostinfo.cpp
@@ -165,7 +165,7 @@ int QHostInfo::lookupHost(const QString &name, QObject *receiver,
if (name.isEmpty()) {
QHostInfo hostInfo(id);
hostInfo.setError(QHostInfo::HostNotFound);
- hostInfo.setErrorString(QObject::tr("No host name given"));
+ hostInfo.setErrorString(QCoreApplication::translate("QHostInfo", "No host name given"));
QScopedPointer<QHostInfoResult> result(new QHostInfoResult);
QObject::connect(result.data(), SIGNAL(resultsReady(QHostInfo)),
receiver, member, Qt::QueuedConnection);
diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp
index be06b6e..a186e78 100644
--- a/src/network/kernel/qhostinfo_unix.cpp
+++ b/src/network/kernel/qhostinfo_unix.cpp
@@ -193,7 +193,9 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName)
results.setHostName(hostName);
if (aceHostname.isEmpty()) {
results.setError(QHostInfo::HostNotFound);
- results.setErrorString(hostName.isEmpty() ? QObject::tr("No host name given") : QObject::tr("Invalid hostname"));
+ results.setErrorString(hostName.isEmpty() ?
+ QCoreApplication::translate("QHostInfoAgent", "No host name given") :
+ QCoreApplication::translate("QHostInfoAgent", "Invalid hostname"));
return results;
}
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 829df89..275c436 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -155,6 +155,9 @@
See the \l network/fortuneclient and \l network/blockingfortuneclient
examples for an overview of both approaches.
+ \note We discourage the use of the blocking functions together
+ with signals. One of the two possibilities should be used.
+
QAbstractSocket can be used with QTextStream and QDataStream's
stream operators (operator<<() and operator>>()). There is one
issue to be aware of, though: You must make sure that enough data
@@ -1682,9 +1685,12 @@ static int qt_timeout_value(int msecs, int elapsed)
If msecs is -1, this function will not time out.
- Note: This function may wait slightly longer than \a msecs,
+ \note This function may wait slightly longer than \a msecs,
depending on the time it takes to complete the host lookup.
+ \note Multiple calls to this functions do not accumulate the time.
+ If the function times out, the connecting process will be aborted.
+
\sa connectToHost(), connected()
*/
bool QAbstractSocket::waitForConnected(int msecs)
@@ -1722,7 +1728,7 @@ bool QAbstractSocket::waitForConnected(int msecs)
d->_q_startConnecting(QHostInfo::fromName(d->hostName));
}
if (state() == UnconnectedState)
- return false;
+ return false; // connect not im progress anymore!
bool timedOut = true;
#if defined (QABSTRACTSOCKET_DEBUG)
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index ea464d5..25ad5d7 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -1309,7 +1309,6 @@ void QGL2PaintEngineEx::drawStaticTextItem(QStaticTextItem *textItem)
? QFontEngineGlyphCache::Type(textItem->fontEngine->glyphFormat)
: d->glyphCacheType;
- // ### What about huge fonts? These are not passed through cache in drawTextItem().
d->drawCachedGlyphs(glyphType, textItem, true);
}
@@ -1642,21 +1641,23 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
s->matrix = old;
}
-void QGL2PaintEngineEx::drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints)
+void QGL2PaintEngineEx::drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints)
{
Q_D(QGL2PaintEngineEx);
// Use fallback for extended composition modes.
if (state()->composition_mode > QPainter::CompositionMode_Plus) {
- QPaintEngineEx::drawPixmaps(drawingData, dataCount, pixmap, hints);
+ QPaintEngineEx::drawPixmapFragments(fragments, fragmentCount, pixmap, hints);
return;
}
ensureActive();
- d->drawPixmaps(drawingData, dataCount, pixmap, hints);
+ d->drawPixmapFragments(fragments, fragmentCount, pixmap, hints);
}
-void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints)
+void QGL2PaintEngineExPrivate::drawPixmapFragments(const QPainter::Fragment *fragments,
+ int fragmentCount, const QPixmap &pixmap,
+ QPainter::FragmentHints hints)
{
GLfloat dx = 1.0f / pixmap.size().width();
GLfloat dy = 1.0f / pixmap.size().height();
@@ -1677,28 +1678,29 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData
bool allOpaque = true;
- for (int i = 0; i < dataCount; ++i) {
+ for (int i = 0; i < fragmentCount; ++i) {
qreal s = 0;
qreal c = 1;
- if (drawingData[i].rotation != 0) {
- s = qFastSin(drawingData[i].rotation * Q_PI / 180);
- c = qFastCos(drawingData[i].rotation * Q_PI / 180);
+ if (fragments[i].rotation != 0) {
+ s = qFastSin(fragments[i].rotation * Q_PI / 180);
+ c = qFastCos(fragments[i].rotation * Q_PI / 180);
}
- qreal right = 0.5 * drawingData[i].scaleX * drawingData[i].source.width();
- qreal bottom = 0.5 * drawingData[i].scaleY * drawingData[i].source.height();
+ qreal right = 0.5 * fragments[i].scaleX * fragments[i].width;
+ qreal bottom = 0.5 * fragments[i].scaleY * fragments[i].height;
QGLPoint bottomRight(right * c - bottom * s, right * s + bottom * c);
QGLPoint bottomLeft(-right * c - bottom * s, -right * s + bottom * c);
- vertexCoordinateArray.lineToArray(bottomRight.x + drawingData[i].point.x(), bottomRight.y + drawingData[i].point.y());
- vertexCoordinateArray.lineToArray(-bottomLeft.x + drawingData[i].point.x(), -bottomLeft.y + drawingData[i].point.y());
- vertexCoordinateArray.lineToArray(-bottomRight.x + drawingData[i].point.x(), -bottomRight.y + drawingData[i].point.y());
- vertexCoordinateArray.lineToArray(-bottomRight.x + drawingData[i].point.x(), -bottomRight.y + drawingData[i].point.y());
- vertexCoordinateArray.lineToArray(bottomLeft.x + drawingData[i].point.x(), bottomLeft.y + drawingData[i].point.y());
- vertexCoordinateArray.lineToArray(bottomRight.x + drawingData[i].point.x(), bottomRight.y + drawingData[i].point.y());
+ vertexCoordinateArray.lineToArray(bottomRight.x + fragments[i].x, bottomRight.y + fragments[i].y);
+ vertexCoordinateArray.lineToArray(-bottomLeft.x + fragments[i].x, -bottomLeft.y + fragments[i].y);
+ vertexCoordinateArray.lineToArray(-bottomRight.x + fragments[i].x, -bottomRight.y + fragments[i].y);
+ vertexCoordinateArray.lineToArray(-bottomRight.x + fragments[i].x, -bottomRight.y + fragments[i].y);
+ vertexCoordinateArray.lineToArray(bottomLeft.x + fragments[i].x, bottomLeft.y + fragments[i].y);
+ vertexCoordinateArray.lineToArray(bottomRight.x + fragments[i].x, bottomRight.y + fragments[i].y);
- QGLRect src(drawingData[i].source.left() * dx, drawingData[i].source.top() * dy,
- drawingData[i].source.right() * dx, drawingData[i].source.bottom() * dy);
+ QGLRect src(fragments[i].sourceLeft * dx, fragments[i].sourceTop * dy,
+ (fragments[i].sourceLeft + fragments[i].width) * dx,
+ (fragments[i].sourceTop + fragments[i].height) * dy);
textureCoordinateArray.lineToArray(src.right, src.bottom);
textureCoordinateArray.lineToArray(src.right, src.top);
@@ -1707,7 +1709,7 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData
textureCoordinateArray.lineToArray(src.left, src.bottom);
textureCoordinateArray.lineToArray(src.right, src.bottom);
- qreal opacity = drawingData[i].opacity * q->state()->opacity;
+ qreal opacity = fragments[i].opacity * q->state()->opacity;
opacityArray << opacity << opacity << opacity << opacity << opacity << opacity;
allOpaque &= (opacity >= 0.99f);
}
@@ -1720,21 +1722,22 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData
if (texture->options & QGLContext::InvertedYBindOption) {
// Flip texture y-coordinate.
QGLPoint *data = textureCoordinateArray.data();
- for (int i = 0; i < 6 * dataCount; ++i)
+ for (int i = 0; i < 6 * fragmentCount; ++i)
data[i].y = 1 - data[i].y;
}
transferMode(ImageArrayDrawingMode);
bool isBitmap = pixmap.isQBitmap();
- bool isOpaque = !isBitmap && (!pixmap.hasAlphaChannel() || (hints & QDrawPixmaps::OpaqueHint)) && allOpaque;
+ bool isOpaque = !isBitmap && (!pixmap.hasAlphaChannel() || (hints & QPainter::OpaqueHint)) && allOpaque;
updateTextureFilter(GL_TEXTURE_2D, GL_CLAMP_TO_EDGE,
q->state()->renderHints & QPainter::SmoothPixmapTransform, texture->id);
// Setup for texture drawing
currentBrush = noBrush;
- shaderManager->setSrcPixelType(isBitmap ? QGLEngineShaderManager::PatternSrc : QGLEngineShaderManager::ImageSrc);
+ shaderManager->setSrcPixelType(isBitmap ? QGLEngineShaderManager::PatternSrc
+ : QGLEngineShaderManager::ImageSrc);
if (prepareForDraw(isOpaque))
shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::ImageTexture), QT_IMAGE_TEXTURE_UNIT);
@@ -1743,7 +1746,7 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData
shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::PatternColor), col);
}
- glDrawArrays(GL_TRIANGLES, 0, 6 * dataCount);
+ glDrawArrays(GL_TRIANGLES, 0, 6 * fragmentCount);
}
bool QGL2PaintEngineEx::begin(QPaintDevice *pdev)
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
index d4932be..5d3608b 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
@@ -125,7 +125,7 @@ public:
virtual void drawTexture(const QRectF &r, GLuint textureId, const QSize &size, const QRectF &sr);
virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr);
- virtual void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints);
+ virtual void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints);
virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr,
Qt::ImageConversionFlags flags = Qt::AutoColor);
virtual void drawTextItem(const QPointF &p, const QTextItem &textItem);
@@ -196,7 +196,7 @@ public:
void fill(const QVectorPath &path);
void stroke(const QVectorPath &path, const QPen &pen);
void drawTexture(const QGLRect& dest, const QGLRect& src, const QSize &textureSize, bool opaque, bool pattern = false);
- void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints);
+ void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints);
void drawCachedGlyphs(QFontEngineGlyphCache::Type glyphType, QStaticTextItem *staticTextItem,
bool includeMatrixInCache);
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 2ed185f..73cd6a8 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -5559,7 +5559,7 @@ QSize QGLTexture::bindCompressedTexturePVR(const char *buf, int len)
quint32 level = 0;
quint32 width = pvrHeader->width;
quint32 height = pvrHeader->height;
- while (bufferSize > 0 && level < pvrHeader->mipMapCount) {
+ while (bufferSize > 0 && level <= pvrHeader->mipMapCount) {
quint32 size =
(qMax(width, minWidth) * qMax(height, minHeight) *
pvrHeader->bitsPerPixel) / 8;
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index 62f0293..35f552e 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -93,7 +93,7 @@ public:
VGFont font;
VGfloat scaleX;
VGfloat scaleY;
-
+
uint cachedGlyphsMask[256 / 32];
QSet<glyph_t> cachedGlyphs;
};
@@ -130,8 +130,9 @@ public:
void draw(VGPath path, const QPen& pen, const QBrush& brush, VGint rule = VG_EVEN_ODD);
void stroke(VGPath path, const QPen& pen);
void fill(VGPath path, const QBrush& brush, VGint rule = VG_EVEN_ODD);
- VGPath vectorPathToVGPath(const QVectorPath& path);
- VGPath painterPathToVGPath(const QPainterPath& path);
+ inline void releasePath(VGPath path);
+ VGPath vectorPathToVGPath(const QVectorPath& path, bool forceNewPath = false);
+ VGPath painterPathToVGPath(const QPainterPath& path, bool forceNewPath = false);
VGPath roundedRectPath(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode);
VGPaintType setBrush
(VGPaint paint, const QBrush& brush, VGMatrixMode mode,
@@ -177,6 +178,8 @@ public:
VGPath roundRectPath; // Cached path for quick drawing of rounded rects.
#endif
+ VGPath reusablePath; // Reusable path for vectorPathToVGPath(), etc.
+
QTransform transform; // Currently active transform.
bool simpleTransform; // True if the transform is simple (non-projective).
qreal penScale; // Pen scaling factor from "transform".
@@ -349,6 +352,8 @@ void QVGPaintEnginePrivate::init()
roundRectPath = 0;
#endif
+ reusablePath = 0;
+
simpleTransform = true;
pathTransformSet = false;
penScale = 1.0;
@@ -445,6 +450,15 @@ void QVGPaintEnginePrivate::initObjects()
VG_PATH_CAPABILITY_ALL);
vgAppendPathData(linePath, 2, segments, coords);
#endif
+
+ // This path can be reused over and over by calling vgClearPath().
+ reusablePath = vgCreatePath(VG_PATH_FORMAT_STANDARD,
+ VG_PATH_DATATYPE_F,
+ 1.0f, // scale
+ 0.0f, // bias
+ 32 + 1, // segmentCapacityHint
+ 32 * 2, // coordCapacityHint
+ VG_PATH_CAPABILITY_ALL);
}
void QVGPaintEnginePrivate::destroy()
@@ -464,6 +478,8 @@ void QVGPaintEnginePrivate::destroy()
if (roundRectPath)
vgDestroyPath(roundRectPath);
#endif
+ if (reusablePath)
+ vgDestroyPath(reusablePath);
#if !defined(QVG_NO_DRAW_GLYPHS)
QVGFontCache::Iterator it;
@@ -540,19 +556,32 @@ void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev)
qt_scaleForTransform(transform, &penScale);
}
-VGPath QVGPaintEnginePrivate::vectorPathToVGPath(const QVectorPath& path)
+inline void QVGPaintEnginePrivate::releasePath(VGPath path)
+{
+ if (path == reusablePath)
+ vgClearPath(path, VG_PATH_CAPABILITY_ALL);
+ else
+ vgDestroyPath(path);
+}
+
+VGPath QVGPaintEnginePrivate::vectorPathToVGPath(const QVectorPath& path, bool forceNewPath)
{
int count = path.elementCount();
const qreal *points = path.points();
const QPainterPath::ElementType *elements = path.elements();
- VGPath vgpath = vgCreatePath(VG_PATH_FORMAT_STANDARD,
- VG_PATH_DATATYPE_F,
- 1.0f, // scale
- 0.0f, // bias
- count + 1, // segmentCapacityHint
- count * 2, // coordCapacityHint
- VG_PATH_CAPABILITY_ALL);
+ VGPath vgpath;
+ if (forceNewPath) {
+ vgpath = vgCreatePath(VG_PATH_FORMAT_STANDARD,
+ VG_PATH_DATATYPE_F,
+ 1.0f, // scale
+ 0.0f, // bias
+ count + 1, // segmentCapacityHint
+ count * 2, // coordCapacityHint
+ VG_PATH_CAPABILITY_ALL);
+ } else {
+ vgpath = reusablePath;
+ }
// Size is sufficient segments for drawRoundedRect() paths.
QVarLengthArray<VGubyte, 20> segments;
@@ -724,17 +753,22 @@ VGPath QVGPaintEnginePrivate::vectorPathToVGPath(const QVectorPath& path)
return vgpath;
}
-VGPath QVGPaintEnginePrivate::painterPathToVGPath(const QPainterPath& path)
+VGPath QVGPaintEnginePrivate::painterPathToVGPath(const QPainterPath& path, bool forceNewPath)
{
int count = path.elementCount();
- VGPath vgpath = vgCreatePath(VG_PATH_FORMAT_STANDARD,
- VG_PATH_DATATYPE_F,
- 1.0f, // scale
- 0.0f, // bias
- count + 1, // segmentCapacityHint
- count * 2, // coordCapacityHint
- VG_PATH_CAPABILITY_ALL);
+ VGPath vgpath;
+ if (forceNewPath) {
+ vgpath = vgCreatePath(VG_PATH_FORMAT_STANDARD,
+ VG_PATH_DATATYPE_F,
+ 1.0f, // scale
+ 0.0f, // bias
+ count + 1, // segmentCapacityHint
+ count * 2, // coordCapacityHint
+ VG_PATH_CAPABILITY_ALL);
+ } else {
+ vgpath = reusablePath;
+ }
if (count == 0)
return vgpath;
@@ -953,13 +987,7 @@ VGPath QVGPaintEnginePrivate::roundedRectPath(const QRectF &rect, qreal xRadius,
vgModifyPathCoords(vgpath, 0, 9, pts);
}
#else
- VGPath vgpath = vgCreatePath(VG_PATH_FORMAT_STANDARD,
- VG_PATH_DATATYPE_F,
- 1.0f, // scale
- 0.0f, // bias
- 10, // segmentCapacityHint
- 17 * 2, // coordCapacityHint
- VG_PATH_CAPABILITY_ALL);
+ VGPath vgpath = reusablePath;
vgAppendPathData(vgpath, 10, roundedrect_types, pts);
#endif
@@ -1512,7 +1540,7 @@ void QVGPaintEngine::draw(const QVectorPath &path)
d->draw(vgpath, s->pen, s->brush, VG_EVEN_ODD);
else
d->draw(vgpath, s->pen, s->brush, VG_NON_ZERO);
- vgDestroyPath(vgpath);
+ d->releasePath(vgpath);
}
void QVGPaintEngine::fill(const QVectorPath &path, const QBrush &brush)
@@ -1523,7 +1551,7 @@ void QVGPaintEngine::fill(const QVectorPath &path, const QBrush &brush)
d->fill(vgpath, brush, VG_EVEN_ODD);
else
d->fill(vgpath, brush, VG_NON_ZERO);
- vgDestroyPath(vgpath);
+ d->releasePath(vgpath);
}
void QVGPaintEngine::stroke(const QVectorPath &path, const QPen &pen)
@@ -1531,7 +1559,7 @@ void QVGPaintEngine::stroke(const QVectorPath &path, const QPen &pen)
Q_D(QVGPaintEngine);
VGPath vgpath = d->vectorPathToVGPath(path);
d->stroke(vgpath, pen);
- vgDestroyPath(vgpath);
+ d->releasePath(vgpath);
}
// Determine if a co-ordinate transform is simple enough to allow
@@ -1727,7 +1755,7 @@ void QVGPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
default: break;
}
- vgDestroyPath(vgpath);
+ d->releasePath(vgpath);
vgSeti(VG_MASKING, VG_TRUE);
d->maskValid = true;
@@ -2044,7 +2072,7 @@ void QVGPaintEngine::clip(const QPainterPath &path, Qt::ClipOperation op)
default: break;
}
- vgDestroyPath(vgpath);
+ d->releasePath(vgpath);
vgSeti(VG_MASKING, VG_TRUE);
d->maskValid = true;
@@ -2395,7 +2423,7 @@ void QVGPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
return;
// Check to see if we can use vgClear() for faster filling.
- if (brush.style() == Qt::SolidPattern &&
+ if (brush.style() == Qt::SolidPattern && brush.isOpaque() &&
clipTransformIsSimple(d->transform) && d->opacity == 1.0f &&
clearRect(rect, brush.color())) {
return;
@@ -2438,7 +2466,7 @@ void QVGPaintEngine::fillRect(const QRectF &rect, const QColor &color)
Q_D(QVGPaintEngine);
// Check to see if we can use vgClear() for faster filling.
- if (clipTransformIsSimple(d->transform) && d->opacity == 1.0f &&
+ if (clipTransformIsSimple(d->transform) && d->opacity == 1.0f && color.alpha() == 255 &&
clearRect(rect, color)) {
return;
}
@@ -2483,7 +2511,7 @@ void QVGPaintEngine::drawRoundedRect(const QRectF &rect, qreal xrad, qreal yrad,
VGPath vgpath = d->roundedRectPath(rect, xrad, yrad, mode);
d->draw(vgpath, s->pen, s->brush);
#if defined(QVG_NO_MODIFY_PATH)
- vgDestroyPath(vgpath);
+ d->releasePath(vgpath);
#endif
} else {
QPaintEngineEx::drawRoundedRect(rect, xrad, yrad, mode);
@@ -2632,13 +2660,7 @@ void QVGPaintEngine::drawEllipse(const QRectF &r)
Q_D(QVGPaintEngine);
if (d->simpleTransform) {
QVGPainterState *s = state();
- VGPath path = vgCreatePath(VG_PATH_FORMAT_STANDARD,
- VG_PATH_DATATYPE_F,
- 1.0f, // scale
- 0.0f, // bias
- 4, // segmentCapacityHint
- 12, // coordCapacityHint
- VG_PATH_CAPABILITY_ALL);
+ VGPath path = d->reusablePath;
static VGubyte segments[4] = {
VG_MOVE_TO_ABS,
VG_SCCWARC_TO_REL,
@@ -2662,7 +2684,7 @@ void QVGPaintEngine::drawEllipse(const QRectF &r)
coords[11] = 0.0f;
vgAppendPathData(path, 4, segments, coords);
d->draw(path, s->pen, s->brush);
- vgDestroyPath(path);
+ d->releasePath(path);
} else {
// The projective transform version of an ellipse is difficult.
// Generate a QVectorPath containing cubic curves and transform that.
@@ -2686,7 +2708,7 @@ void QVGPaintEngine::drawPath(const QPainterPath &path)
d->draw(vgpath, s->pen, s->brush, VG_EVEN_ODD);
else
d->draw(vgpath, s->pen, s->brush, VG_NON_ZERO);
- vgDestroyPath(vgpath);
+ d->releasePath(vgpath);
}
void QVGPaintEngine::drawPoints(const QPointF *points, int pointCount)
@@ -2761,13 +2783,7 @@ void QVGPaintEngine::drawPolygon(const QPointF *points, int pointCount, PolygonD
{
Q_D(QVGPaintEngine);
QVGPainterState *s = state();
- VGPath path = vgCreatePath(VG_PATH_FORMAT_STANDARD,
- VG_PATH_DATATYPE_F,
- 1.0f, // scale
- 0.0f, // bias
- pointCount + 1, // segmentCapacityHint
- pointCount * 2, // coordCapacityHint
- VG_PATH_CAPABILITY_ALL);
+ VGPath path = d->reusablePath;
QVarLengthArray<VGfloat, 16> coords;
QVarLengthArray<VGubyte, 10> segments;
for (int i = 0; i < pointCount; ++i, ++points) {
@@ -2801,20 +2817,14 @@ void QVGPaintEngine::drawPolygon(const QPointF *points, int pointCount, PolygonD
d->draw(path, s->pen, s->brush, VG_EVEN_ODD);
break;
}
- vgDestroyPath(path);
+ d->releasePath(path);
}
void QVGPaintEngine::drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode)
{
Q_D(QVGPaintEngine);
QVGPainterState *s = state();
- VGPath path = vgCreatePath(VG_PATH_FORMAT_STANDARD,
- VG_PATH_DATATYPE_F,
- 1.0f, // scale
- 0.0f, // bias
- pointCount + 1, // segmentCapacityHint
- pointCount * 2, // coordCapacityHint
- VG_PATH_CAPABILITY_ALL);
+ VGPath path = d->reusablePath;
QVarLengthArray<VGfloat, 16> coords;
QVarLengthArray<VGubyte, 10> segments;
for (int i = 0; i < pointCount; ++i, ++points) {
@@ -2848,7 +2858,7 @@ void QVGPaintEngine::drawPolygon(const QPoint *points, int pointCount, PolygonDr
d->draw(path, s->pen, s->brush, VG_EVEN_ODD);
break;
}
- vgDestroyPath(path);
+ d->releasePath(path);
}
void QVGPaintEnginePrivate::setImageOptions()
@@ -3035,9 +3045,8 @@ void QVGPaintEngine::drawTiledPixmap
// (i.e. no opacity), no rotation or scaling, and drawing the full
// pixmap rather than parts of the pixmap. Even having just one of
// these conditions will improve performance.
-void QVGPaintEngine::drawPixmaps
- (const QDrawPixmaps::Data *drawingData, int dataCount,
- const QPixmap &pixmap, QFlags<QDrawPixmaps::DrawingHint> hints)
+void QVGPaintEngine::drawPixmapFragments(const QPainter::Fragment *drawingData, int dataCount,
+ const QPixmap &pixmap, QFlags<QPainter::FragmentHint> hints)
{
#if !defined(QT_SHIVAVG)
Q_D(QVGPaintEngine);
@@ -3048,7 +3057,7 @@ void QVGPaintEngine::drawPixmaps
if (!pd)
return; // null QPixmap
if (pd->classId() != QPixmapData::OpenVGClass || !d->simpleTransform) {
- QPaintEngineEx::drawPixmaps(drawingData, dataCount, pixmap, hints);
+ QPaintEngineEx::drawPixmapFragments(drawingData, dataCount, pixmap, hints);
return;
}
@@ -3072,7 +3081,7 @@ void QVGPaintEngine::drawPixmaps
QVarLengthArray<QRect> cachedSources;
// Select the opacity paint object.
- if ((hints & QDrawPixmaps::OpaqueHint) != 0 && d->opacity == 1.0f) {
+ if ((hints & QPainter::OpaqueHint) != 0 && d->opacity == 1.0f) {
d->setImageMode(VG_DRAW_IMAGE_NORMAL);
} else {
hints = 0;
@@ -3084,12 +3093,13 @@ void QVGPaintEngine::drawPixmaps
for (int i = 0; i < dataCount; ++i) {
QTransform transform(d->imageTransform);
- transform.translate(drawingData[i].point.x(), drawingData[i].point.y());
+ transform.translate(drawingData[i].x, drawingData[i].y);
transform.rotate(drawingData[i].rotation);
VGImage child;
QSize imageSize = vgpd->size();
- QRectF sr = drawingData[i].source;
+ QRectF sr(drawingData[i].sourceLeft, drawingData[i].sourceTop,
+ drawingData[i].width, drawingData[i].height);
if (sr.topLeft().isNull() && sr.size() == imageSize) {
child = vgImg;
} else {
@@ -3118,7 +3128,7 @@ void QVGPaintEngine::drawPixmaps
transform.scale(scaleX, scaleY);
d->setTransform(VG_MATRIX_IMAGE_USER_TO_SURFACE, transform);
- if ((hints & QDrawPixmaps::OpaqueHint) == 0) {
+ if ((hints & QPainter::OpaqueHint) == 0) {
qreal opacity = d->opacity * drawingData[i].opacity;
if (opacity != 1.0f) {
if (d->paintOpacity != opacity) {
@@ -3144,7 +3154,7 @@ void QVGPaintEngine::drawPixmaps
for (int i = 0; i < cachedImages.size(); ++i)
vgDestroyImage(cachedImages[i]);
#else
- QPaintEngineEx::drawPixmaps(drawingData, dataCount, pixmap, hints);
+ QPaintEngineEx::drawPixmapFragments(drawingData, dataCount, pixmap, hints);
#endif
}
@@ -3245,7 +3255,7 @@ void QVGFontGlyphCache::cacheGlyphs(QVGPaintEnginePrivate *d,
fontEngine->getUnscaledGlyph(glyph, &path, &metrics);
VGPath vgPath;
if (!path.isEmpty()) {
- vgPath = d->painterPathToVGPath(path);
+ vgPath = d->painterPathToVGPath(path, true);
} else {
// Probably a "space" character with no visible outline.
vgPath = VG_INVALID_HANDLE;
@@ -3274,7 +3284,7 @@ void QVGPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
QPaintEngineEx::drawTextItem(p, textItem);
return;
}
-
+
// Get the glyphs and positions associated with the text item.
QVarLengthArray<QFixedPoint> positions;
QVarLengthArray<glyph_t> glyphs;
@@ -3284,7 +3294,7 @@ void QVGPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
(ti.glyphs, matrix, ti.flags, glyphs, positions);
if (!drawCachedGlyphs(glyphs.size(), glyphs.data(), ti.font(), ti.fontEngine, p))
- QPaintEngineEx::drawTextItem(p, textItem);
+ QPaintEngineEx::drawTextItem(p, textItem);
#else
// OpenGL 1.0 does not have support for VGFont and glyphs,
// so fall back to the default Qt path stroking algorithm.
@@ -3312,7 +3322,7 @@ void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
glyphCache = new QVGFontGlyphCache();
if (glyphCache->font == VG_INVALID_HANDLE) {
qWarning("QVGPaintEngine::drawTextItem: OpenVG fonts are not supported by the OpenVG engine");
- delete glyphCache;
+ delete glyphCache;
return false;
}
glyphCache->setScaleFromText(font, fontEngine);
diff --git a/src/openvg/qpaintengine_vg_p.h b/src/openvg/qpaintengine_vg_p.h
index 3f73fed..1203af5 100644
--- a/src/openvg/qpaintengine_vg_p.h
+++ b/src/openvg/qpaintengine_vg_p.h
@@ -137,7 +137,7 @@ public:
void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);
- void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QFlags<QDrawPixmaps::DrawingHint> hints);
+ void drawPixmapFragments(const QPainter::Fragment *drawingData, int dataCount, const QPixmap &pixmap, QFlags<QPainter::FragmentHint> hints);
void drawTextItem(const QPointF &p, const QTextItem &textItem);
void drawStaticTextItem(QStaticTextItem *staticTextItem);
diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm
index a5384d1..9a28a33 100644
--- a/src/plugins/bearer/corewlan/qcorewlanengine.mm
+++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm
@@ -154,9 +154,9 @@ void QCoreWlanEngine::connectToId(const QString &id)
NSDictionary *parametersDict;
NSArray* apArray;
- CW8021XProfile *user8021XProfile;
- NSError *err;
- NSMutableDictionary *params;
+ CW8021XProfile *user8021XProfile;
+ NSError *err;
+ NSMutableDictionary *params;
while ((wProfile = [enumerator nextObject])) { //CWWirelessProfile
@@ -185,10 +185,8 @@ void QCoreWlanEngine::connectToId(const QString &id)
bool result = [wifiInterface associateToNetwork: apNetwork parameters:[NSDictionary dictionaryWithDictionary:params] error:&err];
if(!result) {
- qWarning() <<"ERROR"<< nsstringToQString([err localizedDescription ]);
emit connectionError(id, ConnectError);
} else {
- [apNetwork release];
[autoreleasepool release];
return;
}
@@ -350,83 +348,81 @@ QStringList QCoreWlanEngine::scanForSsids(const QString &interfaceName)
NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
CWInterface *currentInterface = [CWInterface interfaceWithName:qstringToNSString(interfaceName)];
- NSError *err = nil;
- NSDictionary *parametersDict = nil;
- NSArray* apArray = [currentInterface scanForNetworksWithParameters:parametersDict error:&err];
+ if([currentInterface power]) {
+ NSError *err = nil;
+ NSDictionary *parametersDict = nil;
+ NSArray* apArray = [currentInterface scanForNetworksWithParameters:parametersDict error:&err];
- CWNetwork *apNetwork;
- if (!err) {
- for(uint row=0; row < [apArray count]; row++ ) {
- NSAutoreleasePool *looppool = [[NSAutoreleasePool alloc] init];
+ CWNetwork *apNetwork;
+ if (!err) {
+ for(uint row=0; row < [apArray count]; row++ ) {
+ NSAutoreleasePool *looppool = [[NSAutoreleasePool alloc] init];
- apNetwork = [apArray objectAtIndex:row];
+ apNetwork = [apArray objectAtIndex:row];
- const QString networkSsid = nsstringToQString([apNetwork ssid]);
+ const QString networkSsid = nsstringToQString([apNetwork ssid]);
- const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkSsid));
- found.append(id);
+ const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkSsid));
+ found.append(id);
- QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined;
+ QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined;
- if ([currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
- if (networkSsid == nsstringToQString([currentInterface ssid]))
- state = QNetworkConfiguration::Active;
- } else {
- if (isKnownSsid(interfaceName, networkSsid))
- state = QNetworkConfiguration::Discovered;
- else
- state = QNetworkConfiguration::Defined;
- }
+ if ([currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
+ if (networkSsid == nsstringToQString([currentInterface ssid]))
+ state = QNetworkConfiguration::Active;
+ } else {
+ if (isKnownSsid(interfaceName, networkSsid))
+ state = QNetworkConfiguration::Discovered;
+ else
+ state = QNetworkConfiguration::Defined;
+ }
- if (accessPointConfigurations.contains(id)) {
- QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id);
+ if (accessPointConfigurations.contains(id)) {
+ QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id);
- bool changed = false;
+ bool changed = false;
- if (!ptr->isValid) {
- ptr->isValid = true;
- changed = true;
- }
+ if (!ptr->isValid) {
+ ptr->isValid = true;
+ changed = true;
+ }
- if (ptr->name != networkSsid) {
- ptr->name = networkSsid;
- changed = true;
- }
+ if (ptr->name != networkSsid) {
+ ptr->name = networkSsid;
+ changed = true;
+ }
- if (ptr->id != id) {
- ptr->id = id;
- changed = true;
- }
+ if (ptr->id != id) {
+ ptr->id = id;
+ changed = true;
+ }
- if (ptr->state != state) {
- ptr->state = state;
- changed = true;
- }
+ if (ptr->state != state) {
+ ptr->state = state;
+ changed = true;
+ }
- if (changed)
- emit configurationChanged(ptr);
- } else {
- QNetworkConfigurationPrivatePointer ptr(new QNetworkConfigurationPrivate);
+ if (changed)
+ emit configurationChanged(ptr);
+ } else {
+ QNetworkConfigurationPrivatePointer ptr(new QNetworkConfigurationPrivate);
- ptr->name = networkSsid;
- ptr->isValid = true;
- ptr->id = id;
- ptr->state = state;
- ptr->type = QNetworkConfiguration::InternetAccessPoint;
- ptr->bearer = QLatin1String("WLAN");
+ ptr->name = networkSsid;
+ ptr->isValid = true;
+ ptr->id = id;
+ ptr->state = state;
+ ptr->type = QNetworkConfiguration::InternetAccessPoint;
+ ptr->bearer = QLatin1String("WLAN");
- accessPointConfigurations.insert(id, ptr);
- configurationInterface.insert(id, interfaceName);
+ accessPointConfigurations.insert(id, ptr);
+ configurationInterface.insert(id, interfaceName);
- emit configurationAdded(ptr);
+ emit configurationAdded(ptr);
+ }
+ [looppool release];
}
- [looppool release];
}
- } else {
- qWarning() << "ERROR scanning for ssids" << nsstringToQString([err localizedDescription])
- <<nsstringToQString([err domain]);
}
-
[autoreleasepool drain];
#else
Q_UNUSED(interfaceName);
diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp
index a95b14b..e6c871d 100644
--- a/src/plugins/bearer/generic/qgenericengine.cpp
+++ b/src/plugins/bearer/generic/qgenericengine.cpp
@@ -60,8 +60,10 @@
#include <sys/ioctl.h>
#include <net/if.h>
#include <net/if_arp.h>
+#include <unistd.h>
#endif
+QT_BEGIN_NAMESPACE
static QString qGetInterfaceType(const QString &interface)
{
@@ -125,14 +127,11 @@ static QString qGetInterfaceType(const QString &interface)
ifreq request;
strncpy(request.ifr_name, interface.toLocal8Bit().data(), sizeof(request.ifr_name));
- if (ioctl(sock, SIOCGIFHWADDR, &request) >= 0) {
- switch (request.ifr_hwaddr.sa_family) {
- case ARPHRD_ETHER:
- return QLatin1String("Ethernet");
- }
- }
-
+ int result = ioctl(sock, SIOCGIFHWADDR, &request);
close(sock);
+
+ if (result >= 0 && request.ifr_hwaddr.sa_family == ARPHRD_ETHER)
+ return QLatin1String("Ethernet");
#else
Q_UNUSED(interface);
#endif
diff --git a/src/plugins/bearer/icd/qnetworksession_impl.cpp b/src/plugins/bearer/icd/qnetworksession_impl.cpp
index a9e93e0..e7c56a2 100644
--- a/src/plugins/bearer/icd/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/icd/qnetworksession_impl.cpp
@@ -1080,14 +1080,14 @@ QString QNetworkSessionPrivateImpl::errorString() const
QString errorStr;
switch(q->error()) {
case QNetworkSession::RoamingError:
- errorStr = QObject::tr("Roaming error");
+ errorStr = QNetworkSessionPrivateImpl::tr("Roaming error");
break;
case QNetworkSession::SessionAbortedError:
- errorStr = QObject::tr("Session aborted by user or system");
+ errorStr = QNetworkSessionPrivateImpl::tr("Session aborted by user or system");
break;
default:
case QNetworkSession::UnknownSessionError:
- errorStr = QObject::tr("Unidentified Error");
+ errorStr = QNetworkSessionPrivateImpl::tr("Unidentified Error");
break;
}
return errorStr;
diff --git a/src/plugins/bearer/qnetworksession_impl.cpp b/src/plugins/bearer/qnetworksession_impl.cpp
index f41fdba..05ce62f 100644
--- a/src/plugins/bearer/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/qnetworksession_impl.cpp
@@ -201,22 +201,22 @@ void QNetworkSessionPrivateImpl::stop()
void QNetworkSessionPrivateImpl::migrate()
{
- qWarning("This platform does not support roaming (%s).", __FUNCTION__);
+ qWarning("This platform does not support roaming (%s).", Q_FUNC_INFO);
}
void QNetworkSessionPrivateImpl::accept()
{
- qWarning("This platform does not support roaming (%s).", __FUNCTION__);
+ qWarning("This platform does not support roaming (%s).", Q_FUNC_INFO);
}
void QNetworkSessionPrivateImpl::ignore()
{
- qWarning("This platform does not support roaming (%s).", __FUNCTION__);
+ qWarning("This platform does not support roaming (%s).", Q_FUNC_INFO);
}
void QNetworkSessionPrivateImpl::reject()
{
- qWarning("This platform does not support roaming (%s).", __FUNCTION__);
+ qWarning("This platform does not support roaming (%s).", Q_FUNC_INFO);
}
QNetworkInterface QNetworkSessionPrivateImpl::currentInterface() const
diff --git a/src/plugins/bearer/symbian/symbian.pro b/src/plugins/bearer/symbian/symbian.pro
index 9fd1a74..9613def 100644
--- a/src/plugins/bearer/symbian/symbian.pro
+++ b/src/plugins/bearer/symbian/symbian.pro
@@ -21,6 +21,7 @@ exists($${EPOCROOT}epoc32/release/armv5/lib/cmmanager.lib) {
}
INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+symbian-abld:INCLUDEPATH += $$QT_BUILD_TREE/include/QtNetwork/private
LIBS += -lcommdb \
-lapsettingshandlerui \
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
index cd4d5c2..cffd4e3 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
@@ -1126,6 +1126,8 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
if (displayArgs.contains(QLatin1String("boundingrectflip"), Qt::CaseInsensitive)) {
d_ptr->directFBFlags |= BoundingRectFlip;
+ } else if (displayArgs.contains(QLatin1String("nopartialflip"), Qt::CaseInsensitive)) {
+ d_ptr->directFBFlags |= NoPartialFlip;
}
#ifdef QT_DIRECTFB_IMAGECACHE
@@ -1139,6 +1141,8 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
#endif
d_ptr->dfb->SetCooperativeLevel(d_ptr->dfb, DFSCL_FULLSCREEN);
+ const bool forcePremultiplied = displayArgs.contains(QLatin1String("forcepremultiplied"), Qt::CaseInsensitive);
+
DFBSurfaceDescription description;
memset(&description, 0, sizeof(DFBSurfaceDescription));
IDirectFBSurface *surface;
@@ -1167,7 +1171,7 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
description.caps |= capabilities[i].cap;
}
- if (displayArgs.contains(QLatin1String("forcepremultiplied"), Qt::CaseInsensitive)) {
+ if (forcePremultiplied) {
description.caps |= DSCAPS_PREMULTIPLIED;
}
@@ -1217,6 +1221,8 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
d_ptr->alphaPixmapFormat = QImage::Format_ARGB32_Premultiplied;
break;
case QImage::Format_ARGB32:
+ if (forcePremultiplied)
+ d_ptr->alphaPixmapFormat = pixelFormat = QImage::Format_ARGB32_Premultiplied;
case QImage::Format_ARGB32_Premultiplied:
case QImage::Format_ARGB4444_Premultiplied:
case QImage::Format_ARGB8555_Premultiplied:
@@ -1674,7 +1680,7 @@ bool QDirectFBScreen::initSurfaceDescriptionPixelFormat(DFBSurfaceDescription *d
uchar *QDirectFBScreen::lockSurface(IDirectFBSurface *surface, DFBSurfaceLockFlags flags, int *bpl)
{
- void *mem;
+ void *mem = 0;
const DFBResult result = surface->Lock(surface, flags, &mem, bpl);
if (result != DFB_OK) {
DirectFBError("QDirectFBScreen::lockSurface()", result);
@@ -1683,11 +1689,22 @@ uchar *QDirectFBScreen::lockSurface(IDirectFBSurface *surface, DFBSurfaceLockFla
return reinterpret_cast<uchar*>(mem);
}
+static inline bool isFullUpdate(IDirectFBSurface *surface, const QRegion &region, const QPoint &offset)
+{
+ if (offset == QPoint(0, 0) && region.rectCount() == 1) {
+ QSize size;
+ surface->GetSize(surface, &size.rwidth(), &size.rheight());
+ if (region.boundingRect().size() == size)
+ return true;
+ }
+ return false;
+}
void QDirectFBScreen::flipSurface(IDirectFBSurface *surface, DFBSurfaceFlipFlags flipFlags,
const QRegion &region, const QPoint &offset)
{
- if (!(flipFlags & DSFLIP_BLIT)) {
+ if (d_ptr->directFBFlags & NoPartialFlip
+ || (!(flipFlags & DSFLIP_BLIT) && QT_PREPEND_NAMESPACE(isFullUpdate(surface, region, offset)))) {
surface->Flip(surface, 0, flipFlags);
} else {
if (!(d_ptr->directFBFlags & BoundingRectFlip) && region.rectCount() > 1) {
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
index a8c4b43..c483020 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
@@ -144,7 +144,8 @@ public:
NoFlags = 0x00,
VideoOnly = 0x01,
SystemOnly = 0x02,
- BoundingRectFlip = 0x04
+ BoundingRectFlip = 0x04,
+ NoPartialFlip = 0x08
};
Q_DECLARE_FLAGS(DirectFBFlags, DirectFBFlag);
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
index 6764e75..a8bdb65 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
@@ -92,10 +92,6 @@ QDirectFBWindowSurface::QDirectFBWindowSurface(DFBSurfaceFlipFlags flip, QDirect
mode = Offscreen;
flags = Buffered;
}
-#else
- noSystemBackground = widget && widget->testAttribute(Qt::WA_NoSystemBackground);
- if (noSystemBackground)
- flags &= ~Opaque;
#endif
setSurfaceFlags(flags);
#ifdef QT_DIRECTFB_TIMING
@@ -134,33 +130,35 @@ void QDirectFBWindowSurface::createWindow(const QRect &rect)
if (!layer)
qFatal("QDirectFBWindowSurface: Unable to get primary display layer!");
+ updateIsOpaque();
+
DFBWindowDescription description;
memset(&description, 0, sizeof(DFBWindowDescription));
+ description.flags = DWDESC_CAPS|DWDESC_HEIGHT|DWDESC_WIDTH|DWDESC_POSX|DWDESC_POSY|DWDESC_SURFACE_CAPS|DWDESC_PIXELFORMAT;
description.caps = DWCAPS_NODECORATION;
- description.flags = DWDESC_CAPS|DWDESC_SURFACE_CAPS|DWDESC_PIXELFORMAT|DWDESC_HEIGHT|DWDESC_WIDTH|DWDESC_POSX|DWDESC_POSY;
-#if (Q_DIRECTFB_VERSION >= 0x010200)
- description.flags |= DWDESC_OPTIONS;
-#endif
+ description.surface_caps = DSCAPS_NONE;
+ imageFormat = screen->pixelFormat();
- if (noSystemBackground) {
+ if (!(surfaceFlags() & Opaque)) {
+ imageFormat = screen->alphaPixmapFormat();
description.caps |= DWCAPS_ALPHACHANNEL;
#if (Q_DIRECTFB_VERSION >= 0x010200)
+ description.flags |= DWDESC_OPTIONS;
description.options |= DWOP_ALPHACHANNEL;
#endif
}
-
+ description.pixelformat = QDirectFBScreen::getSurfacePixelFormat(imageFormat);
description.posx = rect.x();
description.posy = rect.y();
description.width = rect.width();
description.height = rect.height();
- description.surface_caps = DSCAPS_NONE;
+
+ if (QDirectFBScreen::isPremultiplied(imageFormat))
+ description.surface_caps = DSCAPS_PREMULTIPLIED;
+
if (screen->directFBFlags() & QDirectFBScreen::VideoOnly)
description.surface_caps |= DSCAPS_VIDEOONLY;
- const QImage::Format format = (noSystemBackground ? screen->alphaPixmapFormat() : screen->pixelFormat());
- description.pixelformat = QDirectFBScreen::getSurfacePixelFormat(format);
- if (QDirectFBScreen::isPremultiplied(format))
- description.surface_caps = DSCAPS_PREMULTIPLIED;
DFBResult result = layer->CreateWindow(layer, &description, &dfbWindow);
@@ -182,7 +180,6 @@ void QDirectFBWindowSurface::createWindow(const QRect &rect)
Q_ASSERT(!dfbSurface);
dfbWindow->GetSurface(dfbWindow, &dfbSurface);
- updateFormat();
}
static DFBResult setWindowGeometry(IDirectFBWindow *dfbWindow, const QRect &old, const QRect &rect)
@@ -267,15 +264,17 @@ void QDirectFBWindowSurface::setGeometry(const QRect &rect)
}
} else { // mode == Offscreen
if (!dfbSurface) {
- dfbSurface = screen->createDFBSurface(rect.size(), screen->pixelFormat(), QDirectFBScreen::DontTrackSurface);
+ dfbSurface = screen->createDFBSurface(rect.size(), surfaceFlags() & Opaque ? screen->pixelFormat() : screen->alphaPixmapFormat(),
+ QDirectFBScreen::DontTrackSurface);
}
}
if (result != DFB_OK)
DirectFBErrorFatal("QDirectFBWindowSurface::setGeometry()", result);
#endif
}
- if (oldSurface != dfbSurface)
- updateFormat();
+ if (oldSurface != dfbSurface) {
+ imageFormat = dfbSurface ? QDirectFBScreen::getImageFormat(dfbSurface) : QImage::Format_Invalid;
+ }
if (oldRect.size() != rect.size()) {
QWSWindowSurface::setGeometry(rect);
@@ -296,7 +295,7 @@ void QDirectFBWindowSurface::setPermanentState(const QByteArray &state)
if (state.size() == sizeof(this)) {
sibling = *reinterpret_cast<QDirectFBWindowSurface *const*>(state.constData());
Q_ASSERT(sibling);
- sibling->setSurfaceFlags(surfaceFlags());
+ setSurfaceFlags(sibling->surfaceFlags());
}
}
@@ -359,8 +358,6 @@ void QDirectFBWindowSurface::flush(QWidget *widget, const QRegion &region,
const quint8 windowOpacity = quint8(win->windowOpacity() * 0xff);
const QRect windowGeometry = geometry();
#ifdef QT_DIRECTFB_WM
- const bool wasNoSystemBackground = noSystemBackground;
- noSystemBackground = win->testAttribute(Qt::WA_NoSystemBackground);
quint8 currentOpacity;
Q_ASSERT(dfbWindow);
dfbWindow->GetOpacity(dfbWindow, &currentOpacity);
@@ -368,18 +365,9 @@ void QDirectFBWindowSurface::flush(QWidget *widget, const QRegion &region,
dfbWindow->SetOpacity(dfbWindow, windowOpacity);
}
- setOpaque(noSystemBackground || windowOpacity != 0xff);
- if (wasNoSystemBackground != noSystemBackground) {
- releaseSurface();
- dfbWindow->Release(dfbWindow);
- dfbWindow = 0;
- createWindow(windowGeometry);
- win->update();
- return;
- }
screen->flipSurface(dfbSurface, flipFlags, region, offset);
#else
- setOpaque(windowOpacity != 0xff);
+ setOpaque(windowOpacity == 0xff);
if (mode == Offscreen) {
screen->exposeRegion(region.translated(offset + geometry().topLeft()), 0);
} else {
@@ -442,11 +430,6 @@ IDirectFBSurface *QDirectFBWindowSurface::surfaceForWidget(const QWidget *widget
return dfbSurface;
}
-void QDirectFBWindowSurface::updateFormat()
-{
- imageFormat = dfbSurface ? QDirectFBScreen::getImageFormat(dfbSurface) : QImage::Format_Invalid;
-}
-
void QDirectFBWindowSurface::releaseSurface()
{
if (dfbSurface) {
@@ -465,9 +448,37 @@ void QDirectFBWindowSurface::releaseSurface()
}
}
+void QDirectFBWindowSurface::updateIsOpaque()
+{
+ const QWidget *win = window();
+ Q_ASSERT(win);
+ if (win->testAttribute(Qt::WA_OpaquePaintEvent) || win->testAttribute(Qt::WA_PaintOnScreen)) {
+ setOpaque(true);
+ return;
+ }
-QT_END_NAMESPACE
+ if (qFuzzyCompare(static_cast<float>(win->windowOpacity()), 1.0f)) {
+ const QPalette &pal = win->palette();
-#endif // QT_NO_QWS_DIRECTFB
+ if (win->autoFillBackground()) {
+ const QBrush &autoFillBrush = pal.brush(win->backgroundRole());
+ if (autoFillBrush.style() != Qt::NoBrush && autoFillBrush.isOpaque()) {
+ setOpaque(true);
+ return;
+ }
+ }
+
+ if (win->isWindow() && !win->testAttribute(Qt::WA_NoSystemBackground)) {
+ const QBrush &windowBrush = win->palette().brush(QPalette::Window);
+ if (windowBrush.style() != Qt::NoBrush && windowBrush.isOpaque()) {
+ setOpaque(true);
+ return;
+ }
+ }
+ }
+ setOpaque(false);
+}
+QT_END_NAMESPACE
+#endif // QT_NO_QWS_DIRECTFB
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h
index 9568067..a6138f6 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h
@@ -97,8 +97,8 @@ public:
IDirectFBWindow *directFBWindow() const;
#endif
private:
+ void updateIsOpaque();
void setOpaque(bool opaque);
- void updateFormat();
void releaseSurface();
QDirectFBWindowSurface *sibling;
@@ -113,7 +113,6 @@ private:
#endif
DFBSurfaceFlipFlags flipFlags;
- bool noSystemBackground;
bool boundingRectFlip;
#ifdef QT_DIRECTFB_TIMING
int frames;
diff --git a/src/plugins/imageformats/tiff/tiff.pro b/src/plugins/imageformats/tiff/tiff.pro
index 312f99c..514fd69 100644
--- a/src/plugins/imageformats/tiff/tiff.pro
+++ b/src/plugins/imageformats/tiff/tiff.pro
@@ -47,14 +47,15 @@ contains(QT_CONFIG, system-tiff) {
../../../3rdparty/libtiff/libtiff/tif_warning.c \
../../../3rdparty/libtiff/libtiff/tif_write.c \
../../../3rdparty/libtiff/libtiff/tif_zip.c
- win32 {
+ win32:!wince*: {
SOURCES += ../../../3rdparty/libtiff/libtiff/tif_win32.c
}
unix: {
SOURCES += ../../../3rdparty/libtiff/libtiff/tif_unix.c
}
wince*: {
- SOURCES += ../../../corelib/kernel/qfunctions_wince.cpp
+ SOURCES += ../../../corelib/kernel/qfunctions_wince.cpp \
+ ../../../3rdparty/libtiff/libtiff/tif_wince.c
}
symbian*: {
SOURCES += ../../../3rdparty/libtiff/port/lfind.c
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowaudioendpointcontrol.cpp b/src/plugins/mediaservices/directshow/mediaplayer/directshowaudioendpointcontrol.cpp
index 570b44a..5f72ca6 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowaudioendpointcontrol.cpp
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowaudioendpointcontrol.cpp
@@ -55,7 +55,7 @@ DirectShowAudioEndpointControl::DirectShowAudioEndpointControl(
, m_deviceEnumerator(0)
{
if (CreateBindCtx(0, &m_bindContext) == S_OK) {
- m_deviceEnumerator = com_new<ICreateDevEnum>(CLSID_SystemDeviceEnum);
+ m_deviceEnumerator = com_new<ICreateDevEnum>(CLSID_SystemDeviceEnum, IID_ICreateDevEnum);
updateEndpoints();
@@ -82,6 +82,7 @@ QList<QString> DirectShowAudioEndpointControl::availableEndpoints() const
QString DirectShowAudioEndpointControl::endpointDescription(const QString &name) const
{
+#ifdef __IPropertyBag_INTERFACE_DEFINED__
QString description;
if (IMoniker *moniker = m_devices.value(name, 0)) {
@@ -96,7 +97,11 @@ QString DirectShowAudioEndpointControl::endpointDescription(const QString &name)
propertyBag->Release();
}
}
- return description;;
+
+ return description;
+#else
+ return name.section(QLatin1Char('\\'), -1);
+#endif
}
QString DirectShowAudioEndpointControl::defaultEndpoint() const
@@ -120,7 +125,7 @@ void DirectShowAudioEndpointControl::setActiveEndpoint(const QString &name)
if (moniker->BindToObject(
m_bindContext,
0,
- __uuidof(IBaseFilter),
+ IID_IBaseFilter,
reinterpret_cast<void **>(&filter)) == S_OK) {
m_service->setAudioOutput(filter);
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowglobal.h b/src/plugins/mediaservices/directshow/mediaplayer/directshowglobal.h
index 1c9fe54..e43e2a7 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowglobal.h
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowglobal.h
@@ -42,30 +42,30 @@
#ifndef DIRECTSHOWGLOBAL_H
#define DIRECTSHOWGLOBAL_H
-#include <dshow.h>
+#include <QtCore/qglobal.h>
+#include <dshow.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-template <typename T> T *com_cast(IUnknown *unknown)
+template <typename T> T *com_cast(IUnknown *unknown, const IID &iid)
{
T *iface = 0;
- return unknown && unknown->QueryInterface(
- __uuidof(T), reinterpret_cast<void **>(&iface)) == S_OK
+ return unknown && unknown->QueryInterface(iid, reinterpret_cast<void **>(&iface)) == S_OK
? iface
: 0;
}
-template <typename T> T *com_new(const IID &clsid)
+template <typename T> T *com_new(const IID &clsid, const IID &iid)
{
T *object = 0;
return CoCreateInstance(
clsid,
NULL,
CLSCTX_INPROC_SERVER,
- __uuidof(T),
+ iid,
reinterpret_cast<void **>(&object)) == S_OK
? object
: 0;
@@ -75,4 +75,73 @@ QT_END_NAMESPACE
QT_END_HEADER
+#ifndef __IFilterGraph2_INTERFACE_DEFINED__
+#define __IFilterGraph2_INTERFACE_DEFINED__
+#define INTERFACE IFilterGraph2
+DECLARE_INTERFACE_(IFilterGraph2 ,IGraphBuilder)
+{
+ STDMETHOD(AddSourceFilterForMoniker)(THIS_ IMoniker *, IBindCtx *, LPCWSTR,IBaseFilter **) PURE;
+ STDMETHOD(ReconnectEx)(THIS_ IPin *, const AM_MEDIA_TYPE *) PURE;
+ STDMETHOD(RenderEx)(IPin *, DWORD, DWORD *) PURE;
+};
+#undef INTERFACE
+#endif
+
+#ifndef __IAMFilterMiscFlags_INTERFACE_DEFINED__
+#define __IAMFilterMiscFlags_INTERFACE_DEFINED__
+#define INTERFACE IAMFilterMiscFlags
+DECLARE_INTERFACE_(IAMFilterMiscFlags ,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD_(ULONG,GetMiscFlags)(THIS) PURE;
+};
+#undef INTERFACE
+#endif
+
+#ifndef __IFileSourceFilter_INTERFACE_DEFINED__
+#define __IFileSourceFilter_INTERFACE_DEFINED__
+#define INTERFACE IFileSourceFilter
+DECLARE_INTERFACE_(IFileSourceFilter ,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Load)(THIS_ LPCOLESTR, const AM_MEDIA_TYPE *) PURE;
+ STDMETHOD(GetCurFile)(THIS_ LPOLESTR *ppszFileName, AM_MEDIA_TYPE *) PURE;
+};
+#undef INTERFACE
+#endif
+
+#ifndef __IAMOpenProgress_INTERFACE_DEFINED__
+#define __IAMOpenProgress_INTERFACE_DEFINED__
+#define INTERFACE IAMOpenProgress
+DECLARE_INTERFACE_(IAMOpenProgress ,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(QueryProgress)(THIS_ LONGLONG *, LONGLONG *) PURE;
+ STDMETHOD(AbortOperation)(THIS) PURE;
+};
+#undef INTERFACE
+#endif
+
+#ifndef __IFilterChain_INTERFACE_DEFINED__
+#define __IFilterChain_INTERFACE_DEFINED__
+#define INTERFACE IFilterChain
+DECLARE_INTERFACE_(IFilterChain ,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(StartChain)(IBaseFilter *, IBaseFilter *) PURE;
+ STDMETHOD(PauseChain)(IBaseFilter *, IBaseFilter *) PURE;
+ STDMETHOD(StopChain)(IBaseFilter *, IBaseFilter *) PURE;
+ STDMETHOD(RemoveChain)(IBaseFilter *, IBaseFilter *) PURE;
+};
+#undef INTERFACE
+#endif
+
#endif
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowioreader.cpp b/src/plugins/mediaservices/directshow/mediaplayer/directshowioreader.cpp
index 54446b8..7369099 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowioreader.cpp
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowioreader.cpp
@@ -143,7 +143,7 @@ HRESULT DirectShowIOReader::RequestAllocator(
return S_OK;
} else {
- *ppActual = com_new<IMemAllocator>(CLSID_MemoryAllocator);
+ *ppActual = com_new<IMemAllocator>(CLSID_MemoryAllocator, IID_IMemAllocator);
if (*ppActual) {
if ((*ppActual)->SetProperties(pProps, &actualProperties) != S_OK) {
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.cpp b/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.cpp
index 1dca465..7b66d56 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.cpp
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.cpp
@@ -121,6 +121,10 @@ void DirectShowIOSource::setAllocator(IMemAllocator *allocator)
// IUnknown
HRESULT DirectShowIOSource::QueryInterface(REFIID riid, void **ppvObject)
{
+ // 2dd74950-a890-11d1-abe8-00a0c905f375
+ static const GUID iid_IAmFilterMiscFlags = {
+ 0x2dd74950, 0xa890, 0x11d1, {0xab, 0xe8, 0x00, 0xa0, 0xc9, 0x05, 0xf3, 0x75}};
+
if (!ppvObject) {
return E_POINTER;
} else if (riid == IID_IUnknown
@@ -128,7 +132,7 @@ HRESULT DirectShowIOSource::QueryInterface(REFIID riid, void **ppvObject)
|| riid == IID_IMediaFilter
|| riid == IID_IBaseFilter) {
*ppvObject = static_cast<IBaseFilter *>(this);
- } else if (riid == IID_IAMFilterMiscFlags) {
+ } else if (riid == iid_IAmFilterMiscFlags) {
*ppvObject = static_cast<IAMFilterMiscFlags *>(this);
} else if (riid == IID_IPin) {
*ppvObject = static_cast<IPin *>(this);
@@ -414,8 +418,8 @@ HRESULT DirectShowIOSource::tryConnect(IPin *pin, const AM_MEDIA_TYPE *type)
} else if (!m_allocator) {
hr = VFW_E_NO_TRANSPORT;
- if (IMemInputPin *memPin = com_cast<IMemInputPin>(pin)) {
- if ((m_allocator = com_new<IMemAllocator>(CLSID_MemoryAllocator))) {
+ if (IMemInputPin *memPin = com_cast<IMemInputPin>(pin, IID_IMemInputPin)) {
+ if ((m_allocator = com_new<IMemAllocator>(CLSID_MemoryAllocator, IID_IMemAllocator))) {
ALLOCATOR_PROPERTIES properties;
if (memPin->GetAllocatorRequirements(&properties) == S_OK
|| m_allocator->GetProperties(&properties) == S_OK) {
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.h b/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.h
index b626473..1d917df 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.h
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowiosource.h
@@ -42,17 +42,17 @@
#ifndef DIRECTSHOWIOSOURCE_H
#define DIRECTSHOWIOSOURCE_H
+#include "directshowglobal.h"
#include "directshowioreader.h"
#include "directshowmediatype.h"
#include "directshowmediatypelist.h"
+#include <QtCore/qfile.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#include <QtCore/qfile.h>
-
class DirectShowIOSource
: public DirectShowMediaTypeList
, public IBaseFilter
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowmediatype.cpp b/src/plugins/mediaservices/directshow/mediaplayer/directshowmediatype.cpp
index f719b29..cf6d45b 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowmediatype.cpp
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowmediatype.cpp
@@ -54,20 +54,20 @@ namespace
static const TypeLookup qt_typeLookup[] =
{
- { QVideoFrame::Format_RGB32, MEDIASUBTYPE_RGB32 },
- { QVideoFrame::Format_BGR24, MEDIASUBTYPE_RGB24 },
- { QVideoFrame::Format_RGB565, MEDIASUBTYPE_RGB565 },
- { QVideoFrame::Format_RGB555, MEDIASUBTYPE_RGB555 },
- { QVideoFrame::Format_AYUV444, MEDIASUBTYPE_AYUV },
- { QVideoFrame::Format_YUYV, MEDIASUBTYPE_YUY2 },
- { QVideoFrame::Format_UYVY, MEDIASUBTYPE_UYVY },
- { QVideoFrame::Format_IMC1, MEDIASUBTYPE_IMC1 },
- { QVideoFrame::Format_IMC2, MEDIASUBTYPE_IMC2 },
- { QVideoFrame::Format_IMC3, MEDIASUBTYPE_IMC3 },
- { QVideoFrame::Format_IMC4, MEDIASUBTYPE_IMC4 },
- { QVideoFrame::Format_YV12, MEDIASUBTYPE_YV12 },
- { QVideoFrame::Format_NV12, MEDIASUBTYPE_NV12 },
- { QVideoFrame::Format_YUV420P, MEDIASUBTYPE_IYUV }
+ { QVideoFrame::Format_RGB32, /*MEDIASUBTYPE_RGB32*/ {0xe436eb7e, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}} },
+ { QVideoFrame::Format_BGR24, /*MEDIASUBTYPE_RGB24*/ {0xe436eb7d, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}} },
+ { QVideoFrame::Format_RGB565, /*MEDIASUBTYPE_RGB565*/ {0xe436eb7b, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}} },
+ { QVideoFrame::Format_RGB555, /*MEDIASUBTYPE_RGB555*/ {0xe436eb7c, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}} },
+ { QVideoFrame::Format_AYUV444, /*MEDIASUBTYPE_AYUV*/ {0x56555941, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}} },
+ { QVideoFrame::Format_YUYV, /*MEDIASUBTYPE_YUY2*/ {0x32595559, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}} },
+ { QVideoFrame::Format_UYVY, /*MEDIASUBTYPE_UYVY*/ {0x59565955, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}} },
+ { QVideoFrame::Format_IMC1, /*MEDIASUBTYPE_IMC1*/ {0x31434D49, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}} },
+ { QVideoFrame::Format_IMC2, /*MEDIASUBTYPE_IMC2*/ {0x32434D49, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}} },
+ { QVideoFrame::Format_IMC3, /*MEDIASUBTYPE_IMC3*/ {0x33434D49, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}} },
+ { QVideoFrame::Format_IMC4, /*MEDIASUBTYPE_IMC4*/ {0x34434D49, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}} },
+ { QVideoFrame::Format_YV12, /*MEDIASUBTYPE_YV12*/ {0x32315659, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}} },
+ { QVideoFrame::Format_NV12, /*MEDIASUBTYPE_NV12*/ {0x3231564E, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}} },
+ { QVideoFrame::Format_YUV420P, /*MEDIASUBTYPE_IYUV*/ {0x56555949, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}} }
};
}
@@ -102,12 +102,16 @@ void DirectShowMediaType::freeData(AM_MEDIA_TYPE *type)
GUID DirectShowMediaType::convertPixelFormat(QVideoFrame::PixelFormat format)
{
+ // MEDIASUBTYPE_None;
+ static const GUID none = {
+ 0xe436eb8e, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70} };
+
const int count = sizeof(qt_typeLookup) / sizeof(TypeLookup);
for (int i = 0; i < count; ++i)
if (qt_typeLookup[i].pixelFormat == format)
return qt_typeLookup[i].mediaType;
- return MEDIASUBTYPE_None;
+ return none;
}
QVideoSurfaceFormat DirectShowMediaType::formatFromType(const AM_MEDIA_TYPE &type)
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowmetadatacontrol.cpp b/src/plugins/mediaservices/directshow/mediaplayer/directshowmetadatacontrol.cpp
index 7b2552f..89821c4 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowmetadatacontrol.cpp
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowmetadatacontrol.cpp
@@ -297,7 +297,7 @@ QVariant DirectShowMetaDataControl::metaData(QtMultimedia::MetaData key) const
}
if (string) {
- value = QString::fromUtf16(string, ::SysStringLen(string));
+ value = QString::fromUtf16(reinterpret_cast<ushort *>(string), ::SysStringLen(string));
::SysFreeString(string);
}
@@ -344,7 +344,7 @@ void DirectShowMetaDataControl::updateGraph(IFilterGraph2 *graph, IBaseFilter *s
if (m_headerInfo)
m_headerInfo->Release();
- m_headerInfo = com_cast<IWMHeaderInfo>(source);
+ m_headerInfo = com_cast<IWMHeaderInfo>(source, IID_IWMHeaderInfo);
#endif
// DirectShowMediaPlayerService holds a lock at this point so defer emitting signals to a later
// time.
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowmetadatacontrol.h b/src/plugins/mediaservices/directshow/mediaplayer/directshowmetadatacontrol.h
index 966f9b8..9a81ba8 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowmetadatacontrol.h
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowmetadatacontrol.h
@@ -42,9 +42,10 @@
#ifndef DIRECTSHOWMETADATACONTROL_H
#define DIRECTSHOWMETADATACONTROL_H
+#include "directshowglobal.h"
+
#include <QtMultimedia/qmetadatacontrol.h>
-#include <dshow.h>
#include <qnetwork.h>
#ifndef QT_NO_WMSDK
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowplayercontrol.cpp b/src/plugins/mediaservices/directshow/mediaplayer/directshowplayercontrol.cpp
index b024557..bb7bac3 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowplayercontrol.cpp
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowplayercontrol.cpp
@@ -371,7 +371,7 @@ void DirectShowPlayerControl::updateAudioOutput(IBaseFilter *filter)
if (m_audio)
m_audio->Release();
- m_audio = com_cast<IBasicAudio>(filter);
+ m_audio = com_cast<IBasicAudio>(filter, IID_IBasicAudio);
}
void DirectShowPlayerControl::updateError(QMediaPlayer::Error error, const QString &errorString)
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowplayerservice.cpp b/src/plugins/mediaservices/directshow/mediaplayer/directshowplayerservice.cpp
index 57f4bec..317fa5c 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowplayerservice.cpp
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowplayerservice.cpp
@@ -56,8 +56,6 @@
#include <QtCore/qthread.h>
#include <QtCore/qvarlengtharray.h>
-#include <uuids.h>
-
Q_GLOBAL_STATIC(DirectShowEventLoop, qt_directShowEventLoop)
QT_BEGIN_NAMESPACE
@@ -80,11 +78,11 @@ private:
DirectShowPlayerService::DirectShowPlayerService(QObject *parent)
: QMediaService(parent)
, m_playerControl(0)
- , m_audioEndpointControl(0)
, m_metaDataControl(0)
, m_videoOutputControl(0)
, m_videoRendererControl(0)
, m_videoWindowControl(0)
+ , m_audioEndpointControl(0)
, m_taskThread(0)
, m_loop(qt_directShowEventLoop())
, m_pendingTasks(0)
@@ -203,9 +201,12 @@ void DirectShowPlayerService::load(const QMediaContent &media, QIODevice *stream
m_graphStatus = InvalidMedia;
m_error = QMediaPlayer::ResourceError;
} else {
+ // {36b73882-c2c8-11cf-8b46-00805f6cef60}
+ static const GUID iid_IFilterGraph2 = {
+ 0x36b73882, 0xc2c8, 0x11cf, {0x8b, 0x46, 0x00, 0x80, 0x5f, 0x6c, 0xef, 0x60} };
m_graphStatus = Loading;
- m_graph = com_new<IFilterGraph2>(CLSID_FilterGraph);
+ m_graph = com_new<IFilterGraph2>(CLSID_FilterGraph, iid_IFilterGraph2);
if (stream)
m_pendingTasks = SetStreamSource;
@@ -231,15 +232,22 @@ void DirectShowPlayerService::doSetUrlSource(QMutexLocker *locker)
HRESULT hr = E_FAIL;
-#ifndef QT_NO_WMSDK
if (url.scheme() == QLatin1String("http") || url.scheme() == QLatin1String("https")) {
- if (IFileSourceFilter *fileSource = com_new<IFileSourceFilter>(CLSID_WMAsfReader)) {
+ static const GUID clsid_WMAsfReader = {
+ 0x187463a0, 0x5bb7, 0x11d3, {0xac, 0xbe, 0x00, 0x80, 0xc7, 0x5e, 0x24, 0x6e} };
+
+ // {56a868a6-0ad4-11ce-b03a-0020af0ba770}
+ static const GUID iid_IFileSourceFilter = {
+ 0x56a868a6, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70} };
+
+ if (IFileSourceFilter *fileSource = com_new<IFileSourceFilter>(
+ clsid_WMAsfReader, iid_IFileSourceFilter)) {
locker->unlock();
- hr = fileSource->Load(url.toString().utf16(), 0);
+ hr = fileSource->Load(reinterpret_cast<const OLECHAR *>(url.toString().utf16()), 0);
locker->relock();
if (SUCCEEDED(hr)) {
- source = com_cast<IBaseFilter>(fileSource);
+ source = com_cast<IBaseFilter>(fileSource, IID_IBaseFilter);
if (!SUCCEEDED(hr = m_graph->AddFilter(source, L"Source")) && source) {
source->Release();
@@ -259,13 +267,11 @@ void DirectShowPlayerService::doSetUrlSource(QMutexLocker *locker)
}
if (!SUCCEEDED(hr)) {
-#endif
locker->unlock();
- hr = m_graph->AddSourceFilter(url.toString().utf16(), L"Source", &source);
+ hr = m_graph->AddSourceFilter(
+ reinterpret_cast<const OLECHAR *>(url.toString().utf16()), L"Source", &source);
locker->relock();
-#ifndef QT_NO_WMSDK
}
-#endif
if (SUCCEEDED(hr)) {
m_executedTasks = SetSource;
@@ -299,7 +305,7 @@ void DirectShowPlayerService::doSetUrlSource(QMutexLocker *locker)
default:
m_error = QMediaPlayer::ResourceError;
m_errorString = QString();
- qWarning("DirectShowPlayerService::doSetUrlSource: Unresolved error code %x", hr);
+ qWarning("DirectShowPlayerService::doSetUrlSource: Unresolved error code %x", uint(hr));
break;
}
@@ -342,7 +348,7 @@ void DirectShowPlayerService::doRender(QMutexLocker *locker)
{
m_pendingTasks |= m_executedTasks & (Play | Pause);
- if (IMediaControl *control = com_cast<IMediaControl>(m_graph)) {
+ if (IMediaControl *control = com_cast<IMediaControl>(m_graph, IID_IMediaControl)) {
control->Stop();
control->Release();
}
@@ -393,7 +399,7 @@ void DirectShowPlayerService::doRender(QMutexLocker *locker)
locker->unlock();
HRESULT hr;
if (SUCCEEDED(hr = graph->RenderEx(
- pin, AM_RENDEREX_RENDERTOEXISTINGRENDERERS, 0))) {
+ pin, /*AM_RENDEREX_RENDERTOEXISTINGRENDERERS*/ 1, 0))) {
rendered = true;
} else if (renderHr == S_OK || renderHr == VFW_E_NO_DECOMPRESSOR){
renderHr = hr;
@@ -448,7 +454,7 @@ void DirectShowPlayerService::doRender(QMutexLocker *locker)
m_error = QMediaPlayer::ResourceError;
m_errorString = QString();
qWarning("DirectShowPlayerService::doRender: Unresolved error code %x",
- renderHr);
+ uint(renderHr));
}
}
@@ -462,11 +468,11 @@ void DirectShowPlayerService::doRender(QMutexLocker *locker)
void DirectShowPlayerService::doFinalizeLoad(QMutexLocker *locker)
{
if (m_graphStatus != Loaded) {
- if (IMediaEvent *event = com_cast<IMediaEvent>(m_graph)) {
+ if (IMediaEvent *event = com_cast<IMediaEvent>(m_graph, IID_IMediaEvent)) {
event->GetEventHandle(reinterpret_cast<OAEVENT *>(&m_eventHandle));
event->Release();
}
- if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph)) {
+ if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking)) {
LONGLONG duration = 0;
seeking->GetDuration(&duration);
m_duration = duration / 10;
@@ -496,7 +502,12 @@ void DirectShowPlayerService::releaseGraph()
{
if (m_graph) {
if (m_executingTask != 0) {
- if (IAMOpenProgress *progress = com_cast<IAMOpenProgress>(m_graph)) {
+ // {8E1C39A1-DE53-11cf-AA63-0080C744528D}
+ static const GUID iid_IAMOpenProgress = {
+ 0x8E1C39A1, 0xDE53, 0x11cf, {0xAA, 0x63, 0x00, 0x80, 0xC7, 0x44, 0x52, 0x8D} };
+
+ if (IAMOpenProgress *progress = com_cast<IAMOpenProgress>(
+ m_graph, iid_IAMOpenProgress)) {
progress->AbortOperation();
progress->Release();
}
@@ -515,7 +526,7 @@ void DirectShowPlayerService::doReleaseGraph(QMutexLocker *locker)
{
Q_UNUSED(locker);
- if (IMediaControl *control = com_cast<IMediaControl>(m_graph)) {
+ if (IMediaControl *control = com_cast<IMediaControl>(m_graph, IID_IMediaControl)) {
control->Stop();
control->Release();
}
@@ -630,7 +641,7 @@ void DirectShowPlayerService::play()
void DirectShowPlayerService::doPlay(QMutexLocker *locker)
{
- if (IMediaControl *control = com_cast<IMediaControl>(m_graph)) {
+ if (IMediaControl *control = com_cast<IMediaControl>(m_graph, IID_IMediaControl)) {
locker->unlock();
HRESULT hr = control->Run();
locker->relock();
@@ -644,7 +655,7 @@ void DirectShowPlayerService::doPlay(QMutexLocker *locker)
} else {
m_error = QMediaPlayer::ResourceError;
m_errorString = QString();
- qWarning("DirectShowPlayerService::doPlay: Unresolved error code %x", hr);
+ qWarning("DirectShowPlayerService::doPlay: Unresolved error code %x", uint(hr));
QCoreApplication::postEvent(this, new QEvent(QEvent::Type(Error)));
}
@@ -672,7 +683,7 @@ void DirectShowPlayerService::pause()
void DirectShowPlayerService::doPause(QMutexLocker *locker)
{
- if (IMediaControl *control = com_cast<IMediaControl>(m_graph)) {
+ if (IMediaControl *control = com_cast<IMediaControl>(m_graph, IID_IMediaControl)) {
locker->unlock();
HRESULT hr = control->Pause();
locker->relock();
@@ -680,7 +691,7 @@ void DirectShowPlayerService::doPause(QMutexLocker *locker)
control->Release();
if (SUCCEEDED(hr)) {
- if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph)) {
+ if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking)) {
LONGLONG position = 0;
seeking->GetCurrentPosition(&position);
@@ -697,7 +708,7 @@ void DirectShowPlayerService::doPause(QMutexLocker *locker)
} else {
m_error = QMediaPlayer::ResourceError;
m_errorString = QString();
- qWarning("DirectShowPlayerService::doPause: Unresolved error code %x", hr);
+ qWarning("DirectShowPlayerService::doPause: Unresolved error code %x", uint(hr));
QCoreApplication::postEvent(this, new QEvent(QEvent::Type(Error)));
}
@@ -723,12 +734,12 @@ void DirectShowPlayerService::stop()
void DirectShowPlayerService::doStop(QMutexLocker *locker)
{
if (m_executedTasks & (Play | Pause)) {
- if (IMediaControl *control = com_cast<IMediaControl>(m_graph)) {
+ if (IMediaControl *control = com_cast<IMediaControl>(m_graph, IID_IMediaControl)) {
control->Stop();
control->Release();
}
- if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph)) {
+ if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking)) {
LONGLONG position = 0;
seeking->GetCurrentPosition(&position);
@@ -763,7 +774,7 @@ void DirectShowPlayerService::setRate(qreal rate)
void DirectShowPlayerService::doSetRate(QMutexLocker *locker)
{
- if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph)) {
+ if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking)) {
// Cache current values as we can't query IMediaSeeking during a seek due to the
// possibility of a deadlock when flushing the VideoSurfaceFilter.
LONGLONG currentPosition = 0;
@@ -801,7 +812,7 @@ qint64 DirectShowPlayerService::position() const
if (m_graphStatus == Loaded) {
if (m_executingTask == Seek || m_executingTask == SetRate) {
return m_position;
- } else if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph)) {
+ } else if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking)) {
LONGLONG position = 0;
seeking->GetCurrentPosition(&position);
@@ -822,7 +833,7 @@ QMediaTimeRange DirectShowPlayerService::availablePlaybackRanges() const
if (m_graphStatus == Loaded) {
if (m_executingTask == Seek || m_executingTask == SetRate) {
return m_playbackRange;
- } else if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph)) {
+ } else if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking)) {
LONGLONG minimum = 0;
LONGLONG maximum = 0;
@@ -850,7 +861,7 @@ void DirectShowPlayerService::seek(qint64 position)
void DirectShowPlayerService::doSeek(QMutexLocker *locker)
{
- if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph)) {
+ if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking)) {
LONGLONG seekPosition = LONGLONG(m_position) * 10;
// Cache current values as we can't query IMediaSeeking during a seek due to the
@@ -886,7 +897,8 @@ int DirectShowPlayerService::bufferStatus() const
#ifndef QT_NO_WMSDK
QMutexLocker locker(const_cast<QMutex *>(&m_mutex));
- if (IWMReaderAdvanced2 *reader = com_cast<IWMReaderAdvanced2>(m_source)) {
+ if (IWMReaderAdvanced2 *reader = com_cast<IWMReaderAdvanced2>(
+ m_source, IID_IWMReaderAdvanced2)) {
DWORD percentage = 0;
reader->GetBufferProgress(&percentage, 0);
@@ -949,7 +961,7 @@ void DirectShowPlayerService::doReleaseAudioOutput(QMutexLocker *locker)
{
m_pendingTasks |= m_executedTasks & (Play | Pause);
- if (IMediaControl *control = com_cast<IMediaControl>(m_graph)) {
+ if (IMediaControl *control = com_cast<IMediaControl>(m_graph, IID_IMediaControl)) {
control->Stop();
control->Release();
}
@@ -960,7 +972,11 @@ void DirectShowPlayerService::doReleaseAudioOutput(QMutexLocker *locker)
decoder->AddRef();
}
- if (IFilterChain *chain = com_cast<IFilterChain>(m_graph)) {
+ // {DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29}
+ static const GUID iid_IFilterChain = {
+ 0xDCFBDCF6, 0x0DC2, 0x45f5, {0x9A, 0xB2, 0x7C, 0x33, 0x0E, 0xA0, 0x9C, 0x29} };
+
+ if (IFilterChain *chain = com_cast<IFilterChain>(m_graph, iid_IFilterChain)) {
chain->RemoveChain(decoder, m_audioOutput);
chain->Release();
} else {
@@ -1018,7 +1034,7 @@ void DirectShowPlayerService::doReleaseVideoOutput(QMutexLocker *locker)
{
m_pendingTasks |= m_executedTasks & (Play | Pause);
- if (IMediaControl *control = com_cast<IMediaControl>(m_graph)) {
+ if (IMediaControl *control = com_cast<IMediaControl>(m_graph, IID_IMediaControl)) {
control->Stop();
control->Release();
}
@@ -1035,7 +1051,11 @@ void DirectShowPlayerService::doReleaseVideoOutput(QMutexLocker *locker)
decoder->AddRef();
}
- if (IFilterChain *chain = com_cast<IFilterChain>(m_graph)) {
+ // {DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29}
+ static const GUID iid_IFilterChain = {
+ 0xDCFBDCF6, 0x0DC2, 0x45f5, {0x9A, 0xB2, 0x7C, 0x33, 0x0E, 0xA0, 0x9C, 0x29} };
+
+ if (IFilterChain *chain = com_cast<IFilterChain>(m_graph, iid_IFilterChain)) {
chain->RemoveChain(decoder, m_videoOutput);
chain->Release();
} else {
@@ -1118,7 +1138,7 @@ void DirectShowPlayerService::videoOutputChanged()
void DirectShowPlayerService::graphEvent(QMutexLocker *locker)
{
- if (IMediaEvent *event = com_cast<IMediaEvent>(m_graph)) {
+ if (IMediaEvent *event = com_cast<IMediaEvent>(m_graph, IID_IMediaEvent)) {
long eventCode;
LONG_PTR param1;
LONG_PTR param2;
@@ -1137,7 +1157,7 @@ void DirectShowPlayerService::graphEvent(QMutexLocker *locker)
m_buffering = false;
m_atEnd = true;
- if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph)) {
+ if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking)) {
LONGLONG position = 0;
seeking->GetCurrentPosition(&position);
@@ -1149,7 +1169,7 @@ void DirectShowPlayerService::graphEvent(QMutexLocker *locker)
QCoreApplication::postEvent(this, new QEvent(QEvent::Type(EndOfMedia)));
break;
case EC_LENGTH_CHANGED:
- if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph)) {
+ if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking)) {
LONGLONG duration = 0;
seeking->GetDuration(&duration);
m_duration = duration / 10;
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshowplayerservice.h b/src/plugins/mediaservices/directshow/mediaplayer/directshowplayerservice.h
index a5da9a4..23515d0 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/directshowplayerservice.h
+++ b/src/plugins/mediaservices/directshow/mediaplayer/directshowplayerservice.h
@@ -57,7 +57,6 @@
#include <QtCore/private/qwineventnotifier_p.h>
-
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/mediaplayer.pri b/src/plugins/mediaservices/directshow/mediaplayer/mediaplayer.pri
index a7adb38..99a1191 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/mediaplayer.pri
+++ b/src/plugins/mediaservices/directshow/mediaplayer/mediaplayer.pri
@@ -2,7 +2,7 @@ INCLUDEPATH += $$PWD
DEFINES += QMEDIA_DIRECTSHOW_PLAYER
-win32-g++: DEFINES += QT_NO_WMSDK
+!contains(QT_CONFIG, wmsdk): DEFINES += QT_NO_WMSDK
HEADERS += \
$$PWD/directshowaudioendpointcontrol.h \
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/videosurfacefilter.cpp b/src/plugins/mediaservices/directshow/mediaplayer/videosurfacefilter.cpp
index 7b4aad5..a471c68 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/videosurfacefilter.cpp
+++ b/src/plugins/mediaservices/directshow/mediaplayer/videosurfacefilter.cpp
@@ -84,7 +84,11 @@ VideoSurfaceFilter::~VideoSurfaceFilter()
}
HRESULT VideoSurfaceFilter::QueryInterface(REFIID riid, void **ppvObject)
-{
+{
+ // 2dd74950-a890-11d1-abe8-00a0c905f375
+ static const GUID iid_IAmFilterMiscFlags = {
+ 0x2dd74950, 0xa890, 0x11d1, {0xab, 0xe8, 0x00, 0xa0, 0xc9, 0x05, 0xf3, 0x75} };
+
if (!ppvObject) {
return E_POINTER;
} else if (riid == IID_IUnknown
@@ -92,7 +96,7 @@ HRESULT VideoSurfaceFilter::QueryInterface(REFIID riid, void **ppvObject)
|| riid == IID_IMediaFilter
|| riid == IID_IBaseFilter) {
*ppvObject = static_cast<IBaseFilter *>(this);
- } else if (riid == IID_IAMFilterMiscFlags) {
+ } else if (riid == iid_IAmFilterMiscFlags) {
*ppvObject = static_cast<IAMFilterMiscFlags *>(this);
} else if (riid == IID_IPin) {
*ppvObject = static_cast<IPin *>(this);
@@ -446,7 +450,7 @@ HRESULT VideoSurfaceFilter::EndOfStream()
QMutexLocker locker(&m_mutex);
if (!m_sampleScheduler.scheduleEndOfStream()) {
- if (IMediaEventSink *sink = com_cast<IMediaEventSink>(m_graph)) {
+ if (IMediaEventSink *sink = com_cast<IMediaEventSink>(m_graph, IID_IMediaEventSink)) {
sink->Notify(
EC_COMPLETE,
S_OK,
@@ -570,6 +574,10 @@ void VideoSurfaceFilter::supportedFormatsChanged()
{
QMutexLocker locker(&m_mutex);
+ // MEDIASUBTYPE_None;
+ static const GUID none = {
+ 0xe436eb8e, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70} };
+
QList<QVideoFrame::PixelFormat> formats = m_surface->supportedPixelFormats();
QVector<AM_MEDIA_TYPE> mediaTypes;
@@ -588,7 +596,7 @@ void VideoSurfaceFilter::supportedFormatsChanged()
foreach (QVideoFrame::PixelFormat format, formats) {
type.subtype = DirectShowMediaType::convertPixelFormat(format);
- if (type.subtype != MEDIASUBTYPE_None)
+ if (type.subtype != none)
mediaTypes.append(type);
}
@@ -610,7 +618,7 @@ void VideoSurfaceFilter::sampleReady()
sample->Release();
if (eos) {
- if (IMediaEventSink *sink = com_cast<IMediaEventSink>(m_graph)) {
+ if (IMediaEventSink *sink = com_cast<IMediaEventSink>(m_graph, IID_IMediaEventSink)) {
sink->Notify(
EC_COMPLETE,
S_OK,
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/videosurfacefilter.h b/src/plugins/mediaservices/directshow/mediaplayer/videosurfacefilter.h
index 8f3a101..0607fd3 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/videosurfacefilter.h
+++ b/src/plugins/mediaservices/directshow/mediaplayer/videosurfacefilter.h
@@ -41,6 +41,7 @@
#ifndef VIDEOSURFACEFILTER_H
#define VIDEOSURFACEFILTER_H
+#include "directshowglobal.h"
#include "directshowmediatypelist.h"
#include "directshowsamplescheduler.h"
#include "directshowmediatype.h"
@@ -52,9 +53,6 @@
#include <QtCore/qstring.h>
#include <QtCore/qwaitcondition.h>
-#include <dshow.h>
-
-
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/vmr9videowindowcontrol.cpp b/src/plugins/mediaservices/directshow/mediaplayer/vmr9videowindowcontrol.cpp
index a564e14..b1ddd98 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/vmr9videowindowcontrol.cpp
+++ b/src/plugins/mediaservices/directshow/mediaplayer/vmr9videowindowcontrol.cpp
@@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE
Vmr9VideoWindowControl::Vmr9VideoWindowControl(QObject *parent)
: QVideoWindowControl(parent)
- , m_filter(com_new<IBaseFilter>(CLSID_VideoMixingRenderer9))
+ , m_filter(com_new<IBaseFilter>(CLSID_VideoMixingRenderer9, IID_IBaseFilter))
, m_windowId(0)
, m_dirtyValues(0)
, m_brightness(0)
@@ -57,7 +57,7 @@ Vmr9VideoWindowControl::Vmr9VideoWindowControl(QObject *parent)
, m_saturation(0)
, m_fullScreen(false)
{
- if (IVMRFilterConfig9 *config = com_cast<IVMRFilterConfig9>(m_filter)) {
+ if (IVMRFilterConfig9 *config = com_cast<IVMRFilterConfig9>(m_filter, IID_IVMRFilterConfig9)) {
config->SetRenderingMode(VMR9Mode_Windowless);
config->SetNumberOfStreams(1);
config->Release();
@@ -81,7 +81,8 @@ void Vmr9VideoWindowControl::setWinId(WId id)
{
m_windowId = id;
- if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(m_filter)) {
+ if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(
+ m_filter, IID_IVMRWindowlessControl9)) {
control->SetVideoClippingWindow(m_windowId);
control->Release();
}
@@ -91,7 +92,8 @@ QRect Vmr9VideoWindowControl::displayRect() const
{
QRect rect;
- if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(m_filter)) {
+ if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(
+ m_filter, IID_IVMRWindowlessControl9)) {
RECT sourceRect;
RECT displayRect;
@@ -109,7 +111,8 @@ QRect Vmr9VideoWindowControl::displayRect() const
void Vmr9VideoWindowControl::setDisplayRect(const QRect &rect)
{
- if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(m_filter)) {
+ if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(
+ m_filter, IID_IVMRWindowlessControl9)) {
RECT sourceRect = { 0, 0, 0, 0 };
RECT displayRect = { rect.left(), rect.top(), rect.right(), rect.bottom() };
@@ -134,7 +137,8 @@ void Vmr9VideoWindowControl::repaint()
if (QWidget *widget = QWidget::find(m_windowId)) {
HDC dc = widget->getDC();
- if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(m_filter)) {
+ if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(
+ m_filter, IID_IVMRWindowlessControl9)) {
control->RepaintVideo(m_windowId, dc);
control->Release();
}
@@ -146,7 +150,8 @@ QSize Vmr9VideoWindowControl::nativeSize() const
{
QSize size;
- if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(m_filter)) {
+ if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(
+ m_filter, IID_IVMRWindowlessControl9)) {
LONG width;
LONG height;
@@ -161,7 +166,8 @@ QVideoWidget::AspectRatioMode Vmr9VideoWindowControl::aspectRatioMode() const
{
QVideoWidget::AspectRatioMode mode = QVideoWidget::KeepAspectRatio;
- if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(m_filter)) {
+ if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(
+ m_filter, IID_IVMRWindowlessControl9)) {
DWORD arMode;
if (control->GetAspectRatioMode(&arMode) == S_OK && arMode == VMR9ARMode_None)
@@ -173,7 +179,8 @@ QVideoWidget::AspectRatioMode Vmr9VideoWindowControl::aspectRatioMode() const
void Vmr9VideoWindowControl::setAspectRatioMode(QVideoWidget::AspectRatioMode mode)
{
- if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(m_filter)) {
+ if (IVMRWindowlessControl9 *control = com_cast<IVMRWindowlessControl9>(
+ m_filter, IID_IVMRWindowlessControl9)) {
switch (mode) {
case QVideoWidget::IgnoreAspectRatio:
control->SetAspectRatioMode(VMR9ARMode_None);
@@ -254,7 +261,7 @@ void Vmr9VideoWindowControl::setSaturation(int saturation)
void Vmr9VideoWindowControl::setProcAmpValues()
{
- if (IVMRMixerControl9 *control = com_cast<IVMRMixerControl9>(m_filter)) {
+ if (IVMRMixerControl9 *control = com_cast<IVMRMixerControl9>(m_filter, IID_IVMRMixerControl9)) {
VMR9ProcAmpControl procAmp;
procAmp.dwSize = sizeof(VMR9ProcAmpControl);
procAmp.dwFlags = m_dirtyValues;
diff --git a/src/plugins/mediaservices/gstreamer/gstreamer.pro b/src/plugins/mediaservices/gstreamer/gstreamer.pro
index db0ee4e..22e3c16 100644
--- a/src/plugins/mediaservices/gstreamer/gstreamer.pro
+++ b/src/plugins/mediaservices/gstreamer/gstreamer.pro
@@ -8,16 +8,8 @@ unix:contains(QT_CONFIG, alsa) {
LIBS += -lasound
}
-LIBS += -lXv
-
-CONFIG += link_pkgconfig
-
-PKGCONFIG += \
- gstreamer-0.10 \
- gstreamer-base-0.10 \
- gstreamer-interfaces-0.10 \
- gstreamer-audio-0.10 \
- gstreamer-video-0.10
+QMAKE_CXXFLAGS += $$QT_CFLAGS_GSTREAMER
+LIBS += -lXv $$QT_LIBS_GSTREAMER -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstbase-0.10 -lgstaudio-0.10
# Input
HEADERS += \
diff --git a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp
index 4d0ffe4..eff6ea4 100644
--- a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp
+++ b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp
@@ -45,6 +45,8 @@
#include <gst/gstversion.h>
+QT_BEGIN_NAMESPACE
+
struct QGstreamerMetaDataKeyLookup
{
QtMultimedia::MetaData key;
@@ -202,3 +204,6 @@ void QGstreamerMetaDataProvider::updateTags()
{
emit metaDataChanged();
}
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp
index d417266..2d7aaa8 100644
--- a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp
+++ b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp
@@ -54,6 +54,8 @@
#include <fcntl.h>
#include <unistd.h>
+QT_BEGIN_NAMESPACE
+
QGstreamerPlayerControl::QGstreamerPlayerControl(QGstreamerPlayerSession *session, QObject *parent)
: QMediaPlayerControl(parent)
, m_session(session)
@@ -341,3 +343,6 @@ void QGstreamerPlayerControl::closeFifo()
m_bufferOffset = 0;
}
}
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp
index 2e5d10f..600621e 100644
--- a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp
+++ b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp
@@ -51,6 +51,9 @@
//#define USE_PLAYBIN2
+
+QT_BEGIN_NAMESPACE
+
QGstreamerPlayerSession::QGstreamerPlayerSession(QObject *parent)
:QObject(parent),
m_state(QMediaPlayer::StoppedState),
@@ -710,3 +713,6 @@ void QGstreamerPlayerSession::getStreamsInfo()
emit streamsChanged();
}
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamerbushelper.cpp b/src/plugins/mediaservices/gstreamer/qgstreamerbushelper.cpp
index 59ae5be..5049fa1 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamerbushelper.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamerbushelper.cpp
@@ -45,6 +45,7 @@
#include "qgstreamerbushelper.h"
+QT_BEGIN_NAMESPACE
#ifndef QT_NO_GLIB
class QGstreamerBusHelperPrivate : public QObject
@@ -200,4 +201,6 @@ void QGstreamerBusHelper::installSyncEventFilter(QGstreamerSyncEventFilter *filt
d->filter = filter;
}
+QT_END_NAMESPACE
+
#include "qgstreamerbushelper.moc"
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp b/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp
index 0a689d9..863b6d4 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp
@@ -44,11 +44,13 @@
#include "qgstreamermessage.h"
+QT_BEGIN_NAMESPACE
+
static int wuchi = qRegisterMetaType<QGstreamerMessage>();
/*!
- \class QGstreamerMessage
+ \class gstreamer::QGstreamerMessage
\internal
*/
@@ -91,3 +93,5 @@ QGstreamerMessage& QGstreamerMessage::operator=(QGstreamerMessage const& rhs)
return *this;
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp b/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp
index 94ae847..406cefe11 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp
@@ -57,6 +57,9 @@
#include <sys/mman.h>
#include <linux/videodev2.h>
+
+QT_BEGIN_NAMESPACE
+
QGstreamerVideoInputDeviceControl::QGstreamerVideoInputDeviceControl(QObject *parent)
:QVideoDeviceControl(parent), m_selectedDevice(0)
{
@@ -155,3 +158,6 @@ void QGstreamerVideoInputDeviceControl::update()
::close(fd);
}
}
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamervideooutputcontrol.cpp b/src/plugins/mediaservices/gstreamer/qgstreamervideooutputcontrol.cpp
index decf524..f406bff 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamervideooutputcontrol.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamervideooutputcontrol.cpp
@@ -41,6 +41,8 @@
#include "qgstreamervideooutputcontrol.h"
+QT_BEGIN_NAMESPACE
+
QGstreamerVideoOutputControl::QGstreamerVideoOutputControl(QObject *parent)
: QVideoOutputControl(parent)
, m_output(NoOutput)
@@ -70,3 +72,6 @@ void QGstreamerVideoOutputControl::setOutput(Output output)
if (m_output != output)
emit outputChanged(m_output = output);
}
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamervideooverlay.cpp b/src/plugins/mediaservices/gstreamer/qgstreamervideooverlay.cpp
index 6c6c802..846a24a 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamervideooverlay.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamervideooverlay.cpp
@@ -46,6 +46,8 @@
#include "qx11videosurface.h"
+QT_BEGIN_NAMESPACE
+
QGstreamerVideoOverlay::QGstreamerVideoOverlay(QObject *parent)
: QVideoWindowControl(parent)
, m_surface(new QX11VideoSurface)
@@ -208,3 +210,6 @@ void QGstreamerVideoOverlay::setScaledDisplayRect()
break;
};
}
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamervideorenderer.cpp b/src/plugins/mediaservices/gstreamer/qgstreamervideorenderer.cpp
index 25a53cf..1f03990 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamervideorenderer.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamervideorenderer.cpp
@@ -47,6 +47,9 @@
#include <gst/gst.h>
+
+QT_BEGIN_NAMESPACE
+
QGstreamerVideoRenderer::QGstreamerVideoRenderer(QObject *parent)
:QVideoRendererControl(parent),m_videoSink(0)
{
@@ -80,3 +83,6 @@ void QGstreamerVideoRenderer::setSurface(QAbstractVideoSurface *surface)
m_surface = surface;
}
+QT_END_NAMESPACE
+
+
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamervideorendererinterface.cpp b/src/plugins/mediaservices/gstreamer/qgstreamervideorendererinterface.cpp
index 0a1c20d..886a064 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamervideorendererinterface.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamervideorendererinterface.cpp
@@ -41,6 +41,12 @@
#include "qgstreamervideorendererinterface.h"
+
+QT_BEGIN_NAMESPACE
+
QGstreamerVideoRendererInterface::~QGstreamerVideoRendererInterface()
{
}
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamervideorendererinterface.h b/src/plugins/mediaservices/gstreamer/qgstreamervideorendererinterface.h
index 39deee8..c63a757 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamervideorendererinterface.h
+++ b/src/plugins/mediaservices/gstreamer/qgstreamervideorendererinterface.h
@@ -59,11 +59,11 @@ public:
virtual void precessNewStream() {}
};
-QT_END_NAMESPACE
-
#define QGstreamerVideoRendererInterface_iid "com.nokia.Qt.QGstreamerVideoRendererInterface/1.0"
Q_DECLARE_INTERFACE(QGstreamerVideoRendererInterface, QGstreamerVideoRendererInterface_iid)
+QT_END_NAMESPACE
+
QT_END_HEADER
#endif
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamervideowidget.cpp b/src/plugins/mediaservices/gstreamer/qgstreamervideowidget.cpp
index 1d8d43d..47fb451 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamervideowidget.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamervideowidget.cpp
@@ -51,6 +51,9 @@
#include <gst/interfaces/xoverlay.h>
#include <gst/interfaces/propertyprobe.h>
+
+QT_BEGIN_NAMESPACE
+
class QGstreamerVideoWidget : public QWidget
{
public:
@@ -320,3 +323,6 @@ void QGstreamerVideoWidgetControl::setSaturation(int saturation)
emit saturationChanged(saturation);
}
}
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/mediaservices/gstreamer/qgstvideobuffer.cpp b/src/plugins/mediaservices/gstreamer/qgstvideobuffer.cpp
index 9519db6..76289bf 100644
--- a/src/plugins/mediaservices/gstreamer/qgstvideobuffer.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstvideobuffer.cpp
@@ -42,6 +42,8 @@
#include "qgstvideobuffer.h"
+QT_BEGIN_NAMESPACE
+
QGstVideoBuffer::QGstVideoBuffer(GstBuffer *buffer, int bytesPerLine)
: QAbstractVideoBuffer(NoHandle)
, m_buffer(buffer)
@@ -95,3 +97,5 @@ void QGstVideoBuffer::unmap()
m_mode = NotMapped;
}
+QT_END_NAMESPACE
+
diff --git a/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.cpp b/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.cpp
index 5b99817..b2e633d 100644
--- a/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.cpp
@@ -47,6 +47,9 @@
#include "qgstxvimagebuffer.h"
#include "qvideosurfacegstsink.h"
+
+QT_BEGIN_NAMESPACE
+
GstBufferClass *QGstXvImageBuffer::parent_class = NULL;
GType QGstXvImageBuffer::get_type(void)
@@ -274,3 +277,6 @@ void QGstXvImageBufferPool::destroyBuffer(QGstXvImageBuffer *xvBuffer)
if (m_imagesToDestroy.size() == 1)
QMetaObject::invokeMethod(this, "queuedDestroy", Qt::QueuedConnection);
}
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.h b/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.h
index beeb01f..30f77d1 100644
--- a/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.h
+++ b/src/plugins/mediaservices/gstreamer/qgstxvimagebuffer.h
@@ -56,14 +56,13 @@
#include <X11/extensions/Xv.h>
#include <X11/extensions/Xvlib.h>
-
#include <gst/gst.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-
class QGstXvImageBufferPool;
struct QGstXvImageBuffer {
@@ -82,7 +81,6 @@ struct QGstXvImageBuffer {
const QAbstractVideoBuffer::HandleType XvHandleType = QAbstractVideoBuffer::HandleType(4);
-Q_DECLARE_METATYPE(XvImage*)
class QGstXvImageBufferPool : public QObject {
@@ -125,6 +123,8 @@ private:
QT_END_NAMESPACE
+Q_DECLARE_METATYPE(::XvImage*)
+
QT_END_HEADER
diff --git a/src/plugins/mediaservices/gstreamer/qvideosurfacegstsink.cpp b/src/plugins/mediaservices/gstreamer/qvideosurfacegstsink.cpp
index 402a225..76d87ce 100644
--- a/src/plugins/mediaservices/gstreamer/qvideosurfacegstsink.cpp
+++ b/src/plugins/mediaservices/gstreamer/qvideosurfacegstsink.cpp
@@ -52,8 +52,11 @@
#include "qgstxvimagebuffer.h"
+
Q_DECLARE_METATYPE(QVideoSurfaceFormat)
+QT_BEGIN_NAMESPACE
+
QVideoSurfaceGstDelegate::QVideoSurfaceGstDelegate(QAbstractVideoSurface *surface)
: m_surface(surface)
, m_renderReturn(GST_FLOW_ERROR)
@@ -691,3 +694,6 @@ GstFlowReturn QVideoSurfaceGstSink::render(GstBaseSink *base, GstBuffer *buffer)
return sink->delegate->render(buffer);
}
+QT_END_NAMESPACE
+
+
diff --git a/src/plugins/mediaservices/gstreamer/qx11videosurface.cpp b/src/plugins/mediaservices/gstreamer/qx11videosurface.cpp
index 6e282ff..cbd5a76 100644
--- a/src/plugins/mediaservices/gstreamer/qx11videosurface.cpp
+++ b/src/plugins/mediaservices/gstreamer/qx11videosurface.cpp
@@ -46,7 +46,9 @@
#include "qx11videosurface.h"
-Q_DECLARE_METATYPE(XvImage*);
+Q_DECLARE_METATYPE(::XvImage*);
+
+QT_BEGIN_NAMESPACE
static QAbstractVideoBuffer::HandleType XvHandleType = QAbstractVideoBuffer::HandleType(4);
@@ -507,3 +509,5 @@ void QX11VideoSurface::querySupportedFormats()
XFree(attributes);
}
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/mediaservices/mediaservices.pro b/src/plugins/mediaservices/mediaservices.pro
index 0cef605..d84b276 100644
--- a/src/plugins/mediaservices/mediaservices.pro
+++ b/src/plugins/mediaservices/mediaservices.pro
@@ -5,16 +5,7 @@ contains(QT_CONFIG, mediaservice) {
mac: SUBDIRS += qt7
- unix:!mac:!symbian {
- TMP_GST_LIBS = \
- gstreamer-0.10 >= 0.10.19 \
- gstreamer-base-0.10 >= 0.10.19 \
- gstreamer-interfaces-0.10 >= 0.10.19 \
- gstreamer-audio-0.10 >= 0.10.19 \
- gstreamer-video-0.10 >= 0.10.19
-
- system(pkg-config --exists \'$${TMP_GST_LIBS}\' --print-errors): {
- SUBDIRS += gstreamer
- }
+ unix:!mac:!symbian:contains(QT_CONFIG, xvideo):contains(QT_CONFIG, gstreamer) {
+ SUBDIRS += gstreamer
}
}
diff --git a/src/plugins/mediaservices/qt7/mediaplayer/qt7playermetadata.mm b/src/plugins/mediaservices/qt7/mediaplayer/qt7playermetadata.mm
index a14981a..b046672 100644
--- a/src/plugins/mediaservices/qt7/mediaplayer/qt7playermetadata.mm
+++ b/src/plugins/mediaservices/qt7/mediaplayer/qt7playermetadata.mm
@@ -132,15 +132,19 @@ static OSStatus readMetaValue(QTMetaDataRef metaDataRef, QTMetaDataItem item, QT
UInt32 propFlags;
OSStatus err = QTMetaDataGetItemPropertyInfo(metaDataRef, item, propClass, id, &type, &propSize, &propFlags);
-
- *value = malloc(propSize);
-
- err = QTMetaDataGetItemProperty(metaDataRef, item, propClass, id, propSize, *value, size);
-
- if (type == 'code' || type == 'itsk' || type == 'itlk') {
- // convert from native endian to big endian
- OSTypePtr pType = (OSTypePtr)*value;
- *pType = EndianU32_NtoB(*pType);
+ if (err == noErr) {
+ *value = malloc(propSize);
+ if (*value != 0) {
+ err = QTMetaDataGetItemProperty(metaDataRef, item, propClass, id, propSize, *value, size);
+
+ if (err == noErr && (type == 'code' || type == 'itsk' || type == 'itlk')) {
+ // convert from native endian to big endian
+ OSTypePtr pType = (OSTypePtr)*value;
+ *pType = EndianU32_NtoB(*pType);
+ }
+ }
+ else
+ return -1;
}
return err;
@@ -153,10 +157,14 @@ static UInt32 getMetaType(QTMetaDataRef metaDataRef, QTMetaDataItem item)
OSStatus err = readMetaValue(
metaDataRef, item, kPropertyClass_MetaDataItem, kQTMetaDataItemPropertyID_DataType, &value, &ignore);
- UInt32 type = *((UInt32 *) value);
- if (value)
- free(value);
- return type;
+ if (err == noErr) {
+ UInt32 type = *((UInt32 *) value);
+ if (value)
+ free(value);
+ return type;
+ }
+
+ return 0;
}
static QString cFStringToQString(CFStringRef str)
@@ -179,23 +187,26 @@ static QString getMetaValue(QTMetaDataRef metaDataRef, QTMetaDataItem item, SInt
QTPropertyValuePtr value = 0;
ByteCount size = 0;
OSStatus err = readMetaValue(metaDataRef, item, kPropertyClass_MetaDataItem, id, &value, &size);
-
QString string;
- UInt32 dataType = getMetaType(metaDataRef, item);
- switch (dataType){
- case kQTMetaDataTypeUTF8:
- case kQTMetaDataTypeMacEncodedText:
- string = cFStringToQString(CFStringCreateWithBytes(0, (UInt8*)value, size, kCFStringEncodingUTF8, false));
- break;
- case kQTMetaDataTypeUTF16BE:
- string = cFStringToQString(CFStringCreateWithBytes(0, (UInt8*)value, size, kCFStringEncodingUTF16BE, false));
- break;
- default:
- break;
+
+ if (err == noErr) {
+ UInt32 dataType = getMetaType(metaDataRef, item);
+ switch (dataType){
+ case kQTMetaDataTypeUTF8:
+ case kQTMetaDataTypeMacEncodedText:
+ string = cFStringToQString(CFStringCreateWithBytes(0, (UInt8*)value, size, kCFStringEncodingUTF8, false));
+ break;
+ case kQTMetaDataTypeUTF16BE:
+ string = cFStringToQString(CFStringCreateWithBytes(0, (UInt8*)value, size, kCFStringEncodingUTF16BE, false));
+ break;
+ default:
+ break;
+ }
+
+ if (value)
+ free(value);
}
- if (value)
- free(value);
return string;
}
@@ -234,10 +245,11 @@ void QT7PlayerMetaDataControl::updateTags()
#ifdef QUICKTIME_C_API_AVAILABLE
QTMetaDataRef metaDataRef;
OSStatus err = QTCopyMovieMetaData([movie quickTimeMovie], &metaDataRef);
-
- readFormattedData(metaDataRef, kQTMetaDataStorageFormatUserData, metaMap);
- readFormattedData(metaDataRef, kQTMetaDataStorageFormatQuickTime, metaMap);
- readFormattedData(metaDataRef, kQTMetaDataStorageFormatiTunes, metaMap);
+ if (err == noErr) {
+ readFormattedData(metaDataRef, kQTMetaDataStorageFormatUserData, metaMap);
+ readFormattedData(metaDataRef, kQTMetaDataStorageFormatQuickTime, metaMap);
+ readFormattedData(metaDataRef, kQTMetaDataStorageFormatiTunes, metaMap);
+ }
#else
NSString *name = [movie attributeForKey:@"QTMovieDisplayNameAttribute"];
metaMap.insert(QLatin1String("nam"), QString::fromUtf8([name UTF8String]));
diff --git a/src/plugins/mediaservices/qt7/mediaplayer/qt7playerservice.mm b/src/plugins/mediaservices/qt7/mediaplayer/qt7playerservice.mm
index faf75d1..205e862 100644
--- a/src/plugins/mediaservices/qt7/mediaplayer/qt7playerservice.mm
+++ b/src/plugins/mediaservices/qt7/mediaplayer/qt7playerservice.mm
@@ -62,7 +62,7 @@ QT_BEGIN_NAMESPACE
QT7PlayerService::QT7PlayerService(QObject *parent):
QMediaService(parent)
{
- m_session = new QT7PlayerSession;
+ m_session = new QT7PlayerSession(this);
m_control = new QT7PlayerControl(this);
m_control->setSession(m_session);
@@ -102,6 +102,7 @@ QT7PlayerService::QT7PlayerService(QObject *parent):
QT7PlayerService::~QT7PlayerService()
{
+ m_session->setVideoOutput(0);
}
QMediaControl *QT7PlayerService::control(const char *name) const
diff --git a/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.h b/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.h
index 4742e2e..0ba3041 100644
--- a/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.h
+++ b/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.h
@@ -107,7 +107,7 @@ public slots:
void setMuted(bool muted);
void processEOS();
- void processStateChange();
+ void processLoadStateChange();
void processVolumeChange();
void processNaturalSizeChange();
@@ -138,6 +138,10 @@ private:
bool m_muted;
int m_volume;
qreal m_rate;
+
+ qint64 m_duration;
+ bool m_videoAvailable;
+ bool m_audioAvailable;
};
QT_END_NAMESPACE
diff --git a/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm b/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm
index 3f198b9..d83c0e3 100644
--- a/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm
+++ b/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm
@@ -48,10 +48,13 @@
#include "qt7playercontrol.h"
#include "qt7videooutputcontrol.h"
+#include <QtNetwork/qnetworkcookie.h>
#include <QtMultimedia/qmediaplaylistnavigator.h>
#include <CoreFoundation/CoreFoundation.h>
+#include <Foundation/Foundation.h>
+#include <QtCore/qdatetime.h>
#include <QtCore/qurl.h>
#include <QtCore/qdebug.h>
@@ -65,7 +68,9 @@
- (QTMovieObserver *) initWithPlayerSession:(QT7PlayerSession*)session;
- (void) setMovie:(QTMovie *)movie;
- (void) processEOS:(NSNotification *)notification;
-- (void) processStateChange:(NSNotification *)notification;
+- (void) processLoadStateChange:(NSNotification *)notification;
+- (void) processVolumeChange:(NSNotification *)notification;
+- (void) processNaturalSizeChange :(NSNotification *)notification;
@end
@implementation QTMovieObserver
@@ -98,7 +103,7 @@
object:m_movie];
[[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(processStateChange:)
+ selector:@selector(processLoadStateChange:)
name:QTMovieLoadStateDidChangeNotification
object:m_movie];
@@ -126,10 +131,10 @@
m_session->processEOS();
}
-- (void) processStateChange:(NSNotification *)notification
+- (void) processLoadStateChange:(NSNotification *)notification
{
Q_UNUSED(notification);
- m_session->processStateChange();
+ m_session->processLoadStateChange();
}
- (void) processVolumeChange:(NSNotification *)notification
@@ -164,6 +169,9 @@ QT7PlayerSession::QT7PlayerSession(QObject *parent)
, m_muted(false)
, m_volume(100)
, m_rate(1.0)
+ , m_duration(0)
+ , m_videoAvailable(false)
+ , m_audioAvailable(false)
{
m_movieObserver = [[QTMovieObserver alloc] initWithPlayerSession:this];
}
@@ -172,6 +180,7 @@ QT7PlayerSession::~QT7PlayerSession()
{
[(QTMovieObserver*)m_movieObserver setMovie:nil];
[(QTMovieObserver*)m_movieObserver release];
+ [(QTMovie*)m_QTMovie release];
}
void *QT7PlayerSession::movie() const
@@ -365,17 +374,37 @@ void QT7PlayerSession::setMedia(const QMediaContent &content, QIODevice *stream)
m_mediaStream = stream;
m_mediaStatus = QMediaPlayer::NoMedia;
- QUrl url;
+ QNetworkRequest request;
if (!content.isNull())
- url = content.canonicalUrl();
+ request = content.canonicalResource().request();
else
return;
-// qDebug() << "Open media" << url;
+ QVariant cookies = request.header(QNetworkRequest::CookieHeader);
+ if (cookies.isValid()) {
+ NSHTTPCookieStorage *store = [NSHTTPCookieStorage sharedHTTPCookieStorage];
+ QList<QNetworkCookie> cookieList = cookies.value<QList<QNetworkCookie> >();
+
+ foreach (const QNetworkCookie &requestCookie, cookieList) {
+ NSMutableDictionary *p = [NSMutableDictionary dictionaryWithObjectsAndKeys:
+ (NSString*)qString2CFStringRef(requestCookie.name()), NSHTTPCookieName,
+ (NSString*)qString2CFStringRef(requestCookie.value()), NSHTTPCookieValue,
+ (NSString*)qString2CFStringRef(requestCookie.domain()), NSHTTPCookieDomain,
+ (NSString*)qString2CFStringRef(requestCookie.path()), NSHTTPCookiePath,
+ nil
+ ];
+ if (requestCookie.isSessionCookie())
+ [p setObject:[NSString stringWithUTF8String:"TRUE"] forKey:NSHTTPCookieDiscard];
+ else
+ [p setObject:[NSDate dateWithTimeIntervalSince1970:requestCookie.expirationDate().toTime_t()] forKey:NSHTTPCookieExpires];
+
+ [store setCookie:[NSHTTPCookie cookieWithProperties:p]];
+ }
+ }
NSError *err = 0;
- NSString *urlString = (NSString *)qString2CFStringRef(url.toString());
+ NSString *urlString = (NSString *)qString2CFStringRef(request.url().toString());
NSDictionary *attr = [NSDictionary dictionaryWithObjectsAndKeys:
[NSURL URLWithString:urlString], QTMovieURLAttribute,
@@ -400,7 +429,7 @@ void QT7PlayerSession::setMedia(const QMediaContent &content, QIODevice *stream)
m_videoOutput->setMovie(m_QTMovie);
m_videoOutput->setEnabled(true);
}
- processStateChange();
+ processLoadStateChange();
[(QTMovie*)m_QTMovie setMuted:m_muted];
setVolume(m_volume);
@@ -432,8 +461,11 @@ void QT7PlayerSession::processEOS()
emit mediaStatusChanged(m_mediaStatus);
}
-void QT7PlayerSession::processStateChange()
+void QT7PlayerSession::processLoadStateChange()
{
+ if (!m_QTMovie)
+ return;
+
signed long state = [[(QTMovie*)m_QTMovie attributeForKey:QTMovieLoadStateAttribute]
longValue];
// qDebug() << "Moview load state changed:" << state;
@@ -461,32 +493,30 @@ void QT7PlayerSession::processStateChange()
if (state == kMovieLoadStateError) {
newStatus = QMediaPlayer::InvalidMedia;
- emit error(QMediaPlayer::FormatError, tr("Playback failed"));
+ emit error(QMediaPlayer::FormatError, tr("Failed to load media"));
+ emit stateChanged(m_state = QMediaPlayer::StoppedState);
}
- if (newStatus != m_mediaStatus) {
- switch (newStatus) {
- case QMediaPlayer::BufferedMedia:
- case QMediaPlayer::BufferingMedia:
- //delayed playback start is necessary for network sources
- if (m_state == QMediaPlayer::PlayingState) {
- QMetaObject::invokeMethod(this, "play", Qt::QueuedConnection);
- }
- //fall
- case QMediaPlayer::LoadedMedia:
- case QMediaPlayer::LoadingMedia:
- emit durationChanged(duration());
- emit audioAvailableChanged(isAudioAvailable());
- emit videoAvailableChanged(isVideoAvailable());
- break;
- case QMediaPlayer::InvalidMedia:
- emit stateChanged(m_state = QMediaPlayer::StoppedState);
- default:
- break;
- }
+ if (state >= kMovieLoadStatePlayable &&
+ m_state == QMediaPlayer::PlayingState &&
+ [(QTMovie*)m_QTMovie rate] == 0) {
+ QMetaObject::invokeMethod(this, "play", Qt::QueuedConnection);
+ }
- emit mediaStatusChanged(m_mediaStatus = newStatus);
+ if (state >= kMovieLoadStateLoaded) {
+ qint64 currentDuration = duration();
+ if (m_duration != currentDuration)
+ emit durationChanged(m_duration = currentDuration);
+
+ if (m_audioAvailable != isAudioAvailable())
+ emit audioAvailableChanged(m_audioAvailable = !m_audioAvailable);
+
+ if (m_videoAvailable != isVideoAvailable())
+ emit videoAvailableChanged(m_videoAvailable = !m_videoAvailable);
}
+
+ if (newStatus != m_mediaStatus)
+ emit mediaStatusChanged(m_mediaStatus = newStatus);
}
void QT7PlayerSession::processVolumeChange()
diff --git a/src/plugins/mediaservices/qt7/qt7movierenderer.mm b/src/plugins/mediaservices/qt7/qt7movierenderer.mm
index 6b9fd21..1c1f5e4 100644
--- a/src/plugins/mediaservices/qt7/qt7movierenderer.mm
+++ b/src/plugins/mediaservices/qt7/qt7movierenderer.mm
@@ -58,6 +58,8 @@
QT_BEGIN_NAMESPACE
+//#define USE_MAIN_MONITOR_COLOR_SPACE 1
+
class CVGLTextureVideoBuffer : public QAbstractVideoBuffer
{
public:
@@ -233,7 +235,24 @@ bool QT7MovieRenderer::createPixelBufferVisualContext()
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(visualContextOptions, kQTVisualContextPixelBufferAttributesKey, pixelBufferOptions);
- CFDictionarySetValue(visualContextOptions, kQTVisualContextWorkingColorSpaceKey, CGColorSpaceCreateDeviceRGB());
+
+ CGColorSpaceRef colorSpace = NULL;
+
+#if USE_MAIN_MONITOR_COLOR_SPACE
+ CMProfileRef sysprof = NULL;
+
+ // Get the Systems Profile for the main display
+ if (CMGetSystemProfile(&sysprof) == noErr) {
+ // Create a colorspace with the systems profile
+ colorSpace = CGColorSpaceCreateWithPlatformColorSpace(sysprof);
+ CMCloseProfile(sysprof);
+ }
+#endif
+
+ if (!colorSpace)
+ colorSpace = CGColorSpaceCreateDeviceRGB();
+
+ CFDictionarySetValue(visualContextOptions, kQTVisualContextOutputColorSpaceKey, colorSpace);
OSStatus err = QTPixelBufferContextCreate(kCFAllocatorDefault,
visualContextOptions,
diff --git a/src/plugins/mediaservices/qt7/qt7movievideowidget.mm b/src/plugins/mediaservices/qt7/qt7movievideowidget.mm
index 4043330..00ceffc 100644
--- a/src/plugins/mediaservices/qt7/qt7movievideowidget.mm
+++ b/src/plugins/mediaservices/qt7/qt7movievideowidget.mm
@@ -199,7 +199,6 @@ QT7MovieVideoWidget::QT7MovieVideoWidget(QObject *parent)
}
}
-
bool QT7MovieVideoWidget::createVisualContext()
{
#ifdef QUICKTIME_C_API_AVAILABLE
@@ -210,8 +209,20 @@ bool QT7MovieVideoWidget::createVisualContext()
NSOpenGLPixelFormat *nsglPixelFormat = [NSOpenGLView defaultPixelFormat];
CGLPixelFormatObj cglPixelFormat = static_cast<CGLPixelFormatObj>([nsglPixelFormat CGLPixelFormatObj]);
- CFTypeRef keys[] = { kQTVisualContextWorkingColorSpaceKey };
- CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
+ CFTypeRef keys[] = { kQTVisualContextOutputColorSpaceKey };
+ CGColorSpaceRef colorSpace = NULL;
+ CMProfileRef sysprof = NULL;
+
+ // Get the Systems Profile for the main display
+ if (CMGetSystemProfile(&sysprof) == noErr) {
+ // Create a colorspace with the systems profile
+ colorSpace = CGColorSpaceCreateWithPlatformColorSpace(sysprof);
+ CMCloseProfile(sysprof);
+ }
+
+ if (!colorSpace)
+ colorSpace = CGColorSpaceCreateDeviceRGB();
+
CFDictionaryRef textureContextAttributes = CFDictionaryCreate(kCFAllocatorDefault,
(const void **)keys,
(const void **)&colorSpace, 1,
diff --git a/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp b/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp
index e27dd8d..8becbf3 100644
--- a/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp
+++ b/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp
@@ -49,9 +49,9 @@ class QMultimediaQmlModule : public QDeclarativeExtensionPlugin
{
Q_OBJECT
public:
- virtual void initialize(QDeclarativeEngine *engine, const char *uri)
+ virtual void registerTypes(const char *uri)
{
- QtMultimedia::qRegisterDeclarativeElements(engine, uri);
+ QtMultimedia::qRegisterDeclarativeElements(uri);
}
};
diff --git a/src/plugins/qdeclarativemodules/widgets/widgets.cpp b/src/plugins/qdeclarativemodules/widgets/widgets.cpp
index 7229d88..ec21cc4 100644
--- a/src/plugins/qdeclarativemodules/widgets/widgets.cpp
+++ b/src/plugins/qdeclarativemodules/widgets/widgets.cpp
@@ -114,15 +114,8 @@ class QWidgetsQmlModule : public QDeclarativeExtensionPlugin
{
Q_OBJECT
public:
- QStringList keys() const
+ virtual void registerTypes(const char *uri)
{
- return QStringList() << QLatin1String("Qt.widgets");
- }
-
- virtual void initialize(QDeclarativeEngine *engine, const char *uri)
- {
- Q_UNUSED(engine);
-
Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.widgets"));
QML_REGISTER_INTERFACE(QGraphicsLayoutItem);
diff --git a/src/qbase.pri b/src/qbase.pri
index ef5d9e5..835ed0e 100644
--- a/src/qbase.pri
+++ b/src/qbase.pri
@@ -157,6 +157,7 @@ contains(QT_PRODUCT, OpenSource.*):DEFINES *= QT_OPENSOURCE
DEFINES *= QT_NO_CAST_TO_ASCII QT_ASCII_CAST_WARNINGS
contains(QT_CONFIG, qt3support):DEFINES *= QT3_SUPPORT
DEFINES *= QT_MOC_COMPAT #we don't need warnings from calling moc code in our generated code
+DEFINES *= QT_USE_FAST_OPERATOR_PLUS QT_USE_FAST_CONCATENATION
TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #do this towards the end
diff --git a/src/qt3support/text/q3richtext.cpp b/src/qt3support/text/q3richtext.cpp
index 21383bd..8614076 100644
--- a/src/qt3support/text/q3richtext.cpp
+++ b/src/qt3support/text/q3richtext.cpp
@@ -6667,7 +6667,7 @@ Q3TextImage::Q3TextImage(Q3TextDocument *p, const QMap<QString, QString> &attr,
imageName = attr[QLatin1String("source")];
if (!imageName.isEmpty()) {
- imgId = QString::fromLatin1("%1,%2,%3,%4").arg(imageName).arg(width).arg(height).arg((ulong)&factory);
+ imgId = QString::fromLatin1("%1,%2,%3,%4").arg(imageName).arg(width).arg(height).arg((quintptr)&factory);
if (!pixmap_map)
pixmap_map = new QMap<QString, QPixmapInt>;
if (pixmap_map->contains(imgId)) {
diff --git a/src/qt3support/text/q3textedit.cpp b/src/qt3support/text/q3textedit.cpp
index 7f51bea..d4f75ed 100644
--- a/src/qt3support/text/q3textedit.cpp
+++ b/src/qt3support/text/q3textedit.cpp
@@ -6238,7 +6238,7 @@ void Q3TextEdit::optimParseTags(QString * line, int lineNo, int indexOffset)
} else {
tmp = tagStack.isEmpty() ? 0 : tagStack.pop();
if (!tmp) {
- if (((QLatin1Char('/') + cur->tag) == tag->tag) ||
+ if ((QString(QLatin1Char('/') + cur->tag) == tag->tag) ||
(tag->tag == QLatin1String("/font") && cur->tag.left(4) == QLatin1String("font"))) {
// set up the left and parent of this tag
tag->leftTag = cur;
diff --git a/src/qt3support/text/q3textstream.cpp b/src/qt3support/text/q3textstream.cpp
index 41aab4d..8c86c7c 100644
--- a/src/qt3support/text/q3textstream.cpp
+++ b/src/qt3support/text/q3textstream.cpp
@@ -2084,7 +2084,7 @@ Q3TextStream &Q3TextStream::operator<<( void *ptr )
setf( hex, basefield );
setf( showbase );
unsetf( uppercase );
- output_int( I_LONG | I_UNSIGNED, (ulong)ptr, FALSE );
+ output_int( I_LONG | I_UNSIGNED, (quintptr)ptr, FALSE );
flags( f );
return *this;
}
diff --git a/src/qt3support/tools/q3gcache.cpp b/src/qt3support/tools/q3gcache.cpp
index a31f827..ada8330 100644
--- a/src/qt3support/tools/q3gcache.cpp
+++ b/src/qt3support/tools/q3gcache.cpp
@@ -226,7 +226,7 @@ public:
bool remove_ascii(Q3CacheItem *item)
{ return Q3GDict::remove_ascii((const char *)item->key,item); }
bool remove_int(Q3CacheItem *item)
- { return Q3GDict::remove_int((long)item->key,item);}
+ { return Q3GDict::remove_int((quintptr)item->key,item);}
void statistics() { Q3GDict::statistics(); }
@@ -426,7 +426,7 @@ bool Q3GCache::insert_other(const char *key, Q3PtrCollection::Item data,
if (keytype == AsciiKey)
dict->insert_ascii(key, ci);
else
- dict->insert_int((long)key, ci);
+ dict->insert_int((quintptr)key, ci);
tCost += cost;
return true;
}
@@ -486,7 +486,7 @@ Q3PtrCollection::Item Q3GCache::take_other(const char *key)
if (keytype == AsciiKey)
ci = dict->take_ascii(key);
else
- ci = dict->take_int((long)key);
+ ci = dict->take_int((quintptr)key);
Item d;
if (ci) {
d = ci->data;
@@ -563,7 +563,7 @@ Q3PtrCollection::Item Q3GCache::find_string(const QString &key, bool ref) const
Q3PtrCollection::Item Q3GCache::find_other(const char *key, bool ref) const
{
Q3CacheItem *ci = keytype == AsciiKey ? dict->find_ascii(key)
- : dict->find_int((long)key);
+ : dict->find_int((quintptr)key);
#if defined(QT_DEBUG)
lruList->finds++;
#endif
@@ -811,7 +811,7 @@ const char *Q3GCacheIterator::getKeyAscii() const
long Q3GCacheIterator::getKeyInt() const
{
Q3CacheItem *item = it->current();
- return item ? (long)item->key : 0;
+ return item ? (quintptr)item->key : 0;
}
/*!
diff --git a/src/qt3support/tools/q3gdict.cpp b/src/qt3support/tools/q3gdict.cpp
index a968407..e8144fe 100644
--- a/src/qt3support/tools/q3gdict.cpp
+++ b/src/qt3support/tools/q3gdict.cpp
@@ -437,7 +437,7 @@ Q3PtrCollection::Item Q3GDict::look_int(long key, Q3PtrCollection::Item d, int o
Q3PtrCollection::Item Q3GDict::look_ptr(void *key, Q3PtrCollection::Item d, int op)
{
Q3PtrBucket *n;
- int index = (int)((ulong)key % vlen); // simple hash
+ int index = (int)((quintptr)key % vlen); // simple hash
if (op == op_find) { // find
for (n=(Q3PtrBucket*)vec[index]; n;
n=(Q3PtrBucket*)n->getNext()) {
@@ -650,7 +650,7 @@ Q3PtrBucket *Q3GDict::unlink_ptr(void *key, Q3PtrCollection::Item d)
return 0;
Q3PtrBucket *n;
Q3PtrBucket *prev = 0;
- int index = (int)((ulong)key % vlen);
+ int index = (int)((quintptr)key % vlen);
for (n=(Q3PtrBucket *)vec[index]; n; n=(Q3PtrBucket *)n->getNext()) {
bool found = (n->getKey() == key);
if (found && d)
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 98a24d0..d2e96d1 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -844,7 +844,7 @@ static QScriptValue __setupPackage__(QScriptContext *ctx, QScriptEngine *eng)
} // namespace QScript
QScriptEnginePrivate::QScriptEnginePrivate()
- : registeredScriptValues(0), freeScriptValues(0),
+ : registeredScriptValues(0), freeScriptValues(0), freeScriptValuesCount(0),
registeredScriptStrings(0), inEval(false)
{
qMetaTypeId<QScriptValue>();
diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h
index f69e537..d0d020a 100644
--- a/src/script/api/qscriptengine_p.h
+++ b/src/script/api/qscriptengine_p.h
@@ -354,6 +354,8 @@ public:
int agentLineNumber;
QScriptValuePrivate *registeredScriptValues;
QScriptValuePrivate *freeScriptValues;
+ static const int maxFreeScriptValues = 256;
+ int freeScriptValuesCount;
QScriptStringPrivate *registeredScriptStrings;
QHash<int, QScriptTypeInfo*> m_typeInfos;
int processEventsInterval;
@@ -521,6 +523,7 @@ inline QScriptValuePrivate *QScriptEnginePrivate::allocateScriptValuePrivate(siz
if (freeScriptValues) {
QScriptValuePrivate *p = freeScriptValues;
freeScriptValues = p->next;
+ --freeScriptValuesCount;
return p;
}
return reinterpret_cast<QScriptValuePrivate*>(qMalloc(size));
@@ -528,8 +531,13 @@ inline QScriptValuePrivate *QScriptEnginePrivate::allocateScriptValuePrivate(siz
inline void QScriptEnginePrivate::freeScriptValuePrivate(QScriptValuePrivate *p)
{
- p->next = freeScriptValues;
- freeScriptValues = p;
+ if (freeScriptValuesCount < maxFreeScriptValues) {
+ p->next = freeScriptValues;
+ freeScriptValues = p;
+ ++freeScriptValuesCount;
+ } else {
+ qFree(p);
+ }
}
inline void QScriptEnginePrivate::registerScriptValue(QScriptValuePrivate *value)
@@ -854,7 +862,7 @@ inline bool QScriptEnginePrivate::isQObject(JSC::JSValue value)
inline bool QScriptEnginePrivate::isQMetaObject(JSC::JSValue value)
{
#ifndef QT_NO_QOBJECT
- return JSC::asObject(value)->inherits(&QScript::QMetaObjectWrapperObject::info);
+ return isObject(value) && JSC::asObject(value)->inherits(&QScript::QMetaObjectWrapperObject::info);
#else
return false;
#endif
diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp
index b5c85e6..de2be89 100644
--- a/src/sql/drivers/oci/qsql_oci.cpp
+++ b/src/sql/drivers/oci/qsql_oci.cpp
@@ -56,6 +56,12 @@
#include <qvector.h>
#include <qdebug.h>
+// This is needed for oracle oci when compiling with mingw-w64 headers
+#if defined(__MINGW64_VERSION_MAJOR) && defined(_WIN64)
+#define _int64 __int64
+#endif
+
+
#include <oci.h>
#ifdef max
#undef max
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index fab3ab3..9f7d267 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE
#define ODBC_CHECK_DRIVER
// newer platform SDKs use SQLLEN instead of SQLINTEGER
-#if defined(WIN32) && (_MSC_VER < 1300)
+#if defined(WIN32) && (_MSC_VER < 1300) && !defined(__MINGW64_VERSION_MAJOR)
# define QSQLLEN SQLINTEGER
# define QSQLULEN SQLUINTEGER
#else
diff --git a/src/svg/qgraphicssvgitem.cpp b/src/svg/qgraphicssvgitem.cpp
index 7e80e50..69ff7a3 100644
--- a/src/svg/qgraphicssvgitem.cpp
+++ b/src/svg/qgraphicssvgitem.cpp
@@ -267,6 +267,7 @@ int QGraphicsSvgItem::type() const
/*!
\property QGraphicsSvgItem::maximumCacheSize
+ \since 4.6
This property holds the maximum size of the device coordinate cache
for this item.
@@ -312,7 +313,8 @@ QSize QGraphicsSvgItem::maximumCacheSize() const
/*!
\property QGraphicsSvgItem::elementId
-
+ \since 4.6
+
This property holds the element's XML ID.
*/
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index e625c69..2ea9ca7 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -313,8 +313,6 @@ SUBDIRS += \
qmediaserviceprovider \
qmediatimerange \
qvideowidget \
- qdeclarativeaudio \
- qdeclarativevideo \
qspinbox \
qsplitter \
qsql \
@@ -485,6 +483,9 @@ contains(QT_CONFIG,opengl):SUBDIRS += qgl qglbuffer qgl_threads
contains(QT_CONFIG,qt3support):!wince*:SUBDIRS += $$Q3SUBDIRS
+contains(QT_CONFIG,multimedia):contains(QT_CONFIG,declarative):SUBDIRS += qdeclarativeaudio \
+ qdeclarativevideo
+
contains(QT_CONFIG, OdfWriter):SUBDIRS += qzip qtextodfwriter
mac: {
SUBDIRS += macgui \
@@ -608,10 +609,3 @@ contains(QT_CONFIG, declarative): SUBDIRS += declarative
xmlpatternsxqts \
xmlpatternsxslts
-
-############### make check recursively for testcases ##################
-check.CONFIG = recursive
-check.recurse = $$SUBDIRS
-check.recurse_target = check
-QMAKE_EXTRA_TARGETS += check
-###########################################################
diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro
index 669213c..42ff523 100644
--- a/tests/auto/declarative/declarative.pro
+++ b/tests/auto/declarative/declarative.pro
@@ -41,7 +41,7 @@ SUBDIRS += \
qdeclarativelanguage \ # Cover
qdeclarativelistreference \ # Cover
qdeclarativelistmodel \ # Cover
- qdeclarativemetaproperty \ # Cover
+ qdeclarativeproperty \ # Cover
qdeclarativemetatype \ # Cover
qdeclarativemoduleplugin \ # Cover
qdeclarativenumberformatter \ # Cover
diff --git a/tests/auto/declarative/qdeclarativeconnection/data/test-connection.qml b/tests/auto/declarative/qdeclarativeconnection/data/test-connection.qml
index 9534621..81ab599 100644
--- a/tests/auto/declarative/qdeclarativeconnection/data/test-connection.qml
+++ b/tests/auto/declarative/qdeclarativeconnection/data/test-connection.qml
@@ -6,5 +6,5 @@ Item {
property bool tested: false
signal testMe
- Connection { sender: screen; signal: "widthChanged()"; script: screen.tested = true }
+ Connections { target: screen; onWidthChanged: screen.tested = true }
}
diff --git a/tests/auto/declarative/qdeclarativeconnection/data/test-connection2.qml b/tests/auto/declarative/qdeclarativeconnection/data/test-connection2.qml
index 65fe23a..22e9422 100644
--- a/tests/auto/declarative/qdeclarativeconnection/data/test-connection2.qml
+++ b/tests/auto/declarative/qdeclarativeconnection/data/test-connection2.qml
@@ -1,3 +1,3 @@
import Qt 4.6
-Connection { id: connection; sender: connection; signal: "widthChanged()"; script: 1 == 1 }
+Connections { id: connection; target: connection; onTargetChanged: 1 == 1 }
diff --git a/tests/auto/declarative/qdeclarativeconnection/data/test-connection3.qml b/tests/auto/declarative/qdeclarativeconnection/data/test-connection3.qml
index 32133f9..6e396c0 100644
--- a/tests/auto/declarative/qdeclarativeconnection/data/test-connection3.qml
+++ b/tests/auto/declarative/qdeclarativeconnection/data/test-connection3.qml
@@ -1,3 +1,3 @@
import Qt 4.6
-Connection {}
+Connections {}
diff --git a/tests/auto/declarative/qdeclarativeconnection/data/trimming.qml b/tests/auto/declarative/qdeclarativeconnection/data/trimming.qml
index c27dc46..736d5e8 100644
--- a/tests/auto/declarative/qdeclarativeconnection/data/trimming.qml
+++ b/tests/auto/declarative/qdeclarativeconnection/data/trimming.qml
@@ -6,5 +6,5 @@ Item {
property string tested
signal testMe(int param1, string param2)
- Connection { sender: screen; signal: "testMe(param1, param2)"; script: screen.tested = param2 + param1 }
+ Connections { target: screen; onTestMe: screen.tested = param2 + param1 }
}
diff --git a/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp b/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp
index adf343f..f4914e1 100644
--- a/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp
+++ b/tests/auto/declarative/qdeclarativeconnection/tst_qdeclarativeconnection.cpp
@@ -41,7 +41,7 @@
#include <qtest.h>
#include <QtDeclarative/qdeclarativeengine.h>
#include <QtDeclarative/qdeclarativecomponent.h>
-#include <private/qdeclarativeconnection_p.h>
+#include <private/qdeclarativeconnections_p.h>
#include <private/qdeclarativeitem_p.h>
#include "../../../shared/util.h"
#include <QtDeclarative/qdeclarativescriptstring.h>
@@ -71,12 +71,10 @@ void tst_qdeclarativeconnection::defaultValues()
{
QDeclarativeEngine engine;
QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/test-connection3.qml"));
- QDeclarativeConnection *item = qobject_cast<QDeclarativeConnection*>(c.create());
+ QDeclarativeConnections *item = qobject_cast<QDeclarativeConnections*>(c.create());
QVERIFY(item != 0);
- QVERIFY(item->signalSender() == 0);
- QCOMPARE(item->script().script(), QString());
- QCOMPARE(item->signal(), QString());
+ QVERIFY(item->target() == 0);
delete item;
}
@@ -85,14 +83,12 @@ void tst_qdeclarativeconnection::properties()
{
QDeclarativeEngine engine;
QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/test-connection2.qml"));
- QDeclarativeConnection *item = qobject_cast<QDeclarativeConnection*>(c.create());
+ QDeclarativeConnections *item = qobject_cast<QDeclarativeConnections*>(c.create());
QVERIFY(item != 0);
QVERIFY(item != 0);
- QVERIFY(item->signalSender() == item);
- QCOMPARE(item->script().script(), QString("1 == 1"));
- QCOMPARE(item->signal(), QString("widthChanged()"));
+ QVERIFY(item->target() == item);
delete item;
}
diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
index 8d5a1f6..0c3ca76 100644
--- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
+++ b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
@@ -49,7 +49,7 @@
#include <QtDeclarative/qdeclarativecontext.h>
#include <QtDeclarative/qdeclarativecomponent.h>
#include <QtDeclarative/qdeclarativeexpression.h>
-#include <QtDeclarative/qdeclarativemetaproperty.h>
+#include <QtDeclarative/qdeclarativeproperty.h>
#include <private/qdeclarativebinding_p.h>
#include <private/qdeclarativedebug_p.h>
@@ -58,7 +58,7 @@
#include <private/qdeclarativedebugservice_p.h>
#include <private/qdeclarativerectangle_p.h>
#include <private/qdeclarativemetatype_p.h>
-#include <private/qdeclarativemetaproperty_p.h>
+#include <private/qdeclarativeproperty_p.h>
#include "../shared/debugutil_p.h"
@@ -218,7 +218,7 @@ void tst_QDeclarativeDebug::recursiveObjectTest(QObject *o, const QDeclarativeDe
QCOMPARE(p.valueTypeName(), QString::fromUtf8(pmeta.typeName()));
QDeclarativeAbstractBinding *binding =
- QDeclarativeMetaPropertyPrivate::binding(QDeclarativeMetaProperty(o, p.name()));
+ QDeclarativePropertyPrivate::binding(QDeclarativeProperty(o, p.name()));
if (binding)
QCOMPARE(binding->expression(), p.binding());
diff --git a/tests/auto/declarative/qdeclarativeflickable/data/flickable02.qml b/tests/auto/declarative/qdeclarativeflickable/data/flickable02.qml
index 3e08359..4b82d5c 100644
--- a/tests/auto/declarative/qdeclarativeflickable/data/flickable02.qml
+++ b/tests/auto/declarative/qdeclarativeflickable/data/flickable02.qml
@@ -2,7 +2,7 @@ import Qt 4.6
Flickable {
width: 100; height: 100
- viewportWidth: row.width; viewportHeight: row.height
+ contentWidth: row.width; contentHeight: row.height
Row {
id: row
diff --git a/tests/auto/declarative/qdeclarativeflickable/data/flickable03.qml b/tests/auto/declarative/qdeclarativeflickable/data/flickable03.qml
index 3ed173d..49eed5a 100644
--- a/tests/auto/declarative/qdeclarativeflickable/data/flickable03.qml
+++ b/tests/auto/declarative/qdeclarativeflickable/data/flickable03.qml
@@ -2,7 +2,7 @@ import Qt 4.6
Flickable {
width: 100; height: 100
- viewportWidth: column.width; viewportHeight: column.height
+ contentWidth: column.width; contentHeight: column.height
Column {
id: column
diff --git a/tests/auto/declarative/qdeclarativeflickable/data/flickable04.qml b/tests/auto/declarative/qdeclarativeflickable/data/flickable04.qml
index 1425d85..40c4606 100644
--- a/tests/auto/declarative/qdeclarativeflickable/data/flickable04.qml
+++ b/tests/auto/declarative/qdeclarativeflickable/data/flickable04.qml
@@ -2,7 +2,7 @@ import Qt 4.6
Flickable {
width: 100; height: 100
- viewportWidth: column.width; viewportHeight: column.height
+ contentWidth: column.width; contentHeight: column.height
pressDelay: 200; overShoot: false; interactive: false
maximumFlickVelocity: 2000
diff --git a/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp b/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp
index 1c98c50..cb87977 100644
--- a/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp
+++ b/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp
@@ -81,12 +81,11 @@ void tst_qdeclarativeflickable::create()
QCOMPARE(obj->isAtXEnd(), false);
QCOMPARE(obj->isAtYBeginning(), true);
QCOMPARE(obj->isAtYEnd(), false);
- QCOMPARE(obj->viewportX(), 0.);
- QCOMPARE(obj->viewportY(), 0.);
+ QCOMPARE(obj->contentX(), 0.);
+ QCOMPARE(obj->contentY(), 0.);
QCOMPARE(obj->horizontalVelocity(), 0.);
QCOMPARE(obj->verticalVelocity(), 0.);
- QCOMPARE(obj->reportedVelocitySmoothing(), 100.);
QCOMPARE(obj->isInteractive(), true);
QCOMPARE(obj->overShoot(), true);
@@ -103,8 +102,8 @@ void tst_qdeclarativeflickable::horizontalViewportSize()
QDeclarativeFlickable *obj = qobject_cast<QDeclarativeFlickable*>(c.create());
QVERIFY(obj != 0);
- QCOMPARE(obj->viewportWidth(), 800.);
- QCOMPARE(obj->viewportHeight(), 300.);
+ QCOMPARE(obj->contentWidth(), 800.);
+ QCOMPARE(obj->contentHeight(), 300.);
QCOMPARE(obj->isAtXBeginning(), true);
QCOMPARE(obj->isAtXEnd(), false);
QCOMPARE(obj->isAtYBeginning(), true);
@@ -120,8 +119,8 @@ void tst_qdeclarativeflickable::verticalViewportSize()
QDeclarativeFlickable *obj = qobject_cast<QDeclarativeFlickable*>(c.create());
QVERIFY(obj != 0);
- QCOMPARE(obj->viewportWidth(), 200.);
- QCOMPARE(obj->viewportHeight(), 1200.);
+ QCOMPARE(obj->contentWidth(), 200.);
+ QCOMPARE(obj->contentHeight(), 1200.);
QCOMPARE(obj->isAtXBeginning(), true);
QCOMPARE(obj->isAtXEnd(), false);
QCOMPARE(obj->isAtYBeginning(), true);
diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp
index 9c9d1d3..2a60fee 100644
--- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp
+++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp
@@ -298,14 +298,14 @@ void tst_QDeclarativeGridView::inserted()
model.insertItem(i, "Hello", QString::number(i));
QTest::qWait(300);
- gridview->setViewportY(120);
+ gridview->setContentY(120);
QTest::qWait(300);
// Insert item outside visible area
model.insertItem(1, "Hello", "1324");
QTest::qWait(300);
- QVERIFY(gridview->viewportY() == 120);
+ QVERIFY(gridview->contentY() == 120);
delete canvas;
}
@@ -392,7 +392,7 @@ void tst_QDeclarativeGridView::removed()
}
// Remove items before visible
- gridview->setViewportY(120);
+ gridview->setContentY(120);
QTest::qWait(500);
gridview->setCurrentIndex(10);
@@ -400,7 +400,7 @@ void tst_QDeclarativeGridView::removed()
QTest::qWait(300);
// Setting currentIndex above shouldn't cause view to scroll
- QCOMPARE(gridview->viewportY(), 120.0);
+ QCOMPARE(gridview->contentY(), 120.0);
model.removeItem(1);
@@ -424,7 +424,7 @@ void tst_QDeclarativeGridView::removed()
QCOMPARE(gridview->currentIndex(), 9);
QVERIFY(gridview->currentItem() != oldCurrent);
- gridview->setViewportY(0);
+ gridview->setContentY(0);
// let transitions settle.
QTest::qWait(300);
@@ -441,7 +441,7 @@ void tst_QDeclarativeGridView::removed()
// remove item outside current view.
gridview->setCurrentIndex(32);
QTest::qWait(500);
- gridview->setViewportY(240);
+ gridview->setContentY(240);
model.removeItem(30);
QVERIFY(gridview->currentIndex() == 31);
@@ -449,7 +449,7 @@ void tst_QDeclarativeGridView::removed()
// remove current item beyond visible items.
gridview->setCurrentIndex(20);
QTest::qWait(500);
- gridview->setViewportY(0);
+ gridview->setContentY(0);
model.removeItem(20);
QTest::qWait(500);
@@ -459,7 +459,7 @@ void tst_QDeclarativeGridView::removed()
// remove item before current, but visible
gridview->setCurrentIndex(8);
QTest::qWait(500);
- gridview->setViewportY(240);
+ gridview->setContentY(240);
oldCurrent = gridview->currentItem();
model.removeItem(6);
QTest::qWait(500);
@@ -520,7 +520,7 @@ void tst_QDeclarativeGridView::moved()
QVERIFY(item->y() == (i/3)*60);
}
- gridview->setViewportY(120);
+ gridview->setContentY(120);
// move outside visible area
model.moveItem(1, 25);
@@ -638,13 +638,13 @@ void tst_QDeclarativeGridView::currentIndex()
QCOMPARE(gridview->currentIndex(), model.count()-1);
QTest::qWait(500);
- QCOMPARE(gridview->viewportY(), 279.0);
+ QCOMPARE(gridview->contentY(), 279.0);
gridview->moveCurrentIndexRight();
QCOMPARE(gridview->currentIndex(), 0);
QTest::qWait(500);
- QCOMPARE(gridview->viewportY(), 0.0);
+ QCOMPARE(gridview->contentY(), 0.0);
// Test keys
qApp->setActiveWindow(canvas);
@@ -829,7 +829,7 @@ void tst_QDeclarativeGridView::positionViewAtIndex()
// Position on a currently visible item
gridview->positionViewAtIndex(4);
- QCOMPARE(gridview->viewportY(), 60.);
+ QCOMPARE(gridview->contentY(), 60.);
// Confirm items positioned correctly
itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count();
@@ -843,7 +843,7 @@ void tst_QDeclarativeGridView::positionViewAtIndex()
// Position on an item beyond the visible items
gridview->positionViewAtIndex(21);
- QCOMPARE(gridview->viewportY(), 420.);
+ QCOMPARE(gridview->contentY(), 420.);
// Confirm items positioned correctly
itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count();
@@ -857,7 +857,7 @@ void tst_QDeclarativeGridView::positionViewAtIndex()
// Position on an item that would leave empty space if positioned at the top
gridview->positionViewAtIndex(31);
- QCOMPARE(gridview->viewportY(), 520.);
+ QCOMPARE(gridview->contentY(), 520.);
// Confirm items positioned correctly
itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count();
@@ -871,7 +871,7 @@ void tst_QDeclarativeGridView::positionViewAtIndex()
// Position at the beginning again
gridview->positionViewAtIndex(0);
- QCOMPARE(gridview->viewportY(), 0.);
+ QCOMPARE(gridview->contentY(), 0.);
// Confirm items positioned correctly
itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count();
diff --git a/tests/auto/declarative/qdeclarativelanguage/testtypes.h b/tests/auto/declarative/qdeclarativelanguage/testtypes.h
index fc1ede7..8ac7aa6 100644
--- a/tests/auto/declarative/qdeclarativelanguage/testtypes.h
+++ b/tests/auto/declarative/qdeclarativelanguage/testtypes.h
@@ -52,7 +52,7 @@
#include <QtDeclarative/qdeclarativeparserstatus.h>
#include <QtDeclarative/qdeclarativepropertyvaluesource.h>
#include <QtDeclarative/qdeclarativescriptstring.h>
-#include <QtDeclarative/qdeclarativemetaproperty.h>
+#include <QtDeclarative/qdeclarativeproperty.h>
QVariant myCustomVariantTypeConverter(const QString &data);
@@ -480,8 +480,8 @@ public:
MyPropertyValueSource()
: QDeclarativePropertyValueSource() {}
- QDeclarativeMetaProperty prop;
- virtual void setTarget(const QDeclarativeMetaProperty &p)
+ QDeclarativeProperty prop;
+ virtual void setTarget(const QDeclarativeProperty &p)
{
prop = p;
}
diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
index 2907757..1ba4454 100644
--- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
+++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
@@ -46,7 +46,7 @@
#include <QtCore/qfileinfo.h>
#include <QtCore/qdir.h>
-#include <private/qdeclarativemetaproperty_p.h>
+#include <private/qdeclarativeproperty_p.h>
#include <private/qdeclarativemetatype_p.h>
#include "testtypes.h"
@@ -747,14 +747,14 @@ void tst_qdeclarativelanguage::valueTypes()
// ###
#if 0
- QDeclarativeMetaProperty p(object, "rectProperty.x");
+ QDeclarativeProperty p(object, "rectProperty.x");
QCOMPARE(p.read(), QVariant(12));
p.write(13);
QCOMPARE(p.read(), QVariant(13));
- quint32 r = QDeclarativeMetaPropertyPrivate::saveValueType(p.coreIndex(), p.valueTypeCoreIndex());
- QDeclarativeMetaProperty p2;
- QDeclarativeMetaPropertyPrivate::restore(p2, r, object);
+ quint32 r = QDeclarativePropertyPrivate::saveValueType(p.coreIndex(), p.valueTypeCoreIndex());
+ QDeclarativeProperty p2;
+ QDeclarativePropertyPrivate::restore(p2, r, object);
QCOMPARE(p2.read(), QVariant(13));
#endif
}
diff --git a/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp b/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp
index fdcb98a..1b7af19 100644
--- a/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp
+++ b/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp
@@ -47,7 +47,7 @@
#include <QDeclarativeComponent>
#include <QtDeclarative/qdeclarative.h>
#include <QtDeclarative/qdeclarativeprivate.h>
-#include <QtDeclarative/qdeclarativemetaproperty.h>
+#include <QtDeclarative/qdeclarativeproperty.h>
#include <QDebug>
inline QUrl TEST_FILE(const QString &filename)
@@ -530,7 +530,7 @@ void tst_qdeclarativelistreference::qmlmetaproperty()
tt.data.append(0);
tt.data.append(&tt);
- QDeclarativeMetaProperty prop(&tt, QLatin1String("data"));
+ QDeclarativeProperty prop(&tt, QLatin1String("data"));
QVariant v = prop.read();
QVERIFY(v.userType() == qMetaTypeId<QDeclarativeListReference>());
QDeclarativeListReference ref = qvariant_cast<QDeclarativeListReference>(v);
@@ -546,11 +546,11 @@ void tst_qdeclarativelistreference::engineTypes()
QObject *o = component.create();
QVERIFY(o);
- QDeclarativeMetaProperty p1(o, QLatin1String("myList"));
- QVERIFY(p1.propertyTypeCategory() == QDeclarativeMetaProperty::Normal);
+ QDeclarativeProperty p1(o, QLatin1String("myList"));
+ QVERIFY(p1.propertyTypeCategory() == QDeclarativeProperty::Normal);
- QDeclarativeMetaProperty p2(o, QLatin1String("myList"), engine.rootContext());
- QVERIFY(p2.propertyTypeCategory() == QDeclarativeMetaProperty::List);
+ QDeclarativeProperty p2(o, QLatin1String("myList"), engine.rootContext());
+ QVERIFY(p2.propertyTypeCategory() == QDeclarativeProperty::List);
QVariant v = p2.read();
QVERIFY(v.userType() == qMetaTypeId<QDeclarativeListReference>());
QDeclarativeListReference ref = qvariant_cast<QDeclarativeListReference>(v);
diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
index 9100522..f15f26b 100644
--- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
+++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
@@ -486,14 +486,14 @@ void tst_QDeclarativeListView::inserted()
model.insertItem(i, "Hello", QString::number(i));
QTest::qWait(500);
- listview->setViewportY(80);
+ listview->setContentY(80);
QTest::qWait(500);
// Insert item outside visible area
model.insertItem(1, "Hello", "1324");
QTest::qWait(500);
- QVERIFY(listview->viewportY() == 80);
+ QVERIFY(listview->contentY() == 80);
// Confirm items positioned correctly
for (int i = 5; i < 5+15; ++i) {
@@ -591,7 +591,7 @@ void tst_QDeclarativeListView::removed(bool animated)
}
// Remove items before visible
- listview->setViewportY(80);
+ listview->setContentY(80);
listview->setCurrentIndex(10);
model.removeItem(1); // post: top item will be at 40
@@ -615,7 +615,7 @@ void tst_QDeclarativeListView::removed(bool animated)
QCOMPARE(listview->currentIndex(), 9);
QVERIFY(listview->currentItem() != oldCurrent);
- listview->setViewportY(40); // That's the top now
+ listview->setContentY(40); // That's the top now
// let transitions settle.
QTest::qWait(500);
@@ -631,7 +631,7 @@ void tst_QDeclarativeListView::removed(bool animated)
// remove current item beyond visible items.
listview->setCurrentIndex(20);
QTest::qWait(500);
- listview->setViewportY(40);
+ listview->setContentY(40);
model.removeItem(20);
QTest::qWait(500);
@@ -682,7 +682,7 @@ void tst_QDeclarativeListView::clear()
QVERIFY(listview->count() == 0);
QVERIFY(listview->currentItem() == 0);
- QVERIFY(listview->viewportY() == 0);
+ QVERIFY(listview->contentY() == 0);
delete canvas;
}
@@ -740,7 +740,7 @@ void tst_QDeclarativeListView::moved()
QVERIFY(item->y() == i*20);
}
- listview->setViewportY(80);
+ listview->setContentY(80);
// move outside visible area
model.moveItem(1, 18);
@@ -812,7 +812,7 @@ void tst_QDeclarativeListView::enforceRange()
// view should be positioned at the top of the range.
QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", 0);
QVERIFY(item);
- QCOMPARE(listview->viewportY(), -100.0);
+ QCOMPARE(listview->contentY(), -100.0);
QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 0);
QVERIFY(name != 0);
@@ -822,7 +822,7 @@ void tst_QDeclarativeListView::enforceRange()
QCOMPARE(number->text(), model.number(0));
// Check currentIndex is updated when viewport moves
- listview->setViewportY(20);
+ listview->setContentY(20);
QTest::qWait(500);
QCOMPARE(listview->currentIndex(), 6);
@@ -948,10 +948,10 @@ void tst_QDeclarativeListView::sections()
QCOMPARE(listview->currentSection(), QString("0"));
- listview->setViewportY(140);
+ listview->setContentY(140);
QCOMPARE(listview->currentSection(), QString("1"));
- listview->setViewportY(20);
+ listview->setContentY(20);
QCOMPARE(listview->currentSection(), QString("0"));
item = findItem<QDeclarativeItem>(viewport, "wrapper", 1);
@@ -1012,13 +1012,13 @@ void tst_QDeclarativeListView::currentIndex()
QCOMPARE(listview->currentIndex(), model.count()-1);
QTest::qWait(1000);
- QCOMPARE(listview->viewportY(), 279.0);
+ QCOMPARE(listview->contentY(), 279.0);
listview->incrementCurrentIndex();
QCOMPARE(listview->currentIndex(), 0);
QTest::qWait(1000);
- QCOMPARE(listview->viewportY(), 0.0);
+ QCOMPARE(listview->contentY(), 0.0);
// Test keys
canvas->show();
@@ -1181,7 +1181,7 @@ void tst_QDeclarativeListView::positionViewAtIndex()
// Position on a currently visible item
listview->positionViewAtIndex(3);
- QCOMPARE(listview->viewportY(), 60.);
+ QCOMPARE(listview->contentY(), 60.);
// Confirm items positioned correctly
itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count();
@@ -1194,7 +1194,7 @@ void tst_QDeclarativeListView::positionViewAtIndex()
// Position on an item beyond the visible items
listview->positionViewAtIndex(22);
- QCOMPARE(listview->viewportY(), 440.);
+ QCOMPARE(listview->contentY(), 440.);
// Confirm items positioned correctly
itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count();
@@ -1207,7 +1207,7 @@ void tst_QDeclarativeListView::positionViewAtIndex()
// Position on an item that would leave empty space if positioned at the top
listview->positionViewAtIndex(28);
- QCOMPARE(listview->viewportY(), 480.);
+ QCOMPARE(listview->contentY(), 480.);
// Confirm items positioned correctly
itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count();
@@ -1220,7 +1220,7 @@ void tst_QDeclarativeListView::positionViewAtIndex()
// Position at the beginning again
listview->positionViewAtIndex(0);
- QCOMPARE(listview->viewportY(), 0.);
+ QCOMPARE(listview->contentY(), 0.);
// Confirm items positioned correctly
itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count();
diff --git a/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp b/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp
index 4333e02..818f108 100644
--- a/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp
+++ b/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp
@@ -97,7 +97,7 @@ class ValueSourceTestType : public QObject, public QDeclarativePropertyValueSour
Q_OBJECT
Q_INTERFACES(QDeclarativePropertyValueSource)
public:
- virtual void setTarget(const QDeclarativeMetaProperty &) {}
+ virtual void setTarget(const QDeclarativeProperty &) {}
};
QML_DECLARE_TYPE(ValueSourceTestType);
@@ -106,7 +106,7 @@ class ValueInterceptorTestType : public QObject, public QDeclarativePropertyValu
Q_OBJECT
Q_INTERFACES(QDeclarativePropertyValueInterceptor)
public:
- virtual void setTarget(const QDeclarativeMetaProperty &) {}
+ virtual void setTarget(const QDeclarativeProperty &) {}
virtual void write(const QVariant &) {}
};
QML_DECLARE_TYPE(ValueInterceptorTestType);
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/com/nokia/AutoTestQmlPluginType/qmldir b/tests/auto/declarative/qdeclarativemoduleplugin/com/nokia/AutoTestQmlPluginType/qmldir
new file mode 100644
index 0000000..0a8b5d4
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/com/nokia/AutoTestQmlPluginType/qmldir
@@ -0,0 +1 @@
+plugin plugin
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.cpp b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.cpp
index 154693c..fd94cc6 100644
--- a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.cpp
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.cpp
@@ -73,15 +73,10 @@ public:
qWarning("plugin created");
}
- QStringList keys() const
- {
- return QStringList() << QLatin1String("com.nokia.AutoTestQmlPluginType");
- }
-
- void initialize(QDeclarativeEngine*, const char *uri)
+ void registerTypes(const char *uri)
{
Q_ASSERT(QLatin1String(uri) == "com.nokia.AutoTestQmlPluginType");
- QML_REGISTER_TYPE(com.nokia.AutoTestQmlPluginType,1,0,MyPluginType,MyPluginType);
+ qmlRegisterType<MyPluginType>(uri, 1, 0, "MyPluginType");
}
};
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro
index 348080d..035cb7d 100644
--- a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro
@@ -2,4 +2,5 @@ TEMPLATE = lib
CONFIG += plugin
SOURCES = plugin.cpp
QT = core declarative
-DESTDIR = qdeclarativemodules
+DESTDIR = ../com/nokia/AutoTestQmlPluginType
+
diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro
index dd65511..d895ed0 100644
--- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro
+++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.pro
@@ -1,4 +1,5 @@
load(qttest_p4)
SOURCES = tst_qdeclarativemoduleplugin.cpp
QT += declarative
+CONFIG -= app_bundle
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro
index 7170469..22e50cc 100644
--- a/tests/auto/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro
+++ b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro
@@ -2,4 +2,4 @@ load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
macx:CONFIG -= app_bundle
-SOURCES += tst_qdeclarativemetaproperty.cpp
+SOURCES += tst_qdeclarativeproperty.cpp
diff --git a/tests/auto/declarative/qdeclarativemetaproperty/tst_qdeclarativemetaproperty.cpp b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp
index a7e9d0d..0333d98 100644
--- a/tests/auto/declarative/qdeclarativemetaproperty/tst_qdeclarativemetaproperty.cpp
+++ b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp
@@ -41,8 +41,8 @@
#include <qtest.h>
#include <QtDeclarative/qdeclarativeengine.h>
#include <QtDeclarative/qdeclarativecomponent.h>
-#include <QtDeclarative/qdeclarativemetaproperty.h>
-#include <QtDeclarative/private/qdeclarativemetaproperty_p.h>
+#include <QtDeclarative/qdeclarativeproperty.h>
+#include <QtDeclarative/private/qdeclarativeproperty_p.h>
#include <private/qguard_p.h>
#include <private/qdeclarativebinding_p.h>
#include <QtGui/QLineEdit>
@@ -90,11 +90,11 @@ private:
QML_DECLARE_TYPE(MyContainer);
QML_DECLARE_TYPEINFO(MyContainer, QML_HAS_ATTACHED_PROPERTIES)
-class tst_qdeclarativemetaproperty : public QObject
+class tst_qdeclarativeproperty : public QObject
{
Q_OBJECT
public:
- tst_qdeclarativemetaproperty() {}
+ tst_qdeclarativeproperty() {}
private slots:
void initTestCase();
@@ -126,9 +126,9 @@ private:
QDeclarativeEngine engine;
};
-void tst_qdeclarativemetaproperty::qmlmetaproperty()
+void tst_qdeclarativeproperty::qmlmetaproperty()
{
- QDeclarativeMetaProperty prop;
+ QDeclarativeProperty prop;
QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
QVERIFY(binding != 0);
@@ -140,35 +140,34 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty()
QCOMPARE(prop.name(), QString());
QCOMPARE(prop.read(), QVariant());
QCOMPARE(prop.write(QVariant()), false);
- QCOMPARE(prop.hasChangedNotifier(), false);
- QCOMPARE(prop.needsChangedNotifier(), false);
- QCOMPARE(prop.connectNotifier(0, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, 0), false);
- QCOMPARE(prop.connectNotifier(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, -1), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), false);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
QVERIFY(prop.method().signature() == 0);
- QCOMPARE(prop.type(), QDeclarativeMetaProperty::Invalid);
+ QCOMPARE(prop.type(), QDeclarativeProperty::Invalid);
QCOMPARE(prop.isProperty(), false);
- QCOMPARE(prop.isDefault(), false);
QCOMPARE(prop.isWritable(), false);
QCOMPARE(prop.isDesignable(), false);
QCOMPARE(prop.isResettable(), false);
QCOMPARE(prop.isValid(), false);
QCOMPARE(prop.object(), (QObject *)0);
- QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory);
QCOMPARE(prop.propertyType(), 0);
QCOMPARE(prop.propertyTypeName(), (const char *)0);
QVERIFY(prop.property().name() == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
QVERIFY(binding == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
QVERIFY(expression == 0);
- QCOMPARE(prop.coreIndex(), -1);
- QCOMPARE(QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), -1);
+ QCOMPARE(prop.index(), -1);
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
delete obj;
}
@@ -181,6 +180,7 @@ class PropertyObject : public QObject
Q_PROPERTY(QRect wrectProperty READ wrectProperty WRITE setWRectProperty);
Q_PROPERTY(QUrl url READ url WRITE setUrl);
Q_PROPERTY(int resettableProperty READ resettableProperty WRITE setResettableProperty RESET resetProperty);
+ Q_PROPERTY(int propertyWithNotify READ propertyWithNotify WRITE setPropertyWithNotify NOTIFY oddlyNamedNotifySignal)
Q_CLASSINFO("DefaultProperty", "defaultProperty");
public:
@@ -199,24 +199,29 @@ public:
void setResettableProperty(int r) { m_resetProperty = r; }
void resetProperty() { m_resetProperty = 9; }
+ int propertyWithNotify() const { return m_propertyWithNotify; }
+ void setPropertyWithNotify(int i) { m_propertyWithNotify = i; emit oddlyNamedNotifySignal(); }
+
signals:
void clicked();
+ void oddlyNamedNotifySignal();
private:
int m_resetProperty;
QRect m_rect;
QUrl m_url;
+ int m_propertyWithNotify;
};
QML_DECLARE_TYPE(PropertyObject);
-void tst_qdeclarativemetaproperty::qmlmetaproperty_object()
+void tst_qdeclarativeproperty::qmlmetaproperty_object()
{
QObject object; // Has no default property
PropertyObject dobject; // Has default property
{
- QDeclarativeMetaProperty prop(&object);
+ QDeclarativeProperty prop(&object);
QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
QVERIFY(binding != 0);
@@ -228,41 +233,40 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object()
QCOMPARE(prop.name(), QString());
QCOMPARE(prop.read(), QVariant());
QCOMPARE(prop.write(QVariant()), false);
- QCOMPARE(prop.hasChangedNotifier(), false);
- QCOMPARE(prop.needsChangedNotifier(), false);
- QCOMPARE(prop.connectNotifier(0, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, 0), false);
- QCOMPARE(prop.connectNotifier(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, -1), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), false);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
QVERIFY(prop.method().signature() == 0);
- QCOMPARE(prop.type(), QDeclarativeMetaProperty::Invalid);
+ QCOMPARE(prop.type(), QDeclarativeProperty::Invalid);
QCOMPARE(prop.isProperty(), false);
- QCOMPARE(prop.isDefault(), false);
QCOMPARE(prop.isWritable(), false);
QCOMPARE(prop.isDesignable(), false);
QCOMPARE(prop.isResettable(), false);
QCOMPARE(prop.isValid(), false);
QCOMPARE(prop.object(), (QObject *)0);
- QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory);
QCOMPARE(prop.propertyType(), 0);
QCOMPARE(prop.propertyTypeName(), (const char *)0);
QVERIFY(prop.property().name() == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
QVERIFY(binding == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
QVERIFY(expression == 0);
- QCOMPARE(prop.coreIndex(), -1);
- QCOMPARE(QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), -1);
+ QCOMPARE(prop.index(), -1);
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
delete obj;
}
{
- QDeclarativeMetaProperty prop(&dobject);
+ QDeclarativeProperty prop(&dobject);
QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
binding->setTarget(prop);
@@ -275,49 +279,48 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object()
QCOMPARE(prop.name(), QString("defaultProperty"));
QCOMPARE(prop.read(), QVariant(10));
QCOMPARE(prop.write(QVariant()), false);
- QCOMPARE(prop.hasChangedNotifier(), false);
- QCOMPARE(prop.needsChangedNotifier(), true);
- QCOMPARE(prop.connectNotifier(0, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, 0), false);
- QCOMPARE(prop.connectNotifier(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, -1), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), true);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
QVERIFY(prop.method().signature() == 0);
- QCOMPARE(prop.type(), (QDeclarativeMetaProperty::Type)(QDeclarativeMetaProperty::Property | QDeclarativeMetaProperty::Default));
+ QCOMPARE(prop.type(), QDeclarativeProperty::Property);
QCOMPARE(prop.isProperty(), true);
- QCOMPARE(prop.isDefault(), true);
QCOMPARE(prop.isWritable(), false);
QCOMPARE(prop.isDesignable(), true);
QCOMPARE(prop.isResettable(), false);
QCOMPARE(prop.isValid(), true);
QCOMPARE(prop.object(), &dobject);
- QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::Normal);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal);
QCOMPARE(prop.propertyType(), (int)QVariant::Int);
QCOMPARE(prop.propertyTypeName(), "int");
QCOMPARE(QString(prop.property().name()), QString("defaultProperty"));
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int");
- QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
QVERIFY(binding != 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == binding);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
QVERIFY(expression == 0);
- QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfProperty("defaultProperty"));
- QCOMPARE(QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), -1);
+ QCOMPARE(prop.index(), dobject.metaObject()->indexOfProperty("defaultProperty"));
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
delete obj;
}
}
-void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string()
+void tst_qdeclarativeproperty::qmlmetaproperty_object_string()
{
QObject object;
PropertyObject dobject;
{
- QDeclarativeMetaProperty prop(&object, QString("defaultProperty"));
+ QDeclarativeProperty prop(&object, QString("defaultProperty"));
QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
QVERIFY(binding != 0);
@@ -329,41 +332,40 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string()
QCOMPARE(prop.name(), QString());
QCOMPARE(prop.read(), QVariant());
QCOMPARE(prop.write(QVariant()), false);
- QCOMPARE(prop.hasChangedNotifier(), false);
- QCOMPARE(prop.needsChangedNotifier(), false);
- QCOMPARE(prop.connectNotifier(0, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, 0), false);
- QCOMPARE(prop.connectNotifier(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, -1), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), false);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
QVERIFY(prop.method().signature() == 0);
- QCOMPARE(prop.type(), QDeclarativeMetaProperty::Invalid);
+ QCOMPARE(prop.type(), QDeclarativeProperty::Invalid);
QCOMPARE(prop.isProperty(), false);
- QCOMPARE(prop.isDefault(), false);
QCOMPARE(prop.isWritable(), false);
QCOMPARE(prop.isDesignable(), false);
QCOMPARE(prop.isResettable(), false);
QCOMPARE(prop.isValid(), false);
QCOMPARE(prop.object(), (QObject *)0);
- QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory);
QCOMPARE(prop.propertyType(), 0);
QCOMPARE(prop.propertyTypeName(), (const char *)0);
QVERIFY(prop.property().name() == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
QVERIFY(binding == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
QVERIFY(expression == 0);
- QCOMPARE(prop.coreIndex(), -1);
- QCOMPARE(QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), -1);
+ QCOMPARE(prop.index(), -1);
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
delete obj;
}
{
- QDeclarativeMetaProperty prop(&dobject, QString("defaultProperty"));
+ QDeclarativeProperty prop(&dobject, QString("defaultProperty"));
QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
binding->setTarget(prop);
@@ -376,43 +378,42 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string()
QCOMPARE(prop.name(), QString("defaultProperty"));
QCOMPARE(prop.read(), QVariant(10));
QCOMPARE(prop.write(QVariant()), false);
- QCOMPARE(prop.hasChangedNotifier(), false);
- QCOMPARE(prop.needsChangedNotifier(), true);
- QCOMPARE(prop.connectNotifier(0, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, 0), false);
- QCOMPARE(prop.connectNotifier(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, -1), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), true);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
QVERIFY(prop.method().signature() == 0);
- QCOMPARE(prop.type(), QDeclarativeMetaProperty::Property);
+ QCOMPARE(prop.type(), QDeclarativeProperty::Property);
QCOMPARE(prop.isProperty(), true);
- QCOMPARE(prop.isDefault(), false);
QCOMPARE(prop.isWritable(), false);
QCOMPARE(prop.isDesignable(), true);
QCOMPARE(prop.isResettable(), false);
QCOMPARE(prop.isValid(), true);
QCOMPARE(prop.object(), &dobject);
- QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::Normal);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal);
QCOMPARE(prop.propertyType(), (int)QVariant::Int);
QCOMPARE(prop.propertyTypeName(), "int");
QCOMPARE(QString(prop.property().name()), QString("defaultProperty"));
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int");
- QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
QVERIFY(binding != 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == binding);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
QVERIFY(expression == 0);
- QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfProperty("defaultProperty"));
- QCOMPARE(QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), -1);
+ QCOMPARE(prop.index(), dobject.metaObject()->indexOfProperty("defaultProperty"));
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
delete obj;
}
{
- QDeclarativeMetaProperty prop(&dobject, QString("onClicked"));
+ QDeclarativeProperty prop(&dobject, QString("onClicked"));
QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
binding->setTarget(prop);
@@ -425,48 +426,94 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string()
QCOMPARE(prop.name(), QString("onClicked"));
QCOMPARE(prop.read(), QVariant());
QCOMPARE(prop.write(QVariant("Hello")), false);
- QCOMPARE(prop.hasChangedNotifier(), false);
- QCOMPARE(prop.needsChangedNotifier(), false);
- QCOMPARE(prop.connectNotifier(0, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, 0), false);
- QCOMPARE(prop.connectNotifier(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, -1), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), false);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
QCOMPARE(QString(prop.method().signature()), QString("clicked()"));
- QCOMPARE(prop.type(), QDeclarativeMetaProperty::SignalProperty);
+ QCOMPARE(prop.type(), QDeclarativeProperty::SignalProperty);
+ QCOMPARE(prop.isProperty(), false);
+ QCOMPARE(prop.isWritable(), false);
+ QCOMPARE(prop.isDesignable(), false);
+ QCOMPARE(prop.isResettable(), false);
+ QCOMPARE(prop.isValid(), true);
+ QCOMPARE(prop.object(), &dobject);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory);
+ QCOMPARE(prop.propertyType(), 0);
+ QCOMPARE(prop.propertyTypeName(), (const char *)0);
+ QCOMPARE(prop.property().name(), (const char *)0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(binding == 0);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(expression != 0);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression);
+ QCOMPARE(prop.index(), dobject.metaObject()->indexOfMethod("clicked()"));
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
+
+ delete obj;
+ }
+
+ {
+ QDeclarativeProperty prop(&dobject, QString("onPropertyWithNotifyChanged"));
+
+ QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
+ binding->setTarget(prop);
+ QVERIFY(binding != 0);
+ QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression());
+ QVERIFY(expression != 0);
+
+ QObject *obj = new QObject;
+
+ QCOMPARE(prop.name(), QString("onOddlyNamedNotifySignal"));
+ QCOMPARE(prop.read(), QVariant());
+ QCOMPARE(prop.write(QVariant("Hello")), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), false);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
+ QCOMPARE(QString(prop.method().signature()), QString("oddlyNamedNotifySignal()"));
+ QCOMPARE(prop.type(), QDeclarativeProperty::SignalProperty);
QCOMPARE(prop.isProperty(), false);
- QCOMPARE(prop.isDefault(), false);
QCOMPARE(prop.isWritable(), false);
QCOMPARE(prop.isDesignable(), false);
QCOMPARE(prop.isResettable(), false);
QCOMPARE(prop.isValid(), true);
QCOMPARE(prop.object(), &dobject);
- QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory);
QCOMPARE(prop.propertyType(), 0);
QCOMPARE(prop.propertyTypeName(), (const char *)0);
QCOMPARE(prop.property().name(), (const char *)0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
QVERIFY(binding == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
QVERIFY(expression != 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == expression);
- QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfMethod("clicked()"));
- QCOMPARE(QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), -1);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression);
+ QCOMPARE(prop.index(), dobject.metaObject()->indexOfMethod("oddlyNamedNotifySignal()"));
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
delete obj;
}
}
-void tst_qdeclarativemetaproperty::qmlmetaproperty_object_context()
+void tst_qdeclarativeproperty::qmlmetaproperty_object_context()
{
QObject object; // Has no default property
PropertyObject dobject; // Has default property
{
- QDeclarativeMetaProperty prop(&object, engine.rootContext());
+ QDeclarativeProperty prop(&object, engine.rootContext());
QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
QVERIFY(binding != 0);
@@ -478,41 +525,40 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_context()
QCOMPARE(prop.name(), QString());
QCOMPARE(prop.read(), QVariant());
QCOMPARE(prop.write(QVariant()), false);
- QCOMPARE(prop.hasChangedNotifier(), false);
- QCOMPARE(prop.needsChangedNotifier(), false);
- QCOMPARE(prop.connectNotifier(0, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, 0), false);
- QCOMPARE(prop.connectNotifier(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, -1), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), false);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
QVERIFY(prop.method().signature() == 0);
- QCOMPARE(prop.type(), QDeclarativeMetaProperty::Invalid);
+ QCOMPARE(prop.type(), QDeclarativeProperty::Invalid);
QCOMPARE(prop.isProperty(), false);
- QCOMPARE(prop.isDefault(), false);
QCOMPARE(prop.isWritable(), false);
QCOMPARE(prop.isDesignable(), false);
QCOMPARE(prop.isResettable(), false);
QCOMPARE(prop.isValid(), false);
QCOMPARE(prop.object(), (QObject *)0);
- QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory);
QCOMPARE(prop.propertyType(), 0);
QCOMPARE(prop.propertyTypeName(), (const char *)0);
QVERIFY(prop.property().name() == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
QVERIFY(binding == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
QVERIFY(expression == 0);
- QCOMPARE(prop.coreIndex(), -1);
- QCOMPARE(QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), -1);
+ QCOMPARE(prop.index(), -1);
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
delete obj;
}
{
- QDeclarativeMetaProperty prop(&dobject, engine.rootContext());
+ QDeclarativeProperty prop(&dobject, engine.rootContext());
QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
binding->setTarget(prop);
@@ -525,49 +571,48 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_context()
QCOMPARE(prop.name(), QString("defaultProperty"));
QCOMPARE(prop.read(), QVariant(10));
QCOMPARE(prop.write(QVariant()), false);
- QCOMPARE(prop.hasChangedNotifier(), false);
- QCOMPARE(prop.needsChangedNotifier(), true);
- QCOMPARE(prop.connectNotifier(0, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, 0), false);
- QCOMPARE(prop.connectNotifier(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, -1), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), true);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
QVERIFY(prop.method().signature() == 0);
- QCOMPARE(prop.type(), (QDeclarativeMetaProperty::Type)(QDeclarativeMetaProperty::Property | QDeclarativeMetaProperty::Default));
+ QCOMPARE(prop.type(), QDeclarativeProperty::Property);
QCOMPARE(prop.isProperty(), true);
- QCOMPARE(prop.isDefault(), true);
QCOMPARE(prop.isWritable(), false);
QCOMPARE(prop.isDesignable(), true);
QCOMPARE(prop.isResettable(), false);
QCOMPARE(prop.isValid(), true);
QCOMPARE(prop.object(), &dobject);
- QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::Normal);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal);
QCOMPARE(prop.propertyType(), (int)QVariant::Int);
QCOMPARE(prop.propertyTypeName(), "int");
QCOMPARE(QString(prop.property().name()), QString("defaultProperty"));
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int");
- QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
QVERIFY(binding != 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == binding);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
QVERIFY(expression == 0);
- QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfProperty("defaultProperty"));
- QCOMPARE(QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), -1);
+ QCOMPARE(prop.index(), dobject.metaObject()->indexOfProperty("defaultProperty"));
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
delete obj;
}
}
-void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context()
+void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context()
{
QObject object;
PropertyObject dobject;
{
- QDeclarativeMetaProperty prop(&object, QString("defaultProperty"), engine.rootContext());
+ QDeclarativeProperty prop(&object, QString("defaultProperty"), engine.rootContext());
QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
QVERIFY(binding != 0);
@@ -579,41 +624,40 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context()
QCOMPARE(prop.name(), QString());
QCOMPARE(prop.read(), QVariant());
QCOMPARE(prop.write(QVariant()), false);
- QCOMPARE(prop.hasChangedNotifier(), false);
- QCOMPARE(prop.needsChangedNotifier(), false);
- QCOMPARE(prop.connectNotifier(0, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, 0), false);
- QCOMPARE(prop.connectNotifier(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, -1), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), false);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
QVERIFY(prop.method().signature() == 0);
- QCOMPARE(prop.type(), QDeclarativeMetaProperty::Invalid);
+ QCOMPARE(prop.type(), QDeclarativeProperty::Invalid);
QCOMPARE(prop.isProperty(), false);
- QCOMPARE(prop.isDefault(), false);
QCOMPARE(prop.isWritable(), false);
QCOMPARE(prop.isDesignable(), false);
QCOMPARE(prop.isResettable(), false);
QCOMPARE(prop.isValid(), false);
QCOMPARE(prop.object(), (QObject *)0);
- QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory);
QCOMPARE(prop.propertyType(), 0);
QCOMPARE(prop.propertyTypeName(), (const char *)0);
QVERIFY(prop.property().name() == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
QVERIFY(binding == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
QVERIFY(expression == 0);
- QCOMPARE(prop.coreIndex(), -1);
- QCOMPARE(QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), -1);
+ QCOMPARE(prop.index(), -1);
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
delete obj;
}
{
- QDeclarativeMetaProperty prop(&dobject, QString("defaultProperty"), engine.rootContext());
+ QDeclarativeProperty prop(&dobject, QString("defaultProperty"), engine.rootContext());
QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
binding->setTarget(prop);
@@ -626,43 +670,42 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context()
QCOMPARE(prop.name(), QString("defaultProperty"));
QCOMPARE(prop.read(), QVariant(10));
QCOMPARE(prop.write(QVariant()), false);
- QCOMPARE(prop.hasChangedNotifier(), false);
- QCOMPARE(prop.needsChangedNotifier(), true);
- QCOMPARE(prop.connectNotifier(0, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, 0), false);
- QCOMPARE(prop.connectNotifier(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, -1), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), true);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
QVERIFY(prop.method().signature() == 0);
- QCOMPARE(prop.type(), QDeclarativeMetaProperty::Property);
+ QCOMPARE(prop.type(), QDeclarativeProperty::Property);
QCOMPARE(prop.isProperty(), true);
- QCOMPARE(prop.isDefault(), false);
QCOMPARE(prop.isWritable(), false);
QCOMPARE(prop.isDesignable(), true);
QCOMPARE(prop.isResettable(), false);
QCOMPARE(prop.isValid(), true);
QCOMPARE(prop.object(), &dobject);
- QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::Normal);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal);
QCOMPARE(prop.propertyType(), (int)QVariant::Int);
QCOMPARE(prop.propertyTypeName(), "int");
QCOMPARE(QString(prop.property().name()), QString("defaultProperty"));
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int");
- QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
QVERIFY(binding != 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == binding);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
QVERIFY(expression == 0);
- QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfProperty("defaultProperty"));
- QCOMPARE(QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), -1);
+ QCOMPARE(prop.index(), dobject.metaObject()->indexOfProperty("defaultProperty"));
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
delete obj;
}
{
- QDeclarativeMetaProperty prop(&dobject, QString("onClicked"), engine.rootContext());
+ QDeclarativeProperty prop(&dobject, QString("onClicked"), engine.rootContext());
QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
binding->setTarget(prop);
@@ -675,121 +718,179 @@ void tst_qdeclarativemetaproperty::qmlmetaproperty_object_string_context()
QCOMPARE(prop.name(), QString("onClicked"));
QCOMPARE(prop.read(), QVariant());
QCOMPARE(prop.write(QVariant("Hello")), false);
- QCOMPARE(prop.hasChangedNotifier(), false);
- QCOMPARE(prop.needsChangedNotifier(), false);
- QCOMPARE(prop.connectNotifier(0, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, SLOT(deleteLater())), false);
- QCOMPARE(prop.connectNotifier(obj, 0), false);
- QCOMPARE(prop.connectNotifier(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
- QCOMPARE(prop.connectNotifier(obj, -1), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), false);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
QCOMPARE(QString(prop.method().signature()), QString("clicked()"));
- QCOMPARE(prop.type(), QDeclarativeMetaProperty::SignalProperty);
+ QCOMPARE(prop.type(), QDeclarativeProperty::SignalProperty);
+ QCOMPARE(prop.isProperty(), false);
+ QCOMPARE(prop.isWritable(), false);
+ QCOMPARE(prop.isDesignable(), false);
+ QCOMPARE(prop.isResettable(), false);
+ QCOMPARE(prop.isValid(), true);
+ QCOMPARE(prop.object(), &dobject);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory);
+ QCOMPARE(prop.propertyType(), 0);
+ QCOMPARE(prop.propertyTypeName(), (const char *)0);
+ QCOMPARE(prop.property().name(), (const char *)0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(binding == 0);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(expression != 0);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression);
+ QCOMPARE(prop.index(), dobject.metaObject()->indexOfMethod("clicked()"));
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
+
+ delete obj;
+ }
+
+ {
+ QDeclarativeProperty prop(&dobject, QString("onPropertyWithNotifyChanged"), engine.rootContext());
+
+ QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext()));
+ binding->setTarget(prop);
+ QVERIFY(binding != 0);
+ QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression());
+ QVERIFY(expression != 0);
+
+ QObject *obj = new QObject;
+
+ QCOMPARE(prop.name(), QString("onOddlyNamedNotifySignal"));
+ QCOMPARE(prop.read(), QVariant());
+ QCOMPARE(prop.write(QVariant("Hello")), false);
+ QCOMPARE(prop.hasNotifySignal(), false);
+ QCOMPARE(prop.needsNotifySignal(), false);
+ QCOMPARE(prop.connectNotifySignal(0, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, SLOT(deleteLater())), false);
+ QCOMPARE(prop.connectNotifySignal(obj, 0), false);
+ QCOMPARE(prop.connectNotifySignal(0, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, obj->metaObject()->indexOfMethod("deleteLater()")), false);
+ QCOMPARE(prop.connectNotifySignal(obj, -1), false);
+ QCOMPARE(QString(prop.method().signature()), QString("oddlyNamedNotifySignal()"));
+ QCOMPARE(prop.type(), QDeclarativeProperty::SignalProperty);
QCOMPARE(prop.isProperty(), false);
- QCOMPARE(prop.isDefault(), false);
QCOMPARE(prop.isWritable(), false);
QCOMPARE(prop.isDesignable(), false);
QCOMPARE(prop.isResettable(), false);
QCOMPARE(prop.isValid(), true);
QCOMPARE(prop.object(), &dobject);
- QCOMPARE(prop.propertyTypeCategory(), QDeclarativeMetaProperty::InvalidCategory);
+ QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory);
QCOMPARE(prop.propertyType(), 0);
QCOMPARE(prop.propertyTypeName(), (const char *)0);
QCOMPARE(prop.property().name(), (const char *)0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::binding(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setBinding(prop, binding) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0);
QVERIFY(binding == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::setSignalExpression(prop, expression) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0);
+ QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0);
QVERIFY(expression != 0);
- QVERIFY(QDeclarativeMetaPropertyPrivate::signalExpression(prop) == expression);
- QCOMPARE(prop.coreIndex(), dobject.metaObject()->indexOfMethod("clicked()"));
- QCOMPARE(QDeclarativeMetaPropertyPrivate::valueTypeCoreIndex(prop), -1);
+ QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression);
+ QCOMPARE(prop.index(), dobject.metaObject()->indexOfMethod("oddlyNamedNotifySignal()"));
+ QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1);
delete obj;
}
}
-void tst_qdeclarativemetaproperty::name()
+void tst_qdeclarativeproperty::name()
{
{
- QDeclarativeMetaProperty p;
+ QDeclarativeProperty p;
QCOMPARE(p.name(), QString());
}
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o);
+ QDeclarativeProperty p(&o);
QCOMPARE(p.name(), QString("defaultProperty"));
}
{
QObject o;
- QDeclarativeMetaProperty p(&o, QString("objectName"));
+ QDeclarativeProperty p(&o, QString("objectName"));
QCOMPARE(p.name(), QString("objectName"));
}
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, "onClicked");
+ QDeclarativeProperty p(&o, "onClicked");
QCOMPARE(p.name(), QString("onClicked"));
}
{
QObject o;
- QDeclarativeMetaProperty p(&o, "onClicked");
+ QDeclarativeProperty p(&o, "onClicked");
QCOMPARE(p.name(), QString());
}
{
+ PropertyObject o;
+ QDeclarativeProperty p(&o, "onPropertyWithNotifyChanged");
+ QCOMPARE(p.name(), QString("onOddlyNamedNotifySignal"));
+ }
+
+ {
QObject o;
- QDeclarativeMetaProperty p(&o, "foo");
+ QDeclarativeProperty p(&o, "onPropertyWithNotifyChanged");
QCOMPARE(p.name(), QString());
}
{
- QDeclarativeMetaProperty p(0, "foo");
+ QObject o;
+ QDeclarativeProperty p(&o, "foo");
+ QCOMPARE(p.name(), QString());
+ }
+
+ {
+ QDeclarativeProperty p(0, "foo");
QCOMPARE(p.name(), QString());
}
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, "rectProperty");
+ QDeclarativeProperty p(&o, "rectProperty");
QCOMPARE(p.name(), QString("rectProperty"));
}
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, "rectProperty.x");
+ QDeclarativeProperty p(&o, "rectProperty.x");
QCOMPARE(p.name(), QString("rectProperty.x"));
}
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, "rectProperty.foo");
+ QDeclarativeProperty p(&o, "rectProperty.foo");
QCOMPARE(p.name(), QString());
}
}
-void tst_qdeclarativemetaproperty::read()
+void tst_qdeclarativeproperty::read()
{
// Invalid
{
- QDeclarativeMetaProperty p;
+ QDeclarativeProperty p;
QCOMPARE(p.read(), QVariant());
}
// Default prop
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o);
+ QDeclarativeProperty p(&o);
QCOMPARE(p.read(), QVariant(10));
}
// Invalid default prop
{
QObject o;
- QDeclarativeMetaProperty p(&o);
+ QDeclarativeProperty p(&o);
QCOMPARE(p.read(), QVariant());
}
@@ -797,7 +898,7 @@ void tst_qdeclarativemetaproperty::read()
{
QObject o;
- QDeclarativeMetaProperty p(&o, "objectName");
+ QDeclarativeProperty p(&o, "objectName");
QCOMPARE(p.read(), QVariant(QString()));
o.setObjectName("myName");
@@ -808,25 +909,37 @@ void tst_qdeclarativemetaproperty::read()
// Value-type prop
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, "rectProperty.x");
+ QDeclarativeProperty p(&o, "rectProperty.x");
QCOMPARE(p.read(), QVariant(10));
}
// Invalid value-type prop
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, "rectProperty.foo");
+ QDeclarativeProperty p(&o, "rectProperty.foo");
QCOMPARE(p.read(), QVariant());
}
// Signal property
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, "onClicked");
+ QDeclarativeProperty p(&o, "onClicked");
+ QCOMPARE(p.read(), QVariant());
+
+ QVERIFY(0 == QDeclarativePropertyPrivate::setSignalExpression(p, new QDeclarativeExpression()));
+ QVERIFY(0 != QDeclarativePropertyPrivate::signalExpression(p));
+
+ QCOMPARE(p.read(), QVariant());
+ }
+
+ // Automatic signal property
+ {
+ PropertyObject o;
+ QDeclarativeProperty p(&o, "onPropertyWithNotifyChanged");
QCOMPARE(p.read(), QVariant());
- QVERIFY(0 == QDeclarativeMetaPropertyPrivate::setSignalExpression(p, new QDeclarativeExpression()));
- QVERIFY(0 != QDeclarativeMetaPropertyPrivate::signalExpression(p));
+ QVERIFY(0 == QDeclarativePropertyPrivate::setSignalExpression(p, new QDeclarativeExpression()));
+ QVERIFY(0 != QDeclarativePropertyPrivate::signalExpression(p));
QCOMPARE(p.read(), QVariant());
}
@@ -834,7 +947,7 @@ void tst_qdeclarativemetaproperty::read()
// Deleted object
{
PropertyObject *o = new PropertyObject;
- QDeclarativeMetaProperty p(o, "rectProperty.x");
+ QDeclarativeProperty p(o, "rectProperty.x");
QCOMPARE(p.read(), QVariant(10));
delete o;
QCOMPARE(p.read(), QVariant());
@@ -847,7 +960,7 @@ void tst_qdeclarativemetaproperty::read()
QObject *object = component.create();
QVERIFY(object != 0);
- QDeclarativeMetaProperty p(object, "MyContainer.foo", qmlContext(object));
+ QDeclarativeProperty p(object, "MyContainer.foo", qmlContext(object));
QCOMPARE(p.read(), QVariant(13));
delete object;
}
@@ -857,7 +970,7 @@ void tst_qdeclarativemetaproperty::read()
QObject *object = component.create();
QVERIFY(object != 0);
- QDeclarativeMetaProperty p(object, "MyContainer.foo", qmlContext(object));
+ QDeclarativeProperty p(object, "MyContainer.foo", qmlContext(object));
QCOMPARE(p.read(), QVariant(10));
delete object;
}
@@ -867,45 +980,45 @@ void tst_qdeclarativemetaproperty::read()
QObject *object = component.create();
QVERIFY(object != 0);
- QDeclarativeMetaProperty p(object, "Foo.MyContainer.foo", qmlContext(object));
+ QDeclarativeProperty p(object, "Foo.MyContainer.foo", qmlContext(object));
QCOMPARE(p.read(), QVariant(10));
delete object;
}
}
-void tst_qdeclarativemetaproperty::write()
+void tst_qdeclarativeproperty::write()
{
// Invalid
{
- QDeclarativeMetaProperty p;
+ QDeclarativeProperty p;
QCOMPARE(p.write(QVariant(10)), false);
}
// Read-only default prop
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o);
+ QDeclarativeProperty p(&o);
QCOMPARE(p.write(QVariant(10)), false);
}
// Invalid default prop
{
QObject o;
- QDeclarativeMetaProperty p(&o);
+ QDeclarativeProperty p(&o);
QCOMPARE(p.write(QVariant(10)), false);
}
// Read-only prop by name
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, QString("defaultProperty"));
+ QDeclarativeProperty p(&o, QString("defaultProperty"));
QCOMPARE(p.write(QVariant(10)), false);
}
// Writable prop by name
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, QString("objectName"));
+ QDeclarativeProperty p(&o, QString("objectName"));
QCOMPARE(o.objectName(), QString());
QCOMPARE(p.write(QVariant(QString("myName"))), true);
QCOMPARE(o.objectName(), QString("myName"));
@@ -914,7 +1027,7 @@ void tst_qdeclarativemetaproperty::write()
// Deleted object
{
PropertyObject *o = new PropertyObject;
- QDeclarativeMetaProperty p(o, QString("objectName"));
+ QDeclarativeProperty p(o, QString("objectName"));
QCOMPARE(p.write(QVariant(QString("myName"))), true);
QCOMPARE(o->objectName(), QString("myName"));
@@ -926,27 +1039,41 @@ void tst_qdeclarativemetaproperty::write()
// Signal property
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, "onClicked");
+ QDeclarativeProperty p(&o, "onClicked");
+ QCOMPARE(p.write(QVariant("console.log(1921)")), false);
+
+ QVERIFY(0 == QDeclarativePropertyPrivate::setSignalExpression(p, new QDeclarativeExpression()));
+ QVERIFY(0 != QDeclarativePropertyPrivate::signalExpression(p));
+
+ QCOMPARE(p.write(QVariant("console.log(1921)")), false);
+
+ QVERIFY(0 != QDeclarativePropertyPrivate::signalExpression(p));
+ }
+
+ // Automatic signal property
+ {
+ PropertyObject o;
+ QDeclarativeProperty p(&o, "onPropertyWithNotifyChanged");
QCOMPARE(p.write(QVariant("console.log(1921)")), false);
- QVERIFY(0 == QDeclarativeMetaPropertyPrivate::setSignalExpression(p, new QDeclarativeExpression()));
- QVERIFY(0 != QDeclarativeMetaPropertyPrivate::signalExpression(p));
+ QVERIFY(0 == QDeclarativePropertyPrivate::setSignalExpression(p, new QDeclarativeExpression()));
+ QVERIFY(0 != QDeclarativePropertyPrivate::signalExpression(p));
QCOMPARE(p.write(QVariant("console.log(1921)")), false);
- QVERIFY(0 != QDeclarativeMetaPropertyPrivate::signalExpression(p));
+ QVERIFY(0 != QDeclarativePropertyPrivate::signalExpression(p));
}
// Value-type property
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, "wrectProperty");
+ QDeclarativeProperty p(&o, "wrectProperty");
QCOMPARE(o.wrectProperty(), QRect());
QCOMPARE(p.write(QRect(1, 13, 99, 8)), true);
QCOMPARE(o.wrectProperty(), QRect(1, 13, 99, 8));
- QDeclarativeMetaProperty p2(&o, "wrectProperty.x");
+ QDeclarativeProperty p2(&o, "wrectProperty.x");
QCOMPARE(p2.read(), QVariant(1));
QCOMPARE(p2.write(QVariant(6)), true);
QCOMPARE(p2.read(), QVariant(6));
@@ -956,12 +1083,12 @@ void tst_qdeclarativemetaproperty::write()
// URL-property
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, "url");
+ QDeclarativeProperty p(&o, "url");
QCOMPARE(p.write(QUrl("main.qml")), true);
QCOMPARE(o.url(), QUrl("main.qml"));
- QDeclarativeMetaProperty p2(&o, "url", engine.rootContext());
+ QDeclarativeProperty p2(&o, "url", engine.rootContext());
QUrl result = engine.baseUrl().resolved(QUrl("main.qml"));
QVERIFY(result != QUrl("main.qml"));
@@ -977,7 +1104,7 @@ void tst_qdeclarativemetaproperty::write()
QObject *object = component.create();
QVERIFY(object != 0);
- QDeclarativeMetaProperty p(object, "MyContainer.foo", qmlContext(object));
+ QDeclarativeProperty p(object, "MyContainer.foo", qmlContext(object));
p.write(QVariant(99));
QCOMPARE(p.read(), QVariant(99));
delete object;
@@ -988,18 +1115,18 @@ void tst_qdeclarativemetaproperty::write()
QObject *object = component.create();
QVERIFY(object != 0);
- QDeclarativeMetaProperty p(object, "Foo.MyContainer.foo", qmlContext(object));
+ QDeclarativeProperty p(object, "Foo.MyContainer.foo", qmlContext(object));
p.write(QVariant(99));
QCOMPARE(p.read(), QVariant(99));
delete object;
}
}
-void tst_qdeclarativemetaproperty::reset()
+void tst_qdeclarativeproperty::reset()
{
// Invalid
{
- QDeclarativeMetaProperty p;
+ QDeclarativeProperty p;
QCOMPARE(p.isResettable(), false);
QCOMPARE(p.reset(), false);
}
@@ -1007,7 +1134,7 @@ void tst_qdeclarativemetaproperty::reset()
// Read-only default prop
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o);
+ QDeclarativeProperty p(&o);
QCOMPARE(p.isResettable(), false);
QCOMPARE(p.reset(), false);
}
@@ -1015,7 +1142,7 @@ void tst_qdeclarativemetaproperty::reset()
// Invalid default prop
{
QObject o;
- QDeclarativeMetaProperty p(&o);
+ QDeclarativeProperty p(&o);
QCOMPARE(p.isResettable(), false);
QCOMPARE(p.reset(), false);
}
@@ -1023,7 +1150,7 @@ void tst_qdeclarativemetaproperty::reset()
// Non-resettable-only prop by name
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, QString("defaultProperty"));
+ QDeclarativeProperty p(&o, QString("defaultProperty"));
QCOMPARE(p.isResettable(), false);
QCOMPARE(p.reset(), false);
}
@@ -1031,7 +1158,7 @@ void tst_qdeclarativemetaproperty::reset()
// Resettable prop by name
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, QString("resettableProperty"));
+ QDeclarativeProperty p(&o, QString("resettableProperty"));
QCOMPARE(p.read(), QVariant(9));
QCOMPARE(p.write(QVariant(11)), true);
@@ -1047,7 +1174,7 @@ void tst_qdeclarativemetaproperty::reset()
{
PropertyObject *o = new PropertyObject;
- QDeclarativeMetaProperty p(o, QString("resettableProperty"));
+ QDeclarativeProperty p(o, QString("resettableProperty"));
QCOMPARE(p.isResettable(), true);
QCOMPARE(p.reset(), true);
@@ -1061,14 +1188,23 @@ void tst_qdeclarativemetaproperty::reset()
// Signal property
{
PropertyObject o;
- QDeclarativeMetaProperty p(&o, "onClicked");
+ QDeclarativeProperty p(&o, "onClicked");
+
+ QCOMPARE(p.isResettable(), false);
+ QCOMPARE(p.reset(), false);
+ }
+
+ // Automatic signal property
+ {
+ PropertyObject o;
+ QDeclarativeProperty p(&o, "onPropertyWithNotifyChanged");
QCOMPARE(p.isResettable(), false);
QCOMPARE(p.reset(), false);
}
}
-void tst_qdeclarativemetaproperty::writeObjectToList()
+void tst_qdeclarativeproperty::writeObjectToList()
{
QDeclarativeComponent containerComponent(&engine);
containerComponent.setData("import Test 1.0\nMyContainer { children: MyQmlObject {} }", QUrl());
@@ -1078,14 +1214,14 @@ void tst_qdeclarativemetaproperty::writeObjectToList()
QVERIFY(list.count() == 1);
MyQmlObject *object = new MyQmlObject;
- QDeclarativeMetaProperty prop(container, "children");
+ QDeclarativeProperty prop(container, "children");
prop.write(qVariantFromValue(object));
QCOMPARE(list.count(), 1);
QCOMPARE(list.at(0), object);
}
Q_DECLARE_METATYPE(QList<QObject *>);
-void tst_qdeclarativemetaproperty::writeListToList()
+void tst_qdeclarativeproperty::writeListToList()
{
QDeclarativeComponent containerComponent(&engine);
containerComponent.setData("import Test 1.0\nMyContainer { children: MyQmlObject {} }", QUrl());
@@ -1096,7 +1232,7 @@ void tst_qdeclarativemetaproperty::writeListToList()
QList<QObject*> objList;
objList << new MyQmlObject() << new MyQmlObject() << new MyQmlObject() << new MyQmlObject();
- QDeclarativeMetaProperty prop(container, "children");
+ QDeclarativeProperty prop(container, "children");
prop.write(qVariantFromValue(objList));
QCOMPARE(list.count(), 4);
@@ -1107,7 +1243,7 @@ void tst_qdeclarativemetaproperty::writeListToList()
QCOMPARE(container->children()->size(), 1);*/
}
-void tst_qdeclarativemetaproperty::crashOnValueProperty()
+void tst_qdeclarativeproperty::crashOnValueProperty()
{
QDeclarativeEngine *engine = new QDeclarativeEngine;
QDeclarativeComponent component(engine);
@@ -1116,7 +1252,7 @@ void tst_qdeclarativemetaproperty::crashOnValueProperty()
PropertyObject *obj = qobject_cast<PropertyObject*>(component.create());
QVERIFY(obj != 0);
- QDeclarativeMetaProperty p(obj, "wrectProperty.x", qmlContext(obj));
+ QDeclarativeProperty p(obj, "wrectProperty.x", qmlContext(obj));
QCOMPARE(p.name(), QString("wrectProperty.x"));
QCOMPARE(p.read(), QVariant(10));
@@ -1131,49 +1267,49 @@ void tst_qdeclarativemetaproperty::crashOnValueProperty()
QCOMPARE(p.read(), QVariant(20));
}
-void tst_qdeclarativemetaproperty::copy()
+void tst_qdeclarativeproperty::copy()
{
PropertyObject object;
- QDeclarativeMetaProperty *property = new QDeclarativeMetaProperty(&object, QLatin1String("defaultProperty"));
+ QDeclarativeProperty *property = new QDeclarativeProperty(&object, QLatin1String("defaultProperty"));
QCOMPARE(property->name(), QString("defaultProperty"));
QCOMPARE(property->read(), QVariant(10));
- QCOMPARE(property->type(), QDeclarativeMetaProperty::Property);
- QCOMPARE(property->propertyTypeCategory(), QDeclarativeMetaProperty::Normal);
+ QCOMPARE(property->type(), QDeclarativeProperty::Property);
+ QCOMPARE(property->propertyTypeCategory(), QDeclarativeProperty::Normal);
QCOMPARE(property->propertyType(), (int)QVariant::Int);
- QDeclarativeMetaProperty p1(*property);
+ QDeclarativeProperty p1(*property);
QCOMPARE(p1.name(), QString("defaultProperty"));
QCOMPARE(p1.read(), QVariant(10));
- QCOMPARE(p1.type(), QDeclarativeMetaProperty::Property);
- QCOMPARE(p1.propertyTypeCategory(), QDeclarativeMetaProperty::Normal);
+ QCOMPARE(p1.type(), QDeclarativeProperty::Property);
+ QCOMPARE(p1.propertyTypeCategory(), QDeclarativeProperty::Normal);
QCOMPARE(p1.propertyType(), (int)QVariant::Int);
- QDeclarativeMetaProperty p2(&object, QLatin1String("url"));
+ QDeclarativeProperty p2(&object, QLatin1String("url"));
QCOMPARE(p2.name(), QString("url"));
p2 = *property;
QCOMPARE(p2.name(), QString("defaultProperty"));
QCOMPARE(p2.read(), QVariant(10));
- QCOMPARE(p2.type(), QDeclarativeMetaProperty::Property);
- QCOMPARE(p2.propertyTypeCategory(), QDeclarativeMetaProperty::Normal);
+ QCOMPARE(p2.type(), QDeclarativeProperty::Property);
+ QCOMPARE(p2.propertyTypeCategory(), QDeclarativeProperty::Normal);
QCOMPARE(p2.propertyType(), (int)QVariant::Int);
delete property; property = 0;
QCOMPARE(p1.name(), QString("defaultProperty"));
QCOMPARE(p1.read(), QVariant(10));
- QCOMPARE(p1.type(), QDeclarativeMetaProperty::Property);
- QCOMPARE(p1.propertyTypeCategory(), QDeclarativeMetaProperty::Normal);
+ QCOMPARE(p1.type(), QDeclarativeProperty::Property);
+ QCOMPARE(p1.propertyTypeCategory(), QDeclarativeProperty::Normal);
QCOMPARE(p1.propertyType(), (int)QVariant::Int);
QCOMPARE(p2.name(), QString("defaultProperty"));
QCOMPARE(p2.read(), QVariant(10));
- QCOMPARE(p2.type(), QDeclarativeMetaProperty::Property);
- QCOMPARE(p2.propertyTypeCategory(), QDeclarativeMetaProperty::Normal);
+ QCOMPARE(p2.type(), QDeclarativeProperty::Property);
+ QCOMPARE(p2.propertyTypeCategory(), QDeclarativeProperty::Normal);
QCOMPARE(p2.propertyType(), (int)QVariant::Int);
}
-void tst_qdeclarativemetaproperty::initTestCase()
+void tst_qdeclarativeproperty::initTestCase()
{
QML_REGISTER_TYPE(Test,1,0,MyQmlObject,MyQmlObject);
QML_REGISTER_TYPE(Test,1,0,PropertyObject,PropertyObject);
@@ -1181,6 +1317,6 @@ void tst_qdeclarativemetaproperty::initTestCase()
}
-QTEST_MAIN(tst_qdeclarativemetaproperty)
+QTEST_MAIN(tst_qdeclarativeproperty)
-#include "tst_qdeclarativemetaproperty.moc"
+#include "tst_qdeclarativeproperty.moc"
diff --git a/tests/auto/declarative/qdeclarativestates/data/basicChanges4.qml b/tests/auto/declarative/qdeclarativestates/data/basicChanges4.qml
new file mode 100644
index 0000000..a373cfc
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativestates/data/basicChanges4.qml
@@ -0,0 +1,19 @@
+import Qt.test 1.0
+import Qt 4.6
+
+MyRectangle {
+ id: rect
+ width: 100; height: 100
+ color: "red"
+
+ states: State {
+ name: "aBlueDay"
+ PropertyChanges {
+ target: rect
+ onPropertyWithNotifyChanged: { rect.color = "blue"; }
+ }
+ }
+
+ Component.onCompleted: rect.state = "aBlueDay"
+}
+
diff --git a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
index 5ffce11..8d3ca7a 100644
--- a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
+++ b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
@@ -47,6 +47,29 @@
#include <private/qdeclarativepropertychanges_p.h>
#include <private/qdeclarativestategroup_p.h>
+
+class MyRect : public QDeclarativeRectangle
+{
+ Q_OBJECT
+ Q_PROPERTY(int propertyWithNotify READ propertyWithNotify WRITE setPropertyWithNotify NOTIFY oddlyNamedNotifySignal)
+public:
+ MyRect() {}
+
+ void doSomething() { emit didSomething(); }
+
+ int propertyWithNotify() const { return m_prop; }
+ void setPropertyWithNotify(int i) { m_prop = i; emit oddlyNamedNotifySignal(); }
+Q_SIGNALS:
+ void didSomething();
+ void oddlyNamedNotifySignal();
+
+private:
+ int m_prop;
+};
+
+QML_DECLARE_TYPE(MyRect)
+
+
class tst_qdeclarativestates : public QObject
{
Q_OBJECT
@@ -85,6 +108,11 @@ private slots:
void reset();
};
+void tst_qdeclarativestates::initTestCase()
+{
+ QML_REGISTER_TYPE(Qt.test, 1, 0, MyRectangle,MyRect);
+}
+
QByteArray tst_qdeclarativestates::fullDataPath(const QString &path)
{
return QUrl::fromLocalFile(SRCDIR + path).toString().toUtf8();
@@ -158,6 +186,28 @@ void tst_qdeclarativestates::basicChanges()
QCOMPARE(rect->border()->width(),1);
}
+
+ {
+ // Test basicChanges4.qml can magically connect to propertyWithNotify's notify
+ // signal using 'onPropertyWithNotifyChanged' even though the signal name is
+ // actually 'oddlyNamedNotifySignal'
+
+ QDeclarativeComponent component(&engine, SRCDIR "/data/basicChanges4.qml");
+ QVERIFY(component.isReady());
+
+ MyRect *rect = qobject_cast<MyRect*>(component.create());
+ QVERIFY(rect != 0);
+
+ QMetaProperty prop = rect->metaObject()->property(rect->metaObject()->indexOfProperty("propertyWithNotify"));
+ QVERIFY(prop.hasNotifySignal());
+ QString notifySignal = QByteArray(prop.notifySignal().signature());
+ QVERIFY(!notifySignal.startsWith("propertyWithNotifyChanged("));
+
+ QCOMPARE(rect->color(), QColor(Qt::red));
+
+ rect->setPropertyWithNotify(100);
+ QCOMPARE(rect->color(), QColor(Qt::blue));
+ }
}
void tst_qdeclarativestates::basicExtension()
@@ -337,23 +387,6 @@ void tst_qdeclarativestates::basicBinding()
}
}
-class MyRect : public QDeclarativeRectangle
-{
- Q_OBJECT
-public:
- MyRect() {}
- void doSomething() { emit didSomething(); }
-Q_SIGNALS:
- void didSomething();
-};
-
-QML_DECLARE_TYPE(MyRect)
-
-void tst_qdeclarativestates::initTestCase()
-{
- QML_REGISTER_TYPE(Qt.test, 1, 0, MyRectangle,MyRect);
-}
-
void tst_qdeclarativestates::signalOverride()
{
QDeclarativeEngine engine;
@@ -445,10 +478,8 @@ void tst_qdeclarativestates::parentChange()
rect->setState("reparented");
QCOMPARE(innerRect->rotation(), qreal(15));
QCOMPARE(innerRect->scale(), qreal(.5));
- QEXPECT_FAIL("", "QTBUG-2919", Continue);
- QCOMPARE(QString("%1").arg(innerRect->x()), QString("%1").arg(12.4148145657));
- QEXPECT_FAIL("", "QTBUG-2919", Continue);
- QCOMPARE(QString("%1").arg(innerRect->y()), QString("%1").arg(10.6470476128));
+ QCOMPARE(QString("%1").arg(innerRect->x()), QString("%1").arg(-19.9075));
+ QCOMPARE(QString("%1").arg(innerRect->y()), QString("%1").arg(-8.73433));
}
{
@@ -469,8 +500,8 @@ void tst_qdeclarativestates::parentChange()
QCOMPARE(innerRect->rotation(), qreal(0));
QCOMPARE(innerRect->scale(), qreal(1));
QCOMPARE(innerRect->x(), qreal(5));
- QEXPECT_FAIL("", "QTBUG-2919", Continue);
- QCOMPARE(innerRect->y(), qreal(0));
+ //do a non-qFuzzyCompare fuzzy compare
+ QVERIFY(innerRect->y() < qreal(0.00001) && innerRect->y() > qreal(-0.00001));
}
}
diff --git a/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h b/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h
index 82a9c8a..dfc2829 100644
--- a/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h
+++ b/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h
@@ -52,8 +52,8 @@
#include <QFont>
#include <qdeclarative.h>
#include <QDeclarativePropertyValueSource>
-#include <QDeclarativeMetaProperty>
-#include <private/qdeclarativemetaproperty_p.h>
+#include <QDeclarativeProperty>
+#include <private/qdeclarativeproperty_p.h>
class MyTypeObject : public QObject
{
@@ -135,7 +135,7 @@ class MyConstantValueSource : public QObject, public QDeclarativePropertyValueSo
{
Q_OBJECT
public:
- virtual void setTarget(const QDeclarativeMetaProperty &p) { p.write(3345); }
+ virtual void setTarget(const QDeclarativeProperty &p) { p.write(3345); }
};
QML_DECLARE_TYPE(MyConstantValueSource);
@@ -143,11 +143,11 @@ class MyOffsetValueInterceptor : public QObject, public QDeclarativePropertyValu
{
Q_OBJECT
public:
- virtual void setTarget(const QDeclarativeMetaProperty &p) { prop = p; }
- virtual void write(const QVariant &value) { QDeclarativeMetaPropertyPrivate::write(prop, value.toInt() + 13, QDeclarativeMetaPropertyPrivate::BypassInterceptor); }
+ virtual void setTarget(const QDeclarativeProperty &p) { prop = p; }
+ virtual void write(const QVariant &value) { QDeclarativePropertyPrivate::write(prop, value.toInt() + 13, QDeclarativePropertyPrivate::BypassInterceptor); }
private:
- QDeclarativeMetaProperty prop;
+ QDeclarativeProperty prop;
};
QML_DECLARE_TYPE(MyOffsetValueInterceptor);
diff --git a/tests/auto/declarative/qdeclarativewebview/data/forward.html b/tests/auto/declarative/qdeclarativewebview/data/forward.html
index 030446a..62ab62d 100644
--- a/tests/auto/declarative/qdeclarativewebview/data/forward.html
+++ b/tests/auto/declarative/qdeclarativewebview/data/forward.html
@@ -1,6 +1,6 @@
<html>
<head><title>Forward</title>
-<link rel="icon" sizes="48x48" href="basic.png">
+<link rel="icon" sizes="32x32" href="forward.png">
</head>
<body leftmargin="0" marginwidth="0">
<table width="123">
diff --git a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp
index 2634825..6d16056 100644
--- a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp
+++ b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp
@@ -277,6 +277,8 @@ void tst_qdeclarativewebview::historyNav()
wv->setUrl(QUrl::fromLocalFile(SRCDIR "/data/forward.html"));
QTRY_COMPARE(wv->progress(), 1.0);
QCOMPARE(wv->title(),QString("Forward"));
+ QTRY_COMPARE(wv->icon().width(), 32);
+ QCOMPARE(wv->icon(),QPixmap(SRCDIR "/data/forward.png"));
QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/forward.html")), strippedHtml(wv->html()));
QCOMPARE(wv->url(), QUrl::fromLocalFile(SRCDIR "/data/forward.html"));
QCOMPARE(wv->status(), QDeclarativeWebView::Ready);
diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp
index e19e03d..68029bc 100644
--- a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp
+++ b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp
@@ -69,6 +69,7 @@ private slots:
void roles();
void roleErrors();
void uniqueRoleNames();
+ void reload();
void useKeys();
void useKeys_data();
void noKeysValueChanges();
@@ -116,90 +117,90 @@ private:
void tst_qdeclarativexmllistmodel::buildModel()
{
QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/model.qml"));
- QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create());
- QVERIFY(listModel != 0);
- QTRY_COMPARE(listModel->count(), 9);
+ QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create());
+ QVERIFY(model != 0);
+ QTRY_COMPARE(model->count(), 9);
QList<int> roles;
roles << Qt::UserRole << Qt::UserRole + 1 << Qt::UserRole + 2 << Qt::UserRole + 3;
- QHash<int, QVariant> data = listModel->data(3, roles);
+ QHash<int, QVariant> data = model->data(3, roles);
QVERIFY(data.count() == 4);
QCOMPARE(data.value(Qt::UserRole).toString(), QLatin1String("Spot"));
QCOMPARE(data.value(Qt::UserRole+1).toString(), QLatin1String("Dog"));
QCOMPARE(data.value(Qt::UserRole+2).toInt(), 9);
QCOMPARE(data.value(Qt::UserRole+3).toString(), QLatin1String("Medium"));
- delete listModel;
+ delete model;
}
void tst_qdeclarativexmllistmodel::missingFields()
{
QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/model2.qml"));
- QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create());
- QVERIFY(listModel != 0);
- QTRY_COMPARE(listModel->count(), 9);
+ QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create());
+ QVERIFY(model != 0);
+ QTRY_COMPARE(model->count(), 9);
QList<int> roles;
roles << Qt::UserRole << Qt::UserRole + 1 << Qt::UserRole + 2 << Qt::UserRole + 3 << Qt::UserRole + 4;
- QHash<int, QVariant> data = listModel->data(5, roles);
+ QHash<int, QVariant> data = model->data(5, roles);
QVERIFY(data.count() == 5);
QCOMPARE(data.value(Qt::UserRole+3).toString(), QLatin1String(""));
QCOMPARE(data.value(Qt::UserRole+4).toString(), QLatin1String(""));
- data = listModel->data(7, roles);
+ data = model->data(7, roles);
QVERIFY(data.count() == 5);
QCOMPARE(data.value(Qt::UserRole+2).toString(), QLatin1String(""));
- delete listModel;
+ delete model;
}
void tst_qdeclarativexmllistmodel::cdata()
{
QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/recipes.qml"));
- QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create());
- QVERIFY(listModel != 0);
- QTRY_COMPARE(listModel->count(), 5);
+ QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create());
+ QVERIFY(model != 0);
+ QTRY_COMPARE(model->count(), 5);
QList<int> roles;
roles << Qt::UserRole + 2;
- QHash<int, QVariant> data = listModel->data(2, roles);
+ QHash<int, QVariant> data = model->data(2, roles);
QVERIFY(data.count() == 1);
QVERIFY(data.value(Qt::UserRole+2).toString().startsWith(QLatin1String("<html>")));
- delete listModel;
+ delete model;
}
void tst_qdeclarativexmllistmodel::attributes()
{
QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/recipes.qml"));
- QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create());
- QVERIFY(listModel != 0);
- QTRY_COMPARE(listModel->count(), 5);
+ QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create());
+ QVERIFY(model != 0);
+ QTRY_COMPARE(model->count(), 5);
QList<int> roles;
roles << Qt::UserRole;
- QHash<int, QVariant> data = listModel->data(2, roles);
+ QHash<int, QVariant> data = model->data(2, roles);
QVERIFY(data.count() == 1);
QCOMPARE(data.value(Qt::UserRole).toString(), QLatin1String("Vegetable Soup"));
- delete listModel;
+ delete model;
}
void tst_qdeclarativexmllistmodel::roles()
{
QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/model.qml"));
- QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create());
- QVERIFY(listModel != 0);
- QTRY_COMPARE(listModel->count(), 9);
+ QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create());
+ QVERIFY(model != 0);
+ QTRY_COMPARE(model->count(), 9);
- QList<int> roles = listModel->roles();
+ QList<int> roles = model->roles();
QCOMPARE(roles.count(), 4);
- QCOMPARE(listModel->toString(roles.at(0)), QLatin1String("name"));
- QCOMPARE(listModel->toString(roles.at(1)), QLatin1String("type"));
- QCOMPARE(listModel->toString(roles.at(2)), QLatin1String("age"));
- QCOMPARE(listModel->toString(roles.at(3)), QLatin1String("size"));
+ QCOMPARE(model->toString(roles.at(0)), QLatin1String("name"));
+ QCOMPARE(model->toString(roles.at(1)), QLatin1String("type"));
+ QCOMPARE(model->toString(roles.at(2)), QLatin1String("age"));
+ QCOMPARE(model->toString(roles.at(3)), QLatin1String("size"));
- delete listModel;
+ delete model;
}
void tst_qdeclarativexmllistmodel::roleErrors()
@@ -207,13 +208,13 @@ void tst_qdeclarativexmllistmodel::roleErrors()
QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/roleErrors.qml"));
QTest::ignoreMessage(QtWarningMsg, QString("QML XmlRole (" + QUrl::fromLocalFile(SRCDIR "/data/roleErrors.qml").toString() + ":6:5) An XmlRole query must not start with '/'").toUtf8().constData());
//### make sure we receive all expected warning messages.
- QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create());
- QVERIFY(listModel != 0);
- QTRY_COMPARE(listModel->count(), 9);
+ QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create());
+ QVERIFY(model != 0);
+ QTRY_COMPARE(model->count(), 9);
QList<int> roles;
roles << Qt::UserRole << Qt::UserRole + 1 << Qt::UserRole + 2 << Qt::UserRole + 3;
- QHash<int, QVariant> data = listModel->data(3, roles);
+ QHash<int, QVariant> data = model->data(3, roles);
QVERIFY(data.count() == 4);
//### should any of these return valid values?
@@ -224,21 +225,47 @@ void tst_qdeclarativexmllistmodel::roleErrors()
QEXPECT_FAIL("", "QT-2456", Continue);
QCOMPARE(data.value(Qt::UserRole+3), QVariant());
- delete listModel;
+ delete model;
}
void tst_qdeclarativexmllistmodel::uniqueRoleNames()
{
QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/unique.qml"));
QTest::ignoreMessage(QtWarningMsg, QString("QML XmlRole (" + QUrl::fromLocalFile(SRCDIR "/data/unique.qml").toString() + ":7:5) \"name\" duplicates a previous role name and will be disabled.").toUtf8().constData());
- QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create());
- QVERIFY(listModel != 0);
- QTRY_COMPARE(listModel->count(), 9);
+ QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create());
+ QVERIFY(model != 0);
+ QTRY_COMPARE(model->count(), 9);
- QList<int> roles = listModel->roles();
+ QList<int> roles = model->roles();
QCOMPARE(roles.count(), 1);
- delete listModel;
+ delete model;
+}
+
+void tst_qdeclarativexmllistmodel::reload()
+{
+ // If no keys are used, the model should be rebuilt from scratch when
+ // reload() is called.
+
+ QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/model.qml"));
+ QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create());
+ QVERIFY(model != 0);
+ QTRY_COMPARE(model->count(), 9);
+
+ QSignalSpy spyInsert(model, SIGNAL(itemsInserted(int,int)));
+ QSignalSpy spyRemove(model, SIGNAL(itemsRemoved(int,int)));
+ QSignalSpy spyCount(model, SIGNAL(countChanged()));
+
+ model->reload();
+ QTRY_COMPARE(spyCount.count(), 1);
+ QTRY_COMPARE(spyInsert.count(), 1);
+ QTRY_COMPARE(spyRemove.count(), 1);
+
+ QCOMPARE(spyInsert[0][0].toInt(), 0);
+ QCOMPARE(spyInsert[0][1].toInt(), 9);
+
+ QCOMPARE(spyRemove[0][0].toInt(), 0);
+ QCOMPARE(spyRemove[0][1].toInt(), 9);
}
void tst_qdeclarativexmllistmodel::useKeys()
@@ -368,12 +395,33 @@ void tst_qdeclarativexmllistmodel::useKeys_data()
<< (QList<QDeclarativeXmlListRange>() << qMakePair(0, 1))
<< (QList<QDeclarativeXmlListRange>() << qMakePair(0, 1));
- QTest::newRow("add and remove simultaneously")
+ QTest::newRow("add and remove simultaneously, in different spots")
<< makeItemXmlAndData("name=A,age=25,sport=Football;name=B,age=35,sport=Athletics;name=C,age=45,sport=Curling;name=D,age=55,sport=Golf") << 4
<< makeItemXmlAndData("name=B,age=35,sport=Athletics;name=E,age=65,sport=Fencing", &modelData)
<< modelData
<< (QList<QDeclarativeXmlListRange>() << qMakePair(1, 1))
<< (QList<QDeclarativeXmlListRange>() << qMakePair(0, 1) << qMakePair(2,2));
+
+ QTest::newRow("insert at start, remove at end i.e. rss feed")
+ << makeItemXmlAndData("name=C,age=45,sport=Curling;name=D,age=55,sport=Golf;name=E,age=65,sport=Fencing") << 3
+ << makeItemXmlAndData("name=A,age=25,sport=Football;name=B,age=35,sport=Athletics;name=C,age=45,sport=Curling", &modelData)
+ << modelData
+ << (QList<QDeclarativeXmlListRange>() << qMakePair(0, 2))
+ << (QList<QDeclarativeXmlListRange>() << qMakePair(1, 2));
+
+ QTest::newRow("remove at start, insert at end")
+ << makeItemXmlAndData("name=A,age=25,sport=Football;name=B,age=35,sport=Athletics;name=C,age=45,sport=Curling") << 3
+ << makeItemXmlAndData("name=C,age=45,sport=Curling;name=D,age=55,sport=Golf;name=E,age=65,sport=Fencing", &modelData)
+ << modelData
+ << (QList<QDeclarativeXmlListRange>() << qMakePair(1, 2))
+ << (QList<QDeclarativeXmlListRange>() << qMakePair(0, 2));
+
+ QTest::newRow("all data has changed")
+ << makeItemXmlAndData("name=A,age=25,sport=Football;name=B,age=35") << 2
+ << makeItemXmlAndData("name=C,age=45,sport=Curling;name=D,age=55,sport=Golf", &modelData)
+ << modelData
+ << (QList<QDeclarativeXmlListRange>() << qMakePair(0, 2))
+ << (QList<QDeclarativeXmlListRange>() << qMakePair(0, 2));
}
void tst_qdeclarativexmllistmodel::noKeysValueChanges()
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/flickable-horizontal.qml b/tests/auto/declarative/visual/qdeclarativeflickable/flickable-horizontal.qml
index 1a7366d..50ba9ad 100644
--- a/tests/auto/declarative/visual/qdeclarativeflickable/flickable-horizontal.qml
+++ b/tests/auto/declarative/visual/qdeclarativeflickable/flickable-horizontal.qml
@@ -17,7 +17,7 @@ Rectangle {
Flickable {
id: flickable
- anchors.fill: parent; viewportWidth: row.width
+ anchors.fill: parent; contentWidth: row.width
Row {
id: row
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/flickable-vertical.qml b/tests/auto/declarative/visual/qdeclarativeflickable/flickable-vertical.qml
index 6204aa9..ebb963d 100644
--- a/tests/auto/declarative/visual/qdeclarativeflickable/flickable-vertical.qml
+++ b/tests/auto/declarative/visual/qdeclarativeflickable/flickable-vertical.qml
@@ -18,7 +18,7 @@ Rectangle {
flickable {
id: flick
height: parent.height-50
- width: parent.width; viewportHeight: column.height
+ width: parent.width; contentHeight: column.height
Column {
id: column
diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp
index 24391c0..a2058cd 100644
--- a/tests/auto/gestures/tst_gestures.cpp
+++ b/tests/auto/gestures/tst_gestures.cpp
@@ -261,15 +261,19 @@ protected:
eventsPtr->all << g->gestureType();
switch(g->state()) {
case Qt::GestureStarted:
+ emit gestureStarted(e->type(), g);
eventsPtr->started << g->gestureType();
break;
case Qt::GestureUpdated:
+ emit gestureUpdated(e->type(), g);
eventsPtr->updated << g->gestureType();
break;
case Qt::GestureFinished:
+ emit gestureFinished(e->type(), g);
eventsPtr->finished << g->gestureType();
break;
case Qt::GestureCanceled:
+ emit gestureCanceled(e->type(), g);
eventsPtr->canceled << g->gestureType();
break;
default:
@@ -283,13 +287,23 @@ protected:
}
return true;
}
+
+Q_SIGNALS:
+ void gestureStarted(QEvent::Type, QGesture *);
+ void gestureUpdated(QEvent::Type, QGesture *);
+ void gestureFinished(QEvent::Type, QGesture *);
+ void gestureCanceled(QEvent::Type, QGesture *);
+
+public Q_SLOTS:
+ void deleteThis() { delete this; }
};
// TODO rename to sendGestureSequence
static void sendCustomGesture(CustomEvent *event, QObject *object, QGraphicsScene *scene = 0)
{
+ QWeakPointer<QObject> receiver(object);
for (int i = CustomGesture::SerialMaybeThreshold;
- i <= CustomGesture::SerialFinishedThreshold; ++i) {
+ i <= CustomGesture::SerialFinishedThreshold && receiver; ++i) {
event->serial = i;
if (scene)
scene->sendEvent(qobject_cast<QGraphicsObject *>(object), event);
@@ -336,6 +350,9 @@ private slots:
void graphicsViewParentPropagation();
void panelPropagation();
void panelStacksBehindParent();
+ void deleteGestureTargetWidget();
+ void deleteGestureTargetItem_data();
+ void deleteGestureTargetItem();
};
tst_Gestures::tst_Gestures()
@@ -657,14 +674,16 @@ static const QColor InstanceColors[] = {
class GestureItem : public QGraphicsObject
{
+ Q_OBJECT
static int InstanceCount;
-
public:
GestureItem(const char *name = 0)
{
instanceNumber = InstanceCount++;
- if (name)
+ if (name) {
setObjectName(QLatin1String(name));
+ setToolTip(name);
+ }
size = QRectF(0, 0, 100, 100);
customEventsReceived = 0;
gestureEventsReceived = 0;
@@ -672,6 +691,8 @@ public:
events.clear();
overrideEvents.clear();
acceptGestureOverride = false;
+
+ scene = 0;
}
~GestureItem()
{
@@ -773,15 +794,19 @@ protected:
switch(g->state()) {
case Qt::GestureStarted:
eventsPtr->started << g->gestureType();
+ emit gestureStarted(e->type(), g);
break;
case Qt::GestureUpdated:
eventsPtr->updated << g->gestureType();
+ emit gestureUpdated(e->type(), g);
break;
case Qt::GestureFinished:
eventsPtr->finished << g->gestureType();
+ emit gestureFinished(e->type(), g);
break;
case Qt::GestureCanceled:
eventsPtr->canceled << g->gestureType();
+ emit gestureCanceled(e->type(), g);
break;
default:
Q_ASSERT(false);
@@ -794,6 +819,26 @@ protected:
}
return true;
}
+
+Q_SIGNALS:
+ void gestureStarted(QEvent::Type, QGesture *);
+ void gestureUpdated(QEvent::Type, QGesture *);
+ void gestureFinished(QEvent::Type, QGesture *);
+ void gestureCanceled(QEvent::Type, QGesture *);
+
+public:
+ // some arguments for the slots below:
+ QGraphicsScene *scene;
+
+public Q_SLOTS:
+ void deleteThis() { delete this; }
+ void addSelfToScene(QEvent::Type eventType, QGesture *)
+ {
+ if (eventType == QEvent::Gesture) {
+ disconnect(sender(), 0, this, SLOT(addSelfToScene(QEvent::Type,QGesture*)));
+ scene->addItem(this);
+ }
+ }
};
int GestureItem::InstanceCount = 0;
@@ -1549,7 +1594,7 @@ void tst_Gestures::graphicsViewParentPropagation()
QCOMPARE(item1_c1_c1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1_c1_c1->gestureOverrideEventsReceived, 1);
- QCOMPARE(item1_c1->gestureEventsReceived, 0);
+ QCOMPARE(item1_c1->gestureEventsReceived, TotalGestureEventsCount-1);
QCOMPARE(item1_c1->gestureOverrideEventsReceived, 1);
QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount-1);
QCOMPARE(item1->gestureOverrideEventsReceived, 1);
@@ -1724,5 +1769,93 @@ void tst_Gestures::panelStacksBehindParent()
QCOMPARE(panel->gestureOverrideEventsReceived, 0);
}
+void tst_Gestures::deleteGestureTargetWidget()
+{
+
+}
+
+void tst_Gestures::deleteGestureTargetItem_data()
+{
+ QTest::addColumn<bool>("propagateUpdateGesture");
+ QTest::addColumn<QString>("emitter");
+ QTest::addColumn<QString>("receiver");
+ QTest::addColumn<QByteArray>("signalName");
+ QTest::addColumn<QByteArray>("slotName");
+
+ QByteArray gestureUpdated = SIGNAL(gestureUpdated(QEvent::Type,QGesture*));
+ QByteArray gestureFinished = SIGNAL(gestureFinished(QEvent::Type,QGesture*));
+ QByteArray deleteThis = SLOT(deleteThis());
+ QByteArray deleteLater = SLOT(deleteLater());
+
+ QTest::newRow("delete1")
+ << false << "item1" << "item1" << gestureUpdated << deleteThis;
+ QTest::newRow("delete2")
+ << false << "item2" << "item2" << gestureUpdated << deleteThis;
+ QTest::newRow("delete3")
+ << false << "item1" << "item2" << gestureUpdated << deleteThis;
+
+ QTest::newRow("deleteLater1")
+ << false << "item1" << "item1" << gestureUpdated << deleteLater;
+ QTest::newRow("deleteLater2")
+ << false << "item2" << "item2" << gestureUpdated << deleteLater;
+ QTest::newRow("deleteLater3")
+ << false << "item1" << "item2" << gestureUpdated << deleteLater;
+ QTest::newRow("deleteLater4")
+ << false << "item2" << "item1" << gestureUpdated << deleteLater;
+
+ QTest::newRow("delete-self-and-propagate")
+ << true << "item2" << "item2" << gestureUpdated << deleteThis;
+ QTest::newRow("deleteLater-self-and-propagate")
+ << true << "item2" << "item2" << gestureUpdated << deleteLater;
+ QTest::newRow("propagate-to-deletedLater")
+ << true << "item2" << "item1" << gestureUpdated << deleteLater;
+}
+
+void tst_Gestures::deleteGestureTargetItem()
+{
+ QFETCH(bool, propagateUpdateGesture);
+ QFETCH(QString, emitter);
+ QFETCH(QString, receiver);
+ QFETCH(QByteArray, signalName);
+ QFETCH(QByteArray, slotName);
+
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+
+ GestureItem *item1 = new GestureItem("item1");
+ item1->grabGesture(CustomGesture::GestureType);
+ item1->setZValue(2);
+ scene.addItem(item1);
+
+ GestureItem *item2 = new GestureItem("item2");
+ item2->grabGesture(CustomGesture::GestureType);
+ item2->setZValue(5);
+ scene.addItem(item2);
+
+ QMap<QString, GestureItem *> items;
+ items.insert(item1->objectName(), item1);
+ items.insert(item2->objectName(), item2);
+
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ view.ensureVisible(scene.sceneRect());
+
+ view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren);
+
+ if (propagateUpdateGesture)
+ item2->ignoredUpdatedGestures << CustomGesture::GestureType;
+ connect(items.value(emitter, 0), signalName, items.value(receiver, 0), slotName);
+
+ // some debug output to see the current test data tag, so if we crash
+ // we know which one caused the crash.
+ qDebug() << "<-- testing";
+
+ CustomEvent event;
+ event.hotSpot = mapToGlobal(QPointF(5, 5), item2, &view);
+ event.hasHotSpot = true;
+ sendCustomGesture(&event, item1, &scene);
+}
+
QTEST_MAIN(tst_Gestures)
#include "tst_gestures.moc"
diff --git a/tests/auto/headers/headers.pro b/tests/auto/headers/headers.pro
index 703da7c..74e1a02 100644
--- a/tests/auto/headers/headers.pro
+++ b/tests/auto/headers/headers.pro
@@ -1,3 +1,3 @@
load(qttest_p4)
-SOURCES += tst_headers.cpp
+SOURCES += tst_headers.cpp headersclean.cpp
QT = core
diff --git a/tests/auto/headers/headersclean.cpp b/tests/auto/headers/headersclean.cpp
new file mode 100644
index 0000000..b932b9f
--- /dev/null
+++ b/tests/auto/headers/headersclean.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 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_NO_KEYWORDS
+#define signals int
+#define slots int
+#define emit public:;
+#define foreach public:;
+#define forever public:;
+
+// include all of Qt here
+
+// core Qt
+#include <QtCore/QtCore>
+#include <QtGui/QtGui>
+#include <QtNetwork/QtNetwork>
+
+// extra
+#include <QtDBus/QtDBus>
+//#include <QtDeclarative/QtDeclarative>
+#include <QtHelp/QtHelp>
+#include <QtMultimedia/QtMultimedia>
+#include <QtOpenGL/QtOpenGL>
+#include <QtScript/QtScript>
+#include <QtScriptTools/QtScriptTools>
+#include <QtSql/QtSql>
+#include <QtSvg/QtSvg>
+#include <QtTest/QtTest>
+#include <QtXml/QtXml>
+#include <QtXmlPatterns/QtXmlPatterns>
+
+// webkit:
+#include <QtWebKit/QtWebKit>
+
+// designer:
+#include <QtDesigner/QtDesigner>
+#include <QtUiTools/QtUiTools>
+
+// feature dependent:
+#ifndef QT_NO_OPENVG
+#include <QtOpenVG/QtOpenVG>
+#endif
+
+// removed in 4.7:
+//#include <QtAssistant/QtAssistant>
+
+// can't include this since it causes a linker error
+//#include <Qt3Support/Qt3Support>
diff --git a/tests/auto/qabstractproxymodel/tst_qabstractproxymodel.cpp b/tests/auto/qabstractproxymodel/tst_qabstractproxymodel.cpp
index 6d92d03..88c2ef1 100644
--- a/tests/auto/qabstractproxymodel/tst_qabstractproxymodel.cpp
+++ b/tests/auto/qabstractproxymodel/tst_qabstractproxymodel.cpp
@@ -80,6 +80,7 @@ private slots:
void setSourceModel();
void submit_data();
void submit();
+ void testRoleNames();
};
// Subclass that exposes the protected functions.
@@ -362,6 +363,87 @@ void tst_QAbstractProxyModel::submit()
QCOMPARE(model.submit(), submit);
}
+class StandardItemModelWithCustomRoleNames : public QStandardItemModel
+{
+public:
+ enum CustomRole {
+ CustomRole1 = Qt::UserRole,
+ CustomRole2
+ };
+
+ StandardItemModelWithCustomRoleNames() {
+ QHash<int, QByteArray> _roleNames = roleNames();
+ _roleNames.insert(CustomRole1, "custom1");
+ _roleNames.insert(CustomRole2, "custom2");
+ setRoleNames(_roleNames);
+ }
+};
+
+class AnotherStandardItemModelWithCustomRoleNames : public QStandardItemModel
+{
+ public:
+ enum CustomRole {
+ AnotherCustomRole1 = Qt::UserRole + 10, // Different to StandardItemModelWithCustomRoleNames::CustomRole1
+ AnotherCustomRole2
+ };
+
+ AnotherStandardItemModelWithCustomRoleNames() {
+ QHash<int, QByteArray> _roleNames = roleNames();
+ _roleNames.insert(AnotherCustomRole1, "another_custom1");
+ _roleNames.insert(AnotherCustomRole2, "another_custom2");
+ setRoleNames(_roleNames);
+ }
+};
+
+/**
+ Verifies that @p subSet is a subset of @p superSet. That is, all keys in @p subSet exist in @p superSet and have the same values.
+*/
+static void verifySubSetOf(const QHash<int, QByteArray> &superSet, const QHash<int, QByteArray> &subSet)
+{
+ QHash<int, QByteArray>::const_iterator it = subSet.constBegin();
+ const QHash<int, QByteArray>::const_iterator end = subSet.constEnd();
+ for ( ; it != end; ++it ) {
+ QVERIFY(superSet.contains(it.key()));
+ QVERIFY(it.value() == superSet.value(it.key()));
+ }
+}
+
+void tst_QAbstractProxyModel::testRoleNames()
+{
+ QStandardItemModel defaultModel;
+ StandardItemModelWithCustomRoleNames model;
+ QHash<int, QByteArray> rootModelRoleNames = model.roleNames();
+ QHash<int, QByteArray> defaultModelRoleNames = defaultModel.roleNames();
+
+ verifySubSetOf( rootModelRoleNames, defaultModelRoleNames);
+ QVERIFY( rootModelRoleNames.size() == defaultModelRoleNames.size() + 2 );
+ QVERIFY( rootModelRoleNames.contains(StandardItemModelWithCustomRoleNames::CustomRole1));
+ QVERIFY( rootModelRoleNames.contains(StandardItemModelWithCustomRoleNames::CustomRole2));
+ QVERIFY( rootModelRoleNames.value(StandardItemModelWithCustomRoleNames::CustomRole1) == "custom1" );
+ QVERIFY( rootModelRoleNames.value(StandardItemModelWithCustomRoleNames::CustomRole2) == "custom2" );
+
+ SubQAbstractProxyModel proxy1;
+ proxy1.setSourceModel(&model);
+ QHash<int, QByteArray> proxy1RoleNames = proxy1.roleNames();
+ verifySubSetOf( proxy1RoleNames, defaultModelRoleNames );
+ QVERIFY( proxy1RoleNames.size() == defaultModelRoleNames.size() + 2 );
+ QVERIFY( proxy1RoleNames.contains(StandardItemModelWithCustomRoleNames::CustomRole1));
+ QVERIFY( proxy1RoleNames.contains(StandardItemModelWithCustomRoleNames::CustomRole2));
+ QVERIFY( proxy1RoleNames.value(StandardItemModelWithCustomRoleNames::CustomRole1) == "custom1" );
+ QVERIFY( proxy1RoleNames.value(StandardItemModelWithCustomRoleNames::CustomRole2) == "custom2" );
+
+ SubQAbstractProxyModel proxy2;
+ proxy2.setSourceModel(&proxy1);
+ QHash<int, QByteArray> proxy2RoleNames = proxy2.roleNames();
+ verifySubSetOf( proxy2RoleNames, defaultModelRoleNames );
+ QVERIFY( proxy2RoleNames.size() == defaultModelRoleNames.size() + 2 );
+ QVERIFY( proxy2RoleNames.contains(StandardItemModelWithCustomRoleNames::CustomRole1));
+ QVERIFY( proxy2RoleNames.contains(StandardItemModelWithCustomRoleNames::CustomRole2));
+ QVERIFY( proxy2RoleNames.value(StandardItemModelWithCustomRoleNames::CustomRole1) == "custom1" );
+ QVERIFY( proxy2RoleNames.value(StandardItemModelWithCustomRoleNames::CustomRole2) == "custom2" );
+
+}
+
QTEST_MAIN(tst_QAbstractProxyModel)
#include "tst_qabstractproxymodel.moc"
diff --git a/tests/auto/qchar/qchar.pro b/tests/auto/qchar/qchar.pro
index fca4ef6..0a3fcc3 100644
--- a/tests/auto/qchar/qchar.pro
+++ b/tests/auto/qchar/qchar.pro
@@ -8,3 +8,4 @@ deploy.sources += NormalizationTest.txt
DEPLOYMENT = deploy
}
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
diff --git a/tests/auto/qchar/tst_qchar.cpp b/tests/auto/qchar/tst_qchar.cpp
index 241b9a5..547147c 100644
--- a/tests/auto/qchar/tst_qchar.cpp
+++ b/tests/auto/qchar/tst_qchar.cpp
@@ -499,10 +499,7 @@ void tst_QChar::normalization()
QVERIFY(composed.normalized(QString::NormalizationForm_KC) == decomposed);
}
- QFile f("NormalizationTest.txt");
- // Windows - current directory is the debug/release subdirectory where the executable is located
- if (!f.exists())
- f.setFileName("../NormalizationTest.txt");;
+ QFile f(SRCDIR "NormalizationTest.txt");
if (!f.exists()) {
QFAIL("Couldn't find NormalizationTest.txt");
return;
diff --git a/tests/auto/qdatastream/tst_qdatastream.cpp b/tests/auto/qdatastream/tst_qdatastream.cpp
index c94ea7b..31e12fe 100644
--- a/tests/auto/qdatastream/tst_qdatastream.cpp
+++ b/tests/auto/qdatastream/tst_qdatastream.cpp
@@ -162,6 +162,9 @@ private slots:
void stream_QIcon_data();
void stream_QIcon();
+ void stream_QEasingCurve_data();
+ void stream_QEasingCurve();
+
void stream_atEnd_data();
void stream_atEnd();
@@ -243,6 +246,7 @@ private:
void writeqint64(QDataStream *s);
void writeQWMatrix(QDataStream *s);
void writeQIcon(QDataStream *s);
+ void writeQEasingCurve(QDataStream *s);
void readbool(QDataStream *s);
void readQBool(QDataStream *s);
@@ -272,6 +276,7 @@ private:
void readqint64(QDataStream *s);
void readQWMatrix(QDataStream *s);
void readQIcon(QDataStream *s);
+ void readQEasingCurve(QDataStream *s);
private:
QString svgFile;
@@ -687,6 +692,70 @@ void tst_QDataStream::readHash(QDataStream *s)
// ************************************
+static QEasingCurve QEasingCurveData(int index)
+{
+ QEasingCurve easing;
+
+ switch (index) {
+ case 0:
+ default:
+ break;
+ case 1:
+ easing.setType(QEasingCurve::Linear);
+ break;
+ case 2:
+ easing.setType(QEasingCurve::OutCubic);
+ break;
+ case 3:
+ easing.setType(QEasingCurve::InOutSine);
+ break;
+ case 4:
+ easing.setType(QEasingCurve::InOutElastic);
+ easing.setPeriod(1.5);
+ easing.setAmplitude(2.0);
+ break;
+ case 5:
+ easing.setType(QEasingCurve::OutInBack);
+ break;
+ case 6:
+ easing.setType(QEasingCurve::OutCurve);
+ break;
+ case 7:
+ easing.setType(QEasingCurve::InOutBack);
+ easing.setOvershoot(0.5);
+ break;
+ }
+ return easing;
+}
+#define MAX_EASING_DATA 8
+
+void tst_QDataStream::stream_QEasingCurve_data()
+{
+ stream_data(MAX_EASING_DATA);
+}
+
+void tst_QDataStream::stream_QEasingCurve()
+{
+ STREAM_IMPL(QEasingCurve);
+}
+
+void tst_QDataStream::writeQEasingCurve(QDataStream* s)
+{
+ QEasingCurve test(QEasingCurveData(dataIndex(QTest::currentDataTag())));
+ *s << test;
+}
+
+void tst_QDataStream::readQEasingCurve(QDataStream *s)
+{
+ QEasingCurve S;
+ QEasingCurve expected(QEasingCurveData(dataIndex(QTest::currentDataTag())));
+
+ *s >> S;
+ QCOMPARE(S, expected);
+}
+
+// ************************************
+
// contains some quint64 testing as well
#define MAX_qint64_DATA 4
diff --git a/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp b/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
index 7208383..a55a427 100644
--- a/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
+++ b/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
@@ -41,6 +41,7 @@
#include <QtCore/QObject>
#include <QtCore/QVariant>
#include <QtCore/QList>
+#include <QtCore/QThread>
#include <QtCore/QVector>
#include <QtTest/QtTest>
#ifndef QT_NO_DBUS
@@ -90,6 +91,7 @@ private Q_SLOTS:
void watcher();
void watcher_error();
void watcher_waitForFinished();
+ void watcher_waitForFinished_threaded();
void watcher_waitForFinished_alreadyFinished();
void watcher_waitForFinished_alreadyFinished_eventLoop();
void watcher_waitForFinished_error();
@@ -124,7 +126,8 @@ void tst_QDBusPendingCall::finished(QDBusPendingCallWatcher *call)
slotCalled = FinishCalled;
++callCount;
watchArgument = call;
- QTestEventLoop::instance().exitLoop();
+ if (QThread::currentThread() == thread())
+ QTestEventLoop::instance().exitLoop();
}
void tst_QDBusPendingCall::callback(const QStringList &list)
@@ -377,6 +380,56 @@ void tst_QDBusPendingCall::watcher_waitForFinished()
QVERIFY(args2.at(0).toStringList().contains(conn.baseService()));
}
+void tst_QDBusPendingCall::watcher_waitForFinished_threaded()
+{
+ callCount = 0;
+ watchArgument = 0;
+ slotCalled = 0;
+
+ class WorkerThread: public QThread {
+ public:
+ tst_QDBusPendingCall *tst;
+ WorkerThread(tst_QDBusPendingCall *tst) : tst(tst) {}
+ void run()
+ {
+ QDBusPendingCall ac = tst->sendMessage();
+// QVERIFY(!ac.isFinished());
+// QVERIFY(!ac.isError());
+// QVERIFY(ac.reply().type() == QDBusMessage::InvalidMessage);
+
+ QDBusPendingCallWatcher watch(ac);
+ tst->connect(&watch, SIGNAL(finished(QDBusPendingCallWatcher*)),
+ SLOT(finished(QDBusPendingCallWatcher*)), Qt::DirectConnection);
+
+ QTest::qSleep(100); // don't process events in this thread
+
+// QVERIFY(!ac.isFinished());
+// QVERIFY(!ac.isError());
+// QVERIFY(ac.reply().type() == QDBusMessage::InvalidMessage);
+ QCOMPARE(tst->callCount, 0);
+ QCOMPARE(tst->slotCalled, 0);
+
+ watch.waitForFinished();
+ QVERIFY(ac.isFinished());
+ QVERIFY(!ac.isError());
+
+ QCOMPARE(tst->callCount, 1);
+ QCOMPARE(tst->slotCalled, (int)FinishCalled);
+ QCOMPARE(tst->watchArgument, &watch);
+ QVERIFY(!watch.isError());
+
+ const QVariantList args2 = ac.reply().arguments();
+ QVERIFY(!args2.isEmpty());
+ QVERIFY(args2.at(0).toStringList().contains(tst->conn.baseService()));
+ }
+ } thread(this);
+ QTestEventLoop::instance().connect(&thread, SIGNAL(finished()), SLOT(exitLoop()));
+ thread.start();
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!thread.isRunning());
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
void tst_QDBusPendingCall::watcher_waitForFinished_alreadyFinished()
{
QDBusPendingCall ac = sendMessage();
diff --git a/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro b/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro
index f3262ee..13bf606 100644
--- a/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro
+++ b/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro
@@ -2,5 +2,3 @@ load(qttest_p4)
SOURCES += tst_qdeclarativeaudio.cpp
QT += multimedia declarative
-requires(contains(QT_CONFIG, multimedia))
-requires(contains(QT_CONFIG, declarative))
diff --git a/tests/auto/qdeclarativevideo/qdeclarativevideo.pro b/tests/auto/qdeclarativevideo/qdeclarativevideo.pro
index 0cd7879..d946bb0 100644
--- a/tests/auto/qdeclarativevideo/qdeclarativevideo.pro
+++ b/tests/auto/qdeclarativevideo/qdeclarativevideo.pro
@@ -2,5 +2,3 @@ load(qttest_p4)
SOURCES += tst_qdeclarativevideo.cpp
QT += multimedia declarative
-requires(contains(QT_CONFIG, multimedia))
-requires(contains(QT_CONFIG, declarative))
diff --git a/tests/auto/qeasingcurve/tst_qeasingcurve.cpp b/tests/auto/qeasingcurve/tst_qeasingcurve.cpp
index abb4014..124f900 100644
--- a/tests/auto/qeasingcurve/tst_qeasingcurve.cpp
+++ b/tests/auto/qeasingcurve/tst_qeasingcurve.cpp
@@ -69,8 +69,6 @@ private slots:
void valueForProgress();
void setCustomType();
void operators();
- void dataStreamOperators_data();
- void dataStreamOperators();
void properties();
void metaTypes();
@@ -509,58 +507,6 @@ void tst_QEasingCurve::operators()
QVERIFY(curve2 == curve);
}
-void tst_QEasingCurve::dataStreamOperators_data()
-{
- QTest::addColumn<int>("type");
- QTest::addColumn<qreal>("amplitude");
- QTest::addColumn<qreal>("overshoot");
- QTest::addColumn<qreal>("period");
- QTest::addColumn<QEasingCurve>("easingCurve");
- QTest::newRow("Linear") << int(QEasingCurve::Linear) << -1.0 << -1.0 << -1.0 << QEasingCurve(QEasingCurve::Linear);
- QTest::newRow("OutCubic") << int(QEasingCurve::OutCubic) << -1.0 << -1.0 << -1.0 << QEasingCurve(QEasingCurve::OutCubic);
- QTest::newRow("InOutSine") << int(QEasingCurve::InOutSine) << -1.0 << -1.0 << -1.0 << QEasingCurve(QEasingCurve::InOutSine);
- QEasingCurve inOutElastic(QEasingCurve::InOutElastic);
- inOutElastic.setPeriod(1.5);
- inOutElastic.setAmplitude(2.0);
- QTest::newRow("InOutElastic") << int(QEasingCurve::InOutElastic) << 2.0 << -1.0 << 1.5 << inOutElastic;
- QTest::newRow("OutInBack") << int(QEasingCurve::OutInBack) << -1.0 << -1.0 << -1.0 << QEasingCurve(QEasingCurve::OutInBack);
- QTest::newRow("OutCurve") << int(QEasingCurve::OutCurve) << -1.0 << -1.0 << -1.0 << QEasingCurve(QEasingCurve::OutCurve);
- QEasingCurve inOutBack(QEasingCurve::InOutBack);
- inOutBack.setOvershoot(0.5);
- QTest::newRow("InOutBack") << int(QEasingCurve::InOutBack) << -1.0 << 0.5 << -1.0 << inOutBack;
-}
-
-void tst_QEasingCurve::dataStreamOperators()
-{
- QFETCH(int, type);
- QFETCH(qreal, amplitude);
- QFETCH(qreal, overshoot);
- QFETCH(qreal, period);
- QFETCH(QEasingCurve, easingCurve);
-
- // operator <<
- QEasingCurve curve;
- curve.setType(QEasingCurve::Type(type));
- if (amplitude != -1.0)
- curve.setAmplitude(amplitude);
- if (overshoot != -1.0)
- curve.setOvershoot(overshoot);
- if (period != -1.0)
- curve.setPeriod(period);
-
- QVERIFY(easingCurve == curve);
-
- QByteArray array;
- QDataStream out(&array, QIODevice::WriteOnly);
- out << curve;
-
- QDataStream in(array);
- QEasingCurve curve2;
- in >> curve2;
-
- QVERIFY(curve2 == curve);
-}
-
class tst_QEasingProperties : public QObject
{
Q_OBJECT
diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp
index 1bf7850..6ffe2a7 100644
--- a/tests/auto/qgl/tst_qgl.cpp
+++ b/tests/auto/qgl/tst_qgl.cpp
@@ -978,6 +978,47 @@ void tst_QGL::glWidgetWithAlpha()
delete w;
}
+
+void qt_opengl_draw_test_pattern(QPainter* painter, int width, int height)
+{
+ QPainterPath intersectingPath;
+ intersectingPath.moveTo(0, 0);
+ intersectingPath.lineTo(100, 0);
+ intersectingPath.lineTo(0, 100);
+ intersectingPath.lineTo(100, 100);
+ intersectingPath.closeSubpath();
+
+ QPainterPath trianglePath;
+ trianglePath.moveTo(50, 0);
+ trianglePath.lineTo(100, 100);
+ trianglePath.lineTo(0, 100);
+ trianglePath.closeSubpath();
+
+ painter->setTransform(QTransform()); // reset xform
+ painter->fillRect(-1, -1, width+2, height+2, Qt::red); // Background
+ painter->translate(14, 14);
+ painter->fillPath(intersectingPath, Qt::blue); // Test stencil buffer works
+ painter->translate(128, 0);
+ painter->setClipPath(trianglePath); // Test depth buffer works
+ painter->setTransform(QTransform()); // reset xform ready for fill
+ painter->fillRect(-1, -1, width+2, height+2, Qt::green);
+}
+
+void qt_opengl_check_test_pattern(const QImage& img)
+{
+ // As we're doing more than trivial painting, we can't just compare to
+ // an image rendered with raster. Instead, we sample at well-defined
+ // test-points:
+ QFUZZY_COMPARE_PIXELS(img.pixel(39, 64), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(89, 64), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(64, 39), QColor(Qt::blue).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(64, 89), QColor(Qt::blue).rgb());
+
+ QFUZZY_COMPARE_PIXELS(img.pixel(167, 39), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(217, 39), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(192, 64), QColor(Qt::green).rgb());
+}
+
class GLWidget : public QGLWidget
{
public:
@@ -992,9 +1033,7 @@ public:
QPaintEngine* pe = p.paintEngine();
engineType = pe->type();
- // This test only ensures it's possible to paint onto a QGLWidget. Full
- // paint engine feature testing is way out of scope!
- p.fillRect(-1, -1, width()+2, height()+2, Qt::red);
+ qt_opengl_draw_test_pattern(&p, width(), height());
// No p.end() or swap buffers, should be done automatically
}
@@ -1007,7 +1046,7 @@ void tst_QGL::glWidgetRendering()
#ifdef Q_WS_QWS
w.setWindowFlags(Qt::FramelessWindowHint);
#endif
- w.setGeometry(100, 100, 200, 200);
+ w.resize(256, 128);
w.show();
#ifdef Q_WS_X11
@@ -1018,11 +1057,8 @@ void tst_QGL::glWidgetRendering()
QVERIFY(w.beginOk);
QVERIFY(w.engineType == QPaintEngine::OpenGL || w.engineType == QPaintEngine::OpenGL2);
- QImage fb = w.grabFrameBuffer(false).convertToFormat(QImage::Format_RGB32);
- QImage reference(fb.size(), QImage::Format_RGB32);
- reference.fill(0xffff0000);
-
- QFUZZY_COMPARE_IMAGES(fb, reference);
+ QImage fb = w.grabFrameBuffer(false);
+ qt_opengl_check_test_pattern(fb);
}
void tst_QGL::glFBOSimpleRendering()
@@ -1075,46 +1111,23 @@ void tst_QGL::glFBORendering()
// Don't complicate things by using NPOT:
QGLFramebufferObject *fbo = new QGLFramebufferObject(256, 128, fboFormat);
+ if (fbo->attachment() != QGLFramebufferObject::CombinedDepthStencil) {
+ delete fbo;
+ QSKIP("FBOs missing combined depth~stencil support", SkipSingle);
+ }
+
QPainter fboPainter;
bool painterBegun = fboPainter.begin(fbo);
QVERIFY(painterBegun);
- QPainterPath intersectingPath;
- intersectingPath.moveTo(0, 0);
- intersectingPath.lineTo(100, 0);
- intersectingPath.lineTo(0, 100);
- intersectingPath.lineTo(100, 100);
- intersectingPath.closeSubpath();
-
- QPainterPath trianglePath;
- trianglePath.moveTo(50, 0);
- trianglePath.lineTo(100, 100);
- trianglePath.lineTo(0, 100);
- trianglePath.closeSubpath();
+ qt_opengl_draw_test_pattern(&fboPainter, fbo->width(), fbo->height());
- fboPainter.fillRect(0, 0, fbo->width(), fbo->height(), Qt::red); // Background
- fboPainter.translate(14, 14);
- fboPainter.fillPath(intersectingPath, Qt::blue); // Test stencil buffer works
- fboPainter.translate(128, 0);
- fboPainter.setClipPath(trianglePath); // Test depth buffer works
- fboPainter.setTransform(QTransform()); // reset xform
- fboPainter.fillRect(0, 0, fbo->width(), fbo->height(), Qt::green);
fboPainter.end();
QImage fb = fbo->toImage().convertToFormat(QImage::Format_RGB32);
delete fbo;
- // As we're doing more than trivial painting, we can't just compare to
- // an image rendered with raster. Instead, we sample at well-defined
- // test-points:
- QFUZZY_COMPARE_PIXELS(fb.pixel(39, 64), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb.pixel(89, 64), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb.pixel(64, 39), QColor(Qt::blue).rgb());
- QFUZZY_COMPARE_PIXELS(fb.pixel(64, 89), QColor(Qt::blue).rgb());
-
- QFUZZY_COMPARE_PIXELS(fb.pixel(167, 39), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb.pixel(217, 39), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb.pixel(192, 64), QColor(Qt::green).rgb());
+ qt_opengl_check_test_pattern(fb);
}
@@ -1137,6 +1150,16 @@ void tst_QGL::multipleFBOInterleavedRendering()
QGLFramebufferObject *fbo2 = new QGLFramebufferObject(256, 128, fboFormat);
QGLFramebufferObject *fbo3 = new QGLFramebufferObject(256, 128, fboFormat);
+ if ( (fbo1->attachment() != QGLFramebufferObject::CombinedDepthStencil) ||
+ (fbo2->attachment() != QGLFramebufferObject::CombinedDepthStencil) ||
+ (fbo3->attachment() != QGLFramebufferObject::CombinedDepthStencil) )
+ {
+ delete fbo1;
+ delete fbo2;
+ delete fbo3;
+ QSKIP("FBOs missing combined depth~stencil support", SkipSingle);
+ }
+
QPainter fbo1Painter;
QPainter fbo2Painter;
QPainter fbo3Painter;
@@ -1242,7 +1265,7 @@ protected:
QPainter widgetPainter;
widgetPainterBeginOk = widgetPainter.begin(this);
QGLFramebufferObjectFormat fboFormat;
- fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+ fboFormat.setAttachment(QGLFramebufferObject::NoAttachment);
QGLFramebufferObject *fbo = new QGLFramebufferObject(128, 128, fboFormat);
QPainter fboPainter;
diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
index 2ef0419..d37ff76 100644
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -245,6 +245,7 @@ private slots:
#endif
void render_data();
void render();
+ void renderItemsWithNegativeWidthOrHeight();
void contextMenuEvent();
void contextMenuEvent_ItemIgnoresTransformations();
void update();
@@ -2751,6 +2752,41 @@ void tst_QGraphicsScene::render()
}
}
+void tst_QGraphicsScene::renderItemsWithNegativeWidthOrHeight()
+{
+ QGraphicsScene scene(0, 0, 150, 150);
+
+ // Add item with negative width.
+ QGraphicsRectItem *item1 = new QGraphicsRectItem(0, 0, -150, 50);
+ item1->setBrush(Qt::red);
+ item1->setPos(150, 50);
+ scene.addItem(item1);
+
+ // Add item with negative height.
+ QGraphicsRectItem *item2 = new QGraphicsRectItem(0, 0, 50, -150);
+ item2->setBrush(Qt::blue);
+ item2->setPos(50, 150);
+ scene.addItem(item2);
+
+ QGraphicsView view(&scene);
+ view.setFrameStyle(QFrame::NoFrame);
+ view.resize(150, 150);
+ view.show();
+ QCOMPARE(view.viewport()->size(), QSize(150, 150));
+
+ QImage expected(view.viewport()->size(), QImage::Format_RGB32);
+ view.viewport()->render(&expected);
+
+ // Make sure the scene background is the same as the viewport background.
+ scene.setBackgroundBrush(view.viewport()->palette().brush(view.viewport()->backgroundRole()));
+ QImage actual(150, 150, QImage::Format_RGB32);
+ QPainter painter(&actual);
+ scene.render(&painter);
+ painter.end();
+
+ QCOMPARE(actual, expected);
+}
+
void tst_QGraphicsScene::contextMenuEvent()
{
QGraphicsScene scene;
diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
index 59bffeb..c77f76d 100644
--- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
@@ -218,6 +218,7 @@ private slots:
void update();
void inputMethodSensitivity();
void inputContextReset();
+ void indirectPainting();
// task specific tests below me
void task172231_untransformableItems();
@@ -3799,6 +3800,31 @@ void tst_QGraphicsView::inputContextReset()
QCOMPARE(inputContext.resets, 0);
}
+void tst_QGraphicsView::indirectPainting()
+{
+ class MyScene : public QGraphicsScene
+ { public:
+ MyScene() : QGraphicsScene(), drawCount(0) {}
+ void drawItems(QPainter *, int, QGraphicsItem **, const QStyleOptionGraphicsItem *, QWidget *)
+ { ++drawCount; }
+ int drawCount;
+ };
+
+ MyScene scene;
+ QGraphicsItem *item = scene.addRect(0, 0, 50, 50);
+
+ QGraphicsView view(&scene);
+ view.setOptimizationFlag(QGraphicsView::IndirectPainting);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ QTest::qWait(100);
+
+ scene.drawCount = 0;
+ item->setPos(20, 20);
+ QApplication::processEvents();
+ QTRY_VERIFY(scene.drawCount > 0);
+}
+
void tst_QGraphicsView::task253415_reconnectUpdateSceneOnSceneChanged()
{
QGraphicsView view;
diff --git a/tests/auto/qmediacontent/tst_qmediacontent.cpp b/tests/auto/qmediacontent/tst_qmediacontent.cpp
index 8987241..a0a9bdb 100644
--- a/tests/auto/qmediacontent/tst_qmediacontent.cpp
+++ b/tests/auto/qmediacontent/tst_qmediacontent.cpp
@@ -85,6 +85,7 @@ void tst_QMediaContent::testRequestCtor()
QMediaContent media(request);
+ QCOMPARE(media.canonicalRequest(), request);
QCOMPARE(media.canonicalUrl(), QUrl("http://example.com/movie.mov"));
QCOMPARE(media.canonicalResource().request(), request);
QCOMPARE(media.canonicalResource().url(), QUrl("http://example.com/movie.mov"));
diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp
index beb83a1..a03b2c7 100644
--- a/tests/auto/qpainter/tst_qpainter.cpp
+++ b/tests/auto/qpainter/tst_qpainter.cpp
@@ -107,6 +107,7 @@ private slots:
void saveAndRestore();
void drawBorderPixmap();
+ void drawPixmapFragments();
void drawLine_data();
void drawLine();
@@ -994,6 +995,49 @@ void tst_QPainter::drawBorderPixmap()
QTileRules(Qt::StretchTile,Qt::StretchTile), 0);
}
+void tst_QPainter::drawPixmapFragments()
+{
+ QPixmap origPixmap(20, 20);
+ QPixmap resPixmap(20, 20);
+ QPainter::Fragment fragments[4] = { {15, 15, 0, 0, 10, 10, 1, 1, 0, 1},
+ { 5, 15, 10, 0, 10, 10, 1, 1, 0, 1},
+ {15, 5, 0, 10, 10, 10, 1, 1, 0, 1},
+ { 5, 5, 10, 10, 10, 10, 1, 1, 0, 1} };
+ {
+ QPainter p(&origPixmap);
+ p.fillRect(0, 0, 10, 10, Qt::red);
+ p.fillRect(10, 0, 10, 10, Qt::green);
+ p.fillRect(0, 10, 10, 10, Qt::blue);
+ p.fillRect(10, 10, 10, 10, Qt::yellow);
+ }
+ {
+ QPainter p(&resPixmap);
+ p.drawPixmapFragments(fragments, 4, origPixmap);
+ }
+
+ QImage origImage = origPixmap.toImage().convertToFormat(QImage::Format_ARGB32);
+ QImage resImage = resPixmap.toImage().convertToFormat(QImage::Format_ARGB32);
+
+ QVERIFY(resImage.size() == resPixmap.size());
+ QVERIFY(resImage.pixel(5, 5) == origImage.pixel(15, 15));
+ QVERIFY(resImage.pixel(5, 15) == origImage.pixel(15, 5));
+ QVERIFY(resImage.pixel(15, 5) == origImage.pixel(5, 15));
+ QVERIFY(resImage.pixel(15, 15) == origImage.pixel(5, 5));
+
+
+ QPainter::Fragment fragment = QPainter::Fragment::create(QPointF(20, 20), QRectF(30, 30, 2, 2));
+ QVERIFY(fragment.x == 20);
+ QVERIFY(fragment.y == 20);
+ QVERIFY(fragment.sourceLeft == 30);
+ QVERIFY(fragment.sourceTop == 30);
+ QVERIFY(fragment.width == 2);
+ QVERIFY(fragment.height == 2);
+ QVERIFY(fragment.scaleX == 1);
+ QVERIFY(fragment.scaleY == 1);
+ QVERIFY(fragment.rotation == 0);
+ QVERIFY(fragment.opacity == 1);
+}
+
void tst_QPainter::drawLine_data()
{
QTest::addColumn<QLine>("line");
@@ -3443,8 +3487,8 @@ bool verifyOutlineFillConsistency(const QImage &img, QRgb outside, QRgb inside,
if ((dx == 0) == (dy == 0))
continue;
QRgb neighbor = img.pixel(p.x() + dx, p.y() + dy);
- if (pixel == inside && neighbor == outside ||
- pixel == outside && neighbor == inside)
+ if ((pixel == inside && neighbor == outside) ||
+ (pixel == outside && neighbor == inside))
return false;
}
}
diff --git a/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp b/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp
index 66cfeb7..849b8b2 100644
--- a/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp
+++ b/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include <QtTest/QtTest>
+#include "../../shared/util.h"
#include <QtCore/qpropertyanimation.h>
#include <QtCore/qvariantanimation.h>
@@ -288,7 +289,7 @@ void tst_QPropertyAnimation::statesAndSignals()
anim->start();
QTest::qWait(1000);
- QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+ QTRY_COMPARE(anim->state(), QAnimationGroup::Stopped);
QCOMPARE(runningSpy.count(), 2); //started and stopped again
runningSpy.clear();
QCOMPARE(finishedSpy.count(), 1);
@@ -340,7 +341,7 @@ void tst_QPropertyAnimation::deletion1()
QCOMPARE(anim->state(), QAnimationGroup::Running);
QTest::qWait(150);
QVERIFY(anim); //The animation should not have been deleted
- QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+ QTRY_COMPARE(anim->state(), QAnimationGroup::Stopped);
QCOMPARE(runningSpy.count(), 2);
QCOMPARE(finishedSpy.count(), 1);
@@ -351,9 +352,9 @@ void tst_QPropertyAnimation::deletion1()
QVERIFY(anim);
QCOMPARE(anim->state(), QAnimationGroup::Running);
QTest::qWait(150);
- QVERIFY(!anim); //The animation must have been deleted
- QCOMPARE(runningSpy.count(), 4);
+ QTRY_COMPARE(runningSpy.count(), 4);
QCOMPARE(finishedSpy.count(), 2);
+ QVERIFY(!anim); //The animation must have been deleted
delete object;
}
@@ -459,7 +460,7 @@ void tst_QPropertyAnimation::noStartValue()
QTest::qWait(300);
- QCOMPARE(o.values.first(), 42);
+ QTRY_COMPARE(o.values.first(), 42);
QCOMPARE(o.values.last(), 420);
}
@@ -497,7 +498,7 @@ void tst_QPropertyAnimation::startWhenAnotherIsRunning()
QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
anim->start(QVariantAnimation::DeleteWhenStopped);
QTest::qWait(anim->duration() + 100);
- QCOMPARE(runningSpy.count(), 2); //started and then stopped
+ QTRY_COMPARE(runningSpy.count(), 2); //started and then stopped
QVERIFY(!anim);
}
@@ -518,7 +519,7 @@ void tst_QPropertyAnimation::startWhenAnotherIsRunning()
QVERIFY(!anim); //anim should have been deleted
QVERIFY(anim2);
QTest::qWait(anim2->duration());
- QVERIFY(!anim2); //anim2 is finished: it should have been deleted by now
+ QTRY_VERIFY(!anim2); //anim2 is finished: it should have been deleted by now
QVERIFY(!anim);
}
@@ -591,7 +592,7 @@ void tst_QPropertyAnimation::startWithoutStartValue()
QVERIFY(current < 100);
QTest::qWait(200);
- QCOMPARE(anim.state(), QVariantAnimation::Stopped);
+ QTRY_COMPARE(anim.state(), QVariantAnimation::Stopped);
current = anim.currentValue().toInt();
QCOMPARE(current, 100);
QCOMPARE(o.property("ole").toInt(), current);
@@ -631,7 +632,7 @@ void tst_QPropertyAnimation::startBackwardWithoutEndValue()
QVERIFY(current < 100);
QTest::qWait(200);
- QCOMPARE(anim.state(), QVariantAnimation::Stopped);
+ QTRY_COMPARE(anim.state(), QVariantAnimation::Stopped);
current = anim.currentValue().toInt();
QCOMPARE(current, 100);
QCOMPARE(o.property("ole").toInt(), current);
@@ -661,7 +662,7 @@ void tst_QPropertyAnimation::playForwardBackward()
anim.setEndValue(100);
anim.start();
QTest::qWait(anim.duration() + 100);
- QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
QCOMPARE(anim.currentTime(), anim.duration());
//the animation is at the end
@@ -669,7 +670,7 @@ void tst_QPropertyAnimation::playForwardBackward()
anim.start();
QCOMPARE(anim.state(), QAbstractAnimation::Running);
QTest::qWait(anim.duration() + 100);
- QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
QCOMPARE(anim.currentTime(), 0);
//the direction is backward
@@ -678,7 +679,7 @@ void tst_QPropertyAnimation::playForwardBackward()
QCOMPARE(anim.state(), QAbstractAnimation::Running);
QCOMPARE(anim.currentTime(), anim.duration());
QTest::qWait(anim.duration() + 100);
- QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
QCOMPARE(anim.currentTime(), 0);
}
@@ -1146,7 +1147,7 @@ void tst_QPropertyAnimation::twoAnimations()
o2.anim.start();
QTest::qWait(o1.anim.duration() + 100);
- QCOMPARE(o1.anim.state(), QAbstractAnimation::Stopped);
+ QTRY_COMPARE(o1.anim.state(), QAbstractAnimation::Stopped);
QCOMPARE(o2.anim.state(), QAbstractAnimation::Stopped);
QCOMPARE(o1.ole(), 1000);
@@ -1197,7 +1198,7 @@ void tst_QPropertyAnimation::deletedInUpdateCurrentTime()
QCOMPARE(composedAnimation.state(), QAbstractAnimation::Running);
QTest::qWait(composedAnimation.duration() + 100);
- QCOMPARE(composedAnimation.state(), QAbstractAnimation::Stopped);
+ QTRY_COMPARE(composedAnimation.state(), QAbstractAnimation::Stopped);
QCOMPARE(o.value(), 1000);
}
diff --git a/tests/auto/qregexp/tst_qregexp.cpp b/tests/auto/qregexp/tst_qregexp.cpp
index 4d16ab5..ea07323 100644
--- a/tests/auto/qregexp/tst_qregexp.cpp
+++ b/tests/auto/qregexp/tst_qregexp.cpp
@@ -102,6 +102,9 @@ private slots:
void reentrancy();
void threadsafeEngineCache();
+
+ void QTBUG_7049_data();
+ void QTBUG_7049();
};
// Testing get/set functions
@@ -1333,5 +1336,95 @@ void tst_QRegExp::operator_eq()
}
}
+void tst_QRegExp::QTBUG_7049_data()
+{
+ QTest::addColumn<QString>("reStr");
+ QTest::addColumn<QString>("text");
+ QTest::addColumn<int>("matchIndex");
+
+ QTest::addColumn<int>("pos0");
+ QTest::addColumn<int>("pos1");
+ QTest::addColumn<int>("pos2");
+
+ QTest::addColumn<QString>("cap0");
+ QTest::addColumn<QString>("cap1");
+ QTest::addColumn<QString>("cap2");
+
+ QTest::newRow("no match")
+ << QString("(a) (b)") << QString("b a") << -1
+ << -1 << -1 << -1 << QString() << QString() << QString();
+
+ QTest::newRow("both captures match")
+ << QString("(a) (b)") << QString("a b") << 0
+ << 0 << 0 << 2 << QString("a b") << QString("a") << QString("b");
+
+ QTest::newRow("first capture matches @0")
+ << QString("(a*)|(b*)") << QString("axx") << 0
+ << 0 << 0 << -1 << QString("a") << QString("a") << QString();
+ QTest::newRow("second capture matches @0")
+ << QString("(a*)|(b*)") << QString("bxx") << 0
+ << 0 << -1 << 0 << QString("b") << QString() << QString("b");
+ QTest::newRow("first capture empty match @0")
+ << QString("(a*)|(b*)") << QString("xx") << 0
+ << 0 << -1 << -1 << QString("") << QString() << QString();
+ QTest::newRow("second capture empty match @0")
+ << QString("(a)|(b*)") << QString("xx") << 0
+ << 0 << -1 << -1 << QString("") << QString() << QString();
+
+ QTest::newRow("first capture matches @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xa") << 1
+ << 1 << 2 << -1 << QString("xa") << QString("a") << QString();
+ QTest::newRow("second capture matches @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xb") << 1
+ << 1 << -1 << 2 << QString("xb") << QString() << QString("b");
+ QTest::newRow("first capture empty match @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xx") << 1
+ << 1 << -1 << -1 << QString("x") << QString() << QString();
+ QTest::newRow("second capture empty match @1")
+ << QString("x(?:(a)|(b*))") << QString("-xx") << 1
+ << 1 << -1 << -1 << QString("x") << QString() << QString();
+
+ QTest::newRow("first capture matches @2")
+ << QString("(a)|(b)") << QString("xxa") << 2
+ << 2 << 2 << -1 << QString("a") << QString("a") << QString();
+ QTest::newRow("second capture matches @2")
+ << QString("(a)|(b)") << QString("xxb") << 2
+ << 2 << -1 << 2 << QString("b") << QString() << QString("b");
+ QTest::newRow("no match - with options")
+ << QString("(a)|(b)") << QString("xx") << -1
+ << -1 << -1 << -1 << QString() << QString() << QString();
+
+}
+
+void tst_QRegExp::QTBUG_7049()
+{
+ QFETCH( QString, reStr );
+ QFETCH( QString, text );
+ QFETCH( int, matchIndex );
+ QFETCH( int, pos0 );
+ QFETCH( int, pos1 );
+ QFETCH( int, pos2 );
+ QFETCH( QString, cap0 );
+ QFETCH( QString, cap1 );
+ QFETCH( QString, cap2 );
+
+ QRegExp re(reStr);
+ QCOMPARE(re.numCaptures(), 2);
+ QCOMPARE(re.capturedTexts().size(), 3);
+
+ QCOMPARE(re.indexIn(text), matchIndex);
+
+ QCOMPARE( re.pos(0), pos0 );
+ QCOMPARE( re.pos(1), pos1 );
+ QCOMPARE( re.pos(2), pos2 );
+
+ QCOMPARE( re.cap(0).isNull(), cap0.isNull() );
+ QCOMPARE( re.cap(0), cap0 );
+ QCOMPARE( re.cap(1).isNull(), cap1.isNull() );
+ QCOMPARE( re.cap(1), cap1 );
+ QCOMPARE( re.cap(2).isNull(), cap2.isNull() );
+ QCOMPARE( re.cap(2), cap2 );
+}
+
QTEST_APPLESS_MAIN(tst_QRegExp)
#include "tst_qregexp.moc"
diff --git a/tests/auto/qscriptstring/tst_qscriptstring.cpp b/tests/auto/qscriptstring/tst_qscriptstring.cpp
index 808b643..ea4a92b 100644
--- a/tests/auto/qscriptstring/tst_qscriptstring.cpp
+++ b/tests/auto/qscriptstring/tst_qscriptstring.cpp
@@ -177,6 +177,12 @@ void tst_QScriptString::toArrayIndex_data()
QTest::newRow("101a") << QString::fromLatin1("101a") << false << quint32(0xffffffff);
QTest::newRow("4294967294") << QString::fromLatin1("4294967294") << true << quint32(0xfffffffe);
QTest::newRow("4294967295") << QString::fromLatin1("4294967295") << false << quint32(0xffffffff);
+ QTest::newRow("0.0") << QString::fromLatin1("0.0") << false << quint32(0xffffffff);
+ QTest::newRow("1.0") << QString::fromLatin1("1.0") << false << quint32(0xffffffff);
+ QTest::newRow("1.5") << QString::fromLatin1("1.5") << false << quint32(0xffffffff);
+ QTest::newRow("1.") << QString::fromLatin1("1.") << false << quint32(0xffffffff);
+ QTest::newRow(".1") << QString::fromLatin1(".1") << false << quint32(0xffffffff);
+ QTest::newRow("1e0") << QString::fromLatin1("1e0") << false << quint32(0xffffffff);
}
void tst_QScriptString::toArrayIndex()
diff --git a/tests/auto/qscriptvalue/qscriptvalue.pro b/tests/auto/qscriptvalue/qscriptvalue.pro
index 1588cc5..191cd4a 100644
--- a/tests/auto/qscriptvalue/qscriptvalue.pro
+++ b/tests/auto/qscriptvalue/qscriptvalue.pro
@@ -5,3 +5,10 @@ HEADERS += tst_qscriptvalue.h
# Generated by testgen
SOURCES += tst_qscriptvalue_generated.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/qscriptvalue/testgen/data.txt b/tests/auto/qscriptvalue/testgen/data.txt
index a041c9b..73677ec 100644
--- a/tests/auto/qscriptvalue/testgen/data.txt
+++ b/tests/auto/qscriptvalue/testgen/data.txt
@@ -34,6 +34,7 @@ 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)
@@ -64,6 +65,7 @@ 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)
@@ -114,7 +116,46 @@ 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() \ No newline at end of file
+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/gen.py b/tests/auto/qscriptvalue/testgen/gen.py
index b3c81b9..6e48f46 100755
--- a/tests/auto/qscriptvalue/testgen/gen.py
+++ b/tests/auto/qscriptvalue/testgen/gen.py
@@ -70,8 +70,7 @@ class Options():
return getattr(self._o, attr)
-mainTempl = Template("""/*
-/****************************************************************************
+mainTempl = Template("""/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
diff --git a/tests/auto/qscriptvalue/testgen/testgenerator.cpp b/tests/auto/qscriptvalue/testgen/testgenerator.cpp
index d852ea5..4376c42 100644
--- a/tests/auto/qscriptvalue/testgen/testgenerator.cpp
+++ b/tests/auto/qscriptvalue/testgen/testgenerator.cpp
@@ -119,6 +119,7 @@ static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
"{\n"\
" QFETCH(bool, expected);\n"\
" QCOMPARE(value.%1(), expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(%1)\n"\
@@ -166,6 +167,7 @@ static QString generateToXXXDef(const QString& name, const QList<QPair<QString,
"{\n"\
" QFETCH(%2, expected);\n"\
" QCOMPARE(value.%1(), expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(%1)\n";
@@ -213,9 +215,11 @@ QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString,
"%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";
@@ -269,6 +273,7 @@ static QString generateCastDef(const QList<QPair<QString, T> >& list)
"{\n"\
" QFETCH(%2, expected);\n"\
" QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
+ " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n";
@@ -313,13 +318,16 @@ QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
" QFETCH(%2, expected);\n"\
" if (qIsNaN(expected)) {\n"
" QVERIFY(qIsNaN(qscriptvalue_cast<%2>(value)));\n"
+ " QVERIFY(qIsNaN(qscriptvalue_cast<%2>(value)));\n"
" return;\n"
" }\n"\
" if (qIsInf(expected)) {\n"
" QVERIFY(qIsInf(qscriptvalue_cast<%2>(value)));\n"
+ " QVERIFY(qIsInf(qscriptvalue_cast<%2>(value)));\n"
" return;\n"
" }\n"
" QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
+ " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n";
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.h b/tests/auto/qscriptvalue/tst_qscriptvalue.h
index 6215506..a5c7b45 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.h
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.h
@@ -89,11 +89,11 @@ private slots:
void isObject_data();
void isObject();
-// void isQMetaObject_data();
-// void isQMetaObject();
+ void isQMetaObject_data();
+ void isQMetaObject();
-// void isQObject_data();
-// void isQObject();
+ void isQObject_data();
+ void isQObject();
void isRegExp_data();
void isRegExp();
@@ -107,8 +107,8 @@ private slots:
void isValid_data();
void isValid();
-// void isVariant_data();
-// void isVariant();
+ void isVariant_data();
+ void isVariant();
void toBool_data();
void toBool();
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
index 4e621b3..a07ff4b 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
@@ -152,8 +152,45 @@ void tst_QScriptValue::initScriptValues()
DEFINE_TEST_VALUE(engine->evaluate("new Object()"));
DEFINE_TEST_VALUE(engine->evaluate("new Array()"));
DEFINE_TEST_VALUE(engine->evaluate("new Error()"));
+ DEFINE_TEST_VALUE(engine->evaluate("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));
}
@@ -269,8 +306,45 @@ void tst_QScriptValue::isValid_makeData(const char* expr)
<< "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)"
;
}
newRow(expr) << isValid.contains(expr);
@@ -280,6 +354,7 @@ 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)
@@ -301,6 +376,8 @@ void tst_QScriptValue::isBool_makeData(const char* expr)
<< "QScriptValue(0, false)"
<< "QScriptValue(engine, true)"
<< "QScriptValue(engine, false)"
+ << "engine->evaluate(\"true\")"
+ << "engine->evaluate(\"false\")"
;
}
newRow(expr) << isBool.contains(expr);
@@ -310,6 +387,7 @@ 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)
@@ -331,6 +409,8 @@ void tst_QScriptValue::isBoolean_makeData(const char* expr)
<< "QScriptValue(0, false)"
<< "QScriptValue(engine, true)"
<< "QScriptValue(engine, false)"
+ << "engine->evaluate(\"true\")"
+ << "engine->evaluate(\"false\")"
;
}
newRow(expr) << isBoolean.contains(expr);
@@ -340,6 +420,7 @@ 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)
@@ -397,6 +478,20 @@ void tst_QScriptValue::isNumber_makeData(const char* expr)
<< "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\")"
;
}
newRow(expr) << isNumber.contains(expr);
@@ -406,6 +501,7 @@ 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)
@@ -430,6 +526,7 @@ void tst_QScriptValue::isFunction_makeData(const char* expr)
<< "engine->evaluate(\"(function() { return 'ciao'; })\")"
<< "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
<< "engine->evaluate(\"/foo/\")"
+ << "engine->newQMetaObject(&QObject::staticMetaObject)"
;
}
newRow(expr) << isFunction.contains(expr);
@@ -439,6 +536,7 @@ 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)
@@ -457,7 +555,9 @@ void tst_QScriptValue::isNull_makeData(const char* expr)
isNull << "QScriptValue(QScriptValue::NullValue)"
<< "QScriptValue(0, QScriptValue::NullValue)"
<< "QScriptValue(engine, QScriptValue::NullValue)"
+ << "engine->evaluate(\"null\")"
<< "engine->nullValue()"
+ << "engine->newQObject(0)"
;
}
newRow(expr) << isNull.contains(expr);
@@ -467,6 +567,7 @@ 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)
@@ -512,6 +613,11 @@ void tst_QScriptValue::isString_makeData(const char* expr)
<< "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'\")"
;
}
newRow(expr) << isString.contains(expr);
@@ -521,6 +627,7 @@ 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)
@@ -540,6 +647,7 @@ void tst_QScriptValue::isUndefined_makeData(const char* expr)
<< "QScriptValue(0, QScriptValue::UndefinedValue)"
<< "QScriptValue(engine, QScriptValue::UndefinedValue)"
<< "engine->evaluate(\"{}\")"
+ << "engine->evaluate(\"undefined\")"
<< "engine->undefinedValue()"
;
}
@@ -550,12 +658,90 @@ 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();
+}
+
+void tst_QScriptValue::isVariant_makeData(const char* expr)
+{
+ static QSet<QString> isVariant;
+ if (isVariant.isEmpty()) {
+ isVariant << "engine->newVariant(QVariant())"
+ << "engine->newVariant(QVariant(123))"
+ << "engine->newVariant(QVariant(false))"
+ ;
+ }
+ 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();
+}
+
+void tst_QScriptValue::isQObject_makeData(const char* expr)
+{
+ static QSet<QString> isQObject;
+ if (isQObject.isEmpty()) {
+ isQObject << "engine->newQObject(engine)"
+ ;
+ }
+ 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();
+}
+
+void tst_QScriptValue::isQMetaObject_makeData(const char* expr)
+{
+ static QSet<QString> isQMetaObject;
+ if (isQMetaObject.isEmpty()) {
+ isQMetaObject << "engine->newQMetaObject(&QObject::staticMetaObject)"
+ ;
+ }
+ 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()
@@ -585,6 +771,19 @@ void tst_QScriptValue::isObject_makeData(const char* expr)
<< "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)"
;
}
newRow(expr) << isObject.contains(expr);
@@ -594,6 +793,7 @@ 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)
@@ -610,6 +810,7 @@ void tst_QScriptValue::isDate_makeData(const char* expr)
static QSet<QString> isDate;
if (isDate.isEmpty()) {
isDate << "engine->evaluate(\"Date.prototype\")"
+ << "engine->newDate(QDateTime())"
;
}
newRow(expr) << isDate.contains(expr);
@@ -619,6 +820,7 @@ 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)
@@ -644,6 +846,7 @@ 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)
@@ -662,6 +865,8 @@ void tst_QScriptValue::isArray_makeData(const char* expr)
isArray << "engine->evaluate(\"[]\")"
<< "engine->evaluate(\"Array.prototype\")"
<< "engine->evaluate(\"new Array()\")"
+ << "engine->newArray()"
+ << "engine->newArray(10)"
;
}
newRow(expr) << isArray.contains(expr);
@@ -671,6 +876,7 @@ 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)
@@ -688,6 +894,10 @@ void tst_QScriptValue::isError_makeData(const char* expr)
if (isError.isEmpty()) {
isError << "engine->evaluate(\"Error.prototype\")"
<< "engine->evaluate(\"new Error()\")"
+ << "engine->evaluate(\"Undefined\")"
+ << "engine->evaluate(\"Null\")"
+ << "engine->evaluate(\"True\")"
+ << "engine->evaluate(\"False\")"
;
}
newRow(expr) << isError.contains(expr);
@@ -697,6 +907,7 @@ 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)
@@ -816,8 +1027,45 @@ void tst_QScriptValue::toString_makeData(const char* expr)
toString.insert("engine->evaluate(\"new Object()\")", "[object Object]");
toString.insert("engine->evaluate(\"new Array()\")", "");
toString.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+ toString.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", "22");
+ toString.insert("engine->evaluate(\"Undefined\")", "ReferenceError: Can't find variable: Undefined");
+ toString.insert("engine->evaluate(\"Null\")", "ReferenceError: Can't find variable: Null");
+ toString.insert("engine->evaluate(\"True\")", "ReferenceError: Can't find variable: True");
+ toString.insert("engine->evaluate(\"False\")", "ReferenceError: Can't find variable: False");
+ toString.insert("engine->evaluate(\"undefined\")", "undefined");
+ toString.insert("engine->evaluate(\"null\")", "null");
+ toString.insert("engine->evaluate(\"true\")", "true");
+ toString.insert("engine->evaluate(\"false\")", "false");
+ toString.insert("engine->evaluate(\"122\")", "122");
+ toString.insert("engine->evaluate(\"124\")", "124");
+ toString.insert("engine->evaluate(\"0\")", "0");
+ toString.insert("engine->evaluate(\"0.0\")", "0");
+ toString.insert("engine->evaluate(\"123.0\")", "123");
+ toString.insert("engine->evaluate(\"6.37e-8\")", "6.37e-8");
+ toString.insert("engine->evaluate(\"-6.37e-8\")", "-6.37e-8");
+ toString.insert("engine->evaluate(\"0x43211234\")", "1126240820");
+ toString.insert("engine->evaluate(\"0x10000\")", "65536");
+ toString.insert("engine->evaluate(\"0x10001\")", "65537");
+ toString.insert("engine->evaluate(\"NaN\")", "NaN");
+ toString.insert("engine->evaluate(\"Infinity\")", "Infinity");
+ toString.insert("engine->evaluate(\"-Infinity\")", "-Infinity");
+ toString.insert("engine->evaluate(\"'ciao'\")", "ciao");
+ toString.insert("engine->evaluate(\"''\")", "");
+ toString.insert("engine->evaluate(\"'0'\")", "0");
+ toString.insert("engine->evaluate(\"'123'\")", "123");
+ toString.insert("engine->evaluate(\"'12.4'\")", "12.4");
toString.insert("engine->nullValue()", "null");
toString.insert("engine->undefinedValue()", "undefined");
+ toString.insert("engine->newObject()", "[object Object]");
+ toString.insert("engine->newArray()", "");
+ toString.insert("engine->newArray(10)", ",,,,,,,,,");
+ toString.insert("engine->newDate(QDateTime())", "Invalid Date");
+ toString.insert("engine->newQMetaObject(&QObject::staticMetaObject)", "[object QMetaObject]");
+ toString.insert("engine->newVariant(QVariant())", "undefined");
+ toString.insert("engine->newVariant(QVariant(123))", "123");
+ toString.insert("engine->newVariant(QVariant(false))", "false");
+ toString.insert("engine->newQObject(0)", "null");
+ toString.insert("engine->newQObject(engine)", "QScriptEngine(name = \"\")");
}
newRow(expr) << toString.value(expr);
}
@@ -826,6 +1074,7 @@ 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)
@@ -944,8 +1193,45 @@ void tst_QScriptValue::toNumber_makeData(const char* expr)
toNumber.insert("engine->evaluate(\"new Object()\")", qQNaN());
toNumber.insert("engine->evaluate(\"new Array()\")", 0);
toNumber.insert("engine->evaluate(\"new Error()\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toNumber.insert("engine->evaluate(\"Undefined\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Null\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"True\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"False\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"undefined\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"null\")", 0);
+ toNumber.insert("engine->evaluate(\"true\")", 1);
+ toNumber.insert("engine->evaluate(\"false\")", 0);
+ toNumber.insert("engine->evaluate(\"122\")", 122);
+ toNumber.insert("engine->evaluate(\"124\")", 124);
+ toNumber.insert("engine->evaluate(\"0\")", 0);
+ toNumber.insert("engine->evaluate(\"0.0\")", 0);
+ toNumber.insert("engine->evaluate(\"123.0\")", 123);
+ toNumber.insert("engine->evaluate(\"6.37e-8\")", 6.369999999999999e-08);
+ toNumber.insert("engine->evaluate(\"-6.37e-8\")", -6.369999999999999e-08);
+ toNumber.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toNumber.insert("engine->evaluate(\"0x10000\")", 65536);
+ toNumber.insert("engine->evaluate(\"0x10001\")", 65537);
+ toNumber.insert("engine->evaluate(\"NaN\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Infinity\")", qInf());
+ toNumber.insert("engine->evaluate(\"-Infinity\")", qInf());
+ toNumber.insert("engine->evaluate(\"'ciao'\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"''\")", 0);
+ toNumber.insert("engine->evaluate(\"'0'\")", 0);
+ toNumber.insert("engine->evaluate(\"'123'\")", 123);
+ toNumber.insert("engine->evaluate(\"'12.4'\")", 12.4);
toNumber.insert("engine->nullValue()", 0);
toNumber.insert("engine->undefinedValue()", qQNaN());
+ toNumber.insert("engine->newObject()", qQNaN());
+ toNumber.insert("engine->newArray()", 0);
+ toNumber.insert("engine->newArray(10)", qQNaN());
+ toNumber.insert("engine->newDate(QDateTime())", qQNaN());
+ toNumber.insert("engine->newQMetaObject(&QObject::staticMetaObject)", qQNaN());
+ toNumber.insert("engine->newVariant(QVariant())", qQNaN());
+ toNumber.insert("engine->newVariant(QVariant(123))", 123);
+ toNumber.insert("engine->newVariant(QVariant(false))", 0);
+ toNumber.insert("engine->newQObject(0)", 0);
+ toNumber.insert("engine->newQObject(engine)", qQNaN());
}
newRow(expr) << toNumber.value(expr);
}
@@ -959,9 +1245,11 @@ void tst_QScriptValue::toNumber_test(const char*, const QScriptValue& value)
}
if (qIsInf(expected)) {
QVERIFY(qIsInf(value.toNumber()));
+ QVERIFY(qIsInf(value.toNumber()));
return;
}
QCOMPARE(value.toNumber(), expected);
+ QCOMPARE(value.toNumber(), expected);
}
DEFINE_TEST_FUNCTION(toNumber)
@@ -1080,8 +1368,45 @@ void tst_QScriptValue::toBool_makeData(const char* expr)
toBool.insert("engine->evaluate(\"new Object()\")", true);
toBool.insert("engine->evaluate(\"new Array()\")", true);
toBool.insert("engine->evaluate(\"new Error()\")", true);
+ toBool.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true);
+ toBool.insert("engine->evaluate(\"Undefined\")", true);
+ toBool.insert("engine->evaluate(\"Null\")", true);
+ toBool.insert("engine->evaluate(\"True\")", true);
+ toBool.insert("engine->evaluate(\"False\")", true);
+ toBool.insert("engine->evaluate(\"undefined\")", false);
+ toBool.insert("engine->evaluate(\"null\")", false);
+ toBool.insert("engine->evaluate(\"true\")", true);
+ toBool.insert("engine->evaluate(\"false\")", false);
+ toBool.insert("engine->evaluate(\"122\")", true);
+ toBool.insert("engine->evaluate(\"124\")", true);
+ toBool.insert("engine->evaluate(\"0\")", false);
+ toBool.insert("engine->evaluate(\"0.0\")", false);
+ toBool.insert("engine->evaluate(\"123.0\")", true);
+ toBool.insert("engine->evaluate(\"6.37e-8\")", true);
+ toBool.insert("engine->evaluate(\"-6.37e-8\")", true);
+ toBool.insert("engine->evaluate(\"0x43211234\")", true);
+ toBool.insert("engine->evaluate(\"0x10000\")", true);
+ toBool.insert("engine->evaluate(\"0x10001\")", true);
+ toBool.insert("engine->evaluate(\"NaN\")", false);
+ toBool.insert("engine->evaluate(\"Infinity\")", true);
+ toBool.insert("engine->evaluate(\"-Infinity\")", true);
+ toBool.insert("engine->evaluate(\"'ciao'\")", true);
+ toBool.insert("engine->evaluate(\"''\")", false);
+ toBool.insert("engine->evaluate(\"'0'\")", true);
+ toBool.insert("engine->evaluate(\"'123'\")", true);
+ toBool.insert("engine->evaluate(\"'12.4'\")", true);
toBool.insert("engine->nullValue()", false);
toBool.insert("engine->undefinedValue()", false);
+ toBool.insert("engine->newObject()", true);
+ toBool.insert("engine->newArray()", true);
+ toBool.insert("engine->newArray(10)", true);
+ toBool.insert("engine->newDate(QDateTime())", true);
+ toBool.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true);
+ toBool.insert("engine->newVariant(QVariant())", true);
+ toBool.insert("engine->newVariant(QVariant(123))", true);
+ toBool.insert("engine->newVariant(QVariant(false))", true);
+ toBool.insert("engine->newQObject(0)", false);
+ toBool.insert("engine->newQObject(engine)", true);
}
newRow(expr) << toBool.value(expr);
}
@@ -1090,6 +1415,7 @@ 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)
@@ -1208,8 +1534,45 @@ void tst_QScriptValue::toBoolean_makeData(const char* expr)
toBoolean.insert("engine->evaluate(\"new Object()\")", true);
toBoolean.insert("engine->evaluate(\"new Array()\")", true);
toBoolean.insert("engine->evaluate(\"new Error()\")", true);
+ toBoolean.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true);
+ toBoolean.insert("engine->evaluate(\"Undefined\")", true);
+ toBoolean.insert("engine->evaluate(\"Null\")", true);
+ toBoolean.insert("engine->evaluate(\"True\")", true);
+ toBoolean.insert("engine->evaluate(\"False\")", true);
+ toBoolean.insert("engine->evaluate(\"undefined\")", false);
+ toBoolean.insert("engine->evaluate(\"null\")", false);
+ toBoolean.insert("engine->evaluate(\"true\")", true);
+ toBoolean.insert("engine->evaluate(\"false\")", false);
+ toBoolean.insert("engine->evaluate(\"122\")", true);
+ toBoolean.insert("engine->evaluate(\"124\")", true);
+ toBoolean.insert("engine->evaluate(\"0\")", false);
+ toBoolean.insert("engine->evaluate(\"0.0\")", false);
+ toBoolean.insert("engine->evaluate(\"123.0\")", true);
+ toBoolean.insert("engine->evaluate(\"6.37e-8\")", true);
+ toBoolean.insert("engine->evaluate(\"-6.37e-8\")", true);
+ toBoolean.insert("engine->evaluate(\"0x43211234\")", true);
+ toBoolean.insert("engine->evaluate(\"0x10000\")", true);
+ toBoolean.insert("engine->evaluate(\"0x10001\")", true);
+ toBoolean.insert("engine->evaluate(\"NaN\")", false);
+ toBoolean.insert("engine->evaluate(\"Infinity\")", true);
+ toBoolean.insert("engine->evaluate(\"-Infinity\")", true);
+ toBoolean.insert("engine->evaluate(\"'ciao'\")", true);
+ toBoolean.insert("engine->evaluate(\"''\")", false);
+ toBoolean.insert("engine->evaluate(\"'0'\")", true);
+ toBoolean.insert("engine->evaluate(\"'123'\")", true);
+ toBoolean.insert("engine->evaluate(\"'12.4'\")", true);
toBoolean.insert("engine->nullValue()", false);
toBoolean.insert("engine->undefinedValue()", false);
+ toBoolean.insert("engine->newObject()", true);
+ toBoolean.insert("engine->newArray()", true);
+ toBoolean.insert("engine->newArray(10)", true);
+ toBoolean.insert("engine->newDate(QDateTime())", true);
+ toBoolean.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true);
+ toBoolean.insert("engine->newVariant(QVariant())", true);
+ toBoolean.insert("engine->newVariant(QVariant(123))", true);
+ toBoolean.insert("engine->newVariant(QVariant(false))", true);
+ toBoolean.insert("engine->newQObject(0)", false);
+ toBoolean.insert("engine->newQObject(engine)", true);
}
newRow(expr) << toBoolean.value(expr);
}
@@ -1218,6 +1581,7 @@ 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)
@@ -1336,8 +1700,45 @@ void tst_QScriptValue::toInteger_makeData(const char* expr)
toInteger.insert("engine->evaluate(\"new Object()\")", 0);
toInteger.insert("engine->evaluate(\"new Array()\")", 0);
toInteger.insert("engine->evaluate(\"new Error()\")", 0);
+ toInteger.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toInteger.insert("engine->evaluate(\"Undefined\")", 0);
+ toInteger.insert("engine->evaluate(\"Null\")", 0);
+ toInteger.insert("engine->evaluate(\"True\")", 0);
+ toInteger.insert("engine->evaluate(\"False\")", 0);
+ toInteger.insert("engine->evaluate(\"undefined\")", 0);
+ toInteger.insert("engine->evaluate(\"null\")", 0);
+ toInteger.insert("engine->evaluate(\"true\")", 1);
+ toInteger.insert("engine->evaluate(\"false\")", 0);
+ toInteger.insert("engine->evaluate(\"122\")", 122);
+ toInteger.insert("engine->evaluate(\"124\")", 124);
+ toInteger.insert("engine->evaluate(\"0\")", 0);
+ toInteger.insert("engine->evaluate(\"0.0\")", 0);
+ toInteger.insert("engine->evaluate(\"123.0\")", 123);
+ toInteger.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toInteger.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toInteger.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toInteger.insert("engine->evaluate(\"0x10000\")", 65536);
+ toInteger.insert("engine->evaluate(\"0x10001\")", 65537);
+ toInteger.insert("engine->evaluate(\"NaN\")", 0);
+ toInteger.insert("engine->evaluate(\"Infinity\")", qInf());
+ toInteger.insert("engine->evaluate(\"-Infinity\")", qInf());
+ toInteger.insert("engine->evaluate(\"'ciao'\")", 0);
+ toInteger.insert("engine->evaluate(\"''\")", 0);
+ toInteger.insert("engine->evaluate(\"'0'\")", 0);
+ toInteger.insert("engine->evaluate(\"'123'\")", 123);
+ toInteger.insert("engine->evaluate(\"'12.4'\")", 12);
toInteger.insert("engine->nullValue()", 0);
toInteger.insert("engine->undefinedValue()", 0);
+ toInteger.insert("engine->newObject()", 0);
+ toInteger.insert("engine->newArray()", 0);
+ toInteger.insert("engine->newArray(10)", 0);
+ toInteger.insert("engine->newDate(QDateTime())", 0);
+ toInteger.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toInteger.insert("engine->newVariant(QVariant())", 0);
+ toInteger.insert("engine->newVariant(QVariant(123))", 123);
+ toInteger.insert("engine->newVariant(QVariant(false))", 0);
+ toInteger.insert("engine->newQObject(0)", 0);
+ toInteger.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toInteger.value(expr);
}
@@ -1347,9 +1748,11 @@ 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)
@@ -1468,8 +1871,45 @@ void tst_QScriptValue::toInt32_makeData(const char* expr)
toInt32.insert("engine->evaluate(\"new Object()\")", 0);
toInt32.insert("engine->evaluate(\"new Array()\")", 0);
toInt32.insert("engine->evaluate(\"new Error()\")", 0);
+ toInt32.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toInt32.insert("engine->evaluate(\"Undefined\")", 0);
+ toInt32.insert("engine->evaluate(\"Null\")", 0);
+ toInt32.insert("engine->evaluate(\"True\")", 0);
+ toInt32.insert("engine->evaluate(\"False\")", 0);
+ toInt32.insert("engine->evaluate(\"undefined\")", 0);
+ toInt32.insert("engine->evaluate(\"null\")", 0);
+ toInt32.insert("engine->evaluate(\"true\")", 1);
+ toInt32.insert("engine->evaluate(\"false\")", 0);
+ toInt32.insert("engine->evaluate(\"122\")", 122);
+ toInt32.insert("engine->evaluate(\"124\")", 124);
+ toInt32.insert("engine->evaluate(\"0\")", 0);
+ toInt32.insert("engine->evaluate(\"0.0\")", 0);
+ toInt32.insert("engine->evaluate(\"123.0\")", 123);
+ toInt32.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toInt32.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toInt32.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toInt32.insert("engine->evaluate(\"0x10000\")", 65536);
+ toInt32.insert("engine->evaluate(\"0x10001\")", 65537);
+ toInt32.insert("engine->evaluate(\"NaN\")", 0);
+ toInt32.insert("engine->evaluate(\"Infinity\")", 0);
+ toInt32.insert("engine->evaluate(\"-Infinity\")", 0);
+ toInt32.insert("engine->evaluate(\"'ciao'\")", 0);
+ toInt32.insert("engine->evaluate(\"''\")", 0);
+ toInt32.insert("engine->evaluate(\"'0'\")", 0);
+ toInt32.insert("engine->evaluate(\"'123'\")", 123);
+ toInt32.insert("engine->evaluate(\"'12.4'\")", 12);
toInt32.insert("engine->nullValue()", 0);
toInt32.insert("engine->undefinedValue()", 0);
+ toInt32.insert("engine->newObject()", 0);
+ toInt32.insert("engine->newArray()", 0);
+ toInt32.insert("engine->newArray(10)", 0);
+ toInt32.insert("engine->newDate(QDateTime())", 0);
+ toInt32.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toInt32.insert("engine->newVariant(QVariant())", 0);
+ toInt32.insert("engine->newVariant(QVariant(123))", 123);
+ toInt32.insert("engine->newVariant(QVariant(false))", 0);
+ toInt32.insert("engine->newQObject(0)", 0);
+ toInt32.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toInt32.value(expr);
}
@@ -1478,6 +1918,7 @@ 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)
@@ -1596,8 +2037,45 @@ void tst_QScriptValue::toUInt32_makeData(const char* expr)
toUInt32.insert("engine->evaluate(\"new Object()\")", 0);
toUInt32.insert("engine->evaluate(\"new Array()\")", 0);
toUInt32.insert("engine->evaluate(\"new Error()\")", 0);
+ toUInt32.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toUInt32.insert("engine->evaluate(\"Undefined\")", 0);
+ toUInt32.insert("engine->evaluate(\"Null\")", 0);
+ toUInt32.insert("engine->evaluate(\"True\")", 0);
+ toUInt32.insert("engine->evaluate(\"False\")", 0);
+ toUInt32.insert("engine->evaluate(\"undefined\")", 0);
+ toUInt32.insert("engine->evaluate(\"null\")", 0);
+ toUInt32.insert("engine->evaluate(\"true\")", 1);
+ toUInt32.insert("engine->evaluate(\"false\")", 0);
+ toUInt32.insert("engine->evaluate(\"122\")", 122);
+ toUInt32.insert("engine->evaluate(\"124\")", 124);
+ toUInt32.insert("engine->evaluate(\"0\")", 0);
+ toUInt32.insert("engine->evaluate(\"0.0\")", 0);
+ toUInt32.insert("engine->evaluate(\"123.0\")", 123);
+ toUInt32.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toUInt32.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toUInt32.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toUInt32.insert("engine->evaluate(\"0x10000\")", 65536);
+ toUInt32.insert("engine->evaluate(\"0x10001\")", 65537);
+ toUInt32.insert("engine->evaluate(\"NaN\")", 0);
+ toUInt32.insert("engine->evaluate(\"Infinity\")", 0);
+ toUInt32.insert("engine->evaluate(\"-Infinity\")", 0);
+ toUInt32.insert("engine->evaluate(\"'ciao'\")", 0);
+ toUInt32.insert("engine->evaluate(\"''\")", 0);
+ toUInt32.insert("engine->evaluate(\"'0'\")", 0);
+ toUInt32.insert("engine->evaluate(\"'123'\")", 123);
+ toUInt32.insert("engine->evaluate(\"'12.4'\")", 12);
toUInt32.insert("engine->nullValue()", 0);
toUInt32.insert("engine->undefinedValue()", 0);
+ toUInt32.insert("engine->newObject()", 0);
+ toUInt32.insert("engine->newArray()", 0);
+ toUInt32.insert("engine->newArray(10)", 0);
+ toUInt32.insert("engine->newDate(QDateTime())", 0);
+ toUInt32.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toUInt32.insert("engine->newVariant(QVariant())", 0);
+ toUInt32.insert("engine->newVariant(QVariant(123))", 123);
+ toUInt32.insert("engine->newVariant(QVariant(false))", 0);
+ toUInt32.insert("engine->newQObject(0)", 0);
+ toUInt32.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toUInt32.value(expr);
}
@@ -1606,6 +2084,7 @@ 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)
@@ -1724,8 +2203,45 @@ void tst_QScriptValue::toUInt16_makeData(const char* expr)
toUInt16.insert("engine->evaluate(\"new Object()\")", 0);
toUInt16.insert("engine->evaluate(\"new Array()\")", 0);
toUInt16.insert("engine->evaluate(\"new Error()\")", 0);
+ toUInt16.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toUInt16.insert("engine->evaluate(\"Undefined\")", 0);
+ toUInt16.insert("engine->evaluate(\"Null\")", 0);
+ toUInt16.insert("engine->evaluate(\"True\")", 0);
+ toUInt16.insert("engine->evaluate(\"False\")", 0);
+ toUInt16.insert("engine->evaluate(\"undefined\")", 0);
+ toUInt16.insert("engine->evaluate(\"null\")", 0);
+ toUInt16.insert("engine->evaluate(\"true\")", 1);
+ toUInt16.insert("engine->evaluate(\"false\")", 0);
+ toUInt16.insert("engine->evaluate(\"122\")", 122);
+ toUInt16.insert("engine->evaluate(\"124\")", 124);
+ toUInt16.insert("engine->evaluate(\"0\")", 0);
+ toUInt16.insert("engine->evaluate(\"0.0\")", 0);
+ toUInt16.insert("engine->evaluate(\"123.0\")", 123);
+ toUInt16.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toUInt16.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toUInt16.insert("engine->evaluate(\"0x43211234\")", 4660);
+ toUInt16.insert("engine->evaluate(\"0x10000\")", 0);
+ toUInt16.insert("engine->evaluate(\"0x10001\")", 1);
+ toUInt16.insert("engine->evaluate(\"NaN\")", 0);
+ toUInt16.insert("engine->evaluate(\"Infinity\")", 0);
+ toUInt16.insert("engine->evaluate(\"-Infinity\")", 0);
+ toUInt16.insert("engine->evaluate(\"'ciao'\")", 0);
+ toUInt16.insert("engine->evaluate(\"''\")", 0);
+ toUInt16.insert("engine->evaluate(\"'0'\")", 0);
+ toUInt16.insert("engine->evaluate(\"'123'\")", 123);
+ toUInt16.insert("engine->evaluate(\"'12.4'\")", 12);
toUInt16.insert("engine->nullValue()", 0);
toUInt16.insert("engine->undefinedValue()", 0);
+ toUInt16.insert("engine->newObject()", 0);
+ toUInt16.insert("engine->newArray()", 0);
+ toUInt16.insert("engine->newArray(10)", 0);
+ toUInt16.insert("engine->newDate(QDateTime())", 0);
+ toUInt16.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toUInt16.insert("engine->newVariant(QVariant())", 0);
+ toUInt16.insert("engine->newVariant(QVariant(123))", 123);
+ toUInt16.insert("engine->newVariant(QVariant(false))", 0);
+ toUInt16.insert("engine->newQObject(0)", 0);
+ toUInt16.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toUInt16.value(expr);
}
@@ -1734,6 +2250,7 @@ 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)
@@ -1758,8 +2275,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->nullValue()");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -1767,11 +2287,15 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(true) <=> QScriptValue(true)");
equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(false) <=> QScriptValue(false)");
equals.insert("QScriptValue(false) <=> QScriptValue(0)");
equals.insert("QScriptValue(false) <=> QScriptValue(0.0)");
@@ -1793,12 +2317,21 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(false) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(false) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(false) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(false) <=> engine->newArray()");
+ equals.insert("QScriptValue(false) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(0) <=> QScriptValue(false)");
equals.insert("QScriptValue(0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0) <=> QScriptValue(0.0)");
@@ -1820,6 +2353,13 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0.0) <=> QScriptValue(false)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)");
@@ -1841,39 +2381,56 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0.0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0.0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(123.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -1883,24 +2440,28 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0.0)");
@@ -1919,6 +2480,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newArray()");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(false)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(0)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(0.0)");
@@ -1937,6 +2504,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(QString()) <=> engine->newArray()");
+ equals.insert("QScriptValue(QString()) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0.0)");
@@ -1949,13 +2522,22 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0.0)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -1963,8 +2545,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->nullValue()");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -1972,11 +2557,15 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(0, false) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(0.0)");
@@ -1998,12 +2587,21 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, false) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, false) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0.0)");
@@ -2025,6 +2623,13 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, 0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0.0)");
@@ -2046,39 +2651,56 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2088,24 +2710,28 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0.0)");
@@ -2124,6 +2750,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0.0)");
@@ -2142,6 +2774,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0.0)");
@@ -2154,12 +2792,20 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0.0)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
@@ -2168,8 +2814,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->nullValue()");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -2177,11 +2826,15 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(0.0)");
@@ -2203,12 +2856,21 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, false) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0.0)");
@@ -2230,6 +2892,13 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, 0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0.0)");
@@ -2251,39 +2920,56 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2293,24 +2979,28 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0.0)");
@@ -2329,6 +3019,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0.0)");
@@ -2347,6 +3043,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0.0)");
@@ -2359,12 +3061,20 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0.0)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(false)");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0)");
@@ -2382,6 +3092,10 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"\"))");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString())");
equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"''\")");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -2389,8 +3103,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"null\")");
equals.insert("engine->evaluate(\"{}\") <=> engine->nullValue()");
equals.insert("engine->evaluate(\"{}\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->newQObject(0)");
equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(false)");
@@ -2409,6 +3126,10 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"\"))");
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString())");
equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"''\")");
equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")");
equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")");
equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")");
@@ -2436,7 +3157,238 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"\"))");
equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString())");
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"''\")");
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"null\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"null\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"false\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"0\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -2444,8 +3396,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("engine->nullValue() <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"null\")");
equals.insert("engine->nullValue() <=> engine->nullValue()");
equals.insert("engine->nullValue() <=> engine->undefinedValue()");
+ equals.insert("engine->nullValue() <=> engine->newQObject(0)");
equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -2453,8 +3408,82 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("engine->undefinedValue() <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->undefinedValue() <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->undefinedValue() <=> engine->evaluate(\"null\")");
equals.insert("engine->undefinedValue() <=> engine->nullValue()");
equals.insert("engine->undefinedValue() <=> engine->undefinedValue()");
+ equals.insert("engine->undefinedValue() <=> engine->newQObject(0)");
+ equals.insert("engine->newObject() <=> engine->newObject()");
+ equals.insert("engine->newArray() <=> QScriptValue(false)");
+ equals.insert("engine->newArray() <=> QScriptValue(0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString())");
+ equals.insert("engine->newArray() <=> QScriptValue(0, false)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString())");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, false)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString())");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"false\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"''\")");
+ equals.insert("engine->newArray() <=> engine->newArray()");
+ equals.insert("engine->newArray(10) <=> engine->newArray(10)");
+ equals.insert("engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(123.0)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(false)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, false)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, false)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"false\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"''\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"null\")");
+ equals.insert("engine->newQObject(0) <=> engine->nullValue()");
+ equals.insert("engine->newQObject(0) <=> engine->undefinedValue()");
+ equals.insert("engine->newQObject(0) <=> engine->newQObject(0)");
+ equals.insert("engine->newQObject(engine) <=> engine->newQObject(engine)");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -2489,59 +3518,78 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(true) <=> QScriptValue(true)");
equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(false) <=> QScriptValue(false)");
equals.insert("QScriptValue(false) <=> QScriptValue(0, false)");
equals.insert("QScriptValue(false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"false\")");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"123.0\")");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2557,88 +3605,114 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString())");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(QString())");
equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(0, false) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(0, false)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"false\")");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2654,88 +3728,113 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString())");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, false)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"false\")");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2751,36 +3850,43 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString())");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))");
equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"undefined\")");
equals.insert("engine->evaluate(\"{}\") <=> engine->undefinedValue()");
equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
@@ -2798,15 +3904,138 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")");
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"null\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)");
equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"null\")");
equals.insert("engine->nullValue() <=> engine->nullValue()");
+ equals.insert("engine->nullValue() <=> engine->newQObject(0)");
equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("engine->undefinedValue() <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->undefinedValue() <=> engine->evaluate(\"undefined\")");
equals.insert("engine->undefinedValue() <=> engine->undefinedValue()");
+ equals.insert("engine->newObject() <=> engine->newObject()");
+ equals.insert("engine->newArray() <=> engine->newArray()");
+ equals.insert("engine->newArray(10) <=> engine->newArray(10)");
+ equals.insert("engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"null\")");
+ equals.insert("engine->newQObject(0) <=> engine->nullValue()");
+ equals.insert("engine->newQObject(0) <=> engine->newQObject(0)");
+ equals.insert("engine->newQObject(engine) <=> engine->newQObject(engine)");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -2872,6 +4101,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(true) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(true) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(true) <=> QScriptValue(123.0)");
@@ -2902,6 +4144,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(true) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(true) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(true) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(true) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(false) <=> QScriptValue(true)");
equals.insert("QScriptValue(false) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(false) <=> QScriptValue(uint(124))");
@@ -2938,6 +4191,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(false) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(false) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x43211234)");
@@ -2962,6 +4228,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10001)");
@@ -2977,6 +4251,10 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0) <=> QScriptValue(true)");
equals.insert("QScriptValue(0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0) <=> QScriptValue(uint(124))");
@@ -3013,6 +4291,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0.0) <=> QScriptValue(true)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0.0) <=> QScriptValue(uint(124))");
@@ -3049,6 +4340,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0x10000)");
@@ -3067,6 +4371,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(uint(124))");
@@ -3100,6 +4409,18 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(false)");
@@ -3160,13 +4481,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(-6.37e-8) <=> engine->nullValue()");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newArray()");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0x43211234) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(qInf())");
@@ -3179,6 +4523,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(\"Infinity\")");
@@ -3188,6 +4535,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x43211234)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(true)");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(false)");
@@ -3251,7 +4600,30 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(-qInf()) <=> engine->nullValue()");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newArray()");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newQObject(0)");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -3268,6 +4640,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->newObject()");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
@@ -3287,6 +4667,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(true)");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(false)");
@@ -3363,7 +4751,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(\"-Infinity\") <=> engine->nullValue()");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Function.prototype\")");
equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Object\")");
equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Array\")");
@@ -3444,6 +4861,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(true)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(uint(124))");
@@ -3508,6 +4948,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString()) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString()) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(true)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(uint(124))");
@@ -3565,6 +5028,27 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x10000)");
@@ -3604,6 +5088,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(123.0)");
@@ -3652,6 +5149,24 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(uint(124))");
@@ -3688,6 +5203,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, true) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, true) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, true) <=> QScriptValue(123.0)");
@@ -3718,6 +5246,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, true) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, false) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, false) <=> QScriptValue(uint(124))");
@@ -3754,6 +5293,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, false) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x43211234)");
@@ -3778,6 +5330,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10001)");
@@ -3793,6 +5353,10 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(uint(124))");
@@ -3829,6 +5393,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(uint(124))");
@@ -3865,6 +5442,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x10000)");
@@ -3883,6 +5473,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(uint(124))");
@@ -3916,6 +5511,18 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(false)");
@@ -3976,13 +5583,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, -6.37e-8) <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0x43211234) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(qInf())");
@@ -3995,6 +5625,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(\"Infinity\")");
@@ -4004,6 +5637,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x43211234)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0x10001) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(false)");
@@ -4067,7 +5702,30 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, -qInf()) <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -4084,6 +5742,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->newObject()");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
@@ -4103,6 +5769,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(true)");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(false)");
@@ -4179,7 +5853,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Object\")");
equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Array\")");
@@ -4260,6 +5963,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(uint(124))");
@@ -4324,6 +6050,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(uint(124))");
@@ -4381,6 +6130,27 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10000)");
@@ -4420,6 +6190,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(123.0)");
@@ -4469,6 +6252,25 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(uint(124))");
@@ -4505,6 +6307,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(123.0)");
@@ -4535,6 +6350,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(uint(124))");
@@ -4571,6 +6397,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x43211234)");
@@ -4595,6 +6434,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10001)");
@@ -4610,6 +6457,10 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(uint(124))");
@@ -4646,6 +6497,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(uint(124))");
@@ -4682,6 +6546,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x10000)");
@@ -4700,6 +6577,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(uint(124))");
@@ -4733,6 +6615,18 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(false)");
@@ -4793,13 +6687,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newQObject(0)");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(qInf())");
@@ -4812,6 +6729,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(\"Infinity\")");
@@ -4821,6 +6741,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x43211234)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0x10001) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(false)");
@@ -4884,7 +6806,30 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(engine, -qInf()) <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newQObject(0)");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -4901,6 +6846,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
@@ -4920,6 +6873,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(false)");
@@ -4996,7 +6957,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Object\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Array\")");
@@ -5077,6 +7067,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(uint(124))");
@@ -5141,6 +7154,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(uint(124))");
@@ -5198,6 +7234,27 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10000)");
@@ -5237,6 +7294,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(123.0)");
@@ -5287,6 +7357,25 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(true)");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(int(122))");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(uint(124))");
@@ -5351,6 +7440,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"/foo/\")");
equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"new Object()\")");
equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(\"ciao\")");
equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, \"ciao\")");
@@ -5365,6 +7477,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(true)");
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(int(122))");
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(uint(124))");
@@ -5429,6 +7543,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"/foo/\")");
equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Object()\")");
equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")");
equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Array\")");
equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Number\")");
@@ -5458,6 +7595,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")");
equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Number\")");
equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")");
@@ -5512,6 +7657,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Object()\")");
equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(\"ciao\")");
equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(0, \"ciao\")");
@@ -5526,6 +7682,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 1; })\")");
equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(true)");
equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(int(122))");
equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(uint(124))");
@@ -5590,6 +7748,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"/foo/\")");
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Object()\")");
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"NaN\")");
equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"Infinity\")");
equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"ciao\")");
@@ -5612,6 +7793,982 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"True\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"False\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newQObject(engine)");
equals.insert("engine->nullValue() <=> QScriptValue(true)");
equals.insert("engine->nullValue() <=> QScriptValue(int(122))");
equals.insert("engine->nullValue() <=> QScriptValue(uint(124))");
@@ -5648,6 +8805,329 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->nullValue() <=> QScriptValue(engine, \"Infinity\")");
equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"true\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"122\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"124\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->nullValue() <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newObject() <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newObject() <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newObject() <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newObject() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newObject() <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newObject() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newObject() <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newArray() <=> QScriptValue(true)");
+ equals.insert("engine->newArray() <=> QScriptValue(int(122))");
+ equals.insert("engine->newArray() <=> QScriptValue(uint(124))");
+ equals.insert("engine->newArray() <=> QScriptValue(123.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->newArray() <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newArray() <=> QScriptValue(0x10000)");
+ equals.insert("engine->newArray() <=> QScriptValue(0x10001)");
+ equals.insert("engine->newArray() <=> QScriptValue(qInf())");
+ equals.insert("engine->newArray() <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->newArray() <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newArray() <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, true)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, int(122))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, true)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"True\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"False\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"true\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"122\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newArray() <=> engine->newObject()");
+ equals.insert("engine->newArray() <=> engine->newArray(10)");
+ equals.insert("engine->newArray() <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newArray() <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newArray() <=> engine->newQObject(engine)");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"True\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"False\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newArray(10) <=> engine->newObject()");
+ equals.insert("engine->newArray(10) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newArray(10) <=> engine->newQObject(engine)");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(uint(124))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x10000)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x10001)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(qInf())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(true)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(int(122))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(uint(124))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(123.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x10000)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x10001)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(qInf())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, true)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, int(122))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, true)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"true\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"122\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(true)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(int(122))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(uint(124))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(123.0)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0x10000)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0x10001)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(qInf())");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, true)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, int(122))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, true)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"true\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"122\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newQObject(0) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"True\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"False\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newQObject(engine) <=> engine->newObject()");
+ equals.insert("engine->newQObject(engine) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -5702,6 +9182,21 @@ void tst_QScriptValue::instanceOf_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")");
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")");
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newDate(QDateTime()) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newVariant(QVariant()) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object\")");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -5833,8 +9328,45 @@ void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", "[object Object]");
value.insert("engine->evaluate(\"new Array()\")", "");
value.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", "22");
+ value.insert("engine->evaluate(\"Undefined\")", "ReferenceError: Can't find variable: Undefined");
+ value.insert("engine->evaluate(\"Null\")", "ReferenceError: Can't find variable: Null");
+ value.insert("engine->evaluate(\"True\")", "ReferenceError: Can't find variable: True");
+ value.insert("engine->evaluate(\"False\")", "ReferenceError: Can't find variable: False");
+ value.insert("engine->evaluate(\"undefined\")", "");
+ value.insert("engine->evaluate(\"null\")", "");
+ value.insert("engine->evaluate(\"true\")", "true");
+ value.insert("engine->evaluate(\"false\")", "false");
+ value.insert("engine->evaluate(\"122\")", "122");
+ value.insert("engine->evaluate(\"124\")", "124");
+ value.insert("engine->evaluate(\"0\")", "0");
+ value.insert("engine->evaluate(\"0.0\")", "0");
+ value.insert("engine->evaluate(\"123.0\")", "123");
+ value.insert("engine->evaluate(\"6.37e-8\")", "6.37e-8");
+ value.insert("engine->evaluate(\"-6.37e-8\")", "-6.37e-8");
+ value.insert("engine->evaluate(\"0x43211234\")", "1126240820");
+ value.insert("engine->evaluate(\"0x10000\")", "65536");
+ value.insert("engine->evaluate(\"0x10001\")", "65537");
+ value.insert("engine->evaluate(\"NaN\")", "NaN");
+ value.insert("engine->evaluate(\"Infinity\")", "Infinity");
+ value.insert("engine->evaluate(\"-Infinity\")", "-Infinity");
+ value.insert("engine->evaluate(\"'ciao'\")", "ciao");
+ value.insert("engine->evaluate(\"''\")", "");
+ value.insert("engine->evaluate(\"'0'\")", "0");
+ value.insert("engine->evaluate(\"'123'\")", "123");
+ value.insert("engine->evaluate(\"'12.4'\")", "12.4");
value.insert("engine->nullValue()", "");
value.insert("engine->undefinedValue()", "");
+ value.insert("engine->newObject()", "[object Object]");
+ value.insert("engine->newArray()", "");
+ value.insert("engine->newArray(10)", ",,,,,,,,,");
+ value.insert("engine->newDate(QDateTime())", "Invalid Date");
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", "[object QMetaObject]");
+ value.insert("engine->newVariant(QVariant())", "undefined");
+ value.insert("engine->newVariant(QVariant(123))", "123");
+ value.insert("engine->newVariant(QVariant(false))", "false");
+ value.insert("engine->newQObject(0)", "");
+ value.insert("engine->newQObject(engine)", "QScriptEngine(name = \"\")");
}
newRow(expr) << value.value(expr);
}
@@ -5843,6 +9375,7 @@ void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptV
{
QFETCH(QString, expected);
QCOMPARE(qscriptvalue_cast<QString>(value), expected);
+ QCOMPARE(qscriptvalue_cast<QString>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castQString)
@@ -5961,8 +9494,45 @@ void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", qQNaN());
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", qQNaN());
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", qQNaN());
+ value.insert("engine->evaluate(\"Null\")", qQNaN());
+ value.insert("engine->evaluate(\"True\")", qQNaN());
+ value.insert("engine->evaluate(\"False\")", qQNaN());
+ value.insert("engine->evaluate(\"undefined\")", qQNaN());
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 6.369999999999999e-08);
+ value.insert("engine->evaluate(\"-6.37e-8\")", -6.369999999999999e-08);
+ value.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ value.insert("engine->evaluate(\"0x10000\")", 65536);
+ value.insert("engine->evaluate(\"0x10001\")", 65537);
+ value.insert("engine->evaluate(\"NaN\")", qQNaN());
+ value.insert("engine->evaluate(\"Infinity\")", qInf());
+ value.insert("engine->evaluate(\"-Infinity\")", qInf());
+ value.insert("engine->evaluate(\"'ciao'\")", qQNaN());
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12.4);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", qQNaN());
+ value.insert("engine->newObject()", qQNaN());
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", qQNaN());
+ value.insert("engine->newDate(QDateTime())", qQNaN());
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", qQNaN());
+ value.insert("engine->newVariant(QVariant())", qQNaN());
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", qQNaN());
}
newRow(expr) << value.value(expr);
}
@@ -5972,13 +9542,16 @@ void tst_QScriptValue::qscriptvalue_castqsreal_test(const char*, const QScriptVa
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)
@@ -6097,8 +9670,45 @@ void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", true);
value.insert("engine->evaluate(\"new Array()\")", true);
value.insert("engine->evaluate(\"new Error()\")", true);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true);
+ value.insert("engine->evaluate(\"Undefined\")", true);
+ value.insert("engine->evaluate(\"Null\")", true);
+ value.insert("engine->evaluate(\"True\")", true);
+ value.insert("engine->evaluate(\"False\")", true);
+ value.insert("engine->evaluate(\"undefined\")", false);
+ value.insert("engine->evaluate(\"null\")", false);
+ value.insert("engine->evaluate(\"true\")", true);
+ value.insert("engine->evaluate(\"false\")", false);
+ value.insert("engine->evaluate(\"122\")", true);
+ value.insert("engine->evaluate(\"124\")", true);
+ value.insert("engine->evaluate(\"0\")", false);
+ value.insert("engine->evaluate(\"0.0\")", false);
+ value.insert("engine->evaluate(\"123.0\")", true);
+ value.insert("engine->evaluate(\"6.37e-8\")", true);
+ value.insert("engine->evaluate(\"-6.37e-8\")", true);
+ value.insert("engine->evaluate(\"0x43211234\")", true);
+ value.insert("engine->evaluate(\"0x10000\")", true);
+ value.insert("engine->evaluate(\"0x10001\")", true);
+ value.insert("engine->evaluate(\"NaN\")", false);
+ value.insert("engine->evaluate(\"Infinity\")", true);
+ value.insert("engine->evaluate(\"-Infinity\")", true);
+ value.insert("engine->evaluate(\"'ciao'\")", true);
+ value.insert("engine->evaluate(\"''\")", false);
+ value.insert("engine->evaluate(\"'0'\")", true);
+ value.insert("engine->evaluate(\"'123'\")", true);
+ value.insert("engine->evaluate(\"'12.4'\")", true);
value.insert("engine->nullValue()", false);
value.insert("engine->undefinedValue()", false);
+ value.insert("engine->newObject()", true);
+ value.insert("engine->newArray()", true);
+ value.insert("engine->newArray(10)", true);
+ value.insert("engine->newDate(QDateTime())", true);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true);
+ value.insert("engine->newVariant(QVariant())", true);
+ value.insert("engine->newVariant(QVariant(123))", true);
+ value.insert("engine->newVariant(QVariant(false))", true);
+ value.insert("engine->newQObject(0)", false);
+ value.insert("engine->newQObject(engine)", true);
}
newRow(expr) << value.value(expr);
}
@@ -6107,6 +9717,7 @@ void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValu
{
QFETCH(bool, expected);
QCOMPARE(qscriptvalue_cast<bool>(value), expected);
+ QCOMPARE(qscriptvalue_cast<bool>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castbool)
@@ -6225,8 +9836,45 @@ void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", 0);
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", 0);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", 0);
+ value.insert("engine->evaluate(\"Null\")", 0);
+ value.insert("engine->evaluate(\"True\")", 0);
+ value.insert("engine->evaluate(\"False\")", 0);
+ value.insert("engine->evaluate(\"undefined\")", 0);
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ value.insert("engine->evaluate(\"0x10000\")", 65536);
+ value.insert("engine->evaluate(\"0x10001\")", 65537);
+ value.insert("engine->evaluate(\"NaN\")", 0);
+ value.insert("engine->evaluate(\"Infinity\")", 0);
+ value.insert("engine->evaluate(\"-Infinity\")", 0);
+ value.insert("engine->evaluate(\"'ciao'\")", 0);
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", 0);
+ value.insert("engine->newObject()", 0);
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", 0);
+ value.insert("engine->newDate(QDateTime())", 0);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ value.insert("engine->newVariant(QVariant())", 0);
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << value.value(expr);
}
@@ -6235,6 +9883,7 @@ void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptVa
{
QFETCH(qint32, expected);
QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
+ QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castqint32)
@@ -6353,8 +10002,45 @@ void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", 0);
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", 0);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", 0);
+ value.insert("engine->evaluate(\"Null\")", 0);
+ value.insert("engine->evaluate(\"True\")", 0);
+ value.insert("engine->evaluate(\"False\")", 0);
+ value.insert("engine->evaluate(\"undefined\")", 0);
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ value.insert("engine->evaluate(\"0x10000\")", 65536);
+ value.insert("engine->evaluate(\"0x10001\")", 65537);
+ value.insert("engine->evaluate(\"NaN\")", 0);
+ value.insert("engine->evaluate(\"Infinity\")", 0);
+ value.insert("engine->evaluate(\"-Infinity\")", 0);
+ value.insert("engine->evaluate(\"'ciao'\")", 0);
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", 0);
+ value.insert("engine->newObject()", 0);
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", 0);
+ value.insert("engine->newDate(QDateTime())", 0);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ value.insert("engine->newVariant(QVariant())", 0);
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << value.value(expr);
}
@@ -6363,6 +10049,7 @@ void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptV
{
QFETCH(quint32, expected);
QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
+ QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castquint32)
@@ -6481,8 +10168,45 @@ void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", 0);
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", 0);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", 0);
+ value.insert("engine->evaluate(\"Null\")", 0);
+ value.insert("engine->evaluate(\"True\")", 0);
+ value.insert("engine->evaluate(\"False\")", 0);
+ value.insert("engine->evaluate(\"undefined\")", 0);
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"0x43211234\")", 4660);
+ value.insert("engine->evaluate(\"0x10000\")", 0);
+ value.insert("engine->evaluate(\"0x10001\")", 1);
+ value.insert("engine->evaluate(\"NaN\")", 0);
+ value.insert("engine->evaluate(\"Infinity\")", 0);
+ value.insert("engine->evaluate(\"-Infinity\")", 0);
+ value.insert("engine->evaluate(\"'ciao'\")", 0);
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", 0);
+ value.insert("engine->newObject()", 0);
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", 0);
+ value.insert("engine->newDate(QDateTime())", 0);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ value.insert("engine->newVariant(QVariant())", 0);
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << value.value(expr);
}
@@ -6491,6 +10215,7 @@ void tst_QScriptValue::qscriptvalue_castquint16_test(const char*, const QScriptV
{
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/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp b/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
index 68daf1a..e154528 100644
--- a/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
+++ b/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
@@ -934,8 +934,8 @@ void tst_QSequentialAnimationGroup::startDelay()
QTest::qWait(500);
+ QTRY_COMPARE(group.state(), QAnimationGroup::Stopped);
QVERIFY(group.currentLoopTime() == 375);
- QCOMPARE(group.state(), QAnimationGroup::Stopped);
}
void tst_QSequentialAnimationGroup::clearGroup()
@@ -1029,7 +1029,7 @@ void tst_QSequentialAnimationGroup::groupWithZeroDurationAnimations()
QTest::qWait(500);
- QCOMPARE(o.property("myProperty").toInt(), 44);
+ QTRY_COMPARE(o.property("myProperty").toInt(), 44);
QCOMPARE(o2.property("myProperty").toInt(), 42);
QCOMPARE(o2.property("myOtherProperty").toInt(), 31);
QCOMPARE(a1->state(), QAnimationGroup::Stopped);
@@ -1171,7 +1171,7 @@ void tst_QSequentialAnimationGroup::deleteChildrenWithRunningGroup()
QCOMPARE(anim1->state(), QAnimationGroup::Running);
QTest::qWait(100);
- QVERIFY(group.currentLoopTime() > 0);
+ QTRY_VERIFY(group.currentLoopTime() > 0);
delete anim1;
QCOMPARE(group.animationCount(), 0);
@@ -1430,7 +1430,7 @@ void tst_QSequentialAnimationGroup::finishWithUncontrolledAnimation()
QCOMPARE(notTimeDriven.currentLoopTime(), 0);
QTest::qWait(300); //wait for the end of notTimeDriven
- QCOMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ QTRY_COMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
const int actualDuration = notTimeDriven.currentLoopTime();
QCOMPARE(group.state(), QAnimationGroup::Stopped);
QCOMPARE(group.currentLoopTime(), actualDuration);
@@ -1459,14 +1459,14 @@ void tst_QSequentialAnimationGroup::finishWithUncontrolledAnimation()
QCOMPARE(animStateChangedSpy.count(), 0);
QTest::qWait(300); //wait for the end of notTimeDriven
- QCOMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ QTRY_COMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
QCOMPARE(group.state(), QAnimationGroup::Running);
QCOMPARE(anim.state(), QAnimationGroup::Running);
QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
QCOMPARE(animStateChangedSpy.count(), 1);
QTest::qWait(300); //wait for the end of anim
- QCOMPARE(anim.state(), QAnimationGroup::Stopped);
+ QTRY_COMPARE(anim.state(), QAnimationGroup::Stopped);
QCOMPARE(anim.currentLoopTime(), anim.duration());
//we should simply be at the end
@@ -1621,7 +1621,7 @@ void tst_QSequentialAnimationGroup::clear()
group.start();
QTest::qWait(anim1->duration() + 100);
- QCOMPARE(group.animationCount(), 0);
+ QTRY_COMPARE(group.animationCount(), 0);
QCOMPARE(group.state(), QAbstractAnimation::Stopped);
QCOMPARE(group.currentLoopTime(), 0);
@@ -1629,8 +1629,8 @@ void tst_QSequentialAnimationGroup::clear()
group.connect(anim1, SIGNAL(finished()), SLOT(refill()));
group.start();
QTest::qWait(anim1->duration() + 100);
+ QTRY_COMPARE(group.state(), QAbstractAnimation::Running);
QVERIFY(anim1 == 0); //anim1 should have been deleted
- QCOMPARE(group.state(), QAbstractAnimation::Running);
}
void tst_QSequentialAnimationGroup::pauseResume()
@@ -1645,7 +1645,7 @@ void tst_QSequentialAnimationGroup::pauseResume()
QCOMPARE(group.duration(), 250);
group.start();
QTest::qWait(100);
- QCOMPARE(group.state(), QAnimationGroup::Running);
+ QTRY_COMPARE(group.state(), QAnimationGroup::Running);
QCOMPARE(anim->state(), QAnimationGroup::Running);
QCOMPARE(spy.count(), 1);
spy.clear();
diff --git a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index 5b2b0cf..56eaf25 100644
--- a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -137,6 +137,7 @@ private slots:
void task255652_removeRowsRecursive();
void taskQTBUG_6205_doubleProxySelectionSetSourceModel();
void taskQTBUG_7537_appearsAndSort();
+ void taskQTBUG_7716_unnecessaryDynamicSorting();
protected:
void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
@@ -918,15 +919,16 @@ void tst_QSortFilterProxyModel::removeRows()
QStandardItemModel model;
QSortFilterProxyModel proxy;
proxy.setSourceModel(&model);
- if (sortOrder != -1)
- proxy.sort(0, static_cast<Qt::SortOrder>(sortOrder));
- if (!filter.isEmpty())
- proxy.setFilterRegExp(QRegExp(filter));
// prepare model
foreach (QString s, initial)
model.appendRow(new QStandardItem(s));
+ if (sortOrder != -1)
+ proxy.sort(0, static_cast<Qt::SortOrder>(sortOrder));
+ if (!filter.isEmpty())
+ proxy.setFilterRegExp(QRegExp(filter));
+
// remove the rows
QCOMPARE(proxy.removeRows(position, count, QModelIndex()), success);
QCOMPARE(model.rowCount(QModelIndex()), expectedSource.count());
@@ -2419,6 +2421,7 @@ void tst_QSortFilterProxyModel::sortColumnTracking2()
{
QStandardItemModel model;
QSortFilterProxyModel proxyModel;
+ proxyModel.setDynamicSortFilter(true);
proxyModel.setSourceModel(&model);
proxyModel.sort(0);
@@ -2921,5 +2924,32 @@ void tst_QSortFilterProxyModel::taskQTBUG_7537_appearsAndSort()
QCOMPARE(spyChanged2.count(), 1);
}
+void tst_QSortFilterProxyModel::taskQTBUG_7716_unnecessaryDynamicSorting()
+{
+ QStringListModel model;
+ const QStringList initial = QString("bravo charlie delta echo").split(" ");
+ model.setStringList(initial);
+ QSortFilterProxyModel proxy;
+ proxy.setDynamicSortFilter(false);
+ proxy.setSourceModel(&model);
+ proxy.sort(Qt::AscendingOrder);
+
+ //append two rows
+ int maxrows = proxy.rowCount(QModelIndex());
+ model.insertRows(maxrows, 2);
+ model.setData(model.index(maxrows, 0), QString("alpha"));
+ model.setData(model.index(maxrows + 1, 0), QString("fondue"));
+
+ //append new items to the initial string list and compare with model
+ QStringList expected = initial;
+ expected << QString("alpha") << QString("fondue");
+
+ //if bug 7716 is present, new rows were prepended, when they should have been appended
+ for (int row = 0; row < proxy.rowCount(QModelIndex()); ++row) {
+ QModelIndex index = proxy.index(row, 0, QModelIndex());
+ QCOMPARE(proxy.data(index, Qt::DisplayRole).toString(), expected.at(row));
+ }
+}
+
QTEST_MAIN(tst_QSortFilterProxyModel)
#include "tst_qsortfilterproxymodel.moc"
diff --git a/tests/auto/qstatictext/qstatictext.pro b/tests/auto/qstatictext/qstatictext.pro
index a759a90..0f1ca68 100644
--- a/tests/auto/qstatictext/qstatictext.pro
+++ b/tests/auto/qstatictext/qstatictext.pro
@@ -1,4 +1,4 @@
load(qttest_p4)
-QT = core gui opengl
+QT = core gui
SOURCES += tst_qstatictext.cpp
diff --git a/tests/auto/qstatictext/tst_qstatictext.cpp b/tests/auto/qstatictext/tst_qstatictext.cpp
index 68f05c1..16832ad 100644
--- a/tests/auto/qstatictext/tst_qstatictext.cpp
+++ b/tests/auto/qstatictext/tst_qstatictext.cpp
@@ -45,13 +45,20 @@
#include <QtGui/QImage>
#include <qstatictext.h>
+#include <qpaintengine.h>
+
#include <private/qstatictext_p.h>
+#include <private/qapplication_p.h>
// #define DEBUG_SAVE_IMAGE
class tst_QStaticText: public QObject
{
Q_OBJECT
+
+private:
+ bool supportsTransformations() const;
+
private slots:
void init();
void cleanup();
@@ -177,6 +184,8 @@ void tst_QStaticText::prepareToCorrectData()
p.drawStaticText(QPointF(11, 12), text);
}
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
QCOMPARE(imageDrawStaticText, imageDrawText);
}
@@ -288,6 +297,25 @@ void tst_QStaticText::translatedPainter()
QCOMPARE(imageDrawStaticText, imageDrawText);
}
+bool tst_QStaticText::supportsTransformations() const
+{
+ QPixmap pm(10, 10);
+ QPainter p(&pm);
+ QPaintEngine *engine = p.paintEngine();
+
+ QPaintEngine::Type type = engine->type();
+
+ if (type == QPaintEngine::OpenGL2
+ || type == QPaintEngine::OpenGL
+#if !defined Q_WS_WIN
+ || type == QPaintEngine::Raster
+#endif
+ )
+ return false;
+
+ return true;
+}
+
void tst_QStaticText::rotatedPainter()
{
QPixmap imageDrawText(1000, 1000);
@@ -314,6 +342,8 @@ void tst_QStaticText::rotatedPainter()
imageDrawStaticText.save("rotatedPainter_imageDrawStaticText.png");
#endif
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
QCOMPARE(imageDrawStaticText, imageDrawText);
}
@@ -340,6 +370,8 @@ void tst_QStaticText::scaledPainter()
p.drawStaticText(QPointF(11, 12), text);
}
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
QCOMPARE(imageDrawStaticText, imageDrawText);
}
@@ -370,7 +402,6 @@ void tst_QStaticText::projectedPainter()
}
QCOMPARE(imageDrawStaticText, imageDrawText);
-
}
void tst_QStaticText::rotatedScaledAndTranslatedPainter()
@@ -405,6 +436,8 @@ void tst_QStaticText::rotatedScaledAndTranslatedPainter()
imageDrawStaticText.save("rotatedScaledAndPainter_imageDrawStaticText.png");
#endif
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
QCOMPARE(imageDrawStaticText, imageDrawText);
}
@@ -444,6 +477,8 @@ void tst_QStaticText::transformationChanged()
imageDrawStaticText.save("transformationChanged_imageDrawStaticText.png");
#endif
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
QCOMPARE(imageDrawStaticText, imageDrawText);
}
diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp
index 9c9524a..dc37c42 100644
--- a/tests/auto/qstring/tst_qstring.cpp
+++ b/tests/auto/qstring/tst_qstring.cpp
@@ -165,6 +165,10 @@ private slots:
void fromLocal8Bit();
void local8Bit_data();
void local8Bit();
+ void fromLatin1Roundtrip_data();
+ void fromLatin1Roundtrip();
+ void toLatin1Roundtrip_data();
+ void toLatin1Roundtrip();
void fromLatin1();
void fromAscii();
void arg();
@@ -3224,6 +3228,109 @@ void tst_QString::local8Bit()
QCOMPARE(local8Bit.toLocal8Bit(), QByteArray(result));
}
+void tst_QString::fromLatin1Roundtrip_data()
+{
+ QTest::addColumn<QByteArray>("latin1");
+ QTest::addColumn<QString>("unicode");
+
+ QTest::newRow("null") << QByteArray() << QString();
+ QTest::newRow("empty") << QByteArray("") << "";
+
+ static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
+ QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5);
+ QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9);
+
+ static const ushort unicode3[] = { 'a', 0, 'z' };
+ QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3);
+
+ static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
+ QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3);
+}
+
+void tst_QString::fromLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicode);
+
+ // QtTest safety check:
+ Q_ASSERT(latin1.isNull() == unicode.isNull());
+ Q_ASSERT(latin1.isEmpty() == unicode.isEmpty());
+ Q_ASSERT(latin1.length() == unicode.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicode += unicode;
+ }
+
+ // fromLatin1
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicode.length());
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicode);
+
+ // and back:
+ QCOMPARE(unicode.toLatin1().length(), latin1.length());
+ QCOMPARE(unicode.toLatin1(), latin1);
+}
+
+void tst_QString::toLatin1Roundtrip_data()
+{
+ QTest::addColumn<QByteArray>("latin1");
+ QTest::addColumn<QString>("unicodesrc");
+ QTest::addColumn<QString>("unicodedst");
+
+ QTest::newRow("null") << QByteArray() << QString() << QString();
+ QTest::newRow("empty") << QByteArray("") << "" << "";
+
+ static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
+ QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5) << QString::fromUtf16(unicode1, 5);
+ QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9) << QString::fromUtf16(unicode1, 9);
+
+ static const ushort unicode3[] = { 'a', 0, 'z' };
+ QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3) << QString::fromUtf16(unicode3, 3);
+
+ static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
+ QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3) << QString::fromUtf16(unicode4, 3);
+
+ static const ushort unicodeq[] = { '?', '?', '?', '?', '?' };
+ const QString questionmarks = QString::fromUtf16(unicodeq, 5);
+
+ static const ushort unicode5[] = { 0x100, 0x101, 0x17f, 0x7f00, 0x7f7f };
+ QTest::newRow("non-latin1a") << QByteArray("?????") << QString::fromUtf16(unicode5, 5) << questionmarks;
+
+ static const ushort unicode6[] = { 0x180, 0x1ff, 0x8001, 0x8080, 0xfffc };
+ QTest::newRow("non-latin1b") << QByteArray("?????") << QString::fromUtf16(unicode6, 5) << questionmarks;
+}
+
+void tst_QString::toLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicodesrc);
+ QFETCH(QString, unicodedst);
+
+ // QtTest safety check:
+ Q_ASSERT(latin1.isNull() == unicodesrc.isNull());
+ Q_ASSERT(latin1.isEmpty() == unicodesrc.isEmpty());
+ Q_ASSERT(latin1.length() == unicodesrc.length());
+ Q_ASSERT(latin1.isNull() == unicodedst.isNull());
+ Q_ASSERT(latin1.isEmpty() == unicodedst.isEmpty());
+ Q_ASSERT(latin1.length() == unicodedst.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicodesrc += unicodesrc;
+ unicodedst += unicodedst;
+ }
+
+ // toLatin1
+ QCOMPARE(unicodesrc.toLatin1().length(), latin1.length());
+ QCOMPARE(unicodesrc.toLatin1(), latin1);
+
+ // and back:
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicodedst.length());
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicodedst);
+}
+
void tst_QString::fromLatin1()
{
QString a;
diff --git a/tests/auto/qstringbuilder1/stringbuilder.cpp b/tests/auto/qstringbuilder1/stringbuilder.cpp
index 8e95818..e9ae7a6 100644
--- a/tests/auto/qstringbuilder1/stringbuilder.cpp
+++ b/tests/auto/qstringbuilder1/stringbuilder.cpp
@@ -44,6 +44,14 @@
// "some literal", but replacing all vocals by their umlauted UTF-8 string :)
#define UTF8_LITERAL "s\xc3\xb6m\xc3\xab l\xc3\xaft\xc3\xabr\xc3\xa4l"
+
+//fix for gcc4.0: if the operator+ does not exist without QT_USE_FAST_OPERATOR_PLUS
+#ifndef QT_USE_FAST_CONCATENATION
+#define Q %
+#else
+#define Q P
+#endif
+
void runScenario()
{
// set codec for C strings to 0, enforcing Latin1
@@ -59,13 +67,13 @@ void runScenario()
QString r;
QByteArray ba(LITERAL);
- r = l1literal P l1literal;
+ r = l1literal Q l1literal;
QCOMPARE(r, r2);
r = string P string;
QCOMPARE(r, r2);
- r = stringref P stringref;
+ r = stringref Q stringref;
QCOMPARE(r, QString(stringref.toString() + stringref.toString()));
- r = string P l1literal;
+ r = string Q l1literal;
QCOMPARE(r, r2);
r = string P l1string;
QCOMPARE(r, r2);
diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp
index fd4815e..e39cf6c 100644
--- a/tests/auto/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/qtreeview/tst_qtreeview.cpp
@@ -3083,6 +3083,20 @@ void tst_QTreeView::styleOptionViewItem()
QApplication::processEvents();
QTRY_VERIFY(delegate.count >= 3);
QApplication::processEvents();
+
+ item00->setText("OnlyOne");
+ item0->insertRow(2, new QStandardItem("OnlyOne Last"));
+ view.collapse(item0->index());
+ item0->removeRow(0);
+ delegate.count = 0;
+ QTRY_VERIFY(delegate.count >= 2);
+ QApplication::processEvents();
+
+ item0->removeRow(1);
+ item0->setText("OnlyOne");
+ delegate.count = 0;
+ QTRY_VERIFY(delegate.count >= 2);
+ QApplication::processEvents();
}
}
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp
index 72ce393..83109b5 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/qurl/tst_qurl.cpp
@@ -2513,13 +2513,9 @@ void tst_QUrl::schemeValidator()
void tst_QUrl::invalidSchemeValidator()
{
- // enable that test when QUrl is fixed
- return;
-
// test that if scheme does not start with an ALPHA, QUrl::isValid() returns false
{
QUrl url("1http://qt.nokia.com", QUrl::StrictMode);
- qDebug() << url;
QCOMPARE(url.isValid(), false);
}
{
diff --git a/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp b/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp
index b325250..1238804 100644
--- a/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp
+++ b/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp
@@ -156,6 +156,7 @@ private slots:
}
void sizeSpeedWithoutFilterLowLevel() {
+ QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
#ifdef Q_OS_WIN
const wchar_t *dirpath = (wchar_t*)testdir.absolutePath().utf16();
wchar_t appendedPath[MAX_PATH];
@@ -173,7 +174,6 @@ private slots:
}
FindClose(hSearch);
#else
- QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
DIR *dir = opendir(qPrintable(testdir.absolutePath()));
QVERIFY(dir);
diff --git a/tests/benchmarks/corelib/io/qdir/tree/4.6.0-list.txt b/tests/benchmarks/corelib/io/qdir/tree/4.6.0-list.txt
new file mode 100644
index 0000000..b915320
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qdir/tree/4.6.0-list.txt
@@ -0,0 +1,11963 @@
+0 src/
+0 3rdparty/
+0 ce-compat/
+0 ce_time.c
+ ce_time.h
+2 clucene/
+0 APACHE.license
+ AUTHORS
+ ChangeLog
+ COPYING
+ LGPL.license
+ README
+ src/
+0 CLucene/
+0 analysis/
+0 AnalysisHeader.cpp
+ AnalysisHeader.h
+ Analyzers.cpp
+ Analyzers.h
+ standard/
+0 StandardAnalyzer.cpp
+ StandardAnalyzer.h
+ StandardFilter.cpp
+ StandardFilter.h
+ StandardTokenizerConstants.h
+ StandardTokenizer.cpp
+ StandardTokenizer.h
+3 CLBackwards.h
+ CLConfig.h
+ CLMonolithic.cpp
+ config/
+0 CompilerAcc.h
+ CompilerBcb.h
+ CompilerGcc.h
+ compiler.h
+ CompilerMsvc.h
+ define_std.h
+ gunichartables.cpp
+ gunichartables.h
+ PlatformMac.h
+ PlatformUnix.h
+ PlatformWin32.h
+ repl_lltot.cpp
+ repl_tchar.h
+ repl_tcscasecmp.cpp
+ repl_tcslwr.cpp
+ repl_tcstod.cpp
+ repl_tcstoll.cpp
+ repl_tprintf.cpp
+ repl_wchar.h
+ threadCSection.h
+ threadPthread.h
+ threads.cpp
+ utf8.cpp
+2 debug/
+0 condition.cpp
+ condition.h
+ error.cpp
+ error.h
+ lucenebase.h
+ mem.h
+ memtracking.cpp
+2 document/
+0 DateField.cpp
+ DateField.h
+ Document.cpp
+ Document.h
+ Field.cpp
+ Field.h
+3 CLucene.h
+ CLucene/index/
+0 CompoundFile.cpp
+ CompoundFile.h
+ DocumentWriter.cpp
+ DocumentWriter.h
+ FieldInfo.h
+ FieldInfos.cpp
+ FieldInfos.h
+ FieldsReader.cpp
+ FieldsReader.h
+ FieldsWriter.cpp
+ FieldsWriter.h
+ IndexModifier.cpp
+ IndexModifier.h
+ IndexReader.cpp
+ IndexReader.h
+ IndexWriter.cpp
+ IndexWriter.h
+ MultiReader.cpp
+ MultiReader.h
+ SegmentHeader.h
+ SegmentInfos.cpp
+ SegmentInfos.h
+ SegmentMergeInfo.cpp
+ SegmentMergeInfo.h
+ SegmentMergeQueue.cpp
+ SegmentMergeQueue.h
+ SegmentMerger.cpp
+ SegmentMerger.h
+ SegmentReader.cpp
+ SegmentTermDocs.cpp
+ SegmentTermEnum.cpp
+ SegmentTermEnum.h
+ SegmentTermPositions.cpp
+ SegmentTermVector.cpp
+ Term.cpp
+ Term.h
+ TermInfo.cpp
+ TermInfo.h
+ TermInfosReader.cpp
+ TermInfosReader.h
+ TermInfosWriter.cpp
+ TermInfosWriter.h
+ Terms.h
+ TermVector.h
+ TermVectorReader.cpp
+ TermVectorWriter.cpp
+2 CLucene/LuceneThreads.h
+ CLucene/queryParser/
+0 Lexer.cpp
+ Lexer.h
+ MultiFieldQueryParser.cpp
+ MultiFieldQueryParser.h
+ QueryParserBase.cpp
+ QueryParserBase.h
+ QueryParser.cpp
+ QueryParser.h
+ QueryToken.cpp
+ QueryToken.h
+ TokenList.cpp
+ TokenList.h
+2 CLucene/search/
+0 BooleanClause.h
+ BooleanQuery.cpp
+ BooleanQuery.h
+ BooleanScorer.cpp
+ BooleanScorer.h
+ CachingWrapperFilter.cpp
+ CachingWrapperFilter.h
+ ChainedFilter.cpp
+ ChainedFilter.h
+ Compare.h
+ ConjunctionScorer.cpp
+ ConjunctionScorer.h
+ DateFilter.cpp
+ DateFilter.h
+ ExactPhraseScorer.cpp
+ ExactPhraseScorer.h
+ Explanation.cpp
+ Explanation.h
+ FieldCache.cpp
+ FieldCache.h
+ FieldCacheImpl.cpp
+ FieldCacheImpl.h
+ FieldDoc.h
+ FieldDocSortedHitQueue.cpp
+ FieldDocSortedHitQueue.h
+ FieldSortedHitQueue.cpp
+ FieldSortedHitQueue.h
+ FilteredTermEnum.cpp
+ FilteredTermEnum.h
+ Filter.h
+ FuzzyQuery.cpp
+ FuzzyQuery.h
+ HitQueue.cpp
+ HitQueue.h
+ Hits.cpp
+ IndexSearcher.cpp
+ IndexSearcher.h
+ MultiSearcher.cpp
+ MultiSearcher.h
+ MultiTermQuery.cpp
+ MultiTermQuery.h
+ PhrasePositions.cpp
+ PhrasePositions.h
+ PhraseQuery.cpp
+ PhraseQuery.h
+ PhraseQueue.h
+ PhraseScorer.cpp
+ PhraseScorer.h
+ PrefixQuery.cpp
+ PrefixQuery.h
+ QueryFilter.cpp
+ QueryFilter.h
+ RangeFilter.cpp
+ RangeFilter.h
+ RangeQuery.cpp
+ RangeQuery.h
+ Scorer.h
+ SearchHeader.cpp
+ SearchHeader.h
+ Similarity.cpp
+ Similarity.h
+ SloppyPhraseScorer.cpp
+ SloppyPhraseScorer.h
+ Sort.cpp
+ Sort.h
+ TermQuery.cpp
+ TermQuery.h
+ TermScorer.cpp
+ TermScorer.h
+ WildcardQuery.cpp
+ WildcardQuery.h
+ WildcardTermEnum.cpp
+ WildcardTermEnum.h
+2 CLucene/StdHeader.cpp
+ CLucene/StdHeader.h
+ CLucene/store/
+0 Directory.h
+ FSDirectory.cpp
+ FSDirectory.h
+ IndexInput.cpp
+ IndexInput.h
+ IndexOutput.cpp
+ IndexOutput.h
+ InputStream.h
+ Lock.cpp
+ Lock.h
+ MMapInput.cpp
+ OutputStream.h
+ RAMDirectory.cpp
+ RAMDirectory.h
+ TransactionalRAMDirectory.cpp
+ TransactionalRAMDirectory.h
+2 CLucene/util/
+0 Arrays.h
+ BitSet.cpp
+ BitSet.h
+ bufferedstream.h
+ dirent.cpp
+ dirent.h
+ Equators.cpp
+ Equators.h
+ FastCharStream.cpp
+ FastCharStream.h
+ fileinputstream.cpp
+ fileinputstream.h
+ inputstreambuffer.h
+ jstreamsconfig.h
+ Misc.cpp
+ Misc.h
+ PriorityQueue.h
+ Reader.cpp
+ Reader.h
+ streambase.h
+ StringBuffer.cpp
+ StringBuffer.h
+ StringIntern.cpp
+ StringIntern.h
+ stringreader.h
+ subinputstream.h
+ ThreadLocal.cpp
+ ThreadLocal.h
+ VoidList.h
+ VoidMap.h
+4 des/
+0 des.cpp
+2 easing/
+0 easing.cpp
+ legal.qdoc
+2 fonts/
+0 5x7.bdf
+ 6x13.bdf
+ COPYING.Cursor
+ COPYING.Helvetica
+ COPYING.Utopia
+ COPYRIGHT.BH
+ COPYRIGHT.Charter
+ COPYRIGHT.Courier
+ COPYRIGHT.DejaVu
+ COPYRIGHT.IBM
+ COPYRIGHT.Unifont
+ COPYRIGHT.Vera
+ helvB08.bdf
+ helvB10.bdf
+ helvB12.bdf
+ helvB14.bdf
+ helvB18.bdf
+ helvB24.bdf
+ helvBO08.bdf
+ helvBO10.bdf
+ helvBO12.bdf
+ helvBO14.bdf
+ helvBO18.bdf
+ helvBO24.bdf
+ helvO08.bdf
+ helvO10.bdf
+ helvO12.bdf
+ helvO14.bdf
+ helvO18.bdf
+ helvO24.bdf
+ helvR08.bdf
+ helvR10.bdf
+ helvR12.bdf
+ helvR14.bdf
+ helvR18.bdf
+ helvR24.bdf
+ micro.bdf
+ README.DejaVu
+ unifont.bdf
+2 freetype/
+0 autogen.sh
+ builds/
+0 amiga/
+0 include/
+0 freetype/
+0 config/
+0 ftconfig.h
+ ftmodule.h
+4 makefile
+0 .os4
+2 README
+ smakefile
+ src/
+0 base/
+0 ftdebug.c
+ ftsystem.c
+4 ansi/
+0 ansi-def.mk
+ ansi.mk
+2 atari/
+0 ATARI.H
+ FNames.SIC
+ FREETYPE.PRJ
+ README.TXT
+2 beos/
+0 beos-def.mk
+ beos.mk
+ detect.mk
+2 compiler/
+0 ansi-cc.mk
+ bcc-dev.mk
+ bcc.mk
+ emx.mk
+ gcc-dev.mk
+ gcc.mk
+ intelc.mk
+ unix-lcc.mk
+ visualage.mk
+ visualc.mk
+ watcom.mk
+ win-lcc.mk
+2 detect.mk
+ dos/
+0 detect.mk
+ dos-def.mk
+ dos-emx.mk
+ dos-gcc.mk
+ dos-wat.mk
+2 exports.mk
+ freetype.mk
+ link_dos.mk
+ link_std.mk
+ mac/
+0 ascii2mpw.py
+ FreeType.m68k_cfm.make.txt
+ FreeType.m68k_far.make.txt
+ FreeType.ppc_carbon.make.txt
+ FreeType.ppc_classic.make.txt
+ ftlib.prj.xml
+ ftmac.c
+ README
+2 modules.mk
+ newline
+ os2/
+0 detect.mk
+ os2-def.mk
+ os2-dev.mk
+ os2-gcc.mk
+2 symbian/
+0 bld.inf
+ freetype.mmp
+2 toplevel.mk
+ unix/
+0 aclocal.m4
+ config.guess
+ config.sub
+ configure
+0 .ac
+ .raw
+2 detect.mk
+ freetype2.in
+ freetype2.m4
+ freetype-config.in
+ ft2unix.h
+ ftconfig.h
+ ftconfig.in
+ ft-munmap.m4
+ ftsystem.c
+ install.mk
+ install-sh
+ ltmain.sh
+ mkinstalldirs
+ unix-cc.in
+ unixddef.mk
+ unix-def.in
+ unix-dev.mk
+ unix-lcc.mk
+ unix.mk
+2 vms/
+0 ftconfig.h
+ ftsystem.c
+2 win32/
+0 detect.mk
+ ftdebug.c
+ vc2005/
+0 freetype.sln
+ freetype.vcproj
+ index.html
+2 vc2008/
+0 freetype.sln
+ freetype.vcproj
+ index.html
+2 visualc/
+0 freetype.dsp
+ freetype.dsw
+ index.html
+2 w32-bccd.mk
+ w32-bcc.mk
+ w32-dev.mk
+ w32-gcc.mk
+ w32-icc.mk
+ w32-intl.mk
+ w32-lcc.mk
+ w32-mingw32.mk
+ w32-vcc.mk
+ w32-wat.mk
+ win32-def.mk
+2 wince/
+0 ftdebug.c
+ vc2005-ce/
+0 freetype.sln
+ freetype.vcproj
+ index.html
+2 vc2008-ce/
+0 freetype.sln
+ freetype.vcproj
+ index.html
+4 ChangeLog
+0 .20
+ .21
+ .22
+2 configure
+ devel/
+0 ft2build.h
+ ftoption.h
+2 docs/
+0 CHANGES
+ CUSTOMIZE
+ DEBUG
+ formats.txt
+ FTL.TXT
+ GPL.TXT
+ INSTALL
+0 .ANY
+ .CROSS
+ .GNU
+ .MAC
+ .UNIX
+ .VMS
+2 LICENSE.TXT
+ MAKEPP
+ PATENTS
+ PROBLEMS
+ raster.txt
+ reference/
+0 ft2-base_interface.html
+ ft2-basic_types.html
+ ft2-bdf_fonts.html
+ ft2-bitmap_handling.html
+ ft2-cache_subsystem.html
+ ft2-cid_fonts.html
+ ft2-computations.html
+ ft2-font_formats.html
+ ft2-gasp_table.html
+ ft2-glyph_management.html
+ ft2-glyph_stroker.html
+ ft2-glyph_variants.html
+ ft2-gx_validation.html
+ ft2-gzip.html
+ ft2-header_file_macros.html
+ ft2-incremental.html
+ ft2-index.html
+ ft2-lcd_filtering.html
+ ft2-list_processing.html
+ ft2-lzw.html
+ ft2-mac_specific.html
+ ft2-module_management.html
+ ft2-multiple_masters.html
+ ft2-ot_validation.html
+ ft2-outline_processing.html
+ ft2-pfr_fonts.html
+ ft2-quick_advance.html
+ ft2-raster.html
+ ft2-sfnt_names.html
+ ft2-sizes_management.html
+ ft2-system_interface.html
+ ft2-toc.html
+ ft2-truetype_engine.html
+ ft2-truetype_tables.html
+ ft2-type1_tables.html
+ ft2-user_allocation.html
+ ft2-version.html
+ ft2-winfnt_fonts.html
+ README
+2 release
+ TODO
+ TRUETYPE
+ UPGRADE.UNIX
+ VERSION.DLL
+2 include/
+0 freetype/
+0 config/
+0 ftconfig.h
+ ftheader.h
+ ftmodule.h
+ ftoption.h
+ ftstdlib.h
+2 freetype.h
+ ftadvanc.h
+ ftbbox.h
+ ftbdf.h
+ ftbitmap.h
+ ftcache.h
+ ftchapters.h
+ ftcid.h
+ fterrdef.h
+ fterrors.h
+ ftgasp.h
+ ftglyph.h
+ ftgxval.h
+ ftgzip.h
+ ftimage.h
+ ftincrem.h
+ ftlcdfil.h
+ ftlist.h
+ ftlzw.h
+ ftmac.h
+ ftmm.h
+ ftmodapi.h
+ ftmoderr.h
+ ftotval.h
+ ftoutln.h
+ ftpfr.h
+ ftrender.h
+ ftsizes.h
+ ftsnames.h
+ ftstroke.h
+ ftsynth.h
+ ftsystem.h
+ fttrigon.h
+ fttypes.h
+ ftwinfnt.h
+ ftxf86.h
+ internal/
+0 autohint.h
+ ftcalc.h
+ ftdebug.h
+ ftdriver.h
+ ftgloadr.h
+ ftmemory.h
+ ftobjs.h
+ ftrfork.h
+ ftserv.h
+ ftstream.h
+ fttrace.h
+ ftvalid.h
+ internal.h
+ pcftypes.h
+ psaux.h
+ pshints.h
+ services/
+0 svbdf.h
+ svcid.h
+ svgldict.h
+ svgxval.h
+ svkern.h
+ svmm.h
+ svotval.h
+ svpfr.h
+ svpostnm.h
+ svpscmap.h
+ svpsinfo.h
+ svsfnt.h
+ svttcmap.h
+ svtteng.h
+ svttglyf.h
+ svwinfnt.h
+ svxf86nm.h
+2 sfnt.h
+ t1types.h
+ tttypes.h
+2 t1tables.h
+ ttnameid.h
+ tttables.h
+ tttags.h
+ ttunpat.h
+2 ft2build.h
+2 Jamfile
+ Jamrules
+ Makefile
+ modules.cfg
+ objs/
+0 README
+2 README
+0 .CVS
+2 src/
+0 autofit/
+0 afangles.c
+ afangles.h
+ afcjk.c
+ afcjk.h
+ afdummy.c
+ afdummy.h
+ aferrors.h
+ afglobal.c
+ afglobal.h
+ afhints.c
+ afhints.h
+ afindic.c
+ afindic.h
+ aflatin2.c
+ aflatin2.h
+ aflatin.c
+ aflatin.h
+ afloader.c
+ afloader.h
+ afmodule.c
+ afmodule.h
+ aftypes.h
+ afwarp.c
+ afwarp.h
+ autofit.c
+ Jamfile
+ module.mk
+ rules.mk
+2 base/
+0 ftadvanc.c
+ ftapi.c
+ ftbase.c
+ ftbase.h
+ ftbbox.c
+ ftbdf.c
+ ftbitmap.c
+ ftcalc.c
+ ftcid.c
+ ftdbgmem.c
+ ftdebug.c
+ ftfstype.c
+ ftgasp.c
+ ftgloadr.c
+ ftglyph.c
+ ftgxval.c
+ ftinit.c
+ ftlcdfil.c
+ ftmac.c
+ ftmm.c
+ ftnames.c
+ ftobjs.c
+ ftotval.c
+ ftoutln.c
+ ftpatent.c
+ ftpfr.c
+ ftrfork.c
+ ftstream.c
+ ftstroke.c
+ ftsynth.c
+ ftsystem.c
+ fttrigon.c
+ fttype1.c
+ ftutil.c
+ ftwinfnt.c
+ ftxf86.c
+ Jamfile
+ rules.mk
+2 bdf/
+0 bdf.c
+ bdfdrivr.c
+ bdfdrivr.h
+ bdferror.h
+ bdf.h
+ bdflib.c
+ Jamfile
+ module.mk
+ README
+ rules.mk
+2 cache/
+0 ftcache.c
+ ftcbasic.c
+ ftccache.c
+ ftccache.h
+ ftccback.h
+ ftccmap.c
+ ftcerror.h
+ ftcglyph.c
+ ftcglyph.h
+ ftcimage.c
+ ftcimage.h
+ ftcmanag.c
+ ftcmanag.h
+ ftcmru.c
+ ftcmru.h
+ ftcsbits.c
+ ftcsbits.h
+ Jamfile
+ rules.mk
+2 cff/
+0 cff.c
+ cffcmap.c
+ cffcmap.h
+ cffdrivr.c
+ cffdrivr.h
+ cfferrs.h
+ cffgload.c
+ cffgload.h
+ cffload.c
+ cffload.h
+ cffobjs.c
+ cffobjs.h
+ cffparse.c
+ cffparse.h
+ cfftoken.h
+ cfftypes.h
+ Jamfile
+ module.mk
+ rules.mk
+2 cid/
+0 ciderrs.h
+ cidgload.c
+ cidgload.h
+ cidload.c
+ cidload.h
+ cidobjs.c
+ cidobjs.h
+ cidparse.c
+ cidparse.h
+ cidriver.c
+ cidriver.h
+ cidtoken.h
+ Jamfile
+ module.mk
+ rules.mk
+ type1cid.c
+2 gxvalid/
+0 gxvalid.c
+ gxvalid.h
+ gxvbsln.c
+ gxvcommn.c
+ gxvcommn.h
+ gxverror.h
+ gxvfeat.c
+ gxvfeat.h
+ gxvfgen.c
+ gxvjust.c
+ gxvkern.c
+ gxvlcar.c
+ gxvmod.c
+ gxvmod.h
+ gxvmort0.c
+ gxvmort1.c
+ gxvmort2.c
+ gxvmort4.c
+ gxvmort5.c
+ gxvmort.c
+ gxvmort.h
+ gxvmorx0.c
+ gxvmorx1.c
+ gxvmorx2.c
+ gxvmorx4.c
+ gxvmorx5.c
+ gxvmorx.c
+ gxvmorx.h
+ gxvopbd.c
+ gxvprop.c
+ gxvtrak.c
+ Jamfile
+ module.mk
+ README
+ rules.mk
+2 gzip/
+0 adler32.c
+ ftgzip.c
+ infblock.c
+ infblock.h
+ infcodes.c
+ infcodes.h
+ inffixed.h
+ inflate.c
+ inftrees.c
+ inftrees.h
+ infutil.c
+ infutil.h
+ Jamfile
+ rules.mk
+ zconf.h
+ zlib.h
+ zutil.c
+ zutil.h
+2 Jamfile
+ lzw/
+0 ftlzw.c
+ ftzopen.c
+ ftzopen.h
+ Jamfile
+ rules.mk
+2 otvalid/
+0 Jamfile
+ module.mk
+ otvalid.c
+ otvalid.h
+ otvbase.c
+ otvcommn.c
+ otvcommn.h
+ otverror.h
+ otvgdef.c
+ otvgpos.c
+ otvgpos.h
+ otvgsub.c
+ otvjstf.c
+ otvmath.c
+ otvmod.c
+ otvmod.h
+ rules.mk
+2 pcf/
+0 Jamfile
+ module.mk
+ pcf.c
+ pcfdrivr.c
+ pcfdrivr.h
+ pcferror.h
+ pcf.h
+ pcfread.c
+ pcfread.h
+ pcfutil.c
+ pcfutil.h
+ README
+ rules.mk
+2 pfr/
+0 Jamfile
+ module.mk
+ pfr.c
+ pfrcmap.c
+ pfrcmap.h
+ pfrdrivr.c
+ pfrdrivr.h
+ pfrerror.h
+ pfrgload.c
+ pfrgload.h
+ pfrload.c
+ pfrload.h
+ pfrobjs.c
+ pfrobjs.h
+ pfrsbit.c
+ pfrsbit.h
+ pfrtypes.h
+ rules.mk
+2 psaux/
+0 afmparse.c
+ afmparse.h
+ Jamfile
+ module.mk
+ psaux.c
+ psauxerr.h
+ psauxmod.c
+ psauxmod.h
+ psconv.c
+ psconv.h
+ psobjs.c
+ psobjs.h
+ rules.mk
+ t1cmap.c
+ t1cmap.h
+ t1decode.c
+ t1decode.h
+2 pshinter/
+0 Jamfile
+ module.mk
+ pshalgo.c
+ pshalgo.h
+ pshglob.c
+ pshglob.h
+ pshinter.c
+ pshmod.c
+ pshmod.h
+ pshnterr.h
+ pshrec.c
+ pshrec.h
+ rules.mk
+2 psnames/
+0 Jamfile
+ module.mk
+ psmodule.c
+ psmodule.h
+ psnamerr.h
+ psnames.c
+ pstables.h
+ rules.mk
+2 raster/
+0 ftmisc.h
+ ftraster.c
+ ftraster.h
+ ftrend1.c
+ ftrend1.h
+ Jamfile
+ module.mk
+ raster.c
+ rasterrs.h
+ rules.mk
+2 sfnt/
+0 Jamfile
+ module.mk
+ rules.mk
+ sfdriver.c
+ sfdriver.h
+ sferrors.h
+ sfnt.c
+ sfobjs.c
+ sfobjs.h
+ ttbdf.c
+ ttbdf.h
+ ttcmap.c
+ ttcmap.h
+ ttkern.c
+ ttkern.h
+ ttload.c
+ ttload.h
+ ttmtx.c
+ ttmtx.h
+ ttpost.c
+ ttpost.h
+ ttsbit0.c
+ ttsbit.c
+ ttsbit.h
+2 smooth/
+0 ftgrays.c
+ ftgrays.h
+ ftsmerrs.h
+ ftsmooth.c
+ ftsmooth.h
+ Jamfile
+ module.mk
+ rules.mk
+ smooth.c
+2 tools/
+0 apinames.c
+ cordic.py
+ docmaker/
+0 content.py
+ docbeauty.py
+ docmaker.py
+ formatter.py
+ sources.py
+ tohtml.py
+ utils.py
+2 ftrandom/
+0 ftrandom.c
+ Makefile
+ README
+2 glnames.py
+ Jamfile
+ test_afm.c
+ test_bbox.c
+ test_trig.c
+2 truetype/
+0 Jamfile
+ module.mk
+ rules.mk
+ truetype.c
+ ttdriver.c
+ ttdriver.h
+ tterrors.h
+ ttgload.c
+ ttgload.h
+ ttgxvar.c
+ ttgxvar.h
+ ttinterp.c
+ ttinterp.h
+ ttobjs.c
+ ttobjs.h
+ ttpload.c
+ ttpload.h
+2 type1/
+0 Jamfile
+ module.mk
+ rules.mk
+ t1afm.c
+ t1afm.h
+ t1driver.c
+ t1driver.h
+ t1errors.h
+ t1gload.c
+ t1gload.h
+ t1load.c
+ t1load.h
+ t1objs.c
+ t1objs.h
+ t1parse.c
+ t1parse.h
+ t1tokens.h
+ type1.c
+2 type42/
+0 Jamfile
+ module.mk
+ rules.mk
+ t42drivr.c
+ t42drivr.h
+ t42error.h
+ t42objs.c
+ t42objs.h
+ t42parse.c
+ t42parse.h
+ t42types.h
+ type42.c
+2 winfonts/
+0 fnterrs.h
+ Jamfile
+ module.mk
+ rules.mk
+ winfnt.c
+ winfnt.h
+3 version.sed
+ vms_make.com
+2 .gitattributes
+ harfbuzz/
+0 AUTHORS
+ autogen.sh
+ ChangeLog
+ configure.ac
+ COPYING
+ .gitignore
+ Makefile.am
+ NEWS
+ README
+ src/
+0 .gitignore
+ harfbuzz-arabic.c
+ harfbuzz-buffer.c
+ harfbuzz-buffer.h
+ harfbuzz-buffer-private.h
+ harfbuzz.c
+ harfbuzz-dump.c
+ harfbuzz-dump.h
+ harfbuzz-dump-main.c
+ harfbuzz-external.h
+ harfbuzz-gdef.c
+ harfbuzz-gdef.h
+ harfbuzz-gdef-private.h
+ harfbuzz-global.h
+ harfbuzz-gpos.c
+ harfbuzz-gpos.h
+ harfbuzz-gpos-private.h
+ harfbuzz-gsub.c
+ harfbuzz-gsub.h
+ harfbuzz-gsub-private.h
+ harfbuzz.h
+ harfbuzz-hangul.c
+ harfbuzz-hebrew.c
+ harfbuzz-impl.c
+ harfbuzz-impl.h
+ harfbuzz-indic.cpp
+ harfbuzz-khmer.c
+ harfbuzz-myanmar.c
+ harfbuzz-open.c
+ harfbuzz-open.h
+ harfbuzz-open-private.h
+ harfbuzz-shape.h
+ harfbuzz-shaper-all.cpp
+ harfbuzz-shaper.cpp
+ harfbuzz-shaper.h
+ harfbuzz-shaper-private.h
+ harfbuzz-stream.c
+ harfbuzz-stream.h
+ harfbuzz-stream-private.h
+ harfbuzz-thai.c
+ harfbuzz-tibetan.c
+ Makefile.am
+2 tests/
+0 linebreaking/
+0 .gitignore
+ harfbuzz-qt.cpp
+ main.cpp
+ Makefile.am
+2 Makefile.am
+ shaping/
+0 .gitignore
+ main.cpp
+ Makefile.am
+ README
+4 javascriptcore/
+0 JavaScriptCore/
+0 API/
+0 APICast.h
+ JavaScriptCore.h
+ JavaScript.h
+ JSBase.cpp
+ JSBase.h
+ JSBasePrivate.h
+ JSCallbackConstructor.cpp
+ JSCallbackConstructor.h
+ JSCallbackFunction.cpp
+ JSCallbackFunction.h
+ JSCallbackObject.cpp
+ JSCallbackObjectFunctions.h
+ JSCallbackObject.h
+ JSClassRef.cpp
+ JSClassRef.h
+ JSContextRef.cpp
+ JSContextRef.h
+ JSObjectRef.cpp
+ JSObjectRef.h
+ JSProfilerPrivate.cpp
+ JSProfilerPrivate.h
+ JSRetainPtr.h
+ JSStringRefBSTR.cpp
+ JSStringRefBSTR.h
+ JSStringRefCF.cpp
+ JSStringRefCF.h
+ JSStringRef.cpp
+ JSStringRef.h
+ JSValueRef.cpp
+ JSValueRef.h
+ OpaqueJSString.cpp
+ OpaqueJSString.h
+ WebKitAvailability.h
+2 assembler/
+0 AbstractMacroAssembler.h
+ ARMAssembler.cpp
+ ARMAssembler.h
+ ARMv7Assembler.h
+ AssemblerBuffer.h
+ AssemblerBufferWithConstantPool.h
+ CodeLocation.h
+ LinkBuffer.h
+ MacroAssemblerARM.cpp
+ MacroAssemblerARM.h
+ MacroAssemblerARMv7.h
+ MacroAssemblerCodeRef.h
+ MacroAssembler.h
+ MacroAssemblerX86_64.h
+ MacroAssemblerX86Common.h
+ MacroAssemblerX86.h
+ RepatchBuffer.h
+ X86Assembler.h
+2 AUTHORS
+ bytecode/
+0 CodeBlock.cpp
+ CodeBlock.h
+ EvalCodeCache.h
+ Instruction.h
+ JumpTable.cpp
+ JumpTable.h
+ Opcode.cpp
+ Opcode.h
+ SamplingTool.cpp
+ SamplingTool.h
+ StructureStubInfo.cpp
+ StructureStubInfo.h
+2 bytecompiler/
+0 BytecodeGenerator.cpp
+ BytecodeGenerator.h
+ Label.h
+ LabelScope.h
+ RegisterID.h
+2 ChangeLog
+0 -2002-12-03
+ -2003-10-25
+ -2007-10-14
+ -2008-08-10
+ -2009-06-16
+2 config.h
+ COPYING.LIB
+ create_hash_table
+ debugger/
+0 DebuggerActivation.cpp
+ DebuggerActivation.h
+ DebuggerCallFrame.cpp
+ DebuggerCallFrame.h
+ Debugger.cpp
+ Debugger.h
+2 DerivedSources.make
+ docs/
+0 make-bytecode-docs.pl
+2 ForwardingHeaders/
+0 JavaScriptCore/
+0 APICast.h
+ JavaScriptCore.h
+ JavaScript.h
+ JSBase.h
+ JSContextRef.h
+ JSObjectRef.h
+ JSRetainPtr.h
+ JSStringRefCF.h
+ JSStringRef.h
+ JSValueRef.h
+ OpaqueJSString.h
+ WebKitAvailability.h
+3 generated/
+0 ArrayPrototype.lut.h
+ chartables.c
+ DatePrototype.lut.h
+ Grammar.cpp
+ Grammar.h
+ JSONObject.lut.h
+ Lexer.lut.h
+ MathObject.lut.h
+ NumberConstructor.lut.h
+ RegExpConstructor.lut.h
+ RegExpObject.lut.h
+ StringPrototype.lut.h
+2 headers.pri
+ Info.plist
+ interpreter/
+0 CachedCall.h
+ CallFrameClosure.h
+ CallFrame.cpp
+ CallFrame.h
+ Interpreter.cpp
+ Interpreter.h
+ RegisterFile.cpp
+ RegisterFile.h
+ Register.h
+2 JavaScriptCore.gypi
+ JavaScriptCore.order
+ JavaScriptCorePrefix.h
+ JavaScriptCore.pri
+ jit/
+0 ExecutableAllocator.cpp
+ ExecutableAllocatorFixedVMPool.cpp
+ ExecutableAllocator.h
+ ExecutableAllocatorPosix.cpp
+ ExecutableAllocatorWin.cpp
+ JITArithmetic.cpp
+ JITCall.cpp
+ JITCode.h
+ JIT.cpp
+ JIT.h
+ JITInlineMethods.h
+ JITOpcodes.cpp
+ JITPropertyAccess.cpp
+ JITStubCall.h
+ JITStubs.cpp
+ JITStubs.h
+2 jsc.cpp
+ make-generated-sources.sh
+ os-win32/
+0 stdbool.h
+ stdint.h
+2 parser/
+0 Grammar.y
+ Keywords.table
+ Lexer.cpp
+ Lexer.h
+ NodeConstructors.h
+ NodeInfo.h
+ Nodes.cpp
+ Nodes.h
+ ParserArena.cpp
+ ParserArena.h
+ Parser.cpp
+ Parser.h
+ ResultType.h
+ SourceCode.h
+ SourceProvider.h
+2 pcre/
+0 AUTHORS
+ COPYING
+ dftables
+ pcre_compile.cpp
+ pcre_exec.cpp
+ pcre.h
+ pcre_internal.h
+ pcre.pri
+ pcre_tables.cpp
+ pcre_ucp_searchfuncs.cpp
+ pcre_xclass.cpp
+ ucpinternal.h
+ ucptable.cpp
+2 profiler/
+0 CallIdentifier.h
+ HeavyProfile.cpp
+ HeavyProfile.h
+ Profile.cpp
+ ProfileGenerator.cpp
+ ProfileGenerator.h
+ Profile.h
+ ProfileNode.cpp
+ ProfileNode.h
+ Profiler.cpp
+ Profiler.h
+ ProfilerServer.h
+ ProfilerServer.mm
+ TreeProfile.cpp
+ TreeProfile.h
+2 runtime/
+0 ArgList.cpp
+ ArgList.h
+ Arguments.cpp
+ Arguments.h
+ ArrayConstructor.cpp
+ ArrayConstructor.h
+ ArrayPrototype.cpp
+ ArrayPrototype.h
+ BatchedTransitionOptimizer.h
+ BooleanConstructor.cpp
+ BooleanConstructor.h
+ BooleanObject.cpp
+ BooleanObject.h
+ BooleanPrototype.cpp
+ BooleanPrototype.h
+ CallData.cpp
+ CallData.h
+ ClassInfo.h
+ Collector.cpp
+ Collector.h
+ CollectorHeapIterator.h
+ CommonIdentifiers.cpp
+ CommonIdentifiers.h
+ Completion.cpp
+ Completion.h
+ ConstructData.cpp
+ ConstructData.h
+ DateConstructor.cpp
+ DateConstructor.h
+ DateConversion.cpp
+ DateConversion.h
+ DateInstance.cpp
+ DateInstance.h
+ DatePrototype.cpp
+ DatePrototype.h
+ ErrorConstructor.cpp
+ ErrorConstructor.h
+ Error.cpp
+ Error.h
+ ErrorInstance.cpp
+ ErrorInstance.h
+ ErrorPrototype.cpp
+ ErrorPrototype.h
+ ExceptionHelpers.cpp
+ ExceptionHelpers.h
+ Executable.cpp
+ Executable.h
+ FunctionConstructor.cpp
+ FunctionConstructor.h
+ FunctionPrototype.cpp
+ FunctionPrototype.h
+ GetterSetter.cpp
+ GetterSetter.h
+ GlobalEvalFunction.cpp
+ GlobalEvalFunction.h
+ Identifier.cpp
+ Identifier.h
+ InitializeThreading.cpp
+ InitializeThreading.h
+ InternalFunction.cpp
+ InternalFunction.h
+ JSActivation.cpp
+ JSActivation.h
+ JSAPIValueWrapper.cpp
+ JSAPIValueWrapper.h
+ JSArray.cpp
+ JSArray.h
+ JSByteArray.cpp
+ JSByteArray.h
+ JSCell.cpp
+ JSCell.h
+ JSFunction.cpp
+ JSFunction.h
+ JSGlobalData.cpp
+ JSGlobalData.h
+ JSGlobalObject.cpp
+ JSGlobalObjectFunctions.cpp
+ JSGlobalObjectFunctions.h
+ JSGlobalObject.h
+ JSImmediate.cpp
+ JSImmediate.h
+ JSLock.cpp
+ JSLock.h
+ JSNotAnObject.cpp
+ JSNotAnObject.h
+ JSNumberCell.cpp
+ JSNumberCell.h
+ JSObject.cpp
+ JSObject.h
+ JSONObject.cpp
+ JSONObject.h
+ JSPropertyNameIterator.cpp
+ JSPropertyNameIterator.h
+ JSStaticScopeObject.cpp
+ JSStaticScopeObject.h
+ JSString.cpp
+ JSString.h
+ JSType.h
+ JSTypeInfo.h
+ JSValue.cpp
+ JSValue.h
+ JSVariableObject.cpp
+ JSVariableObject.h
+ JSWrapperObject.cpp
+ JSWrapperObject.h
+ LiteralParser.cpp
+ LiteralParser.h
+ Lookup.cpp
+ Lookup.h
+ MarkStack.cpp
+ MarkStack.h
+ MarkStackPosix.cpp
+ MarkStackWin.cpp
+ MathObject.cpp
+ MathObject.h
+ NativeErrorConstructor.cpp
+ NativeErrorConstructor.h
+ NativeErrorPrototype.cpp
+ NativeErrorPrototype.h
+ NativeFunctionWrapper.h
+ NumberConstructor.cpp
+ NumberConstructor.h
+ NumberObject.cpp
+ NumberObject.h
+ NumberPrototype.cpp
+ NumberPrototype.h
+ NumericStrings.h
+ ObjectConstructor.cpp
+ ObjectConstructor.h
+ ObjectPrototype.cpp
+ ObjectPrototype.h
+ Operations.cpp
+ Operations.h
+ PropertyDescriptor.cpp
+ PropertyDescriptor.h
+ PropertyMapHashTable.h
+ PropertyNameArray.cpp
+ PropertyNameArray.h
+ PropertySlot.cpp
+ PropertySlot.h
+ Protect.h
+ PrototypeFunction.cpp
+ PrototypeFunction.h
+ PutPropertySlot.h
+ RegExpConstructor.cpp
+ RegExpConstructor.h
+ RegExp.cpp
+ RegExp.h
+ RegExpMatchesArray.h
+ RegExpObject.cpp
+ RegExpObject.h
+ RegExpPrototype.cpp
+ RegExpPrototype.h
+ ScopeChain.cpp
+ ScopeChain.h
+ ScopeChainMark.h
+ SmallStrings.cpp
+ SmallStrings.h
+ StringConstructor.cpp
+ StringConstructor.h
+ StringObject.cpp
+ StringObject.h
+ StringObjectThatMasqueradesAsUndefined.h
+ StringPrototype.cpp
+ StringPrototype.h
+ StructureChain.cpp
+ StructureChain.h
+ Structure.cpp
+ Structure.h
+ StructureTransitionTable.h
+ SymbolTable.h
+ TimeoutChecker.cpp
+ TimeoutChecker.h
+ Tracing.h
+ UString.cpp
+ UString.h
+2 THANKS
+ wrec/
+0 CharacterClassConstructor.cpp
+ CharacterClassConstructor.h
+ CharacterClass.cpp
+ CharacterClass.h
+ Escapes.h
+ Quantifier.h
+ WREC.cpp
+ WRECFunctors.cpp
+ WRECFunctors.h
+ WRECGenerator.cpp
+ WRECGenerator.h
+ WREC.h
+ WRECParser.cpp
+ WRECParser.h
+2 wscript
+ wtf/
+0 AlwaysInline.h
+ ASCIICType.h
+ Assertions.cpp
+ Assertions.h
+ AVLTree.h
+ ByteArray.cpp
+ ByteArray.h
+ CONTRIBUTORS.pthreads-win32
+ CrossThreadRefCounted.h
+ CurrentTime.cpp
+ CurrentTime.h
+ DateMath.cpp
+ DateMath.h
+ Deque.h
+ DisallowCType.h
+ dtoa.cpp
+ dtoa.h
+ FastAllocBase.h
+ FastMalloc.cpp
+ FastMalloc.h
+ Forward.h
+ GetPtr.h
+ GOwnPtr.cpp
+ GOwnPtr.h
+ HashCountedSet.h
+ HashFunctions.h
+ HashIterators.h
+ HashMap.h
+ HashSet.h
+ HashTable.cpp
+ HashTable.h
+ HashTraits.h
+ ListHashSet.h
+ ListRefPtr.h
+ Locker.h
+ MainThread.cpp
+ MainThread.h
+ MallocZoneSupport.h
+ MathExtras.h
+ MessageQueue.h
+ Noncopyable.h
+ NotFound.h
+ OwnArrayPtr.h
+ OwnFastMallocPtr.h
+ OwnPtrCommon.h
+ OwnPtr.h
+ OwnPtrWin.cpp
+ PassOwnPtr.h
+ PassRefPtr.h
+ Platform.h
+ PossiblyNull.h
+ PtrAndFlags.h
+ qt/
+0 MainThreadQt.cpp
+ ThreadingQt.cpp
+2 RandomNumber.cpp
+ RandomNumber.h
+ RandomNumberSeed.h
+ RefCounted.h
+ RefCountedLeakCounter.cpp
+ RefCountedLeakCounter.h
+ RefPtr.h
+ RefPtrHashMap.h
+ RetainPtr.h
+ SegmentedVector.h
+ StdLibExtras.h
+ StringExtras.h
+ TCPackedCache.h
+ TCPageMap.h
+ TCSpinLock.h
+ TCSystemAlloc.cpp
+ TCSystemAlloc.h
+ Threading.cpp
+ Threading.h
+ ThreadingNone.cpp
+ ThreadingPthreads.cpp
+ ThreadingWin.cpp
+ ThreadSpecific.h
+ ThreadSpecificWin.cpp
+ TypeTraits.cpp
+ TypeTraits.h
+ unicode/
+0 CollatorDefault.cpp
+ Collator.h
+ glib/
+0 UnicodeGLib.cpp
+ UnicodeGLib.h
+ UnicodeMacrosFromICU.h
+2 icu/
+0 CollatorICU.cpp
+ UnicodeIcu.h
+2 qt4/
+0 UnicodeQt4.h
+2 Unicode.h
+ UTF8.cpp
+ UTF8.h
+ wince/
+0 UnicodeWince.cpp
+ UnicodeWince.h
+3 UnusedParam.h
+ Vector.h
+ VectorTraits.h
+ VMTags.h
+ wince/
+0 FastMallocWince.h
+ MemoryManager.cpp
+ MemoryManager.h
+ mt19937ar.c
+3 yarr/
+0 RegexCompiler.cpp
+ RegexCompiler.h
+ RegexInterpreter.cpp
+ RegexInterpreter.h
+ RegexJIT.cpp
+ RegexJIT.h
+ RegexParser.h
+ RegexPattern.h
+3 VERSION
+ WebKit.pri
+2 libjpeg/
+0 change.log
+ coderules.doc
+ filelist.doc
+ install.doc
+ jcapimin.c
+ jcapistd.c
+ jccoefct.c
+ jccolor.c
+ jcdctmgr.c
+ jchuff.c
+ jchuff.h
+ jcinit.c
+ jcmainct.c
+ jcmarker.c
+ jcmaster.c
+ jcomapi.c
+ jconfig.bcc
+ jconfig.cfg
+ jconfig.dj
+ jconfig.doc
+ jconfig.h
+ jconfig.mac
+ jconfig.manx
+ jconfig.mc6
+ jconfig.sas
+ jconfig.st
+ jconfig.vc
+ jconfig.vms
+ jconfig.wat
+ jcparam.c
+ jcphuff.c
+ jcprepct.c
+ jcsample.c
+ jctrans.c
+ jdapimin.c
+ jdapistd.c
+ jdatadst.c
+ jdatasrc.c
+ jdcoefct.c
+ jdcolor.c
+ jdct.h
+ jddctmgr.c
+ jdhuff.c
+ jdhuff.h
+ jdinput.c
+ jdmainct.c
+ jdmarker.c
+ jdmaster.c
+ jdmerge.c
+ jdphuff.c
+ jdpostct.c
+ jdsample.c
+ jdtrans.c
+ jerror.c
+ jerror.h
+ jfdctflt.c
+ jfdctfst.c
+ jfdctint.c
+ jidctflt.c
+ jidctfst.c
+ jidctint.c
+ jidctred.c
+ jinclude.h
+ jmemmgr.c
+ jmemnobs.c
+ jmemsys.h
+ jmorecfg.h
+ jpegint.h
+ jpeglib.h
+ jquant1.c
+ jquant2.c
+ jutils.c
+ jversion.h
+ libjpeg.doc
+ makefile.ansi
+ makefile.bcc
+ makefile.cfg
+ makefile.dj
+ makefile.manx
+ makefile.mc6
+ makefile.mms
+ makefile.sas
+ makefile.unix
+ makefile.vc
+ makefile.vms
+ makefile.wat
+ README
+ structure.doc
+ usage.doc
+ wizard.doc
+2 libmng/
+0 CHANGES
+ doc/
+0 doc.readme
+ libmng.txt
+ man/
+0 jng.5
+ libmng.3
+ mng.5
+2 misc/
+0 magic.dif
+2 Plan1.png
+ Plan2.png
+ rpm/
+0 libmng-1.0.10-rhconf.patch
+ libmng.spec
+3 libmng_callback_xs.c
+ libmng_chunk_descr.c
+ libmng_chunk_descr.h
+ libmng_chunk_io.c
+ libmng_chunk_io.h
+ libmng_chunk_prc.c
+ libmng_chunk_prc.h
+ libmng_chunks.h
+ libmng_chunk_xs.c
+ libmng_cms.c
+ libmng_cms.h
+ libmng_conf.h
+ libmng_data.h
+ libmng_display.c
+ libmng_display.h
+ libmng_dither.c
+ libmng_dither.h
+ libmng_error.c
+ libmng_error.h
+ libmng_filter.c
+ libmng_filter.h
+ libmng.h
+ libmng_hlapi.c
+ libmng_jpeg.c
+ libmng_jpeg.h
+ libmng_memory.h
+ libmng_object_prc.c
+ libmng_object_prc.h
+ libmng_objects.h
+ libmng_pixels.c
+ libmng_pixels.h
+ libmng_prop_xs.c
+ libmng_read.c
+ libmng_read.h
+ libmng_trace.c
+ libmng_trace.h
+ libmng_types.h
+ libmng_write.c
+ libmng_write.h
+ libmng_zlib.c
+ libmng_zlib.h
+ LICENSE
+ makefiles/
+0 configure.in
+ Makefile.am
+ makefile.bcb3
+ makefile.dj
+ makefile.linux
+ makefile.mingw
+0 dll
+2 makefile.qnx
+ makefile.unix
+ makefile.vcwin32
+ README
+2 README
+0 .autoconf
+ .config
+ .contrib
+ .dll
+ .examples
+ .footprint
+ .packaging
+2 unmaintained/
+0 autogen.sh
+3 libpng/
+0 ANNOUNCE
+ CHANGES
+ configure
+ example.c
+ INSTALL
+ KNOWNBUG
+ libpng-1.2.40.txt
+ libpng.3
+ libpngpf.3
+ LICENSE
+ png.5
+ pngbar.jpg
+ pngbar.png
+ png.c
+ pngconf.h
+ pngerror.c
+ pnggccrd.c
+ pngget.c
+ png.h
+ pngmem.c
+ pngnow.png
+ pngpread.c
+ pngread.c
+ pngrio.c
+ pngrtran.c
+ pngrutil.c
+ pngset.c
+ pngtest.c
+ pngtest.png
+ pngtrans.c
+ pngvcrd.c
+ pngwio.c
+ pngwrite.c
+ pngwtran.c
+ pngwutil.c
+ projects/
+0 beos/
+0 x86-shared.proj
+ x86-shared.txt
+ x86-static.proj
+ x86-static.txt
+2 cbuilder5/
+0 libpng.bpf
+ libpng.bpg
+ libpng.bpr
+ libpng.cpp
+ libpng.readme.txt
+ libpngstat.bpf
+ libpngstat.bpr
+ zlib.readme.txt
+2 netware.txt
+ visualc6/
+0 libpng.dsp
+ libpng.dsw
+ pngtest.dsp
+ README.txt
+2 visualc71/
+0 libpng.sln
+ libpng.vcproj
+ pngtest.vcproj
+ PRJ0041.mak
+ README.txt
+ README_zlib.txt
+ zlib.vcproj
+2 wince.txt
+2 README
+ scripts/
+0 CMakeLists.txt
+ descrip.mms
+ libpng-config-body.in
+ libpng-config-head.in
+ libpng-config.in
+ libpng.icc
+ libpng.pc-configure.in
+ libpng.pc.in
+ makefile.32sunu
+ makefile.64sunu
+ makefile.acorn
+ makefile.aix
+ makefile.amiga
+ makefile.atari
+ makefile.bc32
+ makefile.beos
+ makefile.bor
+ makefile.cygwin
+ makefile.darwin
+ makefile.dec
+ makefile.dj2
+ makefile.elf
+ makefile.freebsd
+ makefile.gcc
+ makefile.gcmmx
+ makefile.hp64
+ makefile.hpgcc
+ makefile.hpux
+ makefile.ibmc
+ makefile.intel
+ makefile.knr
+ makefile.linux
+ makefile.mingw
+ makefile.mips
+ makefile.msc
+ makefile.ne12bsd
+ makefile.netbsd
+ makefile.nommx
+ makefile.openbsd
+ makefile.os2
+ makefile.sco
+ makefile.sggcc
+ makefile.sgi
+ makefile.so9
+ makefile.solaris
+0 -x86
+2 makefile.std
+ makefile.sunos
+ makefile.tc3
+ makefile.vcawin32
+ makefile.vcwin32
+ makefile.watcom
+ makevms.com
+ pngos2.def
+ pngw32.def
+ pngw32.rc
+ SCOPTIONS.ppc
+ smakefile.ppc
+2 TODO
+ Y2KINFO
+2 libtiff/
+0 aclocal.m4
+ autogen.sh
+ ChangeLog
+ config/
+0 compile
+ config.guess
+ config.sub
+ depcomp
+ install-sh
+ ltmain.sh
+ missing
+ mkinstalldirs
+2 configure
+0 .ac
+2 COPYRIGHT
+ HOWTO-RELEASE
+ html/
+0 addingtags.html
+ bugs.html
+ build.html
+ contrib.html
+ document.html
+ images/
+0 back.gif
+ bali.jpg
+ cat.gif
+ cover.jpg
+ cramps.gif
+ dave.gif
+2 images.html
+ images/info.gif
+ images/jello.jpg
+ images/jim.gif
+ images/Makefile.am
+ images/Makefile.in
+ images/note.gif
+ images/oxford.gif
+ images/quad.jpg
+ images/ring.gif
+ images/smallliz.jpg
+ images/strike.gif
+ images/warning.gif
+ index.html
+ internals.html
+ intro.html
+ libtiff.html
+ Makefile.am
+ Makefile.in
+ man/
+0 fax2ps.1.html
+ fax2tiff.1.html
+ gif2tiff.1.html
+ index.html
+ libtiff.3tiff.html
+ Makefile.am
+ Makefile.in
+ pal2rgb.1.html
+ ppm2tiff.1.html
+ ras2tiff.1.html
+ raw2tiff.1.html
+ rgb2ycbcr.1.html
+ sgi2tiff.1.html
+ thumbnail.1.html
+ tiff2bw.1.html
+ tiff2pdf.1.html
+ tiff2ps.1.html
+ tiff2rgba.1.html
+ TIFFbuffer.3tiff.html
+ TIFFClose.3tiff.html
+ tiffcmp.1.html
+ TIFFcodec.3tiff.html
+ TIFFcolor.3tiff.html
+ tiffcp.1.html
+ TIFFDataWidth.3tiff.html
+ tiffdither.1.html
+ tiffdump.1.html
+ TIFFError.3tiff.html
+ TIFFFlush.3tiff.html
+ TIFFGetField.3tiff.html
+ tiffgt.1.html
+ tiffinfo.1.html
+ tiffmedian.1.html
+ TIFFmemory.3tiff.html
+ TIFFOpen.3tiff.html
+ TIFFPrintDirectory.3tiff.html
+ TIFFquery.3tiff.html
+ TIFFReadDirectory.3tiff.html
+ TIFFReadEncodedStrip.3tiff.html
+ TIFFReadEncodedTile.3tiff.html
+ TIFFReadRawStrip.3tiff.html
+ TIFFReadRawTile.3tiff.html
+ TIFFReadRGBAImage.3tiff.html
+ TIFFReadRGBAStrip.3tiff.html
+ TIFFReadRGBATile.3tiff.html
+ TIFFReadScanline.3tiff.html
+ TIFFReadTile.3tiff.html
+ TIFFRGBAImage.3tiff.html
+ tiffset.1.html
+ TIFFSetDirectory.3tiff.html
+ TIFFSetField.3tiff.html
+ TIFFsize.3tiff.html
+ tiffsplit.1.html
+ TIFFstrip.3tiff.html
+ tiffsv.1.html
+ TIFFswab.3tiff.html
+ TIFFtile.3tiff.html
+ TIFFWarning.3tiff.html
+ TIFFWriteDirectory.3tiff.html
+ TIFFWriteEncodedStrip.3tiff.html
+ TIFFWriteEncodedTile.3tiff.html
+ TIFFWriteRawStrip.3tiff.html
+ TIFFWriteRawTile.3tiff.html
+ TIFFWriteScanline.3tiff.html
+ TIFFWriteTile.3tiff.html
+2 misc.html
+ support.html
+ TIFFTechNote2.html
+ tools.html
+ v3.4beta007.html
+ v3.4beta016.html
+ v3.4beta018.html
+ v3.4beta024.html
+ v3.4beta028.html
+ v3.4beta029.html
+ v3.4beta031.html
+ v3.4beta032.html
+ v3.4beta033.html
+ v3.4beta034.html
+ v3.4beta035.html
+ v3.4beta036.html
+ v3.5.1.html
+ v3.5.2.html
+ v3.5.3.html
+ v3.5.4.html
+ v3.5.5.html
+ v3.5.6-beta.html
+ v3.5.7.html
+ v3.6.0.html
+ v3.6.1.html
+ v3.7.0alpha.html
+ v3.7.0beta2.html
+ v3.7.0beta.html
+ v3.7.0.html
+ v3.7.1.html
+ v3.7.2.html
+ v3.7.3.html
+ v3.7.4.html
+ v3.8.0.html
+ v3.8.1.html
+ v3.8.2.html
+2 libtiff/
+0 libtiff.def
+ Makefile.am
+ Makefile.in
+ Makefile.vc
+ mkg3states.c
+ SConstruct
+ t4.h
+ tif_acorn.c
+ tif_apple.c
+ tif_atari.c
+ tif_aux.c
+ tif_close.c
+ tif_codec.c
+ tif_color.c
+ tif_compress.c
+ tif_config.h
+0 .in
+ .vc
+2 tif_dir.c
+ tif_dir.h
+ tif_dirinfo.c
+ tif_dirread.c
+ tif_dirwrite.c
+ tif_dumpmode.c
+ tif_error.c
+ tif_extension.c
+ tif_fax3.c
+ tif_fax3.h
+ tif_fax3sm.c
+ tiffconf.h
+0 .in
+ .vc
+2 tiff.h
+ tiffio.h
+0 xx
+2 tiffiop.h
+ tif_flush.c
+ tiffvers.h
+ tif_getimage.c
+ tif_jpeg.c
+ tif_luv.c
+ tif_lzw.c
+ tif_msdos.c
+ tif_next.c
+ tif_ojpeg.c
+ tif_open.c
+ tif_packbits.c
+ tif_pixarlog.c
+ tif_predict.c
+ tif_predict.h
+ tif_print.c
+ tif_read.c
+ tif_stream.cxx
+ tif_strip.c
+ tif_swab.c
+ tif_thunder.c
+ tif_tile.c
+ tif_unix.c
+ tif_version.c
+ tif_warning.c
+ tif_win32.c
+ tif_win3.c
+ tif_write.c
+ tif_zip.c
+ uvcode.h
+2 m4/
+0 acinclude.m4
+ libtool.m4
+ ltoptions.m4
+ ltsugar.m4
+ ltversion.m4
+2 Makefile.am
+ Makefile.in
+ Makefile.vc
+ nmake.opt
+ port/
+0 dummy.c
+ getopt.c
+ lfind.c
+ Makefile.am
+ Makefile.in
+ Makefile.vc
+ strcasecmp.c
+ strtoul.c
+2 README
+ RELEASE-DATE
+ SConstruct
+ test/
+0 ascii_tag.c
+ check_tag.c
+ long_tag.c
+ Makefile.am
+ Makefile.in
+ short_tag.c
+ strip.c
+ strip_rw.c
+ test_arrays.c
+ test_arrays.h
+2 TODO
+ VERSION
+2 Makefile
+ md4/
+0 md4.cpp
+ md4.h
+2 md5/
+0 md5.cpp
+ md5.h
+2 patches/
+0 freetype-2.3.5-config.patch
+ freetype-2.3.6-ascii.patch
+ freetype-2.3.6-vxworks.patch
+ libjpeg-6b-config.patch
+ libjpeg-6b-vxworks.patch
+ libmng-1.0.10-endless-loop.patch
+ libpng-1.2.20-elf-visibility.patch
+ libpng-1.2.20-vxworks.patch
+ libtiff-3.8.2-config.patch
+ libtiff-3.8.2-vxworks.patch
+ sqlite-3.5.6-config.patch
+ sqlite-3.5.6-vxworks.patch
+ sqlite-3.5.6-wince.patch
+ zlib-1.2.3-elf-visibility.patch
+2 phonon/
+0 CMakeLists.txt
+ COPYING.LIB
+ ds9/
+0 abstractvideorenderer.cpp
+ abstractvideorenderer.h
+ audiooutput.cpp
+ audiooutput.h
+ backend.cpp
+ backend.h
+ backendnode.cpp
+ backendnode.h
+ CMakeLists.txt
+ compointer.h
+ ConfigureChecks.cmake
+ ds9.desktop
+ effect.cpp
+ effect.h
+ fakesource.cpp
+ fakesource.h
+ iodevicereader.cpp
+ iodevicereader.h
+ lgpl-2.1.txt
+ lgpl-3.txt
+ mediagraph.cpp
+ mediagraph.h
+ mediaobject.cpp
+ mediaobject.h
+ phononds9_namespace.h
+ qasyncreader.cpp
+ qasyncreader.h
+ qaudiocdreader.cpp
+ qaudiocdreader.h
+ qbasefilter.cpp
+ qbasefilter.h
+ qmeminputpin.cpp
+ qmeminputpin.h
+ qpin.cpp
+ qpin.h
+ videorenderer_soft.cpp
+ videorenderer_soft.h
+ videorenderer_vmr9.cpp
+ videorenderer_vmr9.h
+ videowidget.cpp
+ videowidget.h
+ volumeeffect.cpp
+ volumeeffect.h
+2 gstreamer/
+0 abstractrenderer.cpp
+ abstractrenderer.h
+ alsasink2.c
+ alsasink2.h
+ artssink.cpp
+ artssink.h
+ audioeffect.cpp
+ audioeffect.h
+ audiooutput.cpp
+ audiooutput.h
+ backend.cpp
+ backend.h
+ CMakeLists.txt
+ common.h
+ ConfigureChecks.cmake
+ devicemanager.cpp
+ devicemanager.h
+ effect.cpp
+ effect.h
+ effectmanager.cpp
+ effectmanager.h
+ glrenderer.cpp
+ glrenderer.h
+ gsthelper.cpp
+ gsthelper.h
+ gstreamer.desktop
+ lgpl-2.1.txt
+ lgpl-3.txt
+ medianode.cpp
+ medianodeevent.cpp
+ medianodeevent.h
+ medianode.h
+ mediaobject.cpp
+ mediaobject.h
+ message.cpp
+ message.h
+ Messages.sh
+ phononsrc.cpp
+ phononsrc.h
+ qwidgetvideosink.cpp
+ qwidgetvideosink.h
+ streamreader.cpp
+ streamreader.h
+ videowidget.cpp
+ videowidget.h
+ volumefadereffect.cpp
+ volumefadereffect.h
+ widgetrenderer.cpp
+ widgetrenderer.h
+ x11renderer.cpp
+ x11renderer.h
+2 includes/
+0 CMakeLists.txt
+ Phonon/
+0 AbstractAudioOutput
+ AbstractMediaStream
+ AbstractVideoOutput
+ AddonInterface
+ AudioDevice
+0 Enumerator
+2 AudioOutput
+0 Device
+0 Model
+2 Interface
+2 BackendCapabilities
+ BackendInterface
+ Effect
+0 Description
+0 Model
+2 Interface
+ Parameter
+ Widget
+2 Experimental/
+0 AbstractVideoDataOutput
+ AudioDataOutput
+ SnapshotInterface
+ VideoDataOutput
+0 Interface
+2 VideoFrame
+0 2
+2 Visualization
+2 Global
+ MediaController
+ MediaNode
+ MediaObject
+0 Interface
+2 MediaSource
+ ObjectDescription
+0 Model
+2 Path
+ PlatformPlugin
+ SeekSlider
+ StreamInterface
+ VideoPlayer
+ VideoWidget
+0 Interface
+2 VolumeFaderEffect
+ VolumeFaderInterface
+ VolumeSlider
+3 mmf/
+0 abstractaudioeffect.cpp
+ abstractaudioeffect.h
+ abstractmediaplayer.cpp
+ abstractmediaplayer.h
+ abstractplayer.cpp
+ abstractplayer.h
+ ancestormovemonitor.cpp
+ ancestormovemonitor.h
+ audioequalizer.cpp
+ audioequalizer.h
+ audiooutput.cpp
+ audiooutput.h
+ audioplayer.cpp
+ audioplayer.h
+ backend.cpp
+ backend.h
+ bassboost.cpp
+ bassboost.h
+ defs.h
+ dummyplayer.cpp
+ dummyplayer.h
+ effectfactory.cpp
+ effectfactory.h
+ mediaobject.cpp
+ mediaobject.h
+ mmf_medianode.cpp
+ mmf_medianode.h
+ mmf_videoplayer.cpp
+ mmf_videoplayer.h
+ objectdump.cpp
+ objectdump.h
+ objectdump_symbian.cpp
+ objectdump_symbian.h
+ objecttree.cpp
+ objecttree.h
+ utils.cpp
+ utils.h
+ videooutput.cpp
+ videooutput.h
+ videooutputobserver.h
+ videowidget.cpp
+ videowidget.h
+ volumeobserver.h
+2 phonon/
+0 abstractaudiooutput.cpp
+ abstractaudiooutput.h
+ abstractaudiooutput_p.cpp
+ abstractaudiooutput_p.h
+ abstractmediastream.cpp
+ abstractmediastream.h
+ abstractmediastream_p.h
+ abstractvideooutput.cpp
+ abstractvideooutput.h
+ abstractvideooutput_p.cpp
+ abstractvideooutput_p.h
+ addoninterface.h
+ audiooutputadaptor.cpp
+ audiooutputadaptor_p.h
+ audiooutput.cpp
+ audiooutput.h
+ audiooutputinterface.cpp
+ audiooutputinterface.h
+ audiooutput_p.h
+ backendcapabilities.cpp
+ backendcapabilities.h
+ backendcapabilities_p.h
+ backend.dox
+ backendinterface.h
+ BUGS
+ CMakeLists.txt
+ effect.cpp
+ effect.h
+ effectinterface.h
+ effectparameter.cpp
+ effectparameter.h
+ effectparameter_p.h
+ effect_p.h
+ effectwidget.cpp
+ effectwidget.h
+ effectwidget_p.h
+ extractmethodcalls.rb
+ factory.cpp
+ factory_p.h
+ frontendinterface_p.h
+ globalconfig.cpp
+ globalconfig_p.h
+ globalstatic_p.h
+ IDEAS
+ iodevicestream.cpp
+ iodevicestream_p.h
+ .krazy
+ mediacontroller.cpp
+ mediacontroller.h
+ medianode.cpp
+ medianodedestructionhandler_p.h
+ medianode.h
+ medianode_p.h
+ mediaobject.cpp
+ mediaobject.dox
+ mediaobject.h
+ mediaobjectinterface.h
+ mediaobject_p.h
+ mediasource.cpp
+ mediasource.h
+ mediasource_p.h
+ Messages.sh
+ objectdescription.cpp
+ objectdescription.h
+ objectdescriptionmodel.cpp
+ objectdescriptionmodel.h
+ objectdescriptionmodel_p.h
+ objectdescription_p.h
+ org.kde.Phonon.AudioOutput.xml
+ path.cpp
+ path.h
+ path_p.h
+2 phonon.pc.cmake
+ phonon/phonondefs.h
+ phonon/phonondefs_p.h
+ phonon/phonon_export.h
+ phonon/phononnamespace.cpp
+ phonon/phononnamespace.h
+0 .in
+2 phonon/phononnamespace_p.h
+ phonon/platform.cpp
+ phonon/platform_p.h
+ phonon/platformplugin.h
+ phonon/preprocessandextract.sh
+ phonon/qsettingsgroup_p.h
+ phonon/seekslider.cpp
+ phonon/seekslider.h
+ phonon/seekslider_p.h
+ phonon/streaminterface.cpp
+ phonon/streaminterface.h
+ phonon/streaminterface_p.h
+ phonon/stream-thoughts
+ phonon/TODO
+ phonon/videoplayer.cpp
+ phonon/videoplayer.h
+ phonon/videowidget.cpp
+ phonon/videowidget.h
+ phonon/videowidgetinterface.h
+ phonon/videowidget_p.h
+ phonon/volumefadereffect.cpp
+ phonon/volumefadereffect.h
+ phonon/volumefadereffect_p.h
+ phonon/volumefaderinterface.h
+ phonon/volumeslider.cpp
+ phonon/volumeslider.h
+ phonon/volumeslider_p.h
+ qt7/
+0 audioconnection.h
+ audioconnection.mm
+ audiodevice.h
+ audiodevice.mm
+ audioeffects.h
+ audioeffects.mm
+ audiograph.h
+ audiograph.mm
+ audiomixer.h
+ audiomixer.mm
+ audionode.h
+ audionode.mm
+ audiooutput.h
+ audiooutput.mm
+ audiopartoutput.h
+ audiopartoutput.mm
+ audiosplitter.h
+ audiosplitter.mm
+ backend.h
+ backendheader.h
+ backendheader.mm
+ backendinfo.h
+ backendinfo.mm
+ backend.mm
+ CMakeLists.txt
+ ConfigureChecks.cmake
+ lgpl-2.1.txt
+ lgpl-3.txt
+ medianodeevent.h
+ medianodeevent.mm
+ medianode.h
+ medianode.mm
+ medianodevideopart.h
+ medianodevideopart.mm
+ mediaobjectaudionode.h
+ mediaobjectaudionode.mm
+ mediaobject.h
+ mediaobject.mm
+ quicktimeaudioplayer.h
+ quicktimeaudioplayer.mm
+ quicktimemetadata.h
+ quicktimemetadata.mm
+ quicktimestreamreader.h
+ quicktimestreamreader.mm
+ quicktimevideoplayer.h
+ quicktimevideoplayer.mm
+ videoeffect.h
+ videoeffect.mm
+ videoframe.h
+ videoframe.mm
+ videowidget.h
+ videowidget.mm
+2 waveout/
+0 audiooutput.cpp
+ audiooutput.h
+ backend.cpp
+ backend.h
+ mediaobject.cpp
+ mediaobject.h
+3 powervr/
+0 pvr2d.h
+ wsegl.h
+2 ptmalloc/
+0 ChangeLog
+ COPYRIGHT
+ lran2.h
+ Makefile
+ malloc-2.8.3.h
+ malloc.c
+ malloc-private.h
+ ptmalloc3.c
+ README
+ sysdeps/
+0 generic/
+0 atomic.h
+ malloc-machine.h
+ thread-st.h
+2 pthread/
+0 malloc-machine.h
+ thread-st.h
+2 solaris/
+0 malloc-machine.h
+ thread-st.h
+2 sproc/
+0 malloc-machine.h
+ thread-st.h
+4 README
+ sha1/
+0 sha1.cpp
+2 sqlite/
+0 shell.c
+ sqlite3.c
+ sqlite3.h
+2 webkit/
+0 ChangeLog
+ .gitignore
+ JavaScriptCore/
+0 API/
+0 APICast.h
+ JavaScriptCore.h
+ JavaScript.h
+ JSBase.cpp
+ JSBase.h
+ JSBasePrivate.h
+ JSCallbackConstructor.cpp
+ JSCallbackConstructor.h
+ JSCallbackFunction.cpp
+ JSCallbackFunction.h
+ JSCallbackObject.cpp
+ JSCallbackObjectFunctions.h
+ JSCallbackObject.h
+ JSClassRef.cpp
+ JSClassRef.h
+ JSContextRef.cpp
+ JSContextRef.h
+ JSContextRefPrivate.h
+ JSObjectRef.cpp
+ JSObjectRef.h
+ JSProfilerPrivate.cpp
+ JSProfilerPrivate.h
+ JSRetainPtr.h
+ JSStringRefBSTR.cpp
+ JSStringRefBSTR.h
+ JSStringRefCF.cpp
+ JSStringRefCF.h
+ JSStringRef.cpp
+ JSStringRef.h
+ JSValueRef.cpp
+ JSValueRef.h
+ OpaqueJSString.cpp
+ OpaqueJSString.h
+ WebKitAvailability.h
+2 assembler/
+0 AbstractMacroAssembler.h
+ ARMAssembler.cpp
+ ARMAssembler.h
+ ARMv7Assembler.h
+ AssemblerBuffer.h
+ AssemblerBufferWithConstantPool.h
+ CodeLocation.h
+ LinkBuffer.h
+ MacroAssemblerARM.cpp
+ MacroAssemblerARM.h
+ MacroAssemblerARMv7.h
+ MacroAssemblerCodeRef.h
+ MacroAssembler.h
+ MacroAssemblerX86_64.h
+ MacroAssemblerX86Common.h
+ MacroAssemblerX86.h
+ RepatchBuffer.h
+ X86Assembler.h
+2 AUTHORS
+ bytecode/
+0 CodeBlock.cpp
+ CodeBlock.h
+ EvalCodeCache.h
+ Instruction.h
+ JumpTable.cpp
+ JumpTable.h
+ Opcode.cpp
+ Opcode.h
+ SamplingTool.cpp
+ SamplingTool.h
+ StructureStubInfo.cpp
+ StructureStubInfo.h
+2 bytecompiler/
+0 BytecodeGenerator.cpp
+ BytecodeGenerator.h
+ Label.h
+ LabelScope.h
+ RegisterID.h
+2 ChangeLog
+0 -2002-12-03
+ -2003-10-25
+ -2007-10-14
+ -2008-08-10
+ -2009-06-16
+2 config.h
+ COPYING.LIB
+ create_hash_table
+ debugger/
+0 DebuggerActivation.cpp
+ DebuggerActivation.h
+ DebuggerCallFrame.cpp
+ DebuggerCallFrame.h
+ Debugger.cpp
+ Debugger.h
+2 DerivedSources.make
+ docs/
+0 make-bytecode-docs.pl
+2 ForwardingHeaders/
+0 JavaScriptCore/
+0 APICast.h
+ JavaScriptCore.h
+ JavaScript.h
+ JSBase.h
+ JSContextRef.h
+ JSObjectRef.h
+ JSRetainPtr.h
+ JSStringRefCF.h
+ JSStringRef.h
+ JSValueRef.h
+ OpaqueJSString.h
+ WebKitAvailability.h
+3 generated/
+0 ArrayPrototype.lut.h
+ chartables.c
+ DatePrototype.lut.h
+ Grammar.cpp
+ Grammar.h
+ JSONObject.lut.h
+ Lexer.lut.h
+ MathObject.lut.h
+ NumberConstructor.lut.h
+ RegExpConstructor.lut.h
+ RegExpObject.lut.h
+ StringPrototype.lut.h
+2 headers.pri
+ Info.plist
+ interpreter/
+0 CachedCall.h
+ CallFrameClosure.h
+ CallFrame.cpp
+ CallFrame.h
+ Interpreter.cpp
+ Interpreter.h
+ RegisterFile.cpp
+ RegisterFile.h
+ Register.h
+2 JavaScriptCore.gypi
+ JavaScriptCore.order
+ JavaScriptCorePrefix.h
+ JavaScriptCore.pri
+ JavaScriptCore.pro
+ jit/
+0 ExecutableAllocator.cpp
+ ExecutableAllocatorFixedVMPool.cpp
+ ExecutableAllocator.h
+ ExecutableAllocatorPosix.cpp
+ ExecutableAllocatorSymbian.cpp
+ ExecutableAllocatorWin.cpp
+ JITArithmetic.cpp
+ JITCall.cpp
+ JITCode.h
+ JIT.cpp
+ JIT.h
+ JITInlineMethods.h
+ JITOpcodes.cpp
+ JITPropertyAccess.cpp
+ JITStubCall.h
+ JITStubs.cpp
+ JITStubs.h
+2 jsc.cpp
+ make-generated-sources.sh
+ os-win32/
+0 stdbool.h
+ stdint.h
+2 parser/
+0 Grammar.y
+ Keywords.table
+ Lexer.cpp
+ Lexer.h
+ NodeConstructors.h
+ NodeInfo.h
+ Nodes.cpp
+ Nodes.h
+ ParserArena.cpp
+ ParserArena.h
+ Parser.cpp
+ Parser.h
+ ResultType.h
+ SourceCode.h
+ SourceProvider.h
+2 pcre/
+0 AUTHORS
+ COPYING
+ dftables
+ pcre_compile.cpp
+ pcre_exec.cpp
+ pcre.h
+ pcre_internal.h
+ pcre.pri
+ pcre_tables.cpp
+ pcre_ucp_searchfuncs.cpp
+ pcre_xclass.cpp
+ ucpinternal.h
+ ucptable.cpp
+2 profiler/
+0 CallIdentifier.h
+ HeavyProfile.cpp
+ HeavyProfile.h
+ Profile.cpp
+ ProfileGenerator.cpp
+ ProfileGenerator.h
+ Profile.h
+ ProfileNode.cpp
+ ProfileNode.h
+ Profiler.cpp
+ Profiler.h
+ ProfilerServer.h
+ ProfilerServer.mm
+ TreeProfile.cpp
+ TreeProfile.h
+2 runtime/
+0 ArgList.cpp
+ ArgList.h
+ Arguments.cpp
+ Arguments.h
+ ArrayConstructor.cpp
+ ArrayConstructor.h
+ ArrayPrototype.cpp
+ ArrayPrototype.h
+ BatchedTransitionOptimizer.h
+ BooleanConstructor.cpp
+ BooleanConstructor.h
+ BooleanObject.cpp
+ BooleanObject.h
+ BooleanPrototype.cpp
+ BooleanPrototype.h
+ CallData.cpp
+ CallData.h
+ ClassInfo.h
+ Collector.cpp
+ Collector.h
+ CollectorHeapIterator.h
+ CommonIdentifiers.cpp
+ CommonIdentifiers.h
+ Completion.cpp
+ Completion.h
+ ConstructData.cpp
+ ConstructData.h
+ DateConstructor.cpp
+ DateConstructor.h
+ DateConversion.cpp
+ DateConversion.h
+ DateInstanceCache.h
+ DateInstance.cpp
+ DateInstance.h
+ DatePrototype.cpp
+ DatePrototype.h
+ ErrorConstructor.cpp
+ ErrorConstructor.h
+ Error.cpp
+ Error.h
+ ErrorInstance.cpp
+ ErrorInstance.h
+ ErrorPrototype.cpp
+ ErrorPrototype.h
+ ExceptionHelpers.cpp
+ ExceptionHelpers.h
+ Executable.cpp
+ Executable.h
+ FunctionConstructor.cpp
+ FunctionConstructor.h
+ FunctionPrototype.cpp
+ FunctionPrototype.h
+ GetterSetter.cpp
+ GetterSetter.h
+ GlobalEvalFunction.cpp
+ GlobalEvalFunction.h
+ Identifier.cpp
+ Identifier.h
+ InitializeThreading.cpp
+ InitializeThreading.h
+ InternalFunction.cpp
+ InternalFunction.h
+ JSActivation.cpp
+ JSActivation.h
+ JSAPIValueWrapper.cpp
+ JSAPIValueWrapper.h
+ JSArray.cpp
+ JSArray.h
+ JSByteArray.cpp
+ JSByteArray.h
+ JSCell.cpp
+ JSCell.h
+ JSFunction.cpp
+ JSFunction.h
+ JSGlobalData.cpp
+ JSGlobalData.h
+ JSGlobalObject.cpp
+ JSGlobalObjectFunctions.cpp
+ JSGlobalObjectFunctions.h
+ JSGlobalObject.h
+ JSImmediate.cpp
+ JSImmediate.h
+ JSLock.cpp
+ JSLock.h
+ JSNotAnObject.cpp
+ JSNotAnObject.h
+ JSNumberCell.cpp
+ JSNumberCell.h
+ JSObject.cpp
+ JSObject.h
+ JSONObject.cpp
+ JSONObject.h
+ JSPropertyNameIterator.cpp
+ JSPropertyNameIterator.h
+ JSStaticScopeObject.cpp
+ JSStaticScopeObject.h
+ JSString.cpp
+ JSString.h
+ JSType.h
+ JSTypeInfo.h
+ JSValue.cpp
+ JSValue.h
+ JSVariableObject.cpp
+ JSVariableObject.h
+ JSWrapperObject.cpp
+ JSWrapperObject.h
+ LiteralParser.cpp
+ LiteralParser.h
+ Lookup.cpp
+ Lookup.h
+ MarkStack.cpp
+ MarkStack.h
+ MarkStackPosix.cpp
+ MarkStackSymbian.cpp
+ MarkStackWin.cpp
+ MathObject.cpp
+ MathObject.h
+ NativeErrorConstructor.cpp
+ NativeErrorConstructor.h
+ NativeErrorPrototype.cpp
+ NativeErrorPrototype.h
+ NativeFunctionWrapper.h
+ NumberConstructor.cpp
+ NumberConstructor.h
+ NumberObject.cpp
+ NumberObject.h
+ NumberPrototype.cpp
+ NumberPrototype.h
+ NumericStrings.h
+ ObjectConstructor.cpp
+ ObjectConstructor.h
+ ObjectPrototype.cpp
+ ObjectPrototype.h
+ Operations.cpp
+ Operations.h
+ PropertyDescriptor.cpp
+ PropertyDescriptor.h
+ PropertyMapHashTable.h
+ PropertyNameArray.cpp
+ PropertyNameArray.h
+ PropertySlot.cpp
+ PropertySlot.h
+ Protect.h
+ PrototypeFunction.cpp
+ PrototypeFunction.h
+ PutPropertySlot.h
+ RegExpConstructor.cpp
+ RegExpConstructor.h
+ RegExp.cpp
+ RegExp.h
+ RegExpMatchesArray.h
+ RegExpObject.cpp
+ RegExpObject.h
+ RegExpPrototype.cpp
+ RegExpPrototype.h
+ ScopeChain.cpp
+ ScopeChain.h
+ ScopeChainMark.h
+ SmallStrings.cpp
+ SmallStrings.h
+ StringConstructor.cpp
+ StringConstructor.h
+ StringObject.cpp
+ StringObject.h
+ StringObjectThatMasqueradesAsUndefined.h
+ StringPrototype.cpp
+ StringPrototype.h
+ StructureChain.cpp
+ StructureChain.h
+ Structure.cpp
+ Structure.h
+ StructureTransitionTable.h
+ SymbolTable.h
+ TimeoutChecker.cpp
+ TimeoutChecker.h
+ Tracing.h
+ UString.cpp
+ UString.h
+2 THANKS
+ wrec/
+0 CharacterClassConstructor.cpp
+ CharacterClassConstructor.h
+ CharacterClass.cpp
+ CharacterClass.h
+ Escapes.h
+ Quantifier.h
+ WREC.cpp
+ WRECFunctors.cpp
+ WRECFunctors.h
+ WRECGenerator.cpp
+ WRECGenerator.h
+ WREC.h
+ WRECParser.cpp
+ WRECParser.h
+2 wscript
+ wtf/
+0 AlwaysInline.h
+ ASCIICType.h
+ Assertions.cpp
+ Assertions.h
+ AVLTree.h
+ ByteArray.cpp
+ ByteArray.h
+ CONTRIBUTORS.pthreads-win32
+ CrossThreadRefCounted.h
+ CurrentTime.cpp
+ CurrentTime.h
+ DateMath.cpp
+ DateMath.h
+ Deque.h
+ DisallowCType.h
+ dtoa.cpp
+ dtoa.h
+ FastAllocBase.h
+ FastMalloc.cpp
+ FastMalloc.h
+ Forward.h
+ GetPtr.h
+ GOwnPtr.cpp
+ GOwnPtr.h
+ HashCountedSet.h
+ HashFunctions.h
+ HashIterators.h
+ HashMap.h
+ HashSet.h
+ HashTable.cpp
+ HashTable.h
+ HashTraits.h
+ ListHashSet.h
+ ListRefPtr.h
+ Locker.h
+ MainThread.cpp
+ MainThread.h
+ MallocZoneSupport.h
+ MathExtras.h
+ MessageQueue.h
+ Noncopyable.h
+ NotFound.h
+ OwnArrayPtr.h
+ OwnFastMallocPtr.h
+ OwnPtrCommon.h
+ OwnPtr.h
+ OwnPtrWin.cpp
+ PassOwnPtr.h
+ PassRefPtr.h
+ Platform.h
+ PossiblyNull.h
+ PtrAndFlags.h
+ qt/
+0 MainThreadQt.cpp
+ ThreadingQt.cpp
+2 RandomNumber.cpp
+ RandomNumber.h
+ RandomNumberSeed.h
+ RefCounted.h
+ RefCountedLeakCounter.cpp
+ RefCountedLeakCounter.h
+ RefPtr.h
+ RefPtrHashMap.h
+ RetainPtr.h
+ SegmentedVector.h
+ StdLibExtras.h
+ StringExtras.h
+ TCPackedCache.h
+ TCPageMap.h
+ TCSpinLock.h
+ TCSystemAlloc.cpp
+ TCSystemAlloc.h
+ Threading.cpp
+ Threading.h
+ ThreadingNone.cpp
+ ThreadingPthreads.cpp
+ ThreadingWin.cpp
+ ThreadSpecific.h
+ ThreadSpecificWin.cpp
+ TypeTraits.cpp
+ TypeTraits.h
+ unicode/
+0 CollatorDefault.cpp
+ Collator.h
+ glib/
+0 UnicodeGLib.cpp
+ UnicodeGLib.h
+ UnicodeMacrosFromICU.h
+2 icu/
+0 CollatorICU.cpp
+ UnicodeIcu.h
+2 qt4/
+0 UnicodeQt4.h
+2 Unicode.h
+ UTF8.cpp
+ UTF8.h
+ wince/
+0 UnicodeWince.cpp
+ UnicodeWince.h
+3 UnusedParam.h
+ Vector.h
+ VectorTraits.h
+ VMTags.h
+ wince/
+0 FastMallocWince.h
+ MemoryManager.cpp
+ MemoryManager.h
+ mt19937ar.c
+3 yarr/
+0 RegexCompiler.cpp
+ RegexCompiler.h
+ RegexInterpreter.cpp
+ RegexInterpreter.h
+ RegexJIT.cpp
+ RegexJIT.h
+ RegexParser.h
+ RegexPattern.h
+3 VERSION
+ WebCore/
+0 accessibility/
+0 AccessibilityAllInOne.cpp
+ AccessibilityARIAGridCell.cpp
+ AccessibilityARIAGridCell.h
+ AccessibilityARIAGrid.cpp
+ AccessibilityARIAGrid.h
+ AccessibilityARIAGridRow.cpp
+ AccessibilityARIAGridRow.h
+ AccessibilityImageMapLink.cpp
+ AccessibilityImageMapLink.h
+ AccessibilityListBox.cpp
+ AccessibilityListBox.h
+ AccessibilityListBoxOption.cpp
+ AccessibilityListBoxOption.h
+ AccessibilityList.cpp
+ AccessibilityList.h
+ AccessibilityMediaControls.cpp
+ AccessibilityMediaControls.h
+ AccessibilityObject.cpp
+ AccessibilityObject.h
+ AccessibilityRenderObject.cpp
+ AccessibilityRenderObject.h
+ AccessibilitySlider.cpp
+ AccessibilitySlider.h
+ AccessibilityTableCell.cpp
+ AccessibilityTableCell.h
+ AccessibilityTableColumn.cpp
+ AccessibilityTableColumn.h
+ AccessibilityTable.cpp
+ AccessibilityTable.h
+ AccessibilityTableHeaderContainer.cpp
+ AccessibilityTableHeaderContainer.h
+ AccessibilityTableRow.cpp
+ AccessibilityTableRow.h
+ AXObjectCache.cpp
+ AXObjectCache.h
+ qt/
+0 AccessibilityObjectQt.cpp
+3 bindings/
+0 js/
+0 CachedScriptSourceProvider.h
+ DOMObjectWithSVGContext.h
+ GCController.cpp
+ GCController.h
+ JSAbstractWorkerCustom.cpp
+ JSAttrCustom.cpp
+ JSAudioConstructor.cpp
+ JSAudioConstructor.h
+ JSBindingsAllInOne.cpp
+ JSCallbackData.cpp
+ JSCallbackData.h
+ JSCanvasArrayBufferConstructor.cpp
+ JSCanvasArrayBufferConstructor.h
+ JSCanvasArrayCustom.cpp
+ JSCanvasByteArrayConstructor.cpp
+ JSCanvasByteArrayConstructor.h
+ JSCanvasByteArrayCustom.cpp
+ JSCanvasFloatArrayConstructor.cpp
+ JSCanvasFloatArrayConstructor.h
+ JSCanvasFloatArrayCustom.cpp
+ JSCanvasIntArrayConstructor.cpp
+ JSCanvasIntArrayConstructor.h
+ JSCanvasIntArrayCustom.cpp
+ JSCanvasNumberArrayCustom.cpp
+ JSCanvasRenderingContext2DCustom.cpp
+ JSCanvasRenderingContext3DCustom.cpp
+ JSCanvasRenderingContextCustom.cpp
+ JSCanvasShortArrayConstructor.cpp
+ JSCanvasShortArrayConstructor.h
+ JSCanvasShortArrayCustom.cpp
+ JSCanvasUnsignedByteArrayConstructor.cpp
+ JSCanvasUnsignedByteArrayConstructor.h
+ JSCanvasUnsignedByteArrayCustom.cpp
+ JSCanvasUnsignedIntArrayConstructor.cpp
+ JSCanvasUnsignedIntArrayConstructor.h
+ JSCanvasUnsignedIntArrayCustom.cpp
+ JSCanvasUnsignedShortArrayConstructor.cpp
+ JSCanvasUnsignedShortArrayConstructor.h
+ JSCanvasUnsignedShortArrayCustom.cpp
+ JSCDATASectionCustom.cpp
+ JSClipboardCustom.cpp
+ JSConsoleCustom.cpp
+ JSCoordinatesCustom.cpp
+ JSCSSRuleCustom.cpp
+ JSCSSRuleListCustom.cpp
+ JSCSSStyleDeclarationCustom.cpp
+ JSCSSStyleDeclarationCustom.h
+ JSCSSValueCustom.cpp
+ JSCustomPositionCallback.cpp
+ JSCustomPositionCallback.h
+ JSCustomPositionErrorCallback.cpp
+ JSCustomPositionErrorCallback.h
+ JSCustomSQLStatementCallback.cpp
+ JSCustomSQLStatementCallback.h
+ JSCustomSQLStatementErrorCallback.cpp
+ JSCustomSQLStatementErrorCallback.h
+ JSCustomSQLTransactionCallback.cpp
+ JSCustomSQLTransactionCallback.h
+ JSCustomSQLTransactionErrorCallback.cpp
+ JSCustomSQLTransactionErrorCallback.h
+ JSCustomVoidCallback.cpp
+ JSCustomVoidCallback.h
+ JSCustomXPathNSResolver.cpp
+ JSCustomXPathNSResolver.h
+ JSDatabaseCustom.cpp
+ JSDataGridColumnListCustom.cpp
+ JSDataGridDataSource.cpp
+ JSDataGridDataSource.h
+ JSDedicatedWorkerContextCustom.cpp
+ JSDesktopNotificationsCustom.cpp
+ JSDocumentCustom.cpp
+ JSDocumentFragmentCustom.cpp
+ JSDOMApplicationCacheCustom.cpp
+ JSDOMBinding.cpp
+ JSDOMBinding.h
+ JSDOMGlobalObject.cpp
+ JSDOMGlobalObject.h
+ JSDOMWindowBase.cpp
+ JSDOMWindowBase.h
+ JSDOMWindowCustom.cpp
+ JSDOMWindowCustom.h
+ JSDOMWindowShell.cpp
+ JSDOMWindowShell.h
+ JSElementCustom.cpp
+ JSEventCustom.cpp
+ JSEventListener.cpp
+ JSEventListener.h
+ JSEventSourceConstructor.cpp
+ JSEventSourceConstructor.h
+ JSEventSourceCustom.cpp
+ JSEventTarget.cpp
+ JSEventTarget.h
+ JSExceptionBase.cpp
+ JSExceptionBase.h
+ JSGeolocationCustom.cpp
+ JSHistoryCustom.cpp
+ JSHistoryCustom.h
+ JSHTMLAllCollectionCustom.cpp
+ JSHTMLAppletElementCustom.cpp
+ JSHTMLAppletElementCustom.h
+ JSHTMLCanvasElementCustom.cpp
+ JSHTMLCollectionCustom.cpp
+ JSHTMLDataGridElementCustom.cpp
+ JSHTMLDocumentCustom.cpp
+ JSHTMLElementCustom.cpp
+ JSHTMLEmbedElementCustom.cpp
+ JSHTMLEmbedElementCustom.h
+ JSHTMLFormElementCustom.cpp
+ JSHTMLFrameElementCustom.cpp
+ JSHTMLFrameSetElementCustom.cpp
+ JSHTMLIFrameElementCustom.cpp
+ JSHTMLInputElementCustom.cpp
+ JSHTMLInputElementCustom.h
+ JSHTMLObjectElementCustom.cpp
+ JSHTMLObjectElementCustom.h
+ JSHTMLOptionsCollectionCustom.cpp
+ JSHTMLSelectElementCustom.cpp
+ JSHTMLSelectElementCustom.h
+ JSImageConstructor.cpp
+ JSImageConstructor.h
+ JSImageDataCustom.cpp
+ JSInspectedObjectWrapper.cpp
+ JSInspectedObjectWrapper.h
+ JSInspectorBackendCustom.cpp
+ JSInspectorCallbackWrapper.cpp
+ JSInspectorCallbackWrapper.h
+ JSJavaScriptCallFrameCustom.cpp
+ JSLazyEventListener.cpp
+ JSLazyEventListener.h
+ JSLocationCustom.cpp
+ JSLocationCustom.h
+ JSMessageChannelConstructor.cpp
+ JSMessageChannelConstructor.h
+ JSMessageChannelCustom.cpp
+ JSMessageEventCustom.cpp
+ JSMessagePortCustom.cpp
+ JSMessagePortCustom.h
+ JSMimeTypeArrayCustom.cpp
+ JSNamedNodeMapCustom.cpp
+ JSNavigatorCustom.cpp
+ JSNodeCustom.cpp
+ JSNodeFilterCondition.cpp
+ JSNodeFilterCondition.h
+ JSNodeFilterCustom.cpp
+ JSNodeIteratorCustom.cpp
+ JSNodeListCustom.cpp
+ JSOptionConstructor.cpp
+ JSOptionConstructor.h
+ JSPluginArrayCustom.cpp
+ JSPluginCustom.cpp
+ JSPluginElementFunctions.cpp
+ JSPluginElementFunctions.h
+ JSQuarantinedObjectWrapper.cpp
+ JSQuarantinedObjectWrapper.h
+ JSSharedWorkerConstructor.cpp
+ JSSharedWorkerConstructor.h
+ JSSharedWorkerCustom.cpp
+ JSSQLResultSetRowListCustom.cpp
+ JSSQLTransactionCustom.cpp
+ JSStorageCustom.cpp
+ JSStorageCustom.h
+ JSStyleSheetCustom.cpp
+ JSStyleSheetListCustom.cpp
+ JSSVGElementInstanceCustom.cpp
+ JSSVGLengthCustom.cpp
+ JSSVGMatrixCustom.cpp
+ JSSVGPathSegCustom.cpp
+ JSSVGPathSegListCustom.cpp
+ JSSVGPODTypeWrapper.h
+ JSSVGPointListCustom.cpp
+ JSSVGTransformListCustom.cpp
+ JSTextCustom.cpp
+ JSTreeWalkerCustom.cpp
+ JSWebKitCSSMatrixConstructor.cpp
+ JSWebKitCSSMatrixConstructor.h
+ JSWebKitPointConstructor.cpp
+ JSWebKitPointConstructor.h
+ JSWebSocketConstructor.cpp
+ JSWebSocketConstructor.h
+ JSWebSocketCustom.cpp
+ JSWorkerConstructor.cpp
+ JSWorkerConstructor.h
+ JSWorkerContextBase.cpp
+ JSWorkerContextBase.h
+ JSWorkerContextCustom.cpp
+ JSWorkerCustom.cpp
+ JSXMLHttpRequestConstructor.cpp
+ JSXMLHttpRequestConstructor.h
+ JSXMLHttpRequestCustom.cpp
+ JSXMLHttpRequestUploadCustom.cpp
+ JSXSLTProcessorConstructor.cpp
+ JSXSLTProcessorConstructor.h
+ JSXSLTProcessorCustom.cpp
+ ScheduledAction.cpp
+ ScheduledAction.h
+ ScriptArray.cpp
+ ScriptArray.h
+ ScriptCachedFrameData.cpp
+ ScriptCachedFrameData.h
+ ScriptCallFrame.cpp
+ ScriptCallFrame.h
+ ScriptCallStack.cpp
+ ScriptCallStack.h
+ ScriptController.cpp
+ ScriptControllerGtk.cpp
+ ScriptController.h
+ ScriptControllerHaiku.cpp
+ ScriptControllerMac.mm
+ ScriptControllerQt.cpp
+ ScriptControllerWin.cpp
+ ScriptControllerWx.cpp
+ ScriptEventListener.cpp
+ ScriptEventListener.h
+ ScriptFunctionCall.cpp
+ ScriptFunctionCall.h
+ ScriptInstance.h
+ ScriptObject.cpp
+ ScriptObject.h
+ ScriptObjectQuarantine.cpp
+ ScriptObjectQuarantine.h
+ ScriptSourceCode.h
+ ScriptSourceProvider.h
+ ScriptState.cpp
+ ScriptState.h
+ ScriptString.h
+ ScriptValue.cpp
+ ScriptValue.h
+ SerializedScriptValue.cpp
+ SerializedScriptValue.h
+ StringSourceProvider.h
+ WorkerScriptController.cpp
+ WorkerScriptController.h
+2 ScriptControllerBase.cpp
+ scripts/
+0 CodeGeneratorCOM.pm
+ CodeGeneratorJS.pm
+ CodeGeneratorObjC.pm
+ CodeGenerator.pm
+ CodeGeneratorV8.pm
+ generate-bindings.pl
+ IDLParser.pm
+ IDLStructure.pm
+ InFilesParser.pm
+3 bridge/
+0 c/
+0 c_class.cpp
+ c_class.h
+ c_instance.cpp
+ c_instance.h
+ c_runtime.cpp
+ c_runtime.h
+ c_utility.cpp
+ c_utility.h
+2 IdentifierRep.cpp
+ IdentifierRep.h
+ jni/
+0 jni_class.cpp
+ jni_class.h
+ jni_instance.cpp
+ jni_instance.h
+ jni_jsobject.h
+ jni_jsobject.mm
+ jni_objc.mm
+ jni_runtime.cpp
+ jni_runtime.h
+ jni_utility.cpp
+ jni_utility.h
+2 make_testbindings
+ npapi.h
+ NP_jsobject.cpp
+ NP_jsobject.h
+ npruntime.cpp
+ npruntime.h
+ npruntime_impl.h
+ npruntime_internal.h
+ npruntime_priv.h
+ qt/
+0 qt_class.cpp
+ qt_class.h
+ qt_instance.cpp
+ qt_instance.h
+ qt_runtime.cpp
+ qt_runtime.h
+2 runtime_array.cpp
+ runtime_array.h
+ runtime.cpp
+ runtime.h
+ runtime_method.cpp
+ runtime_method.h
+ runtime_object.cpp
+ runtime_object.h
+ runtime_root.cpp
+ runtime_root.h
+ testbindings.cpp
+ testbindings.mm
+ testC.js
+ test.js
+ testM.js
+ testqtbindings.cpp
+2 ChangeLog
+0 -2002-12-03
+ -2003-10-25
+ -2005-08-23
+ -2005-12-19
+ -2006-05-10
+ -2006-12-31
+ -2007-10-14
+ -2008-08-10
+ -2009-06-16
+2 combine-javascript-resources
+ config.h
+ css/
+0 Counter.h
+ Counter.idl
+ CSSBorderImageValue.cpp
+ CSSBorderImageValue.h
+ CSSCanvasValue.cpp
+ CSSCanvasValue.h
+ CSSCharsetRule.cpp
+ CSSCharsetRule.h
+ CSSCharsetRule.idl
+ CSSComputedStyleDeclaration.cpp
+ CSSComputedStyleDeclaration.h
+ CSSCursorImageValue.cpp
+ CSSCursorImageValue.h
+ CSSFontFace.cpp
+ CSSFontFace.h
+ CSSFontFaceRule.cpp
+ CSSFontFaceRule.h
+ CSSFontFaceRule.idl
+ CSSFontFaceSource.cpp
+ CSSFontFaceSource.h
+ CSSFontFaceSrcValue.cpp
+ CSSFontFaceSrcValue.h
+ CSSFontSelector.cpp
+ CSSFontSelector.h
+ CSSFunctionValue.cpp
+ CSSFunctionValue.h
+ CSSGradientValue.cpp
+ CSSGradientValue.h
+ CSSGrammar.y
+ CSSHelper.cpp
+ CSSHelper.h
+ CSSImageGeneratorValue.cpp
+ CSSImageGeneratorValue.h
+ CSSImageValue.cpp
+ CSSImageValue.h
+ CSSImportRule.cpp
+ CSSImportRule.h
+ CSSImportRule.idl
+ CSSInheritedValue.cpp
+ CSSInheritedValue.h
+ CSSInitialValue.cpp
+ CSSInitialValue.h
+ CSSMediaRule.cpp
+ CSSMediaRule.h
+ CSSMediaRule.idl
+ CSSMutableStyleDeclaration.cpp
+ CSSMutableStyleDeclaration.h
+ CSSNamespace.h
+ CSSPageRule.cpp
+ CSSPageRule.h
+ CSSPageRule.idl
+ CSSParser.cpp
+ CSSParser.h
+ CSSParserValues.cpp
+ CSSParserValues.h
+ CSSPrimitiveValue.cpp
+ CSSPrimitiveValue.h
+ CSSPrimitiveValue.idl
+ CSSPrimitiveValueMappings.h
+ CSSProperty.cpp
+ CSSProperty.h
+ CSSPropertyLonghand.cpp
+ CSSPropertyLonghand.h
+ CSSPropertyNames.in
+ CSSQuirkPrimitiveValue.h
+ CSSReflectionDirection.h
+ CSSReflectValue.cpp
+ CSSReflectValue.h
+ CSSRule.cpp
+ CSSRule.h
+ CSSRule.idl
+ CSSRuleList.cpp
+ CSSRuleList.h
+ CSSRuleList.idl
+ CSSSegmentedFontFace.cpp
+ CSSSegmentedFontFace.h
+ CSSSelector.cpp
+ CSSSelector.h
+ CSSSelectorList.cpp
+ CSSSelectorList.h
+ CSSStyleDeclaration.cpp
+ CSSStyleDeclaration.h
+ CSSStyleDeclaration.idl
+ CSSStyleRule.cpp
+ CSSStyleRule.h
+ CSSStyleRule.idl
+ CSSStyleSelector.cpp
+ CSSStyleSelector.h
+ CSSStyleSheet.cpp
+ CSSStyleSheet.h
+ CSSStyleSheet.idl
+ CSSTimingFunctionValue.cpp
+ CSSTimingFunctionValue.h
+ CSSUnicodeRangeValue.cpp
+ CSSUnicodeRangeValue.h
+ CSSUnknownRule.h
+ CSSUnknownRule.idl
+ CSSValue.h
+ CSSValue.idl
+ CSSValueKeywords.in
+ CSSValueList.cpp
+ CSSValueList.h
+ CSSValueList.idl
+ CSSVariableDependentValue.cpp
+ CSSVariableDependentValue.h
+ CSSVariablesDeclaration.cpp
+ CSSVariablesDeclaration.h
+ CSSVariablesDeclaration.idl
+ CSSVariablesRule.cpp
+ CSSVariablesRule.h
+ CSSVariablesRule.idl
+ DashboardRegion.h
+ DashboardSupportCSSPropertyNames.in
+ FontFamilyValue.cpp
+ FontFamilyValue.h
+ FontValue.cpp
+ FontValue.h
+ html.css
+ make-css-file-arrays.pl
+ makegrammar.pl
+ makeprop.pl
+ maketokenizer
+ makevalues.pl
+ mathml.css
+ mediaControlsChromium.css
+ mediaControls.css
+ mediaControlsQt.css
+ mediaControlsQuickTime.css
+ Media.cpp
+ MediaFeatureNames.cpp
+ MediaFeatureNames.h
+ Media.h
+ Media.idl
+ MediaList.cpp
+ MediaList.h
+ MediaList.idl
+ MediaQuery.cpp
+ MediaQueryEvaluator.cpp
+ MediaQueryEvaluator.h
+ MediaQueryExp.cpp
+ MediaQueryExp.h
+ MediaQuery.h
+ Pair.h
+ quirks.css
+ Rect.h
+ Rect.idl
+ RGBColor.cpp
+ RGBColor.h
+ RGBColor.idl
+ ShadowValue.cpp
+ ShadowValue.h
+ StyleBase.cpp
+ StyleBase.h
+ StyleList.cpp
+ StyleList.h
+ StyleSheet.cpp
+ StyleSheet.h
+ StyleSheet.idl
+ StyleSheetList.cpp
+ StyleSheetList.h
+ StyleSheetList.idl
+ svg.css
+ SVGCSSComputedStyleDeclaration.cpp
+ SVGCSSParser.cpp
+ SVGCSSPropertyNames.in
+ SVGCSSStyleSelector.cpp
+ SVGCSSValueKeywords.in
+ themeChromiumLinux.css
+ themeWin.css
+ themeWinQuirks.css
+ tokenizer.flex
+ view-source.css
+ WCSSPropertyNames.in
+ WCSSValueKeywords.in
+ WebKitCSSKeyframeRule.cpp
+ WebKitCSSKeyframeRule.h
+ WebKitCSSKeyframeRule.idl
+ WebKitCSSKeyframesRule.cpp
+ WebKitCSSKeyframesRule.h
+ WebKitCSSKeyframesRule.idl
+ WebKitCSSMatrix.cpp
+ WebKitCSSMatrix.h
+ WebKitCSSMatrix.idl
+ WebKitCSSTransformValue.cpp
+ WebKitCSSTransformValue.h
+ WebKitCSSTransformValue.idl
+ wml.css
+2 DerivedSources.cpp
+ dom/
+0 ActiveDOMObject.cpp
+ ActiveDOMObject.h
+ Attr.cpp
+ Attr.h
+ Attribute.cpp
+ Attribute.h
+ Attr.idl
+ BeforeLoadEvent.h
+ BeforeLoadEvent.idl
+ BeforeTextInsertedEvent.cpp
+ BeforeTextInsertedEvent.h
+ BeforeUnloadEvent.cpp
+ BeforeUnloadEvent.h
+ CDATASection.cpp
+ CDATASection.h
+ CDATASection.idl
+ CharacterData.cpp
+ CharacterData.h
+ CharacterData.idl
+ CheckedRadioButtons.cpp
+ CheckedRadioButtons.h
+ ChildNodeList.cpp
+ ChildNodeList.h
+ ClassNames.cpp
+ ClassNames.h
+ ClassNodeList.cpp
+ ClassNodeList.h
+ ClientRect.cpp
+ ClientRect.h
+ ClientRect.idl
+ ClientRectList.cpp
+ ClientRectList.h
+ ClientRectList.idl
+ ClipboardAccessPolicy.h
+ Clipboard.cpp
+ ClipboardEvent.cpp
+ ClipboardEvent.h
+ Clipboard.h
+ Clipboard.idl
+ Comment.cpp
+ Comment.h
+ Comment.idl
+ ContainerNodeAlgorithms.h
+ ContainerNode.cpp
+ ContainerNode.h
+ CSSMappedAttributeDeclaration.cpp
+ CSSMappedAttributeDeclaration.h
+ default/
+0 PlatformMessagePortChannel.cpp
+ PlatformMessagePortChannel.h
+2 Document.cpp
+ DocumentFragment.cpp
+ DocumentFragment.h
+ DocumentFragment.idl
+ Document.h
+ Document.idl
+ DocumentMarker.h
+ DocumentType.cpp
+ DocumentType.h
+ DocumentType.idl
+ DOMCoreException.h
+ DOMCoreException.idl
+ DOMImplementation.cpp
+ DOMImplementation.h
+ DOMImplementation.idl
+ DynamicNodeList.cpp
+ DynamicNodeList.h
+ EditingText.cpp
+ EditingText.h
+ Element.cpp
+ Element.h
+ Element.idl
+ ElementRareData.h
+ Entity.cpp
+ Entity.h
+ Entity.idl
+ EntityReference.cpp
+ EntityReference.h
+ EntityReference.idl
+ ErrorEvent.cpp
+ ErrorEvent.h
+ ErrorEvent.idl
+ Event.cpp
+ EventException.h
+ EventException.idl
+ Event.h
+ Event.idl
+ EventListener.h
+ EventListener.idl
+ EventNames.cpp
+ EventNames.h
+ EventTarget.cpp
+ EventTarget.h
+ EventTarget.idl
+ ExceptionBase.cpp
+ ExceptionBase.h
+ ExceptionCode.cpp
+ ExceptionCode.h
+ InputElement.cpp
+ InputElement.h
+ KeyboardEvent.cpp
+ KeyboardEvent.h
+ KeyboardEvent.idl
+ make_names.pl
+ MappedAttribute.cpp
+ MappedAttributeEntry.h
+ MappedAttribute.h
+ MessageChannel.cpp
+ MessageChannel.h
+ MessageChannel.idl
+ MessageEvent.cpp
+ MessageEvent.h
+ MessageEvent.idl
+ MessagePortChannel.cpp
+ MessagePortChannel.h
+ MessagePort.cpp
+ MessagePort.h
+ MessagePort.idl
+ MouseEvent.cpp
+ MouseEvent.h
+ MouseEvent.idl
+ MouseRelatedEvent.cpp
+ MouseRelatedEvent.h
+ MutationEvent.cpp
+ MutationEvent.h
+ MutationEvent.idl
+ NamedAttrMap.cpp
+ NamedAttrMap.h
+ NamedMappedAttrMap.cpp
+ NamedMappedAttrMap.h
+ NamedNodeMap.h
+ NamedNodeMap.idl
+ NameNodeList.cpp
+ NameNodeList.h
+ Node.cpp
+ NodeFilterCondition.cpp
+ NodeFilterCondition.h
+ NodeFilter.cpp
+ NodeFilter.h
+ NodeFilter.idl
+ Node.h
+ Node.idl
+ NodeIterator.cpp
+ NodeIterator.h
+ NodeIterator.idl
+ NodeList.h
+ NodeList.idl
+ NodeRareData.h
+ NodeRenderStyle.h
+ NodeWithIndex.h
+ Notation.cpp
+ Notation.h
+ Notation.idl
+ OptionElement.cpp
+ OptionElement.h
+ OptionGroupElement.cpp
+ OptionGroupElement.h
+ OverflowEvent.cpp
+ OverflowEvent.h
+ OverflowEvent.idl
+ PageTransitionEvent.cpp
+ PageTransitionEvent.h
+ PageTransitionEvent.idl
+ Position.cpp
+ PositionCreationFunctions.h
+ Position.h
+ PositionIterator.cpp
+ PositionIterator.h
+ ProcessingInstruction.cpp
+ ProcessingInstruction.h
+ ProcessingInstruction.idl
+ ProgressEvent.cpp
+ ProgressEvent.h
+ ProgressEvent.idl
+ QualifiedName.cpp
+ QualifiedName.h
+ RangeBoundaryPoint.h
+ Range.cpp
+ RangeException.h
+ RangeException.idl
+ Range.h
+ Range.idl
+ RegisteredEventListener.cpp
+ RegisteredEventListener.h
+ ScriptElement.cpp
+ ScriptElement.h
+ ScriptExecutionContext.cpp
+ ScriptExecutionContext.h
+ SelectElement.cpp
+ SelectElement.h
+ SelectorNodeList.cpp
+ SelectorNodeList.h
+ StaticNodeList.cpp
+ StaticNodeList.h
+ StyledElement.cpp
+ StyledElement.h
+ StyleElement.cpp
+ StyleElement.h
+ TagNodeList.cpp
+ TagNodeList.h
+ Text.cpp
+ TextEvent.cpp
+ TextEvent.h
+ TextEvent.idl
+ Text.h
+ Text.idl
+ Tokenizer.h
+ TransformSource.h
+ TransformSourceLibxslt.cpp
+ TransformSourceQt.cpp
+ Traversal.cpp
+ Traversal.h
+ TreeWalker.cpp
+ TreeWalker.h
+ TreeWalker.idl
+ UIEvent.cpp
+ UIEvent.h
+ UIEvent.idl
+ UIEventWithKeyState.cpp
+ UIEventWithKeyState.h
+ WebKitAnimationEvent.cpp
+ WebKitAnimationEvent.h
+ WebKitAnimationEvent.idl
+ WebKitTransitionEvent.cpp
+ WebKitTransitionEvent.h
+ WebKitTransitionEvent.idl
+ WheelEvent.cpp
+ WheelEvent.h
+ WheelEvent.idl
+ XMLTokenizer.cpp
+ XMLTokenizer.h
+ XMLTokenizerLibxml2.cpp
+ XMLTokenizerQt.cpp
+ XMLTokenizerScope.cpp
+ XMLTokenizerScope.h
+2 editing/
+0 android/
+0 EditorAndroid.cpp
+2 AppendNodeCommand.cpp
+ AppendNodeCommand.h
+ ApplyStyleCommand.cpp
+ ApplyStyleCommand.h
+ BreakBlockquoteCommand.cpp
+ BreakBlockquoteCommand.h
+ chromium/
+0 EditorChromium.cpp
+2 CompositeEditCommand.cpp
+ CompositeEditCommand.h
+ CreateLinkCommand.cpp
+ CreateLinkCommand.h
+ DeleteButtonController.cpp
+ DeleteButtonController.h
+ DeleteButton.cpp
+ DeleteButton.h
+ DeleteFromTextNodeCommand.cpp
+ DeleteFromTextNodeCommand.h
+ DeleteSelectionCommand.cpp
+ DeleteSelectionCommand.h
+ EditAction.h
+ EditCommand.cpp
+ EditCommand.h
+ EditorCommand.cpp
+ Editor.cpp
+ EditorDeleteAction.h
+ Editor.h
+ EditorInsertAction.h
+ FormatBlockCommand.cpp
+ FormatBlockCommand.h
+ gtk/
+0 SelectionControllerGtk.cpp
+2 htmlediting.cpp
+ htmlediting.h
+ HTMLInterchange.cpp
+ HTMLInterchange.h
+ IndentOutdentCommand.cpp
+ IndentOutdentCommand.h
+ InsertIntoTextNodeCommand.cpp
+ InsertIntoTextNodeCommand.h
+ InsertLineBreakCommand.cpp
+ InsertLineBreakCommand.h
+ InsertListCommand.cpp
+ InsertListCommand.h
+ InsertNodeBeforeCommand.cpp
+ InsertNodeBeforeCommand.h
+ InsertParagraphSeparatorCommand.cpp
+ InsertParagraphSeparatorCommand.h
+ InsertTextCommand.cpp
+ InsertTextCommand.h
+ JoinTextNodesCommand.cpp
+ JoinTextNodesCommand.h
+ markup.cpp
+ markup.h
+ MergeIdenticalElementsCommand.cpp
+ MergeIdenticalElementsCommand.h
+ ModifySelectionListLevel.cpp
+ ModifySelectionListLevel.h
+ MoveSelectionCommand.cpp
+ MoveSelectionCommand.h
+ qt/
+0 EditorQt.cpp
+2 RemoveCSSPropertyCommand.cpp
+ RemoveCSSPropertyCommand.h
+ RemoveFormatCommand.cpp
+ RemoveFormatCommand.h
+ RemoveNodeCommand.cpp
+ RemoveNodeCommand.h
+ RemoveNodePreservingChildrenCommand.cpp
+ RemoveNodePreservingChildrenCommand.h
+ ReplaceNodeWithSpanCommand.cpp
+ ReplaceNodeWithSpanCommand.h
+ ReplaceSelectionCommand.cpp
+ ReplaceSelectionCommand.h
+ SelectionController.cpp
+ SelectionController.h
+ SetNodeAttributeCommand.cpp
+ SetNodeAttributeCommand.h
+ SmartReplaceCF.cpp
+ SmartReplace.cpp
+ SmartReplace.h
+ SmartReplaceICU.cpp
+ SplitElementCommand.cpp
+ SplitElementCommand.h
+ SplitTextNodeCommand.cpp
+ SplitTextNodeCommand.h
+ SplitTextNodeContainingElementCommand.cpp
+ SplitTextNodeContainingElementCommand.h
+ TextAffinity.h
+ TextGranularity.h
+ TextIterator.cpp
+ TextIterator.h
+ TypingCommand.cpp
+ TypingCommand.h
+ UnlinkCommand.cpp
+ UnlinkCommand.h
+ VisiblePosition.cpp
+ VisiblePosition.h
+ VisibleSelection.cpp
+ VisibleSelection.h
+ visible_units.cpp
+ visible_units.h
+ WrapContentsInDummySpanCommand.cpp
+ WrapContentsInDummySpanCommand.h
+2 ForwardingHeaders/
+0 debugger/
+0 DebuggerActivation.h
+ DebuggerCallFrame.h
+ Debugger.h
+2 interpreter/
+0 CallFrame.h
+ Interpreter.h
+2 jit/
+0 JITCode.h
+2 masm/
+0 X86Assembler.h
+2 parser/
+0 SourceCode.h
+ SourceProvider.h
+2 pcre/
+0 pcre.h
+2 profiler/
+0 Profile.h
+ ProfileNode.h
+ Profiler.h
+2 runtime/
+0 ArgList.h
+ ArrayPrototype.h
+ BooleanObject.h
+ CallData.h
+ Collector.h
+ Completion.h
+ ConstructData.h
+ DateInstance.h
+ Error.h
+ ExceptionHelpers.h
+ FunctionConstructor.h
+ FunctionPrototype.h
+ Identifier.h
+ InitializeThreading.h
+ InternalFunction.h
+ JSAPIValueWrapper.h
+ JSArray.h
+ JSByteArray.h
+ JSCell.h
+ JSFunction.h
+ JSGlobalData.h
+ JSGlobalObject.h
+ JSLock.h
+ JSNumberCell.h
+ JSObject.h
+ JSString.h
+ JSValue.h
+ Lookup.h
+ ObjectPrototype.h
+ Operations.h
+ PropertyMap.h
+ PropertyNameArray.h
+ Protect.h
+ PrototypeFunction.h
+ StringObject.h
+ StringObjectThatMasqueradesAsUndefined.h
+ StringPrototype.h
+ StructureChain.h
+ Structure.h
+ SymbolTable.h
+ UString.h
+2 wrec/
+0 WREC.h
+2 wtf/
+0 AlwaysInline.h
+ ASCIICType.h
+ Assertions.h
+ ByteArray.h
+ CrossThreadRefCounted.h
+ CurrentTime.h
+ DateInstanceCache.h
+ DateMath.h
+ Deque.h
+ DisallowCType.h
+ dtoa.h
+ FastAllocBase.h
+ FastMalloc.h
+ Forward.h
+ GetPtr.h
+ HashCountedSet.h
+ HashFunctions.h
+ HashMap.h
+ HashSet.h
+ HashTable.h
+ HashTraits.h
+ ListHashSet.h
+ ListRefPtr.h
+ Locker.h
+ MainThread.h
+ MathExtras.h
+ MessageQueue.h
+ Noncopyable.h
+ NotFound.h
+ OwnArrayPtr.h
+ OwnFastMallocPtr.h
+ OwnPtrCommon.h
+ OwnPtr.h
+ PassOwnPtr.h
+ PassRefPtr.h
+ Platform.h
+ PossiblyNull.h
+ PtrAndFlags.h
+ RandomNumber.h
+ RefCounted.h
+ RefCountedLeakCounter.h
+ RefPtr.h
+ RetainPtr.h
+ StdLibExtras.h
+ StringExtras.h
+ Threading.h
+ ThreadSpecific.h
+ TypeTraits.h
+ unicode/
+0 Collator.h
+ icu/
+0 UnicodeIcu.h
+2 Unicode.h
+ UTF8.h
+2 UnusedParam.h
+ Vector.h
+ VectorTraits.h
+ VMTags.h
+3 generated/
+0 ArrayPrototype.lut.h
+ chartables.c
+ ColorData.c
+ CSSGrammar.cpp
+ CSSGrammar.h
+ CSSPropertyNames.cpp
+ CSSPropertyNames.h
+ CSSValueKeywords.c
+ CSSValueKeywords.h
+ DatePrototype.lut.h
+ DocTypeStrings.cpp
+ Grammar.cpp
+ Grammar.h
+ HTMLElementFactory.cpp
+ HTMLElementFactory.h
+ HTMLEntityNames.c
+ HTMLNames.cpp
+ HTMLNames.h
+ JSAbstractWorker.cpp
+ JSAbstractWorker.h
+ JSAttr.cpp
+ JSAttr.h
+ JSBarInfo.cpp
+ JSBarInfo.h
+ JSBeforeLoadEvent.cpp
+ JSBeforeLoadEvent.h
+ JSCanvasArrayBuffer.cpp
+ JSCanvasArrayBuffer.h
+ JSCanvasArray.cpp
+ JSCanvasArray.h
+ JSCanvasByteArray.cpp
+ JSCanvasByteArray.h
+ JSCanvasFloatArray.cpp
+ JSCanvasFloatArray.h
+ JSCanvasGradient.cpp
+ JSCanvasGradient.h
+ JSCanvasIntArray.cpp
+ JSCanvasIntArray.h
+ JSCanvasPattern.cpp
+ JSCanvasPattern.h
+ JSCanvasRenderingContext2D.cpp
+ JSCanvasRenderingContext2D.h
+ JSCanvasRenderingContext3D.cpp
+ JSCanvasRenderingContext3D.h
+ JSCanvasRenderingContext.cpp
+ JSCanvasRenderingContext.h
+ JSCanvasShortArray.cpp
+ JSCanvasShortArray.h
+ JSCanvasUnsignedByteArray.cpp
+ JSCanvasUnsignedByteArray.h
+ JSCanvasUnsignedIntArray.cpp
+ JSCanvasUnsignedIntArray.h
+ JSCanvasUnsignedShortArray.cpp
+ JSCanvasUnsignedShortArray.h
+ JSCDATASection.cpp
+ JSCDATASection.h
+ JSCharacterData.cpp
+ JSCharacterData.h
+ JSClientRect.cpp
+ JSClientRect.h
+ JSClientRectList.cpp
+ JSClientRectList.h
+ JSClipboard.cpp
+ JSClipboard.h
+ JSComment.cpp
+ JSComment.h
+ JSConsole.cpp
+ JSConsole.h
+ JSCoordinates.cpp
+ JSCoordinates.h
+ JSCounter.cpp
+ JSCounter.h
+ JSCSSCharsetRule.cpp
+ JSCSSCharsetRule.h
+ JSCSSFontFaceRule.cpp
+ JSCSSFontFaceRule.h
+ JSCSSImportRule.cpp
+ JSCSSImportRule.h
+ JSCSSMediaRule.cpp
+ JSCSSMediaRule.h
+ JSCSSPageRule.cpp
+ JSCSSPageRule.h
+ JSCSSPrimitiveValue.cpp
+ JSCSSPrimitiveValue.h
+ JSCSSRule.cpp
+ JSCSSRule.h
+ JSCSSRuleList.cpp
+ JSCSSRuleList.h
+ JSCSSStyleDeclaration.cpp
+ JSCSSStyleDeclaration.h
+ JSCSSStyleRule.cpp
+ JSCSSStyleRule.h
+ JSCSSStyleSheet.cpp
+ JSCSSStyleSheet.h
+ JSCSSValue.cpp
+ JSCSSValue.h
+ JSCSSValueList.cpp
+ JSCSSValueList.h
+ JSCSSVariablesDeclaration.cpp
+ JSCSSVariablesDeclaration.h
+ JSCSSVariablesRule.cpp
+ JSCSSVariablesRule.h
+ JSDatabase.cpp
+ JSDatabase.h
+ JSDataGridColumn.cpp
+ JSDataGridColumn.h
+ JSDataGridColumnList.cpp
+ JSDataGridColumnList.h
+ JSDedicatedWorkerContext.cpp
+ JSDedicatedWorkerContext.h
+ JSDocument.cpp
+ JSDocumentFragment.cpp
+ JSDocumentFragment.h
+ JSDocument.h
+ JSDocumentType.cpp
+ JSDocumentType.h
+ JSDOMApplicationCache.cpp
+ JSDOMApplicationCache.h
+ JSDOMCoreException.cpp
+ JSDOMCoreException.h
+ JSDOMImplementation.cpp
+ JSDOMImplementation.h
+ JSDOMParser.cpp
+ JSDOMParser.h
+ JSDOMSelection.cpp
+ JSDOMSelection.h
+ JSDOMWindowBase.lut.h
+ JSDOMWindow.cpp
+ JSDOMWindow.h
+ JSElement.cpp
+ JSElement.h
+ JSEntity.cpp
+ JSEntity.h
+ JSEntityReference.cpp
+ JSEntityReference.h
+ JSErrorEvent.cpp
+ JSErrorEvent.h
+ JSEvent.cpp
+ JSEventException.cpp
+ JSEventException.h
+ JSEvent.h
+ JSEventSource.cpp
+ JSEventSource.h
+ JSFile.cpp
+ JSFile.h
+ JSFileList.cpp
+ JSFileList.h
+ JSGeolocation.cpp
+ JSGeolocation.h
+ JSGeoposition.cpp
+ JSGeoposition.h
+ JSHistory.cpp
+ JSHistory.h
+ JSHTMLAllCollection.cpp
+ JSHTMLAllCollection.h
+ JSHTMLAnchorElement.cpp
+ JSHTMLAnchorElement.h
+ JSHTMLAppletElement.cpp
+ JSHTMLAppletElement.h
+ JSHTMLAreaElement.cpp
+ JSHTMLAreaElement.h
+ JSHTMLAudioElement.cpp
+ JSHTMLAudioElement.h
+ JSHTMLBaseElement.cpp
+ JSHTMLBaseElement.h
+ JSHTMLBaseFontElement.cpp
+ JSHTMLBaseFontElement.h
+ JSHTMLBlockquoteElement.cpp
+ JSHTMLBlockquoteElement.h
+ JSHTMLBodyElement.cpp
+ JSHTMLBodyElement.h
+ JSHTMLBRElement.cpp
+ JSHTMLBRElement.h
+ JSHTMLButtonElement.cpp
+ JSHTMLButtonElement.h
+ JSHTMLCanvasElement.cpp
+ JSHTMLCanvasElement.h
+ JSHTMLCollection.cpp
+ JSHTMLCollection.h
+ JSHTMLDataGridCellElement.cpp
+ JSHTMLDataGridCellElement.h
+ JSHTMLDataGridColElement.cpp
+ JSHTMLDataGridColElement.h
+ JSHTMLDataGridElement.cpp
+ JSHTMLDataGridElement.h
+ JSHTMLDataGridRowElement.cpp
+ JSHTMLDataGridRowElement.h
+ JSHTMLDataListElement.cpp
+ JSHTMLDataListElement.h
+ JSHTMLDirectoryElement.cpp
+ JSHTMLDirectoryElement.h
+ JSHTMLDivElement.cpp
+ JSHTMLDivElement.h
+ JSHTMLDListElement.cpp
+ JSHTMLDListElement.h
+ JSHTMLDocument.cpp
+ JSHTMLDocument.h
+ JSHTMLElement.cpp
+ JSHTMLElement.h
+ JSHTMLElementWrapperFactory.cpp
+ JSHTMLElementWrapperFactory.h
+ JSHTMLEmbedElement.cpp
+ JSHTMLEmbedElement.h
+ JSHTMLFieldSetElement.cpp
+ JSHTMLFieldSetElement.h
+ JSHTMLFontElement.cpp
+ JSHTMLFontElement.h
+ JSHTMLFormElement.cpp
+ JSHTMLFormElement.h
+ JSHTMLFrameElement.cpp
+ JSHTMLFrameElement.h
+ JSHTMLFrameSetElement.cpp
+ JSHTMLFrameSetElement.h
+ JSHTMLHeadElement.cpp
+ JSHTMLHeadElement.h
+ JSHTMLHeadingElement.cpp
+ JSHTMLHeadingElement.h
+ JSHTMLHRElement.cpp
+ JSHTMLHRElement.h
+ JSHTMLHtmlElement.cpp
+ JSHTMLHtmlElement.h
+ JSHTMLIFrameElement.cpp
+ JSHTMLIFrameElement.h
+ JSHTMLImageElement.cpp
+ JSHTMLImageElement.h
+ JSHTMLInputElement.cpp
+ JSHTMLInputElement.h
+ JSHTMLIsIndexElement.cpp
+ JSHTMLIsIndexElement.h
+ JSHTMLLabelElement.cpp
+ JSHTMLLabelElement.h
+ JSHTMLLegendElement.cpp
+ JSHTMLLegendElement.h
+ JSHTMLLIElement.cpp
+ JSHTMLLIElement.h
+ JSHTMLLinkElement.cpp
+ JSHTMLLinkElement.h
+ JSHTMLMapElement.cpp
+ JSHTMLMapElement.h
+ JSHTMLMarqueeElement.cpp
+ JSHTMLMarqueeElement.h
+ JSHTMLMediaElement.cpp
+ JSHTMLMediaElement.h
+ JSHTMLMenuElement.cpp
+ JSHTMLMenuElement.h
+ JSHTMLMetaElement.cpp
+ JSHTMLMetaElement.h
+ JSHTMLModElement.cpp
+ JSHTMLModElement.h
+ JSHTMLObjectElement.cpp
+ JSHTMLObjectElement.h
+ JSHTMLOListElement.cpp
+ JSHTMLOListElement.h
+ JSHTMLOptGroupElement.cpp
+ JSHTMLOptGroupElement.h
+ JSHTMLOptionElement.cpp
+ JSHTMLOptionElement.h
+ JSHTMLOptionsCollection.cpp
+ JSHTMLOptionsCollection.h
+ JSHTMLParagraphElement.cpp
+ JSHTMLParagraphElement.h
+ JSHTMLParamElement.cpp
+ JSHTMLParamElement.h
+ JSHTMLPreElement.cpp
+ JSHTMLPreElement.h
+ JSHTMLQuoteElement.cpp
+ JSHTMLQuoteElement.h
+ JSHTMLScriptElement.cpp
+ JSHTMLScriptElement.h
+ JSHTMLSelectElement.cpp
+ JSHTMLSelectElement.h
+ JSHTMLSourceElement.cpp
+ JSHTMLSourceElement.h
+ JSHTMLStyleElement.cpp
+ JSHTMLStyleElement.h
+ JSHTMLTableCaptionElement.cpp
+ JSHTMLTableCaptionElement.h
+ JSHTMLTableCellElement.cpp
+ JSHTMLTableCellElement.h
+ JSHTMLTableColElement.cpp
+ JSHTMLTableColElement.h
+ JSHTMLTableElement.cpp
+ JSHTMLTableElement.h
+ JSHTMLTableRowElement.cpp
+ JSHTMLTableRowElement.h
+ JSHTMLTableSectionElement.cpp
+ JSHTMLTableSectionElement.h
+ JSHTMLTextAreaElement.cpp
+ JSHTMLTextAreaElement.h
+ JSHTMLTitleElement.cpp
+ JSHTMLTitleElement.h
+ JSHTMLUListElement.cpp
+ JSHTMLUListElement.h
+ JSHTMLVideoElement.cpp
+ JSHTMLVideoElement.h
+ JSImageData.cpp
+ JSImageData.h
+ JSInspectorBackend.cpp
+ JSInspectorBackend.h
+ JSJavaScriptCallFrame.cpp
+ JSJavaScriptCallFrame.h
+ JSKeyboardEvent.cpp
+ JSKeyboardEvent.h
+ JSLocation.cpp
+ JSLocation.h
+ JSMedia.cpp
+ JSMediaError.cpp
+ JSMediaError.h
+ JSMedia.h
+ JSMediaList.cpp
+ JSMediaList.h
+ JSMessageChannel.cpp
+ JSMessageChannel.h
+ JSMessageEvent.cpp
+ JSMessageEvent.h
+ JSMessagePort.cpp
+ JSMessagePort.h
+ JSMimeTypeArray.cpp
+ JSMimeTypeArray.h
+ JSMimeType.cpp
+ JSMimeType.h
+ JSMouseEvent.cpp
+ JSMouseEvent.h
+ JSMutationEvent.cpp
+ JSMutationEvent.h
+ JSNamedNodeMap.cpp
+ JSNamedNodeMap.h
+ JSNavigator.cpp
+ JSNavigator.h
+ JSNode.cpp
+ JSNodeFilter.cpp
+ JSNodeFilter.h
+ JSNode.h
+ JSNodeIterator.cpp
+ JSNodeIterator.h
+ JSNodeList.cpp
+ JSNodeList.h
+ JSNotation.cpp
+ JSNotation.h
+ JSONObject.lut.h
+ JSOverflowEvent.cpp
+ JSOverflowEvent.h
+ JSPageTransitionEvent.cpp
+ JSPageTransitionEvent.h
+ JSPluginArray.cpp
+ JSPluginArray.h
+ JSPlugin.cpp
+ JSPlugin.h
+ JSPositionError.cpp
+ JSPositionError.h
+ JSProcessingInstruction.cpp
+ JSProcessingInstruction.h
+ JSProgressEvent.cpp
+ JSProgressEvent.h
+ JSRange.cpp
+ JSRangeException.cpp
+ JSRangeException.h
+ JSRange.h
+ JSRect.cpp
+ JSRect.h
+ JSRGBColor.cpp
+ JSRGBColor.h
+ JSScreen.cpp
+ JSScreen.h
+ JSSharedWorkerContext.cpp
+ JSSharedWorkerContext.h
+ JSSharedWorker.cpp
+ JSSharedWorker.h
+ JSSQLError.cpp
+ JSSQLError.h
+ JSSQLResultSet.cpp
+ JSSQLResultSet.h
+ JSSQLResultSetRowList.cpp
+ JSSQLResultSetRowList.h
+ JSSQLTransaction.cpp
+ JSSQLTransaction.h
+ JSStorage.cpp
+ JSStorageEvent.cpp
+ JSStorageEvent.h
+ JSStorage.h
+ JSStyleSheet.cpp
+ JSStyleSheet.h
+ JSStyleSheetList.cpp
+ JSStyleSheetList.h
+ JSSVGAElement.cpp
+ JSSVGAElement.h
+ JSSVGAltGlyphElement.cpp
+ JSSVGAltGlyphElement.h
+ JSSVGAngle.cpp
+ JSSVGAngle.h
+ JSSVGAnimateColorElement.cpp
+ JSSVGAnimateColorElement.h
+ JSSVGAnimatedAngle.cpp
+ JSSVGAnimatedAngle.h
+ JSSVGAnimatedBoolean.cpp
+ JSSVGAnimatedBoolean.h
+ JSSVGAnimatedEnumeration.cpp
+ JSSVGAnimatedEnumeration.h
+ JSSVGAnimatedInteger.cpp
+ JSSVGAnimatedInteger.h
+ JSSVGAnimatedLength.cpp
+ JSSVGAnimatedLength.h
+ JSSVGAnimatedLengthList.cpp
+ JSSVGAnimatedLengthList.h
+ JSSVGAnimatedNumber.cpp
+ JSSVGAnimatedNumber.h
+ JSSVGAnimatedNumberList.cpp
+ JSSVGAnimatedNumberList.h
+ JSSVGAnimatedPreserveAspectRatio.cpp
+ JSSVGAnimatedPreserveAspectRatio.h
+ JSSVGAnimatedRect.cpp
+ JSSVGAnimatedRect.h
+ JSSVGAnimatedString.cpp
+ JSSVGAnimatedString.h
+ JSSVGAnimatedTransformList.cpp
+ JSSVGAnimatedTransformList.h
+ JSSVGAnimateElement.cpp
+ JSSVGAnimateElement.h
+ JSSVGAnimateTransformElement.cpp
+ JSSVGAnimateTransformElement.h
+ JSSVGAnimationElement.cpp
+ JSSVGAnimationElement.h
+ JSSVGCircleElement.cpp
+ JSSVGCircleElement.h
+ JSSVGClipPathElement.cpp
+ JSSVGClipPathElement.h
+ JSSVGColor.cpp
+ JSSVGColor.h
+ JSSVGComponentTransferFunctionElement.cpp
+ JSSVGComponentTransferFunctionElement.h
+ JSSVGCursorElement.cpp
+ JSSVGCursorElement.h
+ JSSVGDefsElement.cpp
+ JSSVGDefsElement.h
+ JSSVGDescElement.cpp
+ JSSVGDescElement.h
+ JSSVGDocument.cpp
+ JSSVGDocument.h
+ JSSVGElement.cpp
+ JSSVGElement.h
+ JSSVGElementInstance.cpp
+ JSSVGElementInstance.h
+ JSSVGElementInstanceList.cpp
+ JSSVGElementInstanceList.h
+ JSSVGElementWrapperFactory.cpp
+ JSSVGElementWrapperFactory.h
+ JSSVGEllipseElement.cpp
+ JSSVGEllipseElement.h
+ JSSVGException.cpp
+ JSSVGException.h
+ JSSVGFEBlendElement.cpp
+ JSSVGFEBlendElement.h
+ JSSVGFEColorMatrixElement.cpp
+ JSSVGFEColorMatrixElement.h
+ JSSVGFEComponentTransferElement.cpp
+ JSSVGFEComponentTransferElement.h
+ JSSVGFECompositeElement.cpp
+ JSSVGFECompositeElement.h
+ JSSVGFEDiffuseLightingElement.cpp
+ JSSVGFEDiffuseLightingElement.h
+ JSSVGFEDisplacementMapElement.cpp
+ JSSVGFEDisplacementMapElement.h
+ JSSVGFEDistantLightElement.cpp
+ JSSVGFEDistantLightElement.h
+ JSSVGFEFloodElement.cpp
+ JSSVGFEFloodElement.h
+ JSSVGFEFuncAElement.cpp
+ JSSVGFEFuncAElement.h
+ JSSVGFEFuncBElement.cpp
+ JSSVGFEFuncBElement.h
+ JSSVGFEFuncGElement.cpp
+ JSSVGFEFuncGElement.h
+ JSSVGFEFuncRElement.cpp
+ JSSVGFEFuncRElement.h
+ JSSVGFEGaussianBlurElement.cpp
+ JSSVGFEGaussianBlurElement.h
+ JSSVGFEImageElement.cpp
+ JSSVGFEImageElement.h
+ JSSVGFEMergeElement.cpp
+ JSSVGFEMergeElement.h
+ JSSVGFEMergeNodeElement.cpp
+ JSSVGFEMergeNodeElement.h
+ JSSVGFEMorphologyElement.cpp
+ JSSVGFEMorphologyElement.h
+ JSSVGFEOffsetElement.cpp
+ JSSVGFEOffsetElement.h
+ JSSVGFEPointLightElement.cpp
+ JSSVGFEPointLightElement.h
+ JSSVGFESpecularLightingElement.cpp
+ JSSVGFESpecularLightingElement.h
+ JSSVGFESpotLightElement.cpp
+ JSSVGFESpotLightElement.h
+ JSSVGFETileElement.cpp
+ JSSVGFETileElement.h
+ JSSVGFETurbulenceElement.cpp
+ JSSVGFETurbulenceElement.h
+ JSSVGFilterElement.cpp
+ JSSVGFilterElement.h
+ JSSVGFontElement.cpp
+ JSSVGFontElement.h
+ JSSVGFontFaceElement.cpp
+ JSSVGFontFaceElement.h
+ JSSVGFontFaceFormatElement.cpp
+ JSSVGFontFaceFormatElement.h
+ JSSVGFontFaceNameElement.cpp
+ JSSVGFontFaceNameElement.h
+ JSSVGFontFaceSrcElement.cpp
+ JSSVGFontFaceSrcElement.h
+ JSSVGFontFaceUriElement.cpp
+ JSSVGFontFaceUriElement.h
+ JSSVGForeignObjectElement.cpp
+ JSSVGForeignObjectElement.h
+ JSSVGGElement.cpp
+ JSSVGGElement.h
+ JSSVGGlyphElement.cpp
+ JSSVGGlyphElement.h
+ JSSVGGradientElement.cpp
+ JSSVGGradientElement.h
+ JSSVGHKernElement.cpp
+ JSSVGHKernElement.h
+ JSSVGImageElement.cpp
+ JSSVGImageElement.h
+ JSSVGLength.cpp
+ JSSVGLength.h
+ JSSVGLengthList.cpp
+ JSSVGLengthList.h
+ JSSVGLinearGradientElement.cpp
+ JSSVGLinearGradientElement.h
+ JSSVGLineElement.cpp
+ JSSVGLineElement.h
+ JSSVGMarkerElement.cpp
+ JSSVGMarkerElement.h
+ JSSVGMaskElement.cpp
+ JSSVGMaskElement.h
+ JSSVGMatrix.cpp
+ JSSVGMatrix.h
+ JSSVGMetadataElement.cpp
+ JSSVGMetadataElement.h
+ JSSVGMissingGlyphElement.cpp
+ JSSVGMissingGlyphElement.h
+ JSSVGNumber.cpp
+ JSSVGNumber.h
+ JSSVGNumberList.cpp
+ JSSVGNumberList.h
+ JSSVGPaint.cpp
+ JSSVGPaint.h
+ JSSVGPathElement.cpp
+ JSSVGPathElement.h
+ JSSVGPathSegArcAbs.cpp
+ JSSVGPathSegArcAbs.h
+ JSSVGPathSegArcRel.cpp
+ JSSVGPathSegArcRel.h
+ JSSVGPathSegClosePath.cpp
+ JSSVGPathSegClosePath.h
+ JSSVGPathSeg.cpp
+ JSSVGPathSegCurvetoCubicAbs.cpp
+ JSSVGPathSegCurvetoCubicAbs.h
+ JSSVGPathSegCurvetoCubicRel.cpp
+ JSSVGPathSegCurvetoCubicRel.h
+ JSSVGPathSegCurvetoCubicSmoothAbs.cpp
+ JSSVGPathSegCurvetoCubicSmoothAbs.h
+ JSSVGPathSegCurvetoCubicSmoothRel.cpp
+ JSSVGPathSegCurvetoCubicSmoothRel.h
+ JSSVGPathSegCurvetoQuadraticAbs.cpp
+ JSSVGPathSegCurvetoQuadraticAbs.h
+ JSSVGPathSegCurvetoQuadraticRel.cpp
+ JSSVGPathSegCurvetoQuadraticRel.h
+ JSSVGPathSegCurvetoQuadraticSmoothAbs.cpp
+ JSSVGPathSegCurvetoQuadraticSmoothAbs.h
+ JSSVGPathSegCurvetoQuadraticSmoothRel.cpp
+ JSSVGPathSegCurvetoQuadraticSmoothRel.h
+ JSSVGPathSeg.h
+ JSSVGPathSegLinetoAbs.cpp
+ JSSVGPathSegLinetoAbs.h
+ JSSVGPathSegLinetoHorizontalAbs.cpp
+ JSSVGPathSegLinetoHorizontalAbs.h
+ JSSVGPathSegLinetoHorizontalRel.cpp
+ JSSVGPathSegLinetoHorizontalRel.h
+ JSSVGPathSegLinetoRel.cpp
+ JSSVGPathSegLinetoRel.h
+ JSSVGPathSegLinetoVerticalAbs.cpp
+ JSSVGPathSegLinetoVerticalAbs.h
+ JSSVGPathSegLinetoVerticalRel.cpp
+ JSSVGPathSegLinetoVerticalRel.h
+ JSSVGPathSegList.cpp
+ JSSVGPathSegList.h
+ JSSVGPathSegMovetoAbs.cpp
+ JSSVGPathSegMovetoAbs.h
+ JSSVGPathSegMovetoRel.cpp
+ JSSVGPathSegMovetoRel.h
+ JSSVGPatternElement.cpp
+ JSSVGPatternElement.h
+ JSSVGPoint.cpp
+ JSSVGPoint.h
+ JSSVGPointList.cpp
+ JSSVGPointList.h
+ JSSVGPolygonElement.cpp
+ JSSVGPolygonElement.h
+ JSSVGPolylineElement.cpp
+ JSSVGPolylineElement.h
+ JSSVGPreserveAspectRatio.cpp
+ JSSVGPreserveAspectRatio.h
+ JSSVGRadialGradientElement.cpp
+ JSSVGRadialGradientElement.h
+ JSSVGRect.cpp
+ JSSVGRectElement.cpp
+ JSSVGRectElement.h
+ JSSVGRect.h
+ JSSVGRenderingIntent.cpp
+ JSSVGRenderingIntent.h
+ JSSVGScriptElement.cpp
+ JSSVGScriptElement.h
+ JSSVGSetElement.cpp
+ JSSVGSetElement.h
+ JSSVGStopElement.cpp
+ JSSVGStopElement.h
+ JSSVGStringList.cpp
+ JSSVGStringList.h
+ JSSVGStyleElement.cpp
+ JSSVGStyleElement.h
+ JSSVGSVGElement.cpp
+ JSSVGSVGElement.h
+ JSSVGSwitchElement.cpp
+ JSSVGSwitchElement.h
+ JSSVGSymbolElement.cpp
+ JSSVGSymbolElement.h
+ JSSVGTextContentElement.cpp
+ JSSVGTextContentElement.h
+ JSSVGTextElement.cpp
+ JSSVGTextElement.h
+ JSSVGTextPathElement.cpp
+ JSSVGTextPathElement.h
+ JSSVGTextPositioningElement.cpp
+ JSSVGTextPositioningElement.h
+ JSSVGTitleElement.cpp
+ JSSVGTitleElement.h
+ JSSVGTransform.cpp
+ JSSVGTransform.h
+ JSSVGTransformList.cpp
+ JSSVGTransformList.h
+ JSSVGTRefElement.cpp
+ JSSVGTRefElement.h
+ JSSVGTSpanElement.cpp
+ JSSVGTSpanElement.h
+ JSSVGUnitTypes.cpp
+ JSSVGUnitTypes.h
+ JSSVGUseElement.cpp
+ JSSVGUseElement.h
+ JSSVGViewElement.cpp
+ JSSVGViewElement.h
+ JSSVGZoomEvent.cpp
+ JSSVGZoomEvent.h
+ JSText.cpp
+ JSTextEvent.cpp
+ JSTextEvent.h
+ JSText.h
+ JSTextMetrics.cpp
+ JSTextMetrics.h
+ JSTimeRanges.cpp
+ JSTimeRanges.h
+ JSTreeWalker.cpp
+ JSTreeWalker.h
+ JSUIEvent.cpp
+ JSUIEvent.h
+ JSValidityState.cpp
+ JSValidityState.h
+ JSVoidCallback.cpp
+ JSVoidCallback.h
+ JSWebKitAnimationEvent.cpp
+ JSWebKitAnimationEvent.h
+ JSWebKitCSSKeyframeRule.cpp
+ JSWebKitCSSKeyframeRule.h
+ JSWebKitCSSKeyframesRule.cpp
+ JSWebKitCSSKeyframesRule.h
+ JSWebKitCSSMatrix.cpp
+ JSWebKitCSSMatrix.h
+ JSWebKitCSSTransformValue.cpp
+ JSWebKitCSSTransformValue.h
+ JSWebKitPoint.cpp
+ JSWebKitPoint.h
+ JSWebKitTransitionEvent.cpp
+ JSWebKitTransitionEvent.h
+ JSWebSocket.cpp
+ JSWebSocket.h
+ JSWheelEvent.cpp
+ JSWheelEvent.h
+ JSWorkerContextBase.lut.h
+ JSWorkerContext.cpp
+ JSWorkerContext.h
+ JSWorker.cpp
+ JSWorker.h
+ JSWorkerLocation.cpp
+ JSWorkerLocation.h
+ JSWorkerNavigator.cpp
+ JSWorkerNavigator.h
+ JSXMLHttpRequest.cpp
+ JSXMLHttpRequestException.cpp
+ JSXMLHttpRequestException.h
+ JSXMLHttpRequest.h
+ JSXMLHttpRequestProgressEvent.cpp
+ JSXMLHttpRequestProgressEvent.h
+ JSXMLHttpRequestUpload.cpp
+ JSXMLHttpRequestUpload.h
+ JSXMLSerializer.cpp
+ JSXMLSerializer.h
+ JSXPathEvaluator.cpp
+ JSXPathEvaluator.h
+ JSXPathException.cpp
+ JSXPathException.h
+ JSXPathExpression.cpp
+ JSXPathExpression.h
+ JSXPathNSResolver.cpp
+ JSXPathNSResolver.h
+ JSXPathResult.cpp
+ JSXPathResult.h
+ JSXSLTProcessor.cpp
+ JSXSLTProcessor.h
+ Lexer.lut.h
+ MathObject.lut.h
+ NumberConstructor.lut.h
+ RegExpConstructor.lut.h
+ RegExpObject.lut.h
+ StringPrototype.lut.h
+ SVGElementFactory.cpp
+ SVGElementFactory.h
+ SVGNames.cpp
+ SVGNames.h
+ tokenizer.cpp
+ UserAgentStyleSheetsData.cpp
+ UserAgentStyleSheets.h
+ WebKitVersion.h
+ XLinkNames.cpp
+ XLinkNames.h
+ XMLNames.cpp
+ XMLNames.h
+ XPathGrammar.cpp
+ XPathGrammar.h
+2 history/
+0 BackForwardListChromium.cpp
+ BackForwardList.cpp
+ BackForwardList.h
+ CachedFrame.cpp
+ CachedFrame.h
+ CachedFramePlatformData.h
+ CachedPage.cpp
+ CachedPage.h
+ cf/
+0 HistoryPropertyList.cpp
+ HistoryPropertyList.h
+2 HistoryItem.cpp
+ HistoryItem.h
+ PageCache.cpp
+ PageCache.h
+ qt/
+0 HistoryItemQt.cpp
+3 html/
+0 canvas/
+0 CanvasActiveInfo.h
+ CanvasActiveInfo.idl
+ CanvasArrayBuffer.cpp
+ CanvasArrayBuffer.h
+ CanvasArrayBuffer.idl
+ CanvasArray.cpp
+ CanvasArray.h
+ CanvasArray.idl
+ CanvasBuffer.cpp
+ CanvasBuffer.h
+ CanvasBuffer.idl
+ CanvasByteArray.cpp
+ CanvasByteArray.h
+ CanvasByteArray.idl
+ CanvasFloatArray.cpp
+ CanvasFloatArray.h
+ CanvasFloatArray.idl
+ CanvasFramebuffer.cpp
+ CanvasFramebuffer.h
+ CanvasFramebuffer.idl
+ CanvasGradient.cpp
+ CanvasGradient.h
+ CanvasGradient.idl
+ CanvasIntArray.cpp
+ CanvasIntArray.h
+ CanvasIntArray.idl
+ CanvasNumberArray.cpp
+ CanvasNumberArray.h
+ CanvasNumberArray.idl
+ CanvasObject.cpp
+ CanvasObject.h
+ CanvasPattern.cpp
+ CanvasPattern.h
+ CanvasPattern.idl
+ CanvasPixelArray.cpp
+ CanvasPixelArray.h
+ CanvasPixelArray.idl
+ CanvasProgram.cpp
+ CanvasProgram.h
+ CanvasProgram.idl
+ CanvasRenderbuffer.cpp
+ CanvasRenderbuffer.h
+ CanvasRenderbuffer.idl
+ CanvasRenderingContext2D.cpp
+ CanvasRenderingContext2D.h
+ CanvasRenderingContext2D.idl
+ CanvasRenderingContext3D.cpp
+ CanvasRenderingContext3D.h
+ CanvasRenderingContext3D.idl
+ CanvasRenderingContext.cpp
+ CanvasRenderingContext.h
+ CanvasRenderingContext.idl
+ CanvasShader.cpp
+ CanvasShader.h
+ CanvasShader.idl
+ CanvasShortArray.cpp
+ CanvasShortArray.h
+ CanvasShortArray.idl
+ CanvasStyle.cpp
+ CanvasStyle.h
+ CanvasTexture.cpp
+ CanvasTexture.h
+ CanvasTexture.idl
+ CanvasUnsignedByteArray.cpp
+ CanvasUnsignedByteArray.h
+ CanvasUnsignedByteArray.idl
+ CanvasUnsignedIntArray.cpp
+ CanvasUnsignedIntArray.h
+ CanvasUnsignedIntArray.idl
+ CanvasUnsignedShortArray.cpp
+ CanvasUnsignedShortArray.h
+ CanvasUnsignedShortArray.idl
+2 CollectionCache.cpp
+ CollectionCache.h
+ CollectionType.h
+ DataGridColumn.cpp
+ DataGridColumn.h
+ DataGridColumn.idl
+ DataGridColumnList.cpp
+ DataGridColumnList.h
+ DataGridColumnList.idl
+ DataGridDataSource.h
+ DocTypeStrings.gperf
+ DOMDataGridDataSource.cpp
+ DOMDataGridDataSource.h
+ File.cpp
+ File.h
+ File.idl
+ FileList.cpp
+ FileList.h
+ FileList.idl
+ FormDataList.cpp
+ FormDataList.h
+ HTMLAllCollection.cpp
+ HTMLAllCollection.h
+ HTMLAllCollection.idl
+ HTMLAnchorElement.cpp
+ HTMLAnchorElement.h
+ HTMLAnchorElement.idl
+ HTMLAppletElement.cpp
+ HTMLAppletElement.h
+ HTMLAppletElement.idl
+ HTMLAreaElement.cpp
+ HTMLAreaElement.h
+ HTMLAreaElement.idl
+ HTMLAttributeNames.in
+ HTMLAudioElement.cpp
+ HTMLAudioElement.h
+ HTMLAudioElement.idl
+ HTMLBaseElement.cpp
+ HTMLBaseElement.h
+ HTMLBaseElement.idl
+ HTMLBaseFontElement.cpp
+ HTMLBaseFontElement.h
+ HTMLBaseFontElement.idl
+ HTMLBlockquoteElement.cpp
+ HTMLBlockquoteElement.h
+ HTMLBlockquoteElement.idl
+ HTMLBodyElement.cpp
+ HTMLBodyElement.h
+ HTMLBodyElement.idl
+ HTMLBRElement.cpp
+ HTMLBRElement.h
+ HTMLBRElement.idl
+ HTMLButtonElement.cpp
+ HTMLButtonElement.h
+ HTMLButtonElement.idl
+ HTMLCanvasElement.cpp
+ HTMLCanvasElement.h
+ HTMLCanvasElement.idl
+ HTMLCollection.cpp
+ HTMLCollection.h
+ HTMLCollection.idl
+ HTMLDataGridCellElement.cpp
+ HTMLDataGridCellElement.h
+ HTMLDataGridCellElement.idl
+ HTMLDataGridColElement.cpp
+ HTMLDataGridColElement.h
+ HTMLDataGridColElement.idl
+ HTMLDataGridElement.cpp
+ HTMLDataGridElement.h
+ HTMLDataGridElement.idl
+ HTMLDataGridRowElement.cpp
+ HTMLDataGridRowElement.h
+ HTMLDataGridRowElement.idl
+ HTMLDataListElement.cpp
+ HTMLDataListElement.h
+ HTMLDataListElement.idl
+ HTMLDirectoryElement.cpp
+ HTMLDirectoryElement.h
+ HTMLDirectoryElement.idl
+ HTMLDivElement.cpp
+ HTMLDivElement.h
+ HTMLDivElement.idl
+ HTMLDListElement.cpp
+ HTMLDListElement.h
+ HTMLDListElement.idl
+ HTMLDocument.cpp
+ HTMLDocument.h
+ HTMLDocument.idl
+ HTMLElement.cpp
+ HTMLElement.h
+ HTMLElement.idl
+ HTMLElementsAllInOne.cpp
+ HTMLEmbedElement.cpp
+ HTMLEmbedElement.h
+ HTMLEmbedElement.idl
+ HTMLEntityNames.gperf
+ HTMLFieldSetElement.cpp
+ HTMLFieldSetElement.h
+ HTMLFieldSetElement.idl
+ HTMLFontElement.cpp
+ HTMLFontElement.h
+ HTMLFontElement.idl
+ HTMLFormCollection.cpp
+ HTMLFormCollection.h
+ HTMLFormControlElement.cpp
+ HTMLFormControlElement.h
+ HTMLFormElement.cpp
+ HTMLFormElement.h
+ HTMLFormElement.idl
+ HTMLFrameElementBase.cpp
+ HTMLFrameElementBase.h
+ HTMLFrameElement.cpp
+ HTMLFrameElement.h
+ HTMLFrameElement.idl
+ HTMLFrameOwnerElement.cpp
+ HTMLFrameOwnerElement.h
+ HTMLFrameSetElement.cpp
+ HTMLFrameSetElement.h
+ HTMLFrameSetElement.idl
+ HTMLHeadElement.cpp
+ HTMLHeadElement.h
+ HTMLHeadElement.idl
+ HTMLHeadingElement.cpp
+ HTMLHeadingElement.h
+ HTMLHeadingElement.idl
+ HTMLHRElement.cpp
+ HTMLHRElement.h
+ HTMLHRElement.idl
+ HTMLHtmlElement.cpp
+ HTMLHtmlElement.h
+ HTMLHtmlElement.idl
+ HTMLIFrameElement.cpp
+ HTMLIFrameElement.h
+ HTMLIFrameElement.idl
+ HTMLImageElement.cpp
+ HTMLImageElement.h
+ HTMLImageElement.idl
+ HTMLImageLoader.cpp
+ HTMLImageLoader.h
+ HTMLInputElement.cpp
+ HTMLInputElement.h
+ HTMLInputElement.idl
+ HTMLIsIndexElement.cpp
+ HTMLIsIndexElement.h
+ HTMLIsIndexElement.idl
+ HTMLKeygenElement.cpp
+ HTMLKeygenElement.h
+ HTMLLabelElement.cpp
+ HTMLLabelElement.h
+ HTMLLabelElement.idl
+ HTMLLegendElement.cpp
+ HTMLLegendElement.h
+ HTMLLegendElement.idl
+ HTMLLIElement.cpp
+ HTMLLIElement.h
+ HTMLLIElement.idl
+ HTMLLinkElement.cpp
+ HTMLLinkElement.h
+ HTMLLinkElement.idl
+ HTMLMapElement.cpp
+ HTMLMapElement.h
+ HTMLMapElement.idl
+ HTMLMarqueeElement.cpp
+ HTMLMarqueeElement.h
+ HTMLMarqueeElement.idl
+ HTMLMediaElement.cpp
+ HTMLMediaElement.h
+ HTMLMediaElement.idl
+ HTMLMenuElement.cpp
+ HTMLMenuElement.h
+ HTMLMenuElement.idl
+ HTMLMetaElement.cpp
+ HTMLMetaElement.h
+ HTMLMetaElement.idl
+ HTMLModElement.cpp
+ HTMLModElement.h
+ HTMLModElement.idl
+ HTMLNameCollection.cpp
+ HTMLNameCollection.h
+ HTMLNoScriptElement.cpp
+ HTMLNoScriptElement.h
+ HTMLObjectElement.cpp
+ HTMLObjectElement.h
+ HTMLObjectElement.idl
+ HTMLOListElement.cpp
+ HTMLOListElement.h
+ HTMLOListElement.idl
+ HTMLOptGroupElement.cpp
+ HTMLOptGroupElement.h
+ HTMLOptGroupElement.idl
+ HTMLOptionElement.cpp
+ HTMLOptionElement.h
+ HTMLOptionElement.idl
+ HTMLOptionsCollection.cpp
+ HTMLOptionsCollection.h
+ HTMLOptionsCollection.idl
+ HTMLParagraphElement.cpp
+ HTMLParagraphElement.h
+ HTMLParagraphElement.idl
+ HTMLParamElement.cpp
+ HTMLParamElement.h
+ HTMLParamElement.idl
+ HTMLParser.cpp
+ HTMLParserErrorCodes.cpp
+ HTMLParserErrorCodes.h
+ HTMLParser.h
+ HTMLParserQuirks.h
+ HTMLPlugInElement.cpp
+ HTMLPlugInElement.h
+ HTMLPlugInImageElement.cpp
+ HTMLPlugInImageElement.h
+ HTMLPreElement.cpp
+ HTMLPreElement.h
+ HTMLPreElement.idl
+ HTMLQuoteElement.cpp
+ HTMLQuoteElement.h
+ HTMLQuoteElement.idl
+ HTMLScriptElement.cpp
+ HTMLScriptElement.h
+ HTMLScriptElement.idl
+ HTMLSelectElement.cpp
+ HTMLSelectElement.h
+ HTMLSelectElement.idl
+ HTMLSourceElement.cpp
+ HTMLSourceElement.h
+ HTMLSourceElement.idl
+ HTMLStyleElement.cpp
+ HTMLStyleElement.h
+ HTMLStyleElement.idl
+ HTMLTableCaptionElement.cpp
+ HTMLTableCaptionElement.h
+ HTMLTableCaptionElement.idl
+ HTMLTableCellElement.cpp
+ HTMLTableCellElement.h
+ HTMLTableCellElement.idl
+ HTMLTableColElement.cpp
+ HTMLTableColElement.h
+ HTMLTableColElement.idl
+ HTMLTableElement.cpp
+ HTMLTableElement.h
+ HTMLTableElement.idl
+ HTMLTablePartElement.cpp
+ HTMLTablePartElement.h
+ HTMLTableRowElement.cpp
+ HTMLTableRowElement.h
+ HTMLTableRowElement.idl
+ HTMLTableRowsCollection.cpp
+ HTMLTableRowsCollection.h
+ HTMLTableSectionElement.cpp
+ HTMLTableSectionElement.h
+ HTMLTableSectionElement.idl
+ HTMLTagNames.in
+ HTMLTextAreaElement.cpp
+ HTMLTextAreaElement.h
+ HTMLTextAreaElement.idl
+ HTMLTitleElement.cpp
+ HTMLTitleElement.h
+ HTMLTitleElement.idl
+ HTMLTokenizer.cpp
+ HTMLTokenizer.h
+ HTMLUListElement.cpp
+ HTMLUListElement.h
+ HTMLUListElement.idl
+ HTMLVideoElement.cpp
+ HTMLVideoElement.h
+ HTMLVideoElement.idl
+ HTMLViewSourceDocument.cpp
+ HTMLViewSourceDocument.h
+ ImageData.cpp
+ ImageData.h
+ ImageData.idl
+ MediaError.h
+ MediaError.idl
+ PreloadScanner.cpp
+ PreloadScanner.h
+ TextMetrics.h
+ TextMetrics.idl
+ TimeRanges.cpp
+ TimeRanges.h
+ TimeRanges.idl
+ ValidityState.cpp
+ ValidityState.h
+ ValidityState.idl
+ VoidCallback.h
+ VoidCallback.idl
+2 Info.plist
+ inspector/
+0 ConsoleMessage.cpp
+ ConsoleMessage.h
+ front-end/
+0 AbstractTimelinePanel.js
+ BottomUpProfileDataGridTree.js
+ Breakpoint.js
+ BreakpointsSidebarPane.js
+ Callback.js
+ CallStackSidebarPane.js
+ ChangesView.js
+ Color.js
+ ConsoleView.js
+ CookieItemsView.js
+ Database.js
+ DatabaseQueryView.js
+ DatabaseTableView.js
+ DataGrid.js
+ DOMAgent.js
+ DOMStorageDataGrid.js
+ DOMStorageItemsView.js
+ DOMStorage.js
+ Drawer.js
+ ElementsPanel.js
+ ElementsTreeOutline.js
+ EventListenersSidebarPane.js
+ FontView.js
+ Images/
+0 back.png
+ checker.png
+ clearConsoleButtonGlyph.png
+ closeButtons.png
+ consoleButtonGlyph.png
+ cookie.png
+ database.png
+ databaseTable.png
+ debuggerContinue.png
+ debuggerPause.png
+ debuggerStepInto.png
+ debuggerStepOut.png
+ debuggerStepOver.png
+ disclosureTriangleSmallDownBlack.png
+ disclosureTriangleSmallDown.png
+ disclosureTriangleSmallDownWhite.png
+ disclosureTriangleSmallRightBlack.png
+ disclosureTriangleSmallRightDownBlack.png
+ disclosureTriangleSmallRightDown.png
+ disclosureTriangleSmallRightDownWhite.png
+ disclosureTriangleSmallRight.png
+ disclosureTriangleSmallRightWhite.png
+ dockButtonGlyph.png
+ elementsIcon.png
+ enableOutlineButtonGlyph.png
+ enableSolidButtonGlyph.png
+ errorIcon.png
+ errorMediumIcon.png
+ errorRedDot.png
+ excludeButtonGlyph.png
+ focusButtonGlyph.png
+ forward.png
+ glossyHeader.png
+ glossyHeaderPressed.png
+ glossyHeaderSelected.png
+ glossyHeaderSelectedPressed.png
+ goArrow.png
+ graphLabelCalloutLeft.png
+ graphLabelCalloutRight.png
+ grayConnectorPoint.png
+ largerResourcesButtonGlyph.png
+ localStorage.png
+ nodeSearchButtonGlyph.png
+ paneBottomGrowActive.png
+ paneBottomGrow.png
+ paneGrowHandleLine.png
+ paneSettingsButtons.png
+ pauseOnExceptionButtonGlyph.png
+ percentButtonGlyph.png
+ profileGroupIcon.png
+ profileIcon.png
+ profilesIcon.png
+ profileSmallIcon.png
+ profilesSilhouette.png
+ radioDot.png
+ recordButtonGlyph.png
+ recordToggledButtonGlyph.png
+ reloadButtonGlyph.png
+ resourceCSSIcon.png
+ resourceDocumentIcon.png
+ resourceDocumentIconSmall.png
+ resourceJSIcon.png
+ resourcePlainIcon.png
+ resourcePlainIconSmall.png
+ resourcesIcon.png
+ resourcesSilhouette.png
+ resourcesSizeGraphIcon.png
+ resourcesTimeGraphIcon.png
+ scriptsIcon.png
+ scriptsSilhouette.png
+ searchSmallBlue.png
+ searchSmallBrightBlue.png
+ searchSmallGray.png
+ searchSmallWhite.png
+ segmentEnd.png
+ segmentHoverEnd.png
+ segmentHover.png
+ segment.png
+ segmentSelectedEnd.png
+ segmentSelected.png
+ sessionStorage.png
+ splitviewDimple.png
+ splitviewDividerBackground.png
+ statusbarBackground.png
+ statusbarBottomBackground.png
+ statusbarButtons.png
+ statusbarMenuButton.png
+ statusbarMenuButtonSelected.png
+ statusbarResizerHorizontal.png
+ statusbarResizerVertical.png
+ storageIcon.png
+ successGreenDot.png
+ timelineBarBlue.png
+ timelineBarGray.png
+ timelineBarGreen.png
+ timelineBarOrange.png
+ timelineBarPurple.png
+ timelineBarRed.png
+ timelineBarYellow.png
+ timelineCheckmarks.png
+ timelineDots.png
+ timelineHollowPillBlue.png
+ timelineHollowPillGray.png
+ timelineHollowPillGreen.png
+ timelineHollowPillOrange.png
+ timelineHollowPillPurple.png
+ timelineHollowPillRed.png
+ timelineHollowPillYellow.png
+ timelineIcon.png
+ timelinePillBlue.png
+ timelinePillGray.png
+ timelinePillGreen.png
+ timelinePillOrange.png
+ timelinePillPurple.png
+ timelinePillRed.png
+ timelinePillYellow.png
+ tipBalloonBottom.png
+ tipBalloon.png
+ tipIcon.png
+ tipIconPressed.png
+ toolbarItemSelected.png
+ treeDownTriangleBlack.png
+ treeDownTriangleWhite.png
+ treeRightTriangleBlack.png
+ treeRightTriangleWhite.png
+ treeUpTriangleBlack.png
+ treeUpTriangleWhite.png
+ undockButtonGlyph.png
+ userInputIcon.png
+ userInputPreviousIcon.png
+ userInputResultIcon.png
+ warningIcon.png
+ warningMediumIcon.png
+ warningOrangeDot.png
+ warningsErrors.png
+ whiteConnectorPoint.png
+2 ImageView.js
+ InjectedScriptAccess.js
+ InjectedScript.js
+ InspectorControllerStub.js
+ inspector.css
+ inspector.html
+ inspector.js
+ inspectorSyntaxHighlight.css
+ KeyboardShortcut.js
+ MetricsSidebarPane.js
+ Object.js
+ ObjectPropertiesSection.js
+ ObjectProxy.js
+ PanelEnablerView.js
+ Panel.js
+ Placard.js
+ Popup.js
+ ProfileDataGridTree.js
+ ProfilesPanel.js
+ ProfileView.js
+ PropertiesSection.js
+ PropertiesSidebarPane.js
+ ResourceCategory.js
+ Resource.js
+ ResourcesPanel.js
+ ResourceView.js
+ ScopeChainSidebarPane.js
+ Script.js
+ ScriptsPanel.js
+ ScriptView.js
+ SidebarPane.js
+ SidebarTreeElement.js
+ SourceFrame.js
+ SourceView.js
+ StatusBarButton.js
+ StoragePanel.js
+ StylesSidebarPane.js
+ SummaryBar.js
+ TestController.js
+ TextPrompt.js
+ TimelineAgent.js
+ TimelinePanel.js
+ TopDownProfileDataGridTree.js
+ treeoutline.js
+ utilities.js
+ View.js
+ WatchExpressionsSidebarPane.js
+ WebKit.qrc
+2 InspectorBackend.cpp
+ InspectorBackend.h
+ InspectorBackend.idl
+ InspectorClient.h
+ InspectorController.cpp
+ InspectorController.h
+ InspectorDatabaseResource.cpp
+ InspectorDatabaseResource.h
+ InspectorDOMAgent.cpp
+ InspectorDOMAgent.h
+ InspectorDOMStorageResource.cpp
+ InspectorDOMStorageResource.h
+ InspectorFrontend.cpp
+ InspectorFrontend.h
+ InspectorResource.cpp
+ InspectorResource.h
+ InspectorTimelineAgent.cpp
+ InspectorTimelineAgent.h
+ JavaScriptCallFrame.cpp
+ JavaScriptCallFrame.h
+ JavaScriptCallFrame.idl
+ JavaScriptDebugListener.h
+ JavaScriptDebugServer.cpp
+ JavaScriptDebugServer.h
+ JavaScriptProfile.cpp
+ JavaScriptProfile.h
+ JavaScriptProfileNode.cpp
+ JavaScriptProfileNode.h
+ TimelineRecordFactory.cpp
+ TimelineRecordFactory.h
+2 LICENSE-APPLE
+ LICENSE-LGPL-2
+0 .1
+2 loader/
+0 appcache/
+0 ApplicationCache.cpp
+ ApplicationCacheGroup.cpp
+ ApplicationCacheGroup.h
+ ApplicationCache.h
+ ApplicationCacheHost.cpp
+ ApplicationCacheHost.h
+ ApplicationCacheResource.cpp
+ ApplicationCacheResource.h
+ ApplicationCacheStorage.cpp
+ ApplicationCacheStorage.h
+ DOMApplicationCache.cpp
+ DOMApplicationCache.h
+ DOMApplicationCache.idl
+ ManifestParser.cpp
+ ManifestParser.h
+2 archive/
+0 ArchiveFactory.cpp
+ ArchiveFactory.h
+ Archive.h
+ ArchiveResourceCollection.cpp
+ ArchiveResourceCollection.h
+ ArchiveResource.cpp
+ ArchiveResource.h
+ cf/
+0 LegacyWebArchive.cpp
+ LegacyWebArchive.h
+ LegacyWebArchiveMac.mm
+3 Cache.cpp
+ CachedCSSStyleSheet.cpp
+ CachedCSSStyleSheet.h
+ CachedFont.cpp
+ CachedFont.h
+ CachedImage.cpp
+ CachedImage.h
+ CachedResourceClient.h
+ CachedResourceClientWalker.cpp
+ CachedResourceClientWalker.h
+ CachedResource.cpp
+ CachedResource.h
+ CachedResourceHandle.cpp
+ CachedResourceHandle.h
+ CachedScript.cpp
+ CachedScript.h
+ CachedXBLDocument.cpp
+ CachedXBLDocument.h
+ CachedXSLStyleSheet.cpp
+ CachedXSLStyleSheet.h
+ Cache.h
+ CachePolicy.h
+ cf/
+0 ResourceLoaderCFNet.cpp
+2 CrossOriginAccessControl.cpp
+ CrossOriginAccessControl.h
+ CrossOriginPreflightResultCache.cpp
+ CrossOriginPreflightResultCache.h
+ DocLoader.cpp
+ DocLoader.h
+ DocumentLoader.cpp
+ DocumentLoader.h
+ DocumentThreadableLoader.cpp
+ DocumentThreadableLoader.h
+ EmptyClients.h
+ FormState.cpp
+ FormState.h
+ FrameLoaderClient.h
+ FrameLoader.cpp
+ FrameLoader.h
+ FrameLoaderTypes.h
+ FTPDirectoryDocument.cpp
+ FTPDirectoryDocument.h
+ FTPDirectoryParser.cpp
+ FTPDirectoryParser.h
+ HistoryController.cpp
+ HistoryController.h
+ icon/
+0 IconDatabaseClient.h
+ IconDatabase.cpp
+ IconDatabase.h
+ IconDatabaseNone.cpp
+ IconFetcher.cpp
+ IconFetcher.h
+ IconLoader.cpp
+ IconLoader.h
+ IconRecord.cpp
+ IconRecord.h
+ PageURLRecord.cpp
+ PageURLRecord.h
+2 ImageDocument.cpp
+ ImageDocument.h
+ ImageLoader.cpp
+ ImageLoader.h
+ loader.cpp
+ loader.h
+ MainResourceLoader.cpp
+ MainResourceLoader.h
+ MediaDocument.cpp
+ MediaDocument.h
+ NavigationAction.cpp
+ NavigationAction.h
+ NetscapePlugInStreamLoader.cpp
+ NetscapePlugInStreamLoader.h
+ PlaceholderDocument.cpp
+ PlaceholderDocument.h
+ PluginDocument.cpp
+ PluginDocument.h
+ PolicyCallback.cpp
+ PolicyCallback.h
+ PolicyChecker.cpp
+ PolicyChecker.h
+ ProgressTracker.cpp
+ ProgressTracker.h
+ RedirectScheduler.cpp
+ RedirectScheduler.h
+ Request.cpp
+ Request.h
+ ResourceLoader.cpp
+ ResourceLoader.h
+ ResourceLoadNotifier.cpp
+ ResourceLoadNotifier.h
+ SubresourceLoaderClient.h
+ SubresourceLoader.cpp
+ SubresourceLoader.h
+ SubstituteData.h
+ SubstituteResource.h
+ TextDocument.cpp
+ TextDocument.h
+ TextResourceDecoder.cpp
+ TextResourceDecoder.h
+ ThreadableLoaderClient.h
+ ThreadableLoaderClientWrapper.h
+ ThreadableLoader.cpp
+ ThreadableLoader.h
+ WorkerThreadableLoader.cpp
+ WorkerThreadableLoader.h
+2 make-generated-sources.sh
+ mathml/
+0 MathMLElement.cpp
+ MathMLElement.h
+ MathMLInlineContainerElement.cpp
+ MathMLInlineContainerElement.h
+ MathMLMathElement.cpp
+ MathMLMathElement.h
+ mathtags.in
+2 move-js-headers.sh
+ notifications/
+0 NotificationCenter.cpp
+ NotificationCenter.h
+ NotificationCenter.idl
+ NotificationContents.h
+ Notification.cpp
+ Notification.h
+ Notification.idl
+ NotificationPresenter.h
+2 page/
+0 AbstractView.idl
+ android/
+0 DragControllerAndroid.cpp
+ EventHandlerAndroid.cpp
+ InspectorControllerAndroid.cpp
+2 animation/
+0 AnimationBase.cpp
+ AnimationBase.h
+ AnimationController.cpp
+ AnimationController.h
+ AnimationControllerPrivate.h
+ CompositeAnimation.cpp
+ CompositeAnimation.h
+ ImplicitAnimation.cpp
+ ImplicitAnimation.h
+ KeyframeAnimation.cpp
+ KeyframeAnimation.h
+2 BarInfo.cpp
+ BarInfo.h
+ BarInfo.idl
+ ChromeClient.h
+ Chrome.cpp
+ Chrome.h
+ Console.cpp
+ Console.h
+ Console.idl
+ ContextMenuClient.h
+ ContextMenuController.cpp
+ ContextMenuController.h
+ Coordinates.h
+ Coordinates.idl
+ DOMSelection.cpp
+ DOMSelection.h
+ DOMSelection.idl
+ DOMTimer.cpp
+ DOMTimer.h
+ DOMWindow.cpp
+ DOMWindow.h
+ DOMWindow.idl
+ DragActions.h
+ DragClient.h
+ DragController.cpp
+ DragController.h
+ EditorClient.h
+ EventHandler.cpp
+ EventHandler.h
+ EventSource.cpp
+ EventSource.h
+ EventSource.idl
+ FocusController.cpp
+ FocusController.h
+ FocusDirection.h
+ Frame.cpp
+ Frame.h
+ FrameLoadRequest.h
+ FrameTree.cpp
+ FrameTree.h
+ FrameView.cpp
+ FrameView.h
+ Geolocation.cpp
+ Geolocation.h
+ Geolocation.idl
+ Geoposition.h
+ Geoposition.idl
+ HaltablePlugin.h
+ History.cpp
+ History.h
+ History.idl
+ Location.cpp
+ Location.h
+ Location.idl
+ MouseEventWithHitTestResults.cpp
+ MouseEventWithHitTestResults.h
+ NavigatorBase.cpp
+ NavigatorBase.h
+ Navigator.cpp
+ Navigator.h
+ Navigator.idl
+ OriginAccessEntry.cpp
+ OriginAccessEntry.h
+ Page.cpp
+ PageGroup.cpp
+ PageGroup.h
+ PageGroupLoadDeferrer.cpp
+ PageGroupLoadDeferrer.h
+ Page.h
+ PluginHalterClient.h
+ PluginHalter.cpp
+ PluginHalter.h
+ PositionCallback.h
+ PositionErrorCallback.h
+ PositionError.h
+ PositionError.idl
+ PositionOptions.h
+ PrintContext.cpp
+ PrintContext.h
+ qt/
+0 DragControllerQt.cpp
+ EventHandlerQt.cpp
+ FrameQt.cpp
+2 Screen.cpp
+ Screen.h
+ Screen.idl
+ SecurityOrigin.cpp
+ SecurityOrigin.h
+ SecurityOriginHash.h
+ Settings.cpp
+ Settings.h
+ UserContentURLPattern.cpp
+ UserContentURLPattern.h
+ UserScript.h
+ UserScriptTypes.h
+ UserStyleSheet.h
+ UserStyleSheetTypes.h
+ WebKitPoint.h
+ WebKitPoint.idl
+ win/
+ WindowFeatures.cpp
+ WindowFeatures.h
+ win/DragControllerWin.cpp
+ win/EventHandlerWin.cpp
+ win/FrameCairoWin.cpp
+ win/FrameCGWin.cpp
+ win/FrameWin.cpp
+ win/FrameWin.h
+ win/PageWin.cpp
+ WorkerNavigator.cpp
+ WorkerNavigator.h
+ WorkerNavigator.idl
+ XSSAuditor.cpp
+ XSSAuditor.h
+2 platform/
+0 android/
+0 ClipboardAndroid.cpp
+ ClipboardAndroid.h
+ CursorAndroid.cpp
+ DragDataAndroid.cpp
+ EventLoopAndroid.cpp
+ FileChooserAndroid.cpp
+ FileSystemAndroid.cpp
+ KeyboardCodes.h
+ KeyEventAndroid.cpp
+ LocalizedStringsAndroid.cpp
+ PopupMenuAndroid.cpp
+ RenderThemeAndroid.cpp
+ RenderThemeAndroid.h
+ ScreenAndroid.cpp
+ ScrollViewAndroid.cpp
+ SearchPopupMenuAndroid.cpp
+ SystemTimeAndroid.cpp
+ TemporaryLinkStubs.cpp
+ WidgetAndroid.cpp
+2 animation/
+0 Animation.cpp
+ Animation.h
+ AnimationList.cpp
+ AnimationList.h
+ TimingFunction.h
+2 Arena.cpp
+ Arena.h
+ AutodrainedPool.h
+ ColorData.gperf
+ ContentType.cpp
+ ContentType.h
+ ContextMenu.cpp
+ ContextMenu.h
+ ContextMenuItem.h
+ Cookie.h
+ CookieJar.h
+ CrossThreadCopier.cpp
+ CrossThreadCopier.h
+ Cursor.h
+ DeprecatedPtrList.h
+ DeprecatedPtrListImpl.cpp
+ DeprecatedPtrListImpl.h
+ DragData.cpp
+ DragData.h
+ DragImage.cpp
+ DragImage.h
+ EventLoop.h
+ FileChooser.cpp
+ FileChooser.h
+ FileSystem.h
+ FloatConversion.h
+ GeolocationService.cpp
+ GeolocationService.h
+ graphics/
+0 BitmapImage.cpp
+ BitmapImage.h
+ Color.cpp
+ Color.h
+ DashArray.h
+ filters/
+0 FEBlend.cpp
+ FEBlend.h
+ FEColorMatrix.cpp
+ FEColorMatrix.h
+ FEComponentTransfer.cpp
+ FEComponentTransfer.h
+ FEComposite.cpp
+ FEComposite.h
+ FEGaussianBlur.cpp
+ FEGaussianBlur.h
+ FilterEffect.cpp
+ FilterEffect.h
+ Filter.h
+ SourceAlpha.cpp
+ SourceAlpha.h
+ SourceGraphic.cpp
+ SourceGraphic.h
+2 FloatPoint3D.cpp
+ FloatPoint3D.h
+ FloatPoint.cpp
+ FloatPoint.h
+ FloatQuad.cpp
+ FloatQuad.h
+ FloatRect.cpp
+ FloatRect.h
+ FloatSize.cpp
+ FloatSize.h
+ FontCache.cpp
+ FontCache.h
+ Font.cpp
+ FontData.cpp
+ FontData.h
+ FontDescription.cpp
+ FontDescription.h
+ FontFallbackList.cpp
+ FontFallbackList.h
+ FontFamily.cpp
+ FontFamily.h
+ FontFastPath.cpp
+ Font.h
+ FontRenderingMode.h
+ FontSelector.h
+ FontSmoothingMode.h
+ FontTraitsMask.h
+ GeneratedImage.cpp
+ GeneratedImage.h
+ Generator.h
+ GlyphBuffer.h
+ GlyphPageTreeNode.cpp
+ GlyphPageTreeNode.h
+ GlyphWidthMap.cpp
+ GlyphWidthMap.h
+ Gradient.cpp
+ Gradient.h
+ GraphicsContext3D.h
+ GraphicsContext.cpp
+ GraphicsContext.h
+ GraphicsContextPrivate.h
+ GraphicsLayerClient.h
+ GraphicsLayer.cpp
+ GraphicsLayer.h
+ GraphicsTypes.cpp
+ GraphicsTypes.h
+ Icon.h
+ ImageBuffer.cpp
+ ImageBuffer.h
+ Image.cpp
+ Image.h
+ ImageObserver.h
+ ImageSource.cpp
+ ImageSource.h
+ IntPoint.h
+ IntRect.cpp
+ IntRect.h
+ IntSize.h
+ IntSizeHash.h
+ MediaPlayer.cpp
+ MediaPlayer.h
+ MediaPlayerPrivate.h
+ opentype/
+0 OpenTypeUtilities.cpp
+ OpenTypeUtilities.h
+2 Path.cpp
+ Path.h
+ PathTraversalState.cpp
+ PathTraversalState.h
+ Pattern.cpp
+ Pattern.h
+ Pen.cpp
+ Pen.h
+ qt/
+0 ColorQt.cpp
+ FloatPointQt.cpp
+ FloatRectQt.cpp
+ FontCacheQt.cpp
+ FontCustomPlatformData.cpp
+ FontCustomPlatformData.h
+ FontFallbackListQt.cpp
+ FontPlatformData.h
+ FontPlatformDataQt.cpp
+ FontQt43.cpp
+ FontQt.cpp
+ GlyphPageTreeNodeQt.cpp
+ GradientQt.cpp
+ GraphicsContextQt.cpp
+ IconQt.cpp
+ ImageBufferData.h
+ ImageBufferQt.cpp
+ ImageDecoderQt.cpp
+ ImageDecoderQt.h
+ ImageQt.cpp
+ IntPointQt.cpp
+ IntRectQt.cpp
+ IntSizeQt.cpp
+ MediaPlayerPrivatePhonon.cpp
+ MediaPlayerPrivatePhonon.h
+ PathQt.cpp
+ PatternQt.cpp
+ SimpleFontDataQt.cpp
+ StillImageQt.cpp
+ StillImageQt.h
+ TransformationMatrixQt.cpp
+2 SegmentedFontData.cpp
+ SegmentedFontData.h
+ SimpleFontData.cpp
+ SimpleFontData.h
+ StringTruncator.cpp
+ StringTruncator.h
+ StrokeStyleApplier.h
+ TextRenderingMode.h
+ TextRun.h
+ transforms/
+0 IdentityTransformOperation.h
+ Matrix3DTransformOperation.cpp
+ Matrix3DTransformOperation.h
+ MatrixTransformOperation.cpp
+ MatrixTransformOperation.h
+ PerspectiveTransformOperation.cpp
+ PerspectiveTransformOperation.h
+ RotateTransformOperation.cpp
+ RotateTransformOperation.h
+ ScaleTransformOperation.cpp
+ ScaleTransformOperation.h
+ SkewTransformOperation.cpp
+ SkewTransformOperation.h
+ TransformationMatrix.cpp
+ TransformationMatrix.h
+ TransformOperation.h
+ TransformOperations.cpp
+ TransformOperations.h
+ TranslateTransformOperation.cpp
+ TranslateTransformOperation.h
+2 UnitBezier.h
+ WidthIterator.cpp
+ WidthIterator.h
+2 HostWindow.h
+ image-decoders/
+0 cairo/
+0 ImageDecoderCairo.cpp
+2 ImageDecoder.cpp
+ ImageDecoder.h
+ qt/
+0 RGBA32BufferQt.cpp
+2 wx/
+0 ImageDecoderWx.cpp
+3 KeyboardCodes.h
+ KURL.cpp
+ KURLGoogle.cpp
+ KURLGooglePrivate.h
+ KURL.h
+ KURLHash.h
+ Language.h
+ LengthBox.h
+ Length.cpp
+ Length.h
+ LengthSize.h
+ LinkHash.cpp
+ LinkHash.h
+ LocalizedStrings.h
+ Logging.cpp
+ Logging.h
+ mac/
+0 AutodrainedPool.mm
+ BlockExceptions.h
+ BlockExceptions.mm
+ ClipboardMac.h
+ ClipboardMac.mm
+ ContextMenuItemMac.mm
+ ContextMenuMac.mm
+ CookieJar.mm
+ CursorMac.mm
+ DragDataMac.mm
+ DragImageMac.mm
+ EventLoopMac.mm
+ FileChooserMac.mm
+ FileSystemMac.mm
+ FoundationExtras.h
+ GeolocationServiceMac.h
+ GeolocationServiceMac.mm
+ KeyEventMac.mm
+ KURLMac.mm
+ Language.mm
+ LocalCurrentGraphicsContext.h
+ LocalCurrentGraphicsContext.mm
+ LocalizedStringsMac.mm
+ LoggingMac.mm
+ MIMETypeRegistryMac.mm
+ PasteboardHelper.h
+ PasteboardMac.mm
+ PlatformMouseEventMac.mm
+ PlatformScreenMac.mm
+ PopupMenuMac.mm
+ PurgeableBufferMac.cpp
+ RuntimeApplicationChecks.h
+ RuntimeApplicationChecks.mm
+ SchedulePairMac.mm
+ ScrollbarThemeMac.h
+ ScrollbarThemeMac.mm
+ ScrollViewMac.mm
+ SearchPopupMenuMac.mm
+ SharedBufferMac.mm
+ SharedTimerMac.mm
+ SoftLinking.h
+ SoundMac.mm
+ SSLKeyGeneratorMac.mm
+ SuddenTermination.mm
+ SystemTimeMac.cpp
+ ThemeMac.h
+ ThemeMac.mm
+ ThreadCheck.mm
+ WebCoreKeyGenerator.h
+ WebCoreKeyGenerator.m
+ WebCoreNSStringExtras.h
+ WebCoreNSStringExtras.mm
+ WebCoreObjCExtras.h
+ WebCoreObjCExtras.mm
+ WebCoreSystemInterface.h
+ WebCoreSystemInterface.mm
+ WebCoreView.h
+ WebCoreView.m
+ WebFontCache.h
+ WebFontCache.mm
+ WheelEventMac.mm
+ WidgetMac.mm
+2 MIMETypeRegistry.cpp
+ MIMETypeRegistry.h
+ mock/
+0 GeolocationServiceMock.cpp
+ GeolocationServiceMock.h
+2 network/
+0 AuthenticationChallengeBase.cpp
+ AuthenticationChallengeBase.h
+ Credential.cpp
+ Credential.h
+ CredentialStorage.cpp
+ CredentialStorage.h
+ DNS.h
+ FormDataBuilder.cpp
+ FormDataBuilder.h
+ FormData.cpp
+ FormData.h
+ HTTPHeaderMap.cpp
+ HTTPHeaderMap.h
+ HTTPParsers.cpp
+ HTTPParsers.h
+ NetworkStateNotifier.cpp
+ NetworkStateNotifier.h
+ ProtectionSpace.cpp
+ ProtectionSpace.h
+ ProtectionSpaceHash.h
+ qt/
+0 AuthenticationChallenge.h
+ DnsPrefetchHelper.cpp
+ DnsPrefetchHelper.h
+ QNetworkReplyHandler.cpp
+ QNetworkReplyHandler.h
+ ResourceError.h
+ ResourceHandleQt.cpp
+ ResourceRequest.h
+ ResourceRequestQt.cpp
+ ResourceResponse.h
+ SocketStreamError.h
+ SocketStreamHandle.h
+ SocketStreamHandleSoup.cpp
+2 ResourceErrorBase.cpp
+ ResourceErrorBase.h
+ ResourceHandleClient.h
+ ResourceHandle.cpp
+ ResourceHandle.h
+ ResourceHandleInternal.h
+ ResourceRequestBase.cpp
+ ResourceRequestBase.h
+ ResourceResponseBase.cpp
+ ResourceResponseBase.h
+ SocketStreamErrorBase.cpp
+ SocketStreamErrorBase.h
+ SocketStreamHandleBase.cpp
+ SocketStreamHandleBase.h
+ SocketStreamHandleClient.h
+2 NotImplemented.h
+ Pasteboard.h
+ PlatformKeyboardEvent.h
+ PlatformMenuDescription.h
+ PlatformMouseEvent.h
+ PlatformScreen.h
+ PlatformWheelEvent.h
+ PopupMenuClient.h
+ PopupMenu.h
+ PopupMenuStyle.h
+ posix/
+0 FileSystemPOSIX.cpp
+2 PurgeableBuffer.h
+ qt/
+0 ClipboardQt.cpp
+ ClipboardQt.h
+ ContextMenuItemQt.cpp
+ ContextMenuQt.cpp
+ CookieJarQt.cpp
+ CursorQt.cpp
+ DragDataQt.cpp
+ DragImageQt.cpp
+ EventLoopQt.cpp
+ FileChooserQt.cpp
+ FileSystemQt.cpp
+ KURLQt.cpp
+ Localizations.cpp
+ LoggingQt.cpp
+ MIMETypeRegistryQt.cpp
+ PasteboardQt.cpp
+ PlatformKeyboardEventQt.cpp
+ PlatformMouseEventQt.cpp
+ PlatformScreenQt.cpp
+ PopupMenuQt.cpp
+ QWebPageClient.h
+ QWebPopup.cpp
+ QWebPopup.h
+ RenderThemeQt.cpp
+ RenderThemeQt.h
+ ScreenQt.cpp
+ ScrollbarQt.cpp
+ ScrollbarThemeQt.cpp
+ ScrollbarThemeQt.h
+ ScrollViewQt.cpp
+ SearchPopupMenuQt.cpp
+ SharedBufferQt.cpp
+ SharedTimerQt.cpp
+ SoundQt.cpp
+ TemporaryLinkStubs.cpp
+ WheelEventQt.cpp
+ WidgetQt.cpp
+2 RunLoopTimer.h
+ ScrollbarClient.h
+ Scrollbar.cpp
+ Scrollbar.h
+ ScrollbarThemeComposite.cpp
+ ScrollbarThemeComposite.h
+ ScrollbarTheme.h
+ ScrollTypes.h
+ ScrollView.cpp
+ ScrollView.h
+ SearchPopupMenu.h
+ SharedBuffer.cpp
+ SharedBuffer.h
+ SharedTimer.h
+ Sound.h
+ sql/
+0 SQLiteAuthorizer.cpp
+ SQLiteDatabase.cpp
+ SQLiteDatabase.h
+ SQLiteFileSystem.cpp
+ SQLiteFileSystem.h
+ SQLiteStatement.cpp
+ SQLiteStatement.h
+ SQLiteTransaction.cpp
+ SQLiteTransaction.h
+ SQLValue.cpp
+ SQLValue.h
+2 SSLKeyGenerator.h
+ StaticConstructors.h
+ SuddenTermination.h
+ SystemTime.h
+ text/
+0 android/
+0 TextBreakIteratorInternalICU.cpp
+2 AtomicString.cpp
+ AtomicString.h
+ AtomicStringHash.h
+ AtomicStringImpl.h
+ Base64.cpp
+ Base64.h
+ BidiContext.cpp
+ BidiContext.h
+ BidiResolver.h
+ cf/
+0 StringCF.cpp
+ StringImplCF.cpp
+2 CharacterNames.h
+ CString.cpp
+ CString.h
+ mac/
+0 character-sets.txt
+ CharsetData.h
+ mac-encodings.txt
+ make-charset-table.pl
+ ShapeArabic.c
+ ShapeArabic.h
+ StringImplMac.mm
+ StringMac.mm
+ TextBoundaries.mm
+ TextBreakIteratorInternalICUMac.mm
+ TextCodecMac.cpp
+ TextCodecMac.h
+2 ParserUtilities.h
+ PlatformString.h
+ qt/
+0 StringQt.cpp
+ TextBoundaries.cpp
+ TextBreakIteratorQt.cpp
+ TextCodecQt.cpp
+ TextCodecQt.h
+2 RegularExpression.cpp
+ RegularExpression.h
+ SegmentedString.cpp
+ SegmentedString.h
+ StringBuffer.h
+ StringBuilder.cpp
+ StringBuilder.h
+ String.cpp
+ StringHash.h
+ StringImpl.cpp
+ StringImpl.h
+ TextBoundaries.h
+ TextBoundariesICU.cpp
+ TextBreakIterator.h
+ TextBreakIteratorICU.cpp
+ TextBreakIteratorInternalICU.h
+ TextCodec.cpp
+ TextCodec.h
+ TextCodecICU.cpp
+ TextCodecICU.h
+ TextCodecLatin1.cpp
+ TextCodecLatin1.h
+ TextCodecUserDefined.cpp
+ TextCodecUserDefined.h
+ TextCodecUTF16.cpp
+ TextCodecUTF16.h
+ TextDirection.h
+ TextEncoding.cpp
+ TextEncodingDetector.h
+ TextEncodingDetectorICU.cpp
+ TextEncodingDetectorNone.cpp
+ TextEncoding.h
+ TextEncodingRegistry.cpp
+ TextEncodingRegistry.h
+ TextStream.cpp
+ TextStream.h
+ UnicodeRange.cpp
+ UnicodeRange.h
+ win/
+0 TextBreakIteratorInternalICUWin.cpp
+3 Theme.cpp
+ Theme.h
+ ThemeTypes.h
+ ThreadCheck.h
+ ThreadGlobalData.cpp
+ ThreadGlobalData.h
+ ThreadTimers.cpp
+ ThreadTimers.h
+ Timer.cpp
+ Timer.h
+ TreeShared.h
+ Widget.cpp
+ Widget.h
+ win/
+0 BitmapInfo.cpp
+ BitmapInfo.h
+ SystemTimeWin.cpp
+3 plugins/
+0 mac/
+0 PluginDataMac.mm
+ PluginPackageMac.cpp
+ PluginViewMac.cpp
+2 MimeTypeArray.cpp
+ MimeTypeArray.h
+ MimeTypeArray.idl
+ MimeType.cpp
+ MimeType.h
+ MimeType.idl
+ npapi.cpp
+ npfunctions.h
+ PluginArray.cpp
+ PluginArray.h
+ PluginArray.idl
+ Plugin.cpp
+ PluginDatabaseClient.h
+ PluginDatabase.cpp
+ PluginDatabase.h
+ PluginData.cpp
+ PluginData.h
+ PluginDataNone.cpp
+ PluginDebug.cpp
+ PluginDebug.h
+ Plugin.h
+ Plugin.idl
+ PluginInfoStore.cpp
+ PluginInfoStore.h
+ PluginMainThreadScheduler.cpp
+ PluginMainThreadScheduler.h
+ PluginPackage.cpp
+ PluginPackage.h
+ PluginPackageNone.cpp
+ PluginQuirkSet.h
+ PluginStream.cpp
+ PluginStream.h
+ PluginView.cpp
+ PluginView.h
+ PluginViewNone.cpp
+ qt/
+0 PluginContainerQt.cpp
+ PluginContainerQt.h
+ PluginDataQt.cpp
+ PluginPackageQt.cpp
+ PluginViewQt.cpp
+2 symbian/
+0 npinterface.h
+ PluginContainerSymbian.cpp
+ PluginContainerSymbian.h
+ PluginDatabaseSymbian.cpp
+ PluginPackageSymbian.cpp
+ PluginViewSymbian.cpp
+2 win/
+0 PaintHooks.asm
+ PluginDatabaseWin.cpp
+ PluginDataWin.cpp
+ PluginMessageThrottlerWin.cpp
+ PluginMessageThrottlerWin.h
+ PluginPackageWin.cpp
+ PluginViewWin.cpp
+3 rendering/
+0 AutoTableLayout.cpp
+ AutoTableLayout.h
+ break_lines.cpp
+ break_lines.h
+ CounterNode.cpp
+ CounterNode.h
+ EllipsisBox.cpp
+ EllipsisBox.h
+ FixedTableLayout.cpp
+ FixedTableLayout.h
+ GapRects.h
+ HitTestRequest.h
+ HitTestResult.cpp
+ HitTestResult.h
+ InlineBox.cpp
+ InlineBox.h
+ InlineFlowBox.cpp
+ InlineFlowBox.h
+ InlineRunBox.h
+ InlineTextBox.cpp
+ InlineTextBox.h
+ LayoutState.cpp
+ LayoutState.h
+ MediaControlElements.cpp
+ MediaControlElements.h
+ OverlapTestRequestClient.h
+ PointerEventsHitRules.cpp
+ PointerEventsHitRules.h
+ RenderApplet.cpp
+ RenderApplet.h
+ RenderArena.cpp
+ RenderArena.h
+ RenderBlock.cpp
+ RenderBlock.h
+ RenderBlockLineLayout.cpp
+ RenderBox.cpp
+ RenderBox.h
+ RenderBoxModelObject.cpp
+ RenderBoxModelObject.h
+ RenderBR.cpp
+ RenderBR.h
+ RenderButton.cpp
+ RenderButton.h
+ RenderCounter.cpp
+ RenderCounter.h
+ RenderDataGrid.cpp
+ RenderDataGrid.h
+ RenderFieldset.cpp
+ RenderFieldset.h
+ RenderFileUploadControl.cpp
+ RenderFileUploadControl.h
+ RenderFlexibleBox.cpp
+ RenderFlexibleBox.h
+ RenderForeignObject.cpp
+ RenderForeignObject.h
+ RenderFrame.cpp
+ RenderFrame.h
+ RenderFrameSet.cpp
+ RenderFrameSet.h
+ RenderHTMLCanvas.cpp
+ RenderHTMLCanvas.h
+ RenderImage.cpp
+ RenderImageGeneratedContent.cpp
+ RenderImageGeneratedContent.h
+ RenderImage.h
+ RenderInline.cpp
+ RenderInline.h
+ RenderLayerBacking.cpp
+ RenderLayerBacking.h
+ RenderLayerCompositor.cpp
+ RenderLayerCompositor.h
+ RenderLayer.cpp
+ RenderLayer.h
+ RenderLineBoxList.cpp
+ RenderLineBoxList.h
+ RenderListBox.cpp
+ RenderListBox.h
+ RenderListItem.cpp
+ RenderListItem.h
+ RenderListMarker.cpp
+ RenderListMarker.h
+ RenderMarquee.cpp
+ RenderMarquee.h
+ RenderMediaControlsChromium.cpp
+ RenderMediaControlsChromium.h
+ RenderMediaControls.cpp
+ RenderMediaControls.h
+ RenderMedia.cpp
+ RenderMedia.h
+ RenderMenuList.cpp
+ RenderMenuList.h
+ RenderObjectChildList.cpp
+ RenderObjectChildList.h
+ RenderObject.cpp
+ RenderObject.h
+ RenderOverflow.h
+ RenderPart.cpp
+ RenderPart.h
+ RenderPartObject.cpp
+ RenderPartObject.h
+ RenderPath.cpp
+ RenderPath.h
+ RenderReplaced.cpp
+ RenderReplaced.h
+ RenderReplica.cpp
+ RenderReplica.h
+ RenderScrollbar.cpp
+ RenderScrollbar.h
+ RenderScrollbarPart.cpp
+ RenderScrollbarPart.h
+ RenderScrollbarTheme.cpp
+ RenderScrollbarTheme.h
+ RenderSelectionInfo.h
+ RenderSlider.cpp
+ RenderSlider.h
+ RenderSVGBlock.cpp
+ RenderSVGBlock.h
+ RenderSVGContainer.cpp
+ RenderSVGContainer.h
+ RenderSVGGradientStop.cpp
+ RenderSVGGradientStop.h
+ RenderSVGHiddenContainer.cpp
+ RenderSVGHiddenContainer.h
+ RenderSVGImage.cpp
+ RenderSVGImage.h
+ RenderSVGInline.cpp
+ RenderSVGInline.h
+ RenderSVGInlineText.cpp
+ RenderSVGInlineText.h
+ RenderSVGModelObject.cpp
+ RenderSVGModelObject.h
+ RenderSVGRoot.cpp
+ RenderSVGRoot.h
+ RenderSVGText.cpp
+ RenderSVGText.h
+ RenderSVGTextPath.cpp
+ RenderSVGTextPath.h
+ RenderSVGTransformableContainer.cpp
+ RenderSVGTransformableContainer.h
+ RenderSVGTSpan.cpp
+ RenderSVGTSpan.h
+ RenderSVGViewportContainer.cpp
+ RenderSVGViewportContainer.h
+ RenderTableCell.cpp
+ RenderTableCell.h
+ RenderTableCol.cpp
+ RenderTableCol.h
+ RenderTable.cpp
+ RenderTable.h
+ RenderTableRow.cpp
+ RenderTableRow.h
+ RenderTableSection.cpp
+ RenderTableSection.h
+ RenderTextControl.cpp
+ RenderTextControl.h
+ RenderTextControlMultiLine.cpp
+ RenderTextControlMultiLine.h
+ RenderTextControlSingleLine.cpp
+ RenderTextControlSingleLine.h
+ RenderText.cpp
+ RenderTextFragment.cpp
+ RenderTextFragment.h
+ RenderText.h
+ RenderThemeChromiumLinux.cpp
+ RenderThemeChromiumLinux.h
+ RenderThemeChromiumMac.h
+ RenderThemeChromiumMac.mm
+ RenderThemeChromiumSkia.cpp
+ RenderThemeChromiumSkia.h
+ RenderThemeChromiumWin.cpp
+ RenderThemeChromiumWin.h
+ RenderTheme.cpp
+ RenderTheme.h
+ RenderThemeMac.h
+ RenderThemeSafari.cpp
+ RenderThemeSafari.h
+ RenderThemeWince.cpp
+ RenderThemeWince.h
+ RenderThemeWin.cpp
+ RenderThemeWin.h
+ RenderTreeAsText.cpp
+ RenderTreeAsText.h
+ RenderVideo.cpp
+ RenderVideo.h
+ RenderView.cpp
+ RenderView.h
+ RenderWidget.cpp
+ RenderWidget.h
+ RenderWidgetProtector.h
+ RenderWordBreak.cpp
+ RenderWordBreak.h
+ RootInlineBox.cpp
+ RootInlineBox.h
+ ScrollBehavior.cpp
+ ScrollBehavior.h
+ style/
+0 BindingURI.cpp
+ BindingURI.h
+ BorderData.h
+ BorderValue.h
+ CollapsedBorderValue.h
+ ContentData.cpp
+ ContentData.h
+ CounterContent.h
+ CounterDirectives.cpp
+ CounterDirectives.h
+ CursorData.h
+ CursorList.h
+ DataRef.h
+ FillLayer.cpp
+ FillLayer.h
+ KeyframeList.cpp
+ KeyframeList.h
+ NinePieceImage.cpp
+ NinePieceImage.h
+ OutlineValue.h
+ RenderStyleConstants.h
+ RenderStyle.cpp
+ RenderStyle.h
+ ShadowData.cpp
+ ShadowData.h
+ StyleBackgroundData.cpp
+ StyleBackgroundData.h
+ StyleBoxData.cpp
+ StyleBoxData.h
+ StyleCachedImage.cpp
+ StyleCachedImage.h
+ StyleDashboardRegion.h
+ StyleFlexibleBoxData.cpp
+ StyleFlexibleBoxData.h
+ StyleGeneratedImage.cpp
+ StyleGeneratedImage.h
+ StyleImage.h
+ StyleInheritedData.cpp
+ StyleInheritedData.h
+ StyleMarqueeData.cpp
+ StyleMarqueeData.h
+ StyleMultiColData.cpp
+ StyleMultiColData.h
+ StyleRareInheritedData.cpp
+ StyleRareInheritedData.h
+ StyleRareNonInheritedData.cpp
+ StyleRareNonInheritedData.h
+ StyleReflection.h
+ StyleSurroundData.cpp
+ StyleSurroundData.h
+ StyleTransformData.cpp
+ StyleTransformData.h
+ StyleVisualData.cpp
+ StyleVisualData.h
+ SVGRenderStyle.cpp
+ SVGRenderStyleDefs.cpp
+ SVGRenderStyleDefs.h
+ SVGRenderStyle.h
+2 SVGCharacterLayoutInfo.cpp
+ SVGCharacterLayoutInfo.h
+ SVGInlineFlowBox.cpp
+ SVGInlineFlowBox.h
+ SVGInlineTextBox.cpp
+ SVGInlineTextBox.h
+ SVGRenderSupport.cpp
+ SVGRenderSupport.h
+ SVGRenderTreeAsText.cpp
+ SVGRenderTreeAsText.h
+ SVGRootInlineBox.cpp
+ SVGRootInlineBox.h
+ TableLayout.h
+ TextControlInnerElements.cpp
+ TextControlInnerElements.h
+ TransformState.cpp
+ TransformState.h
+2 Resources/
+0 aliasCursor.png
+ cellCursor.png
+ contextMenuCursor.png
+ copyCursor.png
+ crossHairCursor.png
+ deleteButton.png
+ deleteButtonPressed.png
+ deleteButtonPressed.tiff
+ deleteButton.tiff
+ eastResizeCursor.png
+ eastWestResizeCursor.png
+ helpCursor.png
+ linkCursor.png
+ missingImage.png
+ missingImage.tiff
+ moveCursor.png
+ noDropCursor.png
+ noneCursor.png
+ northEastResizeCursor.png
+ northEastSouthWestResizeCursor.png
+ northResizeCursor.png
+ northSouthResizeCursor.png
+ northWestResizeCursor.png
+ northWestSouthEastResizeCursor.png
+ notAllowedCursor.png
+ nullPlugin.png
+ panIcon.png
+ progressCursor.png
+ southEastResizeCursor.png
+ southResizeCursor.png
+ southWestResizeCursor.png
+ textAreaResizeCorner.png
+ textAreaResizeCorner.tiff
+ urlIcon.png
+ verticalTextCursor.png
+ waitCursor.png
+ westResizeCursor.png
+ zoomInCursor.png
+ zoomOutCursor.png
+2 storage/
+0 ChangeVersionWrapper.cpp
+ ChangeVersionWrapper.h
+ DatabaseAuthorizer.cpp
+ DatabaseAuthorizer.h
+ Database.cpp
+ DatabaseDetails.h
+ Database.h
+ Database.idl
+ DatabaseTask.cpp
+ DatabaseTask.h
+ DatabaseThread.cpp
+ DatabaseThread.h
+ DatabaseTrackerClient.h
+ DatabaseTracker.cpp
+ DatabaseTracker.h
+ LocalStorageTask.cpp
+ LocalStorageTask.h
+ LocalStorageThread.cpp
+ LocalStorageThread.h
+ OriginQuotaManager.cpp
+ OriginQuotaManager.h
+ OriginUsageRecord.cpp
+ OriginUsageRecord.h
+ SQLError.h
+ SQLError.idl
+ SQLResultSet.cpp
+ SQLResultSet.h
+ SQLResultSet.idl
+ SQLResultSetRowList.cpp
+ SQLResultSetRowList.h
+ SQLResultSetRowList.idl
+ SQLStatementCallback.h
+ SQLStatement.cpp
+ SQLStatementErrorCallback.h
+ SQLStatement.h
+ SQLTransactionCallback.h
+ SQLTransactionClient.cpp
+ SQLTransactionClient.h
+ SQLTransactionCoordinator.cpp
+ SQLTransactionCoordinator.h
+ SQLTransaction.cpp
+ SQLTransactionErrorCallback.h
+ SQLTransaction.h
+ SQLTransaction.idl
+ StorageArea.h
+ StorageAreaImpl.cpp
+ StorageAreaImpl.h
+ StorageAreaSync.cpp
+ StorageAreaSync.h
+ Storage.cpp
+ StorageEvent.cpp
+ StorageEventDispatcher.cpp
+ StorageEventDispatcher.h
+ StorageEvent.h
+ StorageEvent.idl
+ Storage.h
+ Storage.idl
+ StorageMap.cpp
+ StorageMap.h
+ StorageNamespace.cpp
+ StorageNamespace.h
+ StorageNamespaceImpl.cpp
+ StorageNamespaceImpl.h
+ StorageSyncManager.cpp
+ StorageSyncManager.h
+2 svg/
+0 animation/
+0 SMILTimeContainer.cpp
+ SMILTimeContainer.h
+ SMILTime.cpp
+ SMILTime.h
+ SVGSMILElement.cpp
+ SVGSMILElement.h
+2 ColorDistance.cpp
+ ColorDistance.h
+ ElementTimeControl.h
+ ElementTimeControl.idl
+ GradientAttributes.h
+ graphics/
+0 filters/
+0 SVGDistantLightSource.h
+ SVGFEConvolveMatrix.cpp
+ SVGFEConvolveMatrix.h
+ SVGFEDiffuseLighting.cpp
+ SVGFEDiffuseLighting.h
+ SVGFEDisplacementMap.cpp
+ SVGFEDisplacementMap.h
+ SVGFEFlood.cpp
+ SVGFEFlood.h
+ SVGFEImage.cpp
+ SVGFEImage.h
+ SVGFEMerge.cpp
+ SVGFEMerge.h
+ SVGFEMorphology.cpp
+ SVGFEMorphology.h
+ SVGFEOffset.cpp
+ SVGFEOffset.h
+ SVGFESpecularLighting.cpp
+ SVGFESpecularLighting.h
+ SVGFETile.cpp
+ SVGFETile.h
+ SVGFETurbulence.cpp
+ SVGFETurbulence.h
+ SVGFilterBuilder.cpp
+ SVGFilterBuilder.h
+ SVGFilter.cpp
+ SVGFilter.h
+ SVGLightSource.cpp
+ SVGLightSource.h
+ SVGPointLightSource.h
+ SVGSpotLightSource.h
+2 SVGImage.cpp
+ SVGImage.h
+ SVGPaintServer.cpp
+ SVGPaintServerGradient.cpp
+ SVGPaintServerGradient.h
+ SVGPaintServer.h
+ SVGPaintServerLinearGradient.cpp
+ SVGPaintServerLinearGradient.h
+ SVGPaintServerPattern.cpp
+ SVGPaintServerPattern.h
+ SVGPaintServerRadialGradient.cpp
+ SVGPaintServerRadialGradient.h
+ SVGPaintServerSolid.cpp
+ SVGPaintServerSolid.h
+ SVGResourceClipper.cpp
+ SVGResourceClipper.h
+ SVGResource.cpp
+ SVGResourceFilter.cpp
+ SVGResourceFilter.h
+ SVGResource.h
+ SVGResourceListener.h
+ SVGResourceMarker.cpp
+ SVGResourceMarker.h
+ SVGResourceMasker.cpp
+ SVGResourceMasker.h
+2 LinearGradientAttributes.h
+ PatternAttributes.h
+ RadialGradientAttributes.h
+ SVGAElement.cpp
+ SVGAElement.h
+ SVGAElement.idl
+ SVGAllInOne.cpp
+ SVGAltGlyphElement.cpp
+ SVGAltGlyphElement.h
+ SVGAltGlyphElement.idl
+ SVGAngle.cpp
+ SVGAngle.h
+ SVGAngle.idl
+ SVGAnimateColorElement.cpp
+ SVGAnimateColorElement.h
+ SVGAnimateColorElement.idl
+ SVGAnimatedAngle.idl
+ SVGAnimatedBoolean.idl
+ SVGAnimatedEnumeration.idl
+ SVGAnimatedInteger.idl
+ SVGAnimatedLength.idl
+ SVGAnimatedLengthList.idl
+ SVGAnimatedNumber.idl
+ SVGAnimatedNumberList.idl
+ SVGAnimatedPathData.cpp
+ SVGAnimatedPathData.h
+ SVGAnimatedPathData.idl
+ SVGAnimatedPoints.cpp
+ SVGAnimatedPoints.h
+ SVGAnimatedPoints.idl
+ SVGAnimatedPreserveAspectRatio.idl
+ SVGAnimatedProperty.h
+ SVGAnimatedRect.idl
+ SVGAnimatedString.idl
+ SVGAnimatedTemplate.h
+ SVGAnimatedTransformList.idl
+ SVGAnimateElement.cpp
+ SVGAnimateElement.h
+ SVGAnimateElement.idl
+ SVGAnimateMotionElement.cpp
+ SVGAnimateMotionElement.h
+ SVGAnimateTransformElement.cpp
+ SVGAnimateTransformElement.h
+ SVGAnimateTransformElement.idl
+ SVGAnimationElement.cpp
+ SVGAnimationElement.h
+ SVGAnimationElement.idl
+ svgattrs.in
+ SVGCircleElement.cpp
+ SVGCircleElement.h
+ SVGCircleElement.idl
+ SVGClipPathElement.cpp
+ SVGClipPathElement.h
+ SVGClipPathElement.idl
+ SVGColor.cpp
+ SVGColor.h
+ SVGColor.idl
+ SVGComponentTransferFunctionElement.cpp
+ SVGComponentTransferFunctionElement.h
+ SVGComponentTransferFunctionElement.idl
+ SVGCursorElement.cpp
+ SVGCursorElement.h
+ SVGCursorElement.idl
+ SVGDefsElement.cpp
+ SVGDefsElement.h
+ SVGDefsElement.idl
+ SVGDescElement.cpp
+ SVGDescElement.h
+ SVGDescElement.idl
+ SVGDocument.cpp
+ SVGDocumentExtensions.cpp
+ SVGDocumentExtensions.h
+ SVGDocument.h
+ SVGDocument.idl
+ SVGElement.cpp
+ SVGElement.h
+ SVGElement.idl
+ SVGElementInstance.cpp
+ SVGElementInstance.h
+ SVGElementInstance.idl
+ SVGElementInstanceList.cpp
+ SVGElementInstanceList.h
+ SVGElementInstanceList.idl
+ SVGEllipseElement.cpp
+ SVGEllipseElement.h
+ SVGEllipseElement.idl
+ SVGException.h
+ SVGException.idl
+ SVGExternalResourcesRequired.cpp
+ SVGExternalResourcesRequired.h
+ SVGExternalResourcesRequired.idl
+ SVGFEBlendElement.cpp
+ SVGFEBlendElement.h
+ SVGFEBlendElement.idl
+ SVGFEColorMatrixElement.cpp
+ SVGFEColorMatrixElement.h
+ SVGFEColorMatrixElement.idl
+ SVGFEComponentTransferElement.cpp
+ SVGFEComponentTransferElement.h
+ SVGFEComponentTransferElement.idl
+ SVGFECompositeElement.cpp
+ SVGFECompositeElement.h
+ SVGFECompositeElement.idl
+ SVGFEDiffuseLightingElement.cpp
+ SVGFEDiffuseLightingElement.h
+ SVGFEDiffuseLightingElement.idl
+ SVGFEDisplacementMapElement.cpp
+ SVGFEDisplacementMapElement.h
+ SVGFEDisplacementMapElement.idl
+ SVGFEDistantLightElement.cpp
+ SVGFEDistantLightElement.h
+ SVGFEDistantLightElement.idl
+ SVGFEFloodElement.cpp
+ SVGFEFloodElement.h
+ SVGFEFloodElement.idl
+ SVGFEFuncAElement.cpp
+ SVGFEFuncAElement.h
+ SVGFEFuncAElement.idl
+ SVGFEFuncBElement.cpp
+ SVGFEFuncBElement.h
+ SVGFEFuncBElement.idl
+ SVGFEFuncGElement.cpp
+ SVGFEFuncGElement.h
+ SVGFEFuncGElement.idl
+ SVGFEFuncRElement.cpp
+ SVGFEFuncRElement.h
+ SVGFEFuncRElement.idl
+ SVGFEGaussianBlurElement.cpp
+ SVGFEGaussianBlurElement.h
+ SVGFEGaussianBlurElement.idl
+ SVGFEImageElement.cpp
+ SVGFEImageElement.h
+ SVGFEImageElement.idl
+ SVGFELightElement.cpp
+ SVGFELightElement.h
+ SVGFEMergeElement.cpp
+ SVGFEMergeElement.h
+ SVGFEMergeElement.idl
+ SVGFEMergeNodeElement.cpp
+ SVGFEMergeNodeElement.h
+ SVGFEMergeNodeElement.idl
+ SVGFEMorphologyElement.cpp
+ SVGFEMorphologyElement.h
+ SVGFEMorphologyElement.idl
+ SVGFEOffsetElement.cpp
+ SVGFEOffsetElement.h
+ SVGFEOffsetElement.idl
+ SVGFEPointLightElement.cpp
+ SVGFEPointLightElement.h
+ SVGFEPointLightElement.idl
+ SVGFESpecularLightingElement.cpp
+ SVGFESpecularLightingElement.h
+ SVGFESpecularLightingElement.idl
+ SVGFESpotLightElement.cpp
+ SVGFESpotLightElement.h
+ SVGFESpotLightElement.idl
+ SVGFETileElement.cpp
+ SVGFETileElement.h
+ SVGFETileElement.idl
+ SVGFETurbulenceElement.cpp
+ SVGFETurbulenceElement.h
+ SVGFETurbulenceElement.idl
+ SVGFilterElement.cpp
+ SVGFilterElement.h
+ SVGFilterElement.idl
+ SVGFilterPrimitiveStandardAttributes.cpp
+ SVGFilterPrimitiveStandardAttributes.h
+ SVGFilterPrimitiveStandardAttributes.idl
+ SVGFitToViewBox.cpp
+ SVGFitToViewBox.h
+ SVGFitToViewBox.idl
+ SVGFont.cpp
+ SVGFontData.cpp
+ SVGFontData.h
+ SVGFontElement.cpp
+ SVGFontElement.h
+ SVGFontElement.idl
+ SVGFontFaceElement.cpp
+ SVGFontFaceElement.h
+ SVGFontFaceElement.idl
+ SVGFontFaceFormatElement.cpp
+ SVGFontFaceFormatElement.h
+ SVGFontFaceFormatElement.idl
+ SVGFontFaceNameElement.cpp
+ SVGFontFaceNameElement.h
+ SVGFontFaceNameElement.idl
+ SVGFontFaceSrcElement.cpp
+ SVGFontFaceSrcElement.h
+ SVGFontFaceSrcElement.idl
+ SVGFontFaceUriElement.cpp
+ SVGFontFaceUriElement.h
+ SVGFontFaceUriElement.idl
+ SVGForeignObjectElement.cpp
+ SVGForeignObjectElement.h
+ SVGForeignObjectElement.idl
+ SVGGElement.cpp
+ SVGGElement.h
+ SVGGElement.idl
+ SVGGlyphElement.cpp
+ SVGGlyphElement.h
+ SVGGlyphElement.idl
+ SVGGlyphMap.h
+ SVGGradientElement.cpp
+ SVGGradientElement.h
+ SVGGradientElement.idl
+ SVGHKernElement.cpp
+ SVGHKernElement.h
+ SVGHKernElement.idl
+ SVGImageElement.cpp
+ SVGImageElement.h
+ SVGImageElement.idl
+ SVGImageLoader.cpp
+ SVGImageLoader.h
+ SVGLangSpace.cpp
+ SVGLangSpace.h
+ SVGLangSpace.idl
+ SVGLength.cpp
+ SVGLength.h
+ SVGLength.idl
+ SVGLengthList.cpp
+ SVGLengthList.h
+ SVGLengthList.idl
+ SVGLinearGradientElement.cpp
+ SVGLinearGradientElement.h
+ SVGLinearGradientElement.idl
+ SVGLineElement.cpp
+ SVGLineElement.h
+ SVGLineElement.idl
+ SVGList.h
+ SVGListTraits.h
+ SVGLocatable.cpp
+ SVGLocatable.h
+ SVGLocatable.idl
+ SVGMarkerElement.cpp
+ SVGMarkerElement.h
+ SVGMarkerElement.idl
+ SVGMaskElement.cpp
+ SVGMaskElement.h
+ SVGMaskElement.idl
+ SVGMatrix.idl
+ SVGMetadataElement.cpp
+ SVGMetadataElement.h
+ SVGMetadataElement.idl
+ SVGMissingGlyphElement.cpp
+ SVGMissingGlyphElement.h
+ SVGMissingGlyphElement.idl
+ SVGMPathElement.cpp
+ SVGMPathElement.h
+ SVGNumber.idl
+ SVGNumberList.cpp
+ SVGNumberList.h
+ SVGNumberList.idl
+ SVGPaint.cpp
+ SVGPaint.h
+ SVGPaint.idl
+ SVGParserUtilities.cpp
+ SVGParserUtilities.h
+ SVGPathElement.cpp
+ SVGPathElement.h
+ SVGPathElement.idl
+ SVGPathSegArcAbs.idl
+ SVGPathSegArc.cpp
+ SVGPathSegArc.h
+ SVGPathSegArcRel.idl
+ SVGPathSegClosePath.cpp
+ SVGPathSegClosePath.h
+ SVGPathSegClosePath.idl
+ SVGPathSegCurvetoCubicAbs.idl
+ SVGPathSegCurvetoCubic.cpp
+ SVGPathSegCurvetoCubic.h
+ SVGPathSegCurvetoCubicRel.idl
+ SVGPathSegCurvetoCubicSmoothAbs.idl
+ SVGPathSegCurvetoCubicSmooth.cpp
+ SVGPathSegCurvetoCubicSmooth.h
+ SVGPathSegCurvetoCubicSmoothRel.idl
+ SVGPathSegCurvetoQuadraticAbs.idl
+ SVGPathSegCurvetoQuadratic.cpp
+ SVGPathSegCurvetoQuadratic.h
+ SVGPathSegCurvetoQuadraticRel.idl
+ SVGPathSegCurvetoQuadraticSmoothAbs.idl
+ SVGPathSegCurvetoQuadraticSmooth.cpp
+ SVGPathSegCurvetoQuadraticSmooth.h
+ SVGPathSegCurvetoQuadraticSmoothRel.idl
+ SVGPathSeg.h
+ SVGPathSeg.idl
+ SVGPathSegLinetoAbs.idl
+ SVGPathSegLineto.cpp
+ SVGPathSegLineto.h
+ SVGPathSegLinetoHorizontalAbs.idl
+ SVGPathSegLinetoHorizontal.cpp
+ SVGPathSegLinetoHorizontal.h
+ SVGPathSegLinetoHorizontalRel.idl
+ SVGPathSegLinetoRel.idl
+ SVGPathSegLinetoVerticalAbs.idl
+ SVGPathSegLinetoVertical.cpp
+ SVGPathSegLinetoVertical.h
+ SVGPathSegLinetoVerticalRel.idl
+ SVGPathSegList.cpp
+ SVGPathSegList.h
+ SVGPathSegList.idl
+ SVGPathSegMovetoAbs.idl
+ SVGPathSegMoveto.cpp
+ SVGPathSegMoveto.h
+ SVGPathSegMovetoRel.idl
+ SVGPatternElement.cpp
+ SVGPatternElement.h
+ SVGPatternElement.idl
+ SVGPoint.idl
+ SVGPointList.cpp
+ SVGPointList.h
+ SVGPointList.idl
+ SVGPolyElement.cpp
+ SVGPolyElement.h
+ SVGPolygonElement.cpp
+ SVGPolygonElement.h
+ SVGPolygonElement.idl
+ SVGPolylineElement.cpp
+ SVGPolylineElement.h
+ SVGPolylineElement.idl
+ SVGPreserveAspectRatio.cpp
+ SVGPreserveAspectRatio.h
+ SVGPreserveAspectRatio.idl
+ SVGRadialGradientElement.cpp
+ SVGRadialGradientElement.h
+ SVGRadialGradientElement.idl
+ SVGRectElement.cpp
+ SVGRectElement.h
+ SVGRectElement.idl
+ SVGRect.idl
+ SVGRenderingIntent.h
+ SVGRenderingIntent.idl
+ SVGScriptElement.cpp
+ SVGScriptElement.h
+ SVGScriptElement.idl
+ SVGSetElement.cpp
+ SVGSetElement.h
+ SVGSetElement.idl
+ SVGStopElement.cpp
+ SVGStopElement.h
+ SVGStopElement.idl
+ SVGStringList.cpp
+ SVGStringList.h
+ SVGStringList.idl
+ SVGStylable.cpp
+ SVGStylable.h
+ SVGStylable.idl
+ SVGStyledElement.cpp
+ SVGStyledElement.h
+ SVGStyledLocatableElement.cpp
+ SVGStyledLocatableElement.h
+ SVGStyledTransformableElement.cpp
+ SVGStyledTransformableElement.h
+ SVGStyleElement.cpp
+ SVGStyleElement.h
+ SVGStyleElement.idl
+ SVGSVGElement.cpp
+ SVGSVGElement.h
+ SVGSVGElement.idl
+ SVGSwitchElement.cpp
+ SVGSwitchElement.h
+ SVGSwitchElement.idl
+ SVGSymbolElement.cpp
+ SVGSymbolElement.h
+ SVGSymbolElement.idl
+ svgtags.in
+ SVGTests.cpp
+ SVGTests.h
+ SVGTests.idl
+ SVGTextContentElement.cpp
+ SVGTextContentElement.h
+ SVGTextContentElement.idl
+ SVGTextElement.cpp
+ SVGTextElement.h
+ SVGTextElement.idl
+ SVGTextPathElement.cpp
+ SVGTextPathElement.h
+ SVGTextPathElement.idl
+ SVGTextPositioningElement.cpp
+ SVGTextPositioningElement.h
+ SVGTextPositioningElement.idl
+ SVGTitleElement.cpp
+ SVGTitleElement.h
+ SVGTitleElement.idl
+ SVGTransformable.cpp
+ SVGTransformable.h
+ SVGTransformable.idl
+ SVGTransform.cpp
+ SVGTransformDistance.cpp
+ SVGTransformDistance.h
+ SVGTransform.h
+ SVGTransform.idl
+ SVGTransformList.cpp
+ SVGTransformList.h
+ SVGTransformList.idl
+ SVGTRefElement.cpp
+ SVGTRefElement.h
+ SVGTRefElement.idl
+ SVGTSpanElement.cpp
+ SVGTSpanElement.h
+ SVGTSpanElement.idl
+ SVGUnitTypes.h
+ SVGUnitTypes.idl
+ SVGURIReference.cpp
+ SVGURIReference.h
+ SVGURIReference.idl
+ SVGUseElement.cpp
+ SVGUseElement.h
+ SVGUseElement.idl
+ SVGViewElement.cpp
+ SVGViewElement.h
+ SVGViewElement.idl
+ SVGViewSpec.cpp
+ SVGViewSpec.h
+ SVGViewSpec.idl
+ SVGZoomAndPan.cpp
+ SVGZoomAndPan.h
+ SVGZoomAndPan.idl
+ SVGZoomEvent.cpp
+ SVGZoomEvent.h
+ SVGZoomEvent.idl
+ SynchronizablePropertyController.cpp
+ SynchronizablePropertyController.h
+ SynchronizableTypeWrapper.h
+ xlinkattrs.in
+2 WebCore.3DRendering.exp
+ WebCore.DashboardSupport.exp
+ WebCore.gypi
+ WebCore.JNI.exp
+ WebCore.NPAPI.exp
+ WebCore.order
+ WebCorePrefix.cpp
+ WebCorePrefix.h
+ WebCore.pro
+ WebCore.qrc
+ WebCore.SVG.Animation.exp
+ WebCore.SVG.exp
+ WebCore.SVG.Filters.exp
+ WebCore.SVG.ForeignObject.exp
+ WebCore.Tiger.exp
+ WebCore.Video.exp
+ WebCore.VideoProxy.exp
+ websockets/
+0 WebSocketChannelClient.h
+ WebSocketChannel.cpp
+ WebSocketChannel.h
+ WebSocket.cpp
+ WebSocket.h
+ WebSocketHandshake.cpp
+ WebSocketHandshake.h
+ WebSocket.idl
+2 wml/
+0 WMLAccessElement.cpp
+ WMLAccessElement.h
+ WMLAElement.cpp
+ WMLAElement.h
+ WMLAnchorElement.cpp
+ WMLAnchorElement.h
+ WMLAttributeNames.in
+ WMLBRElement.cpp
+ WMLBRElement.h
+ WMLCardElement.cpp
+ WMLCardElement.h
+ WMLDocument.cpp
+ WMLDocument.h
+ WMLDoElement.cpp
+ WMLDoElement.h
+ WMLElement.cpp
+ WMLElement.h
+ WMLErrorHandling.cpp
+ WMLErrorHandling.h
+ WMLEventHandlingElement.cpp
+ WMLEventHandlingElement.h
+ WMLFieldSetElement.cpp
+ WMLFieldSetElement.h
+ WMLFormControlElement.cpp
+ WMLFormControlElement.h
+ WMLGoElement.cpp
+ WMLGoElement.h
+ WMLImageElement.cpp
+ WMLImageElement.h
+ WMLImageLoader.cpp
+ WMLImageLoader.h
+ WMLInputElement.cpp
+ WMLInputElement.h
+ WMLInsertedLegendElement.cpp
+ WMLInsertedLegendElement.h
+ WMLIntrinsicEvent.cpp
+ WMLIntrinsicEvent.h
+ WMLIntrinsicEventHandler.cpp
+ WMLIntrinsicEventHandler.h
+ WMLMetaElement.cpp
+ WMLMetaElement.h
+ WMLNoopElement.cpp
+ WMLNoopElement.h
+ WMLOnEventElement.cpp
+ WMLOnEventElement.h
+ WMLOptGroupElement.cpp
+ WMLOptGroupElement.h
+ WMLOptionElement.cpp
+ WMLOptionElement.h
+ WMLPageState.cpp
+ WMLPageState.h
+ WMLPElement.cpp
+ WMLPElement.h
+ WMLPostfieldElement.cpp
+ WMLPostfieldElement.h
+ WMLPrevElement.cpp
+ WMLPrevElement.h
+ WMLRefreshElement.cpp
+ WMLRefreshElement.h
+ WMLSelectElement.cpp
+ WMLSelectElement.h
+ WMLSetvarElement.cpp
+ WMLSetvarElement.h
+ WMLTableElement.cpp
+ WMLTableElement.h
+ WMLTagNames.in
+ WMLTaskElement.cpp
+ WMLTaskElement.h
+ WMLTemplateElement.cpp
+ WMLTemplateElement.h
+ WMLTimerElement.cpp
+ WMLTimerElement.h
+ WMLVariables.cpp
+ WMLVariables.h
+2 workers/
+0 AbstractWorker.cpp
+ AbstractWorker.h
+ AbstractWorker.idl
+ DedicatedWorkerContext.cpp
+ DedicatedWorkerContext.h
+ DedicatedWorkerContext.idl
+ DedicatedWorkerThread.cpp
+ DedicatedWorkerThread.h
+ DefaultSharedWorkerRepository.cpp
+ DefaultSharedWorkerRepository.h
+ GenericWorkerTask.h
+ SharedWorkerContext.cpp
+ SharedWorkerContext.h
+ SharedWorkerContext.idl
+ SharedWorker.cpp
+ SharedWorker.h
+ SharedWorker.idl
+ SharedWorkerRepository.h
+ SharedWorkerThread.cpp
+ SharedWorkerThread.h
+ WorkerContext.cpp
+ WorkerContext.h
+ WorkerContext.idl
+ WorkerContextProxy.h
+ Worker.cpp
+ Worker.h
+ Worker.idl
+ WorkerLoaderProxy.h
+ WorkerLocation.cpp
+ WorkerLocation.h
+ WorkerLocation.idl
+ WorkerMessagingProxy.cpp
+ WorkerMessagingProxy.h
+ WorkerObjectProxy.h
+ WorkerReportingProxy.h
+ WorkerRunLoop.cpp
+ WorkerRunLoop.h
+ WorkerScriptLoaderClient.h
+ WorkerScriptLoader.cpp
+ WorkerScriptLoader.h
+ WorkerThread.cpp
+ WorkerThread.h
+2 xml/
+0 DOMParser.cpp
+ DOMParser.h
+ DOMParser.idl
+ NativeXPathNSResolver.cpp
+ NativeXPathNSResolver.h
+ xmlattrs.in
+ XMLHttpRequest.cpp
+ XMLHttpRequestException.h
+ XMLHttpRequestException.idl
+ XMLHttpRequest.h
+ XMLHttpRequest.idl
+ XMLHttpRequestProgressEvent.h
+ XMLHttpRequestProgressEvent.idl
+ XMLHttpRequestUpload.cpp
+ XMLHttpRequestUpload.h
+ XMLHttpRequestUpload.idl
+ XMLSerializer.cpp
+ XMLSerializer.h
+ XMLSerializer.idl
+ XPathEvaluator.cpp
+ XPathEvaluator.h
+ XPathEvaluator.idl
+ XPathException.h
+ XPathException.idl
+ XPathExpression.cpp
+ XPathExpression.h
+ XPathExpression.idl
+ XPathExpressionNode.cpp
+ XPathExpressionNode.h
+ XPathFunctions.cpp
+ XPathFunctions.h
+ XPathGrammar.y
+ XPathNamespace.cpp
+ XPathNamespace.h
+ XPathNodeSet.cpp
+ XPathNodeSet.h
+ XPathNSResolver.cpp
+ XPathNSResolver.h
+ XPathNSResolver.idl
+ XPathParser.cpp
+ XPathParser.h
+ XPathPath.cpp
+ XPathPath.h
+ XPathPredicate.cpp
+ XPathPredicate.h
+ XPathResult.cpp
+ XPathResult.h
+ XPathResult.idl
+ XPathStep.cpp
+ XPathStep.h
+ XPathUtil.cpp
+ XPathUtil.h
+ XPathValue.cpp
+ XPathValue.h
+ XPathVariableReference.cpp
+ XPathVariableReference.h
+ XSLImportRule.cpp
+ XSLImportRule.h
+ XSLStyleSheet.h
+ XSLStyleSheetLibxslt.cpp
+ XSLStyleSheetQt.cpp
+ XSLTExtensions.cpp
+ XSLTExtensions.h
+ XSLTProcessor.cpp
+ XSLTProcessor.h
+ XSLTProcessor.idl
+ XSLTProcessorLibxslt.cpp
+ XSLTProcessorQt.cpp
+ XSLTUnicodeSort.cpp
+ XSLTUnicodeSort.h
+3 WebKit/
+0 ChangeLog
+ LICENSE
+ mac/
+0 Configurations/
+0 Version.xcconfig
+2 Workers/
+0 WebWorkersPrivate.h
+ WebWorkersPrivate.mm
+4 WebKit.pri
+ WebKit/qt/
+0 Api/
+0 headers.pri
+ qgraphicswebview.cpp
+ qgraphicswebview.h
+ qwebdatabase.cpp
+ qwebdatabase.h
+ qwebdatabase_p.h
+ qwebelement.cpp
+ qwebelement.h
+ qwebframe.cpp
+ qwebframe.h
+ qwebframe_p.h
+ qwebhistory.cpp
+ qwebhistory.h
+ qwebhistoryinterface.cpp
+ qwebhistoryinterface.h
+ qwebhistory_p.h
+ qwebinspector.cpp
+ qwebinspector.h
+ qwebinspector_p.h
+ qwebkitglobal.h
+ qwebkitversion.cpp
+ qwebkitversion.h
+ qwebpage.cpp
+ qwebpage.h
+ qwebpage_p.h
+ qwebplugindatabase.cpp
+ qwebplugindatabase_p.h
+ qwebpluginfactory.cpp
+ qwebpluginfactory.h
+ qwebsecurityorigin.cpp
+ qwebsecurityorigin.h
+ qwebsecurityorigin_p.h
+ qwebsettings.cpp
+ qwebsettings.h
+ qwebview.cpp
+ qwebview.h
+2 ChangeLog
+ docs/
+0 docs.pri
+ qtwebkit.qdoc
+0 conf
+2 qwebview-diagram.png
+ webkitsnippets/
+0 qtwebkit_build_snippet.qdoc
+ qtwebkit_qwebinspector_snippet.cpp
+ qtwebkit_qwebview_snippet.cpp
+ simple/
+0 main.cpp
+ simple.pro
+2 webelement/
+0 main.cpp
+ webelement.pro
+2 webpage/
+0 main.cpp
+ webpage.pro
+4 tests/
+0 benchmarks/
+0 loading/
+0 tst_loading.cpp
+ tst_loading.pro
+2 painting/
+0 tst_painting.cpp
+ tst_painting.pro
+3 qgraphicswebview/
+0 qgraphicswebview.pro
+ tst_qgraphicswebview.cpp
+2 qwebelement/
+0 image.png
+ qwebelement.pro
+ qwebelement.qrc
+ style2.css
+ style.css
+ tst_qwebelement.cpp
+2 qwebframe/
+0 image.png
+ qwebframe.pro
+ qwebframe.qrc
+ resources/
+0 image2.png
+2 style.css
+ test1.html
+ test2.html
+ tst_qwebframe.cpp
+2 qwebhistory/
+0 data/
+0 page1.html
+ page2.html
+ page3.html
+ page4.html
+ page5.html
+ page6.html
+3 qwebhistoryinterface/
+0 qwebhistoryinterface.pro
+ tst_qwebhistoryinterface.cpp
+2 qwebhistory/qwebhistory.pro
+ qwebhistory/tst_qwebhistory.cpp
+ qwebhistory/tst_qwebhistory.qrc
+ qwebpage/
+0 frametest/
+0 frame_a.html
+ iframe2.html
+ iframe3.html
+ iframe.html
+ index.html
+2 qwebpage.pro
+ tst_qwebpage.cpp
+ tst_qwebpage.qrc
+2 qwebplugindatabase/
+0 qwebplugindatabase.pro
+ tst_qwebplugindatabase.cpp
+2 qwebview/
+0 data/
+0 frame_a.html
+ index.html
+2 .gitignore
+ qwebview.pro
+ tst_qwebview.cpp
+ tst_qwebview.qrc
+2 resources/
+0 test.swf
+2 tests.pro
+ util.h
+2 WebCoreSupport/
+0 ChromeClientQt.cpp
+ ChromeClientQt.h
+ ContextMenuClientQt.cpp
+ ContextMenuClientQt.h
+ DragClientQt.cpp
+ DragClientQt.h
+ EditCommandQt.cpp
+ EditCommandQt.h
+ EditorClientQt.cpp
+ EditorClientQt.h
+ FrameLoaderClientQt.cpp
+ FrameLoaderClientQt.h
+ InspectorClientQt.cpp
+ InspectorClientQt.h
+2 WebKit_pch.h
+2 WebKit/scripts/
+0 generate-webkitversion.pl
+2 WebKit/StringsNotToBeLocalized.txt
+2 wintab/
+0 pktdef.h
+ wintab.h
+2 xorg/
+0 wacomcfg.h
+2 zlib/
+0 adler32.c
+ algorithm.txt
+ ChangeLog
+ compress.c
+ configure
+ crc32.c
+ crc32.h
+ deflate.c
+ deflate.h
+ example.c
+ examples/
+0 fitblk.c
+ gun.c
+ gzappend.c
+ gzjoin.c
+ gzlog.c
+ gzlog.h
+ README.examples
+ zlib_how.html
+ zpipe.c
+ zran.c
+2 FAQ
+ gzio.c
+ INDEX
+ infback.c
+ inffast.c
+ inffast.h
+ inffixed.h
+ inflate.c
+ inflate.h
+ inftrees.c
+ inftrees.h
+ Makefile
+0 .in
+2 make_vms.com
+ minigzip.c
+ projects/
+0 README.projects
+ visualc6/
+0 example.dsp
+ minigzip.dsp
+ README.txt
+ zlib.dsp
+ zlib.dsw
+3 README
+ trees.c
+ trees.h
+ uncompr.c
+ win32/
+0 DLL_FAQ.txt
+ Makefile.bor
+ Makefile.emx
+ Makefile.gcc
+ Makefile.msc
+ VisualC.txt
+ zlib1.rc
+ zlib.def
+2 zconf.h
+ zconf.in.h
+ zlib.3
+ zlib.h
+ zutil.c
+ zutil.h
+3 activeqt/
+0 activeqt.pro
+ container/
+0 container.pro
+ qaxbase.cpp
+ qaxbase.h
+ qaxdump.cpp
+ qaxobject.cpp
+ qaxobject.h
+ qaxscript.cpp
+ qaxscript.h
+ qaxscriptwrapper.cpp
+ qaxselect.cpp
+ qaxselect.h
+ qaxselect.ui
+ qaxwidget.cpp
+ qaxwidget.h
+2 control/
+0 control.pro
+ qaxaggregated.h
+ qaxbindable.cpp
+ qaxbindable.h
+ qaxfactory.cpp
+ qaxfactory.h
+ qaxmain.cpp
+ qaxserverbase.cpp
+ qaxserver.cpp
+ qaxserver.def
+ qaxserverdll.cpp
+ qaxserver.ico
+ qaxservermain.cpp
+ qaxserver.rc
+2 shared/
+0 qaxtypes.cpp
+ qaxtypes.h
+3 corelib/
+0 animation/
+0 animation.pri
+ qabstractanimation.cpp
+ qabstractanimation.h
+ qabstractanimation_p.h
+ qanimationgroup.cpp
+ qanimationgroup.h
+ qanimationgroup_p.h
+ qparallelanimationgroup.cpp
+ qparallelanimationgroup.h
+ qparallelanimationgroup_p.h
+ qpauseanimation.cpp
+ qpauseanimation.h
+ qpropertyanimation.cpp
+ qpropertyanimation.h
+ qpropertyanimation_p.h
+ qsequentialanimationgroup.cpp
+ qsequentialanimationgroup.h
+ qsequentialanimationgroup_p.h
+ qvariantanimation.cpp
+ qvariantanimation.h
+ qvariantanimation_p.h
+2 arch/
+0 alpha/
+0 arch.pri
+ qatomic_alpha.s
+2 arch.pri
+ arm/
+0 arch.pri
+ qatomic_arm.cpp
+2 armv6/
+0 arch.pri
+ qatomic_generic_armv6.cpp
+2 avr32/
+0 arch.pri
+2 bfin/
+0 arch.pri
+2 generic/
+0 arch.pri
+ qatomic_generic_unix.cpp
+ qatomic_generic_windows.cpp
+2 i386/
+0 arch.pri
+ qatomic_i386.s
+2 ia64/
+0 arch.pri
+ qatomic_ia64.s
+2 macosx/
+0 arch.pri
+ qatomic32_ppc.s
+2 mips/
+0 arch.pri
+ qatomic_mips32.s
+ qatomic_mips64.s
+2 parisc/
+0 arch.pri
+ qatomic_parisc.cpp
+ q_ldcw.s
+2 powerpc/
+0 arch.pri
+ qatomic32.s
+ qatomic64.s
+2 qatomic_alpha.h
+ qatomic_arch.h
+ qatomic_arm.h
+ qatomic_armv6.h
+ qatomic_avr32.h
+ qatomic_bfin.h
+ qatomic_bootstrap.h
+ qatomic_generic.h
+ qatomic_i386.h
+ qatomic_ia64.h
+ qatomic_macosx.h
+ qatomic_mips.h
+ qatomic_parisc.h
+ qatomic_powerpc.h
+ qatomic_s390.h
+ qatomic_sh4a.h
+ qatomic_sh.h
+ qatomic_sparc.h
+ qatomic_symbian.h
+ qatomic_vxworks.h
+ qatomic_windowsce.h
+ qatomic_windows.h
+ qatomic_x86_64.h
+ s390/
+0 arch.pri
+2 sh/
+ sh4a/
+0 arch.pri
+2 sh/arch.pri
+ sh/qatomic_sh.cpp
+ sparc/
+0 arch.pri
+ qatomic32.s
+ qatomic64.s
+ qatomic_sparc.cpp
+2 symbian/
+0 arch.pri
+ qatomic_symbian.cpp
+2 vxworks/
+0 arch.pri
+ qatomic_ppc.s
+2 windows/
+0 arch.pri
+2 x86_64/
+0 arch.pri
+ qatomic_sun.s
+3 codecs/
+0 codecs.pri
+ codecs.qdoc
+ qfontlaocodec.cpp
+ qfontlaocodec_p.h
+ qiconvcodec.cpp
+ qiconvcodec_p.h
+ qisciicodec.cpp
+ qisciicodec_p.h
+ qlatincodec.cpp
+ qlatincodec_p.h
+ qsimplecodec.cpp
+ qsimplecodec_p.h
+ qtextcodec.cpp
+ qtextcodec.h
+ qtextcodec_p.h
+ qtextcodecplugin.cpp
+ qtextcodecplugin.h
+ qtsciicodec.cpp
+ qtsciicodec_p.h
+ qutfcodec.cpp
+ qutfcodec_p.h
+2 concurrent/
+0 concurrent.pri
+ qfuture.cpp
+ qfuture.h
+ qfutureinterface.cpp
+ qfutureinterface.h
+ qfutureinterface_p.h
+ qfuturesynchronizer.cpp
+ qfuturesynchronizer.h
+ qfuturewatcher.cpp
+ qfuturewatcher.h
+ qfuturewatcher_p.h
+ qrunnable.cpp
+ qrunnable.h
+ qtconcurrentcompilertest.h
+ qtconcurrentexception.cpp
+ qtconcurrentexception.h
+ qtconcurrentfilter.cpp
+ qtconcurrentfilter.h
+ qtconcurrentfilterkernel.h
+ qtconcurrentfunctionwrappers.h
+ qtconcurrentiteratekernel.cpp
+ qtconcurrentiteratekernel.h
+ qtconcurrentmap.cpp
+ qtconcurrentmap.h
+ qtconcurrentmapkernel.h
+ qtconcurrentmedian.h
+ qtconcurrentreducekernel.h
+ qtconcurrentresultstore.cpp
+ qtconcurrentresultstore.h
+ qtconcurrentrunbase.h
+ qtconcurrentrun.cpp
+ qtconcurrentrun.h
+ qtconcurrentstoredfunctioncall.h
+ qtconcurrentthreadengine.cpp
+ qtconcurrentthreadengine.h
+ qthreadpool.cpp
+ qthreadpool.h
+ qthreadpool_p.h
+2 corelib.pro
+ eval.pri
+ global/
+0 global.pri
+ qconfig-dist.h
+ qconfig-large.h
+ qconfig-medium.h
+ qconfig-minimal.h
+ qconfig-small.h
+ qendian.h
+ qendian.qdoc
+ qfeatures.h
+ qfeatures.txt
+ qglobal.cpp
+ qglobal.h
+ qlibraryinfo.cpp
+ qlibraryinfo.h
+ qmalloc.cpp
+ qnamespace.h
+ qnamespace.qdoc
+ qnumeric.cpp
+ qnumeric.h
+ qnumeric_p.h
+ qt_pch.h
+ qt_windows.h
+2 io/
+0 io.pri
+ qabstractfileengine.cpp
+ qabstractfileengine.h
+ qabstractfileengine_p.h
+ qbuffer.cpp
+ qbuffer.h
+ qdatastream.cpp
+ qdatastream.h
+ qdatastream_p.h
+ qdebug.cpp
+ qdebug.h
+ qdir.cpp
+ qdir.h
+ qdiriterator.cpp
+ qdiriterator.h
+ qfile.cpp
+ qfile.h
+ qfileinfo.cpp
+ qfileinfo.h
+ qfileinfo_p.h
+ qfile_p.h
+ qfilesystemwatcher.cpp
+ qfilesystemwatcher_dnotify.cpp
+ qfilesystemwatcher_dnotify_p.h
+ qfilesystemwatcher_fsevents.cpp
+ qfilesystemwatcher_fsevents_p.h
+ qfilesystemwatcher.h
+ qfilesystemwatcher_inotify.cpp
+ qfilesystemwatcher_inotify_p.h
+ qfilesystemwatcher_kqueue.cpp
+ qfilesystemwatcher_kqueue_p.h
+ qfilesystemwatcher_p.h
+ qfilesystemwatcher_symbian.cpp
+ qfilesystemwatcher_symbian_p.h
+ qfilesystemwatcher_win.cpp
+ qfilesystemwatcher_win_p.h
+ qfsfileengine.cpp
+ qfsfileengine.h
+ qfsfileengine_iterator.cpp
+ qfsfileengine_iterator_p.h
+ qfsfileengine_iterator_unix.cpp
+ qfsfileengine_iterator_win.cpp
+ qfsfileengine_p.h
+ qfsfileengine_unix.cpp
+ qfsfileengine_win.cpp
+ qiodevice.cpp
+ qiodevice.h
+ qiodevice_p.h
+ qnoncontiguousbytedevice.cpp
+ qnoncontiguousbytedevice_p.h
+ qprocess.cpp
+ qprocess.h
+ qprocess_p.h
+ qprocess_symbian.cpp
+ qprocess_unix.cpp
+ qprocess_win.cpp
+ qresource.cpp
+ qresource.h
+ qresource_iterator.cpp
+ qresource_iterator_p.h
+ qresource_p.h
+ qsettings.cpp
+ qsettings.h
+ qsettings_mac.cpp
+ qsettings_p.h
+ qsettings_win.cpp
+ qtemporaryfile.cpp
+ qtemporaryfile.h
+ qtextstream.cpp
+ qtextstream.h
+ qurl.cpp
+ qurl.h
+ qwindowspipewriter.cpp
+ qwindowspipewriter_p.h
+2 kernel/
+0 kernel.pri
+ qabstracteventdispatcher.cpp
+ qabstracteventdispatcher.h
+ qabstracteventdispatcher_p.h
+ qabstractitemmodel.cpp
+ qabstractitemmodel.h
+ qabstractitemmodel_p.h
+ qbasictimer.cpp
+ qbasictimer.h
+ qcoreapplication.cpp
+ qcoreapplication.h
+ qcoreapplication_mac.cpp
+ qcoreapplication_p.h
+ qcoreapplication_win.cpp
+ qcorecmdlineargs_p.h
+ qcoreevent.cpp
+ qcoreevent.h
+ qcoreglobaldata.cpp
+ qcoreglobaldata_p.h
+ qcore_mac.cpp
+ qcore_mac_p.h
+ qcore_symbian_p.cpp
+ qcore_symbian_p.h
+ qcore_unix.cpp
+ qcore_unix_p.h
+ qcrashhandler.cpp
+ qcrashhandler_p.h
+ qeventdispatcher_glib.cpp
+ qeventdispatcher_glib_p.h
+ qeventdispatcher_symbian.cpp
+ qeventdispatcher_symbian_p.h
+ qeventdispatcher_unix.cpp
+ qeventdispatcher_unix_p.h
+ qeventdispatcher_win.cpp
+ qeventdispatcher_win_p.h
+ qeventloop.cpp
+ qeventloop.h
+ qfunctions_p.h
+ qfunctions_vxworks.cpp
+ qfunctions_vxworks.h
+ qfunctions_wince.cpp
+ qfunctions_wince.h
+ qguard_p.h
+ qmath.cpp
+ qmath.h
+ qmetaobject.cpp
+ qmetaobject.h
+ qmetaobject_p.h
+ qmetatype.cpp
+ qmetatype.h
+ qmimedata.cpp
+ qmimedata.h
+ qobjectcleanuphandler.cpp
+ qobjectcleanuphandler.h
+ qobject.cpp
+ qobjectdefs.h
+ qobject.h
+ qobject_p.h
+ qpointer.cpp
+ qpointer.h
+ qsharedmemory.cpp
+ qsharedmemory.h
+ qsharedmemory_p.h
+ qsharedmemory_symbian.cpp
+ qsharedmemory_unix.cpp
+ qsharedmemory_win.cpp
+ qsignalmapper.cpp
+ qsignalmapper.h
+ qsocketnotifier.cpp
+ qsocketnotifier.h
+ qsystemsemaphore.cpp
+ qsystemsemaphore.h
+ qsystemsemaphore_p.h
+ qsystemsemaphore_symbian.cpp
+ qsystemsemaphore_unix.cpp
+ qsystemsemaphore_win.cpp
+ qtcore_eval.cpp
+ qtimer.cpp
+ qtimer.h
+ qtranslator.cpp
+ qtranslator.h
+ qtranslator_p.h
+ qvariant.cpp
+ qvariant.h
+ qvariant_p.h
+ qwineventnotifier_p.cpp
+ qwineventnotifier_p.h
+2 plugin/
+0 plugin.pri
+ qfactoryinterface.h
+ qfactoryloader.cpp
+ qfactoryloader_p.h
+ qlibrary.cpp
+ qlibrary.h
+ qlibrary_p.h
+ qlibrary_unix.cpp
+ qlibrary_win.cpp
+ qplugin.h
+ qpluginloader.cpp
+ qpluginloader.h
+ qplugin.qdoc
+ quuid.cpp
+ quuid.h
+2 QtCore.dynlist
+ statemachine/
+0 qabstractstate.cpp
+ qabstractstate.h
+ qabstractstate_p.h
+ qabstracttransition.cpp
+ qabstracttransition.h
+ qabstracttransition_p.h
+ qeventtransition.cpp
+ qeventtransition.h
+ qeventtransition_p.h
+ qfinalstate.cpp
+ qfinalstate.h
+ qhistorystate.cpp
+ qhistorystate.h
+ qhistorystate_p.h
+ qsignaleventgenerator_p.h
+ qsignaltransition.cpp
+ qsignaltransition.h
+ qsignaltransition_p.h
+ qstate.cpp
+ qstate.h
+ qstatemachine.cpp
+ qstatemachine.h
+ qstatemachine_p.h
+ qstate_p.h
+ statemachine.pri
+2 thread/
+0 qatomic.cpp
+ qatomic.h
+ qbasicatomic.h
+ qmutex.cpp
+ qmutex.h
+ qmutex_p.h
+ qmutexpool.cpp
+ qmutexpool_p.h
+ qmutex_unix.cpp
+ qmutex_win.cpp
+ qorderedmutexlocker_p.h
+ qreadwritelock.cpp
+ qreadwritelock.h
+ qreadwritelock_p.h
+ qsemaphore.cpp
+ qsemaphore.h
+ qthread.cpp
+ qthread.h
+ qthread_p.h
+ qthreadstorage.cpp
+ qthreadstorage.h
+ qthread_unix.cpp
+ qthread_win.cpp
+ qwaitcondition.h
+ qwaitcondition.qdoc
+ qwaitcondition_unix.cpp
+ qwaitcondition_win.cpp
+ thread.pri
+2 tools/
+0 qalgorithms.h
+ qalgorithms.qdoc
+ qbitarray.cpp
+ qbitarray.h
+ qbytearray.cpp
+ qbytearray.h
+ qbytearraymatcher.cpp
+ qbytearraymatcher.h
+ qbytedata_p.h
+ qcache.h
+ qcache.qdoc
+ qchar.cpp
+ qchar.h
+ qcontainerfwd.h
+ qcontiguouscache.cpp
+ qcontiguouscache.h
+ qcryptographichash.cpp
+ qcryptographichash.h
+ qdatetime.cpp
+ qdatetime.h
+ qdatetime_p.h
+ qeasingcurve.cpp
+ qeasingcurve.h
+ qharfbuzz.cpp
+ qharfbuzz_p.h
+ qhash.cpp
+ qhash.h
+ qiterator.h
+ qiterator.qdoc
+ qline.cpp
+ qline.h
+ qlinkedlist.cpp
+ qlinkedlist.h
+ qlist.cpp
+ qlist.h
+ qlocale.cpp
+ qlocale_data_p.h
+ qlocale.h
+ qlocale_p.h
+ qlocale_symbian.cpp
+ qmap.cpp
+ qmap.h
+ qmargins.cpp
+ qmargins.h
+ qpair.h
+ qpair.qdoc
+ qpodlist_p.h
+ qpoint.cpp
+ qpoint.h
+ qqueue.cpp
+ qqueue.h
+ qrect.cpp
+ qrect.h
+ qregexp.cpp
+ qregexp.h
+ qringbuffer_p.h
+ qscopedpointer.cpp
+ qscopedpointer.h
+ qscopedpointer_p.h
+ qset.h
+ qset.qdoc
+ qshareddata.cpp
+ qshareddata.h
+ qsharedpointer.cpp
+ qsharedpointer.h
+ qsharedpointer_impl.h
+ qsize.cpp
+ qsize.h
+ qstack.cpp
+ qstack.h
+ qstringbuilder.cpp
+ qstringbuilder.h
+ qstring.cpp
+ qstring.h
+ qstringlist.cpp
+ qstringlist.h
+ qstringmatcher.cpp
+ qstringmatcher.h
+ qtextboundaryfinder.cpp
+ qtextboundaryfinder.h
+ qtimeline.cpp
+ qtimeline.h
+ qtools_p.h
+ qunicodetables.cpp
+ qunicodetables_p.h
+ qvarlengtharray.h
+ qvarlengtharray.qdoc
+ qvector.cpp
+ qvector.h
+ qvsnprintf.cpp
+ tools.pri
+2 xml/
+0 .gitignore
+ make-parser.sh
+ qxmlstream.cpp
+ qxmlstream.g
+ qxmlstream.h
+ qxmlstream_p.h
+ qxmlutils.cpp
+ qxmlutils_p.h
+ xml.pri
+3 dbus/
+0 dbus.pro
+ qdbusabstractadaptor.cpp
+ qdbusabstractadaptor.h
+ qdbusabstractadaptor_p.h
+ qdbusabstractinterface.cpp
+ qdbusabstractinterface.h
+ qdbusabstractinterface_p.h
+ qdbusargument.cpp
+ qdbusargument.h
+ qdbusargument_p.h
+ qdbusconnection.cpp
+ qdbusconnection.h
+ qdbusconnectioninterface.cpp
+ qdbusconnectioninterface.h
+ qdbusconnection_p.h
+ qdbuscontext.cpp
+ qdbuscontext.h
+ qdbuscontext_p.h
+ qdbusdemarshaller.cpp
+ qdbuserror.cpp
+ qdbuserror.h
+ qdbusextratypes.cpp
+ qdbusextratypes.h
+ qdbusintegrator.cpp
+ qdbusintegrator_p.h
+ qdbusinterface.cpp
+ qdbusinterface.h
+ qdbusinterface_p.h
+ qdbusinternalfilters.cpp
+ qdbusintrospection.cpp
+ qdbusintrospection_p.h
+ qdbusmacros.h
+ qdbusmarshaller.cpp
+ qdbusmessage.cpp
+ qdbusmessage.h
+ qdbusmessage_p.h
+ qdbusmetaobject.cpp
+ qdbusmetaobject_p.h
+ qdbusmetatype.cpp
+ qdbusmetatype.h
+ qdbusmetatype_p.h
+ qdbusmisc.cpp
+ qdbuspendingcall.cpp
+ qdbuspendingcall.h
+ qdbuspendingcall_p.h
+ qdbuspendingreply.cpp
+ qdbuspendingreply.h
+ qdbusreply.cpp
+ qdbusreply.h
+ qdbusserver.cpp
+ qdbusserver.h
+ qdbusservicewatcher.cpp
+ qdbusservicewatcher.h
+ qdbus_symbols.cpp
+ qdbus_symbols_p.h
+ qdbusthreaddebug_p.h
+ qdbusutil.cpp
+ qdbusutil_p.h
+ qdbusxmlgenerator.cpp
+ qdbusxmlparser.cpp
+ qdbusxmlparser_p.h
+2 gui/
+0 accessible/
+0 accessible.pri
+ qaccessible2.cpp
+ qaccessible2.h
+ qaccessiblebridge.cpp
+ qaccessiblebridge.h
+ qaccessible.cpp
+ qaccessible.h
+ qaccessible_mac_carbon.cpp
+ qaccessible_mac_cocoa.mm
+ qaccessible_mac.mm
+ qaccessible_mac_p.h
+ qaccessibleobject.cpp
+ qaccessibleobject.h
+ qaccessibleplugin.cpp
+ qaccessibleplugin.h
+ qaccessible_unix.cpp
+ qaccessiblewidget.cpp
+ qaccessiblewidget.h
+ qaccessible_win.cpp
+2 animation/
+0 animation.pri
+ qguivariantanimation.cpp
+2 dialogs/
+0 dialogs.pri
+ images/
+0 fit-page-24.png
+ fit-page-32.png
+ fit-width-24.png
+ fit-width-32.png
+ go-first-24.png
+ go-first-32.png
+ go-last-24.png
+ go-last-32.png
+ go-next-24.png
+ go-next-32.png
+ go-previous-24.png
+ go-previous-32.png
+ layout-landscape-24.png
+ layout-landscape-32.png
+ layout-portrait-24.png
+ layout-portrait-32.png
+ page-setup-24.png
+ page-setup-32.png
+ print-24.png
+ print-32.png
+ qtlogo-64.png
+ status-color.png
+ status-gray-scale.png
+ view-page-multi-24.png
+ view-page-multi-32.png
+ view-page-one-24.png
+ view-page-one-32.png
+ view-page-sided-24.png
+ view-page-sided-32.png
+ zoom-in-24.png
+ zoom-in-32.png
+ zoom-out-24.png
+ zoom-out-32.png
+2 qabstractpagesetupdialog.cpp
+ qabstractpagesetupdialog.h
+ qabstractpagesetupdialog_p.h
+ qabstractprintdialog.cpp
+ qabstractprintdialog.h
+ qabstractprintdialog_p.h
+ qcolordialog.cpp
+ qcolordialog.h
+ qcolordialog_mac.mm
+ qcolordialog_p.h
+ qdialog.cpp
+ qdialog.h
+ qdialog_p.h
+ qdialogsbinarycompat_win.cpp
+ qerrormessage.cpp
+ qerrormessage.h
+ qfiledialog.cpp
+ qfiledialog_embedded.ui
+ qfiledialog.h
+ qfiledialog_mac.mm
+ qfiledialog_p.h
+ qfiledialog.ui
+ qfiledialog_win.cpp
+ qfileinfogatherer.cpp
+ qfileinfogatherer_p.h
+ qfilesystemmodel.cpp
+ qfilesystemmodel.h
+ qfilesystemmodel_p.h
+ qfontdialog.cpp
+ qfontdialog.h
+ qfontdialog_mac.mm
+ qfontdialog_p.h
+ qfscompleter_p.h
+ qinputdialog.cpp
+ qinputdialog.h
+ qmessagebox.cpp
+ qmessagebox.h
+ qmessagebox.qrc
+ qnspanelproxy_mac.mm
+ qpagesetupdialog.cpp
+ qpagesetupdialog.h
+ qpagesetupdialog_mac.mm
+ qpagesetupdialog_unix.cpp
+ qpagesetupdialog_unix_p.h
+ qpagesetupdialog_win.cpp
+ qpagesetupwidget.ui
+ qprintdialog.h
+ qprintdialog_mac.mm
+ qprintdialog.qdoc
+ qprintdialog.qrc
+ qprintdialog_qws.cpp
+ qprintdialog_unix.cpp
+ qprintdialog_win.cpp
+ qprintpreviewdialog.cpp
+ qprintpreviewdialog.h
+ qprintpropertieswidget.ui
+ qprintsettingsoutput.ui
+ qprintwidget.ui
+ qprogressdialog.cpp
+ qprogressdialog.h
+ qsidebar.cpp
+ qsidebar_p.h
+ qwizard.cpp
+ qwizard.h
+ qwizard_win.cpp
+ qwizard_win_p.h
+2 effects/
+0 effects.pri
+ qgraphicseffect.cpp
+ qgraphicseffect.h
+ qgraphicseffect_p.h
+2 egl/
+0 egl.pri
+ qegl.cpp
+ qegl_p.h
+ qeglproperties.cpp
+ qeglproperties_p.h
+ qegl_qws.cpp
+ qegl_symbian.cpp
+ qegl_wince.cpp
+ qegl_x11.cpp
+2 embedded/
+0 directfb.pri
+ embedded.pri
+ qcopchannel_qws.cpp
+ qcopchannel_qws.h
+ qdecorationdefault_qws.cpp
+ qdecorationdefault_qws.h
+ qdecorationfactory_qws.cpp
+ qdecorationfactory_qws.h
+ qdecorationplugin_qws.cpp
+ qdecorationplugin_qws.h
+ qdecoration_qws.cpp
+ qdecoration_qws.h
+ qdecorationstyled_qws.cpp
+ qdecorationstyled_qws.h
+ qdecorationwindows_qws.cpp
+ qdecorationwindows_qws.h
+ qdirectpainter_qws.cpp
+ qdirectpainter_qws.h
+ qkbd_defaultmap_qws_p.h
+ qkbddriverfactory_qws.cpp
+ qkbddriverfactory_qws.h
+ qkbddriverplugin_qws.cpp
+ qkbddriverplugin_qws.h
+ qkbdlinuxinput_qws.cpp
+ qkbdlinuxinput_qws.h
+ qkbdqnx_qws.cpp
+ qkbdqnx_qws.h
+ qkbd_qws.cpp
+ qkbd_qws.h
+ qkbd_qws_p.h
+ qkbdtty_qws.cpp
+ qkbdtty_qws.h
+ qkbdum_qws.cpp
+ qkbdum_qws.h
+ qkbdvfb_qws.cpp
+ qkbdvfb_qws.h
+ qlock.cpp
+ qlock_p.h
+ qmousedriverfactory_qws.cpp
+ qmousedriverfactory_qws.h
+ qmousedriverplugin_qws.cpp
+ qmousedriverplugin_qws.h
+ qmouselinuxinput_qws.cpp
+ qmouselinuxinput_qws.h
+ qmouselinuxtp_qws.cpp
+ qmouselinuxtp_qws.h
+ qmousepc_qws.cpp
+ qmousepc_qws.h
+ qmouseqnx_qws.cpp
+ qmouseqnx_qws.h
+ qmouse_qws.cpp
+ qmouse_qws.h
+ qmousetslib_qws.cpp
+ qmousetslib_qws.h
+ qmousevfb_qws.cpp
+ qmousevfb_qws.h
+ qscreendriverfactory_qws.cpp
+ qscreendriverfactory_qws.h
+ qscreendriverplugin_qws.cpp
+ qscreendriverplugin_qws.h
+ qscreenlinuxfb_qws.cpp
+ qscreenlinuxfb_qws.h
+ qscreenmulti_qws.cpp
+ qscreenmulti_qws_p.h
+ qscreenproxy_qws.cpp
+ qscreenproxy_qws.h
+ qscreenqnx_qws.cpp
+ qscreenqnx_qws.h
+ qscreen_qws.cpp
+ qscreen_qws.h
+ qscreentransformed_qws.cpp
+ qscreentransformed_qws.h
+ qscreenvfb_qws.cpp
+ qscreenvfb_qws.h
+ qsoundqss_qws.cpp
+ qsoundqss_qws.h
+ qtransportauthdefs_qws.h
+ qtransportauth_qws.cpp
+ qtransportauth_qws.h
+ qtransportauth_qws_p.h
+ qunixsocket.cpp
+ qunixsocket_p.h
+ qunixsocketserver.cpp
+ qunixsocketserver_p.h
+ qvfbhdr.h
+ qwindowsystem_p.h
+ qwindowsystem_qws.cpp
+ qwindowsystem_qws.h
+ qwscommand_qws.cpp
+ qwscommand_qws_p.h
+ qwscursor_qws.cpp
+ qwscursor_qws.h
+ qwsdisplay_qws.h
+ qwsdisplay_qws_p.h
+ qwsembedwidget.cpp
+ qwsembedwidget.h
+ qwsevent_qws.cpp
+ qwsevent_qws.h
+ qwslock.cpp
+ qwslock_p.h
+ qwsmanager_p.h
+ qwsmanager_qws.cpp
+ qwsmanager_qws.h
+ qwsproperty_qws.cpp
+ qwsproperty_qws.h
+ qwsprotocolitem_qws.h
+ qwssharedmemory.cpp
+ qwssharedmemory_p.h
+ qwssignalhandler.cpp
+ qwssignalhandler_p.h
+ qwssocket_qws.cpp
+ qwssocket_qws.h
+ qwsutils_qws.h
+2 graphicsview/
+0 graphicsview.pri
+ qgraphicsanchorlayout.cpp
+ qgraphicsanchorlayout.h
+ qgraphicsanchorlayout_p.cpp
+ qgraphicsanchorlayout_p.h
+ qgraphicsgridlayout.cpp
+ qgraphicsgridlayout.h
+ qgraphicsitemanimation.cpp
+ qgraphicsitemanimation.h
+ qgraphicsitem.cpp
+ qgraphicsitem.h
+ qgraphicsitem_p.h
+ qgraphicslayout.cpp
+ qgraphicslayout.h
+ qgraphicslayoutitem.cpp
+ qgraphicslayoutitem.h
+ qgraphicslayoutitem_p.h
+ qgraphicslayout_p.cpp
+ qgraphicslayout_p.h
+ qgraphicslinearlayout.cpp
+ qgraphicslinearlayout.h
+ qgraphicsproxywidget.cpp
+ qgraphicsproxywidget.h
+ qgraphicsproxywidget_p.h
+ qgraphicsscene_bsp.cpp
+ qgraphicsscene_bsp_p.h
+ qgraphicsscenebsptreeindex.cpp
+ qgraphicsscenebsptreeindex_p.h
+ qgraphicsscene.cpp
+ qgraphicssceneevent.cpp
+ qgraphicssceneevent.h
+ qgraphicsscene.h
+ qgraphicssceneindex.cpp
+ qgraphicssceneindex_p.h
+ qgraphicsscenelinearindex.cpp
+ qgraphicsscenelinearindex_p.h
+ qgraphicsscene_p.h
+ qgraphicstransform.cpp
+ qgraphicstransform.h
+ qgraphicstransform_p.h
+ qgraphicsview.cpp
+ qgraphicsview.h
+ qgraphicsview_p.h
+ qgraphicswidget.cpp
+ qgraphicswidget.h
+ qgraphicswidget_p.cpp
+ qgraphicswidget_p.h
+ qgraph_p.h
+ qgridlayoutengine.cpp
+ qgridlayoutengine_p.h
+ qsimplex_p.cpp
+ qsimplex_p.h
+2 gui.pro
+ image/
+0 image.pri
+ qbitmap.cpp
+ qbitmap.h
+ qbmphandler.cpp
+ qbmphandler_p.h
+ qicon.cpp
+ qiconengine.cpp
+ qiconengine.h
+ qiconengineplugin.cpp
+ qiconengineplugin.h
+ qicon.h
+ qiconloader.cpp
+ qiconloader_p.h
+ qicon_p.h
+ qimage.cpp
+ qimage.h
+ qimageiohandler.cpp
+ qimageiohandler.h
+ qimage_p.h
+ qimagepixmapcleanuphooks.cpp
+ qimagepixmapcleanuphooks_p.h
+ qimagereader.cpp
+ qimagereader.h
+ qimagewriter.cpp
+ qimagewriter.h
+ qmovie.cpp
+ qmovie.h
+ qnativeimage.cpp
+ qnativeimage_p.h
+ qpaintengine_pic.cpp
+ qpaintengine_pic_p.h
+ qpicture.cpp
+ qpictureformatplugin.cpp
+ qpictureformatplugin.h
+ qpicture.h
+ qpicture_p.h
+ qpixmapcache.cpp
+ qpixmapcache.h
+ qpixmapcache_p.h
+ qpixmap.cpp
+ qpixmapdata.cpp
+ qpixmapdatafactory.cpp
+ qpixmapdatafactory_p.h
+ qpixmapdata_p.h
+ qpixmapfilter.cpp
+ qpixmapfilter_p.h
+ qpixmap.h
+ qpixmap_mac.cpp
+ qpixmap_mac_p.h
+ qpixmap_qws.cpp
+ qpixmap_raster.cpp
+ qpixmap_raster_p.h
+ qpixmap_s60.cpp
+ qpixmap_s60_p.h
+ qpixmap_win.cpp
+ qpixmap_x11.cpp
+ qpixmap_x11_p.h
+ qpnghandler.cpp
+ qpnghandler_p.h
+ qppmhandler.cpp
+ qppmhandler_p.h
+ qxbmhandler.cpp
+ qxbmhandler_p.h
+ qxpmhandler.cpp
+ qxpmhandler_p.h
+2 inputmethod/
+0 inputmethod.pri
+ qcoefepinputcontext_p.h
+ qcoefepinputcontext_s60.cpp
+ qinputcontext.cpp
+ qinputcontextfactory.cpp
+ qinputcontextfactory.h
+ qinputcontext.h
+ qinputcontext_p.h
+ qinputcontextplugin.cpp
+ qinputcontextplugin.h
+ qmacinputcontext_mac.cpp
+ qmacinputcontext_p.h
+ qwininputcontext_p.h
+ qwininputcontext_win.cpp
+ qwsinputcontext_p.h
+ qwsinputcontext_qws.cpp
+ qximinputcontext_p.h
+ qximinputcontext_x11.cpp
+2 itemviews/
+0 itemviews.pri
+ qabstractitemdelegate.cpp
+ qabstractitemdelegate.h
+ qabstractitemview.cpp
+ qabstractitemview.h
+ qabstractitemview_p.h
+ qabstractproxymodel.cpp
+ qabstractproxymodel.h
+ qabstractproxymodel_p.h
+ qbsptree.cpp
+ qbsptree_p.h
+ qcolumnview.cpp
+ qcolumnviewgrip.cpp
+ qcolumnviewgrip_p.h
+ qcolumnview.h
+ qcolumnview_p.h
+ qdatawidgetmapper.cpp
+ qdatawidgetmapper.h
+ qdirmodel.cpp
+ qdirmodel.h
+ qfileiconprovider.cpp
+ qfileiconprovider.h
+ qheaderview.cpp
+ qheaderview.h
+ qheaderview_p.h
+ qitemdelegate.cpp
+ qitemdelegate.h
+ qitemeditorfactory.cpp
+ qitemeditorfactory.h
+ qitemeditorfactory_p.h
+ qitemselectionmodel.cpp
+ qitemselectionmodel.h
+ qitemselectionmodel_p.h
+ qlistview.cpp
+ qlistview.h
+ qlistview_p.h
+ qlistwidget.cpp
+ qlistwidget.h
+ qlistwidget_p.h
+ qproxymodel.cpp
+ qproxymodel.h
+ qproxymodel_p.h
+ qsortfilterproxymodel.cpp
+ qsortfilterproxymodel.h
+ qstandarditemmodel.cpp
+ qstandarditemmodel.h
+ qstandarditemmodel_p.h
+ qstringlistmodel.cpp
+ qstringlistmodel.h
+ qstyleditemdelegate.cpp
+ qstyleditemdelegate.h
+ qtableview.cpp
+ qtableview.h
+ qtableview_p.h
+ qtablewidget.cpp
+ qtablewidget.h
+ qtablewidget_p.h
+ qtreeview.cpp
+ qtreeview.h
+ qtreeview_p.h
+ qtreewidget.cpp
+ qtreewidget.h
+ qtreewidgetitemiterator.cpp
+ qtreewidgetitemiterator.h
+ qtreewidgetitemiterator_p.h
+ qtreewidget_p.h
+ qwidgetitemdata_p.h
+2 kernel/
+0 kernel.pri
+ mac.pri
+ qaction.cpp
+ qactiongroup.cpp
+ qactiongroup.h
+ qaction.h
+ qaction_p.h
+ qapplication.cpp
+ qapplication.h
+ qapplication_mac.mm
+ qapplication_p.h
+ qapplication_qws.cpp
+ qapplication_s60.cpp
+ qapplication_win.cpp
+ qapplication_x11.cpp
+ qboxlayout.cpp
+ qboxlayout.h
+ qclipboard.cpp
+ qclipboard.h
+ qclipboard_mac.cpp
+ qclipboard_p.h
+ qclipboard_qws.cpp
+ qclipboard_s60.cpp
+ qclipboard_win.cpp
+ qclipboard_x11.cpp
+ qcocoaapplicationdelegate_mac.mm
+ qcocoaapplicationdelegate_mac_p.h
+ qcocoaapplication_mac.mm
+ qcocoaapplication_mac_p.h
+ qcocoamenuloader_mac.mm
+ qcocoamenuloader_mac_p.h
+ qcocoapanel_mac.mm
+ qcocoapanel_mac_p.h
+ qcocoaview_mac.mm
+ qcocoaview_mac_p.h
+ qcocoawindowcustomthemeframe_mac.mm
+ qcocoawindowcustomthemeframe_mac_p.h
+ qcocoawindowdelegate_mac.mm
+ qcocoawindowdelegate_mac_p.h
+ qcocoawindow_mac.mm
+ qcocoawindow_mac_p.h
+ qcursor.cpp
+ qcursor.h
+ qcursor_mac.mm
+ qcursor_p.h
+ qcursor_qws.cpp
+ qcursor_s60.cpp
+ qcursor_win.cpp
+ qcursor_x11.cpp
+ qdesktopwidget.cpp
+ qdesktopwidget.h
+ qdesktopwidget_mac.mm
+ qdesktopwidget_mac_p.h
+ qdesktopwidget.qdoc
+ qdesktopwidget_qws.cpp
+ qdesktopwidget_s60.cpp
+ qdesktopwidget_win.cpp
+ qdesktopwidget_x11.cpp
+ qdnd.cpp
+ qdnd_mac.mm
+ qdnd_p.h
+ qdnd_qws.cpp
+ qdnd_s60.cpp
+ qdnd_win.cpp
+ qdnd_x11.cpp
+ qdrag.cpp
+ qdrag.h
+ qevent.cpp
+ qeventdispatcher_glib_qws.cpp
+ qeventdispatcher_glib_qws_p.h
+ qeventdispatcher_mac.mm
+ qeventdispatcher_mac_p.h
+ qeventdispatcher_qws.cpp
+ qeventdispatcher_qws_p.h
+ qeventdispatcher_s60.cpp
+ qeventdispatcher_s60_p.h
+ qeventdispatcher_x11.cpp
+ qeventdispatcher_x11_p.h
+ qevent.h
+ qevent_p.h
+ qformlayout.cpp
+ qformlayout.h
+ qgesture.cpp
+ qgesture.h
+ qgesturemanager.cpp
+ qgesturemanager_p.h
+ qgesture_p.h
+ qgesturerecognizer.cpp
+ qgesturerecognizer.h
+ qgridlayout.cpp
+ qgridlayout.h
+ qguieventdispatcher_glib.cpp
+ qguieventdispatcher_glib_p.h
+ qguifunctions_wince.cpp
+ qguifunctions_wince.h
+ qguiplatformplugin.cpp
+ qguiplatformplugin_p.h
+ qguivariant.cpp
+ qkde.cpp
+ qkde_p.h
+ qkeymapper.cpp
+ qkeymapper_mac.cpp
+ qkeymapper_p.h
+ qkeymapper_qws.cpp
+ qkeymapper_s60.cpp
+ qkeymapper_win.cpp
+ qkeymapper_x11.cpp
+ qkeymapper_x11_p.cpp
+ qkeysequence.cpp
+ qkeysequence.h
+ qkeysequence_p.h
+ qlayout.cpp
+ qlayoutengine.cpp
+ qlayoutengine_p.h
+ qlayout.h
+ qlayoutitem.cpp
+ qlayoutitem.h
+ qlayout_p.h
+ qmacdefines_mac.h
+ qmacgesturerecognizer_mac.mm
+ qmacgesturerecognizer_mac_p.h
+ qmime.cpp
+ qmime.h
+ qmime_mac.cpp
+ qmime_win.cpp
+ qmotifdnd_x11.cpp
+ qmultitouch_mac.mm
+ qmultitouch_mac_p.h
+ qnsframeview_mac_p.h
+ qnsthemeframe_mac_p.h
+ qnstitledframe_mac_p.h
+ qole_win.cpp
+ qpalette.cpp
+ qpalette.h
+ qsessionmanager.h
+ qsessionmanager_qws.cpp
+ qshortcut.cpp
+ qshortcut.h
+ qshortcutmap.cpp
+ qshortcutmap_p.h
+ qsizepolicy.h
+ qsizepolicy.qdoc
+ qsoftkeymanager.cpp
+ qsoftkeymanager_p.h
+ qsound.cpp
+ qsound.h
+ qsound_mac.mm
+ qsound_p.h
+ qsound_qws.cpp
+ qsound_s60.cpp
+ qsound_win.cpp
+ qsound_x11.cpp
+ qstackedlayout.cpp
+ qstackedlayout.h
+ qstandardgestures.cpp
+ qstandardgestures_p.h
+ qt_cocoa_helpers_mac.mm
+ qt_cocoa_helpers_mac_p.h
+ qt_gui_pch.h
+ qt_mac.cpp
+ qt_mac_p.h
+ qtooltip.cpp
+ qtooltip.h
+ qt_s60_p.h
+ qt_x11_p.h
+ qwhatsthis.cpp
+ qwhatsthis.h
+ qwidgetaction.cpp
+ qwidgetaction.h
+ qwidgetaction_p.h
+ qwidget.cpp
+ qwidgetcreate_x11.cpp
+ qwidget.h
+ qwidget_mac.mm
+ qwidget_p.h
+ qwidget_qws.cpp
+ qwidget_s60.cpp
+ qwidget_wince.cpp
+ qwidget_win.cpp
+ qwidget_x11.cpp
+ qwindowdefs.h
+ qwindowdefs_win.h
+ qwinnativepangesturerecognizer_win.cpp
+ qwinnativepangesturerecognizer_win_p.h
+ qx11embed_x11.cpp
+ qx11embed_x11.h
+ qx11info_x11.cpp
+ qx11info_x11.h
+ symbian.pri
+ win.pri
+ x11.pri
+2 mac/
+0 images/
+0 copyarrowcursor.png
+ forbiddencursor.png
+ leopard-unified-toolbar-on.png
+ pluscursor.png
+ spincursor.png
+ waitcursor.png
+2 macresources.qrc
+ qt_menu.nib/
+0 classes.nib
+ info.nib
+ keyedobjects.nib
+3 math3d/
+0 math3d.pri
+ qgenericmatrix.cpp
+ qgenericmatrix.h
+ qmatrix4x4.cpp
+ qmatrix4x4.h
+ qquaternion.cpp
+ qquaternion.h
+ qvector2d.cpp
+ qvector2d.h
+ qvector3d.cpp
+ qvector3d.h
+ qvector4d.cpp
+ qvector4d.h
+2 painting/
+0 makepsheader.pl
+ painting.pri
+ qbackingstore.cpp
+ qbackingstore_p.h
+ qbezier.cpp
+ qbezier_p.h
+ qblendfunctions_armv6_rvct.s
+ qblendfunctions.cpp
+ qbrush.cpp
+ qbrush.h
+ qcolor.cpp
+ qcolor.h
+ qcolormap.h
+ qcolormap_mac.cpp
+ qcolormap.qdoc
+ qcolormap_qws.cpp
+ qcolormap_s60.cpp
+ qcolormap_win.cpp
+ qcolormap_x11.cpp
+ qcolor_p.cpp
+ qcolor_p.h
+ qcssutil.cpp
+ qcssutil_p.h
+ qcups.cpp
+ qcups_p.h
+ qdatabuffer_p.h
+ qdrawhelper_armv6_p.h
+ qdrawhelper_armv6_rvct.inc
+ qdrawhelper_armv6_rvct.s
+ qdrawhelper.cpp
+ qdrawhelper_iwmmxt.cpp
+ qdrawhelper_mmx3dnow.cpp
+ qdrawhelper_mmx.cpp
+ qdrawhelper_mmx_p.h
+ qdrawhelper_p.h
+ qdrawhelper_sse2.cpp
+ qdrawhelper_sse3dnow.cpp
+ qdrawhelper_sse.cpp
+ qdrawhelper_sse_p.h
+ qdrawhelper_x86_p.h
+ qdrawutil.cpp
+ qdrawutil.h
+ qemulationpaintengine.cpp
+ qemulationpaintengine_p.h
+ qfixed_p.h
+ qgraphicssystem.cpp
+ qgraphicssystemfactory.cpp
+ qgraphicssystemfactory_p.h
+ qgraphicssystem_mac.cpp
+ qgraphicssystem_mac_p.h
+ qgraphicssystem_p.h
+ qgraphicssystemplugin.cpp
+ qgraphicssystemplugin_p.h
+ qgraphicssystem_qws.cpp
+ qgraphicssystem_qws_p.h
+ qgraphicssystem_raster.cpp
+ qgraphicssystem_raster_p.h
+ qgrayraster.c
+ qgrayraster_p.h
+ qimagescale.cpp
+ qimagescale_p.h
+ qmath_p.h
+ qmatrix.cpp
+ qmatrix.h
+ qmemrotate.cpp
+ qmemrotate_p.h
+ qoutlinemapper.cpp
+ qoutlinemapper_p.h
+ qpaintbuffer.cpp
+ qpaintbuffer_p.h
+ qpaintdevice.cpp
+ qpaintdevice.h
+ qpaintdevice_mac.cpp
+ qpaintdevice.qdoc
+ qpaintdevice_qws.cpp
+ qpaintdevice_win.cpp
+ qpaintdevice_x11.cpp
+ qpaintengine_alpha.cpp
+ qpaintengine_alpha_p.h
+ qpaintengine.cpp
+ qpaintengineex.cpp
+ qpaintengineex_p.h
+ qpaintengine.h
+ qpaintengine_mac.cpp
+ qpaintengine_mac_p.h
+ qpaintengine_p.h
+ qpaintengine_preview.cpp
+ qpaintengine_preview_p.h
+ qpaintengine_raster.cpp
+ qpaintengine_raster_p.h
+ qpaintengine_s60.cpp
+ qpaintengine_s60_p.h
+ qpaintengine_x11.cpp
+ qpaintengine_x11_p.h
+ qpainter.cpp
+ qpainter.h
+ qpainterpath.cpp
+ qpainterpath.h
+ qpainterpath_p.h
+ qpainter_p.h
+ qpathclipper.cpp
+ qpathclipper_p.h
+ qpdf.cpp
+ qpdf_p.h
+ qpen.cpp
+ qpen.h
+ qpen_p.h
+ qpolygonclipper_p.h
+ qpolygon.cpp
+ qpolygon.h
+ qprintengine.h
+ qprintengine_mac.mm
+ qprintengine_mac_p.h
+ qprintengine_pdf.cpp
+ qprintengine_pdf_p.h
+ qprintengine_ps.cpp
+ qprintengine_ps_p.h
+ qprintengine_qws.cpp
+ qprintengine_qws_p.h
+ qprintengine_win.cpp
+ qprintengine_win_p.h
+ qprinter.cpp
+ qprinter.h
+ qprinterinfo.h
+ qprinterinfo_mac.cpp
+ qprinterinfo.qdoc
+ qprinterinfo_unix.cpp
+ qprinterinfo_unix_p.h
+ qprinterinfo_win.cpp
+ qprinter_p.h
+ qpsprinter.agl
+ qpsprinter.ps
+ qrasterdefs_p.h
+ qrasterizer.cpp
+ qrasterizer_p.h
+ qregion.cpp
+ qregion.h
+ qregion_mac.cpp
+ qregion_qws.cpp
+ qregion_s60.cpp
+ qregion_win.cpp
+ qregion_x11.cpp
+ qrgb.h
+ qstroker.cpp
+ qstroker_p.h
+ qstylepainter.cpp
+ qstylepainter.h
+ qtessellator.cpp
+ qtessellator_p.h
+ qtextureglyphcache.cpp
+ qtextureglyphcache_p.h
+ qtransform.cpp
+ qtransform.h
+ qvectorpath_p.h
+ qwindowsurface.cpp
+ qwindowsurface_mac.cpp
+ qwindowsurface_mac_p.h
+ qwindowsurface_p.h
+ qwindowsurface_qws.cpp
+ qwindowsurface_qws_p.h
+ qwindowsurface_raster.cpp
+ qwindowsurface_raster_p.h
+ qwindowsurface_s60.cpp
+ qwindowsurface_s60_p.h
+ qwindowsurface_x11.cpp
+ qwindowsurface_x11_p.h
+ qwmatrix.h
+2 QtGui.dynlist
+ s60framework/
+0 qs60mainapplication.cpp
+ qs60mainapplication.h
+ qs60mainapplication_p.h
+ qs60mainappui.cpp
+ qs60mainappui.h
+ qs60maindocument.cpp
+ qs60maindocument.h
+ s60framework.pri
+ s60main.rss
+2 statemachine/
+0 qbasickeyeventtransition.cpp
+ qbasickeyeventtransition_p.h
+ qbasicmouseeventtransition.cpp
+ qbasicmouseeventtransition_p.h
+ qguistatemachine.cpp
+ qkeyeventtransition.cpp
+ qkeyeventtransition.h
+ qmouseeventtransition.cpp
+ qmouseeventtransition.h
+ statemachine.pri
+2 styles/
+0 images/
+0 cdr-128.png
+ cdr-16.png
+ cdr-32.png
+ closedock-16.png
+ closedock-down-16.png
+ computer-16.png
+ computer-32.png
+ defaults60theme.blob
+ desktop-16.png
+ desktop-32.png
+ dirclosed-128.png
+ dirclosed-16.png
+ dirclosed-32.png
+ dirlink-128.png
+ dirlink-16.png
+ dirlink-32.png
+ diropen-128.png
+ diropen-16.png
+ diropen-32.png
+ dockdock-16.png
+ dockdock-down-16.png
+ down-128.png
+ down-16.png
+ down-32.png
+ dvd-128.png
+ dvd-16.png
+ dvd-32.png
+ file-128.png
+ file-16.png
+ file-32.png
+ filecontents-128.png
+ filecontents-16.png
+ filecontents-32.png
+ fileinfo-128.png
+ fileinfo-16.png
+ fileinfo-32.png
+ filelink-128.png
+ filelink-16.png
+ filelink-32.png
+ floppy-128.png
+ floppy-16.png
+ floppy-32.png
+ fontbitmap-16.png
+ fonttruetype-16.png
+ harddrive-128.png
+ harddrive-16.png
+ harddrive-32.png
+ left-128.png
+ left-16.png
+ left-32.png
+ media-pause-16.png
+ media-pause-32.png
+ media-play-16.png
+ media-play-32.png
+ media-seek-backward-16.png
+ media-seek-backward-32.png
+ media-seek-forward-16.png
+ media-seek-forward-32.png
+ media-skip-backward-16.png
+ media-skip-backward-32.png
+ media-skip-forward-16.png
+ media-skip-forward-32.png
+ media-stop-16.png
+ media-stop-32.png
+ media-volume-16.png
+ media-volume-muted-16.png
+ networkdrive-128.png
+ networkdrive-16.png
+ networkdrive-32.png
+ newdirectory-128.png
+ newdirectory-16.png
+ newdirectory-32.png
+ parentdir-128.png
+ parentdir-16.png
+ parentdir-32.png
+ refresh-24.png
+ refresh-32.png
+ right-128.png
+ right-16.png
+ right-32.png
+ standardbutton-apply-128.png
+ standardbutton-apply-16.png
+ standardbutton-apply-32.png
+ standardbutton-cancel-128.png
+ standardbutton-cancel-16.png
+ standardbutton-cancel-32.png
+ standardbutton-clear-128.png
+ standardbutton-clear-16.png
+ standardbutton-clear-32.png
+ standardbutton-close-128.png
+ standardbutton-close-16.png
+ standardbutton-close-32.png
+ standardbutton-closetab-16.png
+ standardbutton-closetab-down-16.png
+ standardbutton-closetab-hover-16.png
+ standardbutton-delete-128.png
+ standardbutton-delete-16.png
+ standardbutton-delete-32.png
+ standardbutton-help-128.png
+ standardbutton-help-16.png
+ standardbutton-help-32.png
+ standardbutton-no-128.png
+ standardbutton-no-16.png
+ standardbutton-no-32.png
+ standardbutton-ok-128.png
+ standardbutton-ok-16.png
+ standardbutton-ok-32.png
+ standardbutton-open-128.png
+ standardbutton-open-16.png
+ standardbutton-open-32.png
+ standardbutton-save-128.png
+ standardbutton-save-16.png
+ standardbutton-save-32.png
+ standardbutton-yes-128.png
+ standardbutton-yes-16.png
+ standardbutton-yes-32.png
+ stop-24.png
+ stop-32.png
+ trash-128.png
+ trash-16.png
+ trash-32.png
+ up-128.png
+ up-16.png
+ up-32.png
+ viewdetailed-128.png
+ viewdetailed-16.png
+ viewdetailed-32.png
+ viewlist-128.png
+ viewlist-16.png
+ viewlist-32.png
+2 qcdestyle.cpp
+ qcdestyle.h
+ qcleanlooksstyle.cpp
+ qcleanlooksstyle.h
+ qcleanlooksstyle_p.h
+ qcommonstyle.cpp
+ qcommonstyle.h
+ qcommonstyle_p.h
+ qcommonstylepixmaps_p.h
+ qgtkpainter.cpp
+ qgtkpainter_p.h
+ qgtkstyle.cpp
+ qgtkstyle.h
+ qgtkstyle_p.cpp
+ qgtkstyle_p.h
+ qmacstyle_mac.h
+ qmacstyle_mac.mm
+ qmacstylepixmaps_mac_p.h
+ qmacstyle.qdoc
+ qmotifstyle.cpp
+ qmotifstyle.h
+ qmotifstyle_p.h
+ qplastiquestyle.cpp
+ qplastiquestyle.h
+ qproxystyle.cpp
+ qproxystyle.h
+ qproxystyle_p.h
+ qs60style.cpp
+ qs60style.h
+ qs60style_p.h
+ qs60style_s60.cpp
+ qs60style_simulated.cpp
+ qstyle.cpp
+ qstylefactory.cpp
+ qstylefactory.h
+ qstyle.h
+ qstylehelper.cpp
+ qstylehelper_p.h
+ qstyleoption.cpp
+ qstyleoption.h
+ qstyle_p.h
+ qstyleplugin.cpp
+ qstyleplugin.h
+ qstyle.qrc
+ qstyle_s60_simulated.qrc
+ qstylesheetstyle.cpp
+ qstylesheetstyle_default.cpp
+ qstylesheetstyle_p.h
+ qstyle_wince.qrc
+ qwindowscestyle.cpp
+ qwindowscestyle.h
+ qwindowscestyle_p.h
+ qwindowsmobilestyle.cpp
+ qwindowsmobilestyle.h
+ qwindowsmobilestyle_p.h
+ qwindowsstyle.cpp
+ qwindowsstyle.h
+ qwindowsstyle_p.h
+ qwindowsvistastyle.cpp
+ qwindowsvistastyle.h
+ qwindowsvistastyle_p.h
+ qwindowsxpstyle.cpp
+ qwindowsxpstyle.h
+ qwindowsxpstyle_p.h
+ styles.pri
+2 symbian/
+0 images/
+0 blank.png
+ busy12.png
+ busy3.png
+ busy6.png
+ busy9.png
+ closehand.png
+ cross.png
+ forbidden.png
+ handpoint.png
+ ibeam.png
+ openhand.png
+ pointer.png
+ sizeall.png
+ sizebdiag.png
+ sizefdiag.png
+ sizehor.png
+ sizever.png
+ splith.png
+ splitv.png
+ uparrow.png
+ wait10.png
+ wait11.png
+ wait12.png
+ wait1.png
+ wait2.png
+ wait3.png
+ wait4.png
+ wait5.png
+ wait6.png
+ wait7.png
+ wait8.png
+ wait9.png
+ whatsthis.png
+2 qsymbianevent.cpp
+ qsymbianevent.h
+ symbianresources.qrc
+2 text/
+0 qabstractfontengine_p.h
+ qabstractfontengine_qws.cpp
+ qabstractfontengine_qws.h
+ qabstracttextdocumentlayout.cpp
+ qabstracttextdocumentlayout.h
+ qabstracttextdocumentlayout_p.h
+ qcssparser.cpp
+ qcssparser_p.h
+ qcssscanner.cpp
+ qfont.cpp
+ qfontdatabase.cpp
+ qfontdatabase.h
+ qfontdatabase_mac.cpp
+ qfontdatabase_qws.cpp
+ qfontdatabase_s60.cpp
+ qfontdatabase_win.cpp
+ qfontdatabase_x11.cpp
+ qfontengine.cpp
+ qfontengine_ft.cpp
+ qfontengine_ft_p.h
+ qfontengineglyphcache_p.h
+ qfontengine_mac.mm
+ qfontengine_p.h
+ qfontengine_qpf.cpp
+ qfontengine_qpf_p.h
+ qfontengine_qws.cpp
+ qfontengine_s60.cpp
+ qfontengine_s60_p.h
+ qfontengine_win.cpp
+ qfontengine_win_p.h
+ qfontengine_x11.cpp
+ qfontengine_x11_p.h
+ qfont.h
+ qfontinfo.h
+ qfont_mac.cpp
+ qfontmetrics.cpp
+ qfontmetrics.h
+ qfont_p.h
+ qfont_qws.cpp
+ qfont_s60.cpp
+ qfontsubset.cpp
+ qfontsubset_p.h
+ qfont_win.cpp
+ qfont_x11.cpp
+ qfragmentmap.cpp
+ qfragmentmap_p.h
+ qpfutil.cpp
+ qsyntaxhighlighter.cpp
+ qsyntaxhighlighter.h
+ qtextcontrol.cpp
+ qtextcontrol_p.h
+ qtextcontrol_p_p.h
+ qtextcursor.cpp
+ qtextcursor.h
+ qtextcursor_p.h
+ qtextdocument.cpp
+ qtextdocumentfragment.cpp
+ qtextdocumentfragment.h
+ qtextdocumentfragment_p.h
+ qtextdocument.h
+ qtextdocumentlayout.cpp
+ qtextdocumentlayout_p.h
+ qtextdocument_p.cpp
+ qtextdocument_p.h
+ qtextdocumentwriter.cpp
+ qtextdocumentwriter.h
+ qtextengine.cpp
+ qtextengine_mac.cpp
+ qtextengine_p.h
+ qtextformat.cpp
+ qtextformat.h
+ qtextformat_p.h
+ qtexthtmlparser.cpp
+ qtexthtmlparser_p.h
+ qtextimagehandler.cpp
+ qtextimagehandler_p.h
+ qtextlayout.cpp
+ qtextlayout.h
+ qtextlist.cpp
+ qtextlist.h
+ qtextobject.cpp
+ qtextobject.h
+ qtextobject_p.h
+ qtextodfwriter.cpp
+ qtextodfwriter_p.h
+ qtextoption.cpp
+ qtextoption.h
+ qtexttable.cpp
+ qtexttable.h
+ qtexttable_p.h
+ qzip.cpp
+ qzipreader_p.h
+ qzipwriter_p.h
+ text.pri
+2 util/
+0 qcompleter.cpp
+ qcompleter.h
+ qcompleter_p.h
+ qdesktopservices.cpp
+ qdesktopservices.h
+ qdesktopservices_mac.cpp
+ qdesktopservices_qws.cpp
+ qdesktopservices_s60.cpp
+ qdesktopservices_win.cpp
+ qdesktopservices_x11.cpp
+ qsystemtrayicon.cpp
+ qsystemtrayicon.h
+ qsystemtrayicon_mac.mm
+ qsystemtrayicon_p.h
+ qsystemtrayicon_qws.cpp
+ qsystemtrayicon_win.cpp
+ qsystemtrayicon_x11.cpp
+ qundogroup.cpp
+ qundogroup.h
+ qundostack.cpp
+ qundostack.h
+ qundostack_p.h
+ qundoview.cpp
+ qundoview.h
+ util.pri
+2 widgets/
+0 qabstractbutton.cpp
+ qabstractbutton.h
+ qabstractbutton_p.h
+ qabstractscrollarea.cpp
+ qabstractscrollarea.h
+ qabstractscrollarea_p.h
+ qabstractslider.cpp
+ qabstractslider.h
+ qabstractslider_p.h
+ qabstractspinbox.cpp
+ qabstractspinbox.h
+ qabstractspinbox_p.h
+ qbuttongroup.cpp
+ qbuttongroup.h
+ qcalendartextnavigator_p.h
+ qcalendarwidget.cpp
+ qcalendarwidget.h
+ qcheckbox.cpp
+ qcheckbox.h
+ qcocoamenu_mac.mm
+ qcocoamenu_mac_p.h
+ qcocoatoolbardelegate_mac.mm
+ qcocoatoolbardelegate_mac_p.h
+ qcombobox.cpp
+ qcombobox.h
+ qcombobox_p.h
+ qcommandlinkbutton.cpp
+ qcommandlinkbutton.h
+ qdatetimeedit.cpp
+ qdatetimeedit.h
+ qdatetimeedit_p.h
+ qdial.cpp
+ qdial.h
+ qdialogbuttonbox.cpp
+ qdialogbuttonbox.h
+ qdockarealayout.cpp
+ qdockarealayout_p.h
+ qdockwidget.cpp
+ qdockwidget.h
+ qdockwidget_p.h
+ qeffects.cpp
+ qeffects_p.h
+ qfocusframe.cpp
+ qfocusframe.h
+ qfontcombobox.cpp
+ qfontcombobox.h
+ qframe.cpp
+ qframe.h
+ qframe_p.h
+ qgroupbox.cpp
+ qgroupbox.h
+ qlabel.cpp
+ qlabel.h
+ qlabel_p.h
+ qlcdnumber.cpp
+ qlcdnumber.h
+ qlinecontrol.cpp
+ qlinecontrol_p.h
+ qlineedit.cpp
+ qlineedit.h
+ qlineedit_p.cpp
+ qlineedit_p.h
+ qmaccocoaviewcontainer_mac.h
+ qmaccocoaviewcontainer_mac.mm
+ qmacnativewidget_mac.h
+ qmacnativewidget_mac.mm
+ qmainwindow.cpp
+ qmainwindow.h
+ qmainwindowlayout.cpp
+ qmainwindowlayout_mac.mm
+ qmainwindowlayout_p.h
+ qmdiarea.cpp
+ qmdiarea.h
+ qmdiarea_p.h
+ qmdisubwindow.cpp
+ qmdisubwindow.h
+ qmdisubwindow_p.h
+ qmenubar.cpp
+ qmenubar.h
+ qmenubar_p.h
+ qmenu.cpp
+ qmenudata.cpp
+ qmenudata.h
+ qmenu.h
+ qmenu_mac.mm
+ qmenu_p.h
+ qmenu_symbian.cpp
+ qmenu_wince.cpp
+ qmenu_wince.rc
+ qmenu_wince_resource_p.h
+ qplaintextedit.cpp
+ qplaintextedit.h
+ qplaintextedit_p.h
+ qprintpreviewwidget.cpp
+ qprintpreviewwidget.h
+ qprogressbar.cpp
+ qprogressbar.h
+ qpushbutton.cpp
+ qpushbutton.h
+ qpushbutton_p.h
+ qradiobutton.cpp
+ qradiobutton.h
+ qrubberband.cpp
+ qrubberband.h
+ qscrollarea.cpp
+ qscrollarea.h
+ qscrollarea_p.h
+ qscrollbar.cpp
+ qscrollbar.h
+ qsizegrip.cpp
+ qsizegrip.h
+ qslider.cpp
+ qslider.h
+ qspinbox.cpp
+ qspinbox.h
+ qsplashscreen.cpp
+ qsplashscreen.h
+ qsplitter.cpp
+ qsplitter.h
+ qsplitter_p.h
+ qstackedwidget.cpp
+ qstackedwidget.h
+ qstatusbar.cpp
+ qstatusbar.h
+ qtabbar.cpp
+ qtabbar.h
+ qtabbar_p.h
+ qtabwidget.cpp
+ qtabwidget.h
+ qtextbrowser.cpp
+ qtextbrowser.h
+ qtextedit.cpp
+ qtextedit.h
+ qtextedit_p.h
+ qtoolbararealayout.cpp
+ qtoolbararealayout_p.h
+ qtoolbar.cpp
+ qtoolbarextension.cpp
+ qtoolbarextension_p.h
+ qtoolbar.h
+ qtoolbarlayout.cpp
+ qtoolbarlayout_p.h
+ qtoolbar_p.h
+ qtoolbarseparator.cpp
+ qtoolbarseparator_p.h
+ qtoolbox.cpp
+ qtoolbox.h
+ qtoolbutton.cpp
+ qtoolbutton.h
+ qvalidator.cpp
+ qvalidator.h
+ qwidgetanimator.cpp
+ qwidgetanimator_p.h
+ qwidgetresizehandler.cpp
+ qwidgetresizehandler_p.h
+ qworkspace.cpp
+ qworkspace.h
+ widgets.pri
+3 multimedia/
+0 audio/
+0 audio.pri
+ qaudio.cpp
+ qaudiodevicefactory.cpp
+ qaudiodevicefactory_p.h
+ qaudiodeviceinfo_alsa_p.cpp
+ qaudiodeviceinfo_alsa_p.h
+ qaudiodeviceinfo.cpp
+ qaudiodeviceinfo.h
+ qaudiodeviceinfo_mac_p.cpp
+ qaudiodeviceinfo_mac_p.h
+ qaudiodeviceinfo_win32_p.cpp
+ qaudiodeviceinfo_win32_p.h
+ qaudioengine.cpp
+ qaudioengine.h
+ qaudioengineplugin.cpp
+ qaudioengineplugin.h
+ qaudioformat.cpp
+ qaudioformat.h
+ qaudio.h
+ qaudioinput_alsa_p.cpp
+ qaudioinput_alsa_p.h
+ qaudioinput.cpp
+ qaudioinput.h
+ qaudioinput_mac_p.cpp
+ qaudioinput_mac_p.h
+ qaudioinput_win32_p.cpp
+ qaudioinput_win32_p.h
+ qaudio_mac.cpp
+ qaudio_mac_p.h
+ qaudiooutput_alsa_p.cpp
+ qaudiooutput_alsa_p.h
+ qaudiooutput.cpp
+ qaudiooutput.h
+ qaudiooutput_mac_p.cpp
+ qaudiooutput_mac_p.h
+ qaudiooutput_win32_p.cpp
+ qaudiooutput_win32_p.h
+2 multimedia.pro
+ video/
+0 qabstractvideobuffer.cpp
+ qabstractvideobuffer.h
+ qabstractvideobuffer_p.h
+ qabstractvideosurface.cpp
+ qabstractvideosurface.h
+ qabstractvideosurface_p.h
+ qimagevideobuffer.cpp
+ qimagevideobuffer_p.h
+ qmemoryvideobuffer.cpp
+ qmemoryvideobuffer_p.h
+ qvideoframe.cpp
+ qvideoframe.h
+ qvideosurfaceformat.cpp
+ qvideosurfaceformat.h
+ video.pri
+3 network/
+0 access/
+0 access.pri
+ qabstractnetworkcache.cpp
+ qabstractnetworkcache.h
+ qabstractnetworkcache_p.h
+ qftp.cpp
+ qftp.h
+ qhttp.cpp
+ qhttp.h
+ qhttpnetworkconnectionchannel.cpp
+ qhttpnetworkconnectionchannel_p.h
+ qhttpnetworkconnection.cpp
+ qhttpnetworkconnection_p.h
+ qhttpnetworkheader.cpp
+ qhttpnetworkheader_p.h
+ qhttpnetworkreply.cpp
+ qhttpnetworkreply_p.h
+ qhttpnetworkrequest.cpp
+ qhttpnetworkrequest_p.h
+ qnetworkaccessbackend.cpp
+ qnetworkaccessbackend_p.h
+ qnetworkaccesscachebackend.cpp
+ qnetworkaccesscachebackend_p.h
+ qnetworkaccesscache.cpp
+ qnetworkaccesscache_p.h
+ qnetworkaccessdatabackend.cpp
+ qnetworkaccessdatabackend_p.h
+ qnetworkaccessdebugpipebackend.cpp
+ qnetworkaccessdebugpipebackend_p.h
+ qnetworkaccessfilebackend.cpp
+ qnetworkaccessfilebackend_p.h
+ qnetworkaccessftpbackend.cpp
+ qnetworkaccessftpbackend_p.h
+ qnetworkaccesshttpbackend.cpp
+ qnetworkaccesshttpbackend_p.h
+ qnetworkaccessmanager.cpp
+ qnetworkaccessmanager.h
+ qnetworkaccessmanager_p.h
+ qnetworkcookie.cpp
+ qnetworkcookie.h
+ qnetworkcookiejar.cpp
+ qnetworkcookiejar.h
+ qnetworkcookiejar_p.h
+ qnetworkcookie_p.h
+ qnetworkdiskcache.cpp
+ qnetworkdiskcache.h
+ qnetworkdiskcache_p.h
+ qnetworkreply.cpp
+ qnetworkreply.h
+ qnetworkreplyimpl.cpp
+ qnetworkreplyimpl_p.h
+ qnetworkreply_p.h
+ qnetworkrequest.cpp
+ qnetworkrequest.h
+ qnetworkrequest_p.h
+2 kernel/
+0 kernel.pri
+ qauthenticator.cpp
+ qauthenticator.h
+ qauthenticator_p.h
+ qhostaddress.cpp
+ qhostaddress.h
+ qhostaddress_p.h
+ qhostinfo.cpp
+ qhostinfo.h
+ qhostinfo_p.h
+ qhostinfo_unix.cpp
+ qhostinfo_win.cpp
+ qnetworkinterface.cpp
+ qnetworkinterface.h
+ qnetworkinterface_p.h
+ qnetworkinterface_symbian.cpp
+ qnetworkinterface_unix.cpp
+ qnetworkinterface_win.cpp
+ qnetworkinterface_win_p.h
+ qnetworkproxy.cpp
+ qnetworkproxy_generic.cpp
+ qnetworkproxy.h
+ qnetworkproxy_mac.cpp
+ qnetworkproxy_p.h
+ qnetworkproxy_win.cpp
+ qurlinfo.cpp
+ qurlinfo.h
+2 network.pro
+ network.qrc
+ socket/
+0 qabstractsocket.cpp
+ qabstractsocketengine.cpp
+ qabstractsocketengine_p.h
+ qabstractsocket.h
+ qabstractsocket_p.h
+ qhttpsocketengine.cpp
+ qhttpsocketengine_p.h
+ qlocalserver.cpp
+ qlocalserver.h
+ qlocalserver_p.h
+ qlocalserver_tcp.cpp
+ qlocalserver_unix.cpp
+ qlocalserver_win.cpp
+ qlocalsocket.cpp
+ qlocalsocket.h
+ qlocalsocket_p.h
+ qlocalsocket_tcp.cpp
+ qlocalsocket_unix.cpp
+ qlocalsocket_win.cpp
+ qnativesocketengine.cpp
+ qnativesocketengine_p.h
+ qnativesocketengine_unix.cpp
+ qnativesocketengine_win.cpp
+ qnet_unix_p.h
+ qsocks5socketengine.cpp
+ qsocks5socketengine_p.h
+ qtcpserver.cpp
+ qtcpserver.h
+ qtcpsocket.cpp
+ qtcpsocket.h
+ qtcpsocket_p.h
+ qudpsocket.cpp
+ qudpsocket.h
+ socket.pri
+2 ssl/
+0 qsslcertificate.cpp
+ qsslcertificate.h
+ qsslcertificate_p.h
+ qsslcipher.cpp
+ qsslcipher.h
+ qsslcipher_p.h
+ qsslconfiguration.cpp
+ qsslconfiguration.h
+ qsslconfiguration_p.h
+ qssl.cpp
+ qsslerror.cpp
+ qsslerror.h
+ qssl.h
+ qsslkey.cpp
+ qsslkey.h
+ qsslkey_p.h
+ qsslsocket.cpp
+ qsslsocket.h
+ qsslsocket_openssl.cpp
+ qsslsocket_openssl_p.h
+ qsslsocket_openssl_symbols.cpp
+ qsslsocket_openssl_symbols_p.h
+ qsslsocket_p.h
+ qt-ca-bundle.crt
+ ssl.pri
+3 opengl/
+0 gl2paintengineex/
+0 qgl2pexvertexarray.cpp
+ qgl2pexvertexarray_p.h
+ qglcustomshaderstage.cpp
+ qglcustomshaderstage_p.h
+ qglengineshadermanager.cpp
+ qglengineshadermanager_p.h
+ qglengineshadersource_p.h
+ qglgradientcache.cpp
+ qglgradientcache_p.h
+ qpaintengineex_opengl2.cpp
+ qpaintengineex_opengl2_p.h
+ qtriangulatingstroker.cpp
+ qtriangulatingstroker_p.h
+2 opengl.pro
+ qgl_cl_p.h
+ qglcolormap.cpp
+ qglcolormap.h
+ qgl.cpp
+ qgl_egl.cpp
+ qgl_egl_p.h
+ qglextensions.cpp
+ qglextensions_p.h
+ qglframebufferobject.cpp
+ qglframebufferobject.h
+ qglframebufferobject_p.h
+ qgl.h
+ qgl_mac.mm
+ qglpaintdevice.cpp
+ qglpaintdevice_p.h
+ qgl_p.h
+ qglpixelbuffer.cpp
+ qglpixelbuffer_egl.cpp
+ qglpixelbuffer.h
+ qglpixelbuffer_mac.mm
+ qglpixelbuffer_p.h
+ qglpixelbuffer_win.cpp
+ qglpixelbuffer_x11.cpp
+ qglpixmapfilter.cpp
+ qglpixmapfilter_p.h
+ qgl_qws.cpp
+ qglscreen_qws.cpp
+ qglscreen_qws.h
+ qglshaderprogram.cpp
+ qglshaderprogram.h
+ qgl_wince.cpp
+ qgl_win.cpp
+ qglwindowsurface_qws.cpp
+ qglwindowsurface_qws_p.h
+ qgl_x11.cpp
+ qgl_x11egl.cpp
+ qgraphicsshadereffect.cpp
+ qgraphicsshadereffect_p.h
+ qgraphicssystem_gl.cpp
+ qgraphicssystem_gl_p.h
+ qpaintengine_opengl.cpp
+ qpaintengine_opengl_p.h
+ qpixmapdata_gl.cpp
+ qpixmapdata_gl_p.h
+ qpixmapdata_x11gl_egl.cpp
+ qpixmapdata_x11gl_p.h
+ qwindowsurface_gl.cpp
+ qwindowsurface_gl_p.h
+ qwindowsurface_x11gl.cpp
+ qwindowsurface_x11gl_p.h
+ util/
+0 brushes.conf
+ brush_painter.glsl
+ composition_mode_colorburn.glsl
+ composition_mode_colordodge.glsl
+ composition_mode_darken.glsl
+ composition_mode_difference.glsl
+ composition_mode_exclusion.glsl
+ composition_mode_hardlight.glsl
+ composition_mode_lighten.glsl
+ composition_mode_multiply.glsl
+ composition_mode_overlay.glsl
+ composition_modes.conf
+ composition_mode_screen.glsl
+ composition_mode_softlight.glsl
+ conical_brush.glsl
+ ellipse_aa.glsl
+ fast_painter.glsl
+ fragmentprograms_p.h
+ generator.cpp
+ generator.pro
+ glsl_to_include.sh
+ linear_brush.glsl
+ masks.conf
+ painter.glsl
+ painter_nomask.glsl
+ pattern_brush.glsl
+ radial_brush.glsl
+ README-GLSL
+ simple_porter_duff.glsl
+ solid_brush.glsl
+ texture_brush.glsl
+ trap_exact_aa.glsl
+3 openvg/
+0 openvg.pro
+ qpaintengine_vg.cpp
+ qpaintengine_vg_p.h
+ qpixmapdata_vg.cpp
+ qpixmapdata_vg_p.h
+ qpixmapfilter_vg.cpp
+ qpixmapfilter_vg_p.h
+ qvgcompositionhelper_p.h
+ qvg.h
+ qvg_p.h
+ qwindowsurface_vg.cpp
+ qwindowsurface_vgegl.cpp
+ qwindowsurface_vgegl_p.h
+ qwindowsurface_vg_p.h
+2 phonon/
+0 phonon.pro
+2 plugins/
+0 accessible/
+0 accessible.pro
+ compat/
+0 compat.pro
+ main.cpp
+ q3complexwidgets.cpp
+ q3complexwidgets.h
+ q3simplewidgets.cpp
+ q3simplewidgets.h
+ qaccessiblecompat.cpp
+ qaccessiblecompat.h
+2 qaccessiblebase.pri
+ widgets/
+0 complexwidgets.cpp
+ complexwidgets.h
+ main.cpp
+ qaccessiblemenu.cpp
+ qaccessiblemenu.h
+ qaccessiblewidgets.cpp
+ qaccessiblewidgets.h
+ rangecontrols.cpp
+ rangecontrols.h
+ simplewidgets.cpp
+ simplewidgets.h
+ widgets.pro
+3 audio/
+0 audio.pro
+2 codecs/
+0 cn/
+0 cn.pro
+ main.cpp
+ qgb18030codec.cpp
+ qgb18030codec.h
+2 codecs.pro
+ jp/
+0 jp.pro
+ main.cpp
+ qeucjpcodec.cpp
+ qeucjpcodec.h
+ qfontjpcodec.cpp
+ qfontjpcodec.h
+ qjiscodec.cpp
+ qjiscodec.h
+ qjpunicode.cpp
+ qjpunicode.h
+ qsjiscodec.cpp
+ qsjiscodec.h
+2 kr/
+0 cp949codetbl.h
+ kr.pro
+ main.cpp
+ qeuckrcodec.cpp
+ qeuckrcodec.h
+2 tw/
+0 main.cpp
+ qbig5codec.cpp
+ qbig5codec.h
+ tw.pro
+3 decorations/
+0 decorations.pro
+ default/
+0 default.pro
+ main.cpp
+2 styled/
+0 main.cpp
+ styled.pro
+2 windows/
+0 main.cpp
+ windows.pro
+3 gfxdrivers/
+0 ahi/
+0 ahi.pro
+ qscreenahiplugin.cpp
+ qscreenahi_qws.cpp
+ qscreenahi_qws.h
+2 directfb/
+0 directfb.pro
+ qdirectfbkeyboard.cpp
+ qdirectfbkeyboard.h
+ qdirectfbmouse.cpp
+ qdirectfbmouse.h
+ qdirectfbpaintdevice.cpp
+ qdirectfbpaintdevice.h
+ qdirectfbpaintengine.cpp
+ qdirectfbpaintengine.h
+ qdirectfbpixmap.cpp
+ qdirectfbpixmap.h
+ qdirectfbscreen.cpp
+ qdirectfbscreen.h
+ qdirectfbscreenplugin.cpp
+ qdirectfbwindowsurface.cpp
+ qdirectfbwindowsurface.h
+2 gfxdrivers.pro
+ linuxfb/
+0 linuxfb.pro
+ main.cpp
+2 powervr/
+0 powervr.pri
+ powervr.pro
+ pvreglscreen/
+0 pvreglscreen.cpp
+ pvreglscreen.h
+ pvreglscreenplugin.cpp
+ pvreglscreen.pro
+ pvreglwindowsurface.cpp
+ pvreglwindowsurface.h
+2 QWSWSEGL/
+0 pvrqwsdrawable.c
+ pvrqwsdrawable.h
+ pvrqwsdrawable_p.h
+ pvrqwswsegl.c
+ QWSWSEGL.pro
+2 README
+2 qvfb/
+0 main.cpp
+ qvfb.pro
+2 transformed/
+0 main.cpp
+ transformed.pro
+2 vnc/
+0 main.cpp
+ qscreenvnc_p.h
+ qscreenvnc_qws.cpp
+ qscreenvnc_qws.h
+ vnc.pro
+3 graphicssystems/
+0 graphicssystems.pro
+ opengl/
+0 main.cpp
+ opengl.pro
+2 openvg/
+0 main.cpp
+ openvg.pro
+ qgraphicssystem_vg.cpp
+ qgraphicssystem_vg_p.h
+2 shivavg/
+0 main.cpp
+ README
+ shivavggraphicssystem.cpp
+ shivavggraphicssystem.h
+ shivavg.pro
+ shivavgwindowsurface.cpp
+ shivavgwindowsurface.h
+2 trace/
+0 main.cpp
+ qgraphicssystem_trace.cpp
+ qgraphicssystem_trace_p.h
+ trace.pro
+3 iconengines/
+0 iconengines.pro
+ svgiconengine/
+0 main.cpp
+ qsvgiconengine.cpp
+ qsvgiconengine.h
+ svgiconengine.pro
+3 imageformats/
+0 gif/
+0 gif.pro
+ main.cpp
+ qgifhandler.cpp
+ qgifhandler.h
+2 ico/
+0 ico.pro
+ main.cpp
+ qicohandler.cpp
+ qicohandler.h
+2 imageformats.pro
+ jpeg/
+0 jpeg.pro
+ main.cpp
+ qjpeghandler.cpp
+ qjpeghandler.h
+2 mng/
+0 main.cpp
+ mng.pro
+ qmnghandler.cpp
+ qmnghandler.h
+2 svg/
+0 main.cpp
+ qsvgiohandler.cpp
+ qsvgiohandler.h
+ svg.pro
+2 tiff/
+0 main.cpp
+ qtiffhandler.cpp
+ qtiffhandler.h
+ tiff.pro
+3 inputmethods/
+0 imsw-multi/
+0 imsw-multi.pro
+ qmultiinputcontext.cpp
+ qmultiinputcontext.h
+ qmultiinputcontextplugin.cpp
+ qmultiinputcontextplugin.h
+2 inputmethods.pro
+2 kbddrivers/
+0 kbddrivers.pro
+ linuxinput/
+0 linuxinput.pro
+ main.cpp
+3 mousedrivers/
+0 linuxtp/
+0 linuxtp.pro
+ main.cpp
+2 mousedrivers.pro
+ pc/
+0 main.cpp
+ pc.pro
+2 tslib/
+0 main.cpp
+ tslib.pro
+3 phonon/
+0 ds9/
+0 ds9.pro
+2 gstreamer/
+0 gstreamer.pro
+2 mmf/
+0 mmf.pro
+2 phonon.pro
+ qt7/
+0 qt7.pro
+2 waveout/
+0 waveout.pro
+3 plugins.pro
+ qpluginbase.pri
+ s60/
+0 3_1/
+0 3_1.pro
+2 3_2/
+0 3_2.pro
+2 5_0/
+0 5_0.pro
+2 bwins/
+0 qts60pluginu.def
+2 eabi/
+0 qts60pluginu.def
+2 s60pluginbase.pri
+ s60.pro
+ src/
+0 qcoreapplication_3_1.cpp
+ qcoreapplication_3_2.cpp
+ qdesktopservices_3_1.cpp
+ qdesktopservices_3_2.cpp
+ qlocale_3_1.cpp
+ qlocale_3_2.cpp
+3 script/
+0 qtdbus/
+0 main.cpp
+ main.h
+ qtdbus.pro
+2 script.pro
+2 sqldrivers/
+0 db2/
+0 db2.pro
+ main.cpp
+ README
+2 ibase/
+0 ibase.pro
+ main.cpp
+2 mysql/
+0 main.cpp
+ mysql.pro
+ README
+2 oci/
+0 main.cpp
+ oci.pro
+ README
+2 odbc/
+0 main.cpp
+ odbc.pro
+ README
+2 psql/
+0 main.cpp
+ psql.pro
+ README
+2 qsqldriverbase.pri
+ README
+ sqldrivers.pro
+ sqlite/
+ sqlite2/
+0 README
+ smain.cpp
+ sqlite2.pro
+2 sqlite/README
+ sqlite/smain.cpp
+ sqlite/sqlite.pro
+ sqlite_symbian/
+0 SQLite3_v9.2.zip
+ sqlite_symbian.pro
+2 tds/
+0 main.cpp
+ README
+ tds.pro
+4 qbase.pri
+ qt3support/
+0 canvas/
+0 canvas.pri
+ q3canvas.cpp
+ q3canvas.h
+2 dialogs/
+0 dialogs.pri
+ q3filedialog.cpp
+ q3filedialog.h
+ q3filedialog_mac.cpp
+ q3filedialog_win.cpp
+ q3progressdialog.cpp
+ q3progressdialog.h
+ q3tabdialog.cpp
+ q3tabdialog.h
+ q3wizard.cpp
+ q3wizard.h
+2 itemviews/
+0 itemviews.pri
+ q3iconview.cpp
+ q3iconview.h
+ q3listbox.cpp
+ q3listbox.h
+ q3listview.cpp
+ q3listview.h
+ q3table.cpp
+ q3table.h
+2 network/
+0 network.pri
+ q3dns.cpp
+ q3dns.h
+ q3ftp.cpp
+ q3ftp.h
+ q3http.cpp
+ q3http.h
+ q3localfs.cpp
+ q3localfs.h
+ q3network.cpp
+ q3network.h
+ q3networkprotocol.cpp
+ q3networkprotocol.h
+ q3serversocket.cpp
+ q3serversocket.h
+ q3socket.cpp
+ q3socketdevice.cpp
+ q3socketdevice.h
+ q3socketdevice_unix.cpp
+ q3socketdevice_win.cpp
+ q3socket.h
+ q3url.cpp
+ q3url.h
+ q3urloperator.cpp
+ q3urloperator.h
+2 other/
+0 other.pri
+ q3accel.cpp
+ q3accel.h
+ q3boxlayout.cpp
+ q3boxlayout.h
+ q3dragobject.cpp
+ q3dragobject.h
+ q3dropsite.cpp
+ q3dropsite.h
+ q3gridlayout.h
+ q3membuf.cpp
+ q3membuf_p.h
+ q3mimefactory.cpp
+ q3mimefactory.h
+ q3polygonscanner.cpp
+ q3polygonscanner.h
+ q3process.cpp
+ q3process.h
+ q3process_unix.cpp
+ q3process_win.cpp
+ qiconset.h
+ qt_compat_pch.h
+2 painting/
+0 painting.pri
+ q3paintdevicemetrics.cpp
+ q3paintdevicemetrics.h
+ q3paintengine_svg.cpp
+ q3paintengine_svg_p.h
+ q3painter.cpp
+ q3painter.h
+ q3picture.cpp
+ q3picture.h
+ q3pointarray.cpp
+ q3pointarray.h
+2 qt3support.pro
+ sql/
+0 q3databrowser.cpp
+ q3databrowser.h
+ q3datatable.cpp
+ q3datatable.h
+ q3dataview.cpp
+ q3dataview.h
+ q3editorfactory.cpp
+ q3editorfactory.h
+ q3sqlcursor.cpp
+ q3sqlcursor.h
+ q3sqleditorfactory.cpp
+ q3sqleditorfactory.h
+ q3sqlfieldinfo.h
+ q3sqlfieldinfo.qdoc
+ q3sqlform.cpp
+ q3sqlform.h
+ q3sqlmanager_p.cpp
+ q3sqlmanager_p.h
+ q3sqlpropertymap.cpp
+ q3sqlpropertymap.h
+ q3sqlrecordinfo.h
+ q3sqlrecordinfo.qdoc
+ q3sqlselectcursor.cpp
+ q3sqlselectcursor.h
+ sql.pri
+2 text/
+0 q3multilineedit.cpp
+ q3multilineedit.h
+ q3richtext.cpp
+ q3richtext_p.cpp
+ q3richtext_p.h
+ q3simplerichtext.cpp
+ q3simplerichtext.h
+ q3stylesheet.cpp
+ q3stylesheet.h
+ q3syntaxhighlighter.cpp
+ q3syntaxhighlighter.h
+ q3syntaxhighlighter_p.h
+ q3textbrowser.cpp
+ q3textbrowser.h
+ q3textedit.cpp
+ q3textedit.h
+ q3textstream.cpp
+ q3textstream.h
+ q3textview.cpp
+ q3textview.h
+ text.pri
+2 tools/
+0 q3asciicache.h
+ q3asciicache.qdoc
+ q3asciidict.h
+ q3asciidict.qdoc
+ q3cache.h
+ q3cache.qdoc
+ q3cleanuphandler.h
+ q3cstring.cpp
+ q3cstring.h
+ q3deepcopy.cpp
+ q3deepcopy.h
+ q3dict.h
+ q3dict.qdoc
+ q3garray.cpp
+ q3garray.h
+ q3gcache.cpp
+ q3gcache.h
+ q3gdict.cpp
+ q3gdict.h
+ q3glist.cpp
+ q3glist.h
+ q3gvector.cpp
+ q3gvector.h
+ q3intcache.h
+ q3intcache.qdoc
+ q3intdict.h
+ q3intdict.qdoc
+ q3memarray.h
+ q3memarray.qdoc
+ q3objectdict.h
+ q3ptrcollection.cpp
+ q3ptrcollection.h
+ q3ptrdict.h
+ q3ptrdict.qdoc
+ q3ptrlist.h
+ q3ptrlist.qdoc
+ q3ptrqueue.h
+ q3ptrqueue.qdoc
+ q3ptrstack.h
+ q3ptrstack.qdoc
+ q3ptrvector.h
+ q3ptrvector.qdoc
+ q3semaphore.cpp
+ q3semaphore.h
+ q3shared.cpp
+ q3shared.h
+ q3signal.cpp
+ q3signal.h
+ q3sortedlist.h
+ q3strlist.h
+ q3strvec.h
+ q3tl.h
+ q3valuelist.h
+ q3valuelist.qdoc
+ q3valuestack.h
+ q3valuestack.qdoc
+ q3valuevector.h
+ q3valuevector.qdoc
+ tools.pri
+2 widgets/
+0 q3action.cpp
+ q3action.h
+ q3button.cpp
+ q3buttongroup.cpp
+ q3buttongroup.h
+ q3button.h
+ q3combobox.cpp
+ q3combobox.h
+ q3datetimeedit.cpp
+ q3datetimeedit.h
+ q3dockarea.cpp
+ q3dockarea.h
+ q3dockwindow.cpp
+ q3dockwindow.h
+ q3frame.cpp
+ q3frame.h
+ q3grid.cpp
+ q3grid.h
+ q3gridview.cpp
+ q3gridview.h
+ q3groupbox.cpp
+ q3groupbox.h
+ q3hbox.cpp
+ q3hbox.h
+ q3header.cpp
+ q3header.h
+ q3hgroupbox.cpp
+ q3hgroupbox.h
+ q3mainwindow.cpp
+ q3mainwindow.h
+ q3mainwindow_p.h
+ q3popupmenu.cpp
+ q3popupmenu.h
+ q3progressbar.cpp
+ q3progressbar.h
+ q3rangecontrol.cpp
+ q3rangecontrol.h
+ q3scrollview.cpp
+ q3scrollview.h
+ q3spinwidget.cpp
+ q3titlebar.cpp
+ q3titlebar_p.h
+ q3toolbar.cpp
+ q3toolbar.h
+ q3vbox.cpp
+ q3vbox.h
+ q3vgroupbox.cpp
+ q3vgroupbox.h
+ q3whatsthis.cpp
+ q3whatsthis.h
+ q3widgetstack.cpp
+ q3widgetstack.h
+ widgets.pri
+3 qt_install.pri
+ qt_targets.pri
+ s60installs/
+0 bwins/
+0 phononu.def
+ QtCoreu.def
+ QtGuiu.def
+ QtMultimediau.def
+ QtNetworku.def
+ QtScriptu.def
+ QtSqlu.def
+ QtSvgu.def
+ QtTestu.def
+ QtWebKitu.def
+ QtXmlPatternsu.def
+ QtXmlu.def
+2 eabi/
+0 phononu.def
+ QtCoreu.def
+ QtGuiu.def
+ QtMultimediau.def
+ QtNetworku.def
+ QtOpenVGu.def
+ QtScriptu.def
+ QtSqlu.def
+ QtSvgu.def
+ QtTestu.def
+ QtWebKitu.def
+ QtXmlPatternsu.def
+ QtXmlu.def
+2 .gitignore
+ qtdemoapps.iby
+ qt.iby
+ qt.svg
+ s60installs.pro
+ selfsigned.cer
+ selfsigned.key
+2 s60main/
+0 qts60main.cpp
+ qts60main_mcrt0.cpp
+ s60main.pro
+2 script/
+0 api/
+0 api.pri
+ qscriptable.cpp
+ qscriptable.h
+ qscriptable_p.h
+ qscriptclass.cpp
+ qscriptclass.h
+ qscriptclasspropertyiterator.cpp
+ qscriptclasspropertyiterator.h
+ qscriptcontext.cpp
+ qscriptcontext.h
+ qscriptcontextinfo.cpp
+ qscriptcontextinfo.h
+ qscriptcontext_p.h
+ qscriptengineagent.cpp
+ qscriptengineagent.h
+ qscriptengineagent_p.h
+ qscriptengine.cpp
+ qscriptengine.h
+ qscriptengine_p.h
+ qscriptextensioninterface.h
+ qscriptextensionplugin.cpp
+ qscriptextensionplugin.h
+ qscriptprogram.cpp
+ qscriptprogram.h
+ qscriptprogram_p.h
+ qscriptstring.cpp
+ qscriptstring.h
+ qscriptstring_p.h
+ qscriptvalue.cpp
+ qscriptvalue.h
+ qscriptvalueiterator.cpp
+ qscriptvalueiterator.h
+ qscriptvalue_p.h
+2 bridge/
+0 bridge.pri
+ qscriptactivationobject.cpp
+ qscriptactivationobject_p.h
+ qscriptclassobject.cpp
+ qscriptclassobject_p.h
+ qscriptdeclarativeclass.cpp
+ qscriptdeclarativeclass_p.h
+ qscriptdeclarativeobject.cpp
+ qscriptdeclarativeobject_p.h
+ qscriptfunction.cpp
+ qscriptfunction_p.h
+ qscriptglobalobject.cpp
+ qscriptglobalobject_p.h
+ qscriptobject.cpp
+ qscriptobject_p.h
+ qscriptqobject.cpp
+ qscriptqobject_p.h
+ qscriptvariant.cpp
+ qscriptvariant_p.h
+2 parser/
+0 parser.pri
+ qscriptast.cpp
+ qscriptastfwd_p.h
+ qscriptast_p.h
+ qscriptastvisitor.cpp
+ qscriptastvisitor_p.h
+ qscript.g
+ qscriptgrammar.cpp
+ qscriptgrammar_p.h
+ qscriptlexer.cpp
+ qscriptlexer_p.h
+ qscriptparser.cpp
+ qscriptparser_p.h
+ qscriptsyntaxchecker.cpp
+ qscriptsyntaxchecker_p.h
+2 script.pri
+ script.pro
+2 scripttools/
+0 debugging/
+0 debugging.pri
+ images/
+0 breakpoint.png
+ breakpoint.svg
+ d_breakpoint.png
+ d_breakpoint.svg
+ delete.png
+ d_interrupt.png
+ d_play.png
+ find.png
+ interrupt.png
+ location.png
+ location.svg
+ mac/
+0 closetab.png
+ next.png
+ plus.png
+ previous.png
+2 new.png
+ play.png
+ reload.png
+ return.png
+ runtocursor.png
+ runtonewscript.png
+ stepinto.png
+ stepout.png
+ stepover.png
+ win/
+0 closetab.png
+ next.png
+ plus.png
+ previous.png
+2 wrap.png
+2 qscriptbreakpointdata.cpp
+ qscriptbreakpointdata_p.h
+ qscriptbreakpointsmodel.cpp
+ qscriptbreakpointsmodel_p.h
+ qscriptbreakpointswidget.cpp
+ qscriptbreakpointswidgetinterface.cpp
+ qscriptbreakpointswidgetinterface_p.h
+ qscriptbreakpointswidgetinterface_p_p.h
+ qscriptbreakpointswidget_p.h
+ qscriptcompletionproviderinterface_p.h
+ qscriptcompletiontask.cpp
+ qscriptcompletiontaskinterface.cpp
+ qscriptcompletiontaskinterface_p.h
+ qscriptcompletiontaskinterface_p_p.h
+ qscriptcompletiontask_p.h
+ qscriptdebuggeragent.cpp
+ qscriptdebuggeragent_p.h
+ qscriptdebuggeragent_p_p.h
+ qscriptdebuggerbackend.cpp
+ qscriptdebuggerbackend_p.h
+ qscriptdebuggerbackend_p_p.h
+ qscriptdebuggercodefinderwidget.cpp
+ qscriptdebuggercodefinderwidgetinterface.cpp
+ qscriptdebuggercodefinderwidgetinterface_p.h
+ qscriptdebuggercodefinderwidgetinterface_p_p.h
+ qscriptdebuggercodefinderwidget_p.h
+ qscriptdebuggercodeview.cpp
+ qscriptdebuggercodeviewinterface.cpp
+ qscriptdebuggercodeviewinterface_p.h
+ qscriptdebuggercodeviewinterface_p_p.h
+ qscriptdebuggercodeview_p.h
+ qscriptdebuggercodewidget.cpp
+ qscriptdebuggercodewidgetinterface.cpp
+ qscriptdebuggercodewidgetinterface_p.h
+ qscriptdebuggercodewidgetinterface_p_p.h
+ qscriptdebuggercodewidget_p.h
+ qscriptdebuggercommand.cpp
+ qscriptdebuggercommandexecutor.cpp
+ qscriptdebuggercommandexecutor_p.h
+ qscriptdebuggercommand_p.h
+ qscriptdebuggercommandschedulerfrontend.cpp
+ qscriptdebuggercommandschedulerfrontend_p.h
+ qscriptdebuggercommandschedulerinterface_p.h
+ qscriptdebuggercommandschedulerjob.cpp
+ qscriptdebuggercommandschedulerjob_p.h
+ qscriptdebuggercommandschedulerjob_p_p.h
+ qscriptdebuggerconsolecommand.cpp
+ qscriptdebuggerconsolecommandgroupdata.cpp
+ qscriptdebuggerconsolecommandgroupdata_p.h
+ qscriptdebuggerconsolecommandjob.cpp
+ qscriptdebuggerconsolecommandjob_p.h
+ qscriptdebuggerconsolecommandjob_p_p.h
+ qscriptdebuggerconsolecommandmanager.cpp
+ qscriptdebuggerconsolecommandmanager_p.h
+ qscriptdebuggerconsolecommand_p.h
+ qscriptdebuggerconsolecommand_p_p.h
+ qscriptdebuggerconsole.cpp
+ qscriptdebuggerconsoleglobalobject.cpp
+ qscriptdebuggerconsoleglobalobject_p.h
+ qscriptdebuggerconsolehistorianinterface_p.h
+ qscriptdebuggerconsole_p.h
+ qscriptdebuggerconsolewidget.cpp
+ qscriptdebuggerconsolewidgetinterface.cpp
+ qscriptdebuggerconsolewidgetinterface_p.h
+ qscriptdebuggerconsolewidgetinterface_p_p.h
+ qscriptdebuggerconsolewidget_p.h
+ qscriptdebugger.cpp
+ qscriptdebuggerevent.cpp
+ qscriptdebuggereventhandlerinterface_p.h
+ qscriptdebuggerevent_p.h
+ qscriptdebuggerfrontend.cpp
+ qscriptdebuggerfrontend_p.h
+ qscriptdebuggerfrontend_p_p.h
+ qscriptdebuggerjob.cpp
+ qscriptdebuggerjob_p.h
+ qscriptdebuggerjob_p_p.h
+ qscriptdebuggerjobschedulerinterface_p.h
+ qscriptdebuggerlocalsmodel.cpp
+ qscriptdebuggerlocalsmodel_p.h
+ qscriptdebuggerlocalswidget.cpp
+ qscriptdebuggerlocalswidgetinterface.cpp
+ qscriptdebuggerlocalswidgetinterface_p.h
+ qscriptdebuggerlocalswidgetinterface_p_p.h
+ qscriptdebuggerlocalswidget_p.h
+ qscriptdebuggerobjectsnapshotdelta_p.h
+ qscriptdebugger_p.h
+ qscriptdebuggerresponse.cpp
+ qscriptdebuggerresponsehandlerinterface_p.h
+ qscriptdebuggerresponse_p.h
+ qscriptdebuggerscriptedconsolecommand.cpp
+ qscriptdebuggerscriptedconsolecommand_p.h
+ qscriptdebuggerscriptsmodel.cpp
+ qscriptdebuggerscriptsmodel_p.h
+ qscriptdebuggerscriptswidget.cpp
+ qscriptdebuggerscriptswidgetinterface.cpp
+ qscriptdebuggerscriptswidgetinterface_p.h
+ qscriptdebuggerscriptswidgetinterface_p_p.h
+ qscriptdebuggerscriptswidget_p.h
+ qscriptdebuggerstackmodel.cpp
+ qscriptdebuggerstackmodel_p.h
+ qscriptdebuggerstackwidget.cpp
+ qscriptdebuggerstackwidgetinterface.cpp
+ qscriptdebuggerstackwidgetinterface_p.h
+ qscriptdebuggerstackwidgetinterface_p_p.h
+ qscriptdebuggerstackwidget_p.h
+ qscriptdebuggerstandardwidgetfactory.cpp
+ qscriptdebuggerstandardwidgetfactory_p.h
+ qscriptdebuggervalue.cpp
+ qscriptdebuggervalue_p.h
+ qscriptdebuggervalueproperty.cpp
+ qscriptdebuggervalueproperty_p.h
+ qscriptdebuggerwidgetfactoryinterface_p.h
+ qscriptdebugoutputwidget.cpp
+ qscriptdebugoutputwidgetinterface.cpp
+ qscriptdebugoutputwidgetinterface_p.h
+ qscriptdebugoutputwidgetinterface_p_p.h
+ qscriptdebugoutputwidget_p.h
+ qscriptedit.cpp
+ qscriptedit_p.h
+ qscriptenginedebugger.cpp
+ qscriptenginedebuggerfrontend.cpp
+ qscriptenginedebuggerfrontend_p.h
+ qscriptenginedebugger.h
+ qscripterrorlogwidget.cpp
+ qscripterrorlogwidgetinterface.cpp
+ qscripterrorlogwidgetinterface_p.h
+ qscripterrorlogwidgetinterface_p_p.h
+ qscripterrorlogwidget_p.h
+ qscriptmessagehandlerinterface_p.h
+ qscriptobjectsnapshot.cpp
+ qscriptobjectsnapshot_p.h
+ qscriptscriptdata.cpp
+ qscriptscriptdata_p.h
+ qscriptstdmessagehandler.cpp
+ qscriptstdmessagehandler_p.h
+ qscriptsyntaxhighlighter.cpp
+ qscriptsyntaxhighlighter_p.h
+ qscripttooltipproviderinterface_p.h
+ qscriptvalueproperty.cpp
+ qscriptvalueproperty_p.h
+ qscriptxmlparser.cpp
+ qscriptxmlparser_p.h
+ scripts/
+0 commands/
+0 advance.qs
+ backtrace.qs
+ break.qs
+ clear.qs
+ complete.qs
+ condition.qs
+ continue.qs
+ delete.qs
+ disable.qs
+ down.qs
+ enable.qs
+ eval.qs
+ finish.qs
+ frame.qs
+ help.qs
+ ignore.qs
+ info.qs
+ interrupt.qs
+ list.qs
+ next.qs
+ print.qs
+ return.qs
+ step.qs
+ tbreak.qs
+ up.qs
+3 scripttools_debugging.qrc
+2 scripttools.pro
+2 script/utils/
+0 qscriptdate.cpp
+ qscriptdate_p.h
+ utils.pri
+2 sql/
+0 drivers/
+0 db2/
+0 qsql_db2.cpp
+ qsql_db2.h
+2 drivers.pri
+ ibase/
+0 qsql_ibase.cpp
+ qsql_ibase.h
+2 mysql/
+0 qsql_mysql.cpp
+ qsql_mysql.h
+2 oci/
+0 qsql_oci.cpp
+ qsql_oci.h
+2 odbc/
+0 qsql_odbc.cpp
+ qsql_odbc.h
+2 psql/
+0 qsql_psql.cpp
+ qsql_psql.h
+2 sqlite/
+ sqlite2/
+0 qsql_sqlite2.cpp
+ qsql_sqlite2.h
+2 sqlite/qsql_sqlite.cpp
+ sqlite/qsql_sqlite.h
+ tds/
+0 qsql_tds.cpp
+ qsql_tds.h
+3 kernel/
+0 kernel.pri
+ qsqlcachedresult.cpp
+ qsqlcachedresult_p.h
+ qsqldatabase.cpp
+ qsqldatabase.h
+ qsqldriver.cpp
+ qsqldriver.h
+ qsqldriverplugin.cpp
+ qsqldriverplugin.h
+ qsqlerror.cpp
+ qsqlerror.h
+ qsqlfield.cpp
+ qsqlfield.h
+ qsql.h
+ qsqlindex.cpp
+ qsqlindex.h
+ qsqlnulldriver_p.h
+ qsql.qdoc
+ qsqlquery.cpp
+ qsqlquery.h
+ qsqlrecord.cpp
+ qsqlrecord.h
+ qsqlresult.cpp
+ qsqlresult.h
+2 models/
+0 models.pri
+ qsqlquerymodel.cpp
+ qsqlquerymodel.h
+ qsqlquerymodel_p.h
+ qsqlrelationaldelegate.cpp
+ qsqlrelationaldelegate.h
+ qsqlrelationaltablemodel.cpp
+ qsqlrelationaltablemodel.h
+ qsqltablemodel.cpp
+ qsqltablemodel.h
+ qsqltablemodel_p.h
+2 README.module
+ sql.pro
+2 src.pro
+ svg/
+0 qgraphicssvgitem.cpp
+ qgraphicssvgitem.h
+ qsvgfont.cpp
+ qsvgfont_p.h
+ qsvggenerator.cpp
+ qsvggenerator.h
+ qsvggraphics.cpp
+ qsvggraphics_p.h
+ qsvghandler.cpp
+ qsvghandler_p.h
+ qsvgnode.cpp
+ qsvgnode_p.h
+ qsvgrenderer.cpp
+ qsvgrenderer.h
+ qsvgstructure.cpp
+ qsvgstructure_p.h
+ qsvgstyle.cpp
+ qsvgstyle_p.h
+ qsvgtinydocument.cpp
+ qsvgtinydocument_p.h
+ qsvgwidget.cpp
+ qsvgwidget.h
+ svg.pro
+2 testlib/
+0 3rdparty/
+0 callgrind_p.h
+ cycle_p.h
+ valgrind_p.h
+2 qabstracttestlogger.cpp
+ qabstracttestlogger_p.h
+ qasciikey.cpp
+ qbenchmark.cpp
+ qbenchmarkevent.cpp
+ qbenchmarkevent_p.h
+ qbenchmark.h
+ qbenchmarkmeasurement.cpp
+ qbenchmarkmeasurement_p.h
+ qbenchmark_p.h
+ qbenchmarkvalgrind.cpp
+ qbenchmarkvalgrind_p.h
+ qplaintestlogger.cpp
+ qplaintestlogger_p.h
+ qsignaldumper.cpp
+ qsignaldumper_p.h
+ qsignalspy.h
+ qsignalspy.qdoc
+ qtestaccessible.h
+ qtestassert.h
+ qtestbasicstreamer.cpp
+ qtestbasicstreamer.h
+ qtestcase.cpp
+ qtestcase.h
+ qtestcoreelement.h
+ qtestcorelist.h
+ qtestdata.cpp
+ qtestdata.h
+ qtestelementattribute.cpp
+ qtestelementattribute.h
+ qtestelement.cpp
+ qtestelement.h
+ qtestevent.h
+ qtesteventloop.h
+ qtestevent.qdoc
+ qtestfilelogger.cpp
+ qtestfilelogger.h
+ qtest_global.h
+ qtest_gui.h
+ qtest.h
+ qtestkeyboard.h
+ qtestlightxmlstreamer.cpp
+ qtestlightxmlstreamer.h
+ qtestlog.cpp
+ qtestlogger.cpp
+ qtestlogger_p.h
+ qtestlog_p.h
+ qtestmouse.h
+ qtestresult.cpp
+ qtestresult_p.h
+ qtestspontaneevent.h
+ qtestsystem.h
+ qtesttable.cpp
+ qtesttable_p.h
+ qtesttouch.h
+ qtestxmlstreamer.cpp
+ qtestxmlstreamer.h
+ qtestxunitstreamer.cpp
+ qtestxunitstreamer.h
+ qxmltestlogger.cpp
+ qxmltestlogger_p.h
+ testlib.pro
+2 tools/
+0 bootstrap/
+0 bootstrap.pri
+ bootstrap.pro
+2 idc/
+0 idc.pro
+ main.cpp
+2 moc/
+0 generator.cpp
+ generator.h
+ keywords.cpp
+ main.cpp
+ moc.cpp
+ moc.h
+ moc.pri
+ moc.pro
+ mwerks_mac.cpp
+ mwerks_mac.h
+ outputrevision.h
+ parser.cpp
+ parser.h
+ ppkeywords.cpp
+ preprocessor.cpp
+ preprocessor.h
+ symbols.h
+ token.cpp
+ token.h
+ util/
+0 generate_keywords.cpp
+ generate_keywords.pro
+ generate.sh
+ licenseheader.txt
+2 utils.h
+2 rcc/
+0 main.cpp
+ rcc.cpp
+ rcc.h
+ rcc.pri
+ rcc.pro
+2 tools.pro
+ uic/
+ uic3/
+0 converter.cpp
+ deps.cpp
+ domtool.cpp
+ domtool.h
+ embed.cpp
+ form.cpp
+ main.cpp
+ object.cpp
+ parser.cpp
+ parser.h
+ qt3to4.cpp
+ qt3to4.h
+ subclassing.cpp
+ ui3reader.cpp
+ ui3reader.h
+ uic3.pro
+ uic.cpp
+ uic.h
+ widgetinfo.cpp
+ widgetinfo.h
+2 uic/cpp/
+0 cppextractimages.cpp
+ cppextractimages.h
+ cpp.pri
+ cppwritedeclaration.cpp
+ cppwritedeclaration.h
+ cppwriteicondata.cpp
+ cppwriteicondata.h
+ cppwriteicondeclaration.cpp
+ cppwriteicondeclaration.h
+ cppwriteiconinitialization.cpp
+ cppwriteiconinitialization.h
+ cppwriteincludes.cpp
+ cppwriteincludes.h
+ cppwriteinitialization.cpp
+ cppwriteinitialization.h
+2 uic/customwidgetsinfo.cpp
+ uic/customwidgetsinfo.h
+ uic/databaseinfo.cpp
+ uic/databaseinfo.h
+ uic/driver.cpp
+ uic/driver.h
+ uic/globaldefs.h
+ uic/main.cpp
+ uic/option.h
+ uic/treewalker.cpp
+ uic/treewalker.h
+ uic/ui4.cpp
+ uic/ui4.h
+ uic/uic.cpp
+ uic/uic.h
+ uic/uic.pri
+ uic/uic.pro
+ uic/utils.h
+ uic/validator.cpp
+ uic/validator.h
+2 winmain/
+0 qtmain_win.cpp
+ winmain.pro
+2 xml/
+0 dom/
+0 dom.pri
+ qdom.cpp
+ qdom.h
+3 xmlpatterns/
+0 acceltree/
+0 acceltree.pri
+ qacceliterators.cpp
+ qacceliterators_p.h
+ qacceltreebuilder.cpp
+ qacceltreebuilder_p.h
+ qacceltree.cpp
+ qacceltree_p.h
+ qacceltreeresourceloader.cpp
+ qacceltreeresourceloader_p.h
+ qcompressedwhitespace.cpp
+ qcompressedwhitespace_p.h
+2 api/
+0 api.pri
+ qabstractmessagehandler.cpp
+ qabstractmessagehandler.h
+ qabstracturiresolver.cpp
+ qabstracturiresolver.h
+ qabstractxmlforwarditerator.cpp
+ qabstractxmlforwarditerator_p.h
+ qabstractxmlnodemodel.cpp
+ qabstractxmlnodemodel.h
+ qabstractxmlnodemodel_p.h
+ qabstractxmlpullprovider.cpp
+ qabstractxmlpullprovider_p.h
+ qabstractxmlreceiver.cpp
+ qabstractxmlreceiver.h
+ qabstractxmlreceiver_p.h
+ qdeviceresourceloader_p.h
+ qiodevicedelegate.cpp
+ qiodevicedelegate_p.h
+ qnetworkaccessdelegator.cpp
+ qnetworkaccessdelegator_p.h
+ qpullbridge.cpp
+ qpullbridge_p.h
+ qreferencecountedvalue_p.h
+ qresourcedelegator.cpp
+ qresourcedelegator_p.h
+ qsimplexmlnodemodel.cpp
+ qsimplexmlnodemodel.h
+ qsourcelocation.cpp
+ qsourcelocation.h
+ quriloader.cpp
+ quriloader_p.h
+ qvariableloader.cpp
+ qvariableloader_p.h
+ qxmlformatter.cpp
+ qxmlformatter.h
+ qxmlname.cpp
+ qxmlname.h
+ qxmlnamepool.cpp
+ qxmlnamepool.h
+ qxmlquery.cpp
+ qxmlquery.h
+ qxmlquery_p.h
+ qxmlresultitems.cpp
+ qxmlresultitems.h
+ qxmlresultitems_p.h
+ qxmlschema.cpp
+ qxmlschema.h
+ qxmlschema_p.cpp
+ qxmlschema_p.h
+ qxmlschemavalidator.cpp
+ qxmlschemavalidator.h
+ qxmlschemavalidator_p.h
+ qxmlserializer.cpp
+ qxmlserializer.h
+ qxmlserializer_p.h
+2 common.pri
+ data/
+0 data.pri
+ qabstractdatetime.cpp
+ qabstractdatetime_p.h
+ qabstractduration.cpp
+ qabstractduration_p.h
+ qabstractfloatcasters.cpp
+ qabstractfloatcasters_p.h
+ qabstractfloat.cpp
+ qabstractfloatmathematician.cpp
+ qabstractfloatmathematician_p.h
+ qabstractfloat_p.h
+ qanyuri.cpp
+ qanyuri_p.h
+ qatomiccaster.cpp
+ qatomiccaster_p.h
+ qatomiccasters.cpp
+ qatomiccasters_p.h
+ qatomiccomparator.cpp
+ qatomiccomparator_p.h
+ qatomiccomparators.cpp
+ qatomiccomparators_p.h
+ qatomicmathematician.cpp
+ qatomicmathematician_p.h
+ qatomicmathematicians.cpp
+ qatomicmathematicians_p.h
+ qatomicstring.cpp
+ qatomicstring_p.h
+ qatomicvalue.cpp
+ qbase64binary.cpp
+ qbase64binary_p.h
+ qboolean.cpp
+ qboolean_p.h
+ qcommonvalues.cpp
+ qcommonvalues_p.h
+ qcomparisonfactory.cpp
+ qcomparisonfactory_p.h
+ qdate.cpp
+ qdate_p.h
+ qdaytimeduration.cpp
+ qdaytimeduration_p.h
+ qdecimal.cpp
+ qdecimal_p.h
+ qderivedinteger_p.h
+ qderivedstring_p.h
+ qduration.cpp
+ qduration_p.h
+ qgday.cpp
+ qgday_p.h
+ qgmonth.cpp
+ qgmonthday.cpp
+ qgmonthday_p.h
+ qgmonth_p.h
+ qgyear.cpp
+ qgyearmonth.cpp
+ qgyearmonth_p.h
+ qgyear_p.h
+ qhexbinary.cpp
+ qhexbinary_p.h
+ qinteger.cpp
+ qinteger_p.h
+ qitem.cpp
+ qitem_p.h
+ qnodebuilder.cpp
+ qnodebuilder_p.h
+ qnodemodel.cpp
+ qqnamevalue.cpp
+ qqnamevalue_p.h
+ qresourceloader.cpp
+ qresourceloader_p.h
+ qschemadatetime.cpp
+ qschemadatetime_p.h
+ qschemanumeric.cpp
+ qschemanumeric_p.h
+ qschematime.cpp
+ qschematime_p.h
+ qsequencereceiver.cpp
+ qsequencereceiver_p.h
+ qsorttuple.cpp
+ qsorttuple_p.h
+ quntypedatomic.cpp
+ quntypedatomic_p.h
+ qvalidationerror.cpp
+ qvalidationerror_p.h
+ qvaluefactory.cpp
+ qvaluefactory_p.h
+ qyearmonthduration.cpp
+ qyearmonthduration_p.h
+2 documentationGroups.dox
+ Doxyfile
+ environment/
+0 createReportContext.sh
+ createReportContext.xsl
+ environment.pri
+ qcurrentitemcontext.cpp
+ qcurrentitemcontext_p.h
+ qdelegatingdynamiccontext.cpp
+ qdelegatingdynamiccontext_p.h
+ qdelegatingstaticcontext.cpp
+ qdelegatingstaticcontext_p.h
+ qdynamiccontext.cpp
+ qdynamiccontext_p.h
+ qfocus.cpp
+ qfocus_p.h
+ qgenericdynamiccontext.cpp
+ qgenericdynamiccontext_p.h
+ qgenericstaticcontext.cpp
+ qgenericstaticcontext_p.h
+ qreceiverdynamiccontext.cpp
+ qreceiverdynamiccontext_p.h
+ qreportcontext.cpp
+ qreportcontext_p.h
+ qstackcontextbase.cpp
+ qstackcontextbase_p.h
+ qstaticbaseuricontext.cpp
+ qstaticbaseuricontext_p.h
+ qstaticcompatibilitycontext.cpp
+ qstaticcompatibilitycontext_p.h
+ qstaticcontext.cpp
+ qstaticcontext_p.h
+ qstaticcurrentcontext.cpp
+ qstaticcurrentcontext_p.h
+ qstaticfocuscontext.cpp
+ qstaticfocuscontext_p.h
+ qstaticnamespacecontext.cpp
+ qstaticnamespacecontext_p.h
+2 expr/
+0 expr.pri
+ qandexpression.cpp
+ qandexpression_p.h
+ qapplytemplate.cpp
+ qapplytemplate_p.h
+ qargumentreference.cpp
+ qargumentreference_p.h
+ qarithmeticexpression.cpp
+ qarithmeticexpression_p.h
+ qattributeconstructor.cpp
+ qattributeconstructor_p.h
+ qattributenamevalidator.cpp
+ qattributenamevalidator_p.h
+ qaxisstep.cpp
+ qaxisstep_p.h
+ qcachecells_p.h
+ qcallsite.cpp
+ qcallsite_p.h
+ qcalltargetdescription.cpp
+ qcalltargetdescription_p.h
+ qcalltemplate.cpp
+ qcalltemplate_p.h
+ qcastableas.cpp
+ qcastableas_p.h
+ qcastas.cpp
+ qcastas_p.h
+ qcastingplatform.cpp
+ qcastingplatform_p.h
+ qcollationchecker.cpp
+ qcollationchecker_p.h
+ qcombinenodes.cpp
+ qcombinenodes_p.h
+ qcommentconstructor.cpp
+ qcommentconstructor_p.h
+ qcomparisonplatform.cpp
+ qcomparisonplatform_p.h
+ qcomputednamespaceconstructor.cpp
+ qcomputednamespaceconstructor_p.h
+ qcontextitem.cpp
+ qcontextitem_p.h
+ qcopyof.cpp
+ qcopyof_p.h
+ qcurrentitemstore.cpp
+ qcurrentitemstore_p.h
+ qdocumentconstructor.cpp
+ qdocumentconstructor_p.h
+ qdocumentcontentvalidator.cpp
+ qdocumentcontentvalidator_p.h
+ qdynamiccontextstore.cpp
+ qdynamiccontextstore_p.h
+ qelementconstructor.cpp
+ qelementconstructor_p.h
+ qemptycontainer.cpp
+ qemptycontainer_p.h
+ qemptysequence.cpp
+ qemptysequence_p.h
+ qevaluationcache.cpp
+ qevaluationcache_p.h
+ qexpression.cpp
+ qexpressiondispatch_p.h
+ qexpressionfactory.cpp
+ qexpressionfactory_p.h
+ qexpression_p.h
+ qexpressionsequence.cpp
+ qexpressionsequence_p.h
+ qexpressionvariablereference.cpp
+ qexpressionvariablereference_p.h
+ qexternalvariableloader.cpp
+ qexternalvariableloader_p.h
+ qexternalvariablereference.cpp
+ qexternalvariablereference_p.h
+ qfirstitempredicate.cpp
+ qfirstitempredicate_p.h
+ qforclause.cpp
+ qforclause_p.h
+ qgeneralcomparison.cpp
+ qgeneralcomparison_p.h
+ qgenericpredicate.cpp
+ qgenericpredicate_p.h
+ qifthenclause.cpp
+ qifthenclause_p.h
+ qinstanceof.cpp
+ qinstanceof_p.h
+ qletclause.cpp
+ qletclause_p.h
+ qliteral.cpp
+ qliteral_p.h
+ qliteralsequence.cpp
+ qliteralsequence_p.h
+ qnamespaceconstructor.cpp
+ qnamespaceconstructor_p.h
+ qncnameconstructor.cpp
+ qncnameconstructor_p.h
+ qnodecomparison.cpp
+ qnodecomparison_p.h
+ qnodesort.cpp
+ qnodesort_p.h
+ qoperandsiterator_p.h
+ qoptimizationpasses.cpp
+ qoptimizationpasses_p.h
+ qoptimizerblocks.cpp
+ qoptimizerblocks_p.h
+ qoptimizerframework.cpp
+ qoptimizerframework_p.h
+ qorderby.cpp
+ qorderby_p.h
+ qorexpression.cpp
+ qorexpression_p.h
+ qpaircontainer.cpp
+ qpaircontainer_p.h
+ qparentnodeaxis.cpp
+ qparentnodeaxis_p.h
+ qpath.cpp
+ qpath_p.h
+ qpositionalvariablereference.cpp
+ qpositionalvariablereference_p.h
+ qprocessinginstructionconstructor.cpp
+ qprocessinginstructionconstructor_p.h
+ qqnameconstructor.cpp
+ qqnameconstructor_p.h
+ qquantifiedexpression.cpp
+ qquantifiedexpression_p.h
+ qrangeexpression.cpp
+ qrangeexpression_p.h
+ qrangevariablereference.cpp
+ qrangevariablereference_p.h
+ qreturnorderby.cpp
+ qreturnorderby_p.h
+ qsimplecontentconstructor.cpp
+ qsimplecontentconstructor_p.h
+ qsinglecontainer.cpp
+ qsinglecontainer_p.h
+ qsourcelocationreflection.cpp
+ qsourcelocationreflection_p.h
+ qstaticbaseuristore.cpp
+ qstaticbaseuristore_p.h
+ qstaticcompatibilitystore.cpp
+ qstaticcompatibilitystore_p.h
+ qtemplate.cpp
+ qtemplateinvoker.cpp
+ qtemplateinvoker_p.h
+ qtemplatemode.cpp
+ qtemplatemode_p.h
+ qtemplateparameterreference.cpp
+ qtemplateparameterreference_p.h
+ qtemplatepattern_p.h
+ qtemplate_p.h
+ qtextnodeconstructor.cpp
+ qtextnodeconstructor_p.h
+ qtreatas.cpp
+ qtreatas_p.h
+ qtriplecontainer.cpp
+ qtriplecontainer_p.h
+ qtruthpredicate.cpp
+ qtruthpredicate_p.h
+ qunaryexpression.cpp
+ qunaryexpression_p.h
+ qunlimitedcontainer.cpp
+ qunlimitedcontainer_p.h
+ qunresolvedvariablereference.cpp
+ qunresolvedvariablereference_p.h
+ quserfunctioncallsite.cpp
+ quserfunctioncallsite_p.h
+ quserfunction.cpp
+ quserfunction_p.h
+ qvalidate.cpp
+ qvalidate_p.h
+ qvaluecomparison.cpp
+ qvaluecomparison_p.h
+ qvariabledeclaration.cpp
+ qvariabledeclaration_p.h
+ qvariablereference.cpp
+ qvariablereference_p.h
+ qwithparam_p.h
+ qxsltsimplecontentconstructor.cpp
+ qxsltsimplecontentconstructor_p.h
+2 functions/
+0 functions.pri
+ qabstractfunctionfactory.cpp
+ qabstractfunctionfactory_p.h
+ qaccessorfns.cpp
+ qaccessorfns_p.h
+ qaggregatefns.cpp
+ qaggregatefns_p.h
+ qaggregator.cpp
+ qaggregator_p.h
+ qassemblestringfns.cpp
+ qassemblestringfns_p.h
+ qbooleanfns.cpp
+ qbooleanfns_p.h
+ qcomparescaseaware.cpp
+ qcomparescaseaware_p.h
+ qcomparestringfns.cpp
+ qcomparestringfns_p.h
+ qcomparingaggregator.cpp
+ qcomparingaggregator_p.h
+ qconstructorfunctionsfactory.cpp
+ qconstructorfunctionsfactory_p.h
+ qcontextfns.cpp
+ qcontextfns_p.h
+ qcontextnodechecker.cpp
+ qcontextnodechecker_p.h
+ qcurrentfn.cpp
+ qcurrentfn_p.h
+ qdatetimefn.cpp
+ qdatetimefn_p.h
+ qdatetimefns.cpp
+ qdatetimefns_p.h
+ qdeepequalfn.cpp
+ qdeepequalfn_p.h
+ qdocumentfn.cpp
+ qdocumentfn_p.h
+ qelementavailablefn.cpp
+ qelementavailablefn_p.h
+ qerrorfn.cpp
+ qerrorfn_p.h
+ qfunctionargument.cpp
+ qfunctionargument_p.h
+ qfunctionavailablefn.cpp
+ qfunctionavailablefn_p.h
+ qfunctioncall.cpp
+ qfunctioncall_p.h
+ qfunctionfactorycollection.cpp
+ qfunctionfactorycollection_p.h
+ qfunctionfactory.cpp
+ qfunctionfactory_p.h
+ qfunctionsignature.cpp
+ qfunctionsignature_p.h
+ qgenerateidfn.cpp
+ qgenerateidfn_p.h
+ qnodefns.cpp
+ qnodefns_p.h
+ qnumericfns.cpp
+ qnumericfns_p.h
+ qpatternmatchingfns.cpp
+ qpatternmatchingfns_p.h
+ qpatternplatform.cpp
+ qpatternplatform_p.h
+ qqnamefns.cpp
+ qqnamefns_p.h
+ qresolveurifn.cpp
+ qresolveurifn_p.h
+ qsequencefns.cpp
+ qsequencefns_p.h
+ qsequencegeneratingfns.cpp
+ qsequencegeneratingfns_p.h
+ qstaticbaseuricontainer_p.h
+ qstaticnamespacescontainer.cpp
+ qstaticnamespacescontainer_p.h
+ qstringvaluefns.cpp
+ qstringvaluefns_p.h
+ qsubstringfns.cpp
+ qsubstringfns_p.h
+ qsystempropertyfn.cpp
+ qsystempropertyfn_p.h
+ qtimezonefns.cpp
+ qtimezonefns_p.h
+ qtracefn.cpp
+ qtracefn_p.h
+ qtypeavailablefn.cpp
+ qtypeavailablefn_p.h
+ qunparsedentitypublicidfn.cpp
+ qunparsedentitypublicidfn_p.h
+ qunparsedentityurifn.cpp
+ qunparsedentityurifn_p.h
+ qunparsedtextavailablefn.cpp
+ qunparsedtextavailablefn_p.h
+ qunparsedtextfn.cpp
+ qunparsedtextfn_p.h
+ qxpath10corefunctions.cpp
+ qxpath10corefunctions_p.h
+ qxpath20corefunctions.cpp
+ qxpath20corefunctions_p.h
+ qxslt20corefunctions.cpp
+ qxslt20corefunctions_p.h
+2 .gitignore
+ iterators/
+0 iterators.pri
+ qcachingiterator.cpp
+ qcachingiterator_p.h
+ qdeduplicateiterator.cpp
+ qdeduplicateiterator_p.h
+ qdistinctiterator.cpp
+ qdistinctiterator_p.h
+ qemptyiterator_p.h
+ qexceptiterator.cpp
+ qexceptiterator_p.h
+ qindexofiterator.cpp
+ qindexofiterator_p.h
+ qinsertioniterator.cpp
+ qinsertioniterator_p.h
+ qintersectiterator.cpp
+ qintersectiterator_p.h
+ qitemmappingiterator_p.h
+ qrangeiterator.cpp
+ qrangeiterator_p.h
+ qremovaliterator.cpp
+ qremovaliterator_p.h
+ qsequencemappingiterator_p.h
+ qsingletoniterator_p.h
+ qsubsequenceiterator.cpp
+ qsubsequenceiterator_p.h
+ qtocodepointsiterator.cpp
+ qtocodepointsiterator_p.h
+ qunioniterator.cpp
+ qunioniterator_p.h
+2 janitors/
+0 janitors.pri
+ qargumentconverter.cpp
+ qargumentconverter_p.h
+ qatomizer.cpp
+ qatomizer_p.h
+ qcardinalityverifier.cpp
+ qcardinalityverifier_p.h
+ qebvextractor.cpp
+ qebvextractor_p.h
+ qitemverifier.cpp
+ qitemverifier_p.h
+ quntypedatomicconverter.cpp
+ quntypedatomicconverter_p.h
+2 Mainpage.dox
+ parser/
+0 createParser.sh
+ createTokenLookup.sh
+ createXSLTTokenLookup.sh
+ .gitattributes
+ .gitignore
+ parser.pri
+ qmaintainingreader.cpp
+ qmaintainingreader_p.h
+ qparsercontext.cpp
+ qparsercontext_p.h
+ qquerytransformparser.cpp
+ qquerytransformparser_p.h
+ qtokenizer_p.h
+ qtokenlookup.cpp
+ qtokenrevealer.cpp
+ qtokenrevealer_p.h
+ qtokensource.cpp
+ qtokensource_p.h
+ querytransformparser.ypp
+ qxquerytokenizer.cpp
+ qxquerytokenizer_p.h
+ qxslttokenizer.cpp
+ qxslttokenizer_p.h
+ qxslttokenlookup.cpp
+ qxslttokenlookup_p.h
+ qxslttokenlookup.xml
+ TokenLookup.gperf
+ trolltechHeader.txt
+ winCEWorkaround.sed
+2 projection/
+0 projection.pri
+ qdocumentprojector.cpp
+ qdocumentprojector_p.h
+ qprojectedexpression_p.h
+2 qtokenautomaton/
+0 exampleFile.xml
+ qautomaton2cpp.xsl
+ qtokenautomaton.xsd
+ README
+2 query.pri
+ schema/
+0 builtinschemas.qrc
+ doc/
+0 All_diagram.dot
+ Alternative_diagram.dot
+ Annotation_diagram.dot
+ AnyAttribute_diagram.dot
+ Any_diagram.dot
+ Assert_diagram.dot
+ Choice_diagram.dot
+ ComplexContent_diagram.dot
+ ComplexContentExtension_diagram.dot
+ ComplexContentRestriction_diagram.dot
+ DefaultOpenContent_diagram.dot
+ EnumerationFacet_diagram.dot
+ Field_diagram.dot
+ FractionDigitsFacet_diagram.dot
+ GlobalAttribute_diagram.dot
+ GlobalComplexType_diagram.dot
+ GlobalElement_diagram.dot
+ GlobalSimpleType_diagram.dot
+ Import_diagram.dot
+ Include_diagram.dot
+ Key_diagram.dot
+ KeyRef_diagram.dot
+ legend.dot
+ LengthFacet_diagram.dot
+ List_diagram.dot
+ LocalAll_diagram.dot
+ LocalAttribute_diagram.dot
+ LocalChoice_diagram.dot
+ LocalComplexType_diagram.dot
+ LocalElement_diagram.dot
+ LocalSequence_diagram.dot
+ LocalSimpleType_diagram.dot
+ MaxExclusiveFacet_diagram.dot
+ MaxInclusiveFacet_diagram.dot
+ MaxLengthFacet_diagram.dot
+ MinExclusiveFacet_diagram.dot
+ MinInclusiveFacet_diagram.dot
+ MinLengthFacet_diagram.dot
+ NamedAttributeGroup_diagram.dot
+ NamedGroup_diagram.dot
+ Notation_diagram.dot
+ Override_diagram.dot
+ PatternFacet_diagram.dot
+ Redefine_diagram.dot
+ ReferredAttributeGroup_diagram.dot
+ ReferredGroup_diagram.dot
+ Schema_diagram.dot
+ Selector_diagram.dot
+ Sequence_diagram.dot
+ SimpleContent_diagram.dot
+ SimpleContentExtension_diagram.dot
+ SimpleContentRestriction_diagram.dot
+ SimpleRestriction_diagram.dot
+ TotalDigitsFacet_diagram.dot
+ Union_diagram.dot
+ Unique_diagram.dot
+ WhiteSpaceFacet_diagram.dot
+2 .gitignore
+ qnamespacesupport.cpp
+ qnamespacesupport_p.h
+ qxsdalternative.cpp
+ qxsdalternative_p.h
+ qxsdannotated.cpp
+ qxsdannotated_p.h
+ qxsdannotation.cpp
+ qxsdannotation_p.h
+ qxsdapplicationinformation.cpp
+ qxsdapplicationinformation_p.h
+ qxsdassertion.cpp
+ qxsdassertion_p.h
+ qxsdattribute.cpp
+ qxsdattributegroup.cpp
+ qxsdattributegroup_p.h
+ qxsdattribute_p.h
+ qxsdattributereference.cpp
+ qxsdattributereference_p.h
+ qxsdattributeterm.cpp
+ qxsdattributeterm_p.h
+ qxsdattributeuse.cpp
+ qxsdattributeuse_p.h
+ qxsdcomplextype.cpp
+ qxsdcomplextype_p.h
+ qxsddocumentation.cpp
+ qxsddocumentation_p.h
+ qxsdelement.cpp
+ qxsdelement_p.h
+ qxsdfacet.cpp
+ qxsdfacet_p.h
+ qxsdidcache.cpp
+ qxsdidcache_p.h
+ qxsdidchelper.cpp
+ qxsdidchelper_p.h
+ qxsdidentityconstraint.cpp
+ qxsdidentityconstraint_p.h
+ qxsdinstancereader.cpp
+ qxsdinstancereader_p.h
+ qxsdmodelgroup.cpp
+ qxsdmodelgroup_p.h
+ qxsdnotation.cpp
+ qxsdnotation_p.h
+ qxsdparticlechecker.cpp
+ qxsdparticlechecker_p.h
+ qxsdparticle.cpp
+ qxsdparticle_p.h
+ qxsdreference.cpp
+ qxsdreference_p.h
+ qxsdschemachecker.cpp
+ qxsdschemachecker_helper.cpp
+ qxsdschemachecker_p.h
+ qxsdschemachecker_setup.cpp
+ qxsdschemacontext.cpp
+ qxsdschemacontext_p.h
+ qxsdschema.cpp
+ qxsdschemadebugger.cpp
+ qxsdschemadebugger_p.h
+ qxsdschemahelper.cpp
+ qxsdschemahelper_p.h
+ qxsdschemamerger.cpp
+ qxsdschemamerger_p.h
+ qxsdschemaparsercontext.cpp
+ qxsdschemaparsercontext_p.h
+ qxsdschemaparser.cpp
+ qxsdschemaparser_p.h
+ qxsdschemaparser_setup.cpp
+ qxsdschema_p.h
+ qxsdschemaresolver.cpp
+ qxsdschemaresolver_p.h
+ qxsdschematoken.cpp
+ qxsdschematoken_p.h
+ qxsdschematypesfactory.cpp
+ qxsdschematypesfactory_p.h
+ qxsdsimpletype.cpp
+ qxsdsimpletype_p.h
+ qxsdstatemachinebuilder.cpp
+ qxsdstatemachinebuilder_p.h
+ qxsdstatemachine.cpp
+ qxsdstatemachine_p.h
+ qxsdterm.cpp
+ qxsdterm_p.h
+ qxsdtypechecker.cpp
+ qxsdtypechecker_p.h
+ qxsduserschematype.cpp
+ qxsduserschematype_p.h
+ qxsdvalidatedxmlnodemodel.cpp
+ qxsdvalidatedxmlnodemodel_p.h
+ qxsdvalidatinginstancereader.cpp
+ qxsdvalidatinginstancereader_p.h
+ qxsdwildcard.cpp
+ qxsdwildcard_p.h
+ qxsdxpathexpression.cpp
+ qxsdxpathexpression_p.h
+ schema.pri
+ schemas/
+0 xml.xsd
+0 -LICENSE
+3 tokens.xml
+2 type/
+0 qabstractnodetest.cpp
+ qabstractnodetest_p.h
+ qanyitemtype.cpp
+ qanyitemtype_p.h
+ qanynodetype.cpp
+ qanynodetype_p.h
+ qanysimpletype.cpp
+ qanysimpletype_p.h
+ qanytype.cpp
+ qanytype_p.h
+ qatomiccasterlocator.cpp
+ qatomiccasterlocator_p.h
+ qatomiccasterlocators.cpp
+ qatomiccasterlocators_p.h
+ qatomiccomparatorlocator.cpp
+ qatomiccomparatorlocator_p.h
+ qatomiccomparatorlocators.cpp
+ qatomiccomparatorlocators_p.h
+ qatomicmathematicianlocator.cpp
+ qatomicmathematicianlocator_p.h
+ qatomicmathematicianlocators.cpp
+ qatomicmathematicianlocators_p.h
+ qatomictype.cpp
+ qatomictypedispatch_p.h
+ qatomictype_p.h
+ qbasictypesfactory.cpp
+ qbasictypesfactory_p.h
+ qbuiltinatomictype.cpp
+ qbuiltinatomictype_p.h
+ qbuiltinatomictypes.cpp
+ qbuiltinatomictypes_p.h
+ qbuiltinnodetype.cpp
+ qbuiltinnodetype_p.h
+ qbuiltintypes.cpp
+ qbuiltintypes_p.h
+ qcardinality.cpp
+ qcardinality_p.h
+ qcommonsequencetypes.cpp
+ qcommonsequencetypes_p.h
+ qebvtype.cpp
+ qebvtype_p.h
+ qemptysequencetype.cpp
+ qemptysequencetype_p.h
+ qgenericsequencetype.cpp
+ qgenericsequencetype_p.h
+ qitemtype.cpp
+ qitemtype_p.h
+ qlocalnametest.cpp
+ qlocalnametest_p.h
+ qmultiitemtype.cpp
+ qmultiitemtype_p.h
+ qnamedschemacomponent.cpp
+ qnamedschemacomponent_p.h
+ qnamespacenametest.cpp
+ qnamespacenametest_p.h
+ qnonetype.cpp
+ qnonetype_p.h
+ qnumerictype.cpp
+ qnumerictype_p.h
+ qprimitives_p.h
+ qqnametest.cpp
+ qqnametest_p.h
+ qschemacomponent.cpp
+ qschemacomponent_p.h
+ qschematype.cpp
+ qschematypefactory.cpp
+ qschematypefactory_p.h
+ qschematype_p.h
+ qsequencetype.cpp
+ qsequencetype_p.h
+ qtypechecker.cpp
+ qtypechecker_p.h
+ quntyped.cpp
+ quntyped_p.h
+ qxsltnodetest.cpp
+ qxsltnodetest_p.h
+ type.pri
+2 utils/
+0 qautoptr.cpp
+ qautoptr_p.h
+ qcommonnamespaces_p.h
+ qcppcastinghelper_p.h
+ qdebug_p.h
+ qdelegatingnamespaceresolver.cpp
+ qdelegatingnamespaceresolver_p.h
+ qgenericnamespaceresolver.cpp
+ qgenericnamespaceresolver_p.h
+ qnamepool.cpp
+ qnamepool_p.h
+ qnamespacebinding_p.h
+ qnamespaceresolver.cpp
+ qnamespaceresolver_p.h
+ qnodenamespaceresolver.cpp
+ qnodenamespaceresolver_p.h
+ qoutputvalidator.cpp
+ qoutputvalidator_p.h
+ qpatternistlocale.cpp
+ qpatternistlocale_p.h
+ qxpathhelper.cpp
+ qxpathhelper_p.h
+ utils.pri
+2 xmlpatterns.pro
+2 xml/sax/
+0 qxml.cpp
+ qxml.h
+ sax.pri
+2 xml/stream/
+0 qxmlstream.h
+ stream.pri
+2 xml/xml.pro
diff --git a/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp b/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp
new file mode 100644
index 0000000..ad5ae98
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp
@@ -0,0 +1,173 @@
+/****************************************************************************
+**
+** Copyright (C) 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 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 <QtTest/QTest>
+
+#include <QDirIterator>
+#include <QFile>
+#include <QString>
+#include <QStack>
+
+#include "../../../../../shared/filesystem.h"
+
+class bench_QDir_tree
+ : public QObject
+{
+ Q_OBJECT
+
+public:
+ bench_QDir_tree()
+ : prefix("./test-tree/")
+ {
+ }
+
+private:
+ QByteArray prefix;
+
+private slots:
+ void initTestCase()
+ {
+ QFile list(":/4.6.0-list.txt");
+ QVERIFY(list.open(QIODevice::ReadOnly | QIODevice::Text));
+
+ QVERIFY(fs.createDirectory(prefix));
+
+ QStack<QByteArray> stack;
+ QByteArray line;
+ Q_FOREVER {
+ char ch;
+ if (!list.getChar(&ch))
+ break;
+ if (ch != ' ') {
+ line.append(ch);
+ continue;
+ }
+
+ int pop = 1;
+ if (!line.isEmpty())
+ pop = line.toInt();
+
+ while (pop) {
+ stack.pop();
+ --pop;
+ }
+
+ line = list.readLine();
+ line.chop(1);
+ stack.push(line);
+
+ line = prefix;
+ Q_FOREACH(const QByteArray &pathElement, stack)
+ line += pathElement;
+
+ if (line.endsWith('/'))
+ QVERIFY(fs.createDirectory(line));
+ else
+ QVERIFY(fs.createFile(line));
+
+ line.clear();
+ }
+ }
+
+ void fileSearch_data() const
+ {
+ QTest::addColumn<QStringList>("nameFilters");
+ QTest::addColumn<int>("filter");
+ QTest::addColumn<int>("entryCount");
+
+ QTest::newRow("*.cpp") << QStringList("*.cpp")
+ << int(QDir::Files)
+ << 3813;
+
+ QTest::newRow("executables") << QStringList("*")
+ << int(QDir::Executable | QDir::Files | QDir::AllDirs | QDir::NoDotAndDotDot)
+ << 543;
+ }
+
+ void fileSearch() const
+ {
+ QFETCH(QStringList, nameFilters);
+ QFETCH(int, filter);
+ QFETCH(int, entryCount);
+
+ int count = 0;
+ QBENCHMARK {
+ // Recursive directory iteration
+ QDirIterator iterator(prefix, nameFilters, QDir::Filter(filter),
+ QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+
+ count = 0;
+ while (iterator.hasNext()) {
+ iterator.next();
+ ++count;
+ }
+
+ QCOMPARE(count, entryCount);
+ }
+
+ QCOMPARE(count, entryCount);
+ }
+
+ void traverseDirectory() const
+ {
+ int count = 0;
+ QBENCHMARK {
+ QDirIterator iterator(prefix,
+ QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System,
+ QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+
+ while (iterator.hasNext()) {
+ iterator.next();
+ ++count;
+ }
+
+ QCOMPARE(count, 11963);
+ }
+
+ QCOMPARE(count, 11963);
+ }
+
+private:
+ FileSystem fs;
+};
+
+QTEST_MAIN(bench_QDir_tree)
+#include "bench_qdir_tree.moc"
diff --git a/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.qrc b/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.qrc
new file mode 100644
index 0000000..d57cb6c
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>4.6.0-list.txt</file>
+</qresource>
+</RCC>
diff --git a/tests/benchmarks/corelib/io/qdir/tree/tree.pro b/tests/benchmarks/corelib/io/qdir/tree/tree.pro
new file mode 100644
index 0000000..773f0f7
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qdir/tree/tree.pro
@@ -0,0 +1,11 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = bench_qdir_tree
+DEPENDPATH += .
+INCLUDEPATH += .
+
+# Input
+SOURCES += bench_qdir_tree.cpp
+RESOURCES += bench_qdir_tree.qrc
+
+QT -= gui
diff --git a/tests/benchmarks/corelib/io/qfileinfo/qfileinfo.pro b/tests/benchmarks/corelib/io/qfileinfo/qfileinfo.pro
index 295cb50..eca619f 100644
--- a/tests/benchmarks/corelib/io/qfileinfo/qfileinfo.pro
+++ b/tests/benchmarks/corelib/io/qfileinfo/qfileinfo.pro
@@ -1,6 +1,6 @@
load(qttest_p4)
TEMPLATE = app
-TARGET = qfileinfo
+TARGET = tst_qfileinfo
DEPENDPATH += .
INCLUDEPATH += .
diff --git a/tests/benchmarks/corelib/kernel/kernel.pro b/tests/benchmarks/corelib/kernel/kernel.pro
index 91cf3c5..da3f0d6 100644
--- a/tests/benchmarks/corelib/kernel/kernel.pro
+++ b/tests/benchmarks/corelib/kernel/kernel.pro
@@ -2,5 +2,6 @@ TEMPLATE = subdirs
SUBDIRS = \
events \
qmetaobject \
+ qmetatype \
qobject \
qvariant
diff --git a/tests/benchmarks/corelib/kernel/qmetatype/qmetatype.pro b/tests/benchmarks/corelib/kernel/qmetatype/qmetatype.pro
new file mode 100644
index 0000000..80f9a2a
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/qmetatype/qmetatype.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+QT = core
+TEMPLATE = app
+TARGET = tst_qmetatype
+
+SOURCES += tst_qmetatype.cpp
+
diff --git a/tests/benchmarks/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/benchmarks/corelib/kernel/qmetatype/tst_qmetatype.cpp
new file mode 100644
index 0000000..36399af
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -0,0 +1,233 @@
+/****************************************************************************
+**
+** Copyright (C) 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/qmetatype.h>
+
+//TESTED_FILES=
+
+class tst_QMetaType : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QMetaType();
+ virtual ~tst_QMetaType();
+
+private slots:
+ void typeBuiltin_data();
+ void typeBuiltin();
+ void typeBuiltinNotNormalized_data();
+ void typeBuiltinNotNormalized();
+ void typeCustom();
+ void typeCustomNotNormalized();
+ void typeNotRegistered();
+ void typeNotRegisteredNotNormalized();
+
+ void typeNameBuiltin_data();
+ void typeNameBuiltin();
+ void typeNameCustom();
+ void typeNameNotRegistered();
+
+ void isRegisteredBuiltin_data();
+ void isRegisteredBuiltin();
+ void isRegisteredCustom();
+ void isRegisteredNotRegistered();
+};
+
+tst_QMetaType::tst_QMetaType()
+{
+}
+
+tst_QMetaType::~tst_QMetaType()
+{
+}
+
+void tst_QMetaType::typeBuiltin_data()
+{
+ QTest::addColumn<QByteArray>("typeName");
+ for (int i = 0; i < QMetaType::User; ++i) {
+ const char *name = QMetaType::typeName(i);
+ if (name)
+ QTest::newRow(name) << QByteArray(name);
+ }
+}
+
+void tst_QMetaType::typeBuiltin()
+{
+ QFETCH(QByteArray, typeName);
+ const char *nm = typeName.constData();
+ QBENCHMARK {
+ for (int i = 0; i < 100000; ++i)
+ QMetaType::type(nm);
+ }
+}
+
+void tst_QMetaType::typeBuiltinNotNormalized_data()
+{
+ QTest::addColumn<QByteArray>("typeName");
+ for (int i = 0; i < QMetaType::User; ++i) {
+ const char *name = QMetaType::typeName(i);
+ if (name)
+ QTest::newRow(name) << QByteArray(name).append(" ");
+ }
+}
+
+void tst_QMetaType::typeBuiltinNotNormalized()
+{
+ QFETCH(QByteArray, typeName);
+ const char *nm = typeName.constData();
+ QBENCHMARK {
+ for (int i = 0; i < 10000; ++i)
+ QMetaType::type(nm);
+ }
+}
+
+struct Foo { int i; };
+
+void tst_QMetaType::typeCustom()
+{
+ qRegisterMetaType<Foo>("Foo");
+ QBENCHMARK {
+ for (int i = 0; i < 10000; ++i)
+ QMetaType::type("Foo");
+ }
+}
+
+void tst_QMetaType::typeCustomNotNormalized()
+{
+ qRegisterMetaType<Foo>("Foo");
+ QBENCHMARK {
+ for (int i = 0; i < 10000; ++i)
+ QMetaType::type("Foo ");
+ }
+}
+
+void tst_QMetaType::typeNotRegistered()
+{
+ Q_ASSERT(QMetaType::type("Bar") == 0);
+ QBENCHMARK {
+ for (int i = 0; i < 10000; ++i)
+ QMetaType::type("Bar");
+ }
+}
+
+void tst_QMetaType::typeNotRegisteredNotNormalized()
+{
+ Q_ASSERT(QMetaType::type("Bar") == 0);
+ QBENCHMARK {
+ for (int i = 0; i < 10000; ++i)
+ QMetaType::type("Bar ");
+ }
+}
+
+void tst_QMetaType::typeNameBuiltin_data()
+{
+ QTest::addColumn<int>("type");
+ for (int i = 0; i < QMetaType::User; ++i) {
+ const char *name = QMetaType::typeName(i);
+ if (name)
+ QTest::newRow(name) << i;
+ }
+}
+
+void tst_QMetaType::typeNameBuiltin()
+{
+ QFETCH(int, type);
+ QBENCHMARK {
+ for (int i = 0; i < 500000; ++i)
+ QMetaType::typeName(type);
+ }
+}
+
+void tst_QMetaType::typeNameCustom()
+{
+ int type = qRegisterMetaType<Foo>("Foo");
+ QBENCHMARK {
+ for (int i = 0; i < 100000; ++i)
+ QMetaType::typeName(type);
+ }
+}
+
+void tst_QMetaType::typeNameNotRegistered()
+{
+ // We don't care much about this case, but test it anyway.
+ Q_ASSERT(QMetaType::typeName(-1) == 0);
+ QBENCHMARK {
+ for (int i = 0; i < 500000; ++i)
+ QMetaType::typeName(-1);
+ }
+}
+
+void tst_QMetaType::isRegisteredBuiltin_data()
+{
+ typeNameBuiltin_data();
+}
+
+void tst_QMetaType::isRegisteredBuiltin()
+{
+ QFETCH(int, type);
+ QBENCHMARK {
+ for (int i = 0; i < 500000; ++i)
+ QMetaType::isRegistered(type);
+ }
+}
+
+void tst_QMetaType::isRegisteredCustom()
+{
+ int type = qRegisterMetaType<Foo>("Foo");
+ QBENCHMARK {
+ for (int i = 0; i < 100000; ++i)
+ QMetaType::isRegistered(type);
+ }
+}
+
+void tst_QMetaType::isRegisteredNotRegistered()
+{
+ Q_ASSERT(QMetaType::typeName(-1) == 0);
+ QBENCHMARK {
+ for (int i = 0; i < 100000; ++i)
+ QMetaType::isRegistered(-1);
+ }
+}
+
+QTEST_MAIN(tst_QMetaType)
+#include "tst_qmetatype.moc"
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/main.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/main.cpp
index b904f40..2c1274c 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/main.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/main.cpp
@@ -751,7 +751,7 @@ int main(int argc, char *argv[])
aargv[aargc++] = argv[i];
}
- QApplication app(argc, argv);
+ QApplication app(aargc, aargv);
int returnValue = 0;
if (settings.options() & Settings::ManualTest) {
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp
index 1028f42..6c4ca08 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp
@@ -42,7 +42,14 @@
#include "view.h"
#include <QtGui>
+
+#ifdef Q_WS_WIN
+#define CALLGRIND_START_INSTRUMENTATION {}
+#define CALLGRIND_STOP_INSTRUMENTATION {}
+#else
#include "valgrind/callgrind.h"
+#endif
+
#ifndef QT_NO_OPENGL
#include <QtOpenGL>
#endif
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp
index 527713f..63b0da9 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp
@@ -39,7 +39,13 @@
**
****************************************************************************/
#include <QtGui>
+
+#ifdef Q_WS_WIN
+#define CALLGRIND_START_INSTRUMENTATION {}
+#define CALLGRIND_STOP_INSTRUMENTATION {}
+#else
#include "valgrind/callgrind.h"
+#endif
#ifdef Q_WS_X11
extern void qt_x11_wait_for_window_manager(QWidget *);
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp
index 7419206..3f30393 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp
@@ -39,7 +39,13 @@
**
****************************************************************************/
#include <QtGui>
+
+#ifdef Q_WS_WIN
+#define CALLGRIND_START_INSTRUMENTATION {}
+#define CALLGRIND_STOP_INSTRUMENTATION {}
+#else
#include "valgrind/callgrind.h"
+#endif
class ItemMover : public QObject
{
diff --git a/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp b/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
index f21bd44..8c30be4 100644
--- a/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
@@ -42,33 +42,35 @@
#include <qtest.h>
#include <QtGui>
-class tst_QWidget : public QObject
+static void processEvents()
{
- Q_OBJECT
-
-
-private slots:
- void update_data();
- void updateOpaque_data();
- void updateOpaque();
- void updateTransparent_data();
- void updateTransparent();
- void updatePartial_data();
- void updatePartial();
- void updateComplex_data();
- void updateComplex();
-
- void complexToplevelResize();
-};
+ QApplication::flush();
+ QApplication::processEvents();
+ QApplication::processEvents();
+}
class UpdateWidget : public QWidget
{
public:
- UpdateWidget(int rows, int columns) : QWidget(0)
+ UpdateWidget(int rows, int columns)
+ : QWidget(0), rowCount(0), columnCount(0), opaqueChildren(false)
{
+ fill(rows, columns);
+ }
+
+ UpdateWidget(QWidget *parent = 0)
+ : QWidget(parent), rowCount(0), columnCount(0), opaqueChildren(false) {}
+
+ void fill(int rows, int columns)
+ {
+ if (rows == rowCount && columns == columnCount)
+ return;
+ delete layout();
QGridLayout *layout = new QGridLayout;
- for (int row = 0; row < rows; ++row) {
- for (int column = 0; column < columns; ++column) {
+ rowCount = rows;
+ columnCount = columns;
+ for (int row = 0; row < rowCount; ++row) {
+ for (int column = 0; column < columnCount; ++column) {
UpdateWidget *widget = new UpdateWidget;
widget->setFixedSize(20, 20);
layout->addWidget(widget, row, column);
@@ -76,9 +78,20 @@ public:
}
}
setLayout(layout);
+ adjustSize();
+ QTest::qWait(250);
+ processEvents();
}
- UpdateWidget(QWidget *parent = 0) : QWidget(parent) {}
+ void setOpaqueChildren(bool enable)
+ {
+ if (opaqueChildren != enable) {
+ foreach (QWidget *w, children)
+ w->setAttribute(Qt::WA_OpaquePaintEvent, enable);
+ opaqueChildren = enable;
+ processEvents();
+ }
+ }
void paintEvent(QPaintEvent *)
{
@@ -93,75 +106,86 @@ public:
QRegion updateRegion;
QList<UpdateWidget*> children;
+ int rowCount;
+ int columnCount;
+ bool opaqueChildren;
};
-void tst_QWidget::update_data()
+class tst_QWidget : public QObject
{
- QTest::addColumn<int>("rows");
- QTest::addColumn<int>("columns");
- QTest::addColumn<int>("numUpdates");
-
- QTest::newRow("10x10x1") << 10 << 10 << 1;
- QTest::newRow("10x10x10") << 10 << 10 << 10;
- QTest::newRow("25x25x1") << 25 << 25 << 1;
- QTest::newRow("25x25x10") << 25 << 25 << 10;
- QTest::newRow("25x25x100") << 25 << 25 << 100;
-}
+ Q_OBJECT
-void tst_QWidget::updateOpaque_data()
-{
- update_data();
-}
+public slots:
+ void initTestCase();
+ void init();
-void tst_QWidget::updateOpaque()
-{
- QFETCH(int, rows);
- QFETCH(int, columns);
- QFETCH(int, numUpdates);
+private slots:
+ void update_data();
+ void update();
+ void updatePartial_data();
+ void updatePartial();
+ void updateComplex_data();
+ void updateComplex();
- UpdateWidget widget(rows, columns);
- foreach (QWidget *w, widget.children) {
- w->setAttribute(Qt::WA_OpaquePaintEvent);
- }
+private:
+ UpdateWidget widget;
+};
+void tst_QWidget::initTestCase()
+{
widget.show();
- QApplication::processEvents();
+ QTest::qWaitForWindowShown(&widget);
+ QTest::qWait(300);
+ processEvents();
+}
- int i = 0;
- const int n = widget.children.size();
- QBENCHMARK {
- for (int j = 0; j < numUpdates; ++j) {
- widget.children[i]->update();
- QApplication::processEvents();
- i = (i + 1) % n;
- }
- }
+void tst_QWidget::init()
+{
+ QVERIFY(widget.isVisible());
+ for (int i = 0; i < 3; ++i)
+ processEvents();
}
-void tst_QWidget::updateTransparent_data()
+void tst_QWidget::update_data()
{
- update_data();
+ QTest::addColumn<int>("rows");
+ QTest::addColumn<int>("columns");
+ QTest::addColumn<int>("numUpdates");
+ QTest::addColumn<bool>("opaque");
+
+ QTest::newRow("10x10x1 transparent") << 10 << 10 << 1 << false;
+ QTest::newRow("10x10x10 transparent") << 10 << 10 << 10 << false;
+ QTest::newRow("10x10x100 transparent") << 10 << 10 << 100 << false;
+ QTest::newRow("10x10x1 opaque") << 10 << 10 << 1 << true;
+ QTest::newRow("10x10x10 opaque") << 10 << 10 << 10 << true;
+ QTest::newRow("10x10x100 opaque") << 10 << 10 << 100 << true;
+ QTest::newRow("25x25x1 transparent ") << 25 << 25 << 1 << false;
+ QTest::newRow("25x25x10 transparent") << 25 << 25 << 10 << false;
+ QTest::newRow("25x25x100 transparent") << 25 << 25 << 100 << false;
+ QTest::newRow("25x25x1 opaque") << 25 << 25 << 1 << true;
+ QTest::newRow("25x25x10 opaque") << 25 << 25 << 10 << true;
+ QTest::newRow("25x25x100 opaque") << 25 << 25 << 100 << true;
}
-void tst_QWidget::updateTransparent()
+void tst_QWidget::update()
{
QFETCH(int, rows);
QFETCH(int, columns);
QFETCH(int, numUpdates);
+ QFETCH(bool, opaque);
- UpdateWidget widget(rows, columns);
- widget.show();
- QApplication::processEvents();
+ widget.fill(rows, columns);
+ widget.setOpaqueChildren(opaque);
- int i = 0;
- const int n = widget.children.size();
QBENCHMARK {
- for (int j = 0; j < numUpdates; ++j) {
- widget.children[i]->update();
+ for (int i = 0; i < widget.children.size(); ++i) {
+ for (int j = 0; j < numUpdates; ++j)
+ widget.children.at(i)->update();
QApplication::processEvents();
- i = (i + 1) % n;
}
}
+
+ QApplication::flush();
}
void tst_QWidget::updatePartial_data()
@@ -174,24 +198,23 @@ void tst_QWidget::updatePartial()
QFETCH(int, rows);
QFETCH(int, columns);
QFETCH(int, numUpdates);
+ QFETCH(bool, opaque);
- UpdateWidget widget(rows, columns);
- widget.show();
- QApplication::processEvents();
+ widget.fill(rows, columns);
+ widget.setOpaqueChildren(opaque);
- int i = 0;
- const int n = widget.children.size();
QBENCHMARK {
- for (int j = 0; j < numUpdates; ++j) {
+ for (int i = 0; i < widget.children.size(); ++i) {
QWidget *w = widget.children[i];
const int x = w->width() / 2;
const int y = w->height() / 2;
- w->update(0, 0, x, y);
- w->update(x, 0, x, y);
- w->update(0, y, x, y);
- w->update(x, y, x, y);
+ for (int j = 0; j < numUpdates; ++j) {
+ w->update(0, 0, x, y);
+ w->update(x, 0, x, y);
+ w->update(0, y, x, y);
+ w->update(x, y, x, y);
+ }
QApplication::processEvents();
- i = (i + 1) % n;
}
}
}
@@ -206,127 +229,27 @@ void tst_QWidget::updateComplex()
QFETCH(int, rows);
QFETCH(int, columns);
QFETCH(int, numUpdates);
+ QFETCH(bool, opaque);
- UpdateWidget widget(rows, columns);
- widget.show();
- QApplication::processEvents();
+ widget.fill(rows, columns);
+ widget.setOpaqueChildren(opaque);
- int i = 0;
- const int n = widget.children.size();
QBENCHMARK {
- for (int j = 0; j < numUpdates; ++j) {
+ for (int i = 0; i < widget.children.size(); ++i) {
QWidget *w = widget.children[i];
const int x = w->width() / 2;
const int y = w->height() / 2;
- w->update(QRegion(0, 0, x, y, QRegion::Ellipse));
- w->update(QRegion(x, y, x, y, QRegion::Ellipse));
+ QRegion r1(0, 0, x, y, QRegion::Ellipse);
+ QRegion r2(x, y, x, y, QRegion::Ellipse);
+ for (int j = 0; j < numUpdates; ++j) {
+ w->update(r1);
+ w->update(r2);
+ }
QApplication::processEvents();
- i = (i + 1) % n;
}
}
}
-class ResizeWidget : public QWidget
-{
-public:
- ResizeWidget();
-};
-
-ResizeWidget::ResizeWidget() : QWidget(0)
-{
- QBoxLayout *topLayout = new QVBoxLayout;
-
- QMenuBar *menubar = new QMenuBar;
- QMenu* popup = menubar->addMenu("&File");
- popup->addAction("&Quit", qApp, SLOT(quit()));
- topLayout->setMenuBar(menubar);
-
- QBoxLayout *buttons = new QHBoxLayout;
- buttons->setMargin(5);
- buttons->addStretch(10);
- for (int i = 1; i <= 4; i++ ) {
- QPushButton* button = new QPushButton;
- button->setText(QString("Button %1").arg(i));
- buttons->addWidget(button);
- }
- topLayout->addLayout(buttons);
-
- buttons = new QHBoxLayout;
- buttons->addStretch(10);
- for (int i = 11; i <= 16; i++) {
- QPushButton* button = new QPushButton;
- button->setText(QString("Button %1").arg(i));
- buttons->addWidget(button);
- }
- topLayout->addLayout(buttons);
-
- QBoxLayout *buttons2 = new QHBoxLayout;
- buttons2->addStretch(10);
- topLayout->addLayout(buttons2);
-
- QPushButton *button = new QPushButton;
- button->setText("Button five");
- buttons2->addWidget(button);
-
- button = new QPushButton;
- button->setText("Button 6");
- buttons2->addWidget(button);
-
- QTextEdit *bigWidget = new QTextEdit;
- bigWidget->setText("This widget will get all the remaining space");
- bigWidget->setFrameStyle(QFrame::Panel | QFrame::Plain);
- topLayout->addWidget(bigWidget);
-
- const int numRows = 6;
- const int labelCol = 0;
- const int linedCol = 1;
- const int multiCol = 2;
-
- QGridLayout *grid = new QGridLayout;
- for (int row = 0; row < numRows; row++) {
- QLineEdit *lineEdit = new QLineEdit;
- grid->addWidget(lineEdit, row, linedCol);
- QLabel *label = new QLabel(QString("Line &%1").arg(row + 1));
- grid->addWidget(label, row, labelCol);
- }
- topLayout->addLayout(grid);
-
- QTextEdit *multiLineEdit = new QTextEdit;
- grid->addWidget(multiLineEdit, 0, labelCol + 1, multiCol, multiCol);
-
- grid->setColumnStretch(linedCol, 10);
- grid->setColumnStretch(multiCol, 20);
-
- QLabel* statusBar = new QLabel;
- statusBar->setText("Let's pretend this is a status bar");
- statusBar->setFrameStyle(QFrame::Panel | QFrame::Sunken);
- statusBar->setFixedHeight(statusBar->sizeHint().height());
- statusBar->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
- topLayout->addWidget(statusBar);
-
- topLayout->activate();
- setLayout(topLayout);
-}
-
-void tst_QWidget::complexToplevelResize()
-{
- ResizeWidget w;
- w.show();
-
- QApplication::processEvents();
-
- const int minSize = 100;
- const int maxSize = 800;
- int size = minSize;
-
- QBENCHMARK {
- w.resize(size, size);
- size = qMax(minSize, (size + 10) % maxSize);
- QApplication::processEvents();
- QApplication::processEvents();
- }
-}
-
QTEST_MAIN(tst_QWidget)
#include "tst_qwidget.moc"
diff --git a/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp b/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
index 226b661..d051b12 100644
--- a/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
+++ b/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
@@ -82,6 +82,7 @@ void tst_qstylesheetstyle::empty()
{
QWidget *w = buildSimpleWidgets();
w->setStyleSheet("/* */");
+ QApplication::processEvents();
int i = 0;
QBENCHMARK {
w->setStyleSheet("/*" + QString::number(i) + "*/");
@@ -94,6 +95,7 @@ void tst_qstylesheetstyle::empty_events()
{
QWidget *w = buildSimpleWidgets();
w->setStyleSheet("/* */");
+ QApplication::processEvents();
int i = 0;
QBENCHMARK {
w->setStyleSheet("/*" + QString::number(i) + "*/");
@@ -112,6 +114,7 @@ void tst_qstylesheetstyle::simple()
{
QWidget *w = buildSimpleWidgets();
w->setStyleSheet("/* */");
+ QApplication::processEvents();
int i = 0;
QBENCHMARK {
w->setStyleSheet(QString(simple_css) + "/*" + QString::number(i) + "*/");
@@ -124,6 +127,7 @@ void tst_qstylesheetstyle::simple_events()
{
QWidget *w = buildSimpleWidgets();
w->setStyleSheet("/* */");
+ QApplication::processEvents();
int i = 0;
QBENCHMARK {
w->setStyleSheet(QString(simple_css) + "/*" + QString::number(i) + "*/");
@@ -175,8 +179,13 @@ void tst_qstylesheetstyle::grid()
w->setStyleSheet("/* */");
if(show) {
w->show();
+ QTest::qWaitForWindowShown(w);
+ QApplication::flush();
+ QApplication::processEvents();
QTest::qWait(30);
+ QApplication::processEvents();
}
+ QApplication::processEvents();
int i = 0;
QBENCHMARK {
w->setStyleSheet(stylesheet + "/*" + QString::number(i) + "*/");
diff --git a/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro b/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro
index 99d1935..89f5d31 100644
--- a/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro
+++ b/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro
@@ -1,6 +1,6 @@
load(qttest_p4)
TEMPLATE = app
-TARGET = qfile_vs_qnetworkaccessmanager
+TARGET = tst_qfile_vs_qnetworkaccessmanager
DEPENDPATH += .
INCLUDEPATH += .
diff --git a/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp b/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
index 3bfc21c..d7bb04b 100644
--- a/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
+++ b/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
@@ -69,6 +69,8 @@ private slots:
void property();
void setProperty();
void propertyFlags();
+ void readMetaProperty();
+ void writeMetaProperty();
};
tst_QScriptValue::tst_QScriptValue()
@@ -201,5 +203,28 @@ void tst_QScriptValue::propertyFlags()
}
}
+void tst_QScriptValue::readMetaProperty()
+{
+ QScriptEngine engine;
+ QScriptValue object = engine.newQObject(QCoreApplication::instance());
+ QScriptString propertyName = engine.toStringHandle("objectName");
+ QBENCHMARK {
+ for (int i = 0; i < 10000; ++i)
+ object.property(propertyName);
+ }
+}
+
+void tst_QScriptValue::writeMetaProperty()
+{
+ QScriptEngine engine;
+ QScriptValue object = engine.newQObject(QCoreApplication::instance());
+ QScriptString propertyName = engine.toStringHandle("objectName");
+ QScriptValue value(&engine, "foo");
+ QBENCHMARK {
+ for (int i = 0; i < 10000; ++i)
+ object.setProperty(propertyName, value);
+ }
+}
+
QTEST_MAIN(tst_QScriptValue)
#include "tst_qscriptvalue.moc"
diff --git a/tools/assistant/lib/qhelp_global.cpp b/tools/assistant/lib/qhelp_global.cpp
index d8a94d3..c2c916b 100644
--- a/tools/assistant/lib/qhelp_global.cpp
+++ b/tools/assistant/lib/qhelp_global.cpp
@@ -56,7 +56,7 @@ QString QHelpGlobal::uniquifyConnectionName(const QString &name, void *pointer)
counter = 0;
return QString::fromLatin1("%1-%2-%3").
- arg(name).arg(long(pointer)).arg(counter);
+ arg(name).arg(quintptr(pointer)).arg(counter);
}
QString QHelpGlobal::documentTitle(const QString &content)
diff --git a/tools/assistant/lib/qhelpdbreader.cpp b/tools/assistant/lib/qhelpdbreader.cpp
index 6dd949a..5c0f595 100644
--- a/tools/assistant/lib/qhelpdbreader.cpp
+++ b/tools/assistant/lib/qhelpdbreader.cpp
@@ -205,7 +205,7 @@ QByteArray QHelpDBReader::fileData(const QString &virtualFolder,
"NamespaceTable d WHERE a.Id=b.FileId AND (b.Name=? OR b.Name=?) AND b.FolderId=c.Id "
"AND c.Name=? AND c.NamespaceId=d.Id AND d.Name=?"));
m_query->bindValue(0, filePath);
- m_query->bindValue(1, QLatin1String("./") + filePath);
+ m_query->bindValue(1, QString(QLatin1String("./") + filePath));
m_query->bindValue(2, virtualFolder);
m_query->bindValue(3, m_namespace);
m_query->exec();
diff --git a/tools/assistant/lib/qhelpsearchresultwidget.cpp b/tools/assistant/lib/qhelpsearchresultwidget.cpp
index 8e476d5..2f5489b 100644
--- a/tools/assistant/lib/qhelpsearchresultwidget.cpp
+++ b/tools/assistant/lib/qhelpsearchresultwidget.cpp
@@ -304,7 +304,7 @@ private:
last = resultLastToShow > count ? count : resultLastToShow;
}
}
- hitsLabel->setText(QHelpSearchResultWidget::tr("%1 - %2 of %3 Hits").arg(first).arg(last).arg(count));
+ hitsLabel->setText(QHelpSearchResultWidget::tr("%1 - %2 of %n Hits", 0, count).arg(first).arg(last));
}
private:
diff --git a/tools/assistant/tools/assistant/bookmarkmanager.cpp b/tools/assistant/tools/assistant/bookmarkmanager.cpp
index 70f562e..b9a1b0e 100644
--- a/tools/assistant/tools/assistant/bookmarkmanager.cpp
+++ b/tools/assistant/tools/assistant/bookmarkmanager.cpp
@@ -148,7 +148,7 @@ void BookmarkManager::takeBookmarksMenu(QMenu* menu)
void BookmarkManager::addBookmark(const QString &title, const QString &url)
{
TRACE_OBJ
- showBookmarkDialog(title.isEmpty() ? tr("Untiled") : title,
+ showBookmarkDialog(title.isEmpty() ? tr("Untitled") : title,
url.isEmpty() ? QLatin1String("about:blank") : url);
}
diff --git a/tools/assistant/tools/assistant/cmdlineparser.cpp b/tools/assistant/tools/assistant/cmdlineparser.cpp
index bbc0c37..b6c0beb 100644
--- a/tools/assistant/tools/assistant/cmdlineparser.cpp
+++ b/tools/assistant/tools/assistant/cmdlineparser.cpp
@@ -167,10 +167,10 @@ void CmdLineParser::handleCollectionFileOption()
const QString &fileName = nextArg();
m_collectionFile = getFileName(fileName);
if (m_collectionFile.isEmpty())
- m_error = tr("The collection file '%1' does not exist!").
+ m_error = tr("The collection file '%1' does not exist.").
arg(fileName);
} else {
- m_error = tr("Missing collection file!");
+ m_error = tr("Missing collection file.");
}
}
@@ -183,9 +183,9 @@ void CmdLineParser::handleShowUrlOption()
if (url.isValid()) {
m_url = url;
} else
- m_error = tr("Invalid URL '%1'!").arg(urlString);
+ m_error = tr("Invalid URL '%1'.").arg(urlString);
} else {
- m_error = tr("Missing URL!");
+ m_error = tr("Missing URL.");
}
}
@@ -223,7 +223,7 @@ void CmdLineParser::handleShowOrHideOrActivateOption(ShowState state)
else
m_error = tr("Unknown widget: %1").arg(widget);
} else {
- m_error = tr("Missing widget!");
+ m_error = tr("Missing widget.");
}
}
@@ -246,11 +246,11 @@ void CmdLineParser::handleRegisterOrUnregisterOption(RegisterState state)
const QString &fileName = nextArg();
m_helpFile = getFileName(fileName);
if (m_helpFile.isEmpty())
- m_error = tr("The Qt help file '%1' does not exist!").arg(fileName);
+ m_error = tr("The Qt help file '%1' does not exist.").arg(fileName);
else
m_register = state;
} else {
- m_error = tr("Missing help file!");
+ m_error = tr("Missing help file.");
}
}
@@ -260,7 +260,7 @@ void CmdLineParser::handleSetCurrentFilterOption()
if (hasMoreArgs())
m_currentFilter = nextArg();
else
- m_error = tr("Missing filter argument!");
+ m_error = tr("Missing filter argument.");
}
QString CmdLineParser::getFileName(const QString &fileName)
diff --git a/tools/assistant/tools/assistant/helpviewer.h b/tools/assistant/tools/assistant/helpviewer.h
index 0bfe904..9e8f5f4 100644
--- a/tools/assistant/tools/assistant/helpviewer.h
+++ b/tools/assistant/tools/assistant/helpviewer.h
@@ -53,7 +53,7 @@ class AbstractHelpViewer
{
public:
AbstractHelpViewer();
- ~AbstractHelpViewer();
+ virtual ~AbstractHelpViewer();
virtual QFont viewerFont() const = 0;
virtual void setViewerFont(const QFont &font) = 0;
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 0ff7301..6b7740e 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -249,6 +249,7 @@ Configure::Configure( int& argc, char** argv )
dictionary[ "MULTIMEDIA" ] = "yes";
dictionary[ "AUDIO_BACKEND" ] = "auto";
dictionary[ "MEDIASERVICE"] = "auto";
+ dictionary[ "WMSDK" ] = "auto";
dictionary[ "DIRECTSHOW" ] = "no";
dictionary[ "WEBKIT" ] = "auto";
dictionary[ "DECLARATIVE" ] = "auto";
@@ -1592,6 +1593,7 @@ bool Configure::displayHelp()
"[-qtnamespace <namespace>] [-qtlibinfix <infix>] [-no-phonon]\n"
"[-phonon] [-no-phonon-backend] [-phonon-backend]\n"
"[-no-multimedia] [-multimedia] [-no-audio-backend] [-audio-backend]\n"
+ "[-no-mediaservice] [-mediaservice]\n"
"[-no-script] [-script] [-no-scripttools] [-scripttools]\n"
"[-no-webkit] [-webkit] [-graphicssystem raster|opengl|openvg]\n\n", 0, 7);
@@ -2077,6 +2079,8 @@ bool Configure::checkAvailability(const QString &part)
if (!findFile("msdmo.lib")) cout << "msdmo.lib not found" << endl;
if (!findFile("d3d9.h")) cout << "d3d9.h not found" << endl;
}
+ } else if (part == "WMSDK") {
+ available = findFile("wmsdk.h");
} else if (part == "MULTIMEDIA" || part == "SCRIPT" || part == "SCRIPTTOOLS") {
available = true;
} else if (part == "WEBKIT") {
@@ -2221,6 +2225,8 @@ void Configure::autoDetection()
dictionary["AUDIO_BACKEND"] = checkAvailability("AUDIO_BACKEND") ? "yes" : "no";
if (dictionary["MEDIASERVICE"] == "auto")
dictionary["MEDIASERVICE"] = checkAvailability("MEDIASERVICE") ? "yes" : "no";
+ if (dictionary["WMSDK"] == "auto")
+ dictionary["WMSDK"] = checkAvailability("WMSDK") ? "yes" : "no";
// Qt/WinCE remote test application
if (dictionary["CETEST"] == "auto")
@@ -2611,8 +2617,11 @@ void Configure::generateOutputVars()
qtConfig += "multimedia";
if (dictionary["AUDIO_BACKEND"] == "yes")
qtConfig += "audio-backend";
- if (dictionary["MEDIASERVICE"] == "yes")
+ if (dictionary["MEDIASERVICE"] == "yes") {
qtConfig += "mediaservice";
+ if (dictionary["WMSDK"] == "yes")
+ qtConfig += "wmsdk";
+ }
}
if (dictionary["WEBKIT"] == "yes")
@@ -3723,7 +3732,7 @@ void Configure::generateMakefiles()
QTextStream txt(&file);
txt << "all:\n";
txt << "\t" << args.join(" ") << "\n";
- txt << "\t" << dictionary[ "MAKE" ] << " -f " << it->target << "\n";
+ txt << "\t\"$(MAKE)\" -$(MAKEFLAGS) -f " << it->target << "\n";
txt << "first: all\n";
txt << "qmake:\n";
txt << "\t" << args.join(" ") << "\n";
diff --git a/tools/qdoc3/atom.cpp b/tools/qdoc3/atom.cpp
index 6920e9d..88f44ea 100644
--- a/tools/qdoc3/atom.cpp
+++ b/tools/qdoc3/atom.cpp
@@ -133,7 +133,7 @@ QString Atom::UPPERROMAN_ ("upperroman");
\value ParaLeft
\value ParaRight
\value Qml
- \value QDeclarativeText
+ \value QmlText
\value QuotationLeft
\value QuotationRight
\value RawString
@@ -210,7 +210,7 @@ static const struct {
{ "ParaRight", Atom::ParaRight },
#ifdef QDOC_QML
{ "Qml", Atom::Qml},
- { "QDeclarativeText", Atom::QDeclarativeText },
+ { "QmlText", Atom::QmlText },
#endif
{ "QuotationLeft", Atom::QuotationLeft },
{ "QuotationRight", Atom::QuotationRight },
diff --git a/tools/qdoc3/atom.h b/tools/qdoc3/atom.h
index d13afbc..70fbae9 100644
--- a/tools/qdoc3/atom.h
+++ b/tools/qdoc3/atom.h
@@ -103,7 +103,7 @@ class Atom
ParaRight,
#ifdef QDOC_QML
Qml,
- QDeclarativeText,
+ QmlText,
#endif
QuotationLeft,
QuotationRight,
diff --git a/tools/qdoc3/codemarker.cpp b/tools/qdoc3/codemarker.cpp
index d890758..15f2c2d 100644
--- a/tools/qdoc3/codemarker.cpp
+++ b/tools/qdoc3/codemarker.cpp
@@ -177,7 +177,7 @@ const Node *CodeMarker::nodeForString(const QString& string)
QString CodeMarker::stringForNode(const Node *node)
{
if (sizeof(const Node *) == sizeof(ulong)) {
- return QString::number(reinterpret_cast<ulong>(node));
+ return QString::number(reinterpret_cast<quintptr>(node));
}
else {
return QString::number(reinterpret_cast<qulonglong>(node));
@@ -290,13 +290,13 @@ QString CodeMarker::taggedQmlNode(const Node* node)
{
QString tag;
switch (node->type()) {
- case Node::QDeclarativeProperty:
+ case Node::QmlProperty:
tag = QLatin1String("@property");
break;
- case Node::QDeclarativeSignal:
+ case Node::QmlSignal:
tag = QLatin1String("@signal");
break;
- case Node::QDeclarativeMethod:
+ case Node::QmlMethod:
tag = QLatin1String("@method");
break;
default:
@@ -369,7 +369,7 @@ void CodeMarker::insert(FastSection &fastSection,
bool inheritedMember = false;
if (!node->relates()) {
if (node->parent() != (const InnerNode*)fastSection.innerNode) {
- if (node->type() != Node::QDeclarativeProperty)
+ if (node->type() != Node::QmlProperty)
inheritedMember = true;
}
}
@@ -612,9 +612,9 @@ QString CodeMarker::macName(const Node *node, const QString &name)
#ifdef QDOC_QML
/*!
Get the list of documentation sections for the children of
- the specified QDeclarativeClassNode.
+ the specified QmlClassNode.
*/
-QList<Section> CodeMarker::qmlSections(const QDeclarativeClassNode* , SynopsisStyle )
+QList<Section> CodeMarker::qmlSections(const QmlClassNode* , SynopsisStyle )
{
return QList<Section>();
}
diff --git a/tools/qdoc3/codemarker.h b/tools/qdoc3/codemarker.h
index 9e754a2..1b21753 100644
--- a/tools/qdoc3/codemarker.h
+++ b/tools/qdoc3/codemarker.h
@@ -138,7 +138,7 @@ class CodeMarker
SynopsisStyle style,
Status status) = 0;
#ifdef QDOC_QML
- virtual QList<Section> qmlSections(const QDeclarativeClassNode* qmlClassNode,
+ virtual QList<Section> qmlSections(const QmlClassNode* qmlClassNode,
SynopsisStyle style);
#endif
virtual const Node *resolveTarget(const QString& target,
diff --git a/tools/qdoc3/cppcodemarker.cpp b/tools/qdoc3/cppcodemarker.cpp
index ff09bb7..3ff6ebe 100644
--- a/tools/qdoc3/cppcodemarker.cpp
+++ b/tools/qdoc3/cppcodemarker.cpp
@@ -145,7 +145,7 @@ QString CppCodeMarker::plainFullName(const Node *node, const Node *relative)
}
else {
QString fullName;
- for (;;) {
+ while (node) {
fullName.prepend(plainName(node));
if (node->parent() == relative || node->parent()->name().isEmpty())
break;
@@ -194,8 +194,8 @@ QString CppCodeMarker::markedUpSynopsis(const Node *node,
synopsis = "class " + name;
break;
case Node::Function:
- case Node::QDeclarativeSignal:
- case Node::QDeclarativeMethod:
+ case Node::QmlSignal:
+ case Node::QmlMethod:
func = (const FunctionNode *) node;
if (style != SeparateList && !func->returnType().isEmpty())
synopsis = typified(func->returnType()) + " ";
@@ -355,15 +355,15 @@ QString CppCodeMarker::markedUpQmlItem(const Node* node, bool summary)
QString name = taggedQmlNode(node);
if (summary) {
name = linkTag(node,name);
- } else if (node->type() == Node::QDeclarativeProperty) {
- const QDeclarativePropertyNode* pn = static_cast<const QDeclarativePropertyNode*>(node);
+ } else if (node->type() == Node::QmlProperty) {
+ const QmlPropertyNode* pn = static_cast<const QmlPropertyNode*>(node);
if (pn->isAttached())
name.prepend(pn->element() + QLatin1Char('.'));
}
name = "<@name>" + name + "</@name>";
QString synopsis = name;
- if (node->type() == Node::QDeclarativeProperty) {
- const QDeclarativePropertyNode* pn = static_cast<const QDeclarativePropertyNode*>(node);
+ if (node->type() == Node::QmlProperty) {
+ const QmlPropertyNode* pn = static_cast<const QmlPropertyNode*>(node);
synopsis += " : " + typified(pn->dataType());
}
@@ -1108,7 +1108,7 @@ QString CppCodeMarker::addMarkUp(const QString& protectedCode,
Currently, it only handles QML property groups.
*/
-QList<Section> CppCodeMarker::qmlSections(const QDeclarativeClassNode* qmlClassNode,
+QList<Section> CppCodeMarker::qmlSections(const QmlClassNode* qmlClassNode,
SynopsisStyle style)
{
QList<Section> sections;
@@ -1141,12 +1141,12 @@ QList<Section> CppCodeMarker::qmlSections(const QDeclarativeClassNode* qmlClassN
NodeList::ConstIterator c = qmlClassNode->childNodes().begin();
while (c != qmlClassNode->childNodes().end()) {
- if ((*c)->subType() == Node::QDeclarativePropertyGroup) {
- const QDeclarativePropGroupNode* qpgn = static_cast<const QDeclarativePropGroupNode*>(*c);
+ if ((*c)->subType() == Node::QmlPropertyGroup) {
+ const QmlPropGroupNode* qpgn = static_cast<const QmlPropGroupNode*>(*c);
NodeList::ConstIterator p = qpgn->childNodes().begin();
while (p != qpgn->childNodes().end()) {
- if ((*p)->type() == Node::QDeclarativeProperty) {
- const QDeclarativePropertyNode* pn = static_cast<const QDeclarativePropertyNode*>(*p);
+ if ((*p)->type() == Node::QmlProperty) {
+ const QmlPropertyNode* pn = static_cast<const QmlPropertyNode*>(*p);
if (pn->isAttached())
insert(qmlattachedproperties,*p,style,Okay);
else
@@ -1155,14 +1155,14 @@ QList<Section> CppCodeMarker::qmlSections(const QDeclarativeClassNode* qmlClassN
++p;
}
}
- else if ((*c)->type() == Node::QDeclarativeSignal) {
+ else if ((*c)->type() == Node::QmlSignal) {
const FunctionNode* sn = static_cast<const FunctionNode*>(*c);
if (sn->isAttached())
insert(qmlattachedsignals,*c,style,Okay);
else
insert(qmlsignals,*c,style,Okay);
}
- else if ((*c)->type() == Node::QDeclarativeMethod) {
+ else if ((*c)->type() == Node::QmlMethod) {
const FunctionNode* mn = static_cast<const FunctionNode*>(*c);
if (mn->isAttached())
insert(qmlattachedmethods,*c,style,Okay);
@@ -1187,21 +1187,21 @@ QList<Section> CppCodeMarker::qmlSections(const QDeclarativeClassNode* qmlClassN
FastSection qmlattachedmethods(qmlClassNode,"Attached Method Documentation");
NodeList::ConstIterator c = qmlClassNode->childNodes().begin();
while (c != qmlClassNode->childNodes().end()) {
- if ((*c)->subType() == Node::QDeclarativePropertyGroup) {
- const QDeclarativePropGroupNode* pgn = static_cast<const QDeclarativePropGroupNode*>(*c);
+ if ((*c)->subType() == Node::QmlPropertyGroup) {
+ const QmlPropGroupNode* pgn = static_cast<const QmlPropGroupNode*>(*c);
if (pgn->isAttached())
insert(qmlattachedproperties,*c,style,Okay);
else
insert(qmlproperties,*c,style,Okay);
}
- else if ((*c)->type() == Node::QDeclarativeSignal) {
+ else if ((*c)->type() == Node::QmlSignal) {
const FunctionNode* sn = static_cast<const FunctionNode*>(*c);
if (sn->isAttached())
insert(qmlattachedsignals,*c,style,Okay);
else
insert(qmlsignals,*c,style,Okay);
}
- else if ((*c)->type() == Node::QDeclarativeMethod) {
+ else if ((*c)->type() == Node::QmlMethod) {
const FunctionNode* mn = static_cast<const FunctionNode*>(*c);
if (mn->isAttached())
insert(qmlattachedmethods,*c,style,Okay);
diff --git a/tools/qdoc3/cppcodemarker.h b/tools/qdoc3/cppcodemarker.h
index 2f6471a..2dcf400 100644
--- a/tools/qdoc3/cppcodemarker.h
+++ b/tools/qdoc3/cppcodemarker.h
@@ -79,7 +79,7 @@ class CppCodeMarker : public CodeMarker
QList<Section> sections(const InnerNode *innerNode,
SynopsisStyle style,
Status status);
- QList<Section> qmlSections(const QDeclarativeClassNode* qmlClassNode,
+ QList<Section> qmlSections(const QmlClassNode* qmlClassNode,
SynopsisStyle style);
const Node *resolveTarget(const QString& target,
const Tree *tree,
diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp
index 4d30f3a..021d64a 100644
--- a/tools/qdoc3/cppcodeparser.cpp
+++ b/tools/qdoc3/cppcodeparser.cpp
@@ -728,7 +728,7 @@ Node *CppCodeParser::processTopicCommand(const Doc& doc,
if (n)
classNode = static_cast<const ClassNode*>(n);
}
- return new QDeclarativeClassNode(tre->root(), names[0], classNode);
+ return new QmlClassNode(tre->root(), names[0], classNode);
}
else if (command == COMMAND_QMLBASICTYPE) {
#if 0
@@ -738,11 +738,11 @@ Node *CppCodeParser::processTopicCommand(const Doc& doc,
FakeNode* pageNode = static_cast<FakeNode*>(tre->root()->findNode(parts[1], Node::Fake));
if (pageNode) {
qDebug() << "FOUND";
- return new QDeclarativeBasicTypeNode(pageNode, parts[0]);
+ return new QmlBasicTypeNode(pageNode, parts[0]);
}
}
#endif
- return new QDeclarativeBasicTypeNode(tre->root(), arg);
+ return new QmlBasicTypeNode(tre->root(), arg);
}
else if ((command == COMMAND_QMLSIGNAL) ||
(command == COMMAND_QMLMETHOD) ||
@@ -750,19 +750,19 @@ Node *CppCodeParser::processTopicCommand(const Doc& doc,
(command == COMMAND_QMLATTACHEDMETHOD)) {
QString element;
QString type;
- QDeclarativeClassNode* qmlClass = 0;
+ QmlClassNode* qmlClass = 0;
if (splitQmlMethodArg(doc,arg,type,element)) {
Node* n = tre->findNode(QStringList(element),Node::Fake);
- if (n && n->subType() == Node::QDeclarativeClass) {
- qmlClass = static_cast<QDeclarativeClassNode*>(n);
+ if (n && n->subType() == Node::QmlClass) {
+ qmlClass = static_cast<QmlClassNode*>(n);
if (command == COMMAND_QMLSIGNAL)
- return makeFunctionNode(doc,arg,qmlClass,Node::QDeclarativeSignal,false,COMMAND_QMLSIGNAL);
+ return makeFunctionNode(doc,arg,qmlClass,Node::QmlSignal,false,COMMAND_QMLSIGNAL);
else if (command == COMMAND_QMLATTACHEDSIGNAL)
- return makeFunctionNode(doc,arg,qmlClass,Node::QDeclarativeSignal,true,COMMAND_QMLATTACHEDSIGNAL);
+ return makeFunctionNode(doc,arg,qmlClass,Node::QmlSignal,true,COMMAND_QMLATTACHEDSIGNAL);
else if (command == COMMAND_QMLMETHOD)
- return makeFunctionNode(doc,arg,qmlClass,Node::QDeclarativeMethod,false,COMMAND_QMLMETHOD);
+ return makeFunctionNode(doc,arg,qmlClass,Node::QmlMethod,false,COMMAND_QMLMETHOD);
else if (command == COMMAND_QMLATTACHEDMETHOD)
- return makeFunctionNode(doc,arg,qmlClass,Node::QDeclarativeMethod,true,COMMAND_QMLATTACHEDMETHOD);
+ return makeFunctionNode(doc,arg,qmlClass,Node::QmlMethod,true,COMMAND_QMLATTACHEDMETHOD);
else
return 0; // never get here.
}
@@ -850,7 +850,7 @@ Node *CppCodeParser::processTopicCommandGroup(const Doc& doc,
const QString& command,
const QStringList& args)
{
- QDeclarativePropGroupNode* qmlPropGroup = 0;
+ QmlPropGroupNode* qmlPropGroup = 0;
if ((command == COMMAND_QMLPROPERTY) ||
(command == COMMAND_QMLATTACHEDPROPERTY)) {
QString type;
@@ -860,20 +860,20 @@ Node *CppCodeParser::processTopicCommandGroup(const Doc& doc,
QStringList::ConstIterator arg = args.begin();
if (splitQmlPropertyArg(doc,(*arg),type,element,property)) {
Node* n = tre->findNode(QStringList(element),Node::Fake);
- if (n && n->subType() == Node::QDeclarativeClass) {
- QDeclarativeClassNode* qmlClass = static_cast<QDeclarativeClassNode*>(n);
+ if (n && n->subType() == Node::QmlClass) {
+ QmlClassNode* qmlClass = static_cast<QmlClassNode*>(n);
if (qmlClass)
- qmlPropGroup = new QDeclarativePropGroupNode(qmlClass,
+ qmlPropGroup = new QmlPropGroupNode(qmlClass,
property,
attached);
}
}
if (qmlPropGroup) {
- const ClassNode *correspondingClass = static_cast<const QDeclarativeClassNode*>(qmlPropGroup->parent())->classNode();
+ const ClassNode *correspondingClass = static_cast<const QmlClassNode*>(qmlPropGroup->parent())->classNode();
PropertyNode *correspondingProperty = 0;
if (correspondingClass)
correspondingProperty = static_cast<PropertyNode*>((Node*)correspondingClass->findNode(property, Node::Property));
- QDeclarativePropertyNode *qmlPropNode = new QDeclarativePropertyNode(qmlPropGroup,property,type,attached);
+ QmlPropertyNode *qmlPropNode = new QmlPropertyNode(qmlPropGroup,property,type,attached);
if (correspondingProperty) {
bool writableList = type.startsWith("list") && correspondingProperty->dataType().endsWith('*');
qmlPropNode->setWritable(writableList || correspondingProperty->isWritable());
@@ -881,7 +881,7 @@ Node *CppCodeParser::processTopicCommandGroup(const Doc& doc,
++arg;
while (arg != args.end()) {
if (splitQmlPropertyArg(doc,(*arg),type,element,property)) {
- QDeclarativePropertyNode* qmlPropNode = new QDeclarativePropertyNode(qmlPropGroup,
+ QmlPropertyNode* qmlPropNode = new QmlPropertyNode(qmlPropGroup,
property,
type,
attached);
@@ -1033,12 +1033,12 @@ void CppCodeParser::processOtherMetaCommand(const Doc& doc,
#ifdef QDOC_QML
else if (command == COMMAND_QMLINHERITS) {
setLink(node, Node::InheritsLink, arg);
- if (node->subType() == Node::QDeclarativeClass) {
- QDeclarativeClassNode::addInheritedBy(arg,node);
+ if (node->subType() == Node::QmlClass) {
+ QmlClassNode::addInheritedBy(arg,node->name());
}
}
else if (command == COMMAND_QMLDEFAULT) {
- QDeclarativePropGroupNode* qpgn = static_cast<QDeclarativePropGroupNode*>(node);
+ QmlPropGroupNode* qpgn = static_cast<QmlPropGroupNode*>(node);
qpgn->setDefault();
}
#endif
diff --git a/tools/qdoc3/doc.cpp b/tools/qdoc3/doc.cpp
index 78b5d1f..ad4cdde 100644
--- a/tools/qdoc3/doc.cpp
+++ b/tools/qdoc3/doc.cpp
@@ -553,7 +553,7 @@ void DocParser::parse(const QString& source,
append(Atom::Qml, getCode(CMD_QML, marker));
break;
case CMD_QMLTEXT:
- append(Atom::QDeclarativeText);
+ append(Atom::QmlText);
break;
#endif
case CMD_CODELINE:
@@ -2842,7 +2842,7 @@ void Doc::initialize(const Config& config)
DocParser::quoting = config.getBool(CONFIG_QUOTINGINFORMATION);
#ifdef QDOC_QML
- QDeclarativeClassNode::qmlOnly = config.getBool(CONFIG_QMLONLY);
+ QmlClassNode::qmlOnly = config.getBool(CONFIG_QMLONLY);
#endif
QStringMap reverseAliasMap;
diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp
index 8766696..6a8899a 100644
--- a/tools/qdoc3/generator.cpp
+++ b/tools/qdoc3/generator.cpp
@@ -301,7 +301,7 @@ bool Generator::generateQmlText(const Text& text,
startText(relative, marker);
while (atom) {
- if (atom->type() != Atom::QDeclarativeText)
+ if (atom->type() != Atom::QmlText)
atom = atom->next();
else {
atom = atom->next();
@@ -520,7 +520,7 @@ void Generator::generateInherits(const ClassNode *classe, CodeMarker *marker)
#ifdef QDOC_QML
/*!
*/
-void Generator::generateQmlInherits(const QDeclarativeClassNode* , CodeMarker* )
+void Generator::generateQmlInherits(const QmlClassNode* , CodeMarker* )
{
// stub.
}
@@ -1186,32 +1186,6 @@ void Generator::appendSortedNames(Text& text,
}
}
-void Generator::appendSortedNames(Text& text,
- const Node* base,
- const NodeList& subs,
- CodeMarker *marker)
-{
- NodeList::ConstIterator r;
- QMap<QString,Text> classMap;
- int index = 0;
-
- r = subs.begin();
- while (r != subs.end()) {
- Text className;
- appendFullName(className, (*r), base, marker);
- classMap[className.toString().toLower()] = className;
- ++r;
- }
-
- QStringList classNames = classMap.keys();
- classNames.sort();
-
- foreach (const QString &className, classNames) {
- text << classMap[className];
- text << separator(index++, classNames.count());
- }
-}
-
int Generator::skipAtoms(const Atom *atom, Atom::Type type) const
{
int skipAhead = 0;
diff --git a/tools/qdoc3/generator.h b/tools/qdoc3/generator.h
index 8e8eed8..44f56e2 100644
--- a/tools/qdoc3/generator.h
+++ b/tools/qdoc3/generator.h
@@ -101,7 +101,7 @@ class Generator
const Node *relative,
CodeMarker *marker,
const QString& qmlName);
- virtual void generateQmlInherits(const QDeclarativeClassNode* cn,
+ virtual void generateQmlInherits(const QmlClassNode* cn,
CodeMarker* marker);
#endif
virtual void generateBody(const Node *node, CodeMarker *marker);
@@ -169,13 +169,6 @@ class Generator
const QList<RelatedClass> &classes,
CodeMarker *marker);
- protected:
- void appendSortedNames(Text& text,
- const Node* base,
- const NodeList& subs,
- CodeMarker *marker);
-
- private:
QString amp;
QString lt;
QString gt;
diff --git a/tools/qdoc3/helpprojectwriter.cpp b/tools/qdoc3/helpprojectwriter.cpp
index 628fd0f..2189e02 100644
--- a/tools/qdoc3/helpprojectwriter.cpp
+++ b/tools/qdoc3/helpprojectwriter.cpp
@@ -127,7 +127,7 @@ void HelpProjectWriter::readSelectors(SubProject &subproject, const QStringList
subTypeHash["page"] = Node::Page;
subTypeHash["externalpage"] = Node::ExternalPage;
#ifdef QDOC_QML
- subTypeHash["qmlclass"] = Node::QDeclarativeClass;
+ subTypeHash["qmlclass"] = Node::QmlClass;
#endif
QSet<Node::SubType> allSubTypes = QSet<Node::SubType>::fromList(subTypeHash.values());
@@ -188,8 +188,8 @@ QStringList HelpProjectWriter::keywordDetails(const Node *node) const
} else if (node->type() == Node::Fake) {
const FakeNode *fake = static_cast<const FakeNode *>(node);
#ifdef QDOC_QML
- if (fake->subType() == Node::QDeclarativeClass) {
- details << (QDeclarativeClassNode::qmlOnly ? fake->name() : fake->fullTitle());
+ if (fake->subType() == Node::QmlClass) {
+ details << (QmlClassNode::qmlOnly ? fake->name() : fake->fullTitle());
details << "QML." + fake->name();
} else
#endif
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index 7db5828..e767460 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -73,7 +73,6 @@ QString HtmlGenerator::sinceTitles[] =
" New Typedefs",
" New Properties",
" New Variables",
- " New QML Elements",
" New Qml Properties",
" New Qml Signals",
" New Qml Methods",
@@ -688,8 +687,6 @@ int HtmlGenerator::generateAtom(const Atom *atom,
nsmap = newSinceMaps.find(atom->string());
NewClassMaps::const_iterator ncmap;
ncmap = newClassMaps.find(atom->string());
- NewClassMaps::const_iterator nqcmap;
- nqcmap = newQmlClassMaps.find(atom->string());
if ((nsmap != newSinceMaps.constEnd()) && !nsmap.value().isEmpty()) {
QList<Section> sections;
QList<Section>::ConstIterator s;
@@ -700,10 +697,6 @@ int HtmlGenerator::generateAtom(const Atom *atom,
while (n != nsmap.value().constEnd()) {
const Node* node = n.value();
switch (node->type()) {
- case Node::Fake:
- if (node->subType() == Node::QDeclarativeClass)
- sections[QDeclarativeClass].appendMember((Node*)node);
- break;
case Node::Namespace:
sections[Namespace].appendMember((Node*)node);
break;
@@ -745,14 +738,14 @@ int HtmlGenerator::generateAtom(const Atom *atom,
case Node::Variable:
sections[Variable].appendMember((Node*)node);
break;
- case Node::QDeclarativeProperty:
- sections[QDeclarativeProperty].appendMember((Node*)node);
+ case Node::QmlProperty:
+ sections[QmlProperty].appendMember((Node*)node);
break;
- case Node::QDeclarativeSignal:
- sections[QDeclarativeSignal].appendMember((Node*)node);
+ case Node::QmlSignal:
+ sections[QmlSignal].appendMember((Node*)node);
break;
- case Node::QDeclarativeMethod:
- sections[QDeclarativeMethod].appendMember((Node*)node);
+ case Node::QmlMethod:
+ sections[QmlMethod].appendMember((Node*)node);
break;
default:
break;
@@ -789,8 +782,6 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "<h3>" << protectEnc((*s).name) << "</h3>\n";
if (idx == Class)
generateCompactList(0, marker, ncmap.value(), QString("Q"));
- else if (idx == QDeclarativeClass)
- generateCompactList(0, marker, nqcmap.value(), QString("Q"));
else if (idx == MemberFunction) {
ParentMaps parentmaps;
ParentMaps::iterator pmap;
@@ -1190,7 +1181,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
<< "</code></b></font>";
break;
#ifdef QDOC_QML
- case Atom::QDeclarativeText:
+ case Atom::QmlText:
case Atom::EndQmlText:
// don't do anything with these. They are just tags.
break;
@@ -1453,7 +1444,7 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
subTitleSize = SmallSubTitle;
htmlTitle += " (" + fake->subTitle() + ")";
}
- else if (fake->subType() == Node::QDeclarativeBasicType) {
+ else if (fake->subType() == Node::QmlBasicType) {
fullTitle = "QML Basic Type: " + fullTitle;
htmlTitle = fullTitle;
}
@@ -1527,8 +1518,8 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
}
}
#ifdef QDOC_QML
- else if (fake->subType() == Node::QDeclarativeClass) {
- const QDeclarativeClassNode* qml_cn = static_cast<const QDeclarativeClassNode*>(fake);
+ else if (fake->subType() == Node::QmlClass) {
+ const QmlClassNode* qml_cn = static_cast<const QmlClassNode*>(fake);
const ClassNode* cn = qml_cn->classNode();
generateQmlInherits(qml_cn, marker);
generateQmlInstantiates(qml_cn, marker);
@@ -2341,11 +2332,7 @@ void HtmlGenerator::generateCompactList(const Node *relative,
out() << "<a href=\""
<< linkForNode(it.value(), relative)
<< "\">";
- QStringList pieces;
- if (it.value()->subType() == Node::QDeclarativeClass)
- pieces << it.value()->name();
- else
- pieces = fullName(it.value(), relative, marker).split("::");
+ QStringList pieces = fullName(it.value(), relative, marker).split("::");
out() << protectEnc(pieces.last());
out() << "</a>";
if (pieces.size() > 1) {
@@ -3507,18 +3494,18 @@ QString HtmlGenerator::refForNode(const Node *node)
break;
#ifdef QDOC_QML
case Node::Fake:
- if (node->subType() != Node::QDeclarativePropertyGroup)
+ if (node->subType() != Node::QmlPropertyGroup)
break;
- case Node::QDeclarativeProperty:
+ case Node::QmlProperty:
#endif
case Node::Property:
ref = node->name() + "-prop";
break;
#ifdef QDOC_QML
- case Node::QDeclarativeSignal:
+ case Node::QmlSignal:
ref = node->name() + "-signal";
break;
- case Node::QDeclarativeMethod:
+ case Node::QmlMethod:
ref = node->name() + "-method";
break;
#endif
@@ -3555,7 +3542,7 @@ QString HtmlGenerator::linkForNode(const Node *node, const Node *relative)
#endif
link += fn;
- if (!node->isInnerNode() || node->subType() == Node::QDeclarativePropertyGroup) {
+ if (!node->isInnerNode() || node->subType() == Node::QmlPropertyGroup) {
ref = refForNode(node);
if (relative && fn == fileName(relative) && ref == refForNode(relative))
return QString();
@@ -3736,9 +3723,6 @@ void HtmlGenerator::findAllSince(const InnerNode *node)
NewClassMaps::iterator ncmap = newClassMaps.find(sinceVersion);
if (ncmap == newClassMaps.end())
ncmap = newClassMaps.insert(sinceVersion,NodeMap());
- NewClassMaps::iterator nqcmap = newQmlClassMaps.find(sinceVersion);
- if (nqcmap == newQmlClassMaps.end())
- nqcmap = newQmlClassMaps.insert(sinceVersion,NodeMap());
if ((*child)->type() == Node::Function) {
FunctionNode *func = static_cast<FunctionNode *>(*child);
@@ -3758,15 +3742,6 @@ void HtmlGenerator::findAllSince(const InnerNode *node)
nsmap.value().insert(className,(*child));
ncmap.value().insert(className,(*child));
}
- else if ((*child)->subType() == Node::QDeclarativeClass) {
- QString className = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- className = (*child)->parent()->name()+"::"+className;
- nsmap.value().insert(className,(*child));
- nqcmap.value().insert(className,(*child));
- }
}
else {
QString name = (*child)->name();
@@ -3865,9 +3840,9 @@ void HtmlGenerator::findAllQmlClasses(const InnerNode *node)
while (c != node->childNodes().constEnd()) {
if ((*c)->type() == Node::Fake) {
const FakeNode* fakeNode = static_cast<const FakeNode *>(*c);
- if (fakeNode->subType() == Node::QDeclarativeClass) {
- const QDeclarativeClassNode* qmlNode =
- static_cast<const QDeclarativeClassNode*>(fakeNode);
+ if (fakeNode->subType() == Node::QmlClass) {
+ const QmlClassNode* qmlNode =
+ static_cast<const QmlClassNode*>(fakeNode);
const Node* n = qmlNode->classNode();
}
qmlClasses.insert(fakeNode->name(),*c);
@@ -4203,7 +4178,7 @@ void HtmlGenerator::generateQmlSummary(const Section& section,
NodeList::ConstIterator m;
int count = section.members.size();
bool twoColumn = false;
- if (section.members.first()->type() == Node::QDeclarativeProperty) {
+ if (section.members.first()->type() == Node::QmlProperty) {
twoColumn = (count >= 5);
}
if (twoColumn)
@@ -4237,18 +4212,18 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
const InnerNode *relative,
CodeMarker *marker)
{
- const QDeclarativePropertyNode* qpn = 0;
+ const QmlPropertyNode* qpn = 0;
generateMacRef(node, marker);
out() << "<div class=\"qmlitem\">";
- if (node->subType() == Node::QDeclarativePropertyGroup) {
- const QDeclarativePropGroupNode* qpgn = static_cast<const QDeclarativePropGroupNode*>(node);
+ if (node->subType() == Node::QmlPropertyGroup) {
+ const QmlPropGroupNode* qpgn = static_cast<const QmlPropGroupNode*>(node);
NodeList::ConstIterator p = qpgn->childNodes().begin();
out() << "<div class=\"qmlproto\">";
out() << "<table width=\"100%\" class=\"qmlname\">";
while (p != qpgn->childNodes().end()) {
- if ((*p)->type() == Node::QDeclarativeProperty) {
- qpn = static_cast<const QDeclarativePropertyNode*>(*p);
+ if ((*p)->type() == Node::QmlProperty) {
+ qpn = static_cast<const QmlPropertyNode*>(*p);
out() << "<tr><td>";
out() << "<a name=\"" + refForNode(qpn) + "\"></a>";
if (!qpn->isWritable())
@@ -4270,7 +4245,7 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
out() << "</table>";
out() << "</div>";
}
- else if (node->type() == Node::QDeclarativeSignal) {
+ else if (node->type() == Node::QmlSignal) {
const FunctionNode* qsn = static_cast<const FunctionNode*>(node);
out() << "<div class=\"qmlproto\">";
out() << "<table class=\"qmlname\">";
@@ -4282,7 +4257,7 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
out() << "</table>";
out() << "</div>";
}
- else if (node->type() == Node::QDeclarativeMethod) {
+ else if (node->type() == Node::QmlMethod) {
const FunctionNode* qmn = static_cast<const FunctionNode*>(node);
out() << "<div class=\"qmlproto\">";
out() << "<table class=\"qmlname\">";
@@ -4307,7 +4282,7 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
Output the "Inherits" line for the QML element,
if there should be one.
*/
-void HtmlGenerator::generateQmlInherits(const QDeclarativeClassNode* cn,
+void HtmlGenerator::generateQmlInherits(const QmlClassNode* cn,
CodeMarker* marker)
{
if (cn && !cn->links().empty()) {
@@ -4316,8 +4291,8 @@ void HtmlGenerator::generateQmlInherits(const QDeclarativeClassNode* cn,
linkPair = cn->links()[Node::InheritsLink];
QStringList strList(linkPair.first);
const Node* n = myTree->findNode(strList,Node::Fake);
- if (n && n->subType() == Node::QDeclarativeClass) {
- const QDeclarativeClassNode* qcn = static_cast<const QDeclarativeClassNode*>(n);
+ if (n && n->subType() == Node::QmlClass) {
+ const QmlClassNode* qcn = static_cast<const QmlClassNode*>(n);
out() << "<p style=\"text-align: center\">";
Text text;
text << "[Inherits ";
@@ -4337,30 +4312,55 @@ void HtmlGenerator::generateQmlInherits(const QDeclarativeClassNode* cn,
Output the "Inherit by" list for the QML element,
if it is inherited by any other elements.
*/
-void HtmlGenerator::generateQmlInheritedBy(const QDeclarativeClassNode* cn,
+void HtmlGenerator::generateQmlInheritedBy(const QmlClassNode* cn,
CodeMarker* marker)
{
if (cn) {
- NodeList subs;
- QDeclarativeClassNode::subclasses(cn->name(),subs);
+ QStringList subs;
+ QmlClassNode::subclasses(cn->name(),subs);
if (!subs.isEmpty()) {
+ subs.sort();
Text text;
text << Atom::ParaLeft << "Inherited by ";
- appendSortedNames(text,cn,subs,marker);
+ for (int i = 0; i < subs.size(); ++i) {
+ text << subs.at(i);
+ text << separator(i, subs.size());
+ }
text << Atom::ParaRight;
generateText(text, cn, marker);
}
+#if 0
+ if (cn->links().contains(Node::InheritsLink)) {
+ QPair<QString,QString> linkPair;
+ linkPair = cn->links()[Node::InheritsLink];
+ QStringList strList(linkPair.first);
+ const Node* n = myTree->findNode(strList,Node::Fake);
+ if (n && n->subType() == Node::QmlClass) {
+ const QmlClassNode* qcn = static_cast<const QmlClassNode*>(n);
+ out() << "<p style=\"text-align: center\">";
+ Text text;
+ text << "[Inherits ";
+ text << Atom(Atom::LinkNode,CodeMarker::stringForNode(qcn));
+ text << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK);
+ text << Atom(Atom::String, linkPair.second);
+ text << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK);
+ text << "]";
+ generateText(text, cn, marker);
+ out() << "</p>";
+ }
+ }
+#endif
}
}
/*!
- Output the "[Xxx instantiates the C++ class QDeclarativeXxx]"
+ Output the "[Xxx instantiates the C++ class QmlGraphicsXxx]"
line for the QML element, if there should be one.
If there is no class node, or if the class node status
is set to Node::Internal, do nothing.
*/
-void HtmlGenerator::generateQmlInstantiates(const QDeclarativeClassNode* qcn,
+void HtmlGenerator::generateQmlInstantiates(const QmlClassNode* qcn,
CodeMarker* marker)
{
const ClassNode* cn = qcn->classNode();
@@ -4384,7 +4384,7 @@ void HtmlGenerator::generateQmlInstantiates(const QDeclarativeClassNode* qcn,
}
/*!
- Output the "[QDeclarativeXxx is instantiated by QML element Xxx]"
+ Output the "[QmlGraphicsXxx is instantiated by QML element Xxx]"
line for the class, if there should be one.
If there is no QML element, or if the class node status
@@ -4395,7 +4395,7 @@ void HtmlGenerator::generateInstantiatedBy(const ClassNode* cn,
{
if (cn && cn->status() != Node::Internal && !cn->qmlElement().isEmpty()) {
const Node* n = myTree->root()->findNode(cn->qmlElement(),Node::Fake);
- if (n && n->subType() == Node::QDeclarativeClass) {
+ if (n && n->subType() == Node::QmlClass) {
out() << "<p style=\"text-align: center\">";
Text text;
text << "[";
diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h
index 42c94cd..551bead 100644
--- a/tools/qdoc3/htmlgenerator.h
+++ b/tools/qdoc3/htmlgenerator.h
@@ -90,10 +90,9 @@ class HtmlGenerator : public PageGenerator
Typedef,
Property,
Variable,
- QDeclarativeClass,
- QDeclarativeProperty,
- QDeclarativeSignal,
- QDeclarativeMethod,
+ QmlProperty,
+ QmlSignal,
+ QmlMethod,
LastSinceType
};
@@ -185,9 +184,9 @@ class HtmlGenerator : public PageGenerator
void generateDetailedQmlMember(const Node *node,
const InnerNode *relative,
CodeMarker *marker);
- void generateQmlInherits(const QDeclarativeClassNode* cn, CodeMarker* marker);
- void generateQmlInheritedBy(const QDeclarativeClassNode* cn, CodeMarker* marker);
- void generateQmlInstantiates(const QDeclarativeClassNode* qcn, CodeMarker* marker);
+ void generateQmlInherits(const QmlClassNode* cn, CodeMarker* marker);
+ void generateQmlInheritedBy(const QmlClassNode* cn, CodeMarker* marker);
+ void generateQmlInstantiates(const QmlClassNode* qcn, CodeMarker* marker);
void generateInstantiatedBy(const ClassNode* cn, CodeMarker* marker);
#endif
#ifdef QDOC_NAME_ALIGNMENT
@@ -327,7 +326,6 @@ class HtmlGenerator : public PageGenerator
NewSinceMaps newSinceMaps;
static QString sinceTitles[];
NewClassMaps newClassMaps;
- NewClassMaps newQmlClassMaps;
static int id;
};
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index 0ceda39..358fdd1 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -580,7 +580,7 @@ bool InnerNode::isSameSignature(const FunctionNode *f1, const FunctionNode *f2)
void InnerNode::addChild(Node *child)
{
children.append(child);
- if ((child->type() == Function) || (child->type() == QDeclarativeMethod)) {
+ if ((child->type() == Function) || (child->type() == QmlMethod)) {
FunctionNode *func = (FunctionNode *) child;
if (!primaryFunctionMap.contains(func->name())) {
primaryFunctionMap.insert(func->name(), func);
@@ -806,8 +806,8 @@ FakeNode::FakeNode(InnerNode *parent, const QString& name, SubType subtype)
case Group:
setPageType(ArticlePage);
break;
- case QDeclarativeClass:
- case QDeclarativeBasicType:
+ case QmlClass:
+ case QmlBasicType:
setPageType(ApiPage);
break;
case Example:
@@ -1256,31 +1256,39 @@ bool TargetNode::isInnerNode() const
}
#ifdef QDOC_QML
-bool QDeclarativeClassNode::qmlOnly = false;
-QMultiMap<QString,Node*> QDeclarativeClassNode::inheritedBy;
+bool QmlClassNode::qmlOnly = false;
+QMultiMap<QString,QString> QmlClassNode::inheritedBy;
/*!
Constructs a Qml class node (i.e. a Fake node with the
- subtype QDeclarativeClass. The new node has the given \a parent
+ subtype QmlClass. The new node has the given \a parent
and \a name and is associated with the C++ class node
specified by \a cn which may be null if the the Qml
class node is not associated with a C++ class node.
*/
-QDeclarativeClassNode::QDeclarativeClassNode(InnerNode *parent,
+QmlClassNode::QmlClassNode(InnerNode *parent,
const QString& name,
const ClassNode* cn)
- : FakeNode(parent, name, QDeclarativeClass), cnode(cn)
+ : FakeNode(parent, name, QmlClass), cnode(cn)
{
setTitle((qmlOnly ? "" : "QML ") + name + " Element Reference");
}
/*!
+ I made this so I could print a debug message here.
+ */
+QmlClassNode::~QmlClassNode()
+{
+ qDebug() << "Deleting QmlClassNode:" << name();
+}
+
+/*!
The base file name for this kind of node has "qml_"
prepended to it.
But not yet. Still testing.
*/
-QString QDeclarativeClassNode::fileBase() const
+QString QmlClassNode::fileBase() const
{
#if 0
if (Node::fileBase() == "item")
@@ -1294,15 +1302,15 @@ QString QDeclarativeClassNode::fileBase() const
Record the fact that QML class \a base is inherited by
QML class \a sub.
*/
-void QDeclarativeClassNode::addInheritedBy(const QString& base, Node* sub)
+void QmlClassNode::addInheritedBy(const QString& base, const QString& sub)
{
inheritedBy.insert(base,sub);
}
/*!
- Loads the list \a subs with the nodes of all the subclasses of \a base.
+ Loads the list \a subs with the names of all the subclasses of \a base.
*/
-void QDeclarativeClassNode::subclasses(const QString& base, NodeList& subs)
+void QmlClassNode::subclasses(const QString& base, QStringList& subs)
{
subs.clear();
if (inheritedBy.contains(base))
@@ -1311,24 +1319,24 @@ void QDeclarativeClassNode::subclasses(const QString& base, NodeList& subs)
/*!
Constructs a Qml basic type node (i.e. a Fake node with
- the subtype QDeclarativeBasicType. The new node has the given
+ the subtype QmlBasicType. The new node has the given
\a parent and \a name.
*/
-QDeclarativeBasicTypeNode::QDeclarativeBasicTypeNode(InnerNode *parent,
+QmlBasicTypeNode::QmlBasicTypeNode(InnerNode *parent,
const QString& name)
- : FakeNode(parent, name, QDeclarativeBasicType)
+ : FakeNode(parent, name, QmlBasicType)
{
setTitle(name);
}
/*!
Constructor for the Qml property group node. \a parent is
- always a QDeclarativeClassNode.
+ always a QmlClassNode.
*/
-QDeclarativePropGroupNode::QDeclarativePropGroupNode(QDeclarativeClassNode* parent,
+QmlPropGroupNode::QmlPropGroupNode(QmlClassNode* parent,
const QString& name,
bool attached)
- : FakeNode(parent, name, QDeclarativePropertyGroup),
+ : FakeNode(parent, name, QmlPropertyGroup),
isdefault(false),
att(attached)
{
@@ -1338,11 +1346,11 @@ QDeclarativePropGroupNode::QDeclarativePropGroupNode(QDeclarativeClassNode* pare
/*!
Constructor for the QML property node.
*/
-QDeclarativePropertyNode::QDeclarativePropertyNode(QDeclarativePropGroupNode *parent,
+QmlPropertyNode::QmlPropertyNode(QmlPropGroupNode *parent,
const QString& name,
const QString& type,
bool attached)
- : LeafNode(QDeclarativeProperty, parent, name),
+ : LeafNode(QmlProperty, parent, name),
dt(type),
sto(Trool_Default),
des(Trool_Default),
@@ -1354,7 +1362,7 @@ QDeclarativePropertyNode::QDeclarativePropertyNode(QDeclarativePropGroupNode *pa
/*!
I don't know what this is.
*/
-QDeclarativePropertyNode::Trool QDeclarativePropertyNode::toTrool(bool boolean)
+QmlPropertyNode::Trool QmlPropertyNode::toTrool(bool boolean)
{
return boolean ? Trool_True : Trool_False;
}
@@ -1362,7 +1370,7 @@ QDeclarativePropertyNode::Trool QDeclarativePropertyNode::toTrool(bool boolean)
/*!
I don't know what this is either.
*/
-bool QDeclarativePropertyNode::fromTrool(Trool troolean, bool defaultValue)
+bool QmlPropertyNode::fromTrool(Trool troolean, bool defaultValue)
{
switch (troolean) {
case Trool_True:
diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h
index 5300efc..ae5dcd7 100644
--- a/tools/qdoc3/node.h
+++ b/tools/qdoc3/node.h
@@ -74,9 +74,9 @@ class Node
Variable,
#ifdef QDOC_QML
Target,
- QDeclarativeProperty,
- QDeclarativeSignal,
- QDeclarativeMethod,
+ QmlProperty,
+ QmlSignal,
+ QmlMethod,
LastType
#else
Target,
@@ -95,9 +95,9 @@ class Node
Page,
#ifdef QDOC_QML
ExternalPage,
- QDeclarativeClass,
- QDeclarativePropertyGroup,
- QDeclarativeBasicType
+ QmlClass,
+ QmlPropertyGroup,
+ QmlBasicType
#else
ExternalPage
#endif
@@ -373,42 +373,42 @@ class FakeNode : public InnerNode
};
#ifdef QDOC_QML
-class QDeclarativeClassNode : public FakeNode
+class QmlClassNode : public FakeNode
{
public:
- QDeclarativeClassNode(InnerNode *parent,
+ QmlClassNode(InnerNode *parent,
const QString& name,
const ClassNode* cn);
- virtual ~QDeclarativeClassNode() { }
+ virtual ~QmlClassNode();
const ClassNode* classNode() const { return cnode; }
virtual QString fileBase() const;
- static void addInheritedBy(const QString& base, Node* sub);
- static void subclasses(const QString& base, NodeList& subs);
+ static void addInheritedBy(const QString& base, const QString& sub);
+ static void subclasses(const QString& base, QStringList& subs);
public:
static bool qmlOnly;
- static QMultiMap<QString,Node*> inheritedBy;
+ static QMultiMap<QString,QString> inheritedBy;
private:
const ClassNode* cnode;
};
-class QDeclarativeBasicTypeNode : public FakeNode
+class QmlBasicTypeNode : public FakeNode
{
public:
- QDeclarativeBasicTypeNode(InnerNode *parent,
+ QmlBasicTypeNode(InnerNode *parent,
const QString& name);
- virtual ~QDeclarativeBasicTypeNode() { }
+ virtual ~QmlBasicTypeNode() { }
};
-class QDeclarativePropGroupNode : public FakeNode
+class QmlPropGroupNode : public FakeNode
{
public:
- QDeclarativePropGroupNode(QDeclarativeClassNode* parent,
+ QmlPropGroupNode(QmlClassNode* parent,
const QString& name,
bool attached);
- virtual ~QDeclarativePropGroupNode() { }
+ virtual ~QmlPropGroupNode() { }
const QString& element() const { return parent()->name(); }
void setDefault() { isdefault = true; }
@@ -420,14 +420,14 @@ class QDeclarativePropGroupNode : public FakeNode
bool att;
};
-class QDeclarativePropertyNode : public LeafNode
+class QmlPropertyNode : public LeafNode
{
public:
- QDeclarativePropertyNode(QDeclarativePropGroupNode* parent,
+ QmlPropertyNode(QmlPropGroupNode* parent,
const QString& name,
const QString& type,
bool attached);
- virtual ~QDeclarativePropertyNode() { }
+ virtual ~QmlPropertyNode() { }
void setDataType(const QString& dataType) { dt = dataType; }
void setStored(bool stored) { sto = toTrool(stored); }
@@ -441,7 +441,7 @@ class QDeclarativePropertyNode : public LeafNode
bool isWritable() const { return fromTrool(wri,true); }
bool isAttached() const { return att; }
- const QString& element() const { return static_cast<QDeclarativePropGroupNode*>(parent())->element(); }
+ const QString& element() const { return static_cast<QmlPropGroupNode*>(parent())->element(); }
private:
enum Trool { Trool_True, Trool_False, Trool_Default };
diff --git a/tools/qdoc3/pagegenerator.cpp b/tools/qdoc3/pagegenerator.cpp
index f129d3a..2cad9ed 100644
--- a/tools/qdoc3/pagegenerator.cpp
+++ b/tools/qdoc3/pagegenerator.cpp
@@ -84,7 +84,7 @@ QString PageGenerator::fileBase(const Node *node) const
else if (!node->isInnerNode())
node = node->parent();
#ifdef QDOC_QML
- if (node->subType() == Node::QDeclarativePropertyGroup) {
+ if (node->subType() == Node::QmlPropertyGroup) {
node = node->parent();
}
#endif
@@ -104,8 +104,8 @@ QString PageGenerator::fileBase(const Node *node) const
we prepend "qml-" to the file name of QML element doc
files.
*/
- if ((p->subType() == Node::QDeclarativeClass) ||
- (p->subType() == Node::QDeclarativeBasicType)) {
+ if ((p->subType() == Node::QmlClass) ||
+ (p->subType() == Node::QmlBasicType)) {
base.prepend("qml-");
}
#endif
@@ -207,7 +207,7 @@ void PageGenerator::generateInnerNode(const InnerNode *node,
if (fakeNode->subType() == Node::ExternalPage)
return;
#ifdef QDOC_QML
- if (fakeNode->subType() == Node::QDeclarativePropertyGroup)
+ if (fakeNode->subType() == Node::QmlPropertyGroup)
return;
#endif
if (fakeNode->subType() == Node::Page) {
diff --git a/tools/qdoc3/test/qt_zh_CN.qdocconf b/tools/qdoc3/test/qt_zh_CN.qdocconf
new file mode 100644
index 0000000..8c7e64a
--- /dev/null
+++ b/tools/qdoc3/test/qt_zh_CN.qdocconf
@@ -0,0 +1,86 @@
+include(compat.qdocconf)
+include(macros.qdocconf)
+include(qt-cpp-ignore.qdocconf)
+include(qt-html-templates_zh_CN.qdocconf)
+include(qt-defines.qdocconf)
+
+project = Qt
+versionsym =
+version = %VERSION%
+description = Qt Reference Documentation
+url = http://qt.nokia.com/doc/zh_CN/4.7
+
+sourceencoding = UTF-8
+outputencoding = UTF-8
+naturallanguage = zh-Hans
+
+indexes = $QTDIR/doc/html/qt.index
+
+qhp.projects = Qt
+
+qhp.Qt.file = qt.qhp
+qhp.Qt.namespace = com.trolltech.qt.470
+qhp.Qt.virtualFolder = qdoc
+qhp.Qt.title = 教程
+qhp.Qt.indexTitle = 教程
+qhp.Qt.selectors = fake:example
+
+qhp.Qt.filterAttributes = qt 4.7.0 qtrefdoc zh_CN
+qhp.Qt.customFilters.Qt.name = Qt 4.7.0
+qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.0
+
+# Files not referenced in any qdoc file (last four are needed by qtdemo)
+# See also extraimages.HTML
+qhp.Qt.extraFiles = classic.css \
+ images/qt-logo.png \
+ images/taskmenuextension-example.png \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ images/stylesheet-coffee-plastique.png
+
+language = Cpp
+
+sourcedirs = $QTDIR/doc/src/zh_CN
+
+excludedirs = $QTDIR/src/3rdparty/clucene \
+ $QTDIR/src/3rdparty/des \
+ $QTDIR/src/3rdparty/freetype \
+ $QTDIR/src/3rdparty/harfbuzz \
+ $QTDIR/src/3rdparty/kdebase \
+ $QTDIR/src/3rdparty/libjpeg \
+ $QTDIR/src/3rdparty/libmng \
+ $QTDIR/src/3rdparty/libpng \
+ $QTDIR/src/3rdparty/libtiff \
+ $QTDIR/src/3rdparty/md4 \
+ $QTDIR/src/3rdparty/md5 \
+ $QTDIR/src/3rdparty/patches \
+ $QTDIR/src/3rdparty/sha1 \
+ $QTDIR/src/3rdparty/sqlite \
+ $QTDIR/src/3rdparty/webkit/JavaScriptCore \
+ $QTDIR/src/3rdparty/webkit/WebCore \
+ $QTDIR/src/3rdparty/wintab \
+ $QTDIR/src/3rdparty/zlib \
+ $QTDIR/doc/src/snippets \
+ $QTDIR/src/3rdparty/phonon/gstreamer \
+ $QTDIR/src/3rdparty/phonon/ds9 \
+ $QTDIR/src/3rdparty/phonon/qt7 \
+ $QTDIR/src/3rdparty/phonon/mmf \
+ $QTDIR/src/3rdparty/phonon/waveout
+
+sources.fileextensions = "*.cpp *.qdoc *.mm"
+examples.fileextensions = "*.cpp *.h *.js *.xq *.svg *.xml *.ui *.qhp *.qhcp"
+examples.imageextensions = "*.png"
+
+exampledirs = $QTDIR/doc/src \
+ $QTDIR/examples \
+ $QTDIR/examples/tutorials \
+ $QTDIR \
+ $QTDIR/qmake/examples \
+ $QTDIR/src/3rdparty/webkit/WebKit/qt/docs
+imagedirs = $QTDIR/doc/src/images \
+ $QTDIR/examples
+outputdir = $QTDIR/doc/html_zh_CN
+tagfile = $QTDIR/doc/html_zh_CN/qt.tags
+base = file:$QTDIR/doc/html_zh_CN
+
+HTML.generatemacrefs = "true"
diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp
index 96af8d6..6c2502d 100644
--- a/tools/qdoc3/tree.cpp
+++ b/tools/qdoc3/tree.cpp
@@ -1914,8 +1914,8 @@ QString Tree::fullDocumentLocation(const Node *node) const
}
else if (node->type() == Node::Fake) {
#ifdef QDOC_QML
- if ((node->subType() == Node::QDeclarativeClass) ||
- (node->subType() == Node::QDeclarativeBasicType))
+ if ((node->subType() == Node::QmlClass) ||
+ (node->subType() == Node::QmlBasicType))
return "qml-" + node->fileBase() + ".html";
else
#endif
diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp
index 9ef02ac..6339813 100644
--- a/tools/qml/main.cpp
+++ b/tools/qml/main.cpp
@@ -324,7 +324,7 @@ int main(int argc, char ** argv)
if (!skin.isEmpty()) {
if (skin == "list") {
foreach (QString s, viewer.builtinSkins())
- qWarning(s.toUtf8());
+ qWarning() << qPrintable(s);
exit(0);
} else {
viewer.setSkin(skin);
diff --git a/tools/qtconfig/mainwindow.cpp b/tools/qtconfig/mainwindow.cpp
index 604b1f4..0de4b43 100644
--- a/tools/qtconfig/mainwindow.cpp
+++ b/tools/qtconfig/mainwindow.cpp
@@ -68,6 +68,8 @@
#ifndef QT_NO_GSTREAMER
#include <gst/gst.h>
+#endif
+#ifdef HAVE_PHONON
#include <phonon/phononnamespace.h>
#endif
@@ -387,8 +389,10 @@ MainWindow::MainWindow()
audiosinkCombo->addItem(tr("aRts"), QLatin1String("artssink"));
audiosinkCombo->setItemData(audiosinkCombo->findText(tr("aRts")),
tr("Experimental aRts support for GStreamer."), Qt::ToolTipRole);
-#ifndef QT_NO_GSTREAMER
+#ifdef HAVE_PHONON
phononVersionLabel->setText(QLatin1String(Phonon::phononVersion()));
+#endif
+#ifndef QT_NO_GSTREAMER
if (gst_init_check(0, 0, 0)) {
gchar *versionString = gst_version_string();
gstversionLabel->setText(QLatin1String(versionString));
diff --git a/tools/qtconfig/qtconfig.pro b/tools/qtconfig/qtconfig.pro
index 8ab3f03..d1fd320 100644
--- a/tools/qtconfig/qtconfig.pro
+++ b/tools/qtconfig/qtconfig.pro
@@ -9,7 +9,10 @@ QT += qt3support
contains(QT_CONFIG, gstreamer):LIBS += $$QT_LIBS_GSTREAMER -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstbase-0.10
contains(QT_CONFIG, gstreamer):QMAKE_CXXFLAGS += $$QT_CFLAGS_GSTREAMER
-contains(QT_CONFIG, gstreamer):QT += phonon
+contains(QT_CONFIG, phonon) {
+ QT += phonon
+ DEFINES += HAVE_PHONON
+}
SOURCES += colorbutton.cpp main.cpp previewframe.cpp previewwidget.cpp mainwindow.cpp paletteeditoradvanced.cpp \
mainwindowbase.cpp paletteeditoradvancedbase.cpp previewwidgetbase.cpp
HEADERS += colorbutton.h previewframe.h previewwidget.h mainwindow.h paletteeditoradvanced.h \
diff --git a/tools/qtestlib/wince/cetest/cetest.pro b/tools/qtestlib/wince/cetest/cetest.pro
index 5cd52cf..6b6b02a 100644
--- a/tools/qtestlib/wince/cetest/cetest.pro
+++ b/tools/qtestlib/wince/cetest/cetest.pro
@@ -18,7 +18,7 @@ DEFINES += QT_BUILD_QMAKE QT_BOOTSTRAPPED QT_NO_CODECS QT_LITE_UNICODE QT
INCLUDEPATH = \
$$QT_SOURCE_TREE/tools/qtestlib/ce/cetest \
$$QT_SOURCE_TREE/qmake \
- $$QT_SOURCE_TREE/qmake/generators/symbian \
+ $$QT_SOURCE_TREE/tools/shared \
$$QT_BUILD_TREE/include \
$$QT_BUILD_TREE/include/QtCore \
$$QT_BUILD_TREE/src/corelib/global
diff --git a/tools/qtestlib/wince/cetest/qmake_include.pri b/tools/qtestlib/wince/cetest/qmake_include.pri
index aa32653..8b415b0 100644
--- a/tools/qtestlib/wince/cetest/qmake_include.pri
+++ b/tools/qtestlib/wince/cetest/qmake_include.pri
@@ -5,5 +5,7 @@ SOURCES += \
$$QT_SOURCE_TREE/qmake/option.cpp \
$$QT_SOURCE_TREE/qmake/project.cpp \
$$QT_SOURCE_TREE/qmake/property.cpp \
- $$QT_SOURCE_TREE/qmake/generators/symbian/initprojectdeploy_symbian.cpp
+ $$QT_SOURCE_TREE/qmake/generators/symbian/initprojectdeploy_symbian.cpp \
+ $$QT_SOURCE_TREE/tools/shared/symbian/epocroot.cpp \
+ $$QT_SOURCE_TREE/tools/shared/windows/registry.cpp
diff --git a/translations/assistant_de.ts b/translations/assistant_de.ts
index b020003..0a0d37f 100644
--- a/translations/assistant_de.ts
+++ b/translations/assistant_de.ts
@@ -4,7 +4,7 @@
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
+ <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+117"/>
<source>&amp;Close</source>
<translation>&amp;Schließen</translation>
</message>
@@ -12,7 +12,7 @@
<context>
<name>AboutLabel</name>
<message>
- <location line="-14"/>
+ <location line="-15"/>
<source>Warning</source>
<translation>Achtung</translation>
</message>
@@ -24,12 +24,79 @@
</translation>
</message>
<message>
- <location line="+1"/>
+ <location line="+0"/>
<source>OK</source>
<translation>OK</translation>
</message>
</context>
<context>
+ <name>Assistant</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+177"/>
+ <source>Error registering documentation file &apos;%1&apos;: %2</source>
+ <translation>Beim Registrieren der Dokumentationsdatei &apos;%1&apos; trat ein Fehler auf: %2</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Error: %1</source>
+ <translation>Fehler: %1</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Could not register documentation file
+%1
+
+Reason:
+%2</source>
+ <translation>Dokumentationsdatei %1 kann nicht registriert werden
+
+Grund:
+%2</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Documentation successfully registered.</source>
+ <translation>Dokumentation erfolgreich registriert.</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Could not unregister documentation file
+%1
+
+Reason:
+%2</source>
+ <translation>Registrierung der Dokumentationsdatei %1 kann nicht aufgehoben werden
+
+Grund:
+%2</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Documentation successfully unregistered.</source>
+ <translation>Dokumentation erfolgreich entfernt.</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Error reading collection file &apos;%1&apos;: %2.</source>
+ <translation>Fehler beim Lesen der Katalogdatei &apos;%1&apos;: %2</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Error creating collection file &apos;%1&apos;: %2.</source>
+ <translation>Fehler beim Erstellen der Katalogdatei &apos;%1&apos;: %2.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Error reading collection file &apos;%1&apos;: %2</source>
+ <translation>Fehler beim Lesen der Katalogdatei &apos;%1&apos;: %2</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Cannot load sqlite database driver!</source>
+ <translation>Der Datenbanktreiber für SQLite kann nicht geladen werden.</translation>
+ </message>
+</context>
+<context>
<name>BookmarkDialog</name>
<message>
<location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/>
@@ -52,39 +119,20 @@
<translation>Neuer Ordner</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+184"/>
- <location line="+18"/>
- <location line="+39"/>
- <location line="+18"/>
- <location line="+30"/>
- <source>Bookmarks</source>
- <translation>Lesezeichen</translation>
- </message>
- <message>
- <location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/>
+ <location/>
<source>+</source>
<translation>+</translation>
</message>
- <message>
- <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="-61"/>
- <source>Delete Folder</source>
- <translation>Ordner löschen</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>Rename Folder</source>
- <translation>Ordner umbenennen</translation>
- </message>
</context>
<context>
<name>BookmarkManager</name>
<message>
- <location line="+435"/>
- <source>Bookmarks</source>
- <translation>Lesezeichen</translation>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+151"/>
+ <source>Untitled</source>
+ <translation>Ohne Titel</translation>
</message>
<message>
- <location line="+37"/>
+ <location line="+65"/>
<source>Remove</source>
<translation>Entfernen</translation>
</message>
@@ -94,26 +142,22 @@
<translation>Wenn Sie diesen Ordner löschen, wird auch&lt;br&gt;dessen kompletter Inhalt gelöscht. Möchten Sie wirklich fortfahren?</translation>
</message>
<message>
- <location line="+143"/>
- <location line="+9"/>
- <source>New Folder</source>
- <translation>Neuer Ordner</translation>
+ <location line="+147"/>
+ <source>Manage Bookmarks...</source>
+ <translation>Lesezeichen verwalten...</translation>
</message>
-</context>
-<context>
- <name>BookmarkWidget</name>
<message>
- <location line="-417"/>
- <source>Filter:</source>
- <translation>Filter:</translation>
+ <location line="+2"/>
+ <source>Add Bookmark...</source>
+ <translation>Lesezeichen hinzufügen ...</translation>
</message>
<message>
- <location line="+33"/>
- <source>Remove</source>
- <translation>Entfernen</translation>
+ <location line="+1"/>
+ <source>Ctrl+D</source>
+ <translation>Ctrl+D</translation>
</message>
<message>
- <location line="-79"/>
+ <location line="+68"/>
<source>Delete Folder</source>
<translation>Ordner löschen</translation>
</message>
@@ -133,7 +177,7 @@
<translation>Lesezeichen in neuem Reiter öffnen</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+2"/>
<source>Delete Bookmark</source>
<translation>Lesezeichen löschen</translation>
</message>
@@ -142,16 +186,11 @@
<source>Rename Bookmark</source>
<translation>Lesezeichen umbenennen</translation>
</message>
- <message>
- <location line="+62"/>
- <source>Add</source>
- <translation>Hinzufügen</translation>
- </message>
</context>
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+239"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+117"/>
<source>Add new page</source>
<translation>Neue Seite hinzufügen</translation>
</message>
@@ -161,18 +200,18 @@
<translation>Aktuelle Seite schließen</translation>
</message>
<message>
- <location line="+312"/>
+ <location line="+287"/>
<source>Print Document</source>
<translation>Drucken</translation>
</message>
<message>
- <location line="+130"/>
+ <location line="+126"/>
<location line="+2"/>
<source>unknown</source>
<translation>unbekannt</translation>
</message>
<message>
- <location line="+93"/>
+ <location line="+100"/>
<source>Add New Page</source>
<translation>Neue Seite hinzufügen</translation>
</message>
@@ -192,15 +231,78 @@
<translation>Lesezeichen für diese Seite hinzufügen ...</translation>
</message>
<message>
- <location line="+235"/>
+ <location line="+264"/>
<source>Search</source>
<translation>Suchen</translation>
</message>
</context>
<context>
+ <name>CmdLineParser</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+137"/>
+ <source>Unknown option: %1</source>
+ <translation>Unbekannte Option: %1</translation>
+ </message>
+ <message>
+ <location line="+87"/>
+ <source>Unknown widget: %1</source>
+ <translation>Unbekanntes Widget-Objekt: %1</translation>
+ </message>
+ <message>
+ <location line="-54"/>
+ <source>The collection file &apos;%1&apos; does not exist.</source>
+ <translation>Die Katalogdatei &apos;%1&apos; existiert nicht.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Missing collection file.</source>
+ <translation>Fehlende Katalogdatei.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Invalid URL &apos;%1&apos;.</source>
+ <translation>Ungültige URL &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Missing URL.</source>
+ <translation>Fehlende URL.</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Missing widget.</source>
+ <translation>Fehlendes Widget-Objekt.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>The Qt help file &apos;%1&apos; does not exist.</source>
+ <translation>Die Hilfedatei &apos;%1&apos; existiert nicht.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Missing help file.</source>
+ <translation>Fehlende Hilfedatei.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Missing filter argument.</source>
+ <translation>Das Filter-Argument fehlt.</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Error</source>
+ <translation>Fehler</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Notice</source>
+ <translation>Hinweis</translation>
+ </message>
+</context>
+<context>
<name>ContentWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+158"/>
+ <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+171"/>
<source>Open Link</source>
<translation>Link öffnen</translation>
</message>
@@ -224,34 +326,6 @@
</message>
</context>
<context>
- <name>FindWidget</name>
- <message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-918"/>
- <source>Previous</source>
- <translation>Zurück</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Next</source>
- <translation>Weiter</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Case Sensitive</source>
- <translation>Groß-/Kleinschreibung beachten</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Whole words</source>
- <translation>Ganze Wörter</translation>
- </message>
- <message>
- <location line="+12"/>
- <source>&lt;img src=&quot;:/trolltech/assistant/images/wrap.png&quot;&gt;&amp;nbsp;Search wrapped</source>
- <translation>&lt;img src=&quot;:/trolltech/assistant/images/wrap.png&quot;&gt;&amp;nbsp;Seitenende</translation>
- </message>
-</context>
-<context>
<name>FontPanel</name>
<message>
<location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
@@ -282,52 +356,25 @@
<context>
<name>HelpViewer</name>
<message>
- <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+489"/>
- <source>Help</source>
- <translation>Hilfe</translation>
- </message>
- <message>
- <location line="+1"/>
- <source>OK</source>
- <translation>OK</translation>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+56"/>
+ <source>&lt;title&gt;about:blank&lt;/title&gt;</source>
+ <translation>&lt;title&gt;about:blank&lt;/title&gt;</translation>
</message>
<message>
- <location line="-62"/>
+ <location line="+6"/>
<source>&lt;title&gt;Error 404...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;The page could not be found&lt;/h1&gt;&lt;br&gt;&lt;h3&gt;&apos;%1&apos;&lt;/h3&gt;&lt;/div&gt;</source>
<translation>&lt;title&gt;Fehler 404 ...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;Die Seite kann nicht gefunden werden.&lt;/h1&gt;&lt;br&gt;&lt;h3&gt;&apos;%1&apos;&lt;/h3&gt;&lt;/div&gt;</translation>
</message>
- <message>
- <location line="+125"/>
- <source>Copy &amp;Link Location</source>
- <translation>&amp;Link-Adresse kopieren</translation>
- </message>
- <message>
- <location line="+3"/>
- <source>Open Link in New Tab Ctrl+LMB</source>
- <translation>Link in neuem Reiter öffnen </translation>
- </message>
- <message>
- <location line="-275"/>
- <source>Open Link in New Tab</source>
- <translation>Link in neuem Reiter öffnen</translation>
- </message>
- <message>
- <location line="+209"/>
- <source>Unable to launch external application.
-</source>
- <translation>Fehler beim Starten der externen Anwendung.
-</translation>
- </message>
</context>
<context>
<name>IndexWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
+ <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+68"/>
<source>&amp;Look for:</source>
<translation>Suchen &amp;nach:</translation>
</message>
<message>
- <location line="+68"/>
+ <location line="+74"/>
<source>Open Link</source>
<translation>Link öffnen</translation>
</message>
@@ -341,29 +388,29 @@
<name>InstallDialog</name>
<message>
<location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
- <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+76"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+78"/>
<source>Install Documentation</source>
<translation>Dokumentation installieren</translation>
</message>
<message>
- <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+30"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+33"/>
<source>Downloading documentation info...</source>
<translation>Dokumentationsinformation herunterladen ...</translation>
</message>
<message>
- <location line="+48"/>
+ <location line="+51"/>
<source>Download canceled.</source>
<translation>Herunterladen abgebrochen.</translation>
</message>
<message>
- <location line="+26"/>
- <location line="+78"/>
+ <location line="+28"/>
+ <location line="+79"/>
<location line="+27"/>
<source>Done.</source>
<translation>Fertig.</translation>
</message>
<message>
- <location line="-90"/>
+ <location line="-91"/>
<source>The file %1 already exists. Do you want to overwrite it?</source>
<translation>Die Datei %1 existiert bereits. Möchten Sie sie überschreiben?</translation>
</message>
@@ -378,14 +425,14 @@
<translation>Herunterladen der Datei %1 ...</translation>
</message>
<message>
- <location line="+19"/>
+ <location line="+20"/>
<location line="+42"/>
- <location line="+38"/>
+ <location line="+40"/>
<source>Download failed: %1.</source>
<translation>Herunterladen fehlgeschlagen: %1.</translation>
</message>
<message>
- <location line="-70"/>
+ <location line="-72"/>
<source>Documentation info file is corrupt!</source>
<translation>Die Dokumentationsdatei ist beschädigt.</translation>
</message>
@@ -400,7 +447,7 @@
<translation>Dokumentation %1 installieren ...</translation>
</message>
<message>
- <location line="+22"/>
+ <location line="+23"/>
<source>Error while installing documentation:
%1</source>
<translation>Fehler bei der Installation von:
@@ -440,20 +487,20 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+110"/>
- <location line="+383"/>
+ <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+123"/>
+ <location line="+366"/>
<source>Index</source>
<translation>Index</translation>
</message>
<message>
- <location line="-377"/>
- <location line="+375"/>
+ <location line="-360"/>
+ <location line="+358"/>
<source>Contents</source>
<translation>Inhalt</translation>
</message>
<message>
- <location line="-370"/>
- <location line="+374"/>
+ <location line="-351"/>
+ <location line="+355"/>
<source>Bookmarks</source>
<translation>Lesezeichen</translation>
</message>
@@ -463,20 +510,14 @@
<translation>Suchen</translation>
</message>
<message>
- <location line="-364"/>
- <location line="+207"/>
- <location line="+514"/>
+ <location line="-335"/>
+ <location line="+672"/>
+ <location line="+284"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
<message>
- <location line="-546"/>
- <location line="+5"/>
- <source>Unfiltered</source>
- <translation>Ohne Filter</translation>
- </message>
- <message>
- <location line="+107"/>
+ <location line="-702"/>
<source>Page Set&amp;up...</source>
<translation>S&amp;eite einrichten ...</translation>
</message>
@@ -506,7 +547,12 @@
<translation>&amp;Beenden</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+3"/>
+ <source>CTRL+Q</source>
+ <translation>CTRL+Q</translation>
+ </message>
+ <message>
+ <location line="+6"/>
<source>&amp;Copy selected Text</source>
<translation>Ausgewählten Text &amp;kopieren</translation>
</message>
@@ -616,12 +662,12 @@
<translation>Ctrl+Alt+Left</translation>
</message>
<message>
- <location line="+4"/>
- <source>Add Bookmark...</source>
- <translation>Lesezeichen hinzufügen ...</translation>
+ <location line="+591"/>
+ <source>Could not register file &apos;%1&apos;: %2</source>
+ <translation>Die Datei &apos;%1&apos; konnte nicht registriert werden: %2</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="-584"/>
<source>About...</source>
<translation>Ãœber ...</translation>
</message>
@@ -631,12 +677,12 @@
<translation>Navigationsleiste</translation>
</message>
<message>
- <location line="+76"/>
+ <location line="+69"/>
<source>Toolbars</source>
<translation>Werkzeugleisten</translation>
</message>
<message>
- <location line="+15"/>
+ <location line="+16"/>
<source>Filter Toolbar</source>
<translation>Filterleiste</translation>
</message>
@@ -646,7 +692,7 @@
<translation>Filter:</translation>
</message>
<message>
- <location line="+25"/>
+ <location line="+26"/>
<source>Address Toolbar</source>
<translation>Adressleiste</translation>
</message>
@@ -656,27 +702,27 @@
<translation>Adresse:</translation>
</message>
<message>
- <location line="+114"/>
+ <location line="+112"/>
<source>Could not find the associated content item.</source>
<translation>Der zugehörige Inhaltseintrag konnte nicht gefunden werden.</translation>
</message>
<message>
- <location line="+71"/>
+ <location line="+60"/>
<source>About %1</source>
<translation>Ãœber %1</translation>
</message>
<message>
- <location line="+114"/>
+ <location line="+175"/>
<source>Updating search index</source>
<translation>Suchindex wird aufgebaut</translation>
</message>
<message>
- <location line="-640"/>
+ <location line="-661"/>
<source>Looking for Qt Documentation...</source>
<translation>Suche nach Qt-Dokumentation ...</translation>
</message>
<message>
- <location line="+241"/>
+ <location line="+219"/>
<source>&amp;Window</source>
<translation>&amp;Fenster</translation>
</message>
@@ -696,12 +742,12 @@
<translation>Zoom</translation>
</message>
<message>
- <location line="-159"/>
+ <location line="-161"/>
<source>&amp;File</source>
<translation>&amp;Datei</translation>
</message>
<message>
- <location line="+25"/>
+ <location line="+29"/>
<source>&amp;Edit</source>
<translation>&amp;Bearbeiten</translation>
</message>
@@ -721,41 +767,36 @@
<translation>ALT+Home</translation>
</message>
<message>
- <location line="+29"/>
+ <location line="+30"/>
<source>&amp;Bookmarks</source>
<translation>&amp;Lesezeichen</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+2"/>
<source>&amp;Help</source>
<translation>&amp;Hilfe</translation>
</message>
<message>
- <location line="-40"/>
+ <location line="-38"/>
<source>ALT+O</source>
<translation>ALT+O</translation>
</message>
- <message>
- <location line="+38"/>
- <source>CTRL+D</source>
- <translation>CTRL+D</translation>
- </message>
</context>
<context>
<name>PreferencesDialog</name>
<message>
- <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+259"/>
- <location line="+43"/>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+252"/>
+ <location line="+44"/>
<source>Add Documentation</source>
<translation>Dokumentation hinzufügen</translation>
</message>
<message>
- <location line="-43"/>
+ <location line="-44"/>
<source>Qt Compressed Help Files (*.qch)</source>
<translation>Komprimierte Hilfedateien (*.qch)</translation>
</message>
<message>
- <location line="+37"/>
+ <location line="+38"/>
<source>The specified file is not a valid Qt Help File!</source>
<translation>Die angegebene Datei ist keine Qt-Hilfedatei.</translation>
</message>
@@ -765,7 +806,7 @@
<translation>Der Namespace %1 ist bereits registriert.</translation>
</message>
<message>
- <location line="+31"/>
+ <location line="+32"/>
<source>Remove Documentation</source>
<translation>Dokumentation entfernen</translation>
</message>
@@ -785,7 +826,7 @@
<translation>OK</translation>
</message>
<message>
- <location line="+88"/>
+ <location line="+83"/>
<source>Use custom settings</source>
<translation>Benutzerdefinierte Einstellungen verwenden</translation>
</message>
@@ -909,118 +950,9 @@
</message>
</context>
<context>
- <name>QObject</name>
- <message>
- <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+112"/>
- <source>The specified collection file does not exist!</source>
- <translation>Die angegebene Katalogdatei (collection file) kann nicht gefunden werden.</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Missing collection file!</source>
- <translation>Fehlende Katalogdatei.</translation>
- </message>
- <message>
- <location line="+9"/>
- <source>Invalid URL!</source>
- <translation>Ungültige URL.</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Missing URL!</source>
- <translation>Fehlende URL.</translation>
- </message>
- <message>
- <location line="+17"/>
- <location line="+19"/>
- <location line="+19"/>
- <source>Unknown widget: %1</source>
- <translation>Unbekanntes Objekt: %1</translation>
- </message>
- <message>
- <location line="-34"/>
- <location line="+19"/>
- <location line="+19"/>
- <source>Missing widget!</source>
- <translation>Fehlendes Objekt.</translation>
- </message>
- <message>
- <location line="+7"/>
- <location line="+12"/>
- <source>The specified Qt help file does not exist!</source>
- <translation>Die angegebene Hilfedatei kann nicht gefunden werden.</translation>
- </message>
- <message>
- <location line="-7"/>
- <location line="+12"/>
- <source>Missing help file!</source>
- <translation>Fehlende Hilfedatei.</translation>
- </message>
- <message>
- <location line="+7"/>
- <source>Missing filter argument!</source>
- <translation>Das Filter-Argument fehlt.</translation>
- </message>
- <message>
- <location line="+12"/>
- <source>Unknown option: %1</source>
- <translation>Unbekannte Option: %1</translation>
- </message>
- <message>
- <location line="+30"/>
- <location line="+2"/>
- <source>Qt Assistant</source>
- <translation>Qt Assistant</translation>
- </message>
- <message>
- <location filename="../tools/assistant/tools/assistant/main.cpp" line="+225"/>
- <source>Could not register documentation file
-%1
-
-Reason:
-%2</source>
- <translation>Dokumentationsdatei %1 kann nicht registriert werden
-
-Grund:
-%2</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>Documentation successfully registered.</source>
- <translation>Dokumentation erfolgreich registriert.</translation>
- </message>
- <message>
- <location line="+11"/>
- <source>Could not unregister documentation file
-%1
-
-Reason:
-%2</source>
- <translation>Registrierung der Dokumentationsdatei %1 kann nicht aufgehoben werden
-
-Grund:
-%2</translation>
- </message>
- <message>
- <location line="-3"/>
- <source>Documentation successfully unregistered.</source>
- <translation>Dokumentation erfolgreich entfernt.</translation>
- </message>
- <message>
- <location line="+40"/>
- <source>Cannot load sqlite database driver!</source>
- <translation>Der Datenbanktreiber für SQLite kann nicht geladen werden.</translation>
- </message>
- <message>
- <location line="+9"/>
- <source>The specified collection file could not be read!</source>
- <translation>Die angegebene Katalogdatei (collection file) kann nicht gelesen werden.</translation>
- </message>
-</context>
-<context>
<name>RemoteControl</name>
<message>
- <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+163"/>
+ <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+165"/>
<source>Debugging Remote Control</source>
<translation>Debugging Remote Control</translation>
</message>
@@ -1033,7 +965,7 @@ Grund:
<context>
<name>SearchWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+196"/>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+210"/>
<source>&amp;Copy</source>
<translation>&amp;Kopieren</translation>
</message>
@@ -1056,7 +988,7 @@ Grund:
<context>
<name>TopicChooser</name>
<message>
- <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+53"/>
<source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;:</source>
<translation>Wählen Sie ein Thema für &lt;b&gt;%1&lt;/b&gt;:</translation>
</message>
diff --git a/translations/designer_de.ts b/translations/designer_de.ts
index 8c1ba68..475a5d5 100644
--- a/translations/designer_de.ts
+++ b/translations/designer_de.ts
@@ -506,7 +506,7 @@
<translation>Werkzeugleiste löschen</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1195"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1194"/>
<source>Set action text</source>
<translation>Text der Aktion setzen</translation>
</message>
@@ -621,7 +621,7 @@
<translation>Skript ändern</translation>
</message>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1213"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1225"/>
<source>Changed &apos;%1&apos; of &apos;%2&apos;</source>
<translation>&apos;%1&apos; von &apos;%2&apos; geändert</translation>
</message>
@@ -635,7 +635,7 @@
</translation>
</message>
<message>
- <location line="+76"/>
+ <location line="+84"/>
<source>Reset &apos;%1&apos; of &apos;%2&apos;</source>
<translation>&apos;%1&apos; von &apos;%2&apos; zurücksetzen</translation>
</message>
@@ -1109,7 +1109,7 @@
<context>
<name>FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1701"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1754"/>
<source>Unexpected element &lt;%1&gt;</source>
<translation>Ungültiges Element &lt;%1&gt;</translation>
</message>
@@ -1985,7 +1985,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<context>
<name>QDesignerMenu</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1181"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1179"/>
<source>Type Here</source>
<translation>Geben Sie Text ein</translation>
</message>
@@ -2011,7 +2011,7 @@ Möchten Sie es noch einmal versuchen?</translation>
</message>
<message>
<location line="+27"/>
- <location line="+650"/>
+ <location line="+648"/>
<source>Add separator</source>
<translation>Trenner hinzufügen</translation>
</message>
@@ -2085,7 +2085,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<context>
<name>QDesignerPropertySheet</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+754"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+755"/>
<source>Dynamic Properties</source>
<translation>Dynamische Eigenschaften</translation>
</message>
@@ -2456,7 +2456,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtBoolEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+247"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+255"/>
<location line="+10"/>
<location line="+25"/>
<source>True</source>
@@ -2472,7 +2472,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtBoolPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1469"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1507"/>
<source>True</source>
<translation>Wahr</translation>
</message>
@@ -2501,7 +2501,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtColorPropertyManager</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4750"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4718"/>
<source>Red</source>
<translation>Rot</translation>
</message>
@@ -2524,7 +2524,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtCursorDatabase</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-226"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-234"/>
<source>Arrow</source>
<translation>Pfeil</translation>
</message>
@@ -3080,7 +3080,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<context>
<name>QtKeySequenceEdit</name>
<message>
- <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+241"/>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+249"/>
<source>Clear Shortcut</source>
<translation>Tastenkürzel löschen</translation>
</message>
@@ -3522,7 +3522,7 @@ Dies kann zum Beispiel eine Sprachkennung wie &quot;_de&quot; sein.</translation
<context>
<name>QtResourceViewDialog</name>
<message>
- <location line="+250"/>
+ <location line="+252"/>
<source>Select Resource</source>
<translation>Ressource auswählen</translation>
</message>
@@ -4034,7 +4034,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::ActionModel</name>
<message>
- <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+95"/>
+ <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+89"/>
<source>Name</source>
<translation>Name</translation>
</message>
@@ -4727,7 +4727,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::FormWindow</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1267"/>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1322"/>
<source>Edit contents</source>
<translation>Ändern</translation>
</message>
@@ -4737,34 +4737,33 @@ Möchten Sie sie überschreiben?</translation>
<translation>F2</translation>
</message>
<message>
- <location line="+841"/>
+ <location line="+840"/>
<source>Resize</source>
<translation>Größe ändern</translation>
</message>
<message>
- <location line="+218"/>
- <location line="+15"/>
+ <location line="+248"/>
<source>Key Move</source>
<translation>Verschieben mittels Tastatur</translation>
</message>
<message>
- <location line="+276"/>
+ <location line="+317"/>
<source>Paste error</source>
<translation>Fehler beim Einfügen</translation>
</message>
<message>
- <location line="+450"/>
+ <location line="+448"/>
<source>Lay out</source>
<translation>Layout</translation>
</message>
<message>
- <location line="+493"/>
+ <location line="+485"/>
<location line="+55"/>
<source>Drop widget</source>
<translation>Widget einfügen</translation>
</message>
<message numerus="yes">
- <location line="-1063"/>
+ <location line="-1053"/>
<source>Paste %n action(s)</source>
<translation>
<numerusform>Eine Aktion einfügen</numerusform>
@@ -4772,12 +4771,17 @@ Möchten Sie sie überschreiben?</translation>
</translation>
</message>
<message>
- <location line="-511"/>
+ <location line="-565"/>
<source>Insert widget &apos;%1&apos;</source>
<translation>Widget &apos;%1&apos; einfügen</translation>
</message>
+ <message>
+ <location line="+313"/>
+ <source>Key Resize</source>
+ <translation>Größe ändern mittels Tastatur</translation>
+ </message>
<message numerus="yes">
- <location line="+513"/>
+ <location line="+254"/>
<source>Paste %n widget(s)</source>
<translation>
<numerusform>Widget einfügen</numerusform>
@@ -4800,17 +4804,17 @@ Möchten Sie sie überschreiben?</translation>
<translation>Bitte lösen Sie das Layout des gewünschten Containers auf und wählen Sie ihn erneut aus, um die Widgets einzufügen.</translation>
</message>
<message>
- <location line="+408"/>
+ <location line="+406"/>
<source>Select Ancestor</source>
<translation>Übergeordnetes Widget auswählen</translation>
</message>
<message>
- <location line="+581"/>
+ <location line="+573"/>
<source>A QMainWindow-based form does not contain a central widget.</source>
<translation>Ein auf QMainWindow basierendes Formular enthält kein zentrales Widget.</translation>
</message>
<message>
- <location line="-802"/>
+ <location line="-794"/>
<source>Raise widgets</source>
<translation>Widgets nach vorn bringen</translation>
</message>
diff --git a/translations/linguist_de.ts b/translations/linguist_de.ts
index 101aa5b..14095ba 100644
--- a/translations/linguist_de.ts
+++ b/translations/linguist_de.ts
@@ -4,7 +4,7 @@
<context>
<name>AboutDialog</name>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1358"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1366"/>
<source>Qt Linguist</source>
<translation>Qt Linguist</translation>
</message>
@@ -286,7 +286,7 @@ Es wird mit einer einfachen Universalform gearbeitet.</translation>
<context>
<name>FormMultiWidget</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditorwidgets.cpp" line="+296"/>
+ <location filename="../tools/linguist/linguist/messageeditorwidgets.cpp" line="+302"/>
<source>Alt+Delete</source>
<extracomment>translate, but don&apos;t change</extracomment>
<translation>Alt+Delete</translation>
@@ -317,7 +317,7 @@ Es wird mit einer einfachen Universalform gearbeitet.</translation>
<context>
<name>LRelease</name>
<message numerus="yes">
- <location filename="../tools/linguist/shared/qm.cpp" line="+761"/>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+763"/>
<source>Dropped %n message(s) which had no ID.</source>
<translation>
<numerusform>Es wurde ein Eintrag ohne Bezeichner gelöscht.</numerusform>
@@ -862,11 +862,6 @@ Es wird mit einer einfachen Universalform gearbeitet.</translation>
</message>
<message>
<location/>
- <source>Display information about the Qt toolkit by Trolltech.</source>
- <translation>Informationen über das Qt-Toolkit von Trolltech anzeigen.</translation>
- </message>
- <message>
- <location/>
<source>&amp;What&apos;s This?</source>
<translation>&amp;Direkthilfe</translation>
</message>
@@ -914,13 +909,13 @@ Es wird mit einer einfachen Universalform gearbeitet.</translation>
<translation>Freigeben unter ...</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-2005"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-2013"/>
<source></source>
<comment>This is the application&apos;s main window.</comment>
<translation></translation>
</message>
<message>
- <location line="+188"/>
+ <location line="+190"/>
<source>Source text</source>
<translation>Ursprungstext</translation>
</message>
@@ -947,12 +942,12 @@ Es wird mit einer einfachen Universalform gearbeitet.</translation>
<translation>Dieser Bereich zeigt die Kontexte an.</translation>
</message>
<message>
- <location line="+15"/>
+ <location line="+13"/>
<source>Strings</source>
<translation>Zeichenketten</translation>
</message>
<message>
- <location line="+39"/>
+ <location line="+37"/>
<source>Phrases and guesses</source>
<translation>Wörterbuch und Vorschläge</translation>
</message>
@@ -973,7 +968,7 @@ Es wird mit einer einfachen Universalform gearbeitet.</translation>
<translation>Geändert</translation>
</message>
<message>
- <location line="+130"/>
+ <location line="+139"/>
<source>Loading...</source>
<translation>Lade ...</translation>
</message>
@@ -1010,7 +1005,7 @@ Soll die erstgenannte Datei übersprungen werden?</translation>
</translation>
</message>
<message>
- <location line="+93"/>
+ <location line="+94"/>
<source>Related files (%1);;</source>
<translation>Verwandte Dateien (%1);;</translation>
</message>
@@ -1390,7 +1385,7 @@ Alle Dateien (*)</translation>
<translation>Möchten Sie das Wörterbuch &apos;%1&apos; speichern?</translation>
</message>
<message>
- <location line="+323"/>
+ <location line="+349"/>
<source>All</source>
<translation>Alle</translation>
</message>
@@ -1411,7 +1406,7 @@ Alle Dateien (*)</translation>
</message>
<message>
<location/>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-536"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-562"/>
<source>Translation File &amp;Settings...</source>
<translation>E&amp;instellungen ...</translation>
</message>
@@ -1495,6 +1490,11 @@ Alle Dateien (*)</translation>
<source>Length Variants</source>
<translation>Längenvarianten</translation>
</message>
+ <message>
+ <location/>
+ <source>Display information about the Qt toolkit by Nokia.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MessageEditor</name>
@@ -1535,12 +1535,12 @@ Alle Dateien (*)</translation>
<translation>Chinesisch</translation>
</message>
<message>
- <location line="+53"/>
+ <location line="+47"/>
<source>This whole panel allows you to view and edit the translation of some source text.</source>
<translation>Dieser Bereich erlaubt die Darstellung und Änderung der Übersetzung eines Textes.</translation>
</message>
<message>
- <location line="+18"/>
+ <location line="+10"/>
<source>Source text</source>
<translation>Ursprungstext</translation>
</message>
@@ -1575,7 +1575,7 @@ Alle Dateien (*)</translation>
<translation>Hier können Sie Hinweise für den eigenen Gebrauch eintragen. Diese haben keinen Einflusse auf die Übersetzung.</translation>
</message>
<message>
- <location line="+232"/>
+ <location line="+234"/>
<source>%1 translation (%2)</source>
<translation>Ãœbersetzung %1 (%2)</translation>
</message>
@@ -1605,7 +1605,7 @@ Zeile: %2</translation>
<context>
<name>MessageModel</name>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+839"/>
<source>Completion status for %1</source>
<translation>Bearbeitungsstand von %1</translation>
</message>
@@ -1628,7 +1628,7 @@ Zeile: %2</translation>
<context>
<name>MsgEdit</name>
<message>
- <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-614"/>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-602"/>
<source></source>
<comment>This is the right panel of the main window.</comment>
<translation></translation>
@@ -1807,7 +1807,7 @@ Zeile: %2</translation>
<translation>Alle Dateien (*)</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1127"/>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1134"/>
<location line="+27"/>
<location line="+67"/>
<location line="+39"/>
@@ -1843,7 +1843,7 @@ Zeile: %2</translation>
<translation>XLIFF-Ãœbersetzungsdateien</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/qph.cpp" line="+183"/>
+ <location filename="../tools/linguist/shared/qph.cpp" line="+195"/>
<source>Qt Linguist &apos;Phrase Book&apos;</source>
<translation>Qt-Linguist-Wörterbuch</translation>
</message>
@@ -1985,12 +1985,12 @@ Zeile: %2</translation>
<context>
<name>TranslationSettingsDialog</name>
<message>
- <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/>
+ <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+93"/>
<source>Any Country</source>
<translation>Land</translation>
</message>
<message>
- <location line="+11"/>
+ <location line="-22"/>
<location line="+8"/>
<source>Settings for &apos;%1&apos; - Qt Linguist</source>
<translation>Einstellungen für &apos;%1&apos; - Qt Linguist</translation>
diff --git a/translations/qt_de.ts b/translations/qt_de.ts
index 6447451..f02a7bb 100644
--- a/translations/qt_de.ts
+++ b/translations/qt_de.ts
@@ -4,7 +4,7 @@
<context>
<name>CloseButton</name>
<message>
- <location filename="../src/gui/widgets/qtabbar.cpp" line="+2264"/>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2266"/>
<source>Close Tab</source>
<translation>Schließen</translation>
</message>
@@ -372,6 +372,7 @@ Bitte überprüfen Sie Ihre GStreamer-Installation und stellen Sie sicher, dass
<message>
<location line="+6"/>
<source>Decay time (ms)</source>
+ <extracomment>DecayTime: Time over which reverberation is diminished.</extracomment>
<translation>Abklingzeit (ms)</translation>
</message>
<message>
@@ -548,7 +549,7 @@ Bitte überprüfen Sie Ihre GStreamer-Installation und stellen Sie sicher, dass
<context>
<name>Q3FileDialog</name>
<message>
- <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+827"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+835"/>
<source>Copy or Move a File</source>
<translation>Datei kopieren oder verschieben</translation>
</message>
@@ -1212,7 +1213,7 @@ nach
<translation>Diese Socket-Operation wird nicht unterstützt</translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+585"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+586"/>
<location filename="../src/network/socket/qabstractsocket.cpp" line="+200"/>
<source>Socket operation timed out</source>
<translation>Das Zeitlimit für die Operation wurde überschritten</translation>
@@ -1257,7 +1258,7 @@ nach
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2287"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2309"/>
<source>QT_LAYOUT_DIRECTION</source>
<comment>Translate this string to the string &apos;LTR&apos; in left-to-right languages or to &apos;RTL&apos; in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</comment>
<translation>LTR</translation>
@@ -1327,7 +1328,7 @@ nach
<context>
<name>QColorDialog</name>
<message>
- <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1356"/>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1355"/>
<source>Hu&amp;e:</source>
<translation>Farb&amp;ton:</translation>
</message>
@@ -1367,7 +1368,7 @@ nach
<translation>Farbauswahl</translation>
</message>
<message>
- <location line="+184"/>
+ <location line="+183"/>
<source>&amp;Basic colors</source>
<translation>Grundfar&amp;ben</translation>
</message>
@@ -1567,7 +1568,7 @@ nach
<message>
<location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1876"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+650"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+648"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -1818,7 +1819,7 @@ nach
<context>
<name>QFileDialog</name>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+558"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+557"/>
<location line="+471"/>
<source>All Files (*)</source>
<translation>Alle Dateien (*)</translation>
@@ -1906,7 +1907,7 @@ nach
<translation>Verzeichnisse</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+174"/>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+148"/>
<source>All Files (*.*)</source>
<translation>Alle Dateien (*.*)</translation>
</message>
@@ -2059,7 +2060,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QFileSystemModel</name>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+744"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+740"/>
<location filename="../src/gui/itemviews/qdirmodel.cpp" line="+476"/>
<source>%1 TB</source>
<translation>%1 TB</translation>
@@ -2088,7 +2089,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>%1 Byte</translation>
</message>
<message>
- <location line="+77"/>
+ <location line="+89"/>
<source>Invalid filename</source>
<translation>Ungültiger Dateiname</translation>
</message>
@@ -2125,7 +2126,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Änderungsdatum</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+258"/>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+261"/>
<source>My Computer</source>
<translation>Mein Computer</translation>
</message>
@@ -2558,17 +2559,30 @@ Möchten Sie die Datei trotzdem löschen?</translation>
</message>
</context>
<context>
+ <name>QGstreamerPlayerSession</name>
+ <message>
+ <location filename="../src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp" line="+270"/>
+ <source>Unable to play %1</source>
+ <translation>%1 kann nicht abgespielt werden</translation>
+ </message>
+</context>
+<context>
<name>QHostInfo</name>
<message>
<location filename="../src/network/kernel/qhostinfo_p.h" line="+101"/>
<source>Unknown error</source>
<translation>Unbekannter Fehler</translation>
</message>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+168"/>
+ <source>No host name given</source>
+ <translation>Es wurde kein Hostname angegeben</translation>
+ </message>
</context>
<context>
<name>QHostInfoAgent</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+257"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+259"/>
<location line="+32"/>
<location filename="../src/network/kernel/qhostinfo_win.cpp" line="+216"/>
<location line="+27"/>
@@ -2591,12 +2605,14 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Unbekannter Fehler</translation>
</message>
<message>
+ <location line="-98"/>
<location filename="../src/network/kernel/qhostinfo_win.cpp" line="-67"/>
<source>No host name given</source>
<translation>Es wurde kein Hostname angegeben</translation>
</message>
<message>
- <location line="+0"/>
+ <location line="+1"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+0"/>
<source>Invalid hostname</source>
<translation>Ungültiger Rechnername</translation>
</message>
@@ -2919,7 +2935,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+2096"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+2094"/>
<source>Permission denied</source>
<translation>Zugriff verweigert</translation>
</message>
@@ -3003,7 +3019,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Operation unmap fehlgeschlagen für &apos;%1&apos;: %2</translation>
</message>
<message>
- <location line="+345"/>
+ <location line="+361"/>
<source>The plugin &apos;%1&apos; uses incompatible Qt library. (%2.%3.%4) [%5]</source>
<translation>Das Plugin &apos;%1&apos; verwendet eine inkompatible Qt-Bibliothek. (%2.%3.%4) [%5]</translation>
</message>
@@ -3055,7 +3071,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2112"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2104"/>
<source>Select All</source>
<translation>Alles auswählen</translation>
</message>
@@ -3132,7 +3148,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
<location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
- <location line="+45"/>
+ <location line="+59"/>
<source>%1: Invalid name</source>
<translation>%1: Ungültiger Name</translation>
</message>
@@ -3163,7 +3179,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="-50"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="-64"/>
<source>%1: Connection error</source>
<translation>%1: Verbindungsfehler</translation>
</message>
@@ -3376,6 +3392,39 @@ Möchten Sie die Datei trotzdem löschen?</translation>
</message>
</context>
<context>
+ <name>QMediaPlayer</name>
+ <message>
+ <location filename="../src/multimedia/playback/qmediaplayer.cpp" line="+471"/>
+ <source>The QMediaPlayer object does not have a valid service</source>
+ <translation>Das QMediaPlayer-Objekt verfügt über keinen gültigen Dienst</translation>
+ </message>
+</context>
+<context>
+ <name>QMediaPlaylist</name>
+ <message>
+ <location filename="../src/multimedia/base/qmediaplaylist.cpp" line="+454"/>
+ <location line="+46"/>
+ <source>Could not add items to read only playlist.</source>
+ <translation>Es konnten keine Einträge zur Wiedergabeliste hinzugefügt werden, da sie schreibgeschützt ist.</translation>
+ </message>
+ <message>
+ <location line="-27"/>
+ <location line="+46"/>
+ <source>Playlist format is not supported</source>
+ <translation>Das Format der Wiedergabeliste ist nicht unterstützt</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>The file could not be accessed.</source>
+ <translation>Auf die Datei konnte nicht zugegriffen werden.</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>Playlist format is not supported.</source>
+ <translation>Das Format der Wiedergabeliste ist nicht unterstützt.</translation>
+ </message>
+</context>
+<context>
<name>QMenu</name>
<message>
<location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
@@ -3470,7 +3519,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QNativeSocketEngine</name>
<message>
- <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+209"/>
<source>The remote host closed the connection</source>
<translation>Der entfernte Rechner hat die Verbindung geschlossen</translation>
</message>
@@ -3609,12 +3658,35 @@ Möchten Sie die Datei trotzdem löschen?</translation>
</message>
</context>
<context>
+ <name>QNetworkAccessDataBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+76"/>
+ <source>Operation not supported on %1</source>
+ <translation>Diese Operation wird von %1 nicht unterstützt</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Invalid URI: %1</source>
+ <translation>Ungültiger URI: %1</translation>
+ </message>
+</context>
+<context>
<name>QNetworkAccessDebugPipeBackend</name>
<message>
<location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+195"/>
<source>Write error writing to %1: %2</source>
<translation>Fehler beim Schreiben zu %1: %2</translation>
</message>
+ <message>
+ <location line="+60"/>
+ <source>Socket error on %1: %2</source>
+ <translation>Socket-Fehler bei %1: %2</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Remote host closed the connection prematurely on %1</source>
+ <translation>Der entfernte Rechner hat die Verbindung zu %1 vorzeitig beendet</translation>
+ </message>
</context>
<context>
<name>QNetworkAccessFileBackend</name>
@@ -3678,37 +3750,106 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QNetworkAccessHttpBackend</name>
<message>
- <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+599"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+645"/>
<source>No suitable proxy found</source>
<translation>Es konnte kein geeigneter Proxy-Server gefunden werden</translation>
</message>
</context>
<context>
+ <name>QNetworkAccessManager</name>
+ <message>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+862"/>
+ <source>Network access is disabled.</source>
+ <translation>Der Zugriff auf das Netzwerk ist nicht gestattet.</translation>
+ </message>
+</context>
+<context>
<name>QNetworkReply</name>
<message>
- <location line="+101"/>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+101"/>
<source>Error downloading %1 - server replied: %2</source>
<translation>Beim Herunterladen von %1 trat ein Fehler auf - Die Antwort des Servers ist: %2</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+80"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="-780"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation>Das Protokoll &quot;%1&quot; ist unbekannt</translation>
</message>
+ <message>
+ <location line="+486"/>
+ <source>Temporary network failure.</source>
+ <translation>Das Netzwerk ist zur Zeit ausgefallen.</translation>
+ </message>
</context>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+525"/>
+ <location line="+110"/>
<location line="+28"/>
<source>Operation canceled</source>
<translation>Operation abgebrochen</translation>
</message>
</context>
<context>
+ <name>QNetworkSession</name>
+ <message>
+ <location filename="../src/network/bearer/qnetworksession.cpp" line="+437"/>
+ <source>Invalid configuration.</source>
+ <translation>Ungültige Konfiguration.</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkSessionPrivateImpl</name>
+ <message>
+ <location filename="../src/plugins/bearer/qnetworksession_impl.cpp" line="+247"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+213"/>
+ <source>Unknown session error.</source>
+ <translation>Unbekannter Fehler bei Netzwerkverbindung.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>The session was aborted by the user or system.</source>
+ <translation>Die Verbindung wurde vom Nutzer oder vom Betriebssystem unterbrochen.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>The requested operation is not supported by the system.</source>
+ <translation>Die angeforderte Operation wird vom System nicht unterstützt.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>The specified configuration cannot be used.</source>
+ <translation>Die angegebene Konfiguration kann nicht verwendet werden.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+2"/>
+ <source>Roaming was aborted or is not possible.</source>
+ <translation>Das Roaming wurde abgebrochen oder ist hier nicht möglich.</translation>
+ </message>
+ <message>
+ <location filename="../src/plugins/bearer/icd/qnetworksession_impl.cpp" line="+1083"/>
+ <source>Roaming error</source>
+ <translation>Fehler beim Roaming</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Session aborted by user or system</source>
+ <translation>Die Verbindung wurde vom Nutzer oder vom Betriebssystem unterbrochen</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Unidentified Error</source>
+ <translation>Unbekannter Fehler</translation>
+ </message>
+</context>
+<context>
<name>QOCIDriver</name>
<message>
- <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2083"/>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2082"/>
<source>Unable to logon</source>
<translation>Logon-Vorgang fehlgeschlagen</translation>
</message>
@@ -3782,12 +3923,12 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1806"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1791"/>
<source>Unable to connect</source>
<translation>Es kann keine Verbindung aufgebaut werden</translation>
</message>
<message>
- <location line="+238"/>
+ <location line="+233"/>
<source>Unable to disable autocommit</source>
<translation>&apos;autocommit&apos; konnte nicht deaktiviert werden</translation>
</message>
@@ -3807,7 +3948,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>&apos;autocommit&apos; konnte nicht aktiviert werden</translation>
</message>
<message>
- <location line="-281"/>
+ <location line="-276"/>
<source>Unable to connect - Driver doesn&apos;t support all functionality required</source>
<translation>Es kann keine Verbindung aufgebaut werden weil der Treiber die benötigte Funktionalität nicht vollständig unterstützt</translation>
</message>
@@ -3815,19 +3956,19 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QODBCResult</name>
<message>
- <location line="-937"/>
+ <location line="-935"/>
<location line="+351"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation>QODBCResult::reset: &apos;SQL_CURSOR_STATIC&apos; konnte nicht als Attribut des Befehls gesetzt werden. Bitte prüfen Sie die Konfiguration Ihres ODBC-Treibers</translation>
</message>
<message>
<location line="-334"/>
- <location line="+628"/>
+ <location line="+626"/>
<source>Unable to execute statement</source>
<translation>Der Befehl konnte nicht ausgeführt werden</translation>
</message>
<message>
- <location line="-547"/>
+ <location line="-545"/>
<source>Unable to fetch next</source>
<translation>Der nächste Datensatz konnte nicht abgeholt werden</translation>
</message>
@@ -3837,19 +3978,19 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Der Befehl konnte nicht initialisiert werden</translation>
</message>
<message>
- <location line="+268"/>
+ <location line="+266"/>
<source>Unable to bind variable</source>
<translation>Die Variable konnte nicht gebunden werden</translation>
</message>
<message>
<location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+189"/>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-467"/>
- <location line="+576"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-465"/>
+ <location line="+574"/>
<source>Unable to fetch last</source>
<translation>Der letzte Datensatz konnte nicht abgeholt werden</translation>
</message>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-670"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-668"/>
<source>Unable to fetch</source>
<translation>Es konnten keine Daten abgeholt werden</translation>
</message>
@@ -3867,41 +4008,15 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="-97"/>
- <source>Invalid hostname</source>
- <translation>Ungültiger Rechnername</translation>
- </message>
- <message>
- <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
- <source>Operation not supported on %1</source>
- <translation>Diese Operation wird von %1 nicht unterstützt</translation>
- </message>
- <message>
- <location line="+57"/>
- <source>Invalid URI: %1</source>
- <translation>Ungültiger URI: %1</translation>
- </message>
- <message>
- <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+60"/>
- <source>Socket error on %1: %2</source>
- <translation>Socket-Fehler bei %1: %2</translation>
- </message>
- <message>
- <location line="+15"/>
- <source>Remote host closed the connection prematurely on %1</source>
- <translation>Der entfernte Rechner hat die Verbindung zu %1 vorzeitig beendet</translation>
- </message>
- <message>
- <location filename="../src/network/kernel/qhostinfo.cpp" line="+168"/>
- <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+0"/>
- <source>No host name given</source>
- <translation>Es wurde kein Hostname angegeben</translation>
+ <location filename="../src/declarative/util/qmlxmllistmodel.cpp" line="+370"/>
+ <source>&quot;%1&quot; duplicates a previous role name and will be disabled.</source>
+ <translation>&quot;%1&quot; ist bereits als Name einer Rolle vergeben und wird daher deaktiviert.</translation>
</message>
</context>
<context>
<name>QPPDOptionsModel</name>
<message>
- <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1197"/>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1195"/>
<source>Name</source>
<translation>Name</translation>
</message>
@@ -4959,7 +5074,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QSQLiteDriver</name>
<message>
- <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+547"/>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+538"/>
<source>Error opening database</source>
<translation>Die Datenbankverbindung konnte nicht geöffnet werden</translation>
</message>
@@ -4987,7 +5102,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QSQLiteResult</name>
<message>
- <location line="-404"/>
+ <location line="-395"/>
<location line="+62"/>
<location line="+8"/>
<source>Unable to fetch row</source>
@@ -5245,7 +5360,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QScriptDebuggerLocalsModel</name>
<message>
- <location filename="../src/scripttools/debugging/qscriptdebuggerlocalsmodel.cpp" line="+872"/>
+ <location filename="../src/scripttools/debugging/qscriptdebuggerlocalsmodel.cpp" line="+897"/>
<source>Name</source>
<translation>Name</translation>
</message>
@@ -6428,7 +6543,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Umdrehen</translation>
</message>
<message>
- <location line="+575"/>
+ <location line="+602"/>
<location line="+135"/>
<source>Ctrl</source>
<translation>Strg</translation>
@@ -6462,7 +6577,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>F%1</translation>
</message>
<message>
- <location line="-871"/>
+ <location line="-898"/>
<source>Home Page</source>
<translation>Startseite</translation>
</message>
@@ -6596,7 +6711,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Abbrechen</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qsoftkeymanager_s60.cpp" line="+273"/>
+ <location filename="../src/gui/kernel/qsoftkeymanager_s60.cpp" line="+312"/>
<source>Exit</source>
<translation>Beenden</translation>
</message>
@@ -6940,7 +7055,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+2027"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+2029"/>
<source>&amp;Undo</source>
<translation>&amp;Rückgängig</translation>
</message>
@@ -7989,7 +8104,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5728"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5761"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -8454,6 +8569,866 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</message>
</context>
<context>
+ <name>QmlAbstractAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qmlanimation.cpp" line="+235"/>
+ <source>Cannot animate non-existent property &quot;%1&quot;</source>
+ <translation>Die Eigenschaft &apos;%1&quot; existiert nicht und kann daher nicht animiert werden</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cannot animate read-only property &quot;%1&quot;</source>
+ <translation>Die Eigenschaft &apos;%1&quot; ist schreibgeschützt und kann daher nicht animiert werden</translation>
+ </message>
+</context>
+<context>
+ <name>QmlBehavior</name>
+ <message>
+ <location filename="../src/declarative/util/qmlbehavior.cpp" line="+122"/>
+ <source>Cannot change the animation assigned to a Behavior.</source>
+ <translation>Die zu einem Behavior-Element gehörende Animation kann nicht geändert werden.</translation>
+ </message>
+</context>
+<context>
+ <name>QmlBinding</name>
+ <message>
+ <location filename="../src/declarative/qml/qmlbinding.cpp" line="+195"/>
+ <source>Binding loop detected for property &quot;%1&quot;</source>
+ <translation>Bei der für die Eigenschaft &quot;%1&quot; angegebenen Bindung wurde eine Schleife festgestellt</translation>
+ </message>
+</context>
+<context>
+ <name>QmlCompiler</name>
+ <message>
+ <location filename="../src/declarative/qml/qmlcompiler.cpp" line="+214"/>
+ <location line="+1772"/>
+ <location line="+124"/>
+ <location line="+427"/>
+ <source>Invalid property assignment: &quot;%1&quot; is a read-only property</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: &quot;%1&quot; ist schreibgeschützt</translation>
+ </message>
+ <message>
+ <location line="-2314"/>
+ <source>Invalid property assignment: unknown enumeration</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Ungültiger Aufzählungswert</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: string expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird eine Zeichenkette erwartet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid property assignment: url expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird eine URL erwartet</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Invalid property assignment: unsigned int expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird eine vorzeichenloser Ganzzahlwert erwartet</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: int expected</source>
+ <translation type="unfinished">Ungültige Zuweisung bei Eigenschaft: Es wird ein Ganzzahlwert erwartet</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: float expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird eine Gleitkommazahl erwartet</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: double expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird eine Gleitkommazahl (double) erwartet</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: color expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird eine Farbspezifikation erwartet</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: date expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird eine Datumsangabe erwartet</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: time expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird eine Zeitangabe erwartet</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: datetime expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird eine Datumsangabe erwartet</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: point expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird eine Koordinatenangabe für einen Punkt erwartet</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: size expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird eine Größenangabe erwartet</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Invalid property assignment: rect expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es werden Parameter für ein Rechteck erwartet</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Invalid property assignment: boolean expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird ein Boolescher Wert erwartet</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Invalid property assignment: 3D vector expected</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Es wird ein dreidimensionaler Vektor erwartet</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Invalid property assignment: unsupported type &quot;%1&quot;</source>
+ <translation>Ungültige Zuweisung bei Eigenschaft: Der Typ &quot;%1&quot; ist nicht unterstützt</translation>
+ </message>
+ <message>
+ <location line="+801"/>
+ <location line="+3"/>
+ <source>Invalid component specification</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Invalid component id specification</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+565"/>
+ <source>id is not unique</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-555"/>
+ <source>Invalid component body specification</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Cannot create empty component specification</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Invalid Script block. Specify either the source property or inline script</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Invalid Script source value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Properties cannot be set on Script block</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Invalid Script block</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+130"/>
+ <source>Incorrectly specified signal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Empty signal assignment</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Empty property assignment</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Attached properties cannot be used here</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <location line="+104"/>
+ <source>Non-existent attached object</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-100"/>
+ <location line="+103"/>
+ <source>Invalid attached object assignment</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-50"/>
+ <source>Cannot assign to non-existent default property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location line="+339"/>
+ <source>Cannot assign to non-existent property &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-308"/>
+ <source>Invalid use of namespace</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Not an attached property name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+169"/>
+ <source>Invalid use of id property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>&quot;%1&quot; is not a valid object id</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>id conflicts with type name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>id conflicts with namespace prefix</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+78"/>
+ <source>Invalid value in grouped property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+8"/>
+ <source>Invalid grouped property access</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Invalid property use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Property assignment expected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Single property assignment expected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Unexpected object assignment</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <source>Cannot assign object to list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Cannot assign primitives to lists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>Can only assign one binding to lists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Cannot assign multiple values to a script property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid property assignment: script expected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+129"/>
+ <source>Cannot assign object to property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+97"/>
+ <source>Duplicate default property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Duplicate property name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Duplicate signal name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Duplicate method name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Invalid property nesting</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Cannot override FINAL property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Invalid property type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+174"/>
+ <location line="+9"/>
+ <source>No property alias location</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <location line="+25"/>
+ <source>Invalid alias location</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-16"/>
+ <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"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid alias reference. Unable to find id &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlCompositeTypeManager</name>
+ <message>
+ <location filename="../src/declarative/qml/qmlcompositetypemanager.cpp" line="+415"/>
+ <location line="+220"/>
+ <source>Resource %1 unavailable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-141"/>
+ <source>Import %1 unavailable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Namespace %1 cannot be used as a type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>%1 is not a type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Type %1 unavailable</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlEngine</name>
+ <message>
+ <location filename="../src/declarative/qml/qmlsqldatabase.cpp" line="+204"/>
+ <source>executeSql called outside transaction()</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+52"/>
+ <source>Read-only Transaction</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Version mismatch: expected %1, found %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>SQL transaction failed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>transaction: missing callback</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <location line="+16"/>
+ <source>SQL: database version mismatch</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlGraphicsAnchors</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qmlgraphicsanchors.cpp" line="+177"/>
+ <source>Possible anchor loop detected on fill.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>Possible anchor loop detected on centerIn.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+163"/>
+ <location line="+34"/>
+ <location line="+607"/>
+ <location line="+37"/>
+ <source>Cannot anchor to an item that isn&apos;t a parent or sibling.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-534"/>
+ <source>Possible anchor loop detected on vertical anchor.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+59"/>
+ <source>Possible anchor loop detected on horizontal anchor.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+422"/>
+ <source>Cannot specify left, right, and hcenter anchors.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+37"/>
+ <source>Cannot anchor to a null item.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-34"/>
+ <source>Cannot anchor a horizontal edge to a vertical edge.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+37"/>
+ <source>Cannot anchor item to self.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-25"/>
+ <source>Cannot specify top, bottom, and vcenter anchors.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Baseline anchor cannot be used in conjunction with top, bottom, or vcenter anchors.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Cannot anchor a vertical edge to a horizontal edge.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlGraphicsFlipable</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qmlgraphicsflipable.cpp" line="+149"/>
+ <source>front is a write-once property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>back is a write-once property</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlGraphicsTextInput</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qmlgraphicstextinput.cpp" line="+594"/>
+ <location line="+9"/>
+ <source>Could not load cursor delegate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Could not instantiate cursor delegate</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlGraphicsVisualDataModel</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp" line="+826"/>
+ <source>Delegate component must be Item type.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlInfo</name>
+ <message>
+ <location filename="../src/declarative/qml/qmlinfo.cpp" line="+112"/>
+ <location line="+3"/>
+ <source>unknown location</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlListModel</name>
+ <message>
+ <location filename="../src/declarative/util/qmllistmodel.cpp" line="+491"/>
+ <source>remove: index %1 out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>insert: value is not an object</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>insert: index %1 out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>move: out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>append: value is not an object</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>get: index %1 out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>set: value is not an object</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location line="+39"/>
+ <source>set: index %1 out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>ListElement: cannot use default property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>ListElement: cannot use reserved &quot;id&quot; property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+46"/>
+ <source>ListElement: cannot use script for property value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>ListModel: undefined property &apos;%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlParentChange</name>
+ <message>
+ <location filename="../src/declarative/util/qmlstateoperations.cpp" line="+85"/>
+ <source>Unable to preserve appearance under complex transform</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+7"/>
+ <source>Unable to preserve appearance under non-uniform scale</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Unable to preserve appearance under scale of 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlParser</name>
+ <message>
+ <location filename="../src/declarative/qml/parser/qmljslexer.cpp" line="+554"/>
+ <source>Illegal character</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Unclosed string at end of line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Illegal escape squence</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+46"/>
+ <source>Illegal unicode escape sequence</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Unclosed comment at end of file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+87"/>
+ <source>Illegal syntax for exponential number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Identifier cannot start with numeric literal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+331"/>
+ <source>Unterminated regular expression literal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Invalid regular expression flag &apos;%0&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/declarative/qml/parser/qmljsparser.cpp" line="+1767"/>
+ <location line="+67"/>
+ <source>Syntax error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-65"/>
+ <source>Unexpected token `%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <location line="+24"/>
+ <source>Expected token `%1&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/declarative/qml/qmlscriptparser.cpp" line="+267"/>
+ <source>Expected type name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Invalid use of Script block</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+151"/>
+ <source>Invalid import qualifier ID</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Library import requires a version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Expected parameter type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Invalid property type modifier</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Unexpected property type modifier</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Expected property type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Readonly not yet supported</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+194"/>
+ <source>QmlJS declaration outside Script element</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Variable declarations not allow in inline Script blocks</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlPauseAnimation</name>
+ <message>
+ <location filename="../src/declarative/util/qmlanimation.cpp" line="+410"/>
+ <source>Cannot set a duration of &lt; 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlPropertyAnimation</name>
+ <message>
+ <location line="-568"/>
+ <source>Unmatched parenthesis in easing function &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Easing function &quot;%1&quot; must start with &quot;ease&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Unknown easing curve &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+9"/>
+ <source>Improperly specified parameter in easing function &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Unknown easing parameter &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1754"/>
+ <source>Cannot set a duration of &lt; 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlPropertyChanges</name>
+ <message>
+ <location filename="../src/declarative/util/qmlpropertychanges.cpp" line="+361"/>
+ <source>Cannot assign to non-existent property &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cannot assign to read-only property &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlVME</name>
+ <message>
+ <location filename="../src/declarative/qml/qmlvme.cpp" line="+195"/>
+ <source>Unable to create object of type %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+306"/>
+ <source>Cannot assign value %1 to property %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Cannot assign object type %1 with no default method</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cannot connect mismatched signal/slot %1 %vs. %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Cannot assign an object to signal property %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+147"/>
+ <source>Cannot assign object to list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <source>Cannot assign object to interface property</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Unable to create attached object</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Cannot set properties on %1 as it is null</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlXmlListModelRole</name>
+ <message>
+ <location filename="../src/declarative/util/qmlxmllistmodel.cpp" line="-255"/>
+ <source>An XmlRole query must not start with &apos;/&apos;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QmlXmlRoleList</name>
+ <message>
+ <location line="+430"/>
+ <source>An XmlListModel query must start with &apos;/&apos; or &quot;//&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QtXmlPatterns</name>
<message>
<location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
diff --git a/translations/qt_help_de.ts b/translations/qt_help_de.ts
index f64e741..40d1158 100644
--- a/translations/qt_help_de.ts
+++ b/translations/qt_help_de.ts
@@ -63,7 +63,7 @@
<translation>Unbekannter Filter &apos;%1&apos;.</translation>
</message>
<message>
- <location line="+105"/>
+ <location line="+103"/>
<source>Invalid documentation file &apos;%1&apos;!</source>
<translation>Ungültige Dokumentationsdatei &apos;%1&apos;.</translation>
</message>
@@ -78,7 +78,7 @@
<translation>Die Datenbank &apos;%1&apos; kann nicht zur Optimierung geöffnet werden.</translation>
</message>
<message>
- <location line="-438"/>
+ <location line="-436"/>
<source>Cannot create directory: %1</source>
<translation>Das Verzeichnis kann nicht angelegt werden: %1</translation>
</message>
@@ -88,7 +88,7 @@
<translation>Die Katalogdatei kann nicht kopiert werden: %1</translation>
</message>
<message>
- <location line="+174"/>
+ <location line="+172"/>
<source>Cannot register filter %1!</source>
<translation>Der Filter kann nicht registriert werden: %1</translation>
</message>
@@ -120,23 +120,20 @@
<context>
<name>QHelpEngineCore</name>
<message>
- <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+523"/>
- <source>The specified namespace does not exist!</source>
- <translation>Der angegebene Namensraum existiert nicht.</translation>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+122"/>
+ <source>Cannot open documentation file %1: %2!</source>
+ <translation>Die Dokumentationsdatei %1 kann nicht geöffnet werden: %2!</translation>
</message>
-</context>
-<context>
- <name>QHelpEngineCorePrivate</name>
<message>
- <location line="-401"/>
- <source>Cannot open documentation file %1: %2!</source>
- <translation>Die Dokumentationsdatei %1 kann nicht geöffnet werden: %2.</translation>
+ <location line="+404"/>
+ <source>The specified namespace does not exist!</source>
+ <translation>Der angegebene Namensraum existiert nicht.</translation>
</message>
</context>
<context>
<name>QHelpGenerator</name>
<message>
- <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/>
+ <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+158"/>
<source>Invalid help data!</source>
<translation>Ungültige Hilfe-Daten.</translation>
</message>
@@ -216,7 +213,7 @@
<translation>Die Datei %1 kann nicht geöffnet werden. Wird übersprungen.</translation>
</message>
<message>
- <location line="+131"/>
+ <location line="+133"/>
<source>The filter %1 is already registered!</source>
<translation>Der Filter %1 ist bereits registriert.</translation>
</message>
@@ -231,7 +228,7 @@
<translation>Indizes einfügen...</translation>
</message>
<message>
- <location line="+80"/>
+ <location line="+91"/>
<source>Insert contents...</source>
<translation>Inhalt einfügen...</translation>
</message>
@@ -245,122 +242,142 @@
<source>Cannot register contents!</source>
<translation>Inhalt kann nicht registriert werden.</translation>
</message>
+ <message>
+ <location line="+56"/>
+ <source>File &apos;%1&apos; does not exist.</source>
+ <translation>Die Datei &apos;%1&apos; existiert nicht.</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>File &apos;%1&apos; cannot be opened.</source>
+ <translation>Die Datei &apos;%1&apos; kann nicht geöffnet werden.</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>File &apos;%1&apos; contains an invalid link to file &apos;%2&apos;</source>
+ <translation>Die Datei &apos;%1&apos; enthält einen ungültigen Verweis auf die Datei &apos;%2&apos;</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Invalid links in HTML files.</source>
+ <translation>Es wurden ungültige Verweise in HTML-Dateien gefunden.</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpProject</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+86"/>
+ <source>Unknown token.</source>
+ <translation>Unbekanntes Token.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Unknown token. Expected &quot;QtHelpProject&quot;!</source>
+ <translation>Unbekanntes Token. &quot;QtHelpProject&quot; erwartet.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Error in line %1: %2</source>
+ <translation>Fehler in Zeile %1: %2</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>A virtual folder must not contain a &apos;/&apos; character!</source>
+ <translation>Ein virtuelles Verzeichnis darf kein &apos;/&apos;-Zeichen enthalten.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>A namespace must not contain a &apos;/&apos; character!</source>
+ <translation>Ein Namensraum darf kein &apos;/&apos;-Zeichen enthalten.</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Missing namespace in QtHelpProject.</source>
+ <translation>Fehlender Namensraum in QtHelpProject.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Missing virtual folder in QtHelpProject</source>
+ <translation>Fehlendes virtuelles Verzeichnis in QtHelpProject.</translation>
+ </message>
+ <message>
+ <location line="+89"/>
+ <source>Missing attribute in keyword at line %1.</source>
+ <translation>Fehlendes Attribut in Schlagwort in Zeile %1.</translation>
+ </message>
+ <message>
+ <location line="+125"/>
+ <source>The input file %1 could not be opened!</source>
+ <translation>Die Eingabe-Datei %1 kann nicht geöffnet werden.</translation>
+ </message>
</context>
<context>
<name>QHelpSearchQueryWidget</name>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+411"/>
+ <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+124"/>
<source>Search for:</source>
<translation>Suche nach:</translation>
</message>
<message>
- <location line="+5"/>
+ <location line="+1"/>
<source>Previous search</source>
<translation>Vorige Suche</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+1"/>
<source>Next search</source>
<translation>Nächste Suche</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+1"/>
<source>Search</source>
<translation>Suche</translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+2"/>
<source>Advanced search</source>
<translation>Erweiterte Suche</translation>
</message>
<message>
- <location line="+18"/>
+ <location line="+1"/>
<source>words &lt;B&gt;similar&lt;/B&gt; to:</source>
<translation>Worte &lt;B&gt;ähnlich&lt;/B&gt; zu:</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+1"/>
<source>&lt;B&gt;without&lt;/B&gt; the words:</source>
<translation>&lt;B&gt;ohne&lt;/B&gt; die Wörter:</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+1"/>
<source>with &lt;B&gt;exact phrase&lt;/B&gt;:</source>
<translation>mit der &lt;B&gt;genauen Wortgruppe&lt;/B&gt;:</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+1"/>
<source>with &lt;B&gt;all&lt;/B&gt; of the words:</source>
<translation>mit &lt;B&gt;allen&lt;/B&gt; Wörtern:</translation>
</message>
<message>
- <location line="+6"/>
+ <location line="+1"/>
<source>with &lt;B&gt;at least one&lt;/B&gt; of the words:</source>
<translation>mit &lt;B&gt;irgendeinem&lt;/B&gt; der Wörter:</translation>
</message>
</context>
<context>
<name>QHelpSearchResultWidget</name>
+ <message numerus="yes">
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+174"/>
+ <source>%1 - %2 of %n Hits</source>
+ <translation>
+ <numerusform>%1 - %2 - Ein Treffer</numerusform>
+ <numerusform>%1 - %2 von %n Treffern</numerusform>
+ </translation>
+ </message>
<message>
- <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/>
+ <location line="+61"/>
<source>0 - 0 of 0 Hits</source>
<translation>0 - 0 von 0 Treffern</translation>
</message>
</context>
-<context>
- <name>QHelpSearchResultWidgetPrivate</name>
- <message>
- <location line="-61"/>
- <source>%1 - %2 of %3 Hits</source>
- <translation>%1 - %2 von %3 Treffern</translation>
- </message>
-</context>
-<context>
- <name>QObject</name>
- <message>
- <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+85"/>
- <source>Unknown token.</source>
- <translation>Unbekanntes Token.</translation>
- </message>
- <message>
- <location line="+13"/>
- <source>Unknown token. Expected &quot;QtHelpProject&quot;!</source>
- <translation>Unbekanntes Token. &quot;QtHelpProject&quot; erwartet.</translation>
- </message>
- <message>
- <location line="+5"/>
- <source>Error in line %1: %2</source>
- <translation>Fehler in Zeile %1: %2</translation>
- </message>
- <message>
- <location line="+13"/>
- <source>A virtual folder must not contain a &apos;/&apos; character!</source>
- <translation>Ein virtuelles Verzeichnis darf kein &apos;/&apos;-Zeichen enthalten.</translation>
- </message>
- <message>
- <location line="+4"/>
- <source>A namespace must not contain a &apos;/&apos; character!</source>
- <translation>Ein Namensraum darf kein &apos;/&apos;-Zeichen enthalten.</translation>
- </message>
- <message>
- <location line="+16"/>
- <source>Missing namespace in QtHelpProject.</source>
- <translation>Fehlender Namensraum in QtHelpProject.</translation>
- </message>
- <message>
- <location line="+2"/>
- <source>Missing virtual folder in QtHelpProject</source>
- <translation>Fehlendes virtuelles Verzeichnis in QtHelpProject.</translation>
- </message>
- <message>
- <location line="+88"/>
- <source>Missing attribute in keyword at line %1.</source>
- <translation>Fehlendes Attribut in Schlagwort in Zeile %1.</translation>
- </message>
- <message>
- <location line="+123"/>
- <source>The input file %1 could not be opened!</source>
- <translation>Die Eingabe-Datei %1 kann nicht geöffnet werden.</translation>
- </message>
-</context>
</TS>
diff --git a/translations/translations.pri b/translations/translations.pri
index a8fb7ee..34da6b1 100644
--- a/translations/translations.pri
+++ b/translations/translations.pri
@@ -58,7 +58,7 @@ ts-linguist.depends = sub-tools
ts-assistant.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
../tools/assistant/translations/translations.pro \
&& $$LUPDATE \
- ../tools/assistant/translations/qt_help.pro))
+ ../tools/assistant/translations/qt_help.pro)
ts-assistant.depends = sub-tools
###### Qtconfig
diff --git a/util/unicode/data/DerivedNormalizationProps.txt b/util/unicode/data/DerivedNormalizationProps.txt
new file mode 100644
index 0000000..fba1fd1
--- /dev/null
+++ b/util/unicode/data/DerivedNormalizationProps.txt
@@ -0,0 +1,2650 @@
+# DerivedNormalizationProps-5.0.0.txt
+# Date: 2006-06-07, 17:42:44 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Derived Property: FC_NFKC_Closure
+# Generated from computing: b = NFKC(Fold(a)); c = NFKC(Fold(b));
+# Then if (c != b) add the mapping from a to c to the set of
+# mappings that constitute the FC_NFKC_Closure list
+# Uses the full case folding from CaseFolding.txt, without the T option.
+
+037A ; FC_NFKC; 0020 03B9 # Lm GREEK YPOGEGRAMMENI
+03D2 ; FC_NFKC; 03C5 # L& GREEK UPSILON WITH HOOK SYMBOL
+03D3 ; FC_NFKC; 03CD # L& GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+03D4 ; FC_NFKC; 03CB # L& GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03F2 ; FC_NFKC; 03C3 # L& GREEK LUNATE SIGMA SYMBOL
+03F9 ; FC_NFKC; 03C3 # L& GREEK CAPITAL LUNATE SIGMA SYMBOL
+1D2C ; FC_NFKC; 0061 # Lm MODIFIER LETTER CAPITAL A
+1D2D ; FC_NFKC; 00E6 # Lm MODIFIER LETTER CAPITAL AE
+1D2E ; FC_NFKC; 0062 # Lm MODIFIER LETTER CAPITAL B
+1D30 ; FC_NFKC; 0064 # Lm MODIFIER LETTER CAPITAL D
+1D31 ; FC_NFKC; 0065 # Lm MODIFIER LETTER CAPITAL E
+1D32 ; FC_NFKC; 01DD # Lm MODIFIER LETTER CAPITAL REVERSED E
+1D33 ; FC_NFKC; 0067 # Lm MODIFIER LETTER CAPITAL G
+1D34 ; FC_NFKC; 0068 # Lm MODIFIER LETTER CAPITAL H
+1D35 ; FC_NFKC; 0069 # Lm MODIFIER LETTER CAPITAL I
+1D36 ; FC_NFKC; 006A # Lm MODIFIER LETTER CAPITAL J
+1D37 ; FC_NFKC; 006B # Lm MODIFIER LETTER CAPITAL K
+1D38 ; FC_NFKC; 006C # Lm MODIFIER LETTER CAPITAL L
+1D39 ; FC_NFKC; 006D # Lm MODIFIER LETTER CAPITAL M
+1D3A ; FC_NFKC; 006E # Lm MODIFIER LETTER CAPITAL N
+1D3C ; FC_NFKC; 006F # Lm MODIFIER LETTER CAPITAL O
+1D3D ; FC_NFKC; 0223 # Lm MODIFIER LETTER CAPITAL OU
+1D3E ; FC_NFKC; 0070 # Lm MODIFIER LETTER CAPITAL P
+1D3F ; FC_NFKC; 0072 # Lm MODIFIER LETTER CAPITAL R
+1D40 ; FC_NFKC; 0074 # Lm MODIFIER LETTER CAPITAL T
+1D41 ; FC_NFKC; 0075 # Lm MODIFIER LETTER CAPITAL U
+1D42 ; FC_NFKC; 0077 # Lm MODIFIER LETTER CAPITAL W
+20A8 ; FC_NFKC; 0072 0073 # Sc RUPEE SIGN
+2102 ; FC_NFKC; 0063 # L& DOUBLE-STRUCK CAPITAL C
+2103 ; FC_NFKC; 00B0 0063 # So DEGREE CELSIUS
+2107 ; FC_NFKC; 025B # L& EULER CONSTANT
+2109 ; FC_NFKC; 00B0 0066 # So DEGREE FAHRENHEIT
+210B ; FC_NFKC; 0068 # L& SCRIPT CAPITAL H
+210C ; FC_NFKC; 0068 # L& BLACK-LETTER CAPITAL H
+210D ; FC_NFKC; 0068 # L& DOUBLE-STRUCK CAPITAL H
+2110 ; FC_NFKC; 0069 # L& SCRIPT CAPITAL I
+2111 ; FC_NFKC; 0069 # L& BLACK-LETTER CAPITAL I
+2112 ; FC_NFKC; 006C # L& SCRIPT CAPITAL L
+2115 ; FC_NFKC; 006E # L& DOUBLE-STRUCK CAPITAL N
+2116 ; FC_NFKC; 006E 006F # So NUMERO SIGN
+2119 ; FC_NFKC; 0070 # L& DOUBLE-STRUCK CAPITAL P
+211A ; FC_NFKC; 0071 # L& DOUBLE-STRUCK CAPITAL Q
+211B ; FC_NFKC; 0072 # L& SCRIPT CAPITAL R
+211C ; FC_NFKC; 0072 # L& BLACK-LETTER CAPITAL R
+211D ; FC_NFKC; 0072 # L& DOUBLE-STRUCK CAPITAL R
+2120 ; FC_NFKC; 0073 006D # So SERVICE MARK
+2121 ; FC_NFKC; 0074 0065 006C # So TELEPHONE SIGN
+2122 ; FC_NFKC; 0074 006D # So TRADE MARK SIGN
+2124 ; FC_NFKC; 007A # L& DOUBLE-STRUCK CAPITAL Z
+2128 ; FC_NFKC; 007A # L& BLACK-LETTER CAPITAL Z
+212C ; FC_NFKC; 0062 # L& SCRIPT CAPITAL B
+212D ; FC_NFKC; 0063 # L& BLACK-LETTER CAPITAL C
+2130 ; FC_NFKC; 0065 # L& SCRIPT CAPITAL E
+2131 ; FC_NFKC; 0066 # L& SCRIPT CAPITAL F
+2133 ; FC_NFKC; 006D # L& SCRIPT CAPITAL M
+213B ; FC_NFKC; 0066 0061 0078 # So FACSIMILE SIGN
+213E ; FC_NFKC; 03B3 # L& DOUBLE-STRUCK CAPITAL GAMMA
+213F ; FC_NFKC; 03C0 # L& DOUBLE-STRUCK CAPITAL PI
+2145 ; FC_NFKC; 0064 # L& DOUBLE-STRUCK ITALIC CAPITAL D
+3250 ; FC_NFKC; 0070 0074 0065 # So PARTNERSHIP SIGN
+32CC ; FC_NFKC; 0068 0067 # So SQUARE HG
+32CE ; FC_NFKC; 0065 0076 # So SQUARE EV
+32CF ; FC_NFKC; 006C 0074 0064 # So LIMITED LIABILITY SIGN
+3371 ; FC_NFKC; 0068 0070 0061 # So SQUARE HPA
+3373 ; FC_NFKC; 0061 0075 # So SQUARE AU
+3375 ; FC_NFKC; 006F 0076 # So SQUARE OV
+337A ; FC_NFKC; 0069 0075 # So SQUARE IU
+3380 ; FC_NFKC; 0070 0061 # So SQUARE PA AMPS
+3381 ; FC_NFKC; 006E 0061 # So SQUARE NA
+3382 ; FC_NFKC; 03BC 0061 # So SQUARE MU A
+3383 ; FC_NFKC; 006D 0061 # So SQUARE MA
+3384 ; FC_NFKC; 006B 0061 # So SQUARE KA
+3385 ; FC_NFKC; 006B 0062 # So SQUARE KB
+3386 ; FC_NFKC; 006D 0062 # So SQUARE MB
+3387 ; FC_NFKC; 0067 0062 # So SQUARE GB
+338A ; FC_NFKC; 0070 0066 # So SQUARE PF
+338B ; FC_NFKC; 006E 0066 # So SQUARE NF
+338C ; FC_NFKC; 03BC 0066 # So SQUARE MU F
+3390 ; FC_NFKC; 0068 007A # So SQUARE HZ
+3391 ; FC_NFKC; 006B 0068 007A # So SQUARE KHZ
+3392 ; FC_NFKC; 006D 0068 007A # So SQUARE MHZ
+3393 ; FC_NFKC; 0067 0068 007A # So SQUARE GHZ
+3394 ; FC_NFKC; 0074 0068 007A # So SQUARE THZ
+33A9 ; FC_NFKC; 0070 0061 # So SQUARE PA
+33AA ; FC_NFKC; 006B 0070 0061 # So SQUARE KPA
+33AB ; FC_NFKC; 006D 0070 0061 # So SQUARE MPA
+33AC ; FC_NFKC; 0067 0070 0061 # So SQUARE GPA
+33B4 ; FC_NFKC; 0070 0076 # So SQUARE PV
+33B5 ; FC_NFKC; 006E 0076 # So SQUARE NV
+33B6 ; FC_NFKC; 03BC 0076 # So SQUARE MU V
+33B7 ; FC_NFKC; 006D 0076 # So SQUARE MV
+33B8 ; FC_NFKC; 006B 0076 # So SQUARE KV
+33B9 ; FC_NFKC; 006D 0076 # So SQUARE MV MEGA
+33BA ; FC_NFKC; 0070 0077 # So SQUARE PW
+33BB ; FC_NFKC; 006E 0077 # So SQUARE NW
+33BC ; FC_NFKC; 03BC 0077 # So SQUARE MU W
+33BD ; FC_NFKC; 006D 0077 # So SQUARE MW
+33BE ; FC_NFKC; 006B 0077 # So SQUARE KW
+33BF ; FC_NFKC; 006D 0077 # So SQUARE MW MEGA
+33C0 ; FC_NFKC; 006B 03C9 # So SQUARE K OHM
+33C1 ; FC_NFKC; 006D 03C9 # So SQUARE M OHM
+33C3 ; FC_NFKC; 0062 0071 # So SQUARE BQ
+33C6 ; FC_NFKC; 0063 2215 006B 0067 #So SQUARE C OVER KG
+33C7 ; FC_NFKC; 0063 006F 002E # So SQUARE CO
+33C8 ; FC_NFKC; 0064 0062 # So SQUARE DB
+33C9 ; FC_NFKC; 0067 0079 # So SQUARE GY
+33CB ; FC_NFKC; 0068 0070 # So SQUARE HP
+33CD ; FC_NFKC; 006B 006B # So SQUARE KK
+33CE ; FC_NFKC; 006B 006D # So SQUARE KM CAPITAL
+33D7 ; FC_NFKC; 0070 0068 # So SQUARE PH
+33D9 ; FC_NFKC; 0070 0070 006D # So SQUARE PPM
+33DA ; FC_NFKC; 0070 0072 # So SQUARE PR
+33DC ; FC_NFKC; 0073 0076 # So SQUARE SV
+33DD ; FC_NFKC; 0077 0062 # So SQUARE WB
+33DE ; FC_NFKC; 0076 2215 006D # So SQUARE V OVER M
+33DF ; FC_NFKC; 0061 2215 006D # So SQUARE A OVER M
+1D400 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD CAPITAL A
+1D401 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD CAPITAL B
+1D402 ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD CAPITAL C
+1D403 ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD CAPITAL D
+1D404 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD CAPITAL E
+1D405 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD CAPITAL F
+1D406 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD CAPITAL G
+1D407 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD CAPITAL H
+1D408 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD CAPITAL I
+1D409 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD CAPITAL J
+1D40A ; FC_NFKC; 006B # L& MATHEMATICAL BOLD CAPITAL K
+1D40B ; FC_NFKC; 006C # L& MATHEMATICAL BOLD CAPITAL L
+1D40C ; FC_NFKC; 006D # L& MATHEMATICAL BOLD CAPITAL M
+1D40D ; FC_NFKC; 006E # L& MATHEMATICAL BOLD CAPITAL N
+1D40E ; FC_NFKC; 006F # L& MATHEMATICAL BOLD CAPITAL O
+1D40F ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD CAPITAL P
+1D410 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD CAPITAL Q
+1D411 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD CAPITAL R
+1D412 ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD CAPITAL S
+1D413 ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD CAPITAL T
+1D414 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD CAPITAL U
+1D415 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD CAPITAL V
+1D416 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD CAPITAL W
+1D417 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD CAPITAL X
+1D418 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD CAPITAL Y
+1D419 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD CAPITAL Z
+1D434 ; FC_NFKC; 0061 # L& MATHEMATICAL ITALIC CAPITAL A
+1D435 ; FC_NFKC; 0062 # L& MATHEMATICAL ITALIC CAPITAL B
+1D436 ; FC_NFKC; 0063 # L& MATHEMATICAL ITALIC CAPITAL C
+1D437 ; FC_NFKC; 0064 # L& MATHEMATICAL ITALIC CAPITAL D
+1D438 ; FC_NFKC; 0065 # L& MATHEMATICAL ITALIC CAPITAL E
+1D439 ; FC_NFKC; 0066 # L& MATHEMATICAL ITALIC CAPITAL F
+1D43A ; FC_NFKC; 0067 # L& MATHEMATICAL ITALIC CAPITAL G
+1D43B ; FC_NFKC; 0068 # L& MATHEMATICAL ITALIC CAPITAL H
+1D43C ; FC_NFKC; 0069 # L& MATHEMATICAL ITALIC CAPITAL I
+1D43D ; FC_NFKC; 006A # L& MATHEMATICAL ITALIC CAPITAL J
+1D43E ; FC_NFKC; 006B # L& MATHEMATICAL ITALIC CAPITAL K
+1D43F ; FC_NFKC; 006C # L& MATHEMATICAL ITALIC CAPITAL L
+1D440 ; FC_NFKC; 006D # L& MATHEMATICAL ITALIC CAPITAL M
+1D441 ; FC_NFKC; 006E # L& MATHEMATICAL ITALIC CAPITAL N
+1D442 ; FC_NFKC; 006F # L& MATHEMATICAL ITALIC CAPITAL O
+1D443 ; FC_NFKC; 0070 # L& MATHEMATICAL ITALIC CAPITAL P
+1D444 ; FC_NFKC; 0071 # L& MATHEMATICAL ITALIC CAPITAL Q
+1D445 ; FC_NFKC; 0072 # L& MATHEMATICAL ITALIC CAPITAL R
+1D446 ; FC_NFKC; 0073 # L& MATHEMATICAL ITALIC CAPITAL S
+1D447 ; FC_NFKC; 0074 # L& MATHEMATICAL ITALIC CAPITAL T
+1D448 ; FC_NFKC; 0075 # L& MATHEMATICAL ITALIC CAPITAL U
+1D449 ; FC_NFKC; 0076 # L& MATHEMATICAL ITALIC CAPITAL V
+1D44A ; FC_NFKC; 0077 # L& MATHEMATICAL ITALIC CAPITAL W
+1D44B ; FC_NFKC; 0078 # L& MATHEMATICAL ITALIC CAPITAL X
+1D44C ; FC_NFKC; 0079 # L& MATHEMATICAL ITALIC CAPITAL Y
+1D44D ; FC_NFKC; 007A # L& MATHEMATICAL ITALIC CAPITAL Z
+1D468 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD ITALIC CAPITAL A
+1D469 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD ITALIC CAPITAL B
+1D46A ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD ITALIC CAPITAL C
+1D46B ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD ITALIC CAPITAL D
+1D46C ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD ITALIC CAPITAL E
+1D46D ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD ITALIC CAPITAL F
+1D46E ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD ITALIC CAPITAL G
+1D46F ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD ITALIC CAPITAL H
+1D470 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD ITALIC CAPITAL I
+1D471 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD ITALIC CAPITAL J
+1D472 ; FC_NFKC; 006B # L& MATHEMATICAL BOLD ITALIC CAPITAL K
+1D473 ; FC_NFKC; 006C # L& MATHEMATICAL BOLD ITALIC CAPITAL L
+1D474 ; FC_NFKC; 006D # L& MATHEMATICAL BOLD ITALIC CAPITAL M
+1D475 ; FC_NFKC; 006E # L& MATHEMATICAL BOLD ITALIC CAPITAL N
+1D476 ; FC_NFKC; 006F # L& MATHEMATICAL BOLD ITALIC CAPITAL O
+1D477 ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD ITALIC CAPITAL P
+1D478 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD ITALIC CAPITAL Q
+1D479 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD ITALIC CAPITAL R
+1D47A ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD ITALIC CAPITAL S
+1D47B ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD ITALIC CAPITAL T
+1D47C ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD ITALIC CAPITAL U
+1D47D ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD ITALIC CAPITAL V
+1D47E ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD ITALIC CAPITAL W
+1D47F ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD ITALIC CAPITAL X
+1D480 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD ITALIC CAPITAL Y
+1D481 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D49C ; FC_NFKC; 0061 # L& MATHEMATICAL SCRIPT CAPITAL A
+1D49E ; FC_NFKC; 0063 # L& MATHEMATICAL SCRIPT CAPITAL C
+1D49F ; FC_NFKC; 0064 # L& MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; FC_NFKC; 0067 # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5 ; FC_NFKC; 006A # L& MATHEMATICAL SCRIPT CAPITAL J
+1D4A6 ; FC_NFKC; 006B # L& MATHEMATICAL SCRIPT CAPITAL K
+1D4A9 ; FC_NFKC; 006E # L& MATHEMATICAL SCRIPT CAPITAL N
+1D4AA ; FC_NFKC; 006F # L& MATHEMATICAL SCRIPT CAPITAL O
+1D4AB ; FC_NFKC; 0070 # L& MATHEMATICAL SCRIPT CAPITAL P
+1D4AC ; FC_NFKC; 0071 # L& MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE ; FC_NFKC; 0073 # L& MATHEMATICAL SCRIPT CAPITAL S
+1D4AF ; FC_NFKC; 0074 # L& MATHEMATICAL SCRIPT CAPITAL T
+1D4B0 ; FC_NFKC; 0075 # L& MATHEMATICAL SCRIPT CAPITAL U
+1D4B1 ; FC_NFKC; 0076 # L& MATHEMATICAL SCRIPT CAPITAL V
+1D4B2 ; FC_NFKC; 0077 # L& MATHEMATICAL SCRIPT CAPITAL W
+1D4B3 ; FC_NFKC; 0078 # L& MATHEMATICAL SCRIPT CAPITAL X
+1D4B4 ; FC_NFKC; 0079 # L& MATHEMATICAL SCRIPT CAPITAL Y
+1D4B5 ; FC_NFKC; 007A # L& MATHEMATICAL SCRIPT CAPITAL Z
+1D4D0 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD SCRIPT CAPITAL A
+1D4D1 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD SCRIPT CAPITAL B
+1D4D2 ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD SCRIPT CAPITAL C
+1D4D3 ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD SCRIPT CAPITAL D
+1D4D4 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD SCRIPT CAPITAL E
+1D4D5 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD SCRIPT CAPITAL F
+1D4D6 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD SCRIPT CAPITAL G
+1D4D7 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD SCRIPT CAPITAL H
+1D4D8 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD SCRIPT CAPITAL I
+1D4D9 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD SCRIPT CAPITAL J
+1D4DA ; FC_NFKC; 006B # L& MATHEMATICAL BOLD SCRIPT CAPITAL K
+1D4DB ; FC_NFKC; 006C # L& MATHEMATICAL BOLD SCRIPT CAPITAL L
+1D4DC ; FC_NFKC; 006D # L& MATHEMATICAL BOLD SCRIPT CAPITAL M
+1D4DD ; FC_NFKC; 006E # L& MATHEMATICAL BOLD SCRIPT CAPITAL N
+1D4DE ; FC_NFKC; 006F # L& MATHEMATICAL BOLD SCRIPT CAPITAL O
+1D4DF ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD SCRIPT CAPITAL P
+1D4E0 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD SCRIPT CAPITAL Q
+1D4E1 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD SCRIPT CAPITAL R
+1D4E2 ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD SCRIPT CAPITAL S
+1D4E3 ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD SCRIPT CAPITAL T
+1D4E4 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD SCRIPT CAPITAL U
+1D4E5 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD SCRIPT CAPITAL V
+1D4E6 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD SCRIPT CAPITAL W
+1D4E7 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD SCRIPT CAPITAL X
+1D4E8 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD SCRIPT CAPITAL Y
+1D4E9 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D504 ; FC_NFKC; 0061 # L& MATHEMATICAL FRAKTUR CAPITAL A
+1D505 ; FC_NFKC; 0062 # L& MATHEMATICAL FRAKTUR CAPITAL B
+1D507 ; FC_NFKC; 0064 # L& MATHEMATICAL FRAKTUR CAPITAL D
+1D508 ; FC_NFKC; 0065 # L& MATHEMATICAL FRAKTUR CAPITAL E
+1D509 ; FC_NFKC; 0066 # L& MATHEMATICAL FRAKTUR CAPITAL F
+1D50A ; FC_NFKC; 0067 # L& MATHEMATICAL FRAKTUR CAPITAL G
+1D50D ; FC_NFKC; 006A # L& MATHEMATICAL FRAKTUR CAPITAL J
+1D50E ; FC_NFKC; 006B # L& MATHEMATICAL FRAKTUR CAPITAL K
+1D50F ; FC_NFKC; 006C # L& MATHEMATICAL FRAKTUR CAPITAL L
+1D510 ; FC_NFKC; 006D # L& MATHEMATICAL FRAKTUR CAPITAL M
+1D511 ; FC_NFKC; 006E # L& MATHEMATICAL FRAKTUR CAPITAL N
+1D512 ; FC_NFKC; 006F # L& MATHEMATICAL FRAKTUR CAPITAL O
+1D513 ; FC_NFKC; 0070 # L& MATHEMATICAL FRAKTUR CAPITAL P
+1D514 ; FC_NFKC; 0071 # L& MATHEMATICAL FRAKTUR CAPITAL Q
+1D516 ; FC_NFKC; 0073 # L& MATHEMATICAL FRAKTUR CAPITAL S
+1D517 ; FC_NFKC; 0074 # L& MATHEMATICAL FRAKTUR CAPITAL T
+1D518 ; FC_NFKC; 0075 # L& MATHEMATICAL FRAKTUR CAPITAL U
+1D519 ; FC_NFKC; 0076 # L& MATHEMATICAL FRAKTUR CAPITAL V
+1D51A ; FC_NFKC; 0077 # L& MATHEMATICAL FRAKTUR CAPITAL W
+1D51B ; FC_NFKC; 0078 # L& MATHEMATICAL FRAKTUR CAPITAL X
+1D51C ; FC_NFKC; 0079 # L& MATHEMATICAL FRAKTUR CAPITAL Y
+1D538 ; FC_NFKC; 0061 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+1D539 ; FC_NFKC; 0062 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B ; FC_NFKC; 0064 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+1D53C ; FC_NFKC; 0065 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+1D53D ; FC_NFKC; 0066 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+1D53E ; FC_NFKC; 0067 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540 ; FC_NFKC; 0069 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+1D541 ; FC_NFKC; 006A # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+1D542 ; FC_NFKC; 006B # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+1D543 ; FC_NFKC; 006C # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+1D544 ; FC_NFKC; 006D # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; FC_NFKC; 006F # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A ; FC_NFKC; 0073 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+1D54B ; FC_NFKC; 0074 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+1D54C ; FC_NFKC; 0075 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+1D54D ; FC_NFKC; 0076 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+1D54E ; FC_NFKC; 0077 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+1D54F ; FC_NFKC; 0078 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+1D550 ; FC_NFKC; 0079 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D56C ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL A
+1D56D ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL B
+1D56E ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL C
+1D56F ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL D
+1D570 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL E
+1D571 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL F
+1D572 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL G
+1D573 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL H
+1D574 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL I
+1D575 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD FRAKTUR CAPITAL J
+1D576 ; FC_NFKC; 006B # L& MATHEMATICAL BOLD FRAKTUR CAPITAL K
+1D577 ; FC_NFKC; 006C # L& MATHEMATICAL BOLD FRAKTUR CAPITAL L
+1D578 ; FC_NFKC; 006D # L& MATHEMATICAL BOLD FRAKTUR CAPITAL M
+1D579 ; FC_NFKC; 006E # L& MATHEMATICAL BOLD FRAKTUR CAPITAL N
+1D57A ; FC_NFKC; 006F # L& MATHEMATICAL BOLD FRAKTUR CAPITAL O
+1D57B ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL P
+1D57C ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+1D57D ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL R
+1D57E ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL S
+1D57F ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL T
+1D580 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL U
+1D581 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL V
+1D582 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL W
+1D583 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL X
+1D584 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+1D585 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D5A0 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF CAPITAL A
+1D5A1 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF CAPITAL B
+1D5A2 ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF CAPITAL C
+1D5A3 ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF CAPITAL D
+1D5A4 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF CAPITAL E
+1D5A5 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF CAPITAL F
+1D5A6 ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF CAPITAL G
+1D5A7 ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF CAPITAL H
+1D5A8 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF CAPITAL I
+1D5A9 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF CAPITAL J
+1D5AA ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF CAPITAL K
+1D5AB ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF CAPITAL L
+1D5AC ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF CAPITAL M
+1D5AD ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF CAPITAL N
+1D5AE ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF CAPITAL O
+1D5AF ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF CAPITAL P
+1D5B0 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF CAPITAL Q
+1D5B1 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF CAPITAL R
+1D5B2 ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF CAPITAL S
+1D5B3 ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF CAPITAL T
+1D5B4 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF CAPITAL U
+1D5B5 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF CAPITAL V
+1D5B6 ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF CAPITAL W
+1D5B7 ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF CAPITAL X
+1D5B8 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF CAPITAL Y
+1D5B9 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5D4 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+1D5D5 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+1D5D6 ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+1D5D7 ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+1D5D8 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+1D5D9 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+1D5DA ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+1D5DB ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+1D5DC ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+1D5DD ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+1D5DE ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+1D5DF ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+1D5E0 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+1D5E1 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+1D5E2 ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+1D5E3 ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+1D5E4 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+1D5E5 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+1D5E6 ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+1D5E7 ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+1D5E8 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+1D5E9 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+1D5EA ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+1D5EB ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+1D5EC ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+1D5ED ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D608 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+1D609 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+1D60A ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+1D60B ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+1D60C ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+1D60D ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+1D60E ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+1D60F ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+1D610 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+1D611 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+1D612 ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+1D613 ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+1D614 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+1D615 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+1D616 ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+1D617 ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+1D618 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+1D619 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+1D61A ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+1D61B ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+1D61C ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+1D61D ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+1D61E ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+1D61F ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+1D620 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+1D621 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D63C ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+1D63D ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+1D63E ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+1D63F ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+1D640 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+1D641 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+1D642 ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+1D643 ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+1D644 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+1D645 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+1D646 ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+1D647 ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+1D648 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+1D649 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+1D64A ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+1D64B ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+1D64C ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+1D64D ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+1D64E ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+1D64F ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+1D650 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+1D651 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+1D652 ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+1D653 ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+1D654 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+1D655 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D670 ; FC_NFKC; 0061 # L& MATHEMATICAL MONOSPACE CAPITAL A
+1D671 ; FC_NFKC; 0062 # L& MATHEMATICAL MONOSPACE CAPITAL B
+1D672 ; FC_NFKC; 0063 # L& MATHEMATICAL MONOSPACE CAPITAL C
+1D673 ; FC_NFKC; 0064 # L& MATHEMATICAL MONOSPACE CAPITAL D
+1D674 ; FC_NFKC; 0065 # L& MATHEMATICAL MONOSPACE CAPITAL E
+1D675 ; FC_NFKC; 0066 # L& MATHEMATICAL MONOSPACE CAPITAL F
+1D676 ; FC_NFKC; 0067 # L& MATHEMATICAL MONOSPACE CAPITAL G
+1D677 ; FC_NFKC; 0068 # L& MATHEMATICAL MONOSPACE CAPITAL H
+1D678 ; FC_NFKC; 0069 # L& MATHEMATICAL MONOSPACE CAPITAL I
+1D679 ; FC_NFKC; 006A # L& MATHEMATICAL MONOSPACE CAPITAL J
+1D67A ; FC_NFKC; 006B # L& MATHEMATICAL MONOSPACE CAPITAL K
+1D67B ; FC_NFKC; 006C # L& MATHEMATICAL MONOSPACE CAPITAL L
+1D67C ; FC_NFKC; 006D # L& MATHEMATICAL MONOSPACE CAPITAL M
+1D67D ; FC_NFKC; 006E # L& MATHEMATICAL MONOSPACE CAPITAL N
+1D67E ; FC_NFKC; 006F # L& MATHEMATICAL MONOSPACE CAPITAL O
+1D67F ; FC_NFKC; 0070 # L& MATHEMATICAL MONOSPACE CAPITAL P
+1D680 ; FC_NFKC; 0071 # L& MATHEMATICAL MONOSPACE CAPITAL Q
+1D681 ; FC_NFKC; 0072 # L& MATHEMATICAL MONOSPACE CAPITAL R
+1D682 ; FC_NFKC; 0073 # L& MATHEMATICAL MONOSPACE CAPITAL S
+1D683 ; FC_NFKC; 0074 # L& MATHEMATICAL MONOSPACE CAPITAL T
+1D684 ; FC_NFKC; 0075 # L& MATHEMATICAL MONOSPACE CAPITAL U
+1D685 ; FC_NFKC; 0076 # L& MATHEMATICAL MONOSPACE CAPITAL V
+1D686 ; FC_NFKC; 0077 # L& MATHEMATICAL MONOSPACE CAPITAL W
+1D687 ; FC_NFKC; 0078 # L& MATHEMATICAL MONOSPACE CAPITAL X
+1D688 ; FC_NFKC; 0079 # L& MATHEMATICAL MONOSPACE CAPITAL Y
+1D689 ; FC_NFKC; 007A # L& MATHEMATICAL MONOSPACE CAPITAL Z
+1D6A8 ; FC_NFKC; 03B1 # L& MATHEMATICAL BOLD CAPITAL ALPHA
+1D6A9 ; FC_NFKC; 03B2 # L& MATHEMATICAL BOLD CAPITAL BETA
+1D6AA ; FC_NFKC; 03B3 # L& MATHEMATICAL BOLD CAPITAL GAMMA
+1D6AB ; FC_NFKC; 03B4 # L& MATHEMATICAL BOLD CAPITAL DELTA
+1D6AC ; FC_NFKC; 03B5 # L& MATHEMATICAL BOLD CAPITAL EPSILON
+1D6AD ; FC_NFKC; 03B6 # L& MATHEMATICAL BOLD CAPITAL ZETA
+1D6AE ; FC_NFKC; 03B7 # L& MATHEMATICAL BOLD CAPITAL ETA
+1D6AF ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD CAPITAL THETA
+1D6B0 ; FC_NFKC; 03B9 # L& MATHEMATICAL BOLD CAPITAL IOTA
+1D6B1 ; FC_NFKC; 03BA # L& MATHEMATICAL BOLD CAPITAL KAPPA
+1D6B2 ; FC_NFKC; 03BB # L& MATHEMATICAL BOLD CAPITAL LAMDA
+1D6B3 ; FC_NFKC; 03BC # L& MATHEMATICAL BOLD CAPITAL MU
+1D6B4 ; FC_NFKC; 03BD # L& MATHEMATICAL BOLD CAPITAL NU
+1D6B5 ; FC_NFKC; 03BE # L& MATHEMATICAL BOLD CAPITAL XI
+1D6B6 ; FC_NFKC; 03BF # L& MATHEMATICAL BOLD CAPITAL OMICRON
+1D6B7 ; FC_NFKC; 03C0 # L& MATHEMATICAL BOLD CAPITAL PI
+1D6B8 ; FC_NFKC; 03C1 # L& MATHEMATICAL BOLD CAPITAL RHO
+1D6B9 ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+1D6BA ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD CAPITAL SIGMA
+1D6BB ; FC_NFKC; 03C4 # L& MATHEMATICAL BOLD CAPITAL TAU
+1D6BC ; FC_NFKC; 03C5 # L& MATHEMATICAL BOLD CAPITAL UPSILON
+1D6BD ; FC_NFKC; 03C6 # L& MATHEMATICAL BOLD CAPITAL PHI
+1D6BE ; FC_NFKC; 03C7 # L& MATHEMATICAL BOLD CAPITAL CHI
+1D6BF ; FC_NFKC; 03C8 # L& MATHEMATICAL BOLD CAPITAL PSI
+1D6C0 ; FC_NFKC; 03C9 # L& MATHEMATICAL BOLD CAPITAL OMEGA
+1D6D3 ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD SMALL FINAL SIGMA
+1D6E2 ; FC_NFKC; 03B1 # L& MATHEMATICAL ITALIC CAPITAL ALPHA
+1D6E3 ; FC_NFKC; 03B2 # L& MATHEMATICAL ITALIC CAPITAL BETA
+1D6E4 ; FC_NFKC; 03B3 # L& MATHEMATICAL ITALIC CAPITAL GAMMA
+1D6E5 ; FC_NFKC; 03B4 # L& MATHEMATICAL ITALIC CAPITAL DELTA
+1D6E6 ; FC_NFKC; 03B5 # L& MATHEMATICAL ITALIC CAPITAL EPSILON
+1D6E7 ; FC_NFKC; 03B6 # L& MATHEMATICAL ITALIC CAPITAL ZETA
+1D6E8 ; FC_NFKC; 03B7 # L& MATHEMATICAL ITALIC CAPITAL ETA
+1D6E9 ; FC_NFKC; 03B8 # L& MATHEMATICAL ITALIC CAPITAL THETA
+1D6EA ; FC_NFKC; 03B9 # L& MATHEMATICAL ITALIC CAPITAL IOTA
+1D6EB ; FC_NFKC; 03BA # L& MATHEMATICAL ITALIC CAPITAL KAPPA
+1D6EC ; FC_NFKC; 03BB # L& MATHEMATICAL ITALIC CAPITAL LAMDA
+1D6ED ; FC_NFKC; 03BC # L& MATHEMATICAL ITALIC CAPITAL MU
+1D6EE ; FC_NFKC; 03BD # L& MATHEMATICAL ITALIC CAPITAL NU
+1D6EF ; FC_NFKC; 03BE # L& MATHEMATICAL ITALIC CAPITAL XI
+1D6F0 ; FC_NFKC; 03BF # L& MATHEMATICAL ITALIC CAPITAL OMICRON
+1D6F1 ; FC_NFKC; 03C0 # L& MATHEMATICAL ITALIC CAPITAL PI
+1D6F2 ; FC_NFKC; 03C1 # L& MATHEMATICAL ITALIC CAPITAL RHO
+1D6F3 ; FC_NFKC; 03B8 # L& MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+1D6F4 ; FC_NFKC; 03C3 # L& MATHEMATICAL ITALIC CAPITAL SIGMA
+1D6F5 ; FC_NFKC; 03C4 # L& MATHEMATICAL ITALIC CAPITAL TAU
+1D6F6 ; FC_NFKC; 03C5 # L& MATHEMATICAL ITALIC CAPITAL UPSILON
+1D6F7 ; FC_NFKC; 03C6 # L& MATHEMATICAL ITALIC CAPITAL PHI
+1D6F8 ; FC_NFKC; 03C7 # L& MATHEMATICAL ITALIC CAPITAL CHI
+1D6F9 ; FC_NFKC; 03C8 # L& MATHEMATICAL ITALIC CAPITAL PSI
+1D6FA ; FC_NFKC; 03C9 # L& MATHEMATICAL ITALIC CAPITAL OMEGA
+1D70D ; FC_NFKC; 03C3 # L& MATHEMATICAL ITALIC SMALL FINAL SIGMA
+1D71C ; FC_NFKC; 03B1 # L& MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+1D71D ; FC_NFKC; 03B2 # L& MATHEMATICAL BOLD ITALIC CAPITAL BETA
+1D71E ; FC_NFKC; 03B3 # L& MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+1D71F ; FC_NFKC; 03B4 # L& MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+1D720 ; FC_NFKC; 03B5 # L& MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+1D721 ; FC_NFKC; 03B6 # L& MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+1D722 ; FC_NFKC; 03B7 # L& MATHEMATICAL BOLD ITALIC CAPITAL ETA
+1D723 ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD ITALIC CAPITAL THETA
+1D724 ; FC_NFKC; 03B9 # L& MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+1D725 ; FC_NFKC; 03BA # L& MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+1D726 ; FC_NFKC; 03BB # L& MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+1D727 ; FC_NFKC; 03BC # L& MATHEMATICAL BOLD ITALIC CAPITAL MU
+1D728 ; FC_NFKC; 03BD # L& MATHEMATICAL BOLD ITALIC CAPITAL NU
+1D729 ; FC_NFKC; 03BE # L& MATHEMATICAL BOLD ITALIC CAPITAL XI
+1D72A ; FC_NFKC; 03BF # L& MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+1D72B ; FC_NFKC; 03C0 # L& MATHEMATICAL BOLD ITALIC CAPITAL PI
+1D72C ; FC_NFKC; 03C1 # L& MATHEMATICAL BOLD ITALIC CAPITAL RHO
+1D72D ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+1D72E ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+1D72F ; FC_NFKC; 03C4 # L& MATHEMATICAL BOLD ITALIC CAPITAL TAU
+1D730 ; FC_NFKC; 03C5 # L& MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+1D731 ; FC_NFKC; 03C6 # L& MATHEMATICAL BOLD ITALIC CAPITAL PHI
+1D732 ; FC_NFKC; 03C7 # L& MATHEMATICAL BOLD ITALIC CAPITAL CHI
+1D733 ; FC_NFKC; 03C8 # L& MATHEMATICAL BOLD ITALIC CAPITAL PSI
+1D734 ; FC_NFKC; 03C9 # L& MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D747 ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+1D756 ; FC_NFKC; 03B1 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+1D757 ; FC_NFKC; 03B2 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+1D758 ; FC_NFKC; 03B3 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+1D759 ; FC_NFKC; 03B4 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+1D75A ; FC_NFKC; 03B5 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+1D75B ; FC_NFKC; 03B6 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+1D75C ; FC_NFKC; 03B7 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+1D75D ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+1D75E ; FC_NFKC; 03B9 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+1D75F ; FC_NFKC; 03BA # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+1D760 ; FC_NFKC; 03BB # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+1D761 ; FC_NFKC; 03BC # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+1D762 ; FC_NFKC; 03BD # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+1D763 ; FC_NFKC; 03BE # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+1D764 ; FC_NFKC; 03BF # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+1D765 ; FC_NFKC; 03C0 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+1D766 ; FC_NFKC; 03C1 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+1D767 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+1D768 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+1D769 ; FC_NFKC; 03C4 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+1D76A ; FC_NFKC; 03C5 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+1D76B ; FC_NFKC; 03C6 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+1D76C ; FC_NFKC; 03C7 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+1D76D ; FC_NFKC; 03C8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+1D76E ; FC_NFKC; 03C9 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D781 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+1D790 ; FC_NFKC; 03B1 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+1D791 ; FC_NFKC; 03B2 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+1D792 ; FC_NFKC; 03B3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+1D793 ; FC_NFKC; 03B4 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+1D794 ; FC_NFKC; 03B5 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+1D795 ; FC_NFKC; 03B6 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+1D796 ; FC_NFKC; 03B7 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+1D797 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+1D798 ; FC_NFKC; 03B9 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+1D799 ; FC_NFKC; 03BA # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+1D79A ; FC_NFKC; 03BB # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+1D79B ; FC_NFKC; 03BC # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+1D79C ; FC_NFKC; 03BD # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+1D79D ; FC_NFKC; 03BE # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+1D79E ; FC_NFKC; 03BF # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+1D79F ; FC_NFKC; 03C0 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+1D7A0 ; FC_NFKC; 03C1 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+1D7A1 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+1D7A2 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+1D7A3 ; FC_NFKC; 03C4 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+1D7A4 ; FC_NFKC; 03C5 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+1D7A5 ; FC_NFKC; 03C6 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+1D7A6 ; FC_NFKC; 03C7 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+1D7A7 ; FC_NFKC; 03C8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+1D7A8 ; FC_NFKC; 03C9 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7BB ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+1D7CA ; FC_NFKC; 03DD # L& MATHEMATICAL BOLD CAPITAL DIGAMMA
+
+# Total code points: 565
+
+# ================================================
+
+# Derived Property: Full_Composition_Exclusion
+# Generated from: Composition Exclusions + Singletons + Non-Starter Decompositions
+
+0340..0341 ; Full_Composition_Exclusion # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; Full_Composition_Exclusion # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; Full_Composition_Exclusion # Sk GREEK NUMERAL SIGN
+037E ; Full_Composition_Exclusion # Po GREEK QUESTION MARK
+0387 ; Full_Composition_Exclusion # Po GREEK ANO TELEIA
+0958..095F ; Full_Composition_Exclusion # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; Full_Composition_Exclusion # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Full_Composition_Exclusion # Lo BENGALI LETTER YYA
+0A33 ; Full_Composition_Exclusion # Lo GURMUKHI LETTER LLA
+0A36 ; Full_Composition_Exclusion # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Full_Composition_Exclusion # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Full_Composition_Exclusion # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; Full_Composition_Exclusion # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0F43 ; Full_Composition_Exclusion # Lo TIBETAN LETTER GHA
+0F4D ; Full_Composition_Exclusion # Lo TIBETAN LETTER DDHA
+0F52 ; Full_Composition_Exclusion # Lo TIBETAN LETTER DHA
+0F57 ; Full_Composition_Exclusion # Lo TIBETAN LETTER BHA
+0F5C ; Full_Composition_Exclusion # Lo TIBETAN LETTER DZHA
+0F69 ; Full_Composition_Exclusion # Lo TIBETAN LETTER KSSA
+0F73 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; Full_Composition_Exclusion # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER KSSA
+1F71 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER ALPHA WITH OXIA
+1F73 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER EPSILON WITH OXIA
+1F75 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER ETA WITH OXIA
+1F77 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER IOTA WITH OXIA
+1F79 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER OMICRON WITH OXIA
+1F7B ; Full_Composition_Exclusion # L& GREEK SMALL LETTER UPSILON WITH OXIA
+1F7D ; Full_Composition_Exclusion # L& GREEK SMALL LETTER OMEGA WITH OXIA
+1FBB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBE ; Full_Composition_Exclusion # L& GREEK PROSGEGRAMMENI
+1FC9 ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER ETA WITH OXIA
+1FD3 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FDB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE3 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FEB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEE..1FEF ; Full_Composition_Exclusion # Sk [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+1FF9 ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFD ; Full_Composition_Exclusion # Sk GREEK OXIA
+2000..2001 ; Full_Composition_Exclusion # Zs [2] EN QUAD..EM QUAD
+2126 ; Full_Composition_Exclusion # L& OHM SIGN
+212A..212B ; Full_Composition_Exclusion # L& [2] KELVIN SIGN..ANGSTROM SIGN
+2329 ; Full_Composition_Exclusion # Ps LEFT-POINTING ANGLE BRACKET
+232A ; Full_Composition_Exclusion # Pe RIGHT-POINTING ANGLE BRACKET
+2ADC ; Full_Composition_Exclusion # Sm FORKING
+F900..FA0D ; Full_Composition_Exclusion # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; Full_Composition_Exclusion # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; Full_Composition_Exclusion # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; Full_Composition_Exclusion # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; Full_Composition_Exclusion # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; Full_Composition_Exclusion # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D ; Full_Composition_Exclusion # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Full_Composition_Exclusion # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Full_Composition_Exclusion # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Full_Composition_Exclusion # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Full_Composition_Exclusion # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Full_Composition_Exclusion # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Full_Composition_Exclusion # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; Full_Composition_Exclusion # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; Full_Composition_Exclusion # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Full_Composition_Exclusion # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+2F800..2FA1D ; Full_Composition_Exclusion # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 1115
+
+# ================================================
+
+# Property: NFD_Quick_Check
+
+# All code points not explicitly listed for NFD_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFD_QC; Yes
+
+# ================================================
+
+# NFD_Quick_Check=No
+
+00C0..00C5 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; NFD_QC; N # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; NFD_QC; N # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; NFD_QC; N # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; NFD_QC; N # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; NFD_QC; N # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; NFD_QC; N # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; NFD_QC; N # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; NFD_QC; N # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; NFD_QC; N # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0134..0137 ; NFD_QC; N # L& [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA
+0139..013E ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON
+0143..0148 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N WITH CARON
+014C..0151 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; NFD_QC; N # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017E ; NFD_QC; N # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+01A0..01A1 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01CD..01DC ; NFD_QC; N # L& [16] LATIN CAPITAL LETTER A WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F0 ; NFD_QC; N # L& [11] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER J WITH CARON
+01F4..01F5 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER G WITH ACUTE..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; NFD_QC; N # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; NFD_QC; N # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+0340..0341 ; NFD_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFD_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFD_QC; N # Sk GREEK NUMERAL SIGN
+037E ; NFD_QC; N # Po GREEK QUESTION MARK
+0385 ; NFD_QC; N # Sk GREEK DIALYTIKA TONOS
+0386 ; NFD_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387 ; NFD_QC; N # Po GREEK ANO TELEIA
+0388..038A ; NFD_QC; N # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; NFD_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; NFD_QC; N # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; NFD_QC; N # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; NFD_QC; N # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D3..03D4 ; NFD_QC; N # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+0400..0401 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; NFD_QC; N # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; NFD_QC; N # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; NFD_QC; N # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; NFD_QC; N # L& CYRILLIC SMALL LETTER GJE
+0457 ; NFD_QC; N # L& CYRILLIC SMALL LETTER YI
+045C..045E ; NFD_QC; N # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; NFD_QC; N # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; NFD_QC; N # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; NFD_QC; N # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; NFD_QC; N # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0622..0626 ; NFD_QC; N # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+06C0 ; NFD_QC; N # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; NFD_QC; N # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; NFD_QC; N # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; NFD_QC; N # Lo DEVANAGARI LETTER NNNA
+0931 ; NFD_QC; N # Lo DEVANAGARI LETTER RRA
+0934 ; NFD_QC; N # Lo DEVANAGARI LETTER LLLA
+0958..095F ; NFD_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; NFD_QC; N # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; NFD_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFD_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFD_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFD_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFD_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFD_QC; N # Lo GURMUKHI LETTER FA
+0B48 ; NFD_QC; N # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; NFD_QC; N # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; NFD_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; NFD_QC; N # Lo TAMIL LETTER AU
+0BCA..0BCC ; NFD_QC; N # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; NFD_QC; N # Mn TELUGU VOWEL SIGN AI
+0CC0 ; NFD_QC; N # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; NFD_QC; N # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; NFD_QC; N # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; NFD_QC; N # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; NFD_QC; N # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; NFD_QC; N # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0F43 ; NFD_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFD_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFD_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFD_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFD_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFD_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; NFD_QC; N # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; NFD_QC; N # Lo MYANMAR LETTER UU
+1B06 ; NFD_QC; N # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; NFD_QC; N # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; NFD_QC; N # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; NFD_QC; N # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; NFD_QC; N # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; NFD_QC; N # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; NFD_QC; N # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; NFD_QC; N # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; NFD_QC; N # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; NFD_QC; N # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1E00..1E99 ; NFD_QC; N # L& [154] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH RING ABOVE
+1E9B ; NFD_QC; N # L& LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; NFD_QC; N # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; NFD_QC; N # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; NFD_QC; N # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; NFD_QC; N # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; NFD_QC; N # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; NFD_QC; N # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; NFD_QC; N # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; NFD_QC; N # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; NFD_QC; N # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBE ; NFD_QC; N # L& GREEK PROSGEGRAMMENI
+1FC1 ; NFD_QC; N # Sk GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; NFD_QC; N # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; NFD_QC; N # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; NFD_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; NFD_QC; N # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; NFD_QC; N # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; NFD_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; NFD_QC; N # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEF ; NFD_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF2..1FF4 ; NFD_QC; N # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; NFD_QC; N # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD ; NFD_QC; N # Sk GREEK OXIA
+2000..2001 ; NFD_QC; N # Zs [2] EN QUAD..EM QUAD
+2126 ; NFD_QC; N # L& OHM SIGN
+212A..212B ; NFD_QC; N # L& [2] KELVIN SIGN..ANGSTROM SIGN
+219A..219B ; NFD_QC; N # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; NFD_QC; N # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; NFD_QC; N # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; NFD_QC; N # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; NFD_QC; N # Sm THERE DOES NOT EXIST
+2209 ; NFD_QC; N # Sm NOT AN ELEMENT OF
+220C ; NFD_QC; N # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; NFD_QC; N # Sm DOES NOT DIVIDE
+2226 ; NFD_QC; N # Sm NOT PARALLEL TO
+2241 ; NFD_QC; N # Sm NOT TILDE
+2244 ; NFD_QC; N # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; NFD_QC; N # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; NFD_QC; N # Sm NOT ALMOST EQUAL TO
+2260 ; NFD_QC; N # Sm NOT EQUAL TO
+2262 ; NFD_QC; N # Sm NOT IDENTICAL TO
+226D..2271 ; NFD_QC; N # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; NFD_QC; N # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; NFD_QC; N # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; NFD_QC; N # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; NFD_QC; N # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; NFD_QC; N # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; NFD_QC; N # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; NFD_QC; N # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; NFD_QC; N # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2329 ; NFD_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFD_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2ADC ; NFD_QC; N # Sm FORKING
+304C ; NFD_QC; N # Lo HIRAGANA LETTER GA
+304E ; NFD_QC; N # Lo HIRAGANA LETTER GI
+3050 ; NFD_QC; N # Lo HIRAGANA LETTER GU
+3052 ; NFD_QC; N # Lo HIRAGANA LETTER GE
+3054 ; NFD_QC; N # Lo HIRAGANA LETTER GO
+3056 ; NFD_QC; N # Lo HIRAGANA LETTER ZA
+3058 ; NFD_QC; N # Lo HIRAGANA LETTER ZI
+305A ; NFD_QC; N # Lo HIRAGANA LETTER ZU
+305C ; NFD_QC; N # Lo HIRAGANA LETTER ZE
+305E ; NFD_QC; N # Lo HIRAGANA LETTER ZO
+3060 ; NFD_QC; N # Lo HIRAGANA LETTER DA
+3062 ; NFD_QC; N # Lo HIRAGANA LETTER DI
+3065 ; NFD_QC; N # Lo HIRAGANA LETTER DU
+3067 ; NFD_QC; N # Lo HIRAGANA LETTER DE
+3069 ; NFD_QC; N # Lo HIRAGANA LETTER DO
+3070..3071 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; NFD_QC; N # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; NFD_QC; N # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; NFD_QC; N # Lo HIRAGANA LETTER VU
+309E ; NFD_QC; N # Lm HIRAGANA VOICED ITERATION MARK
+30AC ; NFD_QC; N # Lo KATAKANA LETTER GA
+30AE ; NFD_QC; N # Lo KATAKANA LETTER GI
+30B0 ; NFD_QC; N # Lo KATAKANA LETTER GU
+30B2 ; NFD_QC; N # Lo KATAKANA LETTER GE
+30B4 ; NFD_QC; N # Lo KATAKANA LETTER GO
+30B6 ; NFD_QC; N # Lo KATAKANA LETTER ZA
+30B8 ; NFD_QC; N # Lo KATAKANA LETTER ZI
+30BA ; NFD_QC; N # Lo KATAKANA LETTER ZU
+30BC ; NFD_QC; N # Lo KATAKANA LETTER ZE
+30BE ; NFD_QC; N # Lo KATAKANA LETTER ZO
+30C0 ; NFD_QC; N # Lo KATAKANA LETTER DA
+30C2 ; NFD_QC; N # Lo KATAKANA LETTER DI
+30C5 ; NFD_QC; N # Lo KATAKANA LETTER DU
+30C7 ; NFD_QC; N # Lo KATAKANA LETTER DE
+30C9 ; NFD_QC; N # Lo KATAKANA LETTER DO
+30D0..30D1 ; NFD_QC; N # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; NFD_QC; N # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; NFD_QC; N # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; NFD_QC; N # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; NFD_QC; N # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; NFD_QC; N # Lo KATAKANA LETTER VU
+30F7..30FA ; NFD_QC; N # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; NFD_QC; N # Lm KATAKANA VOICED ITERATION MARK
+AC00..D7A3 ; NFD_QC; N # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+F900..FA0D ; NFD_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFD_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFD_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFD_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFD_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFD_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D ; NFD_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; NFD_QC; N # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; NFD_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFD_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFD_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFD_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFD_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; NFD_QC; N # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; NFD_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFD_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+2F800..2FA1D ; NFD_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 13215
+
+# ================================================
+
+# Property: NFC_Quick_Check
+
+# All code points not explicitly listed for NFC_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFC_QC; Yes
+
+# ================================================
+
+# NFC_Quick_Check=No
+
+0340..0341 ; NFC_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFC_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFC_QC; N # Sk GREEK NUMERAL SIGN
+037E ; NFC_QC; N # Po GREEK QUESTION MARK
+0387 ; NFC_QC; N # Po GREEK ANO TELEIA
+0958..095F ; NFC_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; NFC_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFC_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFC_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFC_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFC_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFC_QC; N # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; NFC_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0F43 ; NFC_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFC_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFC_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFC_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFC_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFC_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; NFC_QC; N # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+1F71 ; NFC_QC; N # L& GREEK SMALL LETTER ALPHA WITH OXIA
+1F73 ; NFC_QC; N # L& GREEK SMALL LETTER EPSILON WITH OXIA
+1F75 ; NFC_QC; N # L& GREEK SMALL LETTER ETA WITH OXIA
+1F77 ; NFC_QC; N # L& GREEK SMALL LETTER IOTA WITH OXIA
+1F79 ; NFC_QC; N # L& GREEK SMALL LETTER OMICRON WITH OXIA
+1F7B ; NFC_QC; N # L& GREEK SMALL LETTER UPSILON WITH OXIA
+1F7D ; NFC_QC; N # L& GREEK SMALL LETTER OMEGA WITH OXIA
+1FBB ; NFC_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBE ; NFC_QC; N # L& GREEK PROSGEGRAMMENI
+1FC9 ; NFC_QC; N # L& GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCB ; NFC_QC; N # L& GREEK CAPITAL LETTER ETA WITH OXIA
+1FD3 ; NFC_QC; N # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FDB ; NFC_QC; N # L& GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE3 ; NFC_QC; N # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FEB ; NFC_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEE..1FEF ; NFC_QC; N # Sk [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+1FF9 ; NFC_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFB ; NFC_QC; N # L& GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFD ; NFC_QC; N # Sk GREEK OXIA
+2000..2001 ; NFC_QC; N # Zs [2] EN QUAD..EM QUAD
+2126 ; NFC_QC; N # L& OHM SIGN
+212A..212B ; NFC_QC; N # L& [2] KELVIN SIGN..ANGSTROM SIGN
+2329 ; NFC_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFC_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2ADC ; NFC_QC; N # Sm FORKING
+F900..FA0D ; NFC_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFC_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFC_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFC_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFC_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFC_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D ; NFC_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; NFC_QC; N # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; NFC_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFC_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFC_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFC_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFC_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; NFC_QC; N # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; NFC_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFC_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+2F800..2FA1D ; NFC_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 1115
+
+# ================================================
+
+# NFC_Quick_Check=Maybe
+
+0300..0304 ; NFC_QC; M # Mn [5] COMBINING GRAVE ACCENT..COMBINING MACRON
+0306..030C ; NFC_QC; M # Mn [7] COMBINING BREVE..COMBINING CARON
+030F ; NFC_QC; M # Mn COMBINING DOUBLE GRAVE ACCENT
+0311 ; NFC_QC; M # Mn COMBINING INVERTED BREVE
+0313..0314 ; NFC_QC; M # Mn [2] COMBINING COMMA ABOVE..COMBINING REVERSED COMMA ABOVE
+031B ; NFC_QC; M # Mn COMBINING HORN
+0323..0328 ; NFC_QC; M # Mn [6] COMBINING DOT BELOW..COMBINING OGONEK
+032D..032E ; NFC_QC; M # Mn [2] COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW
+0330..0331 ; NFC_QC; M # Mn [2] COMBINING TILDE BELOW..COMBINING MACRON BELOW
+0338 ; NFC_QC; M # Mn COMBINING LONG SOLIDUS OVERLAY
+0342 ; NFC_QC; M # Mn COMBINING GREEK PERISPOMENI
+0345 ; NFC_QC; M # Mn COMBINING GREEK YPOGEGRAMMENI
+0653..0655 ; NFC_QC; M # Mn [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW
+093C ; NFC_QC; M # Mn DEVANAGARI SIGN NUKTA
+09BE ; NFC_QC; M # Mc BENGALI VOWEL SIGN AA
+09D7 ; NFC_QC; M # Mc BENGALI AU LENGTH MARK
+0B3E ; NFC_QC; M # Mc ORIYA VOWEL SIGN AA
+0B56 ; NFC_QC; M # Mn ORIYA AI LENGTH MARK
+0B57 ; NFC_QC; M # Mc ORIYA AU LENGTH MARK
+0BBE ; NFC_QC; M # Mc TAMIL VOWEL SIGN AA
+0BD7 ; NFC_QC; M # Mc TAMIL AU LENGTH MARK
+0C56 ; NFC_QC; M # Mn TELUGU AI LENGTH MARK
+0CC2 ; NFC_QC; M # Mc KANNADA VOWEL SIGN UU
+0CD5..0CD6 ; NFC_QC; M # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0D3E ; NFC_QC; M # Mc MALAYALAM VOWEL SIGN AA
+0D57 ; NFC_QC; M # Mc MALAYALAM AU LENGTH MARK
+0DCA ; NFC_QC; M # Mn SINHALA SIGN AL-LAKUNA
+0DCF ; NFC_QC; M # Mc SINHALA VOWEL SIGN AELA-PILLA
+0DDF ; NFC_QC; M # Mc SINHALA VOWEL SIGN GAYANUKITTA
+102E ; NFC_QC; M # Mn MYANMAR VOWEL SIGN II
+1161..1175 ; NFC_QC; M # Lo [21] HANGUL JUNGSEONG A..HANGUL JUNGSEONG I
+11A8..11C2 ; NFC_QC; M # Lo [27] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG HIEUH
+1B35 ; NFC_QC; M # Mc BALINESE VOWEL SIGN TEDUNG
+3099..309A ; NFC_QC; M # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+
+# Total code points: 102
+
+# ================================================
+
+# Property: NFKD_Quick_Check
+
+# All code points not explicitly listed for NFKD_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFKD_QC; Yes
+
+# ================================================
+
+# NFKD_Quick_Check=No
+
+00A0 ; NFKD_QC; N # Zs NO-BREAK SPACE
+00A8 ; NFKD_QC; N # Sk DIAERESIS
+00AA ; NFKD_QC; N # L& FEMININE ORDINAL INDICATOR
+00AF ; NFKD_QC; N # Sk MACRON
+00B2..00B3 ; NFKD_QC; N # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+00B4 ; NFKD_QC; N # Sk ACUTE ACCENT
+00B5 ; NFKD_QC; N # L& MICRO SIGN
+00B8 ; NFKD_QC; N # Sk CEDILLA
+00B9 ; NFKD_QC; N # No SUPERSCRIPT ONE
+00BA ; NFKD_QC; N # L& MASCULINE ORDINAL INDICATOR
+00BC..00BE ; NFKD_QC; N # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+00C0..00C5 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; NFKD_QC; N # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; NFKD_QC; N # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; NFKD_QC; N # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; NFKD_QC; N # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; NFKD_QC; N # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; NFKD_QC; N # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; NFKD_QC; N # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; NFKD_QC; N # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; NFKD_QC; N # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132..0137 ; NFKD_QC; N # L& [6] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LETTER K WITH CEDILLA
+0139..0140 ; NFKD_QC; N # L& [8] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH MIDDLE DOT
+0143..0149 ; NFKD_QC; N # L& [7] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014C..0151 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; NFKD_QC; N # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017F ; NFKD_QC; N # L& [24] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER LONG S
+01A0..01A1 ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01C4..01DC ; NFKD_QC; N # L& [25] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F5 ; NFKD_QC; N # L& [16] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; NFKD_QC; N # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; NFKD_QC; N # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+02B0..02B8 ; NFKD_QC; N # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+02D8..02DD ; NFKD_QC; N # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+02E0..02E4 ; NFKD_QC; N # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+0340..0341 ; NFKD_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFKD_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFKD_QC; N # Sk GREEK NUMERAL SIGN
+037A ; NFKD_QC; N # Lm GREEK YPOGEGRAMMENI
+037E ; NFKD_QC; N # Po GREEK QUESTION MARK
+0384..0385 ; NFKD_QC; N # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0386 ; NFKD_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387 ; NFKD_QC; N # Po GREEK ANO TELEIA
+0388..038A ; NFKD_QC; N # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; NFKD_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; NFKD_QC; N # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; NFKD_QC; N # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; NFKD_QC; N # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D0..03D6 ; NFKD_QC; N # L& [7] GREEK BETA SYMBOL..GREEK PI SYMBOL
+03F0..03F2 ; NFKD_QC; N # L& [3] GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL
+03F4..03F5 ; NFKD_QC; N # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+03F9 ; NFKD_QC; N # L& GREEK CAPITAL LUNATE SIGMA SYMBOL
+0400..0401 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; NFKD_QC; N # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; NFKD_QC; N # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER GJE
+0457 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER YI
+045C..045E ; NFKD_QC; N # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; NFKD_QC; N # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; NFKD_QC; N # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; NFKD_QC; N # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; NFKD_QC; N # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0587 ; NFKD_QC; N # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0622..0626 ; NFKD_QC; N # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+0675..0678 ; NFKD_QC; N # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+06C0 ; NFKD_QC; N # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; NFKD_QC; N # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; NFKD_QC; N # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; NFKD_QC; N # Lo DEVANAGARI LETTER NNNA
+0931 ; NFKD_QC; N # Lo DEVANAGARI LETTER RRA
+0934 ; NFKD_QC; N # Lo DEVANAGARI LETTER LLLA
+0958..095F ; NFKD_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; NFKD_QC; N # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; NFKD_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFKD_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFKD_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFKD_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFKD_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFKD_QC; N # Lo GURMUKHI LETTER FA
+0B48 ; NFKD_QC; N # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; NFKD_QC; N # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; NFKD_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; NFKD_QC; N # Lo TAMIL LETTER AU
+0BCA..0BCC ; NFKD_QC; N # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; NFKD_QC; N # Mn TELUGU VOWEL SIGN AI
+0CC0 ; NFKD_QC; N # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; NFKD_QC; N # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; NFKD_QC; N # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; NFKD_QC; N # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; NFKD_QC; N # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; NFKD_QC; N # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0E33 ; NFKD_QC; N # Lo THAI CHARACTER SARA AM
+0EB3 ; NFKD_QC; N # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; NFKD_QC; N # Lo [2] LAO HO NO..LAO HO MO
+0F0C ; NFKD_QC; N # Po TIBETAN MARK DELIMITER TSHEG BSTAR
+0F43 ; NFKD_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFKD_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFKD_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFKD_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFKD_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFKD_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFKD_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; NFKD_QC; N # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; NFKD_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; NFKD_QC; N # Lo MYANMAR LETTER UU
+10FC ; NFKD_QC; N # Lm MODIFIER LETTER GEORGIAN NAR
+1B06 ; NFKD_QC; N # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; NFKD_QC; N # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; NFKD_QC; N # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; NFKD_QC; N # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; NFKD_QC; N # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; NFKD_QC; N # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; NFKD_QC; N # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; NFKD_QC; N # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; NFKD_QC; N # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; NFKD_QC; N # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1D2C..1D2E ; NFKD_QC; N # Lm [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B
+1D30..1D3A ; NFKD_QC; N # Lm [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N
+1D3C..1D4D ; NFKD_QC; N # Lm [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G
+1D4F..1D61 ; NFKD_QC; N # Lm [19] MODIFIER LETTER SMALL K..MODIFIER LETTER SMALL CHI
+1D62..1D6A ; NFKD_QC; N # L& [9] LATIN SUBSCRIPT SMALL LETTER I..GREEK SUBSCRIPT SMALL LETTER CHI
+1D78 ; NFKD_QC; N # Lm MODIFIER LETTER CYRILLIC EN
+1D9B..1DBF ; NFKD_QC; N # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+1E00..1E9B ; NFKD_QC; N # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; NFKD_QC; N # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; NFKD_QC; N # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; NFKD_QC; N # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; NFKD_QC; N # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; NFKD_QC; N # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; NFKD_QC; N # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; NFKD_QC; N # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; NFKD_QC; N # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD ; NFKD_QC; N # Sk GREEK KORONIS
+1FBE ; NFKD_QC; N # L& GREEK PROSGEGRAMMENI
+1FBF..1FC1 ; NFKD_QC; N # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; NFKD_QC; N # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; NFKD_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; NFKD_QC; N # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; NFKD_QC; N # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; NFKD_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; NFKD_QC; N # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEF ; NFKD_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF2..1FF4 ; NFKD_QC; N # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD..1FFE ; NFKD_QC; N # Sk [2] GREEK OXIA..GREEK DASIA
+2000..200A ; NFKD_QC; N # Zs [11] EN QUAD..HAIR SPACE
+2011 ; NFKD_QC; N # Pd NON-BREAKING HYPHEN
+2017 ; NFKD_QC; N # Po DOUBLE LOW LINE
+2024..2026 ; NFKD_QC; N # Po [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS
+202F ; NFKD_QC; N # Zs NARROW NO-BREAK SPACE
+2033..2034 ; NFKD_QC; N # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; NFKD_QC; N # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; NFKD_QC; N # Po DOUBLE EXCLAMATION MARK
+203E ; NFKD_QC; N # Po OVERLINE
+2047..2049 ; NFKD_QC; N # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; NFKD_QC; N # Po QUADRUPLE PRIME
+205F ; NFKD_QC; N # Zs MEDIUM MATHEMATICAL SPACE
+2070 ; NFKD_QC; N # No SUPERSCRIPT ZERO
+2071 ; NFKD_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER I
+2074..2079 ; NFKD_QC; N # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+207A..207C ; NFKD_QC; N # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+207D ; NFKD_QC; N # Ps SUPERSCRIPT LEFT PARENTHESIS
+207E ; NFKD_QC; N # Pe SUPERSCRIPT RIGHT PARENTHESIS
+207F ; NFKD_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER N
+2080..2089 ; NFKD_QC; N # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+208A..208C ; NFKD_QC; N # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+208D ; NFKD_QC; N # Ps SUBSCRIPT LEFT PARENTHESIS
+208E ; NFKD_QC; N # Pe SUBSCRIPT RIGHT PARENTHESIS
+2090..2094 ; NFKD_QC; N # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+20A8 ; NFKD_QC; N # Sc RUPEE SIGN
+2100..2101 ; NFKD_QC; N # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2102 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL C
+2103 ; NFKD_QC; N # So DEGREE CELSIUS
+2105..2106 ; NFKD_QC; N # So [2] CARE OF..CADA UNA
+2107 ; NFKD_QC; N # L& EULER CONSTANT
+2109 ; NFKD_QC; N # So DEGREE FAHRENHEIT
+210A..2113 ; NFKD_QC; N # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2115 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL N
+2116 ; NFKD_QC; N # So NUMERO SIGN
+2119..211D ; NFKD_QC; N # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2120..2122 ; NFKD_QC; N # So [3] SERVICE MARK..TRADE MARK SIGN
+2124 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL Z
+2126 ; NFKD_QC; N # L& OHM SIGN
+2128 ; NFKD_QC; N # L& BLACK-LETTER CAPITAL Z
+212A..212D ; NFKD_QC; N # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+212F..2131 ; NFKD_QC; N # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+2133..2134 ; NFKD_QC; N # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+2135..2138 ; NFKD_QC; N # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2139 ; NFKD_QC; N # L& INFORMATION SOURCE
+213B ; NFKD_QC; N # So FACSIMILE SIGN
+213C..213F ; NFKD_QC; N # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2140 ; NFKD_QC; N # Sm DOUBLE-STRUCK N-ARY SUMMATION
+2145..2149 ; NFKD_QC; N # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+2153..215F ; NFKD_QC; N # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2160..217F ; NFKD_QC; N # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+219A..219B ; NFKD_QC; N # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; NFKD_QC; N # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; NFKD_QC; N # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; NFKD_QC; N # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; NFKD_QC; N # Sm THERE DOES NOT EXIST
+2209 ; NFKD_QC; N # Sm NOT AN ELEMENT OF
+220C ; NFKD_QC; N # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; NFKD_QC; N # Sm DOES NOT DIVIDE
+2226 ; NFKD_QC; N # Sm NOT PARALLEL TO
+222C..222D ; NFKD_QC; N # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; NFKD_QC; N # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2241 ; NFKD_QC; N # Sm NOT TILDE
+2244 ; NFKD_QC; N # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; NFKD_QC; N # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; NFKD_QC; N # Sm NOT ALMOST EQUAL TO
+2260 ; NFKD_QC; N # Sm NOT EQUAL TO
+2262 ; NFKD_QC; N # Sm NOT IDENTICAL TO
+226D..2271 ; NFKD_QC; N # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; NFKD_QC; N # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; NFKD_QC; N # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; NFKD_QC; N # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; NFKD_QC; N # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; NFKD_QC; N # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; NFKD_QC; N # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; NFKD_QC; N # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; NFKD_QC; N # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2329 ; NFKD_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFKD_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2460..249B ; NFKD_QC; N # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+249C..24E9 ; NFKD_QC; N # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+24EA ; NFKD_QC; N # No CIRCLED DIGIT ZERO
+2A0C ; NFKD_QC; N # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; NFKD_QC; N # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; NFKD_QC; N # Sm FORKING
+2D6F ; NFKD_QC; N # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2E9F ; NFKD_QC; N # So CJK RADICAL MOTHER
+2EF3 ; NFKD_QC; N # So CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5 ; NFKD_QC; N # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+3000 ; NFKD_QC; N # Zs IDEOGRAPHIC SPACE
+3036 ; NFKD_QC; N # So CIRCLED POSTAL MARK
+3038..303A ; NFKD_QC; N # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+304C ; NFKD_QC; N # Lo HIRAGANA LETTER GA
+304E ; NFKD_QC; N # Lo HIRAGANA LETTER GI
+3050 ; NFKD_QC; N # Lo HIRAGANA LETTER GU
+3052 ; NFKD_QC; N # Lo HIRAGANA LETTER GE
+3054 ; NFKD_QC; N # Lo HIRAGANA LETTER GO
+3056 ; NFKD_QC; N # Lo HIRAGANA LETTER ZA
+3058 ; NFKD_QC; N # Lo HIRAGANA LETTER ZI
+305A ; NFKD_QC; N # Lo HIRAGANA LETTER ZU
+305C ; NFKD_QC; N # Lo HIRAGANA LETTER ZE
+305E ; NFKD_QC; N # Lo HIRAGANA LETTER ZO
+3060 ; NFKD_QC; N # Lo HIRAGANA LETTER DA
+3062 ; NFKD_QC; N # Lo HIRAGANA LETTER DI
+3065 ; NFKD_QC; N # Lo HIRAGANA LETTER DU
+3067 ; NFKD_QC; N # Lo HIRAGANA LETTER DE
+3069 ; NFKD_QC; N # Lo HIRAGANA LETTER DO
+3070..3071 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; NFKD_QC; N # Lo HIRAGANA LETTER VU
+309B..309C ; NFKD_QC; N # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309E ; NFKD_QC; N # Lm HIRAGANA VOICED ITERATION MARK
+309F ; NFKD_QC; N # Lo HIRAGANA DIGRAPH YORI
+30AC ; NFKD_QC; N # Lo KATAKANA LETTER GA
+30AE ; NFKD_QC; N # Lo KATAKANA LETTER GI
+30B0 ; NFKD_QC; N # Lo KATAKANA LETTER GU
+30B2 ; NFKD_QC; N # Lo KATAKANA LETTER GE
+30B4 ; NFKD_QC; N # Lo KATAKANA LETTER GO
+30B6 ; NFKD_QC; N # Lo KATAKANA LETTER ZA
+30B8 ; NFKD_QC; N # Lo KATAKANA LETTER ZI
+30BA ; NFKD_QC; N # Lo KATAKANA LETTER ZU
+30BC ; NFKD_QC; N # Lo KATAKANA LETTER ZE
+30BE ; NFKD_QC; N # Lo KATAKANA LETTER ZO
+30C0 ; NFKD_QC; N # Lo KATAKANA LETTER DA
+30C2 ; NFKD_QC; N # Lo KATAKANA LETTER DI
+30C5 ; NFKD_QC; N # Lo KATAKANA LETTER DU
+30C7 ; NFKD_QC; N # Lo KATAKANA LETTER DE
+30C9 ; NFKD_QC; N # Lo KATAKANA LETTER DO
+30D0..30D1 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; NFKD_QC; N # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; NFKD_QC; N # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; NFKD_QC; N # Lo KATAKANA LETTER VU
+30F7..30FA ; NFKD_QC; N # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; NFKD_QC; N # Lm KATAKANA VOICED ITERATION MARK
+30FF ; NFKD_QC; N # Lo KATAKANA DIGRAPH KOTO
+3131..318E ; NFKD_QC; N # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+3192..3195 ; NFKD_QC; N # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3196..319F ; NFKD_QC; N # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+3200..321E ; NFKD_QC; N # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; NFKD_QC; N # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; NFKD_QC; N # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; NFKD_QC; N # So PARTNERSHIP SIGN
+3251..325F ; NFKD_QC; N # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+3260..327E ; NFKD_QC; N # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
+3280..3289 ; NFKD_QC; N # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+328A..32B0 ; NFKD_QC; N # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32B1..32BF ; NFKD_QC; N # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32FE ; NFKD_QC; N # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
+3300..33FF ; NFKD_QC; N # So [256] SQUARE APAATO..SQUARE GAL
+AC00..D7A3 ; NFKD_QC; N # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+F900..FA0D ; NFKD_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFKD_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFKD_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFKD_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFKD_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFKD_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB00..FB06 ; NFKD_QC; N # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; NFKD_QC; N # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; NFKD_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28 ; NFKD_QC; N # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB29 ; NFKD_QC; N # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A..FB36 ; NFKD_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFKD_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFKD_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFKD_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFKD_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1 ; NFKD_QC; N # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; NFKD_QC; N # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; NFKD_QC; N # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; NFKD_QC; N # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; NFKD_QC; N # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; NFKD_QC; N # Sc RIAL SIGN
+FE10..FE16 ; NFKD_QC; N # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19 ; NFKD_QC; N # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; NFKD_QC; N # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31..FE32 ; NFKD_QC; N # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+FE33..FE34 ; NFKD_QC; N # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE47 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49..FE4C ; NFKD_QC; N # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE4D..FE4F ; NFKD_QC; N # Pc [3] DASHED LOW LINE..WAVY LOW LINE
+FE50..FE52 ; NFKD_QC; N # Po [3] SMALL COMMA..SMALL FULL STOP
+FE54..FE57 ; NFKD_QC; N # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+FE58 ; NFKD_QC; N # Pd SMALL EM DASH
+FE59 ; NFKD_QC; N # Ps SMALL LEFT PARENTHESIS
+FE5A ; NFKD_QC; N # Pe SMALL RIGHT PARENTHESIS
+FE5B ; NFKD_QC; N # Ps SMALL LEFT CURLY BRACKET
+FE5C ; NFKD_QC; N # Pe SMALL RIGHT CURLY BRACKET
+FE5D ; NFKD_QC; N # Ps SMALL LEFT TORTOISE SHELL BRACKET
+FE5E ; NFKD_QC; N # Pe SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F..FE61 ; NFKD_QC; N # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK
+FE62 ; NFKD_QC; N # Sm SMALL PLUS SIGN
+FE63 ; NFKD_QC; N # Pd SMALL HYPHEN-MINUS
+FE64..FE66 ; NFKD_QC; N # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FE68 ; NFKD_QC; N # Po SMALL REVERSE SOLIDUS
+FE69 ; NFKD_QC; N # Sc SMALL DOLLAR SIGN
+FE6A..FE6B ; NFKD_QC; N # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+FE70..FE72 ; NFKD_QC; N # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; NFKD_QC; N # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; NFKD_QC; N # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF01..FF03 ; NFKD_QC; N # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+FF04 ; NFKD_QC; N # Sc FULLWIDTH DOLLAR SIGN
+FF05..FF07 ; NFKD_QC; N # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+FF08 ; NFKD_QC; N # Ps FULLWIDTH LEFT PARENTHESIS
+FF09 ; NFKD_QC; N # Pe FULLWIDTH RIGHT PARENTHESIS
+FF0A ; NFKD_QC; N # Po FULLWIDTH ASTERISK
+FF0B ; NFKD_QC; N # Sm FULLWIDTH PLUS SIGN
+FF0C ; NFKD_QC; N # Po FULLWIDTH COMMA
+FF0D ; NFKD_QC; N # Pd FULLWIDTH HYPHEN-MINUS
+FF0E..FF0F ; NFKD_QC; N # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+FF10..FF19 ; NFKD_QC; N # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+FF1A..FF1B ; NFKD_QC; N # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+FF1C..FF1E ; NFKD_QC; N # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF1F..FF20 ; NFKD_QC; N # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+FF21..FF3A ; NFKD_QC; N # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B ; NFKD_QC; N # Ps FULLWIDTH LEFT SQUARE BRACKET
+FF3C ; NFKD_QC; N # Po FULLWIDTH REVERSE SOLIDUS
+FF3D ; NFKD_QC; N # Pe FULLWIDTH RIGHT SQUARE BRACKET
+FF3E ; NFKD_QC; N # Sk FULLWIDTH CIRCUMFLEX ACCENT
+FF3F ; NFKD_QC; N # Pc FULLWIDTH LOW LINE
+FF40 ; NFKD_QC; N # Sk FULLWIDTH GRAVE ACCENT
+FF41..FF5A ; NFKD_QC; N # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+FF5B ; NFKD_QC; N # Ps FULLWIDTH LEFT CURLY BRACKET
+FF5C ; NFKD_QC; N # Sm FULLWIDTH VERTICAL LINE
+FF5D ; NFKD_QC; N # Pe FULLWIDTH RIGHT CURLY BRACKET
+FF5E ; NFKD_QC; N # Sm FULLWIDTH TILDE
+FF5F ; NFKD_QC; N # Ps FULLWIDTH LEFT WHITE PARENTHESIS
+FF60 ; NFKD_QC; N # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61 ; NFKD_QC; N # Po HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62 ; NFKD_QC; N # Ps HALFWIDTH LEFT CORNER BRACKET
+FF63 ; NFKD_QC; N # Pe HALFWIDTH RIGHT CORNER BRACKET
+FF64..FF65 ; NFKD_QC; N # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+FF66..FF6F ; NFKD_QC; N # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF70 ; NFKD_QC; N # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71..FF9D ; NFKD_QC; N # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FF9E..FF9F ; NFKD_QC; N # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0..FFBE ; NFKD_QC; N # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; NFKD_QC; N # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+FFE0..FFE1 ; NFKD_QC; N # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+FFE2 ; NFKD_QC; N # Sm FULLWIDTH NOT SIGN
+FFE3 ; NFKD_QC; N # Sk FULLWIDTH MACRON
+FFE4 ; NFKD_QC; N # So FULLWIDTH BROKEN BAR
+FFE5..FFE6 ; NFKD_QC; N # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+FFE8 ; NFKD_QC; N # So HALFWIDTH FORMS LIGHT VERTICAL
+FFE9..FFEC ; NFKD_QC; N # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+FFED..FFEE ; NFKD_QC; N # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+1D15E..1D164 ; NFKD_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFKD_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+1D400..1D454 ; NFKD_QC; N # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; NFKD_QC; N # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; NFKD_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; NFKD_QC; N # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; NFKD_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; NFKD_QC; N # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; NFKD_QC; N # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; NFKD_QC; N # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; NFKD_QC; N # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; NFKD_QC; N # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; NFKD_QC; N # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; NFKD_QC; N # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; NFKD_QC; N # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; NFKD_QC; N # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; NFKD_QC; N # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; NFKD_QC; N # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; NFKD_QC; N # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; NFKD_QC; N # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; NFKD_QC; N # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1 ; NFKD_QC; N # Sm MATHEMATICAL BOLD NABLA
+1D6C2..1D6DA ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DB ; NFKD_QC; N # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC..1D6FA ; NFKD_QC; N # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB ; NFKD_QC; N # Sm MATHEMATICAL ITALIC NABLA
+1D6FC..1D714 ; NFKD_QC; N # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D715 ; NFKD_QC; N # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716..1D734 ; NFKD_QC; N # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735 ; NFKD_QC; N # Sm MATHEMATICAL BOLD ITALIC NABLA
+1D736..1D74E ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F ; NFKD_QC; N # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750..1D76E ; NFKD_QC; N # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770..1D788 ; NFKD_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A..1D7A8 ; NFKD_QC; N # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA..1D7C2 ; NFKD_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4..1D7CB ; NFKD_QC; N # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE..1D7FF ; NFKD_QC; N # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+2F800..2FA1D ; NFKD_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 16574
+
+# ================================================
+
+# Property: NFKC_Quick_Check
+
+# All code points not explicitly listed for NFKC_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFKC_QC; Yes
+
+# ================================================
+
+# NFKC_Quick_Check=No
+
+00A0 ; NFKC_QC; N # Zs NO-BREAK SPACE
+00A8 ; NFKC_QC; N # Sk DIAERESIS
+00AA ; NFKC_QC; N # L& FEMININE ORDINAL INDICATOR
+00AF ; NFKC_QC; N # Sk MACRON
+00B2..00B3 ; NFKC_QC; N # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+00B4 ; NFKC_QC; N # Sk ACUTE ACCENT
+00B5 ; NFKC_QC; N # L& MICRO SIGN
+00B8 ; NFKC_QC; N # Sk CEDILLA
+00B9 ; NFKC_QC; N # No SUPERSCRIPT ONE
+00BA ; NFKC_QC; N # L& MASCULINE ORDINAL INDICATOR
+00BC..00BE ; NFKC_QC; N # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+0132..0133 ; NFKC_QC; N # L& [2] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
+013F..0140 ; NFKC_QC; N # L& [2] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
+0149 ; NFKC_QC; N # L& LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+017F ; NFKC_QC; N # L& LATIN SMALL LETTER LONG S
+01C4..01CC ; NFKC_QC; N # L& [9] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER NJ
+01F1..01F3 ; NFKC_QC; N # L& [3] LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
+02B0..02B8 ; NFKC_QC; N # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+02D8..02DD ; NFKC_QC; N # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+02E0..02E4 ; NFKC_QC; N # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+0340..0341 ; NFKC_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFKC_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFKC_QC; N # Sk GREEK NUMERAL SIGN
+037A ; NFKC_QC; N # Lm GREEK YPOGEGRAMMENI
+037E ; NFKC_QC; N # Po GREEK QUESTION MARK
+0384..0385 ; NFKC_QC; N # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0387 ; NFKC_QC; N # Po GREEK ANO TELEIA
+03D0..03D6 ; NFKC_QC; N # L& [7] GREEK BETA SYMBOL..GREEK PI SYMBOL
+03F0..03F2 ; NFKC_QC; N # L& [3] GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL
+03F4..03F5 ; NFKC_QC; N # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+03F9 ; NFKC_QC; N # L& GREEK CAPITAL LUNATE SIGMA SYMBOL
+0587 ; NFKC_QC; N # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0675..0678 ; NFKC_QC; N # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+0958..095F ; NFKC_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; NFKC_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFKC_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFKC_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFKC_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFKC_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFKC_QC; N # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; NFKC_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0E33 ; NFKC_QC; N # Lo THAI CHARACTER SARA AM
+0EB3 ; NFKC_QC; N # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; NFKC_QC; N # Lo [2] LAO HO NO..LAO HO MO
+0F0C ; NFKC_QC; N # Po TIBETAN MARK DELIMITER TSHEG BSTAR
+0F43 ; NFKC_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFKC_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFKC_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFKC_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFKC_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFKC_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFKC_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; NFKC_QC; N # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; NFKC_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+10FC ; NFKC_QC; N # Lm MODIFIER LETTER GEORGIAN NAR
+1D2C..1D2E ; NFKC_QC; N # Lm [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B
+1D30..1D3A ; NFKC_QC; N # Lm [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N
+1D3C..1D4D ; NFKC_QC; N # Lm [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G
+1D4F..1D61 ; NFKC_QC; N # Lm [19] MODIFIER LETTER SMALL K..MODIFIER LETTER SMALL CHI
+1D62..1D6A ; NFKC_QC; N # L& [9] LATIN SUBSCRIPT SMALL LETTER I..GREEK SUBSCRIPT SMALL LETTER CHI
+1D78 ; NFKC_QC; N # Lm MODIFIER LETTER CYRILLIC EN
+1D9B..1DBF ; NFKC_QC; N # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+1E9A..1E9B ; NFKC_QC; N # L& [2] LATIN SMALL LETTER A WITH RIGHT HALF RING..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1F71 ; NFKC_QC; N # L& GREEK SMALL LETTER ALPHA WITH OXIA
+1F73 ; NFKC_QC; N # L& GREEK SMALL LETTER EPSILON WITH OXIA
+1F75 ; NFKC_QC; N # L& GREEK SMALL LETTER ETA WITH OXIA
+1F77 ; NFKC_QC; N # L& GREEK SMALL LETTER IOTA WITH OXIA
+1F79 ; NFKC_QC; N # L& GREEK SMALL LETTER OMICRON WITH OXIA
+1F7B ; NFKC_QC; N # L& GREEK SMALL LETTER UPSILON WITH OXIA
+1F7D ; NFKC_QC; N # L& GREEK SMALL LETTER OMEGA WITH OXIA
+1FBB ; NFKC_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBD ; NFKC_QC; N # Sk GREEK KORONIS
+1FBE ; NFKC_QC; N # L& GREEK PROSGEGRAMMENI
+1FBF..1FC1 ; NFKC_QC; N # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC9 ; NFKC_QC; N # L& GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCB ; NFKC_QC; N # L& GREEK CAPITAL LETTER ETA WITH OXIA
+1FCD..1FCF ; NFKC_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD3 ; NFKC_QC; N # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FDB ; NFKC_QC; N # L& GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; NFKC_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE3 ; NFKC_QC; N # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FEB ; NFKC_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FED..1FEF ; NFKC_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF9 ; NFKC_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFB ; NFKC_QC; N # L& GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFD..1FFE ; NFKC_QC; N # Sk [2] GREEK OXIA..GREEK DASIA
+2000..200A ; NFKC_QC; N # Zs [11] EN QUAD..HAIR SPACE
+2011 ; NFKC_QC; N # Pd NON-BREAKING HYPHEN
+2017 ; NFKC_QC; N # Po DOUBLE LOW LINE
+2024..2026 ; NFKC_QC; N # Po [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS
+202F ; NFKC_QC; N # Zs NARROW NO-BREAK SPACE
+2033..2034 ; NFKC_QC; N # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; NFKC_QC; N # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; NFKC_QC; N # Po DOUBLE EXCLAMATION MARK
+203E ; NFKC_QC; N # Po OVERLINE
+2047..2049 ; NFKC_QC; N # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; NFKC_QC; N # Po QUADRUPLE PRIME
+205F ; NFKC_QC; N # Zs MEDIUM MATHEMATICAL SPACE
+2070 ; NFKC_QC; N # No SUPERSCRIPT ZERO
+2071 ; NFKC_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER I
+2074..2079 ; NFKC_QC; N # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+207A..207C ; NFKC_QC; N # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+207D ; NFKC_QC; N # Ps SUPERSCRIPT LEFT PARENTHESIS
+207E ; NFKC_QC; N # Pe SUPERSCRIPT RIGHT PARENTHESIS
+207F ; NFKC_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER N
+2080..2089 ; NFKC_QC; N # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+208A..208C ; NFKC_QC; N # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+208D ; NFKC_QC; N # Ps SUBSCRIPT LEFT PARENTHESIS
+208E ; NFKC_QC; N # Pe SUBSCRIPT RIGHT PARENTHESIS
+2090..2094 ; NFKC_QC; N # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+20A8 ; NFKC_QC; N # Sc RUPEE SIGN
+2100..2101 ; NFKC_QC; N # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2102 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL C
+2103 ; NFKC_QC; N # So DEGREE CELSIUS
+2105..2106 ; NFKC_QC; N # So [2] CARE OF..CADA UNA
+2107 ; NFKC_QC; N # L& EULER CONSTANT
+2109 ; NFKC_QC; N # So DEGREE FAHRENHEIT
+210A..2113 ; NFKC_QC; N # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2115 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL N
+2116 ; NFKC_QC; N # So NUMERO SIGN
+2119..211D ; NFKC_QC; N # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2120..2122 ; NFKC_QC; N # So [3] SERVICE MARK..TRADE MARK SIGN
+2124 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL Z
+2126 ; NFKC_QC; N # L& OHM SIGN
+2128 ; NFKC_QC; N # L& BLACK-LETTER CAPITAL Z
+212A..212D ; NFKC_QC; N # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+212F..2131 ; NFKC_QC; N # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+2133..2134 ; NFKC_QC; N # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+2135..2138 ; NFKC_QC; N # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2139 ; NFKC_QC; N # L& INFORMATION SOURCE
+213B ; NFKC_QC; N # So FACSIMILE SIGN
+213C..213F ; NFKC_QC; N # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2140 ; NFKC_QC; N # Sm DOUBLE-STRUCK N-ARY SUMMATION
+2145..2149 ; NFKC_QC; N # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+2153..215F ; NFKC_QC; N # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2160..217F ; NFKC_QC; N # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+222C..222D ; NFKC_QC; N # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; NFKC_QC; N # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2329 ; NFKC_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFKC_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2460..249B ; NFKC_QC; N # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+249C..24E9 ; NFKC_QC; N # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+24EA ; NFKC_QC; N # No CIRCLED DIGIT ZERO
+2A0C ; NFKC_QC; N # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; NFKC_QC; N # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; NFKC_QC; N # Sm FORKING
+2D6F ; NFKC_QC; N # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2E9F ; NFKC_QC; N # So CJK RADICAL MOTHER
+2EF3 ; NFKC_QC; N # So CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5 ; NFKC_QC; N # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+3000 ; NFKC_QC; N # Zs IDEOGRAPHIC SPACE
+3036 ; NFKC_QC; N # So CIRCLED POSTAL MARK
+3038..303A ; NFKC_QC; N # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+309B..309C ; NFKC_QC; N # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309F ; NFKC_QC; N # Lo HIRAGANA DIGRAPH YORI
+30FF ; NFKC_QC; N # Lo KATAKANA DIGRAPH KOTO
+3131..318E ; NFKC_QC; N # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+3192..3195 ; NFKC_QC; N # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3196..319F ; NFKC_QC; N # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+3200..321E ; NFKC_QC; N # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; NFKC_QC; N # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; NFKC_QC; N # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; NFKC_QC; N # So PARTNERSHIP SIGN
+3251..325F ; NFKC_QC; N # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+3260..327E ; NFKC_QC; N # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
+3280..3289 ; NFKC_QC; N # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+328A..32B0 ; NFKC_QC; N # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32B1..32BF ; NFKC_QC; N # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32FE ; NFKC_QC; N # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
+3300..33FF ; NFKC_QC; N # So [256] SQUARE APAATO..SQUARE GAL
+F900..FA0D ; NFKC_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFKC_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFKC_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFKC_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFKC_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFKC_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB00..FB06 ; NFKC_QC; N # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; NFKC_QC; N # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; NFKC_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28 ; NFKC_QC; N # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB29 ; NFKC_QC; N # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A..FB36 ; NFKC_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFKC_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFKC_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFKC_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFKC_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1 ; NFKC_QC; N # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; NFKC_QC; N # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; NFKC_QC; N # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; NFKC_QC; N # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; NFKC_QC; N # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; NFKC_QC; N # Sc RIAL SIGN
+FE10..FE16 ; NFKC_QC; N # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19 ; NFKC_QC; N # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; NFKC_QC; N # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31..FE32 ; NFKC_QC; N # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+FE33..FE34 ; NFKC_QC; N # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE47 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49..FE4C ; NFKC_QC; N # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE4D..FE4F ; NFKC_QC; N # Pc [3] DASHED LOW LINE..WAVY LOW LINE
+FE50..FE52 ; NFKC_QC; N # Po [3] SMALL COMMA..SMALL FULL STOP
+FE54..FE57 ; NFKC_QC; N # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+FE58 ; NFKC_QC; N # Pd SMALL EM DASH
+FE59 ; NFKC_QC; N # Ps SMALL LEFT PARENTHESIS
+FE5A ; NFKC_QC; N # Pe SMALL RIGHT PARENTHESIS
+FE5B ; NFKC_QC; N # Ps SMALL LEFT CURLY BRACKET
+FE5C ; NFKC_QC; N # Pe SMALL RIGHT CURLY BRACKET
+FE5D ; NFKC_QC; N # Ps SMALL LEFT TORTOISE SHELL BRACKET
+FE5E ; NFKC_QC; N # Pe SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F..FE61 ; NFKC_QC; N # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK
+FE62 ; NFKC_QC; N # Sm SMALL PLUS SIGN
+FE63 ; NFKC_QC; N # Pd SMALL HYPHEN-MINUS
+FE64..FE66 ; NFKC_QC; N # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FE68 ; NFKC_QC; N # Po SMALL REVERSE SOLIDUS
+FE69 ; NFKC_QC; N # Sc SMALL DOLLAR SIGN
+FE6A..FE6B ; NFKC_QC; N # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+FE70..FE72 ; NFKC_QC; N # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; NFKC_QC; N # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; NFKC_QC; N # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF01..FF03 ; NFKC_QC; N # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+FF04 ; NFKC_QC; N # Sc FULLWIDTH DOLLAR SIGN
+FF05..FF07 ; NFKC_QC; N # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+FF08 ; NFKC_QC; N # Ps FULLWIDTH LEFT PARENTHESIS
+FF09 ; NFKC_QC; N # Pe FULLWIDTH RIGHT PARENTHESIS
+FF0A ; NFKC_QC; N # Po FULLWIDTH ASTERISK
+FF0B ; NFKC_QC; N # Sm FULLWIDTH PLUS SIGN
+FF0C ; NFKC_QC; N # Po FULLWIDTH COMMA
+FF0D ; NFKC_QC; N # Pd FULLWIDTH HYPHEN-MINUS
+FF0E..FF0F ; NFKC_QC; N # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+FF10..FF19 ; NFKC_QC; N # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+FF1A..FF1B ; NFKC_QC; N # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+FF1C..FF1E ; NFKC_QC; N # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF1F..FF20 ; NFKC_QC; N # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+FF21..FF3A ; NFKC_QC; N # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B ; NFKC_QC; N # Ps FULLWIDTH LEFT SQUARE BRACKET
+FF3C ; NFKC_QC; N # Po FULLWIDTH REVERSE SOLIDUS
+FF3D ; NFKC_QC; N # Pe FULLWIDTH RIGHT SQUARE BRACKET
+FF3E ; NFKC_QC; N # Sk FULLWIDTH CIRCUMFLEX ACCENT
+FF3F ; NFKC_QC; N # Pc FULLWIDTH LOW LINE
+FF40 ; NFKC_QC; N # Sk FULLWIDTH GRAVE ACCENT
+FF41..FF5A ; NFKC_QC; N # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+FF5B ; NFKC_QC; N # Ps FULLWIDTH LEFT CURLY BRACKET
+FF5C ; NFKC_QC; N # Sm FULLWIDTH VERTICAL LINE
+FF5D ; NFKC_QC; N # Pe FULLWIDTH RIGHT CURLY BRACKET
+FF5E ; NFKC_QC; N # Sm FULLWIDTH TILDE
+FF5F ; NFKC_QC; N # Ps FULLWIDTH LEFT WHITE PARENTHESIS
+FF60 ; NFKC_QC; N # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61 ; NFKC_QC; N # Po HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62 ; NFKC_QC; N # Ps HALFWIDTH LEFT CORNER BRACKET
+FF63 ; NFKC_QC; N # Pe HALFWIDTH RIGHT CORNER BRACKET
+FF64..FF65 ; NFKC_QC; N # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+FF66..FF6F ; NFKC_QC; N # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF70 ; NFKC_QC; N # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71..FF9D ; NFKC_QC; N # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FF9E..FF9F ; NFKC_QC; N # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0..FFBE ; NFKC_QC; N # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; NFKC_QC; N # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+FFE0..FFE1 ; NFKC_QC; N # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+FFE2 ; NFKC_QC; N # Sm FULLWIDTH NOT SIGN
+FFE3 ; NFKC_QC; N # Sk FULLWIDTH MACRON
+FFE4 ; NFKC_QC; N # So FULLWIDTH BROKEN BAR
+FFE5..FFE6 ; NFKC_QC; N # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+FFE8 ; NFKC_QC; N # So HALFWIDTH FORMS LIGHT VERTICAL
+FFE9..FFEC ; NFKC_QC; N # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+FFED..FFEE ; NFKC_QC; N # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+1D15E..1D164 ; NFKC_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFKC_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+1D400..1D454 ; NFKC_QC; N # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; NFKC_QC; N # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; NFKC_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; NFKC_QC; N # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; NFKC_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; NFKC_QC; N # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; NFKC_QC; N # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; NFKC_QC; N # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; NFKC_QC; N # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; NFKC_QC; N # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; NFKC_QC; N # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; NFKC_QC; N # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; NFKC_QC; N # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; NFKC_QC; N # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; NFKC_QC; N # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; NFKC_QC; N # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; NFKC_QC; N # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; NFKC_QC; N # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; NFKC_QC; N # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1 ; NFKC_QC; N # Sm MATHEMATICAL BOLD NABLA
+1D6C2..1D6DA ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DB ; NFKC_QC; N # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC..1D6FA ; NFKC_QC; N # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB ; NFKC_QC; N # Sm MATHEMATICAL ITALIC NABLA
+1D6FC..1D714 ; NFKC_QC; N # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D715 ; NFKC_QC; N # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716..1D734 ; NFKC_QC; N # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735 ; NFKC_QC; N # Sm MATHEMATICAL BOLD ITALIC NABLA
+1D736..1D74E ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F ; NFKC_QC; N # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750..1D76E ; NFKC_QC; N # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770..1D788 ; NFKC_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A..1D7A8 ; NFKC_QC; N # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA..1D7C2 ; NFKC_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4..1D7CB ; NFKC_QC; N # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE..1D7FF ; NFKC_QC; N # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+2F800..2FA1D ; NFKC_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 4486
+
+# ================================================
+
+# NFKC_Quick_Check=Maybe
+
+0300..0304 ; NFKC_QC; M # Mn [5] COMBINING GRAVE ACCENT..COMBINING MACRON
+0306..030C ; NFKC_QC; M # Mn [7] COMBINING BREVE..COMBINING CARON
+030F ; NFKC_QC; M # Mn COMBINING DOUBLE GRAVE ACCENT
+0311 ; NFKC_QC; M # Mn COMBINING INVERTED BREVE
+0313..0314 ; NFKC_QC; M # Mn [2] COMBINING COMMA ABOVE..COMBINING REVERSED COMMA ABOVE
+031B ; NFKC_QC; M # Mn COMBINING HORN
+0323..0328 ; NFKC_QC; M # Mn [6] COMBINING DOT BELOW..COMBINING OGONEK
+032D..032E ; NFKC_QC; M # Mn [2] COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW
+0330..0331 ; NFKC_QC; M # Mn [2] COMBINING TILDE BELOW..COMBINING MACRON BELOW
+0338 ; NFKC_QC; M # Mn COMBINING LONG SOLIDUS OVERLAY
+0342 ; NFKC_QC; M # Mn COMBINING GREEK PERISPOMENI
+0345 ; NFKC_QC; M # Mn COMBINING GREEK YPOGEGRAMMENI
+0653..0655 ; NFKC_QC; M # Mn [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW
+093C ; NFKC_QC; M # Mn DEVANAGARI SIGN NUKTA
+09BE ; NFKC_QC; M # Mc BENGALI VOWEL SIGN AA
+09D7 ; NFKC_QC; M # Mc BENGALI AU LENGTH MARK
+0B3E ; NFKC_QC; M # Mc ORIYA VOWEL SIGN AA
+0B56 ; NFKC_QC; M # Mn ORIYA AI LENGTH MARK
+0B57 ; NFKC_QC; M # Mc ORIYA AU LENGTH MARK
+0BBE ; NFKC_QC; M # Mc TAMIL VOWEL SIGN AA
+0BD7 ; NFKC_QC; M # Mc TAMIL AU LENGTH MARK
+0C56 ; NFKC_QC; M # Mn TELUGU AI LENGTH MARK
+0CC2 ; NFKC_QC; M # Mc KANNADA VOWEL SIGN UU
+0CD5..0CD6 ; NFKC_QC; M # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0D3E ; NFKC_QC; M # Mc MALAYALAM VOWEL SIGN AA
+0D57 ; NFKC_QC; M # Mc MALAYALAM AU LENGTH MARK
+0DCA ; NFKC_QC; M # Mn SINHALA SIGN AL-LAKUNA
+0DCF ; NFKC_QC; M # Mc SINHALA VOWEL SIGN AELA-PILLA
+0DDF ; NFKC_QC; M # Mc SINHALA VOWEL SIGN GAYANUKITTA
+102E ; NFKC_QC; M # Mn MYANMAR VOWEL SIGN II
+1161..1175 ; NFKC_QC; M # Lo [21] HANGUL JUNGSEONG A..HANGUL JUNGSEONG I
+11A8..11C2 ; NFKC_QC; M # Lo [27] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG HIEUH
+1B35 ; NFKC_QC; M # Mc BALINESE VOWEL SIGN TEDUNG
+3099..309A ; NFKC_QC; M # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+
+# Total code points: 102
+
+# ================================================
+
+# Derived Property: Expands_On_NFD
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+00C0..00C5 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; Expands_On_NFD # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; Expands_On_NFD # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; Expands_On_NFD # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; Expands_On_NFD # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; Expands_On_NFD # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; Expands_On_NFD # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; Expands_On_NFD # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; Expands_On_NFD # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; Expands_On_NFD # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0134..0137 ; Expands_On_NFD # L& [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA
+0139..013E ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON
+0143..0148 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N WITH CARON
+014C..0151 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; Expands_On_NFD # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017E ; Expands_On_NFD # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+01A0..01A1 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01CD..01DC ; Expands_On_NFD # L& [16] LATIN CAPITAL LETTER A WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F0 ; Expands_On_NFD # L& [11] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER J WITH CARON
+01F4..01F5 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER G WITH ACUTE..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; Expands_On_NFD # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; Expands_On_NFD # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+0344 ; Expands_On_NFD # Mn COMBINING GREEK DIALYTIKA TONOS
+0385 ; Expands_On_NFD # Sk GREEK DIALYTIKA TONOS
+0386 ; Expands_On_NFD # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; Expands_On_NFD # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; Expands_On_NFD # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; Expands_On_NFD # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; Expands_On_NFD # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; Expands_On_NFD # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D3..03D4 ; Expands_On_NFD # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+0400..0401 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; Expands_On_NFD # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; Expands_On_NFD # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER GJE
+0457 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER YI
+045C..045E ; Expands_On_NFD # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; Expands_On_NFD # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; Expands_On_NFD # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; Expands_On_NFD # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; Expands_On_NFD # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0622..0626 ; Expands_On_NFD # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+06C0 ; Expands_On_NFD # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; Expands_On_NFD # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; Expands_On_NFD # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; Expands_On_NFD # Lo DEVANAGARI LETTER NNNA
+0931 ; Expands_On_NFD # Lo DEVANAGARI LETTER RRA
+0934 ; Expands_On_NFD # Lo DEVANAGARI LETTER LLLA
+0958..095F ; Expands_On_NFD # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; Expands_On_NFD # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; Expands_On_NFD # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFD # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFD # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFD # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFD # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFD # Lo GURMUKHI LETTER FA
+0B48 ; Expands_On_NFD # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; Expands_On_NFD # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; Expands_On_NFD # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; Expands_On_NFD # Lo TAMIL LETTER AU
+0BCA..0BCC ; Expands_On_NFD # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; Expands_On_NFD # Mn TELUGU VOWEL SIGN AI
+0CC0 ; Expands_On_NFD # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; Expands_On_NFD # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Expands_On_NFD # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; Expands_On_NFD # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; Expands_On_NFD # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; Expands_On_NFD # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0F43 ; Expands_On_NFD # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFD # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFD # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFD # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFD # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFD # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; Expands_On_NFD # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; Expands_On_NFD # Lo MYANMAR LETTER UU
+1B06 ; Expands_On_NFD # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; Expands_On_NFD # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; Expands_On_NFD # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; Expands_On_NFD # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; Expands_On_NFD # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; Expands_On_NFD # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; Expands_On_NFD # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; Expands_On_NFD # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; Expands_On_NFD # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; Expands_On_NFD # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1E00..1E99 ; Expands_On_NFD # L& [154] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH RING ABOVE
+1E9B ; Expands_On_NFD # L& LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; Expands_On_NFD # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; Expands_On_NFD # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; Expands_On_NFD # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; Expands_On_NFD # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; Expands_On_NFD # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; Expands_On_NFD # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; Expands_On_NFD # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; Expands_On_NFD # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC1 ; Expands_On_NFD # Sk GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; Expands_On_NFD # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; Expands_On_NFD # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; Expands_On_NFD # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; Expands_On_NFD # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; Expands_On_NFD # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; Expands_On_NFD # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEE ; Expands_On_NFD # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+1FF2..1FF4 ; Expands_On_NFD # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+212B ; Expands_On_NFD # L& ANGSTROM SIGN
+219A..219B ; Expands_On_NFD # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; Expands_On_NFD # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; Expands_On_NFD # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; Expands_On_NFD # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; Expands_On_NFD # Sm THERE DOES NOT EXIST
+2209 ; Expands_On_NFD # Sm NOT AN ELEMENT OF
+220C ; Expands_On_NFD # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; Expands_On_NFD # Sm DOES NOT DIVIDE
+2226 ; Expands_On_NFD # Sm NOT PARALLEL TO
+2241 ; Expands_On_NFD # Sm NOT TILDE
+2244 ; Expands_On_NFD # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; Expands_On_NFD # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; Expands_On_NFD # Sm NOT ALMOST EQUAL TO
+2260 ; Expands_On_NFD # Sm NOT EQUAL TO
+2262 ; Expands_On_NFD # Sm NOT IDENTICAL TO
+226D..2271 ; Expands_On_NFD # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; Expands_On_NFD # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; Expands_On_NFD # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; Expands_On_NFD # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; Expands_On_NFD # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; Expands_On_NFD # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; Expands_On_NFD # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; Expands_On_NFD # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; Expands_On_NFD # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2ADC ; Expands_On_NFD # Sm FORKING
+304C ; Expands_On_NFD # Lo HIRAGANA LETTER GA
+304E ; Expands_On_NFD # Lo HIRAGANA LETTER GI
+3050 ; Expands_On_NFD # Lo HIRAGANA LETTER GU
+3052 ; Expands_On_NFD # Lo HIRAGANA LETTER GE
+3054 ; Expands_On_NFD # Lo HIRAGANA LETTER GO
+3056 ; Expands_On_NFD # Lo HIRAGANA LETTER ZA
+3058 ; Expands_On_NFD # Lo HIRAGANA LETTER ZI
+305A ; Expands_On_NFD # Lo HIRAGANA LETTER ZU
+305C ; Expands_On_NFD # Lo HIRAGANA LETTER ZE
+305E ; Expands_On_NFD # Lo HIRAGANA LETTER ZO
+3060 ; Expands_On_NFD # Lo HIRAGANA LETTER DA
+3062 ; Expands_On_NFD # Lo HIRAGANA LETTER DI
+3065 ; Expands_On_NFD # Lo HIRAGANA LETTER DU
+3067 ; Expands_On_NFD # Lo HIRAGANA LETTER DE
+3069 ; Expands_On_NFD # Lo HIRAGANA LETTER DO
+3070..3071 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; Expands_On_NFD # Lo HIRAGANA LETTER VU
+309E ; Expands_On_NFD # Lm HIRAGANA VOICED ITERATION MARK
+30AC ; Expands_On_NFD # Lo KATAKANA LETTER GA
+30AE ; Expands_On_NFD # Lo KATAKANA LETTER GI
+30B0 ; Expands_On_NFD # Lo KATAKANA LETTER GU
+30B2 ; Expands_On_NFD # Lo KATAKANA LETTER GE
+30B4 ; Expands_On_NFD # Lo KATAKANA LETTER GO
+30B6 ; Expands_On_NFD # Lo KATAKANA LETTER ZA
+30B8 ; Expands_On_NFD # Lo KATAKANA LETTER ZI
+30BA ; Expands_On_NFD # Lo KATAKANA LETTER ZU
+30BC ; Expands_On_NFD # Lo KATAKANA LETTER ZE
+30BE ; Expands_On_NFD # Lo KATAKANA LETTER ZO
+30C0 ; Expands_On_NFD # Lo KATAKANA LETTER DA
+30C2 ; Expands_On_NFD # Lo KATAKANA LETTER DI
+30C5 ; Expands_On_NFD # Lo KATAKANA LETTER DU
+30C7 ; Expands_On_NFD # Lo KATAKANA LETTER DE
+30C9 ; Expands_On_NFD # Lo KATAKANA LETTER DO
+30D0..30D1 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; Expands_On_NFD # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; Expands_On_NFD # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; Expands_On_NFD # Lo KATAKANA LETTER VU
+30F7..30FA ; Expands_On_NFD # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; Expands_On_NFD # Lm KATAKANA VOICED ITERATION MARK
+AC00..D7A3 ; Expands_On_NFD # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+FB1D ; Expands_On_NFD # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFD # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFD # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFD # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFD # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFD # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFD # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; Expands_On_NFD # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; Expands_On_NFD # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFD # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 12203
+
+# ================================================
+
+# Derived Property: Expands_On_NFC
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+0344 ; Expands_On_NFC # Mn COMBINING GREEK DIALYTIKA TONOS
+0958..095F ; Expands_On_NFC # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; Expands_On_NFC # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFC # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFC # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFC # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFC # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFC # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; Expands_On_NFC # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0F43 ; Expands_On_NFC # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFC # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFC # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFC # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFC # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFC # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; Expands_On_NFC # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER KSSA
+2ADC ; Expands_On_NFC # Sm FORKING
+FB1D ; Expands_On_NFC # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFC # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFC # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFC # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFC # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFC # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFC # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; Expands_On_NFC # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; Expands_On_NFC # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFC # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 85
+
+# ================================================
+
+# Derived Property: Expands_On_NFKD
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+00A8 ; Expands_On_NFKD # Sk DIAERESIS
+00AF ; Expands_On_NFKD # Sk MACRON
+00B4 ; Expands_On_NFKD # Sk ACUTE ACCENT
+00B8 ; Expands_On_NFKD # Sk CEDILLA
+00BC..00BE ; Expands_On_NFKD # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+00C0..00C5 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; Expands_On_NFKD # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; Expands_On_NFKD # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; Expands_On_NFKD # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; Expands_On_NFKD # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; Expands_On_NFKD # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; Expands_On_NFKD # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; Expands_On_NFKD # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; Expands_On_NFKD # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; Expands_On_NFKD # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132..0137 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LETTER K WITH CEDILLA
+0139..0140 ; Expands_On_NFKD # L& [8] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH MIDDLE DOT
+0143..0149 ; Expands_On_NFKD # L& [7] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014C..0151 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; Expands_On_NFKD # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017E ; Expands_On_NFKD # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+01A0..01A1 ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01C4..01DC ; Expands_On_NFKD # L& [25] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F5 ; Expands_On_NFKD # L& [16] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; Expands_On_NFKD # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; Expands_On_NFKD # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+02D8..02DD ; Expands_On_NFKD # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+0344 ; Expands_On_NFKD # Mn COMBINING GREEK DIALYTIKA TONOS
+037A ; Expands_On_NFKD # Lm GREEK YPOGEGRAMMENI
+0384..0385 ; Expands_On_NFKD # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0386 ; Expands_On_NFKD # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; Expands_On_NFKD # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; Expands_On_NFKD # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; Expands_On_NFKD # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; Expands_On_NFKD # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; Expands_On_NFKD # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D3..03D4 ; Expands_On_NFKD # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+0400..0401 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; Expands_On_NFKD # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; Expands_On_NFKD # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER GJE
+0457 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER YI
+045C..045E ; Expands_On_NFKD # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; Expands_On_NFKD # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; Expands_On_NFKD # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; Expands_On_NFKD # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; Expands_On_NFKD # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0587 ; Expands_On_NFKD # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0622..0626 ; Expands_On_NFKD # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+0675..0678 ; Expands_On_NFKD # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+06C0 ; Expands_On_NFKD # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; Expands_On_NFKD # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; Expands_On_NFKD # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; Expands_On_NFKD # Lo DEVANAGARI LETTER NNNA
+0931 ; Expands_On_NFKD # Lo DEVANAGARI LETTER RRA
+0934 ; Expands_On_NFKD # Lo DEVANAGARI LETTER LLLA
+0958..095F ; Expands_On_NFKD # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; Expands_On_NFKD # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; Expands_On_NFKD # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFKD # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFKD # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFKD # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFKD # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFKD # Lo GURMUKHI LETTER FA
+0B48 ; Expands_On_NFKD # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; Expands_On_NFKD # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; Expands_On_NFKD # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; Expands_On_NFKD # Lo TAMIL LETTER AU
+0BCA..0BCC ; Expands_On_NFKD # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; Expands_On_NFKD # Mn TELUGU VOWEL SIGN AI
+0CC0 ; Expands_On_NFKD # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; Expands_On_NFKD # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Expands_On_NFKD # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; Expands_On_NFKD # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; Expands_On_NFKD # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; Expands_On_NFKD # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0E33 ; Expands_On_NFKD # Lo THAI CHARACTER SARA AM
+0EB3 ; Expands_On_NFKD # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; Expands_On_NFKD # Lo [2] LAO HO NO..LAO HO MO
+0F43 ; Expands_On_NFKD # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFKD # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFKD # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFKD # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFKD # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFKD # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFKD # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; Expands_On_NFKD # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; Expands_On_NFKD # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; Expands_On_NFKD # Lo MYANMAR LETTER UU
+1B06 ; Expands_On_NFKD # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; Expands_On_NFKD # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; Expands_On_NFKD # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; Expands_On_NFKD # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; Expands_On_NFKD # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; Expands_On_NFKD # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; Expands_On_NFKD # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1E00..1E9B ; Expands_On_NFKD # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; Expands_On_NFKD # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; Expands_On_NFKD # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; Expands_On_NFKD # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; Expands_On_NFKD # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; Expands_On_NFKD # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; Expands_On_NFKD # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; Expands_On_NFKD # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; Expands_On_NFKD # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD ; Expands_On_NFKD # Sk GREEK KORONIS
+1FBF..1FC1 ; Expands_On_NFKD # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; Expands_On_NFKD # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; Expands_On_NFKD # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; Expands_On_NFKD # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; Expands_On_NFKD # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; Expands_On_NFKD # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; Expands_On_NFKD # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEE ; Expands_On_NFKD # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+1FF2..1FF4 ; Expands_On_NFKD # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD..1FFE ; Expands_On_NFKD # Sk [2] GREEK OXIA..GREEK DASIA
+2017 ; Expands_On_NFKD # Po DOUBLE LOW LINE
+2025..2026 ; Expands_On_NFKD # Po [2] TWO DOT LEADER..HORIZONTAL ELLIPSIS
+2033..2034 ; Expands_On_NFKD # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; Expands_On_NFKD # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; Expands_On_NFKD # Po DOUBLE EXCLAMATION MARK
+203E ; Expands_On_NFKD # Po OVERLINE
+2047..2049 ; Expands_On_NFKD # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; Expands_On_NFKD # Po QUADRUPLE PRIME
+20A8 ; Expands_On_NFKD # Sc RUPEE SIGN
+2100..2101 ; Expands_On_NFKD # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2103 ; Expands_On_NFKD # So DEGREE CELSIUS
+2105..2106 ; Expands_On_NFKD # So [2] CARE OF..CADA UNA
+2109 ; Expands_On_NFKD # So DEGREE FAHRENHEIT
+2116 ; Expands_On_NFKD # So NUMERO SIGN
+2120..2122 ; Expands_On_NFKD # So [3] SERVICE MARK..TRADE MARK SIGN
+212B ; Expands_On_NFKD # L& ANGSTROM SIGN
+213B ; Expands_On_NFKD # So FACSIMILE SIGN
+2153..215F ; Expands_On_NFKD # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2161..2163 ; Expands_On_NFKD # Nl [3] ROMAN NUMERAL TWO..ROMAN NUMERAL FOUR
+2165..2168 ; Expands_On_NFKD # Nl [4] ROMAN NUMERAL SIX..ROMAN NUMERAL NINE
+216A..216B ; Expands_On_NFKD # Nl [2] ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TWELVE
+2171..2173 ; Expands_On_NFKD # Nl [3] SMALL ROMAN NUMERAL TWO..SMALL ROMAN NUMERAL FOUR
+2175..2178 ; Expands_On_NFKD # Nl [4] SMALL ROMAN NUMERAL SIX..SMALL ROMAN NUMERAL NINE
+217A..217B ; Expands_On_NFKD # Nl [2] SMALL ROMAN NUMERAL ELEVEN..SMALL ROMAN NUMERAL TWELVE
+219A..219B ; Expands_On_NFKD # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; Expands_On_NFKD # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; Expands_On_NFKD # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; Expands_On_NFKD # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; Expands_On_NFKD # Sm THERE DOES NOT EXIST
+2209 ; Expands_On_NFKD # Sm NOT AN ELEMENT OF
+220C ; Expands_On_NFKD # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; Expands_On_NFKD # Sm DOES NOT DIVIDE
+2226 ; Expands_On_NFKD # Sm NOT PARALLEL TO
+222C..222D ; Expands_On_NFKD # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; Expands_On_NFKD # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2241 ; Expands_On_NFKD # Sm NOT TILDE
+2244 ; Expands_On_NFKD # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; Expands_On_NFKD # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; Expands_On_NFKD # Sm NOT ALMOST EQUAL TO
+2260 ; Expands_On_NFKD # Sm NOT EQUAL TO
+2262 ; Expands_On_NFKD # Sm NOT IDENTICAL TO
+226D..2271 ; Expands_On_NFKD # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; Expands_On_NFKD # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; Expands_On_NFKD # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; Expands_On_NFKD # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; Expands_On_NFKD # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; Expands_On_NFKD # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; Expands_On_NFKD # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; Expands_On_NFKD # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; Expands_On_NFKD # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2469..249B ; Expands_On_NFKD # No [51] CIRCLED NUMBER TEN..NUMBER TWENTY FULL STOP
+249C..24B5 ; Expands_On_NFKD # So [26] PARENTHESIZED LATIN SMALL LETTER A..PARENTHESIZED LATIN SMALL LETTER Z
+2A0C ; Expands_On_NFKD # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; Expands_On_NFKD # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; Expands_On_NFKD # Sm FORKING
+304C ; Expands_On_NFKD # Lo HIRAGANA LETTER GA
+304E ; Expands_On_NFKD # Lo HIRAGANA LETTER GI
+3050 ; Expands_On_NFKD # Lo HIRAGANA LETTER GU
+3052 ; Expands_On_NFKD # Lo HIRAGANA LETTER GE
+3054 ; Expands_On_NFKD # Lo HIRAGANA LETTER GO
+3056 ; Expands_On_NFKD # Lo HIRAGANA LETTER ZA
+3058 ; Expands_On_NFKD # Lo HIRAGANA LETTER ZI
+305A ; Expands_On_NFKD # Lo HIRAGANA LETTER ZU
+305C ; Expands_On_NFKD # Lo HIRAGANA LETTER ZE
+305E ; Expands_On_NFKD # Lo HIRAGANA LETTER ZO
+3060 ; Expands_On_NFKD # Lo HIRAGANA LETTER DA
+3062 ; Expands_On_NFKD # Lo HIRAGANA LETTER DI
+3065 ; Expands_On_NFKD # Lo HIRAGANA LETTER DU
+3067 ; Expands_On_NFKD # Lo HIRAGANA LETTER DE
+3069 ; Expands_On_NFKD # Lo HIRAGANA LETTER DO
+3070..3071 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; Expands_On_NFKD # Lo HIRAGANA LETTER VU
+309B..309C ; Expands_On_NFKD # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309E ; Expands_On_NFKD # Lm HIRAGANA VOICED ITERATION MARK
+309F ; Expands_On_NFKD # Lo HIRAGANA DIGRAPH YORI
+30AC ; Expands_On_NFKD # Lo KATAKANA LETTER GA
+30AE ; Expands_On_NFKD # Lo KATAKANA LETTER GI
+30B0 ; Expands_On_NFKD # Lo KATAKANA LETTER GU
+30B2 ; Expands_On_NFKD # Lo KATAKANA LETTER GE
+30B4 ; Expands_On_NFKD # Lo KATAKANA LETTER GO
+30B6 ; Expands_On_NFKD # Lo KATAKANA LETTER ZA
+30B8 ; Expands_On_NFKD # Lo KATAKANA LETTER ZI
+30BA ; Expands_On_NFKD # Lo KATAKANA LETTER ZU
+30BC ; Expands_On_NFKD # Lo KATAKANA LETTER ZE
+30BE ; Expands_On_NFKD # Lo KATAKANA LETTER ZO
+30C0 ; Expands_On_NFKD # Lo KATAKANA LETTER DA
+30C2 ; Expands_On_NFKD # Lo KATAKANA LETTER DI
+30C5 ; Expands_On_NFKD # Lo KATAKANA LETTER DU
+30C7 ; Expands_On_NFKD # Lo KATAKANA LETTER DE
+30C9 ; Expands_On_NFKD # Lo KATAKANA LETTER DO
+30D0..30D1 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; Expands_On_NFKD # Lo KATAKANA LETTER VU
+30F7..30FA ; Expands_On_NFKD # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; Expands_On_NFKD # Lm KATAKANA VOICED ITERATION MARK
+30FF ; Expands_On_NFKD # Lo KATAKANA DIGRAPH KOTO
+3200..321E ; Expands_On_NFKD # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; Expands_On_NFKD # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; Expands_On_NFKD # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; Expands_On_NFKD # So PARTNERSHIP SIGN
+3251..325F ; Expands_On_NFKD # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+326E..327E ; Expands_On_NFKD # So [17] CIRCLED HANGUL KIYEOK A..CIRCLED HANGUL IEUNG U
+32B1..32BF ; Expands_On_NFKD # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32CF ; Expands_On_NFKD # So [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN
+3300..33FF ; Expands_On_NFKD # So [256] SQUARE APAATO..SQUARE GAL
+AC00..D7A3 ; Expands_On_NFKD # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+FB00..FB06 ; Expands_On_NFKD # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; Expands_On_NFKD # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; Expands_On_NFKD # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFKD # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFKD # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFKD # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFKD # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFKD # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFKD # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4F ; Expands_On_NFKD # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
+FBA4..FBA5 ; Expands_On_NFKD # Lo [2] ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM..ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+FBB0..FBB1 ; Expands_On_NFKD # Lo [2] ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBDD ; Expands_On_NFKD # Lo ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBEA..FBFB ; Expands_On_NFKD # Lo [18] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FC00..FD3D ; Expands_On_NFKD # Lo [318] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; Expands_On_NFKD # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; Expands_On_NFKD # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; Expands_On_NFKD # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; Expands_On_NFKD # Sc RIAL SIGN
+FE19 ; Expands_On_NFKD # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; Expands_On_NFKD # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE49..FE4C ; Expands_On_NFKD # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE70..FE72 ; Expands_On_NFKD # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; Expands_On_NFKD # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FE7F ; Expands_On_NFKD # Lo [10] ARABIC FATHA ISOLATED FORM..ARABIC SUKUN MEDIAL FORM
+FE81..FE8C ; Expands_On_NFKD # Lo [12] ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+FEF5..FEFC ; Expands_On_NFKD # Lo [8] ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FFE3 ; Expands_On_NFKD # Sk FULLWIDTH MACRON
+1D15E..1D164 ; Expands_On_NFKD # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFKD # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 13310
+
+# ================================================
+
+# Derived Property: Expands_On_NFKC
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+00A8 ; Expands_On_NFKC # Sk DIAERESIS
+00AF ; Expands_On_NFKC # Sk MACRON
+00B4 ; Expands_On_NFKC # Sk ACUTE ACCENT
+00B8 ; Expands_On_NFKC # Sk CEDILLA
+00BC..00BE ; Expands_On_NFKC # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+0132..0133 ; Expands_On_NFKC # L& [2] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
+013F..0140 ; Expands_On_NFKC # L& [2] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
+0149 ; Expands_On_NFKC # L& LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+01C4..01CC ; Expands_On_NFKC # L& [9] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER NJ
+01F1..01F3 ; Expands_On_NFKC # L& [3] LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
+02D8..02DD ; Expands_On_NFKC # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+0344 ; Expands_On_NFKC # Mn COMBINING GREEK DIALYTIKA TONOS
+037A ; Expands_On_NFKC # Lm GREEK YPOGEGRAMMENI
+0384..0385 ; Expands_On_NFKC # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0587 ; Expands_On_NFKC # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0675..0678 ; Expands_On_NFKC # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+0958..095F ; Expands_On_NFKC # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; Expands_On_NFKC # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFKC # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFKC # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFKC # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFKC # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFKC # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; Expands_On_NFKC # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0E33 ; Expands_On_NFKC # Lo THAI CHARACTER SARA AM
+0EB3 ; Expands_On_NFKC # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; Expands_On_NFKC # Lo [2] LAO HO NO..LAO HO MO
+0F43 ; Expands_On_NFKC # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFKC # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFKC # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFKC # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFKC # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFKC # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFKC # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; Expands_On_NFKC # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; Expands_On_NFKC # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER KSSA
+1E9A ; Expands_On_NFKC # L& LATIN SMALL LETTER A WITH RIGHT HALF RING
+1FBD ; Expands_On_NFKC # Sk GREEK KORONIS
+1FBF..1FC1 ; Expands_On_NFKC # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FCD..1FCF ; Expands_On_NFKC # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FDD..1FDF ; Expands_On_NFKC # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FED..1FEE ; Expands_On_NFKC # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+1FFD..1FFE ; Expands_On_NFKC # Sk [2] GREEK OXIA..GREEK DASIA
+2017 ; Expands_On_NFKC # Po DOUBLE LOW LINE
+2025..2026 ; Expands_On_NFKC # Po [2] TWO DOT LEADER..HORIZONTAL ELLIPSIS
+2033..2034 ; Expands_On_NFKC # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; Expands_On_NFKC # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; Expands_On_NFKC # Po DOUBLE EXCLAMATION MARK
+203E ; Expands_On_NFKC # Po OVERLINE
+2047..2049 ; Expands_On_NFKC # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; Expands_On_NFKC # Po QUADRUPLE PRIME
+20A8 ; Expands_On_NFKC # Sc RUPEE SIGN
+2100..2101 ; Expands_On_NFKC # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2103 ; Expands_On_NFKC # So DEGREE CELSIUS
+2105..2106 ; Expands_On_NFKC # So [2] CARE OF..CADA UNA
+2109 ; Expands_On_NFKC # So DEGREE FAHRENHEIT
+2116 ; Expands_On_NFKC # So NUMERO SIGN
+2120..2122 ; Expands_On_NFKC # So [3] SERVICE MARK..TRADE MARK SIGN
+213B ; Expands_On_NFKC # So FACSIMILE SIGN
+2153..215F ; Expands_On_NFKC # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2161..2163 ; Expands_On_NFKC # Nl [3] ROMAN NUMERAL TWO..ROMAN NUMERAL FOUR
+2165..2168 ; Expands_On_NFKC # Nl [4] ROMAN NUMERAL SIX..ROMAN NUMERAL NINE
+216A..216B ; Expands_On_NFKC # Nl [2] ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TWELVE
+2171..2173 ; Expands_On_NFKC # Nl [3] SMALL ROMAN NUMERAL TWO..SMALL ROMAN NUMERAL FOUR
+2175..2178 ; Expands_On_NFKC # Nl [4] SMALL ROMAN NUMERAL SIX..SMALL ROMAN NUMERAL NINE
+217A..217B ; Expands_On_NFKC # Nl [2] SMALL ROMAN NUMERAL ELEVEN..SMALL ROMAN NUMERAL TWELVE
+222C..222D ; Expands_On_NFKC # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; Expands_On_NFKC # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2469..249B ; Expands_On_NFKC # No [51] CIRCLED NUMBER TEN..NUMBER TWENTY FULL STOP
+249C..24B5 ; Expands_On_NFKC # So [26] PARENTHESIZED LATIN SMALL LETTER A..PARENTHESIZED LATIN SMALL LETTER Z
+2A0C ; Expands_On_NFKC # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; Expands_On_NFKC # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; Expands_On_NFKC # Sm FORKING
+309B..309C ; Expands_On_NFKC # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309F ; Expands_On_NFKC # Lo HIRAGANA DIGRAPH YORI
+30FF ; Expands_On_NFKC # Lo KATAKANA DIGRAPH KOTO
+3200..321E ; Expands_On_NFKC # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; Expands_On_NFKC # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; Expands_On_NFKC # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; Expands_On_NFKC # So PARTNERSHIP SIGN
+3251..325F ; Expands_On_NFKC # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+327C..327D ; Expands_On_NFKC # So [2] CIRCLED KOREAN CHARACTER CHAMKO..CIRCLED KOREAN CHARACTER JUEUI
+32B1..32BF ; Expands_On_NFKC # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32CF ; Expands_On_NFKC # So [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN
+3300..33FF ; Expands_On_NFKC # So [256] SQUARE APAATO..SQUARE GAL
+FB00..FB06 ; Expands_On_NFKC # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; Expands_On_NFKC # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; Expands_On_NFKC # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFKC # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFKC # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFKC # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFKC # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFKC # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFKC # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4F ; Expands_On_NFKC # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
+FBDD ; Expands_On_NFKC # Lo ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBEA..FBFB ; Expands_On_NFKC # Lo [18] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FC00..FD3D ; Expands_On_NFKC # Lo [318] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; Expands_On_NFKC # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; Expands_On_NFKC # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; Expands_On_NFKC # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; Expands_On_NFKC # Sc RIAL SIGN
+FE19 ; Expands_On_NFKC # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; Expands_On_NFKC # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE49..FE4C ; Expands_On_NFKC # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE70..FE72 ; Expands_On_NFKC # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; Expands_On_NFKC # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FE7F ; Expands_On_NFKC # Lo [10] ARABIC FATHA ISOLATED FORM..ARABIC SUKUN MEDIAL FORM
+FEF5..FEFC ; Expands_On_NFKC # Lo [8] ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FFE3 ; Expands_On_NFKC # Sk FULLWIDTH MACRON
+1D15E..1D164 ; Expands_On_NFKC # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFKC # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 1171
+
+# EOF
diff --git a/util/webkit/mkdist-webkit b/util/webkit/mkdist-webkit
index ddf74bb..e8426b1 100755
--- a/util/webkit/mkdist-webkit
+++ b/util/webkit/mkdist-webkit
@@ -20,7 +20,7 @@ if [ -z "$repository" ]; then
die "error: cannot locate webkit git repository. please run git config --global qtwebkit.url /path-or-url/to/webkit/repo"
fi
-excluded_directories="LayoutTests JavaScriptGlue WebKitLibraries WebKitSite WebKitTools WebCore/platform/cf WebCore/platform/gtk WebCore/platform/chromium"
+excluded_directories="LayoutTests JavaScriptGlue WebKitLibraries WebKitSite WebKitTools WebCore/platform/gtk WebCore/platform/chromium"
excluded_directories="$excluded_directories PageLoadTests"
excluded_directories="$excluded_directories BugsSite"
excluded_directories="$excluded_directories PlanetWebKit"
@@ -49,6 +49,8 @@ excluded_directories="$excluded_directories JavaScriptCore/wtf/mac"
excluded_directories="$excluded_directories JavaScriptCore/wtf/win"
excluded_directories="$excluded_directories JavaScriptCore/wtf/chromium"
excluded_directories="$excluded_directories JavaScriptCore/wtf/haiku"
+excluded_directories="$excluded_directories JavaScriptCore/wtf/android"
+excluded_directories="$excluded_directories JavaScriptCore/wtf/brew"
excluded_directories="$excluded_directories WebCore/WebCore.vcproj"
excluded_directories="$excluded_directories WebCore/WebCore.gyp"
@@ -81,41 +83,52 @@ excluded_directories="$excluded_directories WebCore/page/wx"
excluded_directories="$excluded_directories WebCore/page/chromium"
excluded_directories="$excluded_directories WebCore/page/haiku"
excluded_directories="$excluded_directories WebCore/page/wince"
+excluded_directories="$excluded_directories WebCore/page/android"
+excluded_directories="$excluded_directories WebCore/page/brew"
excluded_directories="$excluded_directories WebCore/history/mac"
+excluded_directories="$excluded_directories WebCore/history/android"
excluded_directories="$excluded_directories WebCore/editing/mac"
excluded_directories="$excluded_directories WebCore/editing/wx"
excluded_directories="$excluded_directories WebCore/editing/haiku"
+excluded_directories="$excluded_directories WebCore/editing/android"
+excluded_directories="$excluded_directories WebCore/editing/chromium"
+excluded_directories="$excluded_directories WebCore/editing/gtk"
excluded_directories="$excluded_directories WebCore/platform/haiku"
+excluded_directories="$excluded_directories WebCore/platform/android"
+excluded_directories="$excluded_directories WebCore/platform/brew"
excluded_directories="$excluded_directories WebCore/platform/text/wx"
excluded_directories="$excluded_directories WebCore/platform/text/gtk"
excluded_directories="$excluded_directories WebCore/platform/text/chromium"
excluded_directories="$excluded_directories WebCore/platform/text/haiku"
+excluded_directories="$excluded_directories WebCore/platform/text/android"
+excluded_directories="$excluded_directories WebCore/platform/text/brew"
excluded_directories="$excluded_directories WebCore/platform/sql/chromium"
excluded_directories="$excluded_directories WebCore/manual-tests"
-excluded_directories="$excluded_directories WebCore/platform/network/cf"
excluded_directories="$excluded_directories WebCore/platform/network/curl"
excluded_directories="$excluded_directories WebCore/platform/network/mac"
excluded_directories="$excluded_directories WebCore/platform/network/win"
excluded_directories="$excluded_directories WebCore/platform/network/soup"
excluded_directories="$excluded_directories WebCore/platform/network/chromium"
+excluded_directories="$excluded_directories WebCore/platform/network/android"
+excluded_directories="$excluded_directories WebCore/platform/network/brew"
excluded_directories="$excluded_directories WebCore/platform/graphics/cg"
excluded_directories="$excluded_directories WebCore/platform/graphics/cairo"
excluded_directories="$excluded_directories WebCore/platform/graphics/gtk"
excluded_directories="$excluded_directories WebCore/platform/graphics/wx"
excluded_directories="$excluded_directories WebCore/platform/graphics/mac"
-excluded_directories="$excluded_directories WebCore/platform/graphics/win"
excluded_directories="$excluded_directories WebCore/platform/graphics/skia"
excluded_directories="$excluded_directories WebCore/platform/graphics/chromium"
excluded_directories="$excluded_directories WebCore/platform/graphics/wince"
excluded_directories="$excluded_directories WebCore/platform/graphics/haiku"
+excluded_directories="$excluded_directories WebCore/platform/graphics/brew"
excluded_directories="$excluded_directories WebCore/platform/image-decoders/bmp"
excluded_directories="$excluded_directories WebCore/platform/image-decoders/gif"
@@ -126,11 +139,13 @@ excluded_directories="$excluded_directories WebCore/platform/image-decoders/jpeg
excluded_directories="$excluded_directories WebCore/platform/image-decoders/xbm"
excluded_directories="$excluded_directories WebCore/platform/image-decoders/skia"
excluded_directories="$excluded_directories WebCore/platform/image-decoders/haiku"
+excluded_directories="$excluded_directories WebCore/platform/image-decoders/wx"
excluded_directories="$excluded_directories WebCore/platform/image-encoders/skia"
excluded_directories="$excluded_directories WebCore/plugins/gtk"
excluded_directories="$excluded_directories WebCore/plugins/chromium"
+excluded_directories="$excluded_directories WebCore/plugins/wx"
excluded_directories="$excluded_directories WebCore/accessibility/chromium"
excluded_directories="$excluded_directories WebCore/accessibility/gtk"
@@ -139,6 +154,7 @@ excluded_directories="$excluded_directories WebCore/accessibility/win"
excluded_directories="$excluded_directories WebCore/accessibility/wx"
excluded_directories="$excluded_directories WebCore/storage/wince"
+excluded_directories="$excluded_directories WebCore/storage/chromium"
excluded_directories="$excluded_directories WebCore/platform/wx"
excluded_directories="$excluded_directories WebCore/platform/wince"
@@ -196,6 +212,7 @@ files_to_remove="$files_to_remove autogen.sh"
files_to_remove="$files_to_remove configure.ac"
files_to_remove="$files_to_remove WebKit.pro"
+files_to_remove="$files_to_remove DerivedSources.pro"
files_to_remove="$files_to_remove WebKit/qt/QtLauncher/QtLauncher.pro"
files_to_remove="$files_to_remove WebKit/qt/QtLauncher/main.cpp"
@@ -311,16 +328,11 @@ echo "generating extra sources"
(
for proj in JavaScriptCore WebCore; do
cd $absSrcDir/$proj &&
- rm -rf tmp &&
- mkdir tmp &&
- cd tmp &&
- mkdir -p ../generated &&
- qmake -o Makefile CONFIG-=QTDIR_build QT_CONFIG+=phonon GENERATED_SOURCES_DIR=`pwd`/../generated OUTPUT_DIR=`pwd` ../$proj.pro &&
+ qmake -o Makefile DerivedSources.pro &&
make generated_files &&
- perl -pi -e "s,$absSrcDir/,,g" ../generated/*.cpp ../generated/*.h &&
- git add ../generated &&
- cd .. &&
- rm -rf tmp &&
+ perl -pi -e "s,$absSrcDir/,,g" generated/*.cpp generated/*.h &&
+ git add generated &&
+ rm DerivedSources.pro Makefile &&
cd ..
done
)