aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* CMake: write qrc file paths to .qmlls.build.iniSami Shalayel2025-12-0410-13/+128
| | | | | | | | | | Write qrc file paths to the .qmlls.build.ini. This ensures that qmlls doesn't pick up other modules .qrc files to avoid situations like QTBUG-141707. Fixes: QTBUG-141707 Change-Id: I4ea6756af7b12bf00e2f3f3338c0d5bfd792dc77 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* tst_qmlls_qqmlcodemodel: silence import path warningsSami Shalayel2025-12-042-5/+12
| | | | | | | | Add missing import paths where needed to silence all the import path warnings from tst_qmlls_qqmlcodemodel. Change-Id: Ia667a381ca01c8b1dc32387e1b1e5bb633ef54e6 Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
* QQmlCodeModel: avoid calling methods in wrong threadSami Shalayel2025-12-043-6/+24
| | | | | | | | | | | | | | | | | | | | Add some asserts to avoid calling methods from the wrong thread (this only seems to happen in the tst_qmlls_qqmlcodemodel tests, not in qmlls itself). Also make the methods private to avoid this from happening again. Adapt the tests to call the right methods, and to wait for the QQmlCodeModel file loading thread to finish (by waiting on the newly added openUpdateThreadFinished signal). This fixes the flakines from tst_qmlls_qqmlcodemodel reloadLotsOfFiles, where a data race, caused by the test calling one of QQmlCodeModels function in the wrong thread, was making the test flaky. Pick-to: 6.10 Fixes: QTBUG-142264 Change-Id: I6d6b89674344f271e94e6e558a34dd6900cfe703 Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
* QQmlPropertyData add doesOverride and isVirtual flagsDmitrii Akshintsev2025-12-043-29/+71
| | | | | | | | | | | | Currently Override semantics evaluation is based on the flags of QQmlPropertyData. Therefore adding this flags is necessary. On a bigger picture this patch focuses on the data flow from the IR to QQmlPropertyData (property cache) Change-Id: I206ee46a075675e37c35e4c72c74c68e132d2ef2 Task-number: QTBUG-98320 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Qml IR: add support for virtual and override keywordsDmitrii Akshintsev2025-12-0410-68/+250
| | | | | | | | | | | | | | | This patch adds two new fields, IsVirtual and IsOverride, to CompiledData::Property. These fields will later be used to populate QQmlPropertyData and to handle property override semantics. At a high level, this change focuses on the data flow from the AST to the IR, laying the groundwork for future semantic resolution. Also moves test helper Syntax namespace to the quicktestutils Task-number: QTBUG-98320 Change-Id: Ic2a2e28df08d53c8752c49304bd5f7ff46916d08 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmlls: add completion for virtual and overrideDmitrii Akshintsev2025-12-043-60/+148
| | | | | | | | This patch adds support for the completions of newly introduced keywords and corresponding valid combinations. Change-Id: I9c3b008405ac4fd45d7393013838df0813426358 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* semantic highlight: support virtual and override keywordsDmitrii Akshintsev2025-12-045-4/+52
| | | | | | | | | This patch introduces corresponding QmlVirtualProperty and QmlOverrideProperty modifiers and expands the highlight of the PropertyDefinition Task-number: QTBUG-98320 Change-Id: If1cd98b9958ed3be5fd67e02abb71ca6fa68da6b Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
* qmlformat: add support for virtual and override keywordsDmitrii Akshintsev2025-12-049-1/+135
| | | | | | | | | | | | | | | | | | | This patch adds corresponding - VirtualKeywordRegion and OverrideKeywordRegion - isVirtual and isOverride members to Dom::PropertyDefinition adjusts the corresponding PropertyDefinition::writeOut method and introduces a test for the PropertyDefinition structure, currently covering / focusing only on the functionality relevant to the scope of this patch Note: maybe it is a good idea from now on to use newly added tests/auto/qmldom/elements directory for the tests covering qqmldomelements_p.h Task-number: QTBUG-98320 Change-Id: Ifac60d3e52900605778afaf3819a9af46c97954a Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QML: Temporarily allow revisions 13 and 14 of moc in qqmlpropertycacheOlivier De Cannière2025-12-041-1/+3
| | | | | | | | | | | | | The revision change does not break qqmlpropertycache but will cause static_asserts failures while the patch adapting to the moc change is not merged. Temporarily allow for both revision and revert to 14 only as soon as poosible. Task-number: QTBUG-142186 Change-Id: I4ea37bff08f0780148ec7f8958a05f372a6df0f3 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Compiler: Remove outdated warning suppression for MSVC 2019Olivier De Cannière2025-12-041-11/+0
| | | | | | | We no longer support it. Change-Id: I4244f251f4fb8f3b2d93d1d0a12bc4bba68b931e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Add support for feMergeEskil Abrahamsen Blomfeldt2025-12-0410-31/+168
| | | | | | | | We support merging up to 8 effects for now. Task-number: QTBUG-121541 Change-Id: Ic60400f054700e4ff44452870770b2175834dd85 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* VectorImage: Post processing effect chainingEskil Abrahamsen Blomfeldt2025-12-0411-62/+927
| | | | | | | | | | This introduces chaining post-processing effects, and the feComposite and feBlend nodes to allow compositing these. Task-number: QTBUG-121541 Change-Id: Ib2aa99139869814a575a2bf9d9e6319b31828285 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Hatem ElKharashy <hatem.elkharashy@qt.io>
* VectorImage: Add support for more filtersEskil Abrahamsen Blomfeldt2025-12-0411-53/+705
| | | | | | | | | | | | | | | | | | This adds support for the feColorMatrix, feOffset and feFlood filters. We also need to change how we calculate the bounds of post-processed items to use the internal bounds. Basically, we need the bounds of the children of the item + the item itself before the node's transform is applied. This is because the bounding box is axis aligned, so we cannot get the original rectangle back just by applying the inverse transform in the case of e.g. rotations. Task-number: QTBUG-121541 Change-Id: I7a8863bef4397df4043c854256dca312b91f888a Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Hatem ElKharashy <hatem.elkharashy@qt.io>
* a11y: Use Grouping a11y role for QQuickDialogButtonBoxMichael Weghorn2025-12-041-1/+1
| | | | | | | | | | | | A dialog button box is not a list of page tabs, but it groups the buttons, so use QAccessible::Grouping for the accessible role like the QDialogButtonBox equivalent in qtbase does (see QAccessibleDialogButtonBox). Fixes: QTBUG-141734 Pick-to: 6.10 Change-Id: I5ce474fbf6902c7e565f86307d00a0b8bdc63abd Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Compiler: Replace reject call with REJECTOlivier De Cannière2025-12-041-1/+1
| | | | | | | | | | Since 1919410cf2f82be2ca4d6e8015cfc93d734aa7cb, rejecting should be done with REJECT. Amends c7d5375714f5dc706416ea62375092f5c1214422 Change-Id: I6d83cedf7944d90d33ba388c7963f394d4ba153c Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QtQml: Sharpen tst_QQuickEventReplay::receiveEvent()Ulf Hermann2025-12-041-1/+9
| | | | | | | | | | Properly clear the event receiver whenever a new profiler client is attached to it and check for the exact number of expected events to avoid analyzing partial results. Task-number: QTBUG-142361 Change-Id: Iec12e2ae6dccaa100dcd3c92a17ba2c02e70eb2c Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* Add RegularPolygonShape to QtQuick.ShapesAlexey Zerkin2025-12-049-0/+963
| | | | | | | | [ChangeLog][QtQuick.Shapes.DesignHelpers] Added RegularPolygonShape Fixes: QTBUG-141530 Change-Id: Ifc1b9d54cb89f90d8032e44e269e6207c4e2d87f Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Add StarShape to QtQuick.ShapesAlexey Zerkin2025-12-0410-0/+987
| | | | | | | | [ChangeLog][QtQuick.Shapes.DesignHelpers] Added StarShape. Fixes: QTBUG-141531 Change-Id: Ifcce36d3bbac7f59612c3d056e8bcbbcea034137 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* StyleKit: Add TextArea controlDoris Verria2025-12-044-0/+79
| | | | | Change-Id: Ie23d3dfc1a93d052e9a19c9151c5ede4afee5ea9 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* StyleKit: Add padding properties to textDoris Verria2025-12-0413-12/+134
| | | | | Change-Id: I8a7fc86482e2083a24d1e7159737fd0ababc8e0b Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* StyleKit: Add GroupBox controlDoris Verria2025-12-049-1/+86
| | | | | Change-Id: I0177d20c381d83d2a816199a89b6fc9150fa4766 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* StyleKit: Add Label controlDoris Verria2025-12-049-5/+60
| | | | | Change-Id: I3594798dfb475118cad046948ccc4fe180bbd9a3 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QQStyleKitFont: Drop extra "font" from property namesDoris Verria2025-12-044-149/+149
| | | | | | | | It's redundant as the class name is QQStyleKitPropertyFont. Also this makes it consistent with the palette API. Change-Id: Ic334c1febb1cdfb5cb09f898cb2f27ecb06c1c1f Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* VectorImage: fix creation of easingCurve typeHatem ElKharashy2025-12-041-2/+2
| | | | | | | | | | commit : 1f51dc291c0763453f6a3230c8eb79a28892870f introduced a way to share custom easing curve objects among different animations. However, the easingCurve type was not constructed properly leading to the animation falling back to linear easing. Change-Id: I5a0ce2bd513ba2c24f9554a46547c479f2a2d021 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* qmltest: header cleanupTim Blechmann2025-12-041-23/+17
| | | | | | | | | * group by qt module * align include style * remove unused headers Change-Id: I9c27289e3e19e210b692aa4f59ca72a42caf82f5 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Qt Quick Controls: add DoubleSpinBoxXavier BESSON2025-12-0438-772/+3764
| | | | | | | | [ChangeLog][Controls] Added DoubleSpinBox. Fixes: QTBUG-67349 Change-Id: Icb2f02162825daf74778de725f80af63874a5d16 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QAccessibleQuickItem: support readonly stateOliver Eftevaag2025-12-041-0/+2
| | | | | | | | | | | | | | | | | | Accessibility Insights for Windows complained that the ProgressBar didn't communicate that it's readOnly. The reason, is because ProgressBar supports the ValueInterface, which according to https://www.access-board.gov/ict/#502-interoperability-assistive-technology must report its minimum value, maximum value, and readOnly state. In general, it looks like QAccessibleQuickItem never acknowledged that anything could be readOnly. Pick-to: 6.10 6.8 Change-Id: I96cc0d815e00981d320b50f4309fad6bb5ab0118 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Don't build benchmark using language server if the package isn't foundVolker Hilsheimer2025-12-041-0/+6
| | | | | | | | | | | This happens in toplevel builds that don't include the qtlanguageserver submodule. Amends 22f5c97a5c21dfb809d78bbf2db43ba3247b413a. Task-number: QTBUG-140645 Change-Id: I93cba50775fe637f3bb80b250a800bdfeec04195 Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
* StyleKit: improve property id calculationRichard Moe Gustavsen2025-12-0314-315/+299
| | | | | | | | | | | | | | | | | | | | | | | | | A style property in StyleKit typically looks like this: 'indicator.foreground.border.color'. In this example, the property name is 'color', and its group path is 'indicator.foreground.border'. The styling engine assigns a unique ID to each property—based on both its group path and its name—so its value can be stored efficiently in a QMap. Previously, the engine recalculated this ID on every property read by traversing the group path from color back to indicator. This resulted in a large amount of repeated work, especially during state changes or theme changes, when many properties are read at once. This patch refactors that logic so the group ID is computed once, when each group is created. In the example above, the groups indicator, foreground, and border each receive a unique group ID at construction time. From that point onward, computing a property’s ID simply combines the cached group ID with the property’s local ID—no group path traversal required. Change-Id: Id07a0cb477038420a55c7850ea09db7f7b4d9978 Reviewed-by: Doris Verria <doris.verria@qt.io>
* StyleKit: implement ToolBar and ToolButtonRichard Moe Gustavsen2025-12-039-1/+116
| | | | | | | | This patch will implement support for styling ToolBar and ToolButton. Change-Id: Ie8cbda5a1ee361e8f2ee1a78ec5634e52811e0cd Reviewed-by: Doris Verria <doris.verria@qt.io>
* Traverse certain tags inside <defs>Eskil Abrahamsen Blomfeldt2025-12-032-1/+48
| | | | | | | | | | | | | | | | We currently skip <defs> tags because any shape in there will be re-traversed later when the <use> tag is handled. But the <defs> may also contain non-graphical elements such as <filter> and <mask>. Long term, we should update our approach to <defs> by using the Component mechanism in QML. For now, we make a special case for <defs> tags to ensure that we traverse generate content for masks and filters even if they are declared inside a <defs>. Fixes: QTBUG-123991 Task-number: QTBUG-121541 Change-Id: I5f6e10962383528d3bc8fbe21ced2d79e557d8e5 Reviewed-by: Hatem ElKharashy <hatem.elkharashy@qt.io>
* tst_qquick{border,}image: remove a couple of redundant ternariesAhmad Samir2025-12-032-3/+3
| | | | | | | | Just compare with QUrl. If `remote` is true, `source` (a QString) will be implicitly converted to QUrl anyway. Change-Id: I38bd0aa5229a025351f00ed6b3766b2ff3f39dad Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QQuickRectangleShape doesn't update on size changesAlexey Zerkin2025-12-034-4/+28
| | | | | | | | | | Update rectangle's shape whenever size has changed Task-number: QTBUG-142203 Pick-to: 6.10 Change-Id: I4495c0ffb90b781329c0e3f322b9a141d3c04bd6 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* VectorImage: Fix opacity on individual shapesEskil Abrahamsen Blomfeldt2025-12-021-0/+3
| | | | | | | | | | | | | When shapes are combined into a single Shape object, the opacity information is lost. Similarly to how we handle non-default transforms on the shapes, we make sure the shapes with opacities are never combined with others. In principle, we could combine shapes with the same opacity, but for simplicity we just split them up at least until we see a strong need. Pick-to: 6.10 Change-Id: I2c8a444f9b38fc8cf66728d80b1a724f24469630 Reviewed-by: Hatem ElKharashy <hatem.elkharashy@qt.io>
* qmlls: add highlighting benchmarkSemih Yavuz2025-12-023-0/+115
| | | | | | | | | | | According to benchmarks, shifting highlights performs quite well.. For example,to construct highlighting tiger.qml takes around 33secs on my machine, whereas shifting highlights takes only around 60msec. Task-number: QTBUG-140645 Change-Id: Ie68ad7b70a68033a40bf52b7a0d1137efae97b39 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* VectorImage: Implement support for gaussian blurEskil Abrahamsen Blomfeldt2025-12-0210-49/+512
| | | | | | | | | | | | | | | | | This introduces support for the gaussian blur filter using the MultiEffect as an approximation. The approximation is not going to look perfect, but will perform better than doing an actual gaussian blur on the contents. Since the objective here is runtime performance, this is a reasonable trade-off. In order to make this work correctly with masks, we also refactor the mask code and now use ShaderEffectSources instead of layers in order to have full control. Task-number: QTBUG-121541 Change-Id: Idb1574a2f4d03311ab787fb4a6476b6c604c88b2 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* VectorImage: Fix opacity on masked itemsEskil Abrahamsen Blomfeldt2025-12-021-3/+6
| | | | | | | | | If the masked item has opacity != 1, we have to set this on the shader effect that applies the mask, not on the input item to the mask, same as transforms and animations. Change-Id: I87d937f51e7d1913f313968eb3cfee2855336de5 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Update dependencies on 'dev' in qt/qtdeclarativeQt Submodule Update Bot2025-12-021-5/+5
| | | | | Change-Id: I14f20fdf707d23b9668bb2bf20ddbd0945143a84 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Add font override properties to "text" propertyDoris Verria2025-12-015-2/+79
| | | | | | | | | This allows to override certain font properties per control/state. So then the final font propagation logic becomes: Fallback Style -> Style -> Theme -> Control -> State Change-Id: Ifb451b156b0e4de7734ac7b31a002cd3fcb78dd0 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* StyleKit: Add style and theme fontsDoris Verria2025-12-0120-254/+322
| | | | | | | | | | | | | | | | | Add a fonts property to the style that allows you to set fonts per control, similarily to what we do in QQuickTheme. The fonts are propagated from the style to the theme, and from the fallback style to the style. That means that if a font is not set for a theme or style, it will be resolved against its fallback font. Since both the QQStyleKitTheme and QQStyleKitStyle should have a fonts property, introduce a common base class: QQStyleKitThemeProperties that contains the fonts property. Later, the palettes can be moved there as well. Also add a font property to the QQStyleKitReader that is suposed to return the font for the current control being read. Change-Id: I116c1ab9bc426570756476ee409513587c475a0d Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* shift highlights: adapt lsp highlighting request to shiftingSemih Yavuz2025-12-0118-94/+439
| | | | | | | | | | | Implement Utils::shiftHighlights to apply diffs to cached highlights. Fallback to shifted highlights when DOM is invalid to avoid recompute. Refactor handlers to use shifted tokens and update result IDs and cache. Add unit tests and invalid fixtures covering deletions and partial edits. Task-number: QTBUG-140645 Change-Id: Ic230af0e3d995e85959beee3dfa37a987843c119 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* CMake: avoid warning twice when getting import pathsSami Shalayel2025-12-011-6/+10
| | | | | | | | | | Now that qmlls uses the same import paths as qmllint, we warn multiple times if the import paths are bad, once in the qmlls.build.ini generation code and once in the linting target creation part. Add a target property to avoid warning multiple times. Change-Id: If427e17dbf4e21cb0121bf2acced9dccb228e221 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* qmlls: qInfo() when receiving EOFSami Shalayel2025-12-013-0/+14
| | | | | | | | | | | | | | | Add a test to avoid QTBUG-142025 from regressing, and log a message with qInfo() when receiving EOF to simplify debugging qmlls in the future. This should help to tell if qmlls stopped on start because of QTBUG-142025 or other reasons (invalid signature, or the qmlls client trying to spawn qmlls from a filepath that does not exist for example). The actual fix of QTBUG-142025 is in qtbase and tracked via QTBUG-142041. Fixes: QTBUG-142025 Pick-to: 6.10 Change-Id: I9cd215ac02e23a1d833755eda058d72622de7318 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Update dependencies on 'dev' in qt/qtdeclarativeQt Submodule Update Bot2025-12-011-5/+5
| | | | | Change-Id: Ic2bb88c34938dda87864094595de8b7553d9508e Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* QmlCompiler: Don't read out of bounds when analyzing splice()Ulf Hermann2025-11-304-2/+22
| | | | | | | | | | You can call splice with only one argument, after all. Pick-to: 6.10 6.8 6.5 Fixes: QTBUG-142253 Change-Id: I3dec244325fd4d57a045ec024968e26e4f6372db Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Dialogs: Link LabsFolderListModel into QuickDialogs2QuickImplUlf Hermann2025-11-292-3/+6
| | | | | | | | | | It uses FolderListModel. Pick-to: 6.10 Task-number: QTBUG-137440 Change-Id: I44cc4f312dddde756bbb33aa7a564c1c4085c75e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* doc: Remove references to Lottie VectorImage backend being TPEskil Abrahamsen Blomfeldt2025-11-291-5/+4
| | | | | | | | Lottietoqml and the corresponding VectorImage backend are no longer in tech preview in Qt 6.11. Change-Id: I73647ff0d1df263b314b0535d988823b44afa34b Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* tst_QQuickLoader: avoid unnecessary QString -> QUrl conversionAhmad Samir2025-11-281-1/+1
| | | | | Change-Id: I3dbd469b26914b0380bb781c1c2993a43657bd4e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QQuickStackView: don't convert QUrl -> QString -> QUrlAhmad Samir2025-11-281-1/+1
| | | | | | Pick-to: 6.10 6.8 6.5 Change-Id: I1bd30625e474ea4e36c6fb252afbbe2cd9e17162 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* DOM: rename dvValueLazyField to invokeVisitorOnLazyFieldSami Shalayel2025-11-287-35/+42
| | | | | | | | | | dvValueLazyField is not really expressive, rename it to show that it calls the visitor argument on a field-wrapped version of its lazy field argument. Task-number: QTBUG-142187 Change-Id: I96b065a55257e62d5d6b970a5487c33b389a0b04 Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>