aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* QtQml: Invalidate fallback lookups after each call from AOT codeUlf Hermann2025-12-052-4/+13
| | | | | | | | | | 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-051-0/+6
| | | | | | | | | | | | | | | | 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-059-11/+40
| | | | | | | | | | 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>
* 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-053-68/+335
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Replace QSequentialIterable with QMetaSequence::IterableUlf Hermann2025-12-059-50/+51
| | | | | | | | 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>
* StyleKit: Implement ScrollView, ScrollBar and ScrollIndicatorRichard Moe Gustavsen2025-12-048-0/+210
| | | | | | | | | | 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-047-16/+105
| | | | | | | | | | | | | | | 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>
* CMake: write qrc file paths to .qmlls.build.iniSami Shalayel2025-12-041-0/+5
| | | | | | | | | | 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>
* QQmlCodeModel: avoid calling methods in wrong threadSami Shalayel2025-12-042-3/+14
| | | | | | | | | | | | | | | | | | | | 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-042-29/+49
| | | | | | | | | | | | 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-045-8/+138
| | | | | | | | | | | | | | | 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-041-53/+73
| | | | | | | | 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-043-4/+28
| | | | | | | | | 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-045-1/+18
| | | | | | | | | | | | | | | | | | | 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-046-7/+123
| | | | | | | | 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-048-58/+661
| | | | | | | | | | 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-045-53/+311
| | | | | | | | | | | | | | | | | | 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>
* Add RegularPolygonShape to QtQuick.ShapesAlexey Zerkin2025-12-044-0/+674
| | | | | | | | [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-044-0/+680
| | | | | | | | [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-0412-10/+131
| | | | | Change-Id: I8a7fc86482e2083a24d1e7159737fd0ababc8e0b Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* StyleKit: Add GroupBox controlDoris Verria2025-12-048-1/+79
| | | | | Change-Id: I0177d20c381d83d2a816199a89b6fc9150fa4766 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* StyleKit: Add Label controlDoris Verria2025-12-048-2/+58
| | | | | Change-Id: I3594798dfb475118cad046948ccc4fe180bbd9a3 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QQStyleKitFont: Drop extra "font" from property namesDoris Verria2025-12-043-147/+147
| | | | | | | | 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-0433-771/+2846
| | | | | | | | [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>
* 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>