aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative
Commit message (Collapse)AuthorAgeFilesLines
* Fix importing of files on Windows.Friedemann Kleint2012-01-071-1/+1
| | | | | | | | | Do not create local file Urls by adding 'file://' + path, use QUrl's logic to correctly add missing slashes for Windows drive letters. Change-Id: I1a8a58a0d88ef291bb814303747ce53093be17a2 Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
* QDeclarativeEngine: Polish code for file name case check.Friedemann Kleint2012-01-061-9/+8
| | | | | | | | | | - Use Q_OS_WIN instead of Q_OS_WIN32 - const-correctness - Use QString::fromWCharArray() Change-Id: I67aa4bb69240cf187832ea456dd74d2909e7ae62 Reviewed-by: Kai Koehne <kai.koehne@nokia.com> Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
* Improve QML error messagesAaron Kennedy2012-01-063-11/+25
| | | | | | | | Point at the actual property and method name when raising errors about them. Change-Id: Id36df4850b91ae0d225fcda4d101f4b2a073a72e Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
* Update copyright year in license headers.Jason McDonald2012-01-05249-251/+251
| | | | | Change-Id: I0a8d99909cac867dce72da70b1bbcb649989a51b Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Added a link to Number::toLocaleCurrencyString in the doc.Denis Dzyubenko2012-01-041-0/+1
| | | | | Change-Id: If44cc225d132bd309efdb250aad74f8e11062e8f Reviewed-by: Martin Jones <martin.jones@nokia.com>
* Handle exceptions inside QV8QObjectConnectionList::qt_metacallChris Adams2011-12-291-0/+12
| | | | | | | | | Previously, exceptions were not handled in the connectionlist. This could cause v8 to assert under certain circumstances. Task-number: QTBUG-23375 Change-Id: Ie5f043b50bb6b02a77be464ca18ea8e3bbb0f501 Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
* Fix crash in var property setterChris Adams2011-12-231-0/+1
| | | | | | | | | | | Previously, the function didn't terminate after calling the setter recursively, as it should have. This patch ensures that the setter is called correctly and then returns, and adds a unit test to ensure that no regression occurs. Task-number: QTBUG-23330 Change-Id: If512fca174e5224c2c53caad11f77782e6cead9f Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
* Reserve enough space in the QDeclarativePropertyCache hashAaron Kennedy2011-12-224-11/+56
| | | | | | | | It was too easy for callers of copy() to pass the wrong reserve size, so a new copyAndAppend() method has been added to reduce error. Change-Id: If2f13e2e0733e5d87c527934dc5a6c8d0c8df572 Reviewed-by: Martin Jones <martin.jones@nokia.com>
* Detect and optimize qsTr() and qsTrId() bindingsAaron Kennedy2011-12-217-40/+210
| | | | | | | | | As these two are frequently used with constants, we can detect them in the compiler, and run the appropriate C++ functions directly in the VME. This saves pointlessly creating and running bindings. Change-Id: I148a150400c13fda7955949453405202f18b1a6b Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* Debugger: Allow transmissions of network packets in one goKai Koehne2011-12-217-18/+31
| | | | | | | | | We did call a flush() after every single packet, which was slowing down things especially for the QDeclarativeDebugTrace service. Change-Id: Idab074941a22364e154502eb12afa43b4dd33c22 Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com> Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
* Debugger: Fix livelock on exit (Windows)Kai Koehne2011-12-202-14/+32
| | | | | | | | | | | | We used to close the debugger thread when the last service was killed: This happened in the unloading of static global variables. Apparently this is too late on Windows, since the OS thread associated was already terminated. Instead, we now kill the instance when the QCoreApplication event loop is exiting. Change-Id: I12a46ab9e7ac64561c94c0cd0d88b78fbaf8554c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>
* Remove hardcoded assumptions about methods in QObjectChris Adams2011-12-201-4/+7
| | | | | | | | | | This commit ensures that the number of methods available from the QObject::staticMetaObject is looked up rather than hardcoded to a value in the QDeclarativePropertyCache. Task-number: QTBUG-22985 Change-Id: If61c02f0d32066cddaeac2d8143c58db97acb609 Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
* Qt.locale() always returns the 'C' locale.Martin Jones2011-12-201-1/+4
| | | | | | | | QLocale(QString()) does not return the default locale. If no locale is specified, use the QLocale() constructor. Change-Id: I76198b7ea66a6326483ec47ac36e080159ca459a Reviewed-by: Martin Jones <martin.jones@nokia.com>
* Fix QDeclarativePropertyCache crash.Andrew den Exter2011-12-202-13/+34
| | | | | | | | | | | | Reserve enough space in the signalHandlerIndexCache so that it will not reallocated while the property cache is being built as this will invalidate the pointers stored in the stringCache. Also ensure signals for all cached meta-objects are included in signalHandlerIndexCache, and don't over allocate propertyIndexCache and methodIndexCache. Change-Id: Ic285d832d4b86106176bfe723ff10bdd65143910 Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
* Correctly resolve elements of QList<QUrl> propertiesChris Adams2011-12-191-25/+40
| | | | | | | | | | Previously, the value of a QList<QUrl> sequence was only resolved if there was only one element in the sequence. This commit ensures that all elements in the sequence are resolved correctly. Task-number: QTBUG-23131 Change-Id: Id27748853fe01ae22800fbd02d062e268ad7ec70 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* DeclarativeDebug: Add version info to service pluginsAurindam Jana2011-12-1611-27/+79
| | | | | | | | Send the version info of each plugin alongwith the plugin names to client. Change-Id: I223689b32cdc5b0c48a4f508330033352b427937 Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
* V8: Remove extra V8::Context allocated for expressing strong referencesSimon Hausmann2011-12-154-111/+75
| | | | | | | | | | | | Moved the Referencer code into QV8Engine and re-used the available v8 context there. That also makes things a bit cleaner in the sense that now references from one object to another are guaranteed to be within the same context. Previously some strong references would be across contexts that do not actually share a security token. Change-Id: I717b27a4d96323feb570023d4d84f2b2176d1a84 Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com> Reviewed-by: Chris Adams <christopher.adams@nokia.com>
* Fix IR code generation for member expressionsRoberto Raggi2011-12-151-13/+15
| | | | | | | | | The generated code for member expressions (e.g. parent.width) was using a wrong mix of types from the base object and names from the current member expression. Change-Id: I167df285ae44f9dc1538e2b1019998f02a0479a8 Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
* Add support for QUrl types to V4Roberto Raggi2011-12-155-12/+169
| | | | | | | | | | | | | Extended the V4 instruction set with instructions to `fast convert' url registers to string and bool registers and `resolve' urls using QDeclarativeContext::resolvedUrl. Also, made IR::UrlType a special `string' type. It's a little trick to ensure that the compiler will generate correct conversions for the binary expressions. Change-Id: Ibc9e5b99302bd513f0cc52b598a1b198b11d4d30 Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
* QV8DebugService: add version commandAurindam Jana2011-12-151-31/+32
| | | | | | | Version command to retrieve debugger version info. Change-Id: I711e2a3d639c648cef50498fe5bbb9b6b8c6c1fe Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
* Fix that QJSEngine cannot be used from threads other than the gui threadSimon Hausmann2011-12-153-52/+63
| | | | | | | | | | | | | Implicitly allocate & enter an isolate per thread if needed, store it in TLS and exit it upon thread destruction. As the code that represents QObject dependencies in the GC through implicit dependencies uses its own context, its per-thread data is folded into the v8engine TLS to ensure that it is destructed before the isolate is exited. Task-number: QTBUG-23099 Change-Id: I86538b54939b2fe64db843052eac04c7fd31813e Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
* QV8DebugService: Add breakaftercompileAurindam Jana2011-12-142-7/+21
| | | | | | | | Add breakaftercompile command that will set the v8::DebugBreak() whenever a new script is compiled. Change-Id: Id9027066826b6de621058d3170fa628463ef0152 Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
* QV8DebugService: Simplify the service codeAurindam Jana2011-12-143-373/+108
| | | | | | | | | Removed all parsing functionality. The service only acts as a delegate to v8 debugger. Apart from that, it calls the v8 debug static APIs when requested by client. Change-Id: I2917c2d080e5b409a4b5f39d386279c33634cade Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
* Link against librt to make use of clock_gettimeKai Koehne2011-12-141-0/+1
| | | | | | | Allow using qdeclarativetrace_p.h on Linux Change-Id: Ib5d9dad156897ea40825136ac2e818c1250ad403 Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
* Cleanup: Fold QV8GCCallback class declaration(s) back into qv8engine_p.hSimon Hausmann2011-12-146-120/+51
| | | | | | | The implementation lives in qv8engine.cpp. Change-Id: I2898556fea867cdc82ea534eaf020dd8d12b25d6 Reviewed-by: Chris Adams <christopher.adams@nokia.com>
* Fix leak of v8 context used for implicit strong references.Simon Hausmann2011-12-142-17/+18
| | | | | | | | | | | QV8GCCallback::Referencer keeps strong implicit references for QObjects owned by C++ (or objects with a CPP owned root parent). The implicit v8 object to express the implicit reference belongs to a dedicated v8 context, which needs to be disposed properly. Change-Id: Ic0555cb8d94384a185ebcee9825988d84e74f26b Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com> Reviewed-by: Chris Adams <christopher.adams@nokia.com>
* QDeclarativeBuiltinFunctions: Remove warningAurindam Jana2011-12-141-1/+1
| | | | | Change-Id: Id603b5a47d993d07a0562a457d9d03752e9d8151 Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
* Add a tracing API for the QML engineAaron Kennedy2011-12-1416-14/+577
| | | | | Change-Id: Ic03583444d586f275897d765be8e1b5e69fdd5d4 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* QV8Engine: Console APIs, Extend functionalityAurindam Jana2011-12-145-54/+169
| | | | | | | Added console.trace, console.profile, console.profileEnd. Change-Id: Icc38ddd550989eaba0085ece120695a13ec17322 Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
* Cleanup: Remove redundant call to QV8GCCallback::registerGcPrologueCallback()Simon Hausmann2011-12-141-2/+0
| | | | | | | | The same call is done a few lines above, and calling the function multiple times has no effect after the first call. Change-Id: Ibcf10ec88b0f5182d2963e4bfe532ff6a4e5a4ad Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Fix warnings about struct/class mismatch (QDeclarativeAccessor).Friedemann Kleint2011-12-141-1/+2
| | | | | Change-Id: I85cb4042db9b4417f1098a65e99c5524e829fe92 Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
* V8: Minor cleanupSimon Hausmann2011-12-122-4/+5
| | | | | | | | | Moved context creation into the QV8Engine constructor body. That will make it easier to execute other initialization stuff in the future, such as per-thread isolate creation. Change-Id: Id4aef76d3664a3810143907d2201203b18745a47 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* QmlProfiler: stream snapshots to reduce memory footprintMikko Harju2011-12-122-12/+15
| | | | | | | | | | Taking a V8 heap snapshot with QV8ProfilerService created multiple copies of the snapshot data, causing overhead of several megabytes. This patch changes the snapshot protocol to stream the contents over the debugger connection. Change-Id: I90054210233d52dd02aa838201f9b024d578fcea Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
* Get rid of QDeclarativeMetaType::{canCopy,copy}Kent Hansen2011-12-093-580/+7
| | | | | | | | | | | | Now that we have QMetaType::construct() that does placement new construction, we can use that to copy the value. We need to destruct the (default-constructed) existing value first, but for primitive types that's a no-op, and for Qt's types it's cheap since they use lazy initialization or "shared null". Change-Id: Idadee04b1d5b590be7fec50fb0396fd277bee973 Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
* Fix QObject V8 wrapping for extended typesAaron Kennedy2011-12-071-2/+5
| | | | | | | | | | The meta object for extended types must be marked as dynamic, to prevent their properties from being marked as IsDirect. Task-number: QTBUG-22997 Change-Id: I825f94f072cb46981706221a1044c9e2feeedcc2 Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com> Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
* Fix linking of QtQuick.dll on Windows.Friedemann Kleint2011-12-077-29/+92
| | | | | | | | | | | Put class QDeclarativeComponentAttached into a separate header. When declared as Q_AUTOTEST_EXPORT in declarative/qml/qdeclarativecomponent_p.h which is included by quick/qquickloader.cpp, the Q_AUTOTEST_EXPORT is seen as __declspec(dllexport) and linking fails. Change-Id: I835197e3af6993cfd9325a432f33c636b9bfd3e6 Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
* Fix some warnings.Martin Jones2011-12-071-2/+2
| | | | | Change-Id: Iba2ec5640d02cb265ea23e4f9c5303a2da34dffd Reviewed-by: Martin Jones <martin.jones@nokia.com>
* Improve parsing of escape characters and regexp literals.Roberto Raggi2011-12-062-2/+10
| | | | | | | | | | | | | | | | | | | | | That is, in QML/JS you can escape characters in identifiers, e.g. var c\u0061se = 25 declares a variable called `case' with value 25. In such cases qmlmin needs to preserve the escape sequence in the declaration. Also, fix possible errors when pasting keywords after regexp literals. The minifier needs to preserve the whitespace character after the regexp delimiter, e.g. /x/instanceof blah without the white space after the regexp, the `i' of `instanceof' is parsed as a regexp flag. Change-Id: I5f426ac62949e34d092d4fdb0a41243de8ff2236 Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
* Fix the QML/JS parser to accept empty Javascript files.Roberto Raggi2011-12-064-751/+755
| | | | | Change-Id: I0c5dfdc76489e6d1ec5608dea625cb0d109288e2 Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
* Introduce methods to get the source location of the AST nodes.Roberto Raggi2011-12-069-268/+300
| | | | | | | | | Also removed deprecate AST nodes. Change-Id: I9221e81b15b18530bb2ab8b09da2482df543bace Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com> Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com> Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
* Ensure that scarce resources work with var propertiesChris Adams2011-12-064-10/+150
| | | | | | | | | | Now that we have a new property type which stores JavaScript handles, we need to ensure that scarce resources can be used with them. Task-number: QMLNG-18 Task-number: QTBUG-21843 Change-Id: I4a920ae39e7d33cf5e33362e5e0ee21c74cb35e3 Reviewed-by: Martin Jones <martin.jones@nokia.com>
* Don't eval signal handler closure until signal is emittedAaron Kennedy2011-12-052-11/+19
| | | | | Change-Id: Ic3bd6ed53330b19567fa0bf34b8e4618e3f68ba5 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* Adjust the source location of the last accepted token.Roberto Raggi2011-12-052-0/+4
| | | | | | | | This is necessary to get automatic semicolons inserted at the correct location. Change-Id: Ie3f806ed20704310cd6155f2dac6d0388a4a9f78 Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
* Fix crash when QtQuick 2.0 wasn't importedAaron Kennedy2011-12-054-11/+22
| | | | | | | | | The QML compiler still tried to resolve the implicit "Component" element within the QtQuick 2.0 namespace. Task-number: QTBUG-23017 Change-Id: I62ae962f58787910a76f76c872daa08874b5df56 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* Introduce more generic fast property handlingAaron Kennedy2011-12-0522-1385/+952
| | | | | | | Also reduce the number of direct calls to qt_metacall(). Change-Id: I04cd6e516a3e61058548309a19fe0b830f15c93f Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* Fix loading imports from Qt resource.Aaron McCarthy2011-12-051-3/+14
| | | | | | | | | | | Loading an import from a Qt resource fails because the url of the module was erroneously being converted to a file:// url. This results in a url that looks like "file://:/MyModule". Fixed by adding a check to see if the module path is a resource path (starts with :) and if so constructs a qrc:// url instead. Change-Id: I41a24a93d085baaf68d58c4e991d6ba2aff5e7ff Reviewed-by: Martin Jones <martin.jones@nokia.com>
* Say hello to QtQuick moduleKent Hansen2011-12-02332-117435/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change moves the QtQuick 2 types and C++ API (including SceneGraph) to a new module (AKA library), QtQuick. 99% of this change is moving files from src/declarative to src/quick, and from tests/auto/declarative to tests/auto/qtquick2. The loading of QtQuick 2 ("import QtQuick 2.0") is now delegated to a plugin, src/imports/qtquick2, just like it's done for QtQuick 1. All tools, examples, and tests that use QtQuick C++ API have gotten "QT += quick" or "QT += quick-private" added to their .pro file. A few additional internal QtDeclarative classes had to be exported (via Q_DECLARATIVE_PRIVATE_EXPORT) since they're needed by the QtQuick 2 implementation. The old header locations (e.g. QtDeclarative/qquickitem.h) will still be supported for some time, but will produce compile-time warnings. (To avoid the QtQuick implementation using the compatibility headers (since QtDeclarative's includepath comes first), a few include statements were modified, e.g. from "#include <qsgnode.h>" to "#include <QtQuick/qsgnode.h>".) There's a change in qtbase that automatically adds QtQuick to the module list if QtDeclarative is used. Together with the compatibility headers, this should help reduce the migration pain for existing projects. In theory, simply getting an existing QtDeclarative-based project to compile and link shouldn't require any changes for now -- but porting to the new scheme is of course recommended, and will eventually become mandatory. Task-number: QTBUG-22889 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Change-Id: Ia52be9373172ba2f37e7623231ecb060316c96a7 Reviewed-by: Kent Hansen <kent.hansen@nokia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@nokia.com>
* Add dynamicRoles mode to ListModel for extra flexibility.Glenn Watson2011-12-027-78/+580
| | | | | | | | | | | | | ListModel contains a new property called dynamicRoles. By default this property is disabled, meaning that the type of a given role cannot be changed dynamically. However, when this property is set, the type of a role can change between elements. This allows more flexibility but comes at a significant performance cost over the default static role mode. Change-Id: I478d48c882f51ba2dde37f88e2aac744e919b68b Reviewed-by: Martin Jones <martin.jones@nokia.com>
* Remove QSGContext and QSGTexture from QDeclarativePixmapDataGunnar Sletta2011-12-0220-264/+208
| | | | | | | | | | | | | | | | | | | | | | | In order to cleanly support multiple windows we need to not have the QSGContext reference in QDeclarativeEngine and we need to be able to have one copy of the texture for each QSGContext that is not sharing when we have multiple windows. This also makes it easier to the release graphical resources from a running application, which is another feature that we want to eventually implement. This patch does remove an adaptation feature which is the decodeToTexture, which seemed like a good idea at the time but in hindsight has not been used for anything. Edit: resolved conflict in qquickimage.cpp Edit: updated QDeclarativePixmap testcase Edit: updated QQuickImage testcase Edit: Rebased on top of QDeclarativePixmapCacheChanges Change-Id: Ifc61dd8158d3f841437d029b6031a91196145517 Reviewed-by: Martin Jones <martin.jones@nokia.com>
* Fix pixmap leak in Text with embedded images.Martin Jones2011-12-021-1/+1
| | | | | | | Insert into hash with same key we use to lookup :-/ Change-Id: I1d70916fab578c8280a11b3a03fb7cfd6ad4d594 Reviewed-by: Yann Bodson <yann.bodson@nokia.com>