aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* QQmlPropertyCache: Make space for an extra flagUlf Hermann2023-09-283-35/+29
| | | | | | | | | | | Some of the types were unused and there is no reason to keep a gap for types we don't use anymore. By tightening this, we reduce the number of types to <= 8. Therefore we only need 3 bits to store the type and gain one bit for other purposes. Task-number: QTBUG-113258 Change-Id: Ic6934bfc4b75a368f7ccecbe852060602f93c909 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Simplify QML singleton type registrationUlf Hermann2023-09-282-41/+21
| | | | | | | | | | | | We don't really care what kind of factory function you stick in there as long as we can convert it to the relevant std::function. This makes all of the registration functions templates. Templates are only instantiated when used. Therefore we get faster compilation times. Change-Id: Ib825657cb6e5bd82b23af3f8b384985029c306ca Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Quick: Do not detach the list of children when iteratingUlf Hermann2023-09-281-1/+2
| | | | | Change-Id: I1edc739753a2195fd4ab5a2728ec0f9661356785 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Error out when writing to property of unknown typeUlf Hermann2023-09-281-0/+6
| | | | | | | | | | Otherwise we get a conversion to unknown and that is bad. Pick-to: 6.6 6.5 Fixes: QTBUG-117361 Change-Id: Iead1ddd21b692ed9fb9923dccdfa5bd01dc9d467 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Nicolas Fella <nicolas.fella@kdab.com>
* QmlCompiler: Do not crash when trying to iterate non-iterablesUlf Hermann2023-09-281-1/+9
| | | | | | | | | Amends commit a173d50a9e54d2a21a5207f6c66bb54bb8f3a612. Change-Id: I2774cd483e073c69f2ceff345436fbdd2a9ac692 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
* Add missing connect context object in QQuickPaletteProviderPrivateBaseJøger Hansegård2023-09-281-1/+1
| | | | | | | | | | | | | | | | | | When building QtMultimedia on Windows as static library, the build failed when compiling qtmultimedia's multimediaquick module in qtmultimedia\src\multimediaquick\qquickvideooutput.cpp because a connect statement was contextless. This is no longer allowed because QT_NO_CONTEXTLESS_CONNECT is defined. The build issue is fixed by adding the output from itemWithPalette() as a context object. The output from itemWithPalette() is the object being used inside the lambda function. Change-Id: I0d9c807e360ffccf51da46913cd9faa5c71f5705 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* QQuickStateGroup: Don't needlessly create QQmlPropertyUlf Hermann2023-09-261-2/+2
| | | | | | | That is more expensive than simply resolving the property index. Change-Id: I9f821cf14baf38b7ce9d444f20cfa0f4c49df715 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Make LocalSymbolsType enum values independentSami Shalayel2023-09-264-42/+37
| | | | | | | | | | | | | | Fix LocalSymbolsType to be a real QFlag by replacing the enum values that actually contain multiple values with 'normal' enum values that only contain one bit. This allows to simplify the logic in DomItem::localSymbolNames as the LocalSymbolsType flags can now all be checked independently from each other. Also rename the enum values to be singular. Task-number: QTBUG-116899 Change-Id: Ia9040bd6df3b00cd06f53c97a98156683e9ee2de Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmlls: add completion for pragmasSami Shalayel2023-09-265-26/+89
| | | | | | | | | | | | | | | | | | | | | | | | To be able to decide how a pragma is completed, one needs to know if we are before or after the ':', for example in 'pragma NativeMethodehavior: AcceptThisObject', one needs to know if we are completing the pragma names or the pragma values. For this, add a sourcelocation for the colon in AST::UiPragma in the parser, and pass it on in the FileLocations so the sourcelocation of the colon, when existing, can be accessed from the DomItem. Once the position of the colon is known, the names or values for the pragmas can be completed. To easily obtain the position of the colon of a DomItem, move some code from the Binding completion into a static helper to reuse it for pragmas. Also fix some typos in the warning messages about invalid pragmas in qqmljsimportvisitor. Task-number: QTBUG-116899 Change-Id: Ib20bb6aa50e9b8dc5830f426d0ca9719693c0a15 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmlls: autocomplete scriptexpressionsSami Shalayel2023-09-265-130/+303
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add some support for autocompletion in script expressions. Add missing getter in QQmlJSScope to be able to list js identifiers of a semantic scope in qmlls. Add static helper methods XXXCompletion that collect some information JavaScript identifiers, methods and properties made available from a QQmlJSScope. Another helper method collectFromAllJavaScriptParents can collect the results of a XXXCompletion method through all JavaScript scopes of a DomItem. Avoid code duplication and remove the implementation searching for methods in the DOM: instead, use the already existing implementation in QQmlJSScope::methods. Finally, add the method scriptIdentifierCompletion() that computes all autocompletions for a scriptIdentifier, that is called in QQmlLSUtils::completions and in the tests. Fix some tests to flag property as properties, inside of "Fields", and add extra tests to see if the newly implemented completions work. Cleanup QQmlLSUtils::completions() by extracting its code into static helper methods reachableTypes() and reachableMethods(), replace two enums by one QFlag as both enums were always used together. Extend reachableTypes() to find also non-object types, like the value types int, date, for example. This is later used for property type or function parameter type completion, for example. Make QQmlLSUtils::completions() more readable by returning early and by separating the completion by QML language constructs, instead of grouping multiple unrelated constructs together. This became possible thanks to the new static helpers mentioned above. Suppress completion inside of function parameter definitions and inside of id definitions. Add some tests for property type completion and pragma completion with QEXPECT_FAIL, those features will be implemented in a later commit. Add 'import' completion for empty files + a test that test completions on an empty file. Fix tests for colon-checking: some completions insert '<propertyName>: ' for properties, e.g. for bindings, and some do not, e.g. for property usage in JS expressions. Also fix the test in tst_qmlls_modules to expect methods instead of functions. Add exception in tst_qmlformat for the empty qml file used to test if completions work in a completely empty file. Task-number: QTBUG-116899 Change-Id: I63de62c71d63aa4ab62ca6d83c6be157f4e6f96c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmlls: fix DomItem::filterUp and DomItem::rootQmlObjectSami Shalayel2023-09-264-55/+54
| | | | | | | | | | | | | | | | | | | | | Rewrite broken DomItem::filterUp method: the code was unreadable and the search stopped at owner() instead of top(), which makes it problematic for scriptexpressions when going from a scriptexpression to the containing QmlComponent, for example, as it stops at owner() before actually reaching the QmlComponent. Write a testcase for that. Also add some internal documentation for filterUp and FilterUpOptions, as Inner and Outer have special meanings. Also remove coded-duplication in the implementation of rootQmlObject and qmlObject. This prepares the DOM for the extension of the existing autocompletion feature. Task-number: QTBUG-116899 Change-Id: I3d8c619af0a9eed74e49b0fc81f2c20ad4947ab1 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
* qmlls: move completion support to QQmlLSUtilsSami Shalayel2023-09-266-430/+497
| | | | | | | | | | | | | Preparation works for using QQmlJSScope to power the qmlls completions. Move the completion support into QQmlLSUtils and out of qqmlcompletionsupport. This allows to test the completion support in tst_qmlls_utils without having to start a qmlls instance. Task-number: QTBUG-113727 Change-Id: I51977e29bf8c380b8e137fe9b187f28cc1472822 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add QML-SSL support to the build systemTatiana Borisova2023-09-261-0/+8
| | | | | | | | - In case user needs to disable the QML-SSL integration, but wants to have the base SSL feature still enabled. Change-Id: Iddced3f8b75b80b7ce24cd189c57b21f35377814 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Doc: Add example categories for qtquickJaishree Vyas2023-09-262-0/+2
| | | | | | | Task-number: QTBUG-116334 Pick-to: 6.5 6.6 Change-Id: I993b6157c3ef8a69e4e218d62596b5219ab4b34b Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Recycle buffer objects based on sizeEskil Abrahamsen Blomfeldt2023-09-262-2/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we recycle batches, there is no logic to make sure we pick a batch which is the appropriate size for the actual vertex buffer or index buffer we will upload. In fact, when picking a batch from the pool, we do not even know the size yet, since we have not done any merging yet. In some cases, this can cause memory to grow much larger than needed, in particular if we have a single large batch and thousands of smaller ones which are updated regularly. As we recycle "random" batches from the pool, we will gradually resize all of them to fit the largest batch, and end up using largest batch size * N for memory, when we could have just reused the buffers for the largest batch in each update. One way to fix this is to keep a separate buffer pool instead of tying these to batches and search for the smallest buffer that can fit the data. This means another search in a tight loop, but the number of buffers will typically not be large, and we have such searches in other places in the loop already, so complexity remains the same at least. Other ways to mitigate this might be to set a max size on the batch pool, but this would probably require a lot of effort to find what the sweet spots are, and in the end it's likely to be different for different target systems. Fixes: QTBUG-107214 Change-Id: Ie60d158348fdbda2fb79eb8bf3b61311cc67ce67 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QQuickText: Don't mark text as FINALKai Uwe Broulik2023-09-261-1/+1
| | | | | | | | It is overridden by QQuickMnemonicLabel. Pick-to: 6.6 6.6.0 Change-Id: I77021f0bd73d43b3fe5ef63a3816730d7de65327 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* CMake: Fix deployment of QML plugins for debug-and-release QtJoerg Bornemann2023-09-261-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | For simplicity, whenever we mention debug-and-release in this commit message, we mean the more general concept of "multi-configuration build with a debug configuration". When deploying a QtQuick application that was built against a debug-and-release Qt (like the Windows one that comes with the installer), we copied both builds of a QML plugin to the installation directory. Now, when we've detected that the used Qt is a debug-and-release build, we match exactly against the debug suffix if our application is a debug build, or the absence of the debug suffix if our application is a release build. For non-debug-and-release Qt builds we leniently match against any debug suffix, including the empty one, as before. Pick-to: 6.5 6.6 Fixes: QTBUG-109444 Change-Id: I0d02cce2be871286fa6e9bac521d692e96c1bbf0 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* QtQml: Check for isReference() before trying to write backUlf Hermann2023-09-251-2/+3
| | | | | | | | | | | If we neglect this we get an assert further down the line. Amends commit a824a6f060ec3a0000d7349649a3ab9e0570ecaa. Pick-to: 6.6 6.5 Change-Id: Ib8fd01d329d5b45b27dfe117e168860c6a1d267f Reviewed-by: Semih Yavuz <semih.yavuz@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Modernize some of the QSGRenderNode docsLaszlo Agocs2023-09-251-59/+71
| | | | | | | | | | Link to the example, and clean up some of the most egregious outdated statements that are no longer relevant for a long time now. Pick-to: 6.6 6.6.0 Change-Id: I996c51a13c76529a7ce8ae3fa9ffd7129e717c0e Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* QML: Silence warnings about converting holes in sparse arraysUlf Hermann2023-09-252-5/+6
| | | | | | | | | | | | | | Holes in sparse arrays are undefined when read via get(). QV4::Sequence does not have holes, by design. Therefore, when converting, we fill the holes with default-constructed values. This is on purpose and should not cause warnings. Furthermore, since QVariant::convert() always produces the given type, we don't need to re-initialize the variant afterwards. Change-Id: I46a675dfb71ae9f66858c97a580ec133aabef10e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Add implementation for stack properties on VxWorksTomasz Kozlowski2023-09-221-0/+18
| | | | | | | | | | | | VxWorks does not have full support for POSIX threads and lacks pthread_attr_get_np function. Fix this by using taskInfoGet function, because tasks and threads are interchangeable on VxWorks. Task-number: QTBUG-115777 Change-Id: Ic284b1985b79e134860fb4dcdff861754bcc2ae4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QML TableView: resizable{Rows|Columns} scroll fixJonas Karlsson2023-09-211-0/+4
| | | | | | | | | | | The problem was that the table view resize handler accepted scroll events but did nothing with them. The fix is to simply not accept these events. Pick-to: 6.2 6.5 6.6 Fixes: QTBUG-116566 Change-Id: Ica4afc45908e1b4c0b8aac11a3798981b6250baf Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix accept button enabled state in non-native file dialogEirik Aavitsland2023-09-212-7/+23
| | | | | | | | | | | | | | | | When editing save file name in the line edit, and changing it from empty to non-empty or the other way around, the accept (Save) button would not be enabled/disabled accordingly. Can be tested with the qml file from the linked task. Task-number: QTBUG-101552 Task-number: QTBUG-108455 Pick-to: 6.6 Change-Id: Icc0ea5f68cfe06e95f54839cf4bd930bd8d57daf Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* Fix default button label for non-native file dialog in SaveFile modeEirik Aavitsland2023-09-211-1/+3
| | | | | | | | | It would use the OpenFile label independently of actual mode. Fixes: QTBUG-105080 Pick-to: 6.6 Change-Id: Ia529f6854dd676197af99cbe0a610f5833181ce2 Reviewed-by: Kaj Grönholm <kaj.gronholm@qt.io>
* QmlCompiler: Implement GetIterator and IteratorNextUlf Hermann2023-09-218-40/+278
| | | | | | | | | | | | | | | | | | | | | | | | Each GetIterator generates * A unique iterator variable that keeps track of the current index * In the case of for...of a copy of reference to the list being iterated The result register holds a pointer to the unique iterator so that it can be loaded and stored without resetting it. In order to do anything meaningful with iterators (in the tests) we also need to allow LoadElement with our "optional" types. That is a conversion of undefined and some other type to QVariant or QJSPrimitiveValue. This follows the same pattern as the other "optional"s we already have. For...of is currently not testable because it requires exception handlers. The tests will be added once we get exception handlers. Task-number: QTBUG-116725 Change-Id: I167fe16b983dc34bf86e1840dfcbf2bf682eecc1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix add-remove loop in ItemViewKaj Grönholm2023-09-211-1/+2
| | | | | | | | | | | In ItemView refill() method, change order to add-add-remove instead of add-remove-add. This fixes the infinite add-remove loop in some specific cases. Task-number: QTBUG-31492 Change-Id: I73ae45f340b561330b8d1f88f3a1cc3b7e9c05a8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QQmlSA: Don't expose QQmlJS namespaceFabian Kosmale2023-09-218-93/+103
| | | | | | | | | | | | | QQmlSA is meant as the public namespace, QQmlJS is (at least currently) completely internal. However, LoggerWarningID currently only existed in QQmlJS. Move it into QQmlSA, add some minimal class documentation and add a typedef in QQmlJS (inside a private header) to avoid the need to modify all users. Pick-to: 6.6.0 6.6 Change-Id: Icff860c92054ac810c6e15eb26090d38fbc2c965 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmllint: Use settings name as settings nameFabian Kosmale2023-09-211-1/+5
| | | | | | | | | We weren't actually considering the sections name from the json config file. Fix this, and only use the CLI option name as a fallback. Pick-to: 6.6 6.6.0 Change-Id: Ieb88d4840164d903c228ec39ce9943715221ca92 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QmlDom: Eliminate QmlTypesReader::m_isValidUlf Hermann2023-09-212-4/+3
| | | | | | | | It can be a local in the one place where it's used. Coverity-Id: 417221 Change-Id: I7052a40a57d43bfcafbe7c3b151762ba5ff35a2f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Particles: Optimize the case of adding a single emitterUlf Hermann2023-09-212-1/+32
| | | | | | | | | | We don't need to iterate all existing emitters just to add a new one. Doing so creates quadratic overhead. Rather, only update the specific group the new emitter belongs to. Change-Id: I63091f80569764ed92c62dd84242367f635f0aa6 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QQuickTableView: let the subclass decide which model to use for selectionsRichard Moe Gustavsen2023-09-205-9/+51
| | | | | | | | | | | | | | | | | | | When a subclass that has a proxy model is in use, it's not given if the selection model should be using the application model or the proxy model to store selections. Rather, this is subclass specific. In case of TreeView, the application model should be used. In case of HeaderView, the proxy model should be used. Until now, we always used the application model, which would fail if trying to select cells in HeaderView. The reason for the latter is that the proxy model in HeaderView doesn't share any common model items with the application model, and therefore cannot use the application model for selections. Fixes: QTBUG-115227 Pick-to: 6.6 6.5 6.2 Change-Id: I39f0687e0396392039234787fda0df6d7d4d7da4 Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Doc: Fix documentation of FunctionSignatureBehaviorUlf Hermann2023-09-192-37/+27
| | | | | | | We enforce function signatures by default these days. Change-Id: Ifd441d79b4cde9c522bba93ce88dfa44663e7e9b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlDom: Civilize PathComponent::dataUlf Hermann2023-09-192-244/+128
| | | | | | | | | Using an internally tagged union is just way too nasty to be acceptable. Compilers are were complaining about it. Fixes: QTBUG-117140 Change-Id: I2316bd781a0b9f018bba8e658fce0c972057e631 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Qt QML Type: Specify types of some global propertiesIvan Tkachenko2023-09-191-2/+2
| | | | | | | | | It works. Although, InputMethod QML Type page is kinda empty at the moment. And still no idea how to refer to styleHints and platform types. Change-Id: Ifbef5b07d31c61e68a17e7de369cda39c58e54e1 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* QQmlApplication: Reuse second constructorIvan Tkachenko2023-09-191-11/+1
| | | | | | | Why duplicating all the connections, when you can just call another ctor? Change-Id: I4ea248a7f176bf9fcb8fad058c59529b01678115 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickItem: Remove declaration of not implemented list operationIvan Tkachenko2023-09-191-1/+0
| | | | | | | | | | | Item::visibleChildren is a read-only QML list property, and not meant to be externally modifiable. Append operation is not defined for it anymore, but a symbol declaration apparently remained after refactoring. Amends 3e9caba478695443669ff880334ea69db6f764eb Change-Id: I1bd1de1e917c13178bd73c4aecb4f7853e5a4e01 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix whitespace in diagnostics messageIvan Tkachenko2023-09-191-1/+1
| | | | | | | Amends 6eb35df60e061b9ce4e88f97a174216e2b1c617f Change-Id: If2ee15d2aa2b3503df0175e67cbd88d3564b6939 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Material: allow setting background to nullMitch Curtis2023-09-192-4/+2
| | | | | | | | | | | | The texteditor example does this since it's a full-screen editor. Currently that example produces a warning. It also doesn't cost us much to support it. Amends 2d99c70f982da92c70c022551cf456877141a5c8. Pick-to: 6.5 6.6 Change-Id: I8fb847297add3ab10f4ee5e6b5634ac841bfd4e6 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* HeaderView: fix custom role names not being usedMitch Curtis2023-09-192-0/+6
| | | | | | | | | | | QHeaderDataProxyModel did not implement roleNames(), so QAbstractItemModel::roleNames was being used. That function returns the default role names, ignoring any custom ones. Fixes: QTBUG-116748 Pick-to: 6.5 6.6 Change-Id: Iff7e0d7c71c60da7ace54aee5857605e8bea8d0c Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QmlDom: Avoid copying and detaching on iterationUlf Hermann2023-09-193-10/+13
| | | | | | | | | | | | | | Coverity-Id: 417203 Coverity-Id: 417202 Coverity-Id: 417200 Coverity-Id: 417194 Coverity-Id: 417193 Coverity-Id: 417191 Coverity-Id: 417190 Coverity-Id: 417189 Coverity-Id: 417187 Change-Id: Id40dcb1a88d558bc468953862d5a90802c08e057 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlDom: Do not needlessly copy things into lambdasUlf Hermann2023-09-193-12/+16
| | | | | | | | | | | | Where we have to, make it explicit and add comments. Coverity-Id: 417204 Coverity-Id: 417197 Coverity-Id: 417196 Coverity-Id: 417188 Coverity-Id: 417186 Change-Id: I33e01d4f9a9cbf213119446808e902c5d83b71ac Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QmlDom: Pass templated data items by const referenceUlf Hermann2023-09-191-8/+8
| | | | | | Coverity-Id: 417205 Change-Id: I9a80a90dfc9b59669f2ecaee5ba475b0df8c1e22 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QQuickItem: fix binding loops for x, y, width, and heightIvan Solovev2023-09-191-12/+20
| | | | | | | | | | | | | | | | Use {set}ValueBypassingBinding() to read and write the value of the property. Use valueBypassingBinding() to get the values of other realted properties before calling geometryChanged(). The tests for these bindable properties already exist. They will detect the binding loops as soon as the related qtbase patch is merged. Fixes: QTBUG-116540 Pick-to: 6.6 6.5 Change-Id: Ifb6caac2d5176fa6985a170fcdfe0dceeac10936 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* qmldom: Use QQmlJSScope::ConstPtr rather than optional<QQmlJSScope::Ptr>Ulf Hermann2023-09-189-60/+59
| | | | | | | | | | | | | | | We never want a non-const QQmlJSScope in qmldom. Furthermore, QQmlJSScope::ConstPtr already has an "invalid" state. It can be null. Wrapping it in std::optional doesn't add anything meaningful. Besides simplifying and hardening the code, this also works around the difficulties coverity seems to have with std::optional. Coverity-Id: 417089 Coverity-Id: 417091 Change-Id: Ifd99e3d54a90affb3ec6889198e65030148b6c4c Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* qmldom: Fix coverity warningsUlf Hermann2023-09-1519-89/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | - initialize members - iterate const containers, and use const refs for elements - pass values by reference - provide move constructors Coverity-Id: 417104 Coverity-Id: 417102 Coverity-Id: 417101 Coverity-Id: 417100 Coverity-Id: 417099 Coverity-Id: 417098 Coverity-Id: 417097 Coverity-Id: 417096 Coverity-Id: 417095 Coverity-Id: 417094 Coverity-Id: 417093 Coverity-Id: 417092 Coverity-Id: 417090 Coverity-Id: 417088 Coverity-Id: 417087 Coverity-Id: 417086 Coverity-Id: 417085 Change-Id: I624ed4e71c49c3eebced9483dd73554dbdcb981b Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QmlDom: Don't pass ErrorMessage by valueUlf Hermann2023-09-1516-58/+71
| | | | | | | | | When iterating, pass it by const ref. When "adding" pass it by rvalue ref. In the few places where that clashes, copy it explicitly. Coverity-Id: 417092 Change-Id: I93b2d671c38a2f44334929fd7ec9c2f1a18caac8 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QmlLSUtils: take DomItem by const referenceSami Shalayel2023-09-152-19/+22
| | | | | | | | | | Take DomItem by const reference instead of value, now that this is possible. Change-Id: I457ede1dcaf1fe1276d37ccf8ba374f5cebbf92a Reviewed-by: Semih Yavuz <semih.yavuz@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
* Settings: Allow settings locations in resource file systemUlf Hermann2023-09-151-10/+15
| | | | | | | | | Pick-to: 6.6 6.5 Fixes: QTBUG-116681 Change-Id: If08f584bf83b75faf5ed0b73962b90c16fc1d016 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
* Doc: Change 'delegate' model to 'object' modelSafiyyah Moosa2023-09-151-1/+1
| | | | | | | Task-number: QTBUG-115766 Pick-to: 6.5 6.6 6.6.0 Change-Id: Id57bd53dbcccc107d57fd866a6c69f51b4303bc3 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* qquicktextinput: use const method moreAnton Kudryavtsev2023-09-151-1/+1
| | | | | | | to avoid implicit detach Change-Id: I8b225b607698f468a35ba78948afb2e218430e96 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>