aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/types
Commit message (Collapse)AuthorAgeFilesLines
* QML: Port QV4::CompiledData::Location to new special integer bitfieldUlf Hermann2022-05-171-1/+1
| | | | | | | | Task-number: QTBUG-99545 Change-Id: If0d6f893f2351a4146ddf125be4079b5e312f308 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit 893b6ae6e890a2b8fc842d9c9cc64b9b8f34e22f)
* QML: Port QV4::CompiledData::Binding to new special integer bitfieldUlf Hermann2022-05-172-9/+19
| | | | | | | Task-number: QTBUG-99545 Change-Id: I9f8bc5fa45c61f77ee95b055a3d8de001da8f8c5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 36ebee4e69182f0e44d87691d4740b271e1dcf38)
* qmlmodels: Move QModelIndex from QtQmlMaximilian Goldstein2022-02-222-242/+0
| | | | | | | | | | | | Moves the QModelIndex value types from QtQml to QtQml.Models as they cannot otherwise be properly resolved in tooling. Fixes: QTBUG-100338 Change-Id: I30fc18b388974238ba8353e87ef09f57f8ceabd1 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit e2864d6aa97d246546514ec0f97263574d19ec47) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix life cycle methods of various types related to QQmlBindUlf Hermann2021-11-121-5/+3
| | | | | | | | | | | Code checker complains about the absence of move ctors and operators. While we're at it, make ctors default where possible, do not use const rvalue refs, add noexcept where possible, properly disable moving and copying of QQmlBindEntryContent, and inline the null check of QV4::PersistentValueStorage::free(). Change-Id: I11b6511f39f3d84479dbacee7f3e3552a5fb2b5a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Allow Generalized group properties in BindingUlf Hermann2021-11-092-87/+637
| | | | | Change-Id: Ib3f663859be84aced383581c0874e7f7f1c0d2f7 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Doc: Replace non-existent \qmlproperty any typeIvan Tkachenko2021-10-261-1/+1
| | | | | Change-Id: I79f1b6fac5933fe13b2dda0436f95da91b2c6d8e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Update documentation for QQmlBind::restoreModeUlf Hermann2021-10-221-6/+2
| | | | | | | | | | The sections about the warning and reliance on earlier defaults were outdated. Replace it with a note saying that you shouldn't use it. Pick-to: 6.2 Change-Id: If1decbe80a469d0d1c634be6e46fb5d6a022a20e Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Make QQmlBind::value a QVariant againUlf Hermann2021-10-222-7/+12
| | | | | | | | | | | This partially reverts commit 00f903f3b4cd46ddf8361876401e5405030f97f1. We don't need the QJSValue to protect against magic conversions anymore since magic conversions have been removed in commit 1b7a098803a43355abf62e099267d4a122645e07. Change-Id: I3e60d8562d409144cdb921060c2736b1f8278e2b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* Doc: Replace \qmlproperty Object and list<> thereof with QtObjectIvan Tkachenko2021-10-222-2/+2
| | | | | | | And in case of QtQuick.Controls::Popup::anchors.centerIn it was an Item. Change-Id: I2ad7ac6969b729711138390de4efe8d6509dcc5e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Fix life cycle methods for some QML-exposed typesUlf Hermann2021-07-144-10/+0
| | | | | | | | | Follow the rule of 5: Drop empty dtors, and add Q_DISABLE_COPY_MOVE where we do need an explicit dtor. Change-Id: Icbb9d87e1087c69b1cf1f18062a496c148935783 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* Re-order some includesUlf Hermann2021-07-131-1/+1
| | | | | | | | | | The semi-private headers of QML-exposed types should follow our conventions regarding include formatting. Change-Id: I224603d37ea5debcfad258b1e14907b40328c8f6 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Privately export all QML-exposed typesUlf Hermann2021-07-132-2/+3
| | | | | | | | We need to be able to access them from C++. Pick-to: 6.2 Change-Id: I2b7b823cbb36866240d194e877a3dd49f5d2f350 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add a ParentProperty classinfo and use that to find parentsUlf Hermann2021-05-191-0/+1
| | | | | | | | | | This is more robust than just going by the "parent" name. Task-number: QTBUG-93662 Change-Id: If099733de6ad0f3bb7cb75b8915789f66b554f85 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmltypes: Add information about QQmlCustomParserMaximilian Goldstein2021-04-271-0/+1
| | | | | | | | | | Adds a macro called QML_CUSTOMPARSER which will result in a hasCustomParser flag to be set in qmltypes. Also ensures qmllint does not warn about unknown properties when a class utilizes custom parsers. Fixes: QTBUG-93027 Change-Id: I7559d79c9bf06a0a7a93f54370948f12d09dd64e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Adjust to QProperty using eager evaluationFabian Kosmale2021-04-191-2/+2
| | | | | | | | | | | | Besides API changes, we need to - adjust QQmlBind to unlink the binding properly (that probably was broken already before, but did not cause issues so far, as the old binding would not have been evaluated without a read access) and - skip tests in tst_qmlcompiler_manual, as the bindings are executed before the engine is correctly set. Change-Id: I97b0ac32b428c1a033664fe8593effadb69cd348 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Correctly specify extension type for model index value typesFabian Kosmale2021-03-161-0/+3
| | | | | | | | | Those are not only foreign types, but also extension types which add additional properties. Thus we also need to mark them as QML_EXTENDED. Pick-to: 6.1 Change-Id: I7a0469f7760887318a2b34bc5fcb85f011c0b0bf Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Port QQmlBindPrivate to QQmlAnyBindingFabian Kosmale2021-03-041-31/+9
| | | | | | Change-Id: I535d7de8e94a8b80ab803c221fbc19ead8b68c25 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* Use functions as signal handlers when accessing parametersUlf Hermann2021-02-121-1/+1
| | | | | | | | | Injected signal handlers are bad practice because they aren't declared. Pick-to: 6.1 Task-number: QTBUG-89943 Change-Id: I3a691f68342a199bd63034637aa7ed438e3a037b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlBind: support bindable propertiesFabian Kosmale2021-02-031-9/+40
| | | | | | | | | | | | This patch ensures that the QML Binding element can also save and restore C++ bindings. Should QQuickItem's x and y property be ported to the new property system, we'd need new test cases to verify that "old-style" bindings are still handled correctly. This task is however left for the change porting the properties. Task-number: QTBUG-90493 Change-Id: I506ffa1060ff32a7d722214e5ccd469bdaa61ff8 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Remove the qmake project filesFabian Kosmale2021-01-151-22/+0
| | | | | | | | | Remove all qmake project files, except for examples which are used to test that qmake continues to work. Change-Id: Ic4abb72dc2dcd75df7a797c56056b6b3c5fe62ac Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Remove unused functionVolker Hilsheimer2020-12-041-3/+0
| | | | | | Pick-to: 6.0 Change-Id: I7ee5187b4e17f2aba2788adfb47325f7a7020d69 Reviewed-by: David Faure <david.faure@kdab.com>
* Don't return reference to temporary QModelIndexVolker Hilsheimer2020-12-031-1/+1
| | | | | | | | | | Follow up on change in qtbase; QPMI casting to QModelIndex returns a value, not a reference. Change-Id: I227cd8ef64450986069837edee25512d9538286d Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 039c2801cfbd67e22da83f77375a06f7434b5c85) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Replace old Q_DECL statements with modern C++Allan Sandfeld Jensen2020-10-311-4/+4
| | | | | | | Since we depend on C++17 now, all of these can go. Change-Id: I0484fd4bb99e4367ec211c29146c316453729959 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QtQml: Use unicode character literalsUlf Hermann2020-06-031-1/+2
| | | | | | | This avoids the warnings on conversion to QChar. Change-Id: Ib774f24592d6f09a531c60bb6fa6e5bdbec88120 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-05-051-2/+7
|\ | | | | | | Change-Id: I0e495f3d59f2a507aeb73c013e1d8ec0668313c4
| * Make Connections object qmlWarning follow a logging categoryDavid Edmundson2020-04-301-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Connections{} emits a warning if an old syntax is used. Unfortunately that syntax is not available in Qt5.12. Downstream needs to support both at once, which means we have code constantly hitting this warning. We can't even #ifdef the QML code. By introducing a logging category we can still have the warning but provides some option for downstream to temporarily disable through an existing mechanism until older Qt is not supported. Task-number: QDS-2007 Change-Id: Idd34c18ae3e8b3e53c430fab8229bb9812370d0e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Register value types declarativelyUlf Hermann2020-04-281-0/+10
| | | | | | | | | | | | | | | | | | For now this has the effect of adding them to the .qmltypes files. In the future, the registration shall actually add additional value types you can declare as properties in QML. Change-Id: Ifee5a8ec054f35cc7bd07eb992a136730be68da7 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | Encapsulate QQmlContextDataUlf Hermann2020-03-231-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This class is not a private detail of QQmlContext. And it is incredibly hard to see who owns what in there. Let's add some civilization ... We enforce refcounting for QQmlContextData across the code base, with two exceptions: 1. QQmlContextPrivate may or may not own its QQmlContextData. 2. We may request a QQmlContextData owned by its parent QQmlContextData. For these two cases we keep flags in QQmlContextData and when the respective field (m_parent or m_publicContext) is reset, we release() once. Furthermore, QQmlContextData and QQmlGuardedContextData are moved to their own files, in order to de-spaghettify qqmlcontext_p.h and qqmlcontext.cpp. When the QQmlEngine is deleted, any QQmlComponents drop their object creators now, in order to release any context data held by those. Before, the context data would be deleted, but the object creators would retain the dangling pointer. [ChangeLog][QML][Important Behavior Changes] QQmlContext::baseUrl() does what the documentation says now: It prefers explicitly set baseUrls over compilation unit URLs. Only if no baseUrl is set, the CU's URL is returned. It used to prefer the CU's URL. Change-Id: Ieeb5dcb07b45d891526191321386d5443b8f5738 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-03-111-2/+0
|\| | | | | | | Change-Id: I0d32fc5b99f8c9e4acb922fffe4dd5f3c5be553c
| * Remove hard-coded notes for 'Corresponding handler' for QML signalsTopi Reinio2020-03-101-2/+0
| | | | | | | | | | | | | | | | QDoc will generate these notes automatically. Task-number: QTBUG-37355 Change-Id: I8ed058ecbbcc630ad0351f6ce167c3fa61936f6f Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | Add major version to all Q_REVISIONsUlf Hermann2020-02-193-4/+7
| | | | | | | | | | Change-Id: Id72fbe10c16de61bd847773d0055d83cfe03f63c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-02-171-1/+2
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/imports/qtqml/plugin.cpp src/qml/qml/qqml.h src/qml/qml/qqmlmetatype.cpp src/qml/qml/qqmlmetatype_p.h src/qml/qml/qqmltypeloader.cpp src/qml/types/qqmlbind.cpp src/quick/items/qquickitemsmodule.cpp tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp Change-Id: I52548938a582cb6510271ed4bc3a9aa0c3c11df6
| * Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2020-02-131-1/+2
| |\ | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4engine.cpp Change-Id: I61f41672e2dfe7e542ca30fed5f173d0a9ee3412
| | * Fix QQmlProperty and Connections for properties starting with '_'Fabian Kosmale2020-02-111-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | We do a weird renaming for the change handler of properties starting with '_', now we do it at least in a consistent way. Fixes: QTBUG-82017 Change-Id: I1535a5ee462f3a344c972461f1fb954f039aa854 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2020-02-061-3/+5
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/qml/types/qqmlbind.cpp src/quick/items/qquicklistview.cpp tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp Change-Id: Id6805c13256ad13d5651011e5dd09bba0ec02987
| | * Clarify the Binding.restoreMode warning messageUlf Hermann2020-02-031-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Specify that you need to import QtQml 2.14 and where. Fixes: QTBUG-81787 Change-Id: Ia8e7fb3229971294cbade2791075dcd0b5943fae Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * | QML binding restoreMode warning: split into several linesFrederik Gladhorn2019-12-101-10/+10
| | | | | | | | | | | | | | | | | | | | | The text was printed without spaces. Add newlines as was probably originally intended. Change-Id: I4ee10b777c324a8f92c62b813ae6c959835b7a61 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * | Make clear how to fix QML binding restoreMode warningFrederik Gladhorn2019-12-101-0/+2
| | | | | | | | | | | | | | | Change-Id: Ia0cc6bc5273f84709b4e649627f074ae6bccece6 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | QQmlBinding: Change the restoreMode defaultUlf Hermann2019-10-161-25/+4
|/ / | | | | | | | | | | | | | | | | | | | | | | | | As promised in 5.14 we now change the default to RestoreBindingOrValue. Update the documentation accordingly. [ChangeLog][Important Behavior Changes] By default Binding elements now restore values as well as bindings when they become inactive. Task-number: QTBUG-78566 Change-Id: Id5c0247eff253f37cc6714179601c4277d2de7d0 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-10-102-8/+63
|\| | | | | | | Change-Id: I2835748c27616103f275849141fbe5a93e3dfd8c
| * Output a message when changing the target of a Binding from elsewhereUlf Hermann2019-10-092-3/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Explicitly created Binding elements should not be silently disabled when writing their target property. That would be rather confusing. Instead, the binding stays active and updates the target property again on the next change. This behavior is still somewhat confusing. Therefore, if the qt.qml.binding.removal logging category is enabled, output a helpful message. Fixes: QTBUG-78566 Change-Id: Idcd8e51e1cd7eaf78d70b15f065fd9159521ff20 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Postpone the Binding restore mode behavior change to Qt 6.0Ulf Hermann2019-10-091-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | Also, add a note to the "when" property about it. [ChangeLog] The change in the default behavior of Binding elements regarding literal values has been postponed to Qt 6.0. Task-number: QTBUG-78566 Change-Id: I2cc6f01230589b176b08f53a45c02123bb961020 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-10-082-8/+21
|\| | | | | | | Change-Id: Ib381f350ada365747ce20b989bfdc368d75f2219
| * QML Binding: do not convert stringsFabian Kosmale2019-10-072-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The root cause for the issue is that QQmlObjectCreator::setPropertyValue calls QQmlStringConverters::variantFromString on strings if the property is of type QVariant. Unfortunately, this cannot be changed easily as the current behavior is explicitly documented and tested in tst_qqmllanguage, thus making it a breaking change. As a workaround, QML Binding does now take a QJSValue instead of a QVariant (making value a var property), which does not trigger the conversion path. Fixes: QTBUG-78943 Change-Id: I0b64dffdb6b84b2bab2bb85a8cb263e530c18570 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * Re-add the warnings about deprecated default binding restore modeUlf Hermann2019-10-041-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | We _really_ want people to port away from this. And yes, we are going to change it. Amends commit c273175ffec925a4164de41a79c21d785a1761a7. Task-number: QTBUG-33444 Task-number: QTBUG-78566 Change-Id: Iab50b8c7bad043528602e2e617c772de06d18b1e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Pierre-Yves Siret <gr3cko@gmail.com>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-10-041-1/+1
|\| | | | | | | | | | | | | | | Conflicts: src/imports/qtquick2/plugins.qmltypes src/quick/items/qquickitemsmodule.cpp Change-Id: I841c65c9c131354788b4f3fcfe3d7ed27be316d5
| * QQmlBind: Mark restoreMode as explicitly also when set to default valueUlf Hermann2019-10-021-1/+1
| | | | | | | | | | Change-Id: I8aa36cbba95a64498b34c689086e45c115ce542b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Specify parameters of type registration in class declarationsUlf Hermann2019-09-263-0/+10
|/ | | | | | | | | | | | | | | | | | | | | 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 dev into 5.14Kari Oikarinen2019-08-272-2/+4
|\ | | | | | | Change-Id: I3ae119563f41fda63ac2b452f2d05fa83e411faa
| * Harmonize meta object revisions and minor versionsUlf Hermann2019-08-261-2/+2
| | | | | | | | | | | | | | | | | | | | 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>