aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.6' into 5.75.7Liang Qi2016-11-2510-20/+69
|\ | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4ssa.cpp src/qml/qml/v8/qqmlbuiltinfunctions.cpp src/quick/util/qquickprofiler_p.h Change-Id: I11a89c2a166115d6697adfba09928805643e709e
| * Doc: fix incorrect syntax in "Code-Behind Implementation Resource"Mitch Curtis2016-11-251-4/+4
| | | | | | | | | | | | Change-Id: Ie86302f12d4ad65ff46335a1ea248bbb4c5559f3 Task-number: QTBUG-56008 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| * V4: Fix JIT codegen for null/undefined conditional jumpsErik Verbruggen2016-11-231-2/+2
| | | | | | | | | | | | | | | | | | When checking for undefined, both the tag and the value need to be checked. When loading the tag, it shouldn't end up in the same register that is used to hold the address of the QV4::Value. Change-Id: I380fce432ba489fdabe569dd2c9cac31e9905260 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Improved robustness of the optimizer when removing expressionsSimon Hausmann2016-11-221-9/+6
| | | | | | | | | | | | | | | | | | | | | | For example during dead code elimination we may invalidate statements, but at the same time there may still be instances left in the work list of optimizeSSA(). When we encounter then, we should not process them any further. Task-number: QTBUG-56255 Change-Id: I4c24b1a225ce1bde112172e9606f91c426c19f19 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * Fix binding re-evaluation when list model properties changeSimon Hausmann2016-11-184-3/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a regression from commit 4876ea6a18ccdfd72014582aa5d50ab9f6b6ec9e, which avoided returning an expensive QObject when calling get() but also lost the ability to perform binding captures when accessing the properties. This change restores the captures by performing them by hand in get() and also triggering the notifiers directly when the values change, without creating the QObject. Task-number: QTBUG-52356 Change-Id: Ia429ffafd4032b63d3e592aa63bb0864a24e0965 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Doc: fix incorrect argument name for createQmlObject()Mitch Curtis2016-11-171-2/+2
| | | | | | | | | | | | | | "string" is the argument type, not its name. Change-Id: Ia8f1afe01363eb6bfa69247aca5c0849c56000c4 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
| * Fix reading of enum properties from gadgetsSimon Hausmann2016-11-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QMetaProperty::type() maps an un-registered enum to QMetaType::Int, and so if a property cache is created for a gadget with enum properties, then their type will be int and we'll correctly read enum properties as ints in JavaScript. However if the enum is registered at the time we create the cache, then the property type will be the specific type and not QMetaType::Int. The property reading code in QV4::QObjectWrapper can deal with that, but the property reading code in the gadget value type wrapper code did not. [ChangeLog][Qt][Qml] Fix reading of enum properties from gadgets / value types when the enum was registered with qRegisterMetaType(). Change-Id: I7812b216a276dcc95c36e313507e1a1142250d0b Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * QML: Check for failing realloc/malloc in the QmlJS memory poolErik Verbruggen2016-11-151-1/+4
| | | | | | | | | | | | | | | | | | This should make (properly functioning) static code checkers stop complaining. Task-number: QTBUG-57025 Change-Id: Ic7e6f1b0b02f2e9324dbc891ab4620d53d9f9a18 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-11-152-5/+11
|\| | | | | | | | | | | | | | | Conflicts: src/qmldevtools/qmldevtools.pro tests/auto/qml/qqmlconnections/tst_qqmlconnections.cpp Change-Id: I12255c16716bd8a74e7047cdb1f9302a4d1ea827
| * Setting Connection's target to null should disconnect implicit targetMichael Brasser2016-11-151-2/+2
| | | | | | | | | | | | Change-Id: Id7c8c7080e6db8bb6d09c1df13cddaef047cf611 Task-number: QTBUG-56499 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| * QV4String: properly detect overflow when trying to convert to an array indexGiuseppe D'Angelo2016-11-041-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A wrong overflow detection caused strings like "240000000000" to pass the conversion, even though they would not fit into a uint when converted into base-10. This mis-conversion to uint then caused all sorts of side effects (broken comparisons, wrong listing of properties, and so on). So, properly fix the overflow detection by using our numeric private functions. Change-Id: Icbf67ac68cf5785d6c77b433c7a45aed5285a8c2 Task-number: QTBUG-56830 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-276-23/+44
|\| | | | | | | | | | | | | | | | | Conflicts: src/quick/items/qquickwindow.cpp tests/auto/quick/qquicktext/BLACKLIST tests/auto/quick/qquicktextedit/BLACKLIST Change-Id: I8bd68b0b5e853b7908791d2cbddd18dd527c76ae
| * Fix QML Compiler crashSimon Hausmann2016-10-251-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | After commit 2afb54fb51091765f79548b0b057795bc3c6eb38, Primitive::undefinedValue() uses setM() to clear out all bits. Previously that code was #ifndef'ed out for the bootstrap build, but now that we can do the correct boxing in host builds (as we know the pointer size), we can re-enable setM() in bootstrap builds and fix this crash that was a Q_UNREACHABLE() assertion. Change-Id: I49036792c06c9a17272aba65261ab8f32beb2ad8 Task-number: QTBUG-56658 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Fix docs about ownership when QObject has a parentSérgio Martins2016-10-141-2/+2
| | | | | | | | | | | | | | | | | | If you return a QObject with parent from a Q_INVOKABLE it *does* get QQmlEngine::JavaScriptOwnership. It just doesn't get deleted by JavaScript (until you unset it's parent). Change-Id: Id56debe06253ea1dd31dee844f5047d4ac055024 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * V4: Fix usage of QV4::Value tags/typesErik Verbruggen2016-10-135-17/+41
| | | | | | | | | | | | | | | | These two were mixed, but have completely different values. Task-number: QTBUG-56471 Change-Id: Ifbf6da3032335ea89bfbc3acde17f64a571b9dc0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Fix gcc6 buildAllan Sandfeld Jensen2016-10-161-6/+3
| | | | | | | | | | | | | | | | | | Complete the patch for tautological-compare warnings after it was merged form 5.6. Task-number: QTBUG-56266 Change-Id: I39f25f429b90deb8d8830fb15f45ce29a5a4c51c Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-129-28/+50
|\| | | | | | | Change-Id: Ib31008e593442ca5813fb14ae6b02f7ab2577395
| * Fix V4 on big-endianAllan Sandfeld Jensen2016-10-101-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can't both invert offset position and inter-value positions of tag and value. This patch changes 32-bit big-endian to use the same order inside the tag/value but just at different offsets. This also make it compatible with how we use it with doubles. This fixes value/tag reads on 32-bit big-endian and offsets on 64-bit. Task-number: QTBUG-56271 Change-Id: I95cf792c29ac3f42a4018ce1f115193c143a0df0 (cherry picked from commit 2a658344397729450f869138bf77e063a0a6166b) Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * Fix corruption when adding or changing properties of JS objectsArnaud Vrac2016-10-101-4/+8
| | | | | | | | | | | | | | | | | | | | Commit 833c99db20 introduced this regression by only moving part of the value data to the proper offset. Task-number: QTBUG-53261 Change-Id: I11241c57057a57794bc3ca60ee437206e524f355 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Fix developer-build with gcc 6Allan Sandfeld Jensen2016-10-104-19/+37
| | | | | | | | | | | | | | | | Locally suppress bogus tautological compare warnings. Task-number: QTBUG-56266 Change-Id: Ic1b554982a778cdd89c8047483523c44d53bbadd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * QDoc: fix several typos an minor wording issues in documentationFrederik Schwarzer2016-10-063-4/+4
| | | | | | | | | | Change-Id: Ie8cbcc27e0cbe2b9caa9a1adf24f056dafa203ed Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * Fix some minor issues in documentationFrederik Schwarzer2016-10-061-1/+1
| | | | | | | | | | Change-Id: I19f1a75b2e1a1096077df7ea109fd70be9d3c759 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-052-5/+8
|\| | | | | | | Change-Id: I081d9b15796b4133d2ba6f1a862f15b873a4846d
| * Use QElapsedTimer instead of QTime to measure elapsed timeMilian Wolff2016-10-051-5/+4
| | | | | | | | | | | | | | | | | | Getting the current time from QTime is expensive as it adheres to the locale timezone. To measure elapsed time in a code block, using the monotonic QElapsedTimer is much faster. Change-Id: Ibea390d7bc5270a20cf35111dfc919e37be7001e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * QML: Clear weak references on Object destruction for C++-owned QObjectsErik Verbruggen2016-10-051-0/+4
| | | | | | | | | | | | | | | | | | | | Otherwise a re-use of the C++-owned QObject will have a back reference to a possibly GCed QV4::QObjectWrapper, which results in exciting behavior. Task-number: QTBUG-46263 Change-Id: Iff0e36f9e67c01abd02cfb5a89605d0f26ddb0de Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-10-047-13/+47
|\| | | | | | | Change-Id: I48764527fa1ab6d8d59c24552394459b1cdc58ee
| * qv4jsonobject: Make use of QVariant::toString in stringificationRobin Burchell2016-09-301-0/+5
| | | | | | | | | | | | | | | | This covers a whole host of missing cases, notably QUrl stored in a QV4::Value. Task-number: QTBUG-50592 Change-Id: I8afd772046c7bfbbcf916a7e90a57be5257b9df8 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Fix crash with window-less QQuickItemsSimon Hausmann2016-09-306-13/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mark QQuickItem visual children directly in QQuickItem instead of relying on the item being a (grand) child of a window. [ChangeLog][QtQuick] Fix crash with QQuickItems created via JavaScript being garbage collected sometimes when they're not assigned to a window. This may happen even in qmlscene when between the creation of the root item and the assignment to the QQuickWindow the garbage collector runs. The previous approach of a persistent in QQuickView marking the visual item hierarchy relies on the existence of a view. The only thing left to do in the view and qml window implementation is enforcing the CppOwnership policy set on the content item in QQuickWindow by ensuring the presence of the JS wrapper, replacing the persistent with a weak value. This also introduces a new internal mechanism for QObject sub-classes to provide their own V4 JS wrapper types. Task-number: QTBUG-39888 Change-Id: Icd45a636a6d4e4528fc19165b13f4e1ca7967087 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-09-3012-161/+303
|\| | | | | | | | | | | | | Conflicts: tests/auto/quick/qquicktext/tst_qquicktext.cpp Change-Id: I241cd418bb7e7b95e0a0a2ee4c465d48be2a5582
| * Fix crash on Array.prototype.join.call(0)Robin Burchell2016-09-291-5/+8
| | | | | | | | | | | | | | | | | | We (incorrectly) didn't check the return value to make sure we had a valid self. At the same time, rename the self variable to match up with other methods. Task-number: QTBUG-53672 Change-Id: Ia0ae5a553e49c4c3b2834c7fdf649fe6373951a2 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * V4: Free up 2 address bits in 64bit modeErik Verbruggen2016-09-288-152/+269
| | | | | | | | | | | | | | | | | | This allows for the OS to use 49 address bits. It also maps JS Undefined to the C++ nullptr on 64bit. Task-number: QTBUG-54822 Change-Id: I7cc90620f499be1506a61aac77d72d067308838c Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Add a facility to version type information for debugginghjk2016-09-221-0/+18
| | | | | | | | | | | | | | | | This serves the same purpose as qtbase/corelib/global/qhooks.cpp, but is meant to be in sync with changes in Qt Declarative internals. Change-Id: I5a4a7d9ca5c340367581749e05d09380590c46fb Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * Give SquareButton types a side property to mediate being square.Edward Welbourne2016-09-213-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We shouldn't be setting width and height for each square; we should only need to set their side, which determines their width and height - so that they're actually square ! More pertinently, this could later serve as an illustration of how to use properties and bindings. Ideally, we'd do this in some way that actually ensures setting width or height changes side; but the simple approach will do for now. Change-Id: I0df89e11221dde5d1d2930c4a779b59cf0d46654 Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-09-164-7/+28
|\| | | | | | | Change-Id: Ib45654e3e79087da4754377f0d78b70c44ed4695
| * Merge remote-tracking branch 'origin/5.6.2' into 5.6Liang Qi2016-09-161-0/+4
| |\ | | | | | | | | | Change-Id: I410c2bd25a1bddc0e395316d62791437684b8942
| | * QtQml: Disable new optimizer of MSVC2015/Update 3Friedemann Kleint2016-09-021-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add compiler option -d2SSAOptimizer- for this version of the compiler since it causes crashes. Task-number: QTBUG-55238 Change-Id: I9b38c669ad25f519150dd352b402dec982dc5555 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | Destroy an incubating delegate if it is removed before incubation completesMartin Jones2016-09-151-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Removing an item from a model after its delegate has started incubation, but before it has completed results is an orphaned item. Task-number: QTBUG-55901 Change-Id: I3d3136dc05a950ca38d53687ae7d38a6d0c7ec35 Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
| * | Document that attached properties are created in C++Mitch Curtis2016-09-051-1/+2
| |/ | | | | | | | | | | | | | | | | | | | | | | There was some uncertainty about whether or not it could be done from QML, which it can't. This patch also links to the documentation for creating custom attached objects. Change-Id: Icb9eff0ec96e7911b8d401bd38813bbd6eda227d Reviewed-by: Gavin Kistner <gkistner@nvidia.com> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Allow for garbage collection of types with errors in trimCache()Michael Brasser2016-08-301-2/+4
| | | | | | | | | | | | | | Change-Id: I821ea14f60871735bface4e2cf4e61fcb61b2784 Task-number: QTBUG-55567 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * Workaround crashes in QtQml code related to dead-store eliminationJonathan Liu2016-08-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When compiled in release mode with GCC 6, QtQml may crash. This is because the C++ compiler is more aggressive about dead-store elimination in situations where a memory store to a location precedes the construction of an object at that memory location. The QV4::MemoryManager::allocate{Managed,Object} functions allocate memory and write to it before the caller does a placement new to construct an object in the same memory. The compiler considers these writes before the constructor as "dead stores" and eliminates them. The -fno-lifetime-dse compiler flag is added to disable this more aggressive dead-store eliminiation optimization. This is a temporary workaround until a proper solution is found. Task-number: QTBUG-55482 Change-Id: I7dbae6e9e613e53ce5fb25957c449bc6657803b5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Fix V4 on big-endianAllan Sandfeld Jensen2016-09-121-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We can't both invert offset position and inter-value positions of tag and value. This patch changes 32-bit big-endian to use the same order inside the tag/value but just at different offsets. This also make it compatible with how we use it with doubles. This fixes value/tag reads on 32-bit big-endian and offsets on 64-bit. Change-Id: I95cf792c29ac3f42a4018ce1f115193c143a0df0 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | V4: Correctly format on Number.toPrecision(n)Ulf Hermann2016-08-231-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | The ecmascript standard mandates that we add trailing zeroes if the given precision is greater than the number of digits available. The only way to request this from QLocale is currently QString::asprintf(), which adds a few other incompatibilities that are easier to 'fix' by editing the resulting string. Thus we use it as a stop gap measure until we can expose better API from qtbase. Task-number: QTBUG-55358 Change-Id: Iafc11f21abb341fbe458ad75b46b4222ae5bc1db Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-08-192-2/+2
|\| | | | | | | Change-Id: I7bd70996e3372d154c6b0e47336baa22146667b0
| * Remove some double-meaning text from documentationFrederik Schwarzer2016-08-181-1/+1
| | | | | | | | | | Change-Id: I9b69dbe929947795bdfbff4e0e3a16a47fa94197 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * QML: Do not register dependencies of deleted bindingErik Verbruggen2016-08-181-1/+1
| | | | | | | | | | | | | | Because it can lead to a use-after-free. Change-Id: I6701b370c0ecee4967e5f749f673a6f9ee3d504c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-08-186-7/+16
|\| | | | | | | Change-Id: I20c622263f40c322954328e4d10a8071db3ca6d1
| * QV4Object: fix GCC 6.1 tautologial compare warningMarc Mutz2016-08-171-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | GCC warned: qtdeclarative/src/imports/localstorage/plugin.cpp:152:126: error: self-comparison always evaluates to true [-Werror=tautological-compare] Fix by comparing the types for equality instead of the addresses of their static_vtbls. Task-number: QTBUG-53373 Change-Id: Idd1598610ad6381c03c3a46abe56a332726bd6a0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * Fix throwing an exception inside a finally block with a return in catchSimon Hausmann2016-08-162-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When exiting a catch block with a return statement, we'll unwind the exception handling manually and emit finally statements right before jumping to the exit block. If we throw an exception in the final block, we'll end up using the exception handler of the catch block that contains the return statement, which means we'll end up popping the exception scope one too many times, once through ScopeAndFinally::CatchScope in unwindException() and then when executing the exception handler block. The latter we should not be executing, instead we should jump straight to the exit block. Therefore any statements emitted as part of the manual exception unwinding (finally block here) need to be part of a new basic block with no exception handler. This bug became visible in debug builds where the Scope destructor compares the scope mark against the engine stack top to ensure correct cleanup order (which was wrong). However that in turn was hidden in debug builds again due to an accidental = instead of == in a Q_ASSERT. With the Q_ASSERT fixed this use-case is covered by ch12/12.14/S12.14_A13_T3 Change-Id: Id74a1b2bb3e063871b89cc05353b601dd60df08e Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Doc: Change instances of 'OS X' to 'macOS'Topi Reinio2016-08-153-3/+3
| | | | | | | | | | | | | | | | | | | | | | As of version 10.12 (Sierra), the name of Apple's desktop operating system will be macOS. Change all occurrences where the Mac platform is discussed to use the macro \macos (defined in the documentation configuration in qtbase). Change-Id: Iea114ac73c01d74401bcd77373b41a825d2636c9 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | Doc: Remove references to Windows CEVenugopal Shivashankar2016-08-171-1/+0
| | | | | | | | | | | | | | | | The platform is not supported since Qt 5.7 Task-number: QTBUG-55331 Change-Id: I5a38940bd8ebf7dd62d04015e1738ee23ac65bb2 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>