aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlengine.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
| * | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-01-201-2/+0
| |\| | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/qml/qqmlvaluetype.cpp tests/auto/qml/qml.pro Change-Id: I78f992f83212bb9fd5e09b64163f15f046185224
| | * Add Q_GADGET Wrapper for QQmlPropertyPierre-Yves Siret2020-01-151-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This enable exposing a QQmlProperty as a value type to QML code. Only object and name are exposed as a properties to keep it simple. We might want later to expose the property of a Binding or a Behavior as a property for complex usecases. This permits exposing it as one self contained value instead of a pair of unrelated object and name. Task-number: QTBUG-70964 Task-number: QTBUG-73892 Change-Id: I3a46212446f43f3a7e301943cb49d3a48c377de3 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | Merge remote-tracking branch 'origin/dev' into wip/cmakeLeander Beernaert2020-01-161-27/+20
|\| | | | | | | | | | | Change-Id: I0c5b939c70bdb91ccdf7068784308416dcaa5736
| * | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-01-151-2/+2
| |\| | | | | | | | | | Change-Id: I3058a6b9347d7ca2a0c04a58cb030ae5c47de415
| | * Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2020-01-141-2/+2
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quick/items/qquickitemsmodule.cpp src/quick/items/qquickitemview.cpp Change-Id: I02191959a5023c4320f5487a7fb3a71f8711195f
| | | * On QQmlEngine destruction drop singletons before type loaderUlf Hermann2020-01-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The singleton destruction can trigger additional types to be loaded. Fixes: QTBUG-80840 Change-Id: Ifa406b2a1cfd3b9e9b36e8005dfc0808eebf15cf Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
| * | | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-01-141-24/+7
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/imports/folderlistmodel/plugin.cpp src/imports/layouts/plugin.cpp src/imports/localstorage/plugin.cpp src/imports/models/plugin.cpp src/imports/particles/plugin.cpp src/imports/qtqml/plugin.cpp src/imports/qtquick2/plugin.cpp src/imports/shapes/plugin.cpp src/imports/statemachine/plugin.cpp src/imports/testlib/main.cpp src/imports/wavefrontmesh/plugin.cpp src/imports/window/plugin.cpp src/imports/workerscript/plugin.cpp src/qml/jsruntime/qv4sequenceobject.cpp src/qml/qml/qqmlengine.cpp src/qmlmodels/qqmlmodelsmodule.cpp src/qmlmodels/qqmlmodelsmodule_p.h src/qmlworkerscript/qqmlworkerscriptmodule.cpp src/qmlworkerscript/qqmlworkerscriptmodule_p.h src/quick/items/qquickitemsmodule.cpp Change-Id: I5f1fbc3d00e8f583d2c89afc5389de84d68633a7
| | * | Generate registrations for all importsUlf Hermann2020-01-101-19/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that we can generate all QML type information at build time, we should also use it. Move the types for QtTest into the testlib import plugin. They don't need to be exported from QtQuickTest. Trigger the resource initialization of the shapes library from the plugin so that we retain a dependency and the linker doesn't optimize the module initialization away. Change-Id: Icc8cb338aa03ef1e3085e29356a5db7b73ba0a01 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
| | * | QQmlEngine: use const QList for C++11 style iterationUlf Hermann2019-12-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ice4c714e4b234bd03fb060ad185de440592787ea Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * | Port away from QObjectPrivate::getThreadDataGiuseppe D'Angelo2019-12-161-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was a temporary measure to make merges possible; now use the QObjectPrivate::threadData atomic directly. The code seems fine with just relaxed semantics. Change-Id: I257362b428a4d230295ebbe75bafa1c036fa69d7 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2019-12-121-1/+11
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/types/qqmlbind.cpp Change-Id: Ib992d1a7ac6c1a96d39819be6f23955dc31b44b2
| | * | Merge remote-tracking branch 'origin/5.14' into 5.15Liang Qi2019-11-221-1/+11
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/qml/qqmlextensionplugin.cpp tests/auto/quick/qquicktableview/tst_qquicktableview.cpp Change-Id: Ic58d36a8532015bae30f2690063db9829b3bf372
| | | * Retrieve the attached properties base type without recursionUlf Hermann2019-11-181-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is probably faster and avoids the deprecation warnings stemming from deprecated functions calling themselves recursively. Task-number: QTBUG-80040 Change-Id: I2f65aad3bc7f85b7a7de66d3e76dac1233a58db8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
| | | * Disable deprecation warnings in function that are themselves deprecatedUlf Hermann2019-11-181-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Deprecated functions calling each other is not worthy of warning, as they will all be removed at the same time. Task-number: QTBUG-80040 Change-Id: I4c2b31474e3ee8168fd48796cf99ead266dffb37 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | | | Merge remote-tracking branch 'origin/dev' into wip/cmakeLeander Beernaert2019-11-251-4/+4
|\| | | | | | | | | | | | | | | Change-Id: I48b9c2e4f3a75c18470c55f73f2089dc1401de54
| * | | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2019-11-081-3/+3
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp Change-Id: I1c0c7c44053bf3d5f8f9723662bd0fe67253c8ae
| | * | Use a temporary getter for QObjectPrivate::threadDataGiuseppe D'Angelo2019-11-071-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In preparation of making it an atomic. Change-Id: I549fc224e7d4006585c26ac45f82784ffb030613 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2019-10-161-1/+1
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qmlmodels/qqmlmodelsmodule.cpp Change-Id: Ibae188f554f931f64f39022417b10e3469685f82
| | * | Add support for semi-automatic QML type registrationsUlf Hermann2019-10-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can use the new moc JSON output to collect all meta-objects at build time and, for those that include QML element registration meta-data, generate code that automatically registers these types with QML. This eliminates the need to call qmlRegisterType manually. For now this generates free-standing functions (per module) that need to be called manually. This is intended as an intermediate step. Task-number: QTBUG-68796 Change-Id: Ib414eef9757344feee488ebc7388f957b975347f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | | Merge remote-tracking branch 'origin/dev' into wip/cmakeAlexandru Croitor2019-10-141-17/+9
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | Removed dependencies.yaml because we don't use it yet in wip/cmake. Fixed conflict in qmlcachegen.cpp. Change-Id: Ie1060c737bee1daa85779903598e5b6d5020d922
| * | | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2019-09-271-17/+9
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/imports/folderlistmodel/plugin.cpp src/imports/shapes/plugin.cpp src/qml/qml/qqmlengine.cpp src/qmlmodels/qqmlmodelsmodule.cpp src/qmlworkerscript/qqmlworkerscriptmodule.cpp src/quick/items/qquickitemsmodule.cpp Change-Id: Ib9215a07aa95b5801ce3cb7287f7903926e8c838
| | * | Specify parameters of type registration in class declarationsUlf Hermann2019-09-261-17/+14
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using this technique we can automatically register all necessary revisions and minor versions of a type, using the metaobject system. This greatly reduces the potential for mistakes and resulting incompatibilities between versions of imports. We assume that for each type we need to register all revisions of its super types and its attached type, and that the revisions match. That is, if you import version X of type A, you will also get version X of its attached type and of any super types. As we previously didn't take these dependencies into account when manually registering the types, a number of extra revisions are now registered for some types. Potentially, we can now generate the qmltypes files at compile time, using moc. Change-Id: I7abb8a5c39f5e63ad1a0cb41a783f2c91909491b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/wip/qt6' into wip/cmakeAlexandru Croitor2019-10-111-12/+12
|\| | | | | | | | | | | Change-Id: I4a91928610f79c8e21a05781953ffa41508c828a
| * | Merge remote-tracking branch 'origin/dev' into wip/qt6Ulf Hermann2019-09-051-12/+12
| |\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/qml/qml/qqmlengine.cpp src/qmlmodels/qqmlmodelsmodule.cpp Change-Id: Id60420f8250a9c97fcfe56d4eea19b62c6870404
| | * Harmonize meta object revisions and minor versionsUlf Hermann2019-08-261-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to avoid complexity we want those to match. We can easily "rename" the meta object revisions as those are not public interfaces. Change-Id: I48e063d49758c7bacd9b7816bf5541cf67e07b0d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
| | * Allow Connections to handle signals using JavaScript functionsUlf Hermann2019-08-161-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Requiring full function definitions as signal handlers has two advantages: 1, We don't need a custom parser that magically recognizes properties which would otherwise be an error in other components. 2, The user is forced to specify the full signature of the handler, including any parameters. This helps when the functions will eventually be compiled to C++ The old behavior is retained, generating a warning if any of the magic bindings are still set in a Connections element. Only if no magic bindings are found, the functions are connected. This is because there might be functions named onFoo in old-style Connections elements and silently connecting those to any matching signals would be a change in behavior. Change-Id: I8c78d8994fdcddd355fe822cde9a0702dc8c75de Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Adapt usage of QMetaCallEvent to changes in QtCoreVolker Hilsheimer2019-08-131-10/+6
| | | | | | | | | | | | | | | | | | | | | Memory allocation is now handled by QMetaCallEvent. Change-Id: I78a2145af6cf93de5e9d71d6b943841f67183fa8 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/wip/qt6' into wip/cmakeAlexandru Croitor2019-08-151-5/+8
|\| | | | | | | | | | | Change-Id: I6f2152aeecaeb8e63fdbc1cdf1444132a054b6f5
| * | Merge remote-tracking branch 'origin/dev' into wip/qt6Alexandru Croitor2019-08-091-5/+8
| |\| | | | | | | | | | Change-Id: I507e252f9cb11b75dd9f7f409c39d93094e8c3ef
| | * Lower severity of nullptr error handling for qmlRegisterSingletonFabian Kosmale2019-07-181-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | Instead of aborting the execution directly, print a critical warning message and handle the value gracefully as undefined in QML. Change-Id: I8e508ba7fef7c61d9c5a5e13837c4a4cb2ed8486 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/wip/qt6' into wip/cmakeAlexandru Croitor2019-07-241-28/+17
|\| | | | | | | | | | | Change-Id: I52b2d17d9334313e4b3d84b52432f2ebc77f7415
| * | Remove module registration related Qt version #ifdefsSimon Hausmann2019-07-221-24/+0
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ahead of compiling declarative with a newer qtbase that bumps the Qt version to 6, we can already now remove the Qt 5 code paths related to type registrations as commit 8534634bd204ccdca3edcc244a35be6e81739fce implements those dependencies differently. This also required lowering the minimum minor version for the Instantiator to 1, as it was in the Qt 5 branch. Change-Id: Idd38c967eeb8423509237116803d292bba422f8b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Split compiler and runtime more clearlyUlf Hermann2019-07-111-1/+1
| | | | | | | | | | | | | | | | Provide different export macros and different top level headers for each, don't include runtime headers from compiler sources. Change-Id: I7dc3f8c95839a00a871ba045ec65af87123154be Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Move BindingPropertyData into ExecutableCompilationUnitUlf Hermann2019-07-111-1/+1
| | | | | | | | | | | | | | | | It is only used in the runtime. Change-Id: I93bc91a97f7a6967cdf49f2eb5c32b47217d905f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Disentangle includes and namespacesUlf Hermann2019-07-111-2/+4
| | | | | | | | | | | | | | | | Avoid using namespace in headers and include only the headers we actually need. Change-Id: I526a0f874dc09b07693fd87070665be396d3b637 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Split qqmltypeloader{_p.h|.cpp} into a several filesUlf Hermann2019-07-111-0/+11
| | | | | | | | | | | | | | No one can read this mess. Change-Id: Icec4f2afc466435c1ae5e4e80fa2c1b5baf7d087 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/wip/qt6' into wip/cmakeAlexandru Croitor2019-07-111-9/+22
|\| | | | | | | Change-Id: I2963c1209316fb6755f572969f368970450d7991
| * QQmlEngine: Hoist some allocating code out of critical sectionsMarc Mutz2019-07-021-4/+9
| | | | | | | | | | | | | | | | | | ... so the lock is held for shorter durations. Add optimistic std::move()s. Change-Id: I9e09e11a6e54b7ac4be3e23f06d65b3b7abc4fc0 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * Port from implicit to explicit atomic operationsMarc Mutz2019-07-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | The old code used the implicit conversions from QAtomicPointer<T> to T*, and QAtomicInteger<T> to T, and vice versa. The semantics of these differ from the ones std::atomic uses, so we're going to deprecate these, like we did for load() and store(), too. This patch fixes some users of these APIs before we deprecate them. Change-Id: I892d705c22280f1c6fdc62c1777248b44e9c4329 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * Clean up the QT_CONFIG(library) conditionsUlf Hermann2019-06-261-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | We can clear the engine plugins when compiled without library support as those might be static plugins. However, explicitly loading a dynamic plugin is pointless if compiled without library support. We can just disable the whole function. Furthermore, the ability to load dynamic qmldir plugins does not depend on Qt being compiled as shared library but rather on library support being available. Change-Id: I8553706f0f8f5bd4e98cc130bf56c4526f81b85f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Port towards load/storeRelaxed atomicsGiuseppe D'Angelo2019-06-251-1/+1
| | | | | | | | | | | | | | | | | | | | Plain load() / store() have been deprecated, so port away to their straight replacements. Task-number: QTBUG-76611 Change-Id: I79935b889cf7b2ba7698f70cc5e33994b034aa09 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * QQmlEngine: keep ImageProvider alive while in useFabian Kosmale2019-06-251-0/+6
| | | | | | | | | | | | Fixes: QTBUG-76527 Change-Id: I4044ae833eff61a3f06c2366597c1623b26794b0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Simplify errors and diagnosticsUlf Hermann2019-06-141-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We only need two classes to describe all possible diagnostics: * A low-level private POD DiagnosticMessage. This is easily copied and passed around internally. It doesn't need to adhere to a stable API and it doesn't carry any extra baggage. * The high-level public QQmlError with its stable interface. This can internally also use a DiagnosticMessage as storage. Change-Id: I52be88d9b5d9855a661b8032b01eedb43a0fb0b3 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Initial CMake portAlexandru Croitor2019-06-031-1/+1
|/ | | | | | | | | Crude port of QtQml, QtQmlModels, QtQuick and a few tests and a few examples. Task-number: QTBUG-74136 Change-Id: I5de4d8215b33d1a4a72c2c0e7951e4b384f27e3e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Restore value bindings when disabling a Binding elementErik Verbruggen2019-05-171-0/+1
| | | | | | | | | | | | | | We previously only restored script bindings that were replaced by a Binding. Now we handle both. [ChangeLog] QML Binding elements now support restoring previous values of the bound property when the binding is disabled. This will be the default behavior in Qt 5.15. Reliance on the old behavior of only restoring binding, not literal values results in a warning now. Fixes: QTBUG-33444 Change-Id: I833403b0645c08eee486fbd4acf5d3c7de2ef73a Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Split CompiledData::CompilationUnit in twoUlf Hermann2019-05-161-3/+3
| | | | | | | | We need a CompilationUnit that only holds the data needed for compilation and another one that is executable by the runtime. Change-Id: I704d859ba028576a18460f5e3a59f210f64535d3 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Register QObject along with QQmlComponent as basic type of the languageUlf Hermann2019-05-081-1/+5
| | | | | | | | | | | | | Apparently we need it somewhere. Before the restructuring of imports all QtQml types were automatically registered on QQmlEnginePrivate::init(). We don't do this anymore, so we need to register the basic building blocks of the language separately now. Fixes: QTBUG-75645 Change-Id: I77fe23f709304586cd16986650b0056ea87bcd45 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Remove last traces of QV8EngineUlf Hermann2019-05-081-1/+1
| | | | | Change-Id: I59f738402d51e39188bbbca2ef1fbc8a61612372 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Move workerscript to its own moduleUlf Hermann2019-05-061-16/+0
| | | | | Change-Id: I778cfe842ddf1c600a837d8f2061a338887eed95 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Mark functions involving attached property IDs as deprecatedUlf Hermann2019-04-301-0/+2
| | | | | | Task-number: QTBUG-75176 Change-Id: I969e7987ebf8b98aed9ba9e17388a0e168ef5e09 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>