aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* tst_QQMLTypeLoader: use TestHTTPServer::url() instead of ::urlString()Ahmad Samir2025-12-091-2/+2
| | | | | | | | Avoids converting QUrl -> QString -> QUrl. Pick-to: 6.11 Change-Id: I80ddd4b5c7e25679eda4f235fe2a367afd7901f8 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* gallery example: Give nameless controls an accessible nameOliver Eftevaag2025-12-098-0/+13
| | | | | | | | | | | The Accessibility Insights for Windows requires focusable controls to have a name. Ensure that those controls that don't get one by default, also have a name. Task-number: QTBUG-141669 Pick-to: 6.11 6.10 6.8 Change-Id: I6d19bffd24d7ac5b1b93fe4eaa003cefede09b13 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Avoid create offscreen surface when using custom rhi deviceJiDe Zhang2025-12-091-1/+10
| | | | | | | | | | | | | | | | | | | | | | | When QQuickRenderControl is used for multi-threaded rendering with a GLES backend, a warning "Attempting to create QWindow-based QOffscreenSurface outside the gui thread. Expect failures." may be emitted. This warning occurs when an QOffscreenSurface is created even though the QQuickWindow already has a custom RHI (Rendering Hardware Interface) graphics device explicitly configured. Creating an additional offscreen surface in this specific context is redundant and can lead to the aforementioned warning, especially given the multi-threaded nature. This change introduces a check to detect if the QQuickWindow is already utilizing a custom RHI graphics device. If a custom RHI device is present, the creation of the general QOffscreenSurface is skipped. This prevents the warning and potential resource conflicts, ensuring QQuickRenderControl operates correctly when an RHI-specific graphics device is already in use, without unnecessary surface allocations. Pick-to: 6.11 Change-Id: I343dff445ad320ab120c71764d756126bf0ce133 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* StyleKit: don't bind to the palette from the Fallback styleRichard Moe Gustavsen2025-12-095-278/+375
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We used to bind several of the colors in the Fallback style the palette. This turns out to be not such a good idea. The reason is that the palette differs across platforms, which means that a style created on e.g macOS can end up looking completly different when running on Ubuntu. While this might be wanted sometimes, more often it has the potential to come as a surprise at a late stage during development, and contributes to a "write once, debug everywhere" scenario. This patch will therefore change this. We now choose to follow the Basic style approach, and "hard-code" the colors in the Fallback style to be the same on all platforms. This gives developers a stable platform to build their own styles on top of. It's still fully possible to bind all colors in their own style to the palette, if they want a more dynamic style that respects the platform palette. Task-number: QTBUG-130067 Pick-to: 6.11 Change-Id: Ibeeedacb35b5a4c68c827b66baf0298a42b2948a Reviewed-by: Doris Verria <doris.verria@qt.io>
* VectorImage: Escape quotes in font familiesEskil Abrahamsen Blomfeldt2025-12-092-5/+10
| | | | | | | | | | | | Loading SVG files that use font families with quotes will produce invalid output that does not parse correctly. When outputting the font family, we have to escape the quotes first. In addition, any character in the font family has to be valid HTML when we output it into a style tag. Pick-to: 6.8 6.10 6.11 Change-Id: If25b3cfd3a537d7f7c8c65045deece1ad02b43c3 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* VectorImage: Sanitize source string used in outputEskil Abrahamsen Blomfeldt2025-12-091-3/+22
| | | | | | | | | | | | | Source string is used as object name in output, so we sanitize it to make sure it does not contain illegal characters. SVG already mandates a limited character set here, but rather than trust the parser we sanitize before passing to the generator like the Lottie visitor does. Fixes: QTBUG-142556 Pick-to: 6.8 6.10 6.11 Change-Id: I0684e726ab69a0735dcb5f91369b090d58a90b7b Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* QQmlJSAnnotation: de-inline op== and qHash()Marc Mutz2025-12-092-28/+37
| | | | | | | | | | | | | | | | Way too much is going on in these functions to have them as inlines. Presumably, op== "looked" simple (but QHash equality is anything but...), and qHash() was inline because of the defaulted seed argument. Use overloading instead. The type doesn't seem to be used outside its own module, so there's no need to export the out-of-line functions. Amends d226e24a5d4288a3e7f263c526cb6cbf72255388. Pick-to: 6.11 6.10 6.8 6.5 Change-Id: Ib9641001a590fd1482ec463afd48003b7759e2f8 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Doc: Overhaul the descriptions of examples about hybrid UIAlexei Cazacov2025-12-097-40/+118
| | | | | | | | | | | The examples that demonstrate hybrid UI approaches lack proper descriptions. This commit restructures and enhances the descriptions for these. Task-number: QTBUG-134102 Pick-to: 6.11 6.10 Change-Id: I5cf604fee932024cbe73347696e19f9c6e22d5b7 Reviewed-by: Alexei Cazacov <alexei.cazacov@qt.io>
* test: Run qquickvectorimage test even on non-developer buildsEskil Abrahamsen Blomfeldt2025-12-091-3/+1
| | | | | | | | | | The equivalent test is run on Lottie without developer build set, so it should be fine to do this. The condition here was just cargo culted from other CMakeLists and is not needed. Pick-to: 6.10 6.11 Change-Id: Ib05c586b6ca8481eee312afbae7f003f51a389ce Reviewed-by: Hatem ElKharashy <hatem.elkharashy@qt.io>
* Fix documentation syntaxNicolas Fella2025-12-091-2/+2
| | | | | | Pick-to: 6.11 6.10 6.9 Change-Id: I3da95e29f642224067307a64450b80154c10cb82 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Stabilize tst_QQuickContextMenu::iOS::textControlsMenuKeyShawn Rutledge2025-12-091-2/+2
| | | | | | | | | | Avoid positioning items at fractional positions and then testing with a QContextMenuEvent at 0, 0 relative to the item: it may be outside the item by a fraction of a pixel and fail to "hit" during delivery. Pick-to: 6.11 Change-Id: I0f1f98a7ae88a23356026d2c6c7eeb4bf2a72a92 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Port Q_{ENUMS,FLAGS} to Q_{ENUM,FLAG}Ahmad Samir2025-12-086-29/+36
| | | | | | | | | | | | | | | | | | Q_{ENUM,FLAG} does what Q_{ENUMS,FLAGS} did plus declaring two friend functions, so the behavior should be the same. For enums that are declared as flags (with Q_DECLARE_FLAGS(Es, E)), use Q_FLAG(Es) which will register each enum value with the meta-object system. Q_FLAGS usage in tests/auto/qml/qmlcppcodegen/data/enumproblems.h is testing Q_FLAGS itself. Q_ENUMS/Q_FLAGS have been deprecated since at least Qt 6. Pick-to: 6.11 6.10 6.8 6.5 Change-Id: Id21b6e3205a786b3a5fa04bd09dfee2a6c1c2a86 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* tst_qmltyperegistrar: Fix metaObjectHash regular expressionUlf Hermann2025-12-081-1/+2
| | | | | | | | | We've added a version to the hash. Fixes: QTBUG-142529 Pick-to: 6.11 Change-Id: Idba7608708db938c3cf958e98bb6ea0ea3bd7bdc Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
* Neutralize 'Best Practices for QML and Qt Quick' pageAndreas Eliasson2025-12-081-15/+15
| | | | | | | | | | | | | | | | Re-write in such a way that there's room for other backend languages to be included on the page. * Re-write introductory section about separating UI logic from business logic, replacing C++ references with the more general "strongly typed language". * Keep section "Exposing Data from C++ to QML" as it's still valuable. Fixes: QTBUG-142007 Pick-to: 6.10 Change-Id: Icb94d354ad3b2bf913c202e74174aee7c31036b4 Reviewed-by: Alexei Cazacov <alexei.cazacov@qt.io>
* Improve easingCurve value type documentationHatem ElKharashy2025-12-082-13/+7
| | | | | | | | | - Reference the structured value type page. - Fix errors in snippet and text. Change-Id: I16eeb0f8c2d9d9d3f36ea0d0fe34087b7330a9c4 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Update default values for {Ellipse,Star,Rectangle,RegularPolygon}ShapeAlexey Zerkin2025-12-068-18/+24
| | | | | | | | | Set the same width, height, fillColor, strokeColor and strokeWidth values for rectangle, star, ellipse and regular polygon shapes Task-number: QTBUG-142450 Change-Id: I1920d22e80944ee4f220b927b4c1fcbbe2bb077a Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
* StyleKit Example: improve the example after recent StyleKit fixesRichard Moe Gustavsen2025-12-064-14/+123
| | | | | Change-Id: I01bcdaea8a7014c3bd2f1c65b7d00a048700b91f Reviewed-by: Doris Verria <doris.verria@qt.io>
* Windows style: override the application palette when in dark modeVolker Hilsheimer2025-12-051-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The native Windows (XP) styling code cannot render controls in the dark color scheme. Our code detects that the application is running in dark mode, and then explicitly creates a light palette that gets set on the QQuickTheme singleton. However, the palette that the style is actually using isn't always based on the QQuickTheme palette, so we get inconsistent colors: the window background is dark, a button font is light, while the button itself is also light. This makes the UI unusable. QGuiApp has no knowledge of Qt Quick's styling infrastructure, or of QQuickTheme, so it cannot ask the style to "polish" the palette like we do in widgets. As a quick fix, override the global QGuiApplication palette with the light palette. [ChangeLog][Controls] The Windows native style will use a light palette as the application global palette on Windows systems running in dark mode. The style cannot render dark controls, and mixing a dark application palette with some UI elements rendered in light mode using the Control style results in inconsistent and unusable user interfaces. For Dark mode UIs, use a style that supports dark mode, like the FluentWinUI3 or Fusion styles. Pick-to: 6.10 6.8 Change-Id: I5e279b88ba018baa03936624e07f48e8986eb1c6 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* qmlls: use resource files from CMake for the DOMSami Shalayel2025-12-0511-27/+141
| | | | | | | | | | | | We can use the resource files from the .qmlls.build.ini also when constructing the DOM, instead of iterating over the build and import folders. Fix and rename a test in tst_qmldomitem. Task-number: QTBUG-141707 Change-Id: I9dcbd4cd307aba251e5de1d8c00c97b22dd87eb4 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmlls: read resource files from .qmlls.build.ini filesSami Shalayel2025-12-057-3/+42
| | | | | | | | | | | | | | | | | We can't find resource files by iterating on the build folder without causing QTBUG-141707, therefore implement reading resource files from the .qmlls.build.ini files. A later commit will make CMake add the resource file information in the generated .qmlls.build.ini files. A separate commit will take care of usages of resourceFilesFromBuildFolders() in the dom. Keep a fallback for projects without resource files, for example projects targeting qt < 6.11. Task-number: QTBUG-141707 Change-Id: I279d193aa6a2849526c2f56c6a40e83492050f74 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmlls: don't use build directories as import pathsSami Shalayel2025-12-055-82/+93
| | | | | | | | | | | | | | | | | | | | Don't mix build and import paths in qmlls. Use build paths for build path operation (finding .qmlls.build.ini, eventually resource files, CMake invocations, ...) and the import paths for imports (when linting and constructing the DOM). Only use build paths as import paths as a fallback, for projects running on Qt < 6.10. It turns out that our tests were making heavy use of "build folders are import paths". Modernize the tst_qmlls_modules tests to write a .qmlls.build.ini file in the build folder which contains the import paths. Also don't read the import path twice from the qmlls.build.ini file, and read it from the QQmlCodeModelManager, not the QQmlCodeModel. Add a test for importPathsForFileUrl() that used to duplicate the import paths. Task-number: QTBUG-141707 Change-Id: I9eceb743bf37bc0f743954a0e7b1e5831f1989fa Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* tst_qmlls_modules: dont segfault on test failureSami Shalayel2025-12-051-0/+5
| | | | | | | | Fix the cleanup method to disconnect the signals in m_server, otherwise m_server might use an outdated m_protocol in a later test case. Change-Id: I4ae3b02bc0ed5cae585dc637c037e56bc4976adf Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QtQml: Optimize fallback lookups a bitUlf Hermann2025-12-052-39/+42
| | | | | | | | | | We don't need to repeatedly query the metaobject for its properties just to determine the type. We can instead store the type right away. The same holds for the "resettable" flag. Task-number: QTBUG-142331 Change-Id: Ia8bb96587a344a2981e766e4bc2f13bcac7b4561 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QtQml: Invalidate fallback lookups after each call from AOT codeUlf Hermann2025-12-056-4/+104
| | | | | | | | | | Fallback property lookups are created for completely dynamic metaobjects. Anything about them may change between any two calls. Pick-to: 6.10 6.8 6.5 Fixes: QTBUG-142331 Change-Id: Ib732c37a6f27ab8105bea0eeae000af7eb9c36d7 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* StyleKit: Add ApplicationWindowDoris Verria2025-12-058-5/+44
| | | | | Change-Id: I9cc429c5a5e229983cb68648df239260903a0af4 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* StyleKit: Add ToolSeparatorDoris Verria2025-12-058-1/+59
| | | | | Change-Id: If1285165aa28fea401bbff061fcdfd4563bce334 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* StyleKit: respect theme paletteRichard Moe Gustavsen2025-12-052-2/+8
| | | | | | | | | | | | | | | | A Qt Quick Control will use StyleKitControl.text.color as its text color. But as it stood, it was not initialized to anything in the FallbackStyle. The result was that all controls got a black text color, regardless of what was set in the theme palette. It would also not respect any palette overrides done from the app. This patch will make sure that we, by default, bind text.color for the various control types to the matching color in the Qt Quick Control's palette. This color will, unless overriden by the app, be initialized to the color set by the theme. Change-Id: I6d4f67c81c57c9a30940a720816fa4ed2675b8bd Reviewed-by: Doris Verria <doris.verria@qt.io>
* StyleKit: add spacing to TooBar.qmlRichard Moe Gustavsen2025-12-051-0/+1
| | | | | | | | | | | | The ToolBar missed a binding to spacing. A ToolBar doesn't actually layout its items, the application is responsible for that. Still, it might want to query the spacing set from the style for doing the layout. Change-Id: I1613ba519e8edaeb58fe2b4cc6f7e5599dd02dff Reviewed-by: Doris Verria <doris.verria@qt.io>
* QML: Pipe objects' metaObjectHash to qqmljsscope through the qmltypesOlivier De Cannière2025-12-0511-11/+71
| | | | | | | | | | It gets added to the json output of moc for every object. Include it in the object's qmltypes representation too and add it to the corresponding qqmljsscope when parsing them. Task-number: QTBUG-142186 Change-Id: Id551a4edb1284018dee8d9afbe3b7189660478b8 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* doc: update qmlls documentationSami Shalayel2025-12-051-46/+60
| | | | | | | | | | | | | | | The setup part is mainly meant for qmlls client developers, so mark it as such. Add the download links to the standalone qmlls, in addition to qmlls's location inside of qt. Also document that build directories can be passed via an LSP extension, to support multiple workspaces. Remove the parts about import paths and documentation directories, those are handled by CMake's .qmlls.build.ini and can lead to weird behaviors when set incorrectly. Change-Id: I59496d20a9d02504636af6374818260c1e5f622d Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qqmlcodemodel: use valueAsAbsolutePathlist instead of duplicating codeSami Shalayel2025-12-051-2/+2
| | | | | | | | Use valueAsAbsolutePathlist instead of duplicating code in buildPathsForFileUrl(). Change-Id: Ia2db7356efe8401178f28b55f72d3c113dbbe6f3 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add notes to Animator docsLaszlo Agocs2025-12-052-2/+21
| | | | | Change-Id: I2a985ab1900afb8c027405fb0ec76c250c7535e0 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* tst_qqmlpropertycache: Adapt to metaobject layout changeOlivier De Cannière2025-12-051-3/+11
| | | | | | | | | | | | | It now stores one additional string relative to before, namely the class def's content hash. And the header has increased by 1 to store that string's index into the string table. Also, keep handling revision 13 temporarily to allow for a smoother transition and remove that version asap. Task-number: QTBUG-142186 Change-Id: I2b190f3a4b6bdd9cd95ac00b65359957860c8187 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* VectorImage: Add dependency on QtQuick.EffectsEskil Abrahamsen Blomfeldt2025-12-051-1/+1
| | | | | | | | | | | | | | This amends 39ec01eec2b5262cb60f5c266d5f4107aae7e415. On Android, we need to ensure implicit imports are known to the tools. When adding support for the blur effect, we also added an implicit dependency on MultiEffect, but since no one told the deployment tool, we would get a test failure when loading files. Fixes: QTBUG-142472 Change-Id: Ic2f91c9fce94a90ca05314827edb77b7f9cdec4a Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* QQmlPropertyCache expand Override Semantics. QML pathDmitrii Akshintsev2025-12-056-70/+655
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This path focuses on the actual expansion of Override Semantics with regard to newly added virtual and override keywords. Since Override Semantics is central to the way PropertyCache is being populated, expanding it requires additional care. To ensure smooth and reliable iteration, this patch isolates data-flows: within this patch adding properties from MetaObject stay "unaffected" by the expansion, as well as the paths adding Methods and Signals from the IR. This is done with the help of 3 things: 1. Separating logging logic from the Override logic 2. Extracting Override Semantics into it's own namespace 3. Adding a nob to control the set of rules To facilitate and separate testing of the logging logic and override semantics, the principle of dependency injection is being used, allowing us to easily Fake handling of override semantics, simplifying testing of PropertyCache::appendPropertyAttr Logging logic (messages) is kept on the side of QQmlPropertyCache mostly because this entity logically has more context to do proper logging. Taking into account how the class name and name of the property are handled, those are kept to be "requested on demand", a.k.a. query them only in cases when the logging indeed needs to be performed. Multiple append* methods have been moved to the private section to avoid invalidation of caches. See comment above QQmlPropertyCache. As a workaround to enable unit-testing of some methods, tst_qqmlpropertycache has been added as a friend class. This patch updates tests/auto/quick/qquicklistview/data/negativeDisplayMargin.qml to remove an unintended override of ListView’s built-in count property. The test declared its own count property, which implicitly shadowed ListView.count. The newly introduced validation correctly flagged this conflict, so the test has been adjusted accordingly. Change-Id: I809e58e421fa50f5ee7f21b31edbf926ad472736 Task-number: QTBUG-98320 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* tests: Suppress QJSValue::isVariant() deprecation warningsLu YaNing2025-12-051-0/+3
| | | | | | | | | | | | | | | | Add QT_WARNING_DISABLE_DEPRECATED around the newVariant() test function to suppress deprecation warnings for QJSValue::isVariant() which was deprecated in Qt 6.9. The isVariant() method returns rather unexpected results and is only true in very limited cases. While the test still validates the API behavior, the deprecation warnings are suppressed to keep the build clean. Amends eaad950651c237708c26f3931963c633077ace01 Change-Id: I7b27375fa2c6f6a77aed43cfc4d752db5395824a Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Add test for menu navigation, when using popup windowsOliver Eftevaag2025-12-052-0/+210
| | | | | | | | | | | | | | | | Keyboard navigation between the MenuBar, MenuBarItems, Menus and MenuItems broke, when we introduced popup windows. Since then, we've added various patches (e.g. 2393c588bc9a5368c013952a4fb195c5b4017543) to gradually fix key event handling. Add a test, to verify that menubar navigation now works. Task-number: QTBUG-121363 Pick-to: 6.8 Change-Id: I64d720a07fc300040ce1670082f9628befb73f5b Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Replace QSequentialIterable with QMetaSequence::IterableUlf Hermann2025-12-0511-57/+58
| | | | | | | | QSequentialIterable is deprecated. Task-number: QTBUG-140181 Change-Id: I797c18fa5c319e5c1a0114448d98a38aad33ae04 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
* VectorImage: Fix compilation after qtsvg's ligature handling fixRobert Löhning2025-12-041-7/+15
| | | | | | | | | | | While qtsvg now supports ligatures of multiple characters the existing code here does not yet. Fixing that is out of scope for this patch. It's only meant to keep the code working the way it did before. Pick-to: 6.10 Change-Id: Ie62d3b3d5764a6bcb3d75e6594a8729652c0dcf4 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Update dependencies on 'dev' in qt/qtdeclarativeQt Submodule Update Bot2025-12-041-5/+5
| | | | | Change-Id: I90337fc840fce07ab9346ebc04fc0eacf3594710 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* StyleKit: Implement ScrollView, ScrollBar and ScrollIndicatorRichard Moe Gustavsen2025-12-049-0/+230
| | | | | | | | | | This patch will implement support for styling ScrollBar and ScrollIndicator. It also includes ScrollView, since otherwise, if we inherited the one from the Basic style, it would also use the ScrollBars from the Basic style. Change-Id: I8163824aec61ce3c84303b6add3fdb1b7701532e Reviewed-by: Doris Verria <doris.verria@qt.io>
* StyleKit: implement ProgressBarRichard Moe Gustavsen2025-12-047-1/+120
| | | | | | | | This patch will implement support for styling ProgressBar. Change-Id: Ic6d48bbb61b068ff967289736236f2d21992dc0a Reviewed-by: Doris Verria <doris.verria@qt.io>
* StyleKit: implement TabBar and TabButtonRichard Moe Gustavsen2025-12-048-4/+143
| | | | | | | | This patch will implement support for styling TabBar and TabButton. Change-Id: I31658cf6cb923a06efa0cc4b02275a26c1968577 Reviewed-by: Doris Verria <doris.verria@qt.io>
* StyleKit: only store the nested states that are actually usedRichard Moe Gustavsen2025-12-043-100/+85
| | | | | | | | | | | | | | | | | | | | | | | It's wasteful to set off pointer space for all the possible states that can be nested. Usually a state will not use nested states at all. E.g the assignment 'button.pressed.spacing' would cause the 'pressed' state to also set off space for all the states that can be nested inside it, even if they are never used. In addition, the current implementation would, by accident, lazy create all the nested states while traversing up the parent chain of states. And as it turns out, by just storing the nested state flag inside the state, we don't need to do any traveral at all. This patch will make sure that we only allocate space for nested states if we encounter that at least one of them are being used, and store the nested state to avoid unnecessary traversal. Change-Id: Ied87f0c6b04057cb4c9f3e31f275a2d4b87c3efb Reviewed-by: Doris Verria <doris.verria@qt.io>
* qmlls: document new cmakeJobs optionSami Shalayel2025-12-041-2/+18
| | | | | | | | | Describe the option and how to set it via a setting file, a commandline argument or a environment variable. Task-number: QTBUG-142352 Change-Id: I37da4ebed65e4228aaed0973b8d98b43af9f53e0 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmlls: use 1 job for background buildsSami Shalayel2025-12-048-16/+137
| | | | | | | | | | | | | | | Control the numbers of jobs to be used in Qmlls in background builds via the "-j" argument of CMake. Set the default to 1: a background build should not eat up all the CPU/RAM available of the users computer. [ChangeLog][qmlls] The number of CMake jobs can be set with a command line option, an environment variables, and a .ini setting option. The default was changed from using all available cores to 1. You can restore the previous behavior by passing "max" as number of CMake jobs. Task-number: QTBUG-142352 Change-Id: Icc8573906632272773c0a2812febbf06aa6b3079 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qqmljsimporter::setImportPath: do nothing if import path are unchangedSami Shalayel2025-12-042-5/+5
| | | | | | | | | Move a check from callers of setImportPath to setImportPath and do nothing if the import paths are unchanged. Task-number: QTBUG-141707 Change-Id: I3dfa6bc3927a12c323c85b340aa88ef1049f6a76 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QWidgetPlatformFileDialog: fix QFileDialog::directoryEntered connectionAhmad Samir2025-12-041-1/+5
| | | | | | | | | | | | QFD::directoryEntered()'s arg is a QString, whereas QWidgetPlatformFileDialog::directoryEntered() takes a QUrl, this works because there is an implicit conversion from QString to QUrl, but it would fail if QT_NO_URL_CAST_FROM_STRING is defined (which will happen in a subsequent commit). Pick-to: 6.10 6.8 6.5 Change-Id: I0e4c2e33bbaabe4553a3e49d05351ce32c0e6417 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Document QML Override SemanticsDmitrii Akshintsev2025-12-042-22/+176
| | | | | | | | | | | | This patch introduces and consolidates documentation of the 'final' and newly introduced 'virtual' and 'override' property attributes under the section Override Semantics. The section explains their purpose, semantics, and interaction rules, as well as the rationale behind. It includes examples illustrating common cases as well as invalid modifier combinations. Task-number: QTBUG-98320 Change-Id: I2662b469180ec82983d42ad28a5836f8393250fa Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
* cmake: improve .qmlls.build.ini writing processSami Shalayel2025-12-041-27/+31
| | | | | | | | | | | | Instead of writing each line via an "echo" command, collect all target specific .ini bits into a file, and then append that file into the .qmlls.build.ini file. Note that writing the .ini bits directly into .qmlls.build.ini is not possible because add_custom_command() eats away the newlines from its arguments. Change-Id: Ibc79aa69e227b1b46459109fd055a0e0dfe8b96c Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>