aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Move implementation of functions declared in qqml.h into qqml.cppUlf Hermann2021-01-292-74/+76
| | | | | | | | It makes no sense to have them qqmlengine.cpp. Change-Id: I138807c7650ec7aef4c6e8833e8bac8a6f179d1c Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* QmlCompiler: Generate AOT functions in same order as interpreted onesUlf Hermann2021-01-291-34/+71
| | | | | | | | Otherwise various internal indices may be off, in particular the internal classes. Change-Id: I3c2a6b8150590fc41ec55bf2dfbc989078ddce42 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QML value types: Properly apply the QML_EXTENDED trick everywhereUlf Hermann2021-01-291-0/+5
| | | | | | | Without this, the properties of those types are invisible to tooling. Change-Id: Iffd05643a650d03993d9fe1a3783fe3db8c33f0b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Retain anonymous types in qmlnamesUlf Hermann2021-01-291-0/+7
| | | | | | | | | Prefix them with $anonymous$ so that we cannot accidentally find them. If we don't keep them, they may be deleted when their last strong reference goes out of scope. Change-Id: I24ca795f9d9c4ecea074019db41a3ca0618f8e81 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Doc: Describe QML_FOREIGN in "Defining QML Types from C++"Ulf Hermann2021-01-291-0/+26
| | | | | | | | Fixes: QTBUG-83852 Change-Id: I8dd5fa6887ad607fe91ac658efa51152c46df36e Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Expose getter and setter names of C++ classes in qmltypes filesFabian Kosmale2021-01-293-0/+11
| | | | | | | | | | | This simply exports the name which are already available in the json files generated by moc. We do not consider whether the methods are non-private for now. MEMBER is not supported either, but might be added if the need actually arises. Fixes: QTBUG-90711 Change-Id: If3ee18c8ce60499676a7ee22df569cba0912e22f Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QQmlListModel: Don't discern between empty and null stringsUlf Hermann2021-01-281-0/+2
| | | | | | | | | If we store an empty, rather than null, string, the retrieval mechanism crashes when getting it out again. Therefore, always store a null string. Change-Id: I799293845dd2a72c04cbef3ed1dda68ea782e191 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlDebug: make qt_qmlDebugClearBuffer() accessibleTim Jenssen2021-01-271-1/+6
| | | | | | | - also fix that qt_qmlDebugMessageBuffer is always valid Change-Id: I3661e424ecaeb7d8c8bd3b1acb137ae34a3f06e4 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Doc: Fix qdoc link warningNico Vertriest2021-01-271-2/+4
| | | | | | | | Path th qmllocalstorage missing in sourcedirs/headerdirs Task-number: QTBUG-90412 Change-Id: I8971e7c569e2ce3bb2c763178af6f1b546b3dc41 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* V4: Store instruction pointer before CmpInUlf Hermann2021-01-272-0/+2
| | | | | | | | The "in" operator may throw an exception. Change-Id: I7d0b6e2212ac6ec237fbf14719349f8e23810028 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix compilation after subpixel handling changes in qtbaseFabian Kosmale2021-01-274-5/+6
| | | | | | | Change-Id: Ife394e660274dd9dbe17207e18c5024f90628a00 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQuickWindowIncubationController: Use QPointer to guard QSGRenderLoop referenceMike Achtelik2021-01-261-3/+3
| | | | | | | | | | | | | | In some cases, when the QGuiApplication is shutting down while there is an active QAnimationDriver and an incubating object, the QQuickWindowIncubationController will try to access an already destroyed QSGRenderLoop. So use a QPointer to guard the QSGRenderLoop access. Fixes: QTBUG-90489 Pick-to: 5.15 Pick-to: 6.0 Change-Id: I528e06ff22dfcad804593db6771d9163b21808f4 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* fix not initialized enum error valueTim Jenssen2021-01-261-1/+1
| | | | | | | amends: c0b59369ab45a78e4407633365a52c1a9255512c Change-Id: If068443257baa0eaee31a43b94b2e0d0f7f554fe Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QmlCompiler: Return after importing a scriptUlf Hermann2021-01-261-1/+1
| | | | | | | | If we don't return there, the newly imported script is promptly overwritten by an invalid module. Change-Id: I788a7275e2c190a20c176da35f5c76ac9f6ad02b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QDeferredSharedPointer: lazy-load to determine isNull()Ulf Hermann2021-01-261-16/+42
| | | | | | | | | | | If the content is not loaded, yet, the data is always null. If it is loaded, the result might be null. So, in order to know, we have to load. The same holds for deferred weak pointers, the hash functions, and the equality operators. Change-Id: I20eec58efe5da604187c34578ee40f769090c910 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQmlJSTypeReader: Guard against empty JS filesUlf Hermann2021-01-261-9/+11
| | | | | Change-Id: Ie52ce15b7fa960ce84a6d17a21a0e307a38c726e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Qt.labs.sharedimage: Mark as non optionalMaximilian Goldstein2021-01-261-1/+0
| | | | | | | | | | This plugin cannot be implemented in an optional way until we create a better way of handling image providers. Task-number: QTBUG-84639 Change-Id: I1eafaa08187bbd566a9da14f39836ea70a1776f9 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Avoid string/ascii conversion warnings in qwavefrontmesh.cppUlf Hermann2021-01-261-11/+27
| | | | | Change-Id: I49bf672bf22c5ad9cc53c865e9aac4c5e7cec7f7 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Allow AOT compiled functions to set the instruction pointerUlf Hermann2021-01-262-2/+8
| | | | | | | | This way we get correct line numbers in error messages. Change-Id: Ieb642523f74adf73955e78cdfb8cb2faee40b321 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Make a bunch of plugin headers privateMaximilian Goldstein2021-01-258-14/+37
| | | | | | | | This avoids a bunch of warnings and as these headers weren't exposed before they might as well be kept private. Change-Id: I42417516921ae6d498d1ed07728bdad654067b3d Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmltyperegistrar: Make sure we have metatypes for all QML typesUlf Hermann2021-01-252-13/+65
| | | | | | | | | | We need to be able to resolve any QML type from its C++ name using QMetaType::fromName(). qmltyperegistrar can generate the missing metatypes, either by creating synthetic ones (for namespaces), or by making sure the existing ones are registered (for others). Change-Id: If775af56d891f2c2a5bb94589b3cb05a199c7c35 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQmlPropertyCache: use more efficient addProperty overloadFabian Kosmale2021-01-251-1/+2
| | | | | | | | | | As we already have the metatype of the property, we can use the more efficient QMetaObjectBuilder::addProperty method which avoids a name to metatype lookup. Task-number: QTBUG-88766 Change-Id: Iab8c22556cb15d35337f266e533cb0d907232421 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Don't register invalid metatypes in QQmlMetaTypeDataUlf Hermann2021-01-251-5/+0
| | | | | | | | If the original type's ID is not valid, then QQmlMetaTypePrivate's ID is also not valid. Change-Id: Ia727e7dc99b1954b4c6fa9b599e8edc0ef9b3212 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Move qmlRegisterUncreatableMetaObject to qqml.cppUlf Hermann2021-01-252-34/+33
| | | | | | | | | There is no reason to keep it in qqmlengine.cpp as it is declared in qqml.h. Change-Id: I0a0261b943c4a3b4333d7161becbd68ad4f1b21e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* Qt.labs.sharedimage: Make plugin optionalMaximilian Goldstein2021-01-259-87/+207
| | | | | | | | | This moves the sharedimage types into a new library and is meant to make them availabe to the QML compiler at some point in the future. Task-number: QTBUG-90487 Change-Id: If79425a43cb8c1831422631791d35c1f329c7e80 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QQmlPropertyBinding: improve error reportingFabian Kosmale2021-01-253-7/+77
| | | | | | | | | | | | | | | | | | This change ensures that bindings created in QML between new-style properties contain information about which property caused the loop. To do this, we store additional information about the property involved to retrieve its name and position at a later point. We print the warning in case we detect a binding loop in evaluate, and also set the error reporting callback correctly, so that the condition can be reported when the loop is detected in another part of the binding evaluation. In addition, we do not only set the QPropertyBinding's error member when JS evaluation results in an error, but also print the warning with qmlWarning. Fixes: QTBUG-87733 Change-Id: Idb25237d1f57355ca31189e6bf2a918430b3a810 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* builtins: Don't export Math, JSON, StringUlf Hermann2021-01-251-8/+0
| | | | | | | | | Those are properties of the JS global object. You cannot use them as normal types. Change-Id: I1f80e1be8f598cb102109fa2f685cd2b55ad6950 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* Add env.vars. to toggle pipeline cache load/saveLaszlo Agocs2021-01-255-8/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QRhi has APIs (but private ones) that allow retrieving and restoring the contents of the "pipeline cache". (which may map directly to VkPipelineCache, or may be a simulated, OpenGL program binary based solution) In many cases it is convenient if the saving of the cache blob to a file, and then, during subsequent runs of the application, the loading of cache contents, can be enabled via environment variables: QSG_RHI_PIPELINE_CACHE_SAVE=filename maps to setting the EnablePipelineCacheDataSave flag on the QRhi, and writing the collected data to file upon application exit. (more correctly, when the QRhi is about to be destroyed by the render loop) QSG_RHI_PIPELINE_CACHE_LOAD=filename maps to attempting to read the contents of the specified file, and, if successful, passing it to QRhi right after initialization. When supported and the data is not corrupt or incomplete, the result is likely improved pipeline creation times (the exact details depend on the driver with Vulkan, while with OpenGL it all maps to glProgramBinary instead of compiling from source) Setting QSG_INFO=1 can be useful to see what is happening when the above 2 env.vars. are set. With OpenGL the simulated "pipeline cache" is orthogonal to the Qt 5 era shader program disk cache: loading from both is supported transparently to the application. When QSG_RHI_PIPELINE_CACHE_SAVE is enabled, the disk cache will not be written to. Task-number: QTBUG-90398 Change-Id: I82d9a81e9dab39d3513a6aa7c6e1ff748a4ec6e5 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* export QAcccessibleQuickItemJan Arve Sæther2021-01-221-1/+2
| | | | | | | | | | | This is needed in order to make controls in qtquickcontrols2 module more accessible. Their accessibility implementation can now inherit from QAcccessibleQuickItem Task-number: QTBUG-75042 Pick-to: 5.15 6.0 Change-Id: I30deba018825937a4ebd757e5250efca87519822 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Qt.labs.qmlmodels: Make plugin optionalMaximilian Goldstein2021-01-2211-27/+118
| | | | | | | | | This moves the qmlmodels types into a new library and is meant to make them availabe to the QML compiler at some point in the future. Task-number: QTBUG-90487 Change-Id: Ib76d1f0b592cc52f6396864fb4be3bb41c4df27b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QAnimationGroupJob: Don't call virtual functions from dtorUlf Hermann2021-01-222-23/+42
| | | | | | | | | | | | The subclasses are already dead at that point. We don't need to notify them anymore. Rather, refactor the code so that we can clean up QAnimationGroupJob itself without virtual calls. Task-number: QTBUG-90401 Pick-to: 5.12 5.15 6.0 Change-Id: I6917bf299ceb1383b9d29687e5bf53ae36803ecf Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* Export QML and Quick value typesUlf Hermann2021-01-222-17/+17
| | | | | | | They need to be accessible from C++. Change-Id: I60f2213bdbe6b8b64856e13f1e0cc798f8a51086 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QJSEngine: Add a function to throw a pre-generated error objectUlf Hermann2021-01-222-0/+15
| | | | | | | | | | | | | | | It makes little sense that you can construct an error object but not throw it. The test was definitely meant to actually throw the error object, not return it. [ChangeLog][QtQml] QJSEngine has gained an additional overload to the throwError() method, with the effect that calling throwError() with a character literal as argument is now ambiguous. You should explicitly construct a QString instead. Change-Id: I90c6c9edf10509daa142a86581d6a3f7ff45af2c Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Qt.labs.wavefrontmesh: Make plugin optionalMaximilian Goldstein2021-01-227-8/+898
| | | | | | | | | This moves the wavefrontmesh types into a new library and is meant to make them availabe to the QML compiler at some point in the future. Task-number: QTBUG-90487 Change-Id: I9ab9dfc62ef9c205ce4649df33a6c1e2ac0ca639 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* fix no translation buildTim Jenssen2021-01-211-0/+2
| | | | | Change-Id: I5f4334e8b55511c33eab52262239d5d2da2329ba Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Qt.labs.animation: Make plugin optionalMaximilian Goldstein2021-01-218-8/+107
| | | | | | | | | This moves the animation types into a new library and is meant to make them availabe to the QML compiler at some point in the future. Task-number: QTBUG-90487 Change-Id: I19bd864253941931706933f7e517bb31938e9cc2 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Silence warnings about deprecated QString::QString(const char*)Friedemann Kleint2021-01-213-9/+14
| | | | | | | | | | | | Fix warnings like: src/qmllocalstorage/qqmllocalstorage.cpp:81:62: warning: QString::QString(const char*) is deprecated: Use fromUtf8, QStringLiteral, or QLatin1String [-Wdeprecated-declarations] src/src/labs/settings/qqmlsettings.cpp:335:87: warning: QString::QString(const char*) is deprecated: Use fromUtf8, QStringLiteral, or QLatin1String [-Wdeprecated-declarations] src/labs/settings/qqmlsettings.cpp:346:50: warning: QString::QString(const char*) is deprecated: Use fromUtf8, QStringLiteral, or n1String [-Wdeprecated-declarations] src/labs/settings/qqmlsettings.cpp:361:50: warning: QString::QString(const char*) is deprecated: Use fromUtf8, QStringLiteral, or n1String [-Wdeprecated-declarations] src/quicklayouts/qquicklayout.cpp:1241:61: warning: QString::QString(const char*) is deprecated: Use fromUtf8, QStringLiteral, or QLatin1String [-Wdeprecated-declarations] Change-Id: I87d7e28842a4f7f75b02c1e78eb3df400adcab94 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Qt.labs.folderlistmodel: Make plugin optionalMaximilian Goldstein2021-01-2110-9/+107
| | | | | | | | | This moves the folderlistmodel types into a new library and is meant to make them availabe to the QML compiler at some point in the future. Task-number: QTBUG-90487 Change-Id: Iee84a4804a241aa1dee5f896a02ccc9f0ecc0d8d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Expose the list of preferred instance extensions to rendercontrol usersLaszlo Agocs2021-01-213-5/+38
| | | | | | | | | As all QRhi stuff is private, it needs to have a public counterpart in Qt Quick in order to fully support the case of Vulkan-based QQuickRenderControl usage. Change-Id: Iaf9a7aa56022acd31af6ebf16de6b83a04966ff4 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Query QRhi's desired Vulkan instance extensions instead of hardcodingLaszlo Agocs2021-01-211-2/+1
| | | | | Change-Id: I9859e1b2f786f1e578f3536bb3299c38a3a9a8b6 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* qmllint: Remove exceptions for most unknown builtinsUlf Hermann2021-01-214-63/+83
| | | | | | | | | | | | All those types are properly defined in the qmltypes files now. We just need to search the enumerations the same way as methods and properties in order to find everything. Also, deduplicate the code that resolves properties, methods, and enums by using a common template for iterating the scopes. Change-Id: I0bf1423974d0ec8f602ecd0342522b3e981a8586 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Use new QObjectPrivate connection mechanism in dynamic connectionsAndrei Golubev2021-01-211-2/+18
| | | | | | | | | | | Old API assumes sender == receiver, which results in wrong handling of connections when receiver is deleted: connection is not removed or notified elsehow as it's not really tied to a valid receiver Task-number: QTBUG-86368 Pick-to: 5.15 6.0 Change-Id: I0f3115f1b0f26cf353752ba2b8fd88e0f3bdd388 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Doc: Fix CI warnings qtdeclarativeNico Vertriest2021-01-211-1/+1
| | | | | | Task-number: QTBUG-90439 Change-Id: I24664b27c3185c595b1ffd994cdf51b944f494ee Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Doc: Change section about writing a qmltypes fileUlf Hermann2021-01-202-103/+9
| | | | | | | | | | | You should not write qmltypes files manually. We only document their existence and that you should add them to manually written qmldir files now. Change-Id: I434398656179806c3e57724324aba38738384e1d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* QQmlJSScope: Fix typoUlf Hermann2021-01-202-3/+3
| | | | | | Change-Id: Idb29a7483b813ed00849c13ef1324c7e931400de Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Qt.labs.settings: Make plugin optionalMaximilian Goldstein2021-01-208-7/+102
| | | | | | | | | This moves the settings types into a new library and is meant to make them availabe to the QML compiler at some point in the future. Task-number: QTBUG-90487 Change-Id: I986615b08ea8c1a7312b9d9c6ae0b13c03fb5497 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Ensure we cancel touchMouseSynthesis upon receiving touchCancelRichard Moe Gustavsen2021-01-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | As it stood, we wouldn't cancel touchMouseSynthesis after receiving a touch cancel event. The result would be that the first touch event sent to QQuickWindow thereafter would have touchMouseId set to value different from -1. This again would fool QQuickWindow into believing that the event belonged to a touch event it has synthesized before, and it would as such take a different/wrong path for delivery. This caused text selection to fail on iOS, since a press-and-hold on a line edit from QPA would cancel the touch event and show a magnifier glass. When the user later touched inside the line edit again to move the cursor, this new touch event would not be delivered to the text edit. Pick-to: 6.0 Fixes: QTBUG-90485 Change-Id: Iad640ae57317ea86ee68ca053654b0b30ade003a Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* QtQuick.LocalStorage: Make plugin optionalMaximilian Goldstein2021-01-207-17/+117
| | | | | | | | | This moves the LocalStorage types into a new library and is meant to make them availabe to the QML compiler at some point in the future. Task-number: QTBUG-90487 Change-Id: I57ae8dc45a9ef3d5221520f656a2475bca2eb453 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Add equality operators and hash functionsUlf Hermann2021-01-201-0/+81
| | | | | | | We want to be able to use these types in hashes. Change-Id: Iea60bb8dd1ce893a37c4856d153f0f5c77d29fcd Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmllint: Support extended typesUlf Hermann2021-01-203-3/+71
| | | | | | | Fixes: QTBUG-90448 Change-Id: I5fb6b3d9223ae95ca7e039c5b9139ed086052c29 Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>