aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Reuse depth-stencil buffer between layers like Qt 5 didHEADdevLaszlo Agocs37 hours4-14/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Port QSGDepthStencilBuffer in a slightly changed form from Qt 5. Two layers in the same scene can use the same single depth-stencil buffer, instead of creating a dedicated one for each. As long as the size and sample count is the same. The render passes are recorded sequentially, and there is no need for the depth-stencil content once a render pass is done. The catch is having to deal with changing sizes, e.g. a window resize often leads to changed sizes for the layers of the scene. We do not want to end up cached renderbuffer objects with sizes that will possibly never be needed again. The Qt 5 approach solves this with reference counting and QShared/WeakPointers. Continue with that approach. If there is actually a depth-stencil buffer that is fully physically backed, that is a different question. With Vulkan for instance, on some GPU architectures we expect that the depth-stencil images will be transient + lazily allocated + no store, so it may matter little how many images we have. Similar things might happen in GLES implementations on tiled GPU architectures. However, generally it is ideal if the Qt 5 behavior is kept, so that no confusion arises from an extra renderbuffer or two showing up when counting and comparing resources in frame captures between Qt 5 and 6. Fixes: QTBUG-135813 Pick-to: 6.9 6.8 Change-Id: I238dc53600f4a00e6ee2f7ccc97ac33ff189e3c5 Reviewed-by: Andy Nichols <[email protected]>
* Introduce threadedsonglist exampleOtto Ryynänen43 hours1-0/+1
| | | | | | | | | | | A new example showcasing use of a worker thread for fetching data to a custom model based on QAbstractListModel. The pattern is a topic in Qt World Summit 2025. Fixes: QTBUG-135351 Pick-to: 6.9 Change-Id: If1fe04740206fa5bfbe1eea269e2bde1e217eaf9 Reviewed-by: Shawn Rutledge <[email protected]>
* QQmlComponent::loadFromModule: Fix crash with dynamic metaobjectsFabian Kosmale47 hours1-6/+12
| | | | | | | | | | | | | | | If an object has a dynamic meta-object (e.g. because it has been extended with additional enums), we can no longer create a property cache. This could have caused a null-poninter dereference; avoid this by checking for nullptr. We currently don't do any checks at all in that case; finding a better solution is tracked in QTBUG-136560. Pick-to: 6.9 6.8 Change-Id: I678cf9908d5bbec50e133a462f7f4c813dca44dd Reviewed-by: Ulf Hermann <[email protected]>
* CMake: Fix qt6_target_qml_sources without QML_FILES argumentJoerg Bornemann47 hours1-18/+20
| | | | | | | | | | | | | | | | | Commit 137cdc364dd5d569c613b83246a26e3803d7556d broke qt6_target_qml_sources with no QML_FILES argument, because it called qt6_add_resources without FILES (for the QML files), which causes a linker error. Check whether we have QML files and only then create the QML-specific resource. Add an autotest that calls qt6_target_qml_sources separately for QML and resource files. Fixes: QTBUG-136491 Change-Id: I5e8173652887f257fd6d8e6c8d18bcc0e295b714 Reviewed-by: Alexey Edelev <[email protected]>
* QtQml: Clear module imports when clearing type registrationsUlf Hermann47 hours1-0/+2
| | | | | | | In theory, newly loaded modules might have different module imports. Change-Id: I045769e25b2bb89face1984fac0991e80cdbc199 Reviewed-by: Olivier De Cannière <[email protected]>
* QtQml: Also delete value types when clearing the type registrationsUlf Hermann47 hours1-0/+3
| | | | | | | In theory, we might otherwise get conflicts when loading new types. Change-Id: I6df05088684da8baeaf820fd7df78a10046b3ccd Reviewed-by: Olivier De Cannière <[email protected]>
* QtQml: Optimize checking for value typesUlf Hermann47 hours1-0/+3
| | | | | | | If a QMetaType is a pointer to QObject, it's not a value type. Change-Id: I7505a968e02ff87646af6c1e506a99328fc7d6eb Reviewed-by: Olivier De Cannière <[email protected]>
* Refine the warnings for `qt6_target_qml_sources`Cristian Le2 days1-4/+24
| | | | | | | | - Warn if the same `QML_FILES`/`RESOURCES` are passed more than once - Add an opt-out warning for duplicate file warning Change-Id: I6c547b1ea869216cbafbc9bcbcda229c5f03d337 Reviewed-by: Alexandru Croitor <[email protected]>
* TextEdit and TextInput: map QContextMenuEvent to text cursor posShawn Rutledge2 days7-1/+40
| | | | | | | | | | | | | | | ...if the position is not already set. Events that come from a keyboard menu key or shortcut often have pos() == {0, 0}, but we want the context menu to be in the context of what the user is editing. First though, we need QQuickDeliveryAgentPrivate::contextMenuTargets() to search for items at the correct position. We don't override delivery order, but activeFocusItem should be in the list that is returned. Pick-to: 6.9 6.8 Fixes: QTBUG-136253 Change-Id: I7eea03e118a95a1a267f02bd3385cc1ae4cbb0a0 Reviewed-by: Mitch Curtis <[email protected]>
* Compiler: Deduplicate conversion origins based on register's contentOlivier De Cannière3 days1-3/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the type propagator, when encountering back jumps, we need to run the pass again in order to ensure that the state of the registers at the target of the jump is fully known. For this, we need to compare the latest state in the current pass with states we have encountered earlier. If a match is found, no more passes are needed. The propagation is run multiple times and state is accumulated between passes. For certain conversions, this will try to append types as origins again every iteration. These would previously have been deduplicated by QQmlJSTypeResolver::merge but, since the change at 1e095058e165b1c2f244799ca1928ae4cc046a2c, we consider 2 registers to be equal only if their d pointers are equal. And since instructions such as MoveRegexp create a new register for the literal type RegExpr every time, the pointer doesn't match with the one from the register created by the instruction during the ealier pass. This would lead to set of origin types growing forever and to the state never matching a previous one. This, in turn, caused an infinite loop because an additional pass was always deemed necessary. Therefore, restore the old logic that deduplicates based on contained type, variant, and (recursively) scope. Amends 1e095058e165b1c2f244799ca1928ae4cc046a2c Fixes: QTBUG-135457 Pick-to: 6.9 Change-Id: I23167e95b958304698d12537598c1d72b03a5364 Reviewed-by: Ulf Hermann <[email protected]> Reviewed-by: Olivier De Cannière <[email protected]>
* QtQml: Do not check revisions when resolving aliasesUlf Hermann4 days1-1/+2
| | | | | | | | | | | | | Revisions are for unqualified lookup. Aliases are always qualified. [ChangeLog][QtQml] You can now create aliases to revisioned properties that would be unavailable when accessed without qualification. Aliases are always qualified after all. Pick-to: 6.9 Task-number: QTBUG-136248 Change-Id: I2aae7bb104850def8f220bfab1a2fa056efe78e0 Reviewed-by: Fabian Kosmale <[email protected]>
* Support fill-opacity and stroke-opacity in VectorImageEskil Abrahamsen Blomfeldt4 days9-15/+254
| | | | | | | | | | | | | | | | | | | | The alpha value of the fill and stroke colors can be animated separately in SVG. In order to support this, we introduce a specialized ColorOpacityAnimation type in a Helpers library which only overwrites the alpha channel of the target property. This requires an extra hook in the animation frame work which allows us to get the current value of the property. It should have minimal impact on any existing code, but may have additional use cases later, when we implement support for additive color animations for instance. Since the interpolator API in QVariantAnimation is public API, we add a secondary, private API for this. If we see use for it in the future, this could mature to a public API as well. Fixes: QTBUG-135322 Change-Id: I803f4e64c41e9d6dc355f2468233661885aa7f15 Reviewed-by: Eirik Aavitsland <[email protected]>
* QtQml: Long live Qt.labs.synchronizer!Ulf Hermann4 days4-0/+970
| | | | | | | | | | | [ChangeLog][QtQml] The new Synchronizer element allows you to synchronize values between two or more properties without breaking their bindings. This is useful for connecting user-editable controls to backend values. Fixes: QTBUG-21558 Change-Id: I01c32d7a39f1efc89975d8494ad698444c803fd4 Reviewed-by: Fabian Kosmale <[email protected]>
* Docs: Fix doc warningsAlexei Cazacov4 days8-8/+1
| | | | | | | | This commit fixes several broken links in \nativetype. Pick-to: 6.9 6.8 Change-Id: I45c599eb165b062b2a9eddea3fd13b90d2d7fd74 Reviewed-by: Ulf Hermann <[email protected]>
* Qt.labs.platform: Fix revisions for signals in Qt.labs.platformUlf Hermann5 days3-4/+4
| | | | | | | | | | | | | There has never been a version 2.1 of Qt.labs.platform. All those signals were added in version 1.1. Amends commit 5246dd2de211ffb81313a5c29ae7894545a28c43. Pick-to: 6.9 6.8 6.5 Task-number: QTBUG-136248 Change-Id: Iee02e95e8b7558d30ab0fe725aa2d80220acfa48 Reviewed-by: Mitch Curtis <[email protected]> Reviewed-by: Sami Shalayel <[email protected]>
* QQmlListModel: Do not crash or leak when querying inner modelsUlf Hermann5 days1-5/+10
| | | | | | | | | | | The list models can be nested, and inner models don't necessarily have a layout. Also, we need to release any worker agents we reference. Pick-to: 6.9 6.8 6.5 5.15 Fixes: QTBUG-136127 Change-Id: Ibedefce2a1d6783169e754fbf083099d050dceb1 Reviewed-by: Olivier De Cannière <[email protected]> Reviewed-by: Sami Shalayel <[email protected]>
* Qt6UpdateQmllsIni: Fix warning when no timestamp file exists yetNicolas Fella5 days1-1/+3
| | | | | | | | | | | | If no file is found by the glob REMOVE will throw a warning. Catch that. Amends 538cd9d8ce5539d0b95d8e33cdd705a4cb388d53 Pick-to: 6.9 6.8 Change-Id: I35169e1930ddd6b34a7b0f8a979ee34c796f36f5 Reviewed-by: Alexandru Croitor <[email protected]> Reviewed-by: Sami Shalayel <[email protected]>
* qmllint: Warn about reads of non-constant and non-notifiable propertiesOlivier De Cannière5 days3-1/+23
| | | | | | | | The binding might not update if their value changes. Fixes: QTBUG-112508 Change-Id: I27801d662117a89c0fdddc2aaa2f1dde21b238df Reviewed-by: Sami Shalayel <[email protected]>
* Emit rowsChanged when the rows are changed in QQmlTableModelMate Barany5 days1-0/+5
| | | | | | | | | | | | Emit the rowsChanged signal when there is a change in the rows. Update the test cases accordingly. Fixes: QTBUG-136142 Pick-to: 6.9 Change-Id: I864a743f1a197c755daa014ce0dfcc71651ab8ca Reviewed-by: Richard Moe Gustavsen <[email protected]> Reviewed-by: Matthias Rauter <[email protected]>
* qmllint: warn about duplicate property bindingsSami Shalayel5 days1-3/+29
| | | | | | | | | | Warn about duplicate property bindings for object and script bindings. Remove a TODO about doing this task that seemed to be at the wrong place. Fixes: QTBUG-118102 Change-Id: I46696b696f6c7e0c83e36077998d6118b14498ad Reviewed-by: Olivier De Cannière <[email protected]>
* Adapt to refactor of transform anims in Qt SvgEskil Abrahamsen Blomfeldt5 days2-42/+88
| | | | | | | | | In order to correctly support transformation order, we needed a refactor in Qt Svg. We need to adapt to this and apply the animations in the correct order in Qt Quick. Change-Id: I38e323f95b7edc26fd8d78ebd98778c3da1adbea Reviewed-by: Hatem ElKharashy <[email protected]>
* QQmlTranslation: fix build errorZhao Yuhang5 days1-2/+2
| | | | | | | | | | There will be compilation errors if QByteArray's implicit conversion to const char* is disabled (which is possible in some user configurations). Just convert QByteArray to const char* manually, don't rely on such implicit conversions. Change-Id: I7b68066bc82a0a64f38ad8f9903d06ffe4bb0754 Reviewed-by: Ulf Hermann <[email protected]>
* Doc: Make list items easier to readAndreas Eliasson6 days1-26/+52
| | | | | | | | | | | | | The current setup makes it difficult for the reader to separate the actual values from the see also part. This patch capitalizes the See also part and puts it on a new line. Fixes: QTBUG-134606 Pick-to: 6.9 6.8 6.5 Change-Id: I03847c82bbc115ce62358f196dbd26cac87b3497 Reviewed-by: Safiyyah Moosa <[email protected]> Reviewed-by: Shawn Rutledge <[email protected]> Reviewed-by: Mitch Curtis <[email protected]>
* QQuickPathRectangle: Merge corner radius and bevel flags into a bitsetMagdalena Stojek9 days2-27/+38
| | | | | | | | | | | Replace separate storage for corner radius and bevel with a single 8-bit field cornerProperties. The first 4 bits track radius flags, and the next 4 track bevel flags. Fixes: QTBUG-134908 Change-Id: Ie2d706112965fc5dde07fa698e32e29695da219b Reviewed-by: Shawn Rutledge <[email protected]> Reviewed-by: Eirik Aavitsland <[email protected]>
* Fix warning text in QQuickTextDocument::setSource()Shawn Rutledge9 days1-1/+1
| | | | | | | | | | | The warning suggested calling TextEdit.clear() before loading a different url if the text is modified, but that actually doesn't work. But as the `source` property docs say, it's possible to set `modified = false`. Pick-to: 6.9 6.8 Change-Id: Ia078269c76be141adb06303163a661927f125bcd Reviewed-by: Oliver Eftevaag <[email protected]>
* QQmlJSImportVisitor: const-ref-ifyOlivier De Cannière9 days1-7/+6
| | | | | Change-Id: Ia71e88dbd983303c15e532b812550214426d4d6d Reviewed-by: Sami Shalayel <[email protected]>
* qmllint: Fix required property warning with owner mixupOlivier De Cannière9 days1-2/+5
| | | | | | | | | | | | | | | | Because we only search for the name of the property in the scopesToSearch and not which property that name actually references, we confuse a property of the same name in a neighboring scope for the actual required one. Include the property's owning scope when searching through the scopes. Amends daf57e29de918b7b4be7bb0d469db0c51d41bb07 Fixes: QTBUG-136058 Pick-to: 6.9 6.8 Change-Id: I998901fd0840270dd2048e7257d6eaca556b513d Reviewed-by: Sami Shalayel <[email protected]>
* qmllint: Fix name of inline component scopes for required propertiesOlivier De Cannière9 days1-9/+9
| | | | | | | | | Amends daf57e29de918b7b4be7bb0d469db0c51d41bb07 Task-number: QTBUG-136058 Pick-to: 6.9 6.8 Change-Id: Ibf412089427e4d9d5a568ee24c224b9fa41fd20a Reviewed-by: Sami Shalayel <[email protected]>
* Compiler: Move QQmlJSScope::descendants next to its only userOlivier De Cannière9 days3-18/+22
| | | | | | | | | | Move it next to QQmlJSImportVisitor::checkRequiredProperties and also make it filter out any scope that isn't of type QMLScope. Task-number: QTBUG-135244 Pick-to: 6.9 Change-Id: Ibf3fa90ab7db9fcd9811509b5f893aeab4f14925 Reviewed-by: Sami Shalayel <[email protected]>
* Compiler: Optimize checking required propertiesOlivier De Cannière9 days1-2/+4
| | | | | | | | | | | | | | | | | Checking required properties had become quite slow, especially on huge files, after daf57e29de918b7b4be7bb0d469db0c51d41bb07. Immediatelly checking for the presence of a property binding speeds things up a lot. fluentwinui3/Slider.qml, which reference a 20k line file, now compiles almost instantly again instead of talking several tens of seconds. Amends daf57e29de918b7b4be7bb0d469db0c51d41bb07 Fixes: QTBUG-135244 Pick-to: 6.9 6.8 6.5 Change-Id: I4391db27f391b179ad03dabadc910f23fa932037 Reviewed-by: Fabian Kosmale <[email protected]>
* ImportVisitor: Fix nonsensical code for checking required propertiesOlivier De Cannière9 days3-1/+10
| | | | | | | | | | | We create and increment an iterator and then don't use it... Amends daf57e29de918b7b4be7bb0d469db0c51d41bb07 Task-number: QTBUG-135244 Pick-to: 6.9 6.8 6.5 Change-Id: Ia92df8e7dc337786eba43980364ad03c747ec11b Reviewed-by: Fabian Kosmale <[email protected]>
* qmllint: don't warn about required properties in inline componentsSami Shalayel9 days1-0/+4
| | | | | | | | | | | | Amends daf57e29de918b7b4be7bb0d469db0c51d41bb07 that recurses into inline components when checking for required properties that were not set. We should only check inline components that are base types of the scope, and ignore all inline components in children of the scope. Fixes: QTBUG-136008 Pick-to: 6.8 6.9 Change-Id: I8c687ce97b3f2eac699e2fd535193197b5239ada Reviewed-by: Olivier De Cannière <[email protected]>
* qmllint: warn about unreachable codeSami Shalayel9 days5-8/+79
| | | | | | | | | | | | | | | | | | | | The compiler is very polite and does not tell the user about its useless code. Codegen::statementList(StatementList *ast) silently discards unreachable statements during byte code generation. Warn the user that their code is unreachable. Don't warn about function definitions because these ones are "hoisted" up, which means that their definition is supposed to be pushed up, so that they can be used even if they are behind a "return" or "throw" statement. Don't use the qqmljsbasicblock analysis for that, it reports too many "false positives" where the compiler generates dead code that can't be fixed by the user. Task-number: QTBUG-129307 Change-Id: Ia26e8af1adf4e63b26dcaa7fb10be73b7eb084d7 Reviewed-by: Olivier De Cannière <[email protected]>
* Doc: improve QQmlComponent creation docsMitch Curtis9 days1-2/+7
| | | | | | | | | | - State ownership of returned object for createWithInitialProperties. - Add missing stuff about contexts. - Correct another sentence that referred to "m_engine". Pick-to: 5.15 6.5 6.8 6.9 Change-Id: I1f6e743b0999236844f2666ca638efe75f3f8f0c Reviewed-by: Olivier De Cannière <[email protected]>
* QQuickTest: add and use active focus macrosMitch Curtis10 days5-0/+77
| | | | | | | | | | | | | Also add support for popups (when controlstestutils_p.h is included). [ChangeLog][Qt Quick Test] Added QVERIFY_ACTIVE_FOCUS and QTRY_VERIFY_ACTIVE_FOCUS macros that can be used to get detailed failure messages for when QQuickItem::hasActiveFocus should be true but isn't. Task-number: QTBUG-133858 Change-Id: I30c67a84ccc16e3969bac5661648d0062bc3d62c Reviewed-by: Mitch Curtis <[email protected]>
* qmllint: Implement WarnFunctionUsedBeforeDeclarationSami Shalayel10 days8-3/+37
| | | | | | | | | | | | | | | | | | | | | Warn about functions used before their declaration. Its not technically an error like the "var used before declaration" because functions are "hoisted up" and therefore available even before their declaration, so create a new warning category for it instead of reusing the "var used before declaration" category. Disable the warning by default: Qt Creator used to have it as default, while other tools like eslint don't. For the same reason, don't warn about functions used before declaration during codegen, and add a method to warn about it in CodeGenWarningInterface. The code for "var used before declaration" can be reused by function declarations by adding a sourcelocation for function declarations in the "addLocalVar"-call, so make sure to differentiate between functions and vars by adding an extra member to Context::ResolvedName. Task-number: QTBUG-129307 Change-Id: I83a4f8cd00c120db23a0cec3365a00ed44de2836 Reviewed-by: Olivier De Cannière <[email protected]>
* Respect target DPR when drawing text objects in QQuickTextNodeEngineTor Arne Vestbø10 days6-7/+27
| | | | | | | | | | | | | | Instead of passing the DPR through as function arguments to each addFoo function we set the DPR on the QSGInternalTextNode and QQuickTextNodeEngine. We could have solved this by pulling the DPR from the QSGRootNode's renderer, but there might be more than one of them, and we're missing a setDevicePixelRatio in QSGAbstractRenderer (it's only exposed one level above, in QSGRenderer). Pick-to: 6.9 Fixes: QTBUG-127913 Change-Id: I48081d441259f0713cdc5f784eede6777b5fb601 Reviewed-by: Eskil Abrahamsen Blomfeldt <[email protected]>
* quick controls: fix cmake configure warningZhao Yuhang10 days1-2/+2
| | | | | | | | | | | | | | | | | | | | | | Line 68 is using the Qt::QuickControls2WindowsStyleImpl target, however, it is included after the qt_internal_add_qml_module() call, and this always cause warning [1] when CMake is configuring. [1] CMake Warning at qtbase/cmake/QtFindPackageHelpers.cmake:561 (message): Could not find target Qt6::QuickControls2WindowsStyleImpl to query its package name. Defaulting to package name Qt6QuickControls2WindowsStyleImpl. Consider re-arranging the project structure to ensure the target exists by this point. Call Stack (most recent call first): qtbase/cmake/QtFindPackageHelpers.cmake:620 (qt_internal_get_package_name_of_target) qtbase/cmake/QtTargetHelpers.cmake:286 (qt_internal_register_target_dependencies) qtbase/cmake/QtPluginHelpers.cmake:290 (qt_internal_extend_target) qtdeclarative/src/qml/Qt6QmlBuildInternals.cmake:224 (qt_internal_add_plugin) qtdeclarative/src/quickcontrols/windows/CMakeLists.txt:39 (qt_internal_add_qml_module) Change-Id: I26a430bad89aee96ecb0f0b4610a16b88704121b Reviewed-by: Mitch Curtis <[email protected]> Reviewed-by: Alexey Edelev <[email protected]>
* Use QStyleHints::colorScheme() instead of qt_mac_applicationIsInDarkMode()Tor Arne Vestbø11 days1-7/+8
| | | | | | | | There's no reason to use the helper function in QtCore, now that we have the scheme available from the style hints. Change-Id: I70063b62f0c359d9c88cf2ba401e4354b6d546c4 Reviewed-by: Tor Arne Vestbø <[email protected]>
* QQuickVisualTestUtils: fix bug in forEachStepMitch Curtis11 days1-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The calculation for progress was wrong. With enough steps moving towards a position that's centered over an item, this wouldn't have been noticeable. However, with only a couple of steps, it will fail to reach its target. Before: i=0, progress=0 i=1, progress=0.333333 i=2, progress=0.666667 After: i=0, progress=0 i=1, progress=0.5 i=2, progress=1 forEachStep(1, func) is silly: then there is just one step, so we only call func(1.0) once, and avoid divide-by-zero. Task-number: QTBUG-105856 Task-number: QTBUG-136031 Pick-to: 6.5 6.8 6.9 Change-Id: Ia8e37e3810ab3e94a17bab6d40087e521f1abde0 Reviewed-by: Shawn Rutledge <[email protected]>
* Fix broken hover in ApplicationWindow's backgroundMitch Curtis11 days7-83/+129
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8fb643f6d63813a5a8df5e829e4ddeb357e0348d fixed ComboBox not being hoverable by setting QQuickApplicationWindowPrivate::control's hoverEnabled property to true. By doing so, it ensured that only that control and its parent chain could get hover events, breaking hover for e.g. background. The correct fix is to adapt QQuickControlPrivate::calcHoverEnabled to skip the property("hoverEnabled") == true check for QQuickApplicationWindowPrivate::control, resulting in it falling back to the global checks. - Remove code added in 8fb643f6d63813a5a8df5e829e4ddeb357e0348d. - Move QQuickApplicationWindowPrivate declaration into its own header so that code outside the .cpp file (qquickcontrol.cpp, in this case) can use it. - Document behavior of hover flags in void QQuickItem::setAcceptHoverEvents. - Move the check done in tst_QQuickControl::hoverEnabledDefault() into the new tst_QQuickApplicationWindow::hoverInBackground() since they're closely related. - Add initial starting position argument to PointLerper's constructor since it wasn't previously possible to set it. - Remove unused headers in qquickapplicationwindow.cpp. Fixes: QTBUG-133886 Fixes: QTBUG-136031 Pick-to: 6.9 Change-Id: Ic32f902be6433c1c9dc9f4610c5715ce1537e605 Reviewed-by: Shawn Rutledge <[email protected]>
* qmlls: make QQmlJSImportVisitor process updates to filesSami Shalayel11 days1-0/+10
| | | | | | | | | | | | | | | | | | | Qmlls makes QQmlJSImportVisitor re-create a QQmlJSScope when a file gets updated. It turns out that QQmlJSImportVisitor only works correctly when used on an empty scopes, methods like rootScopeIsValid() don't work correctly if the scope is not empty. Therefore, reset the scopes before making QQmlJSImportVisitor run on them. Make sure that the internalName and the moduleName are still set. This fixes a bug where qmlls can't autocomplete an "in-memory" enum because the import visitor does not set the new enum values in the root element correctly on an non-empty scope. Pick-to: 6.8 6.9 Fixes: QTCREATORBUG-32634 Change-Id: If6d620f350215074f87b53bb153363f2dec06145 Reviewed-by: Fabian Kosmale <[email protected]>
* qmlls: add --version command line parameterSami Shalayel11 days1-2/+9
| | | | | | | | | | Add a command line parameter to print the qmlls version, required by qmlls clients to check the version of downloaded qmlls binaries. Fixes: QTBUG-132692 Change-Id: I7903f6859b6da2f3849a899e46fe4c5ce1cf4c42 Reviewed-by: Ulf Hermann <[email protected]> Reviewed-by: Fabian Kosmale <[email protected]>
* Update Mac style when platform theme's colorScheme changesTor Arne Vestbø12 days4-13/+21
| | | | | | | | | | | Instead of manually observing the effectiveAppearance in the Mac style we now propagate the colorScheme change signal, which lets us update the style in lock step with the theme changes in QtGui. Pick-to: 6.9 Change-Id: I459d47f722a26323f3b3a1f0e8b803b0058d0e7a Reviewed-by: Doris Verria <[email protected]> Reviewed-by: Oliver Eftevaag <[email protected]>
* Use platform theme's palette in macOS styleTor Arne Vestbø12 days1-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unlike most other styles the macOS style didn't initialize QQuickTheme with a style specific palette (either directly or via a custom theme class). Instead, we would indirectly pick up the platform theme palette when QQuickStylePlugin::createTheme called QQuickStylePrivate::readPalette to read palette settings, as we then default-constructed a QPalette, which picks up its colors from QGuiApplicationPrivate::app_pal, which in turn is based on platform theme palette, via QGuiApp's basePalette. However QQuickStylePlugin::createTheme only initialized the System palette of QQuickTheme, which meant that we failed to use any role specific palettes that the platform theme provided. In addition, because we only initialized the palette once, when creating the theme, we failed to pick up any changes to the platform theme's palette. To fix this we simply tell the QQuickTheme to prefer the platform theme for its palette, which means any query to the theme will go through the platform theme. This also means we don't need to hook into QtQuickControls2StylePlugin::updateTheme() to re-initialize the palette. Technically we do have the same problem with the theme's fonts, but for that we don't have a way to instruct the theme to use the platform theme. Pick-to: 6.9 6.8 6.5 Change-Id: I56eb278a80b184397114282839e958d61bd0028e Reviewed-by: Shawn Rutledge <[email protected]> Reviewed-by: Doris Verria <[email protected]>
* Doc: Avoid creating the qqmlintegration.h and qqml.h proxy pagesLuca Di Sera12 days2-48/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDoc allows positioning some amount of documentation under certain pages by use of the "\relates" command. The "\relates" command takes an argument that represents a name and tries to find where the documentation should be positioned in the output, based on that name. When the provided name doesn't refer to anything that QDoc is aware of in the current project, a "proxy page" will be created to hold the documentation. The "qqmlintegration.h" header is documented as an header and its generated page was intended to be used to collect the documentation for a series of elements that the header exports. Nonetheless, while the header page itself was created while, the elements that were intended to be collected where insted positioned under a similarly named proxy page. The issues stemmed from the "\headerfile" command using the "<qqmlintegration.h>" name to refer to the header and the relevant relates command using the "qqmlintegration.h" name to refer to the same, with the two names differing in the usage of the surrounding angle brackets. To avoid creating a proxy page, and instead correctly collecting the relevant documentation under the header documentation page, the name usage was synchronized by changing the relevant "\relates" command to refer to "<qqmlintegration.h>". A similar issue existes for the "qqml.h" headerfile and a similar solution was applied to solve the issue. Pick-to: 6.9 6.8 Fixes: QTBUG-136037 Change-Id: I3bf1aa97648c0a94acb7a0de5f5fbbaeb6a81c7b Reviewed-by: Sami Shalayel <[email protected]>
* Doc: Add Alt-text to images in QtQuickDialogsSafiyyah Moosa12 days5-6/+6
| | | | | | | | | | | | | | QDoc generates warnings for images that do not have alt-text associated with them. Alt-text is used to add context to images for users who use screen-readers. This patch applies alt-text to images in the QtQuickDialogs module that do not have any alt-text associated with them. Fixes: QTBUG-135123 Pick-to: 6.9 6.8 Change-Id: Iff2fd3350d72e3bc986caefe2ca1977858890f05 Reviewed-by: Oliver Eftevaag <[email protected]>
* Include qpainterpath.h explicitlyJuha Vuolle12 days2-0/+8
| | | | | | | | | | | | | | QQuickStyleItemScrollViewCorner uses both QPainter and QPainterPath and relied on transitive includes for them. This causes a build error if some other features are disabled (transitive include no longer happens). In the header QPainter can be forward declared. But also add namespace macros so that namespace builds pass too. Pick-to: 6.9 6.8 Change-Id: Ibb7dd46d819aebce1b05779e694dbb4e837e879b Reviewed-by: Oliver Eftevaag <[email protected]>
* Internally document QQuickApplicationWindow's item hierarchyMitch Curtis2025-04-181-3/+15
| | | | | | | | | | | This changed after 83d90845527799c78366c2b89e9c14bc35e88695. It's not documented anywhere and is difficult to follow when going only by the code. Task-number: QTBUG-136031 Pick-to: 6.9 Change-Id: Ia9a12191bb19d8dd23d142a78dbe573a4d2e3007 Reviewed-by: Tor Arne Vestbø <[email protected]>
* Fix compilation when quicktemplates2_hover feature is disabledJuha Vuolle2025-04-171-0/+2
| | | | | | | Pick-to: 6.9 6.8 Fixes: QTBUG-135946 Change-Id: Ie22da6a87d3cb43601ae9df30cb99262a8f6b479 Reviewed-by: Oliver Eftevaag <[email protected]>