aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml
Commit message (Collapse)AuthorAgeFilesLines
* QtQml: Inline methods for looking up common metatypesUlf Hermann11 hours2-59/+56
| | | | | | | | These are ... common, after all. Change-Id: I937a298e7030692470b431a67401cdab1dea8f62 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Perform return value assignment inside generated codeUlf Hermann11 hours1-1/+1
| | | | | | | | | | | | This is in preparation for using exact types and actually enforcing them. We shouldn't wrap the return value into a QVariant in order to then painstakingly unwrap it again. The generated code can already do the right thing. Task-number: QTBUG-119885 Change-Id: I13e517967ee982be717024a9abb74d5e02a185d6 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQmlType: Add missing operator!= and hide operator==Ulf Hermann36 hours1-4/+9
| | | | | | | Change-Id: I3ed2f98b28bc4d8192e66de728869f296cb7f657 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QtQml: Use QHash/QMap's constFind() to avoid unnecessary detachesVladimir Belyavsky2 days4-10/+10
| | | | | | | | Use QHash/QMap's constFind() instead of non-const find() where applicable to avoid unnecessary detaches. Change-Id: I6b31af1d163d11deb229681ff7e2f6c9f8335d8c Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QQmlComponent: Avoid potential extra QList detachVladimir Belyavsky3 days1-5/+1
| | | | | | | | | | There might be potential extra QList detach due to the use of non-const QList iterators in QQmlComponentPrivate::beginCreate(). To avoid this, we can use QList::removeIf() which doesn't detach if there is nothing to remove and also makes the code a bit clearer. Change-Id: I87863c1e045926e27deeeece35be9c51de49ab7b Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QQmlObjectCreator: avoid extra detach on pendingBindings listVladimir Belyavsky3 days1-3/+1
| | | | | | | | | | | Do not detach on pendingBindings list when there is nothing to remove in removePendingBinding() call. Previously it was always detached due to the use of non-const iterators. To avoid this, we can use QList::removeIf() which doesn't detach if there is nothing to remove and also makes the code a bit clearer. Change-Id: Ic2f8c30dcedcac5217e685c0dae55d7fb1615022 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Declare some missing value typesUlf Hermann8 days2-0/+10
| | | | | | | | | | | | | | * An opaque pointer for the execution engine * QQmlChangeSet * long and ulong: For those we cannot know the size in advance. Therefore we cannot handle them as aliases of other numbers. * QTextBlock * FileProperty * QQmlXmlListModuleQueryResult Task-number: QTBUG-101143 Change-Id: If66d1fa3ab734351006e5a9f071e171c97dd738e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QtQml: Uncruftify QQmlImports::getQmldirContentUlf Hermann8 days3-17/+6
| | | | | | | | | Return early where possible and construct the errors using the correct URL right away. Change-Id: I91bc4e41d1baf910a341b68a5c137cd2e6c588ae Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQmlComponent::loadFromModule: Improve error handlingFabian Kosmale8 days1-13/+43
| | | | | | | | | | | | | | | | | | | | | Most importantly, fix the (attempted) loading of a non-existent inline component: As soon as we have the compilation unit, we can simply check whether the inline component exists via its name. This avoids an assert down the line in beginCreate which assumes that at this point the inlineComponentName has been properly vetted. This also allows us to create a better error message, and to catch the easy mistake of passing a file name instead of a type name to createComponent. Moreover, ensure that we do not claim that the inline component is ready when only the outer component has been loaded – a direct connection to the changed signals followed by a call to create would otherwise yield surprising results. Fixes: QTBUG-124225 Pick-to: 6.7 Change-Id: I6b1860f594a3060653e732b9570cc3bbff0c34a9 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Improve error message for broken QML_SINGLETONCarl Schwan9 days1-2/+2
| | | | | | | | | The current error message doesn't cover the case where the class with the QML_SINGLETON is an abstract class. This will still compile but fail at runtime with an error message not mentioning this case. Change-Id: I134254b252ca3c2250e5f5bc2ac9f9d79a2658fd Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QtQml: Add a wrapper builtin for QQmlV4Function*Ulf Hermann12 days11-19/+21
| | | | | | | | | This way qmltyperegistrar can recognize it and refrain from warning about it. Task-number: QTBUG-101143 Change-Id: I598140e7e90dbd3e27a78c26eff3d46f0fd3e989 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QtQml: Fix documentation for createComponent()Ulf Hermann13 days1-1/+1
| | | | | | | | Pick-to: 6.7 6.5 Fixes: QTBUG-124226 Change-Id: I5650a5e1e9b0de21df201cb22fd63d7e4f01a01d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Nicolas Fella <nicolas.fella@kdab.com>
* Improve deprecation message of object to signal handler assignmentCarl Schwan2024-04-111-2/+2
| | | | | | | | | | | The current deprecation message doesn't give any hint where the issue could be, so at least indicate which object type is assigned to the signal handler. Change-Id: I85ee4411d7f4c9a4b36425d925a3934b9ee520c8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* Doc: don't use quit in snippet that exits upon load failureMitch Curtis2024-04-091-4/+3
| | | | | | | | | | quit is for a successful exit. Failure to load QML is an error and should be treated as such. Pick-to: 6.5 6.7 Change-Id: I121349fb310d683f5e5bee4b6a324a9ea8947b6b Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QtQml: Resolve generalized group properties during alias resolutionUlf Hermann2024-04-055-25/+64
| | | | | | | | | This way we can know the scope in which to search for the IDs. Pick-to: 6.7 6.5 Fixes: QTBUG-123865 Change-Id: I1dff9bdc69e3edaa80d85c757e3bb2b24e174cd0 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Centralize string parsing for QPoint, QRectF and friendsSami Shalayel2024-04-052-61/+76
| | | | | | | | | | | | | | | | | | | Put all the string parsing methods into qqmlstringconverters by moving createValueTypeFromNumberString from qquickvaluetypes to qqmlstringconverters. createValueTypeFromNumberString is adapted to be able to parse more value types (like QRectF that has `,` and `x` separators) and split it into the parsing and validating part "isValidNumberString" and into the creation part "valueTypeFromNumberString". Replace duplicate parsing code with "isValidNumberString" and "valueTypeFromNumberString". Task-number: QTBUG-118323 Task-number: QTBUG-118546 Change-Id: I988dc4935ef77072293588ce0918567c7f72f45e Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QtQml: Discard events on engine shutdown rather than processing themUlf Hermann2024-04-051-11/+4
| | | | | | | | | | | | | | | This also deletes them, and releases any references they still hold. However, it doesn't give us headaches about delivering events to half-dead objects. Amends commit ebceda0cad6d86f6d6fe5efbf85a3b06fb4222b0 Pick-to: 6.7 6.5 Fixes: QTBUG-122925 Change-Id: I4509d23b2233965b8be8e4069ae61b0b82daf1e5 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Sami Varanka <sami.varanka@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QtQml: Resolve preferred paths before setQmldirContentUlf Hermann2024-04-033-14/+41
| | | | | | | | | | We want the content from the preferred qmldir to be used. This way we can omit all the details from the original qmldir. Task-number: QTBUG-111763 Change-Id: I3a0b3db0207e919c962c98d79f9f200aaf3cad96 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQmlListWrapper: Don't use QQmlListReference for virtualGetLength()Ulf Hermann2024-03-281-2/+3
| | | | | | | | | | | We cannot use QQmlListReference on detached list properties. Also, it's wasteful. Pick-to: 6.7 Fixes: QTBUG-118076 Change-Id: I754f19ed8c3f6eae1b3613f6866f3cf792cee8cf Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* qqmlpropertyvalidator: Mark new warning as translatableFabian Kosmale2024-03-271-1/+1
| | | | | | Change-Id: I51bb9ca1e8dab6768fc2e85b53a4a6a3aab3a56d Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* Engine: Handle grouped property bindings of non-registered typesFabian Kosmale2024-03-272-8/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is possible to expose a type to QML which exposes a QObject (derived) property, which then gets used to create a grouped binding. The type of the property might not have been registered in QML, or it might be part of a base class which exposes the type already in another module. If that module is not imported (or does not exist at all), the property creator would so far bail out. Simply skipping the check would lead to crashes further down, as we also lack the property cache needed during object creation. However, in Qt 6, we can lift this restriction: We can retrieve the property's metatype, and from there we can fetch the metaobject. Once we have the metaobject, we can on-demand create a property-cache for it, and use that later in the object creator. One restriction we add is that the type must not have a dynamic meta-object, given that those don't lend themselves to usable propety caches (given their dynamic nature.) The early check in the property validator is adjusted accordingly. Add a quick test to verify that gadgets continue to work as before. As a drive-by, convert a few repeated QString::arg calls to a single call of the variadic overload. Task-number: QTBUG-122321 Pick-to: 6.7 Change-Id: I860af981250a70f541794b57db3764415ea172f0 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* Adapt to privatising of QPropertyBinding's ref countUlf Hermann2024-03-252-3/+2
| | | | | | | | | | | Change-Id: I95474784c1eb8c8d8f5dafd33dcc32f532bffe47 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Andy Nichols <andy.nichols@qt.io> Reviewed-by: Matthias Rauter <matthias.rauter@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
* QQmlGadgetPtrWrapper: Consider QVariant as possible typeThomas Hartmann2024-03-221-5/+14
| | | | | | | | | | | If the type is QVariant, we have to store and retrieve the member as-is, instead of wrapping and unwrapping it. Pick-to: 6.7 Fixes: QTBUG-123484 Change-Id: I01ac33158236b0f1082744aafa86108225b68392 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQmlEngine: Set translationsDirectory in loadFromModuleOlivier De Cannière2024-03-213-26/+63
| | | | | | | | | | | In the process, loadFromModule had to be split in two parts. The type resolution has to happen so that the translationDirectory can be set and the translations have to be loaded before loading the actual module. Pick-to: 6.7 6.5 Fixes: QTBUG-116589 Change-Id: Ife7999f418ba35bfb0eed9050198e5a886fa74ae Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Do not use QQmlEngine from current QML contextUlf Hermann2024-03-211-38/+32
| | | | | | | | | | | | | | | | | We cannot be sure the current context is still alive when a function is called. We may be left with a skeleton context that doesn't have an engine anymore. However, we can always query the QJSEngine given in the AOT context. That one cannot disappear and is generally the right one for capturing properties. Pick-to: 6.7 6.5 6.2 Fixes: QTBUG-123395 Change-Id: I2a6c38baa159fa790f3ba2aba225fdc9cc37001e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Be explicit about const pointers in 'if' statementsUlf Hermann2024-03-191-1/+1
| | | | | | | | Without this gcc 12 produces bogus warnings with the latest hardening changes. Change-Id: I35b505b2a53d1d88dff72cf2ddc6707059183b71 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QtQml: Provide an easy way to run non-incremental gcFabian Kosmale2024-03-191-4/+1
| | | | | | | | | | | We want the GC to run to completion on every invocation in that case. We want the same behviour for the gc() method in QML for compatibility reasons. Task-number: QTBUG-119911 Change-Id: I50b50ec9d3cdf7d5193d906dd687fb9f0fd557f6 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QtQml: Assert on ddata and ddata->propertyCache in doPopulateDeferred()Ulf Hermann2024-03-182-0/+7
| | | | | | | | | | | The caller has to guarantee that the ddata and property cache ar alive at that point. Therefore, make sure that qmlExecuteDeferred() and QtQuickPrivate::beginDeferred() actually guarantee as much. Coverity-Id: 437884 Change-Id: I89bfa5ca47347416d0acd023d073d524363a0635 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Handle more potential underlying typesFabian Kosmale2024-03-181-0/+43
| | | | | | | | | | | | | | | | Since f3bcbfd6a50fb7e74f4ff6714d3b3066fa74e253, we use the underlying type of an enum when the binding is detected as a resolved enum and the property is of enum type. When using an enums underlying type, we can receive types that were formerly not possible, because we would normalize them to plain int. Fix this by teaching the object creator to handle assignments of signed and unsigned integer types. Fixes: QTBUG-123428 Change-Id: I3635b7de048e0c6ddf79381679aafee89a5b3def Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Fix enum class lookup on SingletonsFabian Kosmale2024-03-141-2/+18
| | | | | | | | | | | | | | | | | | | | | When we consolidated the code for looking up enums in QQmlType, we exposed ourselves to a bug in initEnums: Not only CppType should be affected by the logic for registering unscoped enums, but also C++ singletons (SingletonType). Amends 4ceb343e7f006972940b6880f974770c02fa6b87 and 4e69f2468ad599b7175f60e08341d37689512c9c. Fix this by consulting the meatobject, if there is one. Ideally, this should probably stored in the QQmlType at type registration time, but that can be cleaned up at a later point. Fixes: QTBUG-123225 Task-number: QTBUG-123294 Pick-to: 6.7.0 Change-Id: I7b09459ce4035acb2566b9550fa844897b1b363a Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit 9d19d7e6e3bc28a0a62cebb01a0a562b1c13d12f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Make loadFromModule compatible with QQmlParserStatusFabian Kosmale2024-03-141-0/+13
| | | | | | | | | | | | ...as well as the private finalizer hook. Given that QQmlComponent::loadFromModule creates the object through the QML engine, we should support the lifecycle methods, even if we sidestep the usual creation process through the QQmlObjectCreator. Pick-to: 6.7 6.6 6.5 Fixes: QTBUG-122076 Change-Id: I2dfe5dd607414df123519d9fccd4178cc5e4cde7 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Remove the explicit declaration of QQmlComponent::createObject(QQmlV4Function *)Alexey Edelev2024-03-121-4/+1
| | | | | | | | | | | | | | | | Now when manual moc provides the required QT_DISABLE_DEPRECATED_UP_TO definition we don't need to declare the QQmlComponent::createObject(QQmlV4Function *) for moc explicitly. Also we need to manually add imported dependencies of Qt6::Qml to make sure that we passed to moc all the required frameworks on the Apple platforms. Fixes: QTBUG-104898 Change-Id: I5404808b2589463d1b0ea5884f40e8e67cd5cb0e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jari Helaakoski <jari.helaakoski@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Fail gracefully when binding an attached property where the object is nullVolker Hilsheimer2024-03-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Overlay.overlay is an attached property that holds the window overlay item, our documentation promises that it can be attached to anything, but will be null if the thing is not in a window. When using QQuickView on a QML code that declares an item which tries to bind something to the Overlay.overlay property, then the overlay will be null, and creating it will fail because there is also no window yet. This crashes further down processing when trying to create the binding. While this cannot be made to work (modifying the window is not possible in QML that doesn't declare a Window and is instead loaded into a QQuickView), it should also not crash. Add a nullptr check where it did crash, add a test that reproduces the crash, and with the fix merely spits out a warning. Fixes: QTBUG-122894 Pick-to: 6.7 6.6 6.5 Change-Id: Ie4438657a6855b44409edb28431e04eb9875a392 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Kwanghyo Park <kwanghyo.park@qt.io>
* Prepare for white allocations during gc(8/9): Object creatorFabian Kosmale2024-03-052-12/+39
| | | | | | | | | | | | | | | | | | | | Modify the object creator's tracking of object wrappers. It already pushed them onto the JS stack, so that triggering the gc during object creation would not trigger the wrappers of (temporarily) unparented objects. However, with the incremental gc, this is not enough: We might have already started the gc, and are beyond the phase were we visit all QObjectWrappers. If we then resume the collector only after the object cretaor is done (and the scope has been destroyed), then we don't have any reference to the QObjectWrappers. Fix this by moving the wrapper handling into a helper class, which employs a write barrier to avoid the objects from being hidden from the gc. This unconvered an unrelated issue in the usage of QV4::Scope in QQmlObjectCreator::beginPopulateDeferred, which will be addressed later. Task-number: QTBUG-122956 Change-Id: I23755438e68aa1c82786e619105683d131c31c90 Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
* Prepare for white allocations (7/9): QQuick(Window|View)Fabian Kosmale2024-03-051-1/+1
| | | | | | | | | | | | | Prevent QObjectWrapper from being gced - if we use white alloctations, and the weak values have already been marked, then nothing will mark the newly created QObjectWrapper. Use a helper function which takes care of the marking, and call it in the appropriate places. Also mark the normal wrap and wrapConst functions as [[nodiscard]] to avoid this issue from resurfacing in the future, and adjust a few call-sites to also call ensureWrapper. Change-Id: I8d4c73ae62b61d21b1456a3b096fc6a42f302160 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Prepare for white allocations during gc (2/9): QQmlVMEMetaObjectFabian Kosmale2024-03-051-0/+6
| | | | | | | | | | | | | The QQmlVMEMetaObject stores its propertyAndMethodStorage as a weak value. Consequently, no marking happens. The reason for using a weak value is not quite clear, but for now, assume that there was a good reason and manually mark the freshly allocated QV4::MemberData if necessary. Task-number: QTBUG-121910 Change-Id: Ie3e0fd7e036fe0805318dfc70891b28f70223851 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Prepare for white allocations during gc (1/9): Write barrier for LookupsFabian Kosmale2024-03-053-12/+13
| | | | | | | | | | | | | | | | | | | | | | | Lookups can (and do) reference HeapItems. This was safe in a non-incremental gc world, as Lookups are always reachable via their containing CompilationUnits, which are part of the root set. However, when using an incremental gc, an already marked Lookup might reference a new heap item, which then becomes otherwise unreachable. This is alleviated by the fact that Lookups generally either refer to something already existing or a freshly allocated string. The latter however is only safe when we can rely on black allocations during gc, and the former is somewhat reckless. Remedy this by employing the WriteBarrier for Lookups. We wrap all HeapItems in a helper class, which -while trivial itself- can't be used for direct assignments. Intead, it employs a set method which ensures that the WriteBarrier is used. Task-number: QTBUG-121910 Change-Id: I6a0ede66ad044076d2e87f134bc95686cb586aee Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QtQml: Make QLocale an actual value typeUlf Hermann2024-03-024-444/+311
| | | | | | | | | | | | | | | | | | | | We want to be accessible to qmllint and other QML tooling. To this end, make all legal invocations of its methods properly typed invokables. Keep two QQmlV4Function overloads to produce error messages if the methods are called with the wrong parameters. We have to do this because JavaScript is more liberal in its argument coercion than the methods would like. Un-deprecate QJSNumberCoercion::isInteger() since it's actually quite practical here. Pick-to: 6.7 Fixes: QTBUG-112366 Change-Id: I016e5edc47efaade44461c504c1b3e2b1b829b58 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QtQml: Remove fallback mode for finding singleton enums in metaobjectUlf Hermann2024-02-291-18/+4
| | | | | | | | | | | We always have a QQmlType these days and the QQmlType actually knows how to look up enums, in contrast to the code removed here. Pick-to: 6.7 Fixes: QTBUG-116057 Change-Id: Ief4b5c65da2e3c19668d4125b051356cc87bbeb6 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQmlPropertyCache: Correctly set flags when loading methodsUlf Hermann2024-02-291-8/+26
| | | | | | | | | | | | We commonly load multiple methods in sequence into the same QQmlPropertyData. We need to set all the relevant flags for each one. Otherwise the wrong flags are transferred to subsequent methods. Pick-to: 6.7 6.6 6.5 Task-number: QTBUG-112366 Change-Id: I7432500b9149fdd8dd2dd98eb923ada70232fb6d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QtQml: Re-allow change signals in QQmlPropertyUlf Hermann2024-02-261-3/+3
| | | | | | | | | | Amends commit a1ce0596e517e84913b14ab23422137c95b8c785. Pick-to: 6.7 Task-number: QTBUG-109548 Change-Id: I476c1798bb9a125264375e6fb0829e1357d99770 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QtQml: Use correct logging category in console.trace()Ulf Hermann2024-02-231-1/+1
| | | | | | | Pick-to: 6.7 Fixes: QTBUG-108673 Change-Id: I5a267bbb52d9ba2d50ad63d29025eeae5796b093 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QtQml: Load C++-defined types also for the implicit importUlf Hermann2024-02-221-1/+6
| | | | | | | | | | If the implicit import does not declare a plugin, that doesn't mean we don't want to load its C++-defined types. Pick-to: 6.7 Change-Id: I23427a91f7801cab3a18a5b01c45c520fae7e271 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QtQml: Make QQmlScriptString a builtinUlf Hermann2024-02-221-1/+0
| | | | | | | | | It's really rather special. Pick-to: 6.7 Task-number: QTBUG-101364 Change-Id: I82899448d2b94ca67edd17772f773d4718619324 Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
* QtQml: Don't let objects be deleted during incubationUlf Hermann2024-02-201-10/+15
| | | | | | | | | | | | As long as the incubator object is alive, it should hold on to the object being incubated. Anything else makes no sense. Re-use the "valuemap" slot to hold on to the object once its ready. Pick-to: 6.7 6.6 6.5 Fixes: QTBUG-119911 Change-Id: Ia9823aced5ec16a8da00e61ad7d606c63e40ed31 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* no-thread: don't block the main threadMorten Sørvig2024-02-201-0/+2
| | | | | | | | | | | | | | | We can't block the main thread if the type loading happens on the main thread - similar to the existing case where we avoid blocking the type loader thread. This effectively treats all urls as async urls here, despite what QQmlFile::isSynchronous() might say. Pick-to: 6.7 Fixes: QTBUG-120620 Change-Id: I69c6c829d8c5a7950f457efaab0bb631a42554b5 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* QtQml: Consider value types when looking for metaobjectsUlf Hermann2024-02-157-84/+131
| | | | | | | | | | | We have quite a few types with only extension metaobjects now. Move the functionality to retrieve the metaobject into QQmlType where it belongs. Pick-to: 6.7 6.6 Fixes: QTBUG-119829 Change-Id: I2b99b1a305d8726547ae0512d3c832799a4e4b04 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
* QtQml: Omit nonsensical line numbers from console.trace()Ulf Hermann2024-02-081-11/+13
| | | | | | | | | | If the line number has been marked as missing we cannot print it. Pick-to: 6.7 6.6 6.5 Task-number: QTBUG-119459 Change-Id: I598820033011de67cc2c1a4e81910bd3539dcf5b Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* no-thread: remove special cases for callbacksMorten Sørvig2024-02-081-10/+0
| | | | | | | | | | | | | We can use the common postMethodToMain() call here instead of postMethodToThread(), since the former function handles the case where the main thread is posting the callback to itself. This change should not introduce a behavior change: postMethodToThread() will call internalPostMethodToMain() in this case. Change-Id: If5f190d2f4fed124622030df096b78b9886e6212 Reviewed-by: Lorn Potter <lorn.potter@gmail.com> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
* QtQml: Do not speculatively create ICs for non-composite typesUlf Hermann2024-02-084-16/+15
| | | | | | | | | This just clobbers the type registry with useless trash. Pick-to: 6.7 6.6 Task-number: QTBUG-120506 Change-Id: I9c56930493cfbe343359f6cb22eac2a6c76d01a2 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>