aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Dialogs: Use generic QtQuick.Controls import in base fallback dialogs6.11Morten Sørvig14 hours7-12/+7
| | | | | | | | | | | | | | | | | | Commit f2920663dcd3 ("Dialogs: Only import the QQC2 module used by the style") changed the base fallback dialog QML files to import QtQuick.Controls.Basic instead of QtQuick.Controls. This hardcodes the Basic style for the fallback, preventing the active style from being picked up at runtime. Only the style-specific files (+Fusion/, +Material/, etc.) should hardcode their style module. Revert the base fallback imports to use the generic QtQuick.Controls module so the active style is applied correctly. Fixes: QTBUG-133655 Pick-to: 6.8 Change-Id: Ia4b98e13858c411d0b78bdc16027093bf685ce2e Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> (cherry picked from commit 9ebd2fbd7ea08333257f8566c3994870451f0888) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* StyleKit: add qtlabsstylekit-overview.qdocRichard Moe Gustavsen14 hours8-2/+449
| | | | | | | | | | Add an overview page to the documentation that introduces the main features that are available in StyleKit. Change-Id: Ib0a3146dec94e59fd016b22ae562185404b0f36e Reviewed-by: Topi Reinio <topi.reinio@qt.io> (cherry picked from commit a412104b5f911573dbe50ca6f663ca471888c7a6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QQuickDrag: fix binding loop and re-entrancy for Automatic drag typeShawn Rutledge32 hours2-4/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When Drag.dragType is Automatic and Drag.active is bound to e.g. DragHandler.active, calling setActive(true) previously invoked startDrag() immediately, which in turn called QDrag::exec(). That exec() call enters a nested event loop, which is incompatible with being called from within a QML binding or JS expression: the QML engine is still mid-evaluation when exec() blocks, so when the pointer release arrives in the nested loop, deactivates the DragHandler, and causes the binding to re-trigger, the engine detects a binding loop. Fix this by deferring the startDrag() call via Qt::QueuedConnection so that the current JS frame unwinds completely before exec() runs from a clean event-loop context. An 'if (d->active)' guard in the deferred lambda handles the case where the drag is cancelled before the queued call fires. The executingNativeDrag flag is now set/cleared around exec() inside startDrag() itself (covering both the Automatic binding path and direct QML calls to Drag.startDrag()). It suppresses re-entrant setActive(false) calls that arrive via DragHandler deactivation while exec() is blocking, since startDrag() already handles all cleanup when exec() returns. Fixes: QTBUG-144006 Change-Id: I9bf6a4e6f3edea7e12e187b5756ab483c462696a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Konsta Alajärvi <konsta.alajarvi@qt.io> Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> (cherry picked from commit ae6e67e4cf23af6dbceab5e62881864b3a38c867) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Silence some static code checker complaints in qsg*Laszlo Agocs38 hours6-11/+12
| | | | | | | | | | | | | | | | | | | | | Pick-to: 6.8 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1543 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1544 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1549 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1741 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV1803 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3062 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3128 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3129 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3130 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3134 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3135 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3136 Axivion-Id: qt_Essentials_qtquick_dev_linux:SV3137 Change-Id: I4427a85cfa6050d43ccd74bd354af3301c802151 Reviewed-by: Christian Strømme <christian.stromme@qt.io> (cherry picked from commit c570680474bcd5f098e1fda4c05bb46885e5bc3a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QQuickTableView: respect QAIM::buddy() when editing cellsRichard Moe Gustavsen43 hours2-12/+63
| | | | | | | | | | | | | | | | | | | When edit() is called, consult QAbstractItemModel::buddy() first to resolve the target index. This allows the model to redirect editing to a sibling cell, matching the behavior of other Qt item views like QTreeView and QTableView. The included test verifies that we now respect the buddy. The checkEditAfterReorder() test also had to be modifed slightly. It assigned a QVariant(QSharedPointer(QAIM)) as model to TableView, and not the expected QVariant(QAIM). This strangly works in most cases, but will now cause a warning in canEdit() since the variant cannot be casted directly to a QAIM. Change-Id: I01092228019c91212c601f104f5f2fa3274e74e0 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit b2af284eac4aa0e936c42c4c62a9fe14c9ab6916) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* quickshapes: fix build with -qreal floatNick Shaforostov3 days3-7/+7
| | | | | | | | Change-Id: Iffa5644856c8a70e6cbc584f1c007ee3143d926c Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Alexey Zerkin <alexey.zerkin@qt.io> (cherry picked from commit a1fc37c7d43f232e1f153af4fd18a4d21d45cf1c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* iOS style: Explicitly link against Objective-C runtimeTor Arne Vestbø3 days1-0/+2
| | | | | | | | | | | | | We don't link against any frameworks that automatically bring in the Objective-C runtime, so we need to explicitly link it. This was only seen in shared library builds. Pick-to: 6.10 Change-Id: I06c7b31c7d158ac42ec685df55f2ee81c946ac23 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 5cb49d6ef7b27257a6c8e14f104d8225a6dc746d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* tst_qquickmenu: Test exact submenu position only if scale is 1.0Doris Verria4 days1-3/+3
| | | | | | | | | | | | | | | | When a menu has a scale applied, as is the case for the iOS style when the menu opens a submenu, the calculation of the exact position does not hold. This will need to be fixed in the popup positioner, or otherwise the style will have to find another workaround to achieve the same visual effect. Until that is fixed, skip the check if the menu sets a particular scale. Fixes: QTBUG-146038 Change-Id: If1c51ba1671f0662e613df2d78e507fa95b01864 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 93b307724637447b28e992ac162c87bbf1662900) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Really fix default alias property after alias sortingFabian Kosmale4 days3-6/+25
| | | | | | | | | | | | | | | | | The condition for fixing up the alias property index was wrong. Instead of checking the last list element, it was checking the first element twice. To avoid further mistakes and to make the logic easier to reason about, use std::find and std::distance to compute the index, and rely on the compiler to potentially optimize the loops. Amends 5b775e96c067995bf21cdf5a3641c50d5b7b272d Fixes: QTBUG-144701 Change-Id: I589378b6cbc8d68f550ff7ec67be9a420ebee4d5 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io> (cherry picked from commit 4f28b5469dd8e847abb54b6fa0dd75c6ae0e2874) Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QQuickOverlay: fix compilation with -no-feature-quick-shadereffectAurélien Brooke6 days1-0/+4
| | | | | | | | | | | | | | | | A hard dependency to QQuickShaderEffectSource was not protected by QT_CONFIG ifdefs, leading to compilation errors in -no-feature-quick- shadereffect builds. Add the missing ifdefs. Amends ffcf191bb6400a7c978dc12b7b2315c839ac59d0. Pick-to: 6.8 Change-Id: I513dc452d92a8e82824a0abd03b0c9b9c0d85e4e Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit d1e72d2ae922be1a9f71909373303b14b3ad6ec1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* ListView: preserve visible item on SnapOneItem resizeEvgen Pervenenka7 days3-2/+170
| | | | | | | | | | | | | | | | | | | | | | When delegates are sized relative to the view (e.g. height: ListView.view.height), resizing changes all delegate positions. The content position becomes stale, and fixup() calls snapItemAt() with that stale position, snapping to the wrong item. Record the currently snapped item in geometryChange() before layout runs. In fixup(), use the saved index to override the snapItemAt() result, so the correct item is picked with all existing header, highlight, bounds and animation logic preserved. The hint is reset in fixupPosition() after the fixup pass completes. StrictlyEnforceRange is excluded because its fixup() path already forces currentItem as the snap target. Fixes: QTBUG-112349 Fixes: QTBUG-44449 Change-Id: Ie766a4d8641bd2410116c468afc27c8bc25b9f16 Reviewed-by: Vladimir Belyavsky <belyavskyv@gmail.com> (cherry picked from commit 8a99e83213c674ac2946ded86b1aec70c5af63f8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: Add missing topics to the TOC treeAlexei Cazacov7 days2-1/+17
| | | | | | | | | | | This commit adds the Example and Reference Fallback Style topics to the TOC tree. They were missing, which made it difficult to find them when browsing the documentation. Change-Id: I44da4b2947c74d5c1e72c6b1fe65480a73bf8e4c Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 74c155f53f5b30081e48b4f8b49712b58240611a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: Add Android Fragments with Qt Quick for Android to the TOC treeAlexei Cazacov7 days1-0/+1
| | | | | | | | Change-Id: I6f674f31fa361c0dc6141c9e439147f846610219 Reviewed-by: Rami Potinkara <rami.potinkara@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit c39322626ec2ca05409d18c35a6e8af5e3f86b54) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Disable single-arg qHash() functions in qtdeclarativeMarc Mutz7 days1-0/+1
| | | | | | | | | | | This is a step in the direction of enabling strict mode 6.11 in this module. Task-number: QTBUG-145828 Change-Id: I76a24d0e8ced12eabcdefaf6a58d3b4a284d8d35 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 25e5aacb52729f6579435f37c172adca6668f38a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update dependencies on '6.11' in qt/qtdeclarativeQt Submodule Update Bot8 days1-5/+5
| | | | | Change-Id: Ibb178b9df0ef2ad3ca41d4ead16abbf04a226405 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* QQuickMacStyle: fix CocoaControl qHash() implementationMarc Mutz8 days2-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | It was still using Qt 5 uint instead of Qt 6 size_t. While at it, make it idiomatic, to wit: - make it a hidden friend (requires moving it into the header, which is good, as it prevents possible ODR violations) - noexcept - make it use qHashMulti() instead of rolling your own combiner It's ok to make this implementation inline, since this is a private type. Found while looking for qHash() overloads in platform-dependent code in order to enable strict mode 6.11 in this module. Amends the port of uint to size_t hash values (6.0). Pick-to: 6.8 Change-Id: I31faacfe562e1fee9059922cea125a14b79a6d8a Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> (cherry picked from commit 01148c612792bc7ea08190eae7765427fd87e193) Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Remove margins added by the helper to size hints of FlexBoxLayoutItemAlexey Zerkin9 days3-9/+77
| | | | | | | | | | | | | QQuickLayout::effectiveSizeHints_helper() adds margins to the size hints, which are not needed in FlexBoxLayoutItem case as the item is managed by the Yoga layout library. Fixes: QTBUG-142153 Pick-to: 6.10 Change-Id: Ibd243a375c0f459770688250606462485666a282 Reviewed-by: SanthoshKumar Selvaraj <santhosh.kumar.selvaraj@qt.io> (cherry picked from commit 8ea218874eb058f1294c56ed64f705a422aa6562) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QtQml: Avoid detaching iteration on Qt containersUlf Hermann9 days17-24/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Pick-to: 6.8 Task-number: QTBUG-146040 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV994 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV995 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV996 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV997 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV998 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV999 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1000 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1001 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1003 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1004 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1005 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1006 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1007 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1009 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1011 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1012 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1013 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1014 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1015 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1016 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV1019 Change-Id: Ie792b0bf76cc30cf70b948378de3752adc95c4f8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit c51e5c1b5cab2690db0493a9b54870bab37cfee6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QtQml: Don't unnecessarily detach the URL interceptorsUlf Hermann9 days1-1/+1
| | | | | | | | | | | | constLast() does the trick here. Pick-to: 6.8 Task-number: QTBUG-146040 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV942 Change-Id: I96d8e7bfb2561137f0b2c3be1f0a34a0a9d27f84 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit f52a4d29f03336f4994c1af7f3b4e6ce27210bea) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QtQml: Don't mix const and non-const iteratorsUlf Hermann9 days1-9/+8
| | | | | | | | | | | | We can do an early return here. Pick-to: 6.8 Task-number: QTBUG-146040 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV904 Change-Id: I2658d103d75f011384d2c60381ebd48b27277e87 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit 10931b34091eaef6923feeaf2703ae44836ab5bd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QtQml: Don't const-iterate when erase() is involvedUlf Hermann9 days2-14/+14
| | | | | | | | | | | | | | erase() will detach the container anyway and mixing const and non-const iterators is bad. Pick-to: 6.8 Task-nmber: QTBUG-146040 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV883 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV959 Change-Id: Ic474f4ed8a31c38d81affcccd96a924a1d140dbf Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit f33c383ee1b8de5434730efac441ee3dbb7202c6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QtQml: Don't use QMap with pointer keysUlf Hermann9 days1-3/+2
| | | | | | | | | | | | QHash is generally faster anyway. Pick-to: 6.8 Task-number: QTBUG-146040 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV853 Change-Id: If8a0e6a889a8cdb6b8ca83ff4ba7cbcf4e809a03 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 1c82429ed8cbff94921c1c64086da079ee3c64e5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QtQml: Clarify return type of lambdaUlf Hermann9 days1-1/+1
| | | | | | | | | | | | Some tools seem to think there is a QStringBuilder involved here. Pick-to: 6.8 Task-number: QTBUG-146040 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV811 Change-Id: I16f5e88c8250838216ba2eabb6a5f09053fd6cdd Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit a65fbb26770d2326b6381b1ff779e62dcf2ca32d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QtQml: Drop unused variableUlf Hermann9 days1-1/+0
| | | | | | | | | | Pick-to: 6.8 Task-number: QTBUG-146040 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV686 Change-Id: I6e349595fdc62a76f55356027b2cb86243e7f6fa Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit a7b327905a0e344139c63ba2c879cce3afa92bea) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Use QString multi-arg() where appropriateUlf Hermann9 days5-33/+50
| | | | | | | | | | | | | | | | | | | | | Pick-to: 6.8 Task-number: QTBUG-146040 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV503 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV504 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV505 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV632 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV633 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV634 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV772 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV817 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV818 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV821 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV822 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV943 Change-Id: I67e256c7b57098dc59334bdede32530ad8dfef87 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 835468e6785932e65ab9fd0e8587ea9d5d6515f3) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CRA review: Fix markerFriedemann Kleint9 days1-1/+1
| | | | | | | | | | | Amends 6c7f8e1cbcd71623661f451ee4329b42696ddad0 Pick-to: 6.8 Task-number: QTBUG-136194' Change-Id: Ia143659e0cb3c2921ccab1b7907b41049a59bc40 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 1f4cf7e89079a61fa9a1412e7701f6cee27f4a80) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix positionViewAtBeginning() when item 0 is outside the cache bufferMorten Sørvig9 days3-1/+152
| | | | | | | | | | | | | | | | | | | | | positionAt(0) can make inaccurate estimates in cases where the target element is outside the cache buffer, and the list contains section headers. However, since the beginning is a well-known position we can just scroll directly to that position instead. If we do, markExtentsDirty after clearing the visibleItems, to prevent an issue that could occur when setPosition(0) gets called with a stale extent. the extent must be recalculated, in order to be precise, and take into account if the first item has a section or not. Fixes: QTBUG-132694 Change-Id: I51e0634e685d56d1ab341c31f79a8e89cfa6f5c0 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> (cherry picked from commit 9111e967bf54e8fc6644727d334ebfdaf3b59a28) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Use const references when iteratingUlf Hermann9 days2-2/+2
| | | | | | | | | | | | | We don't want to copy the elements. Pick-to: 6.8 Task-number: QTBUG-146040 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV289 Axivion-Id: qt_Essentials_qtqml_dev_linux:SV696 Change-Id: Ia72bd0577b704e5310850218eeb6e8ab3d75df81 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit b053d7ab99129d6b77920d17ccf75eacf218bb29) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QQuickWidget: Fix incorrect behavior after starting out fully offscreenLaszlo Agocs9 days3-7/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The test application, mimicking Design Studio tools, has two QQuickWidgets with content loaded before show(). This triggers a very wrong usage of QRhi resources within QQuickWidget and the QRhi-based compositor in the backingstore, because one of the two QQuickWidgets seems to stick to the offscreen infrastructure it created (the dedicated QRhi created by the QQuickWidget itself when it is not shown, basically just to support grabbing). Then the backing texture of this QQuickWidget is used by the backingstore compositor with a different QRhi, the one for the window, which the QQW should also have used by that point. That cannot work. Remedy this by invalidating properly when starting to use the QRhi reported from QWidgetPrivate::rhi() and the offscreen infra is already initialized. No different from what happens when the widget is moved to a new top-level and then has to deal with a new QRhi from then on. In fact, the now-added logic matches exactly what QRhiWidget does in QRhiWidgetPrivate::ensureRhi(). It is not clear why this was never there in QQuickWidget. Pick-to: 6.8 Fixes: QTBUG-145383 Task-number: QTBUG-142207 Change-Id: I865af6459f3dce756858a5d5bf3c12e292286d9c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit bf78d7bdf4702b8a3abc5e020d75b087d8f47631) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Port away from contextless 3-arg QObject::connectAhmad Samir9 days2-1/+2
| | | | | | | | | | | Task-number: QTBUG-116296 Fixes: QTBUG-145828 Change-Id: Ibef2895a408e6a21659825e185885085ef6ca70c Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 2837fa1b31f735fb22c5eea84787e59195071a5d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Bump version to 6.11.2Jani Heikkinen10 days5-5/+5
| | | | | Change-Id: I9822c0e6119c4214ad4e9dafbc35dadcf84a7eab Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Update dependencies on '6.11' in qt/qtdeclarativeQt Submodule Update Bot10 days1-5/+5
| | | | | Change-Id: I5e886e6984df93034a5dc3b4a87099d5828e0f97 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* tst_qqmlmoduleplugin: port away from contextless 3-arg QObject::connectAhmad Samir10 days1-2/+2
| | | | | | | | | | | | Set the connection type to DirectConnection, as pointed out by Ulf in code review, the signal is emitted from the new thread, if the context object lives in the main thread the connection will be queued by default, which would make the test hang. Change-Id: If98f064652a2821d234a46f5fb1e97f0cd9384fe Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 696007ac73e13d80a7f0406ef39813359fa32725) Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Heap::SharedArrayBuffer: prepare for QTypedArrayData::allocate() return ↵Marc Mutz10 days1-2/+5
| | | | | | | | | | | | | | | | value change We're porting QTypedArrayData::allocate() away from std::pair, so wrap its return value in a small conversion lambda to transparently adapt to the change without causing a tight coupling between the QtCore and QtDeclarative changes. Task-number: QTBUG-146013 Pick-to: 6.8 Change-Id: I4db0232fcdcf3b0c8d1600b7be49a0afdc0d9795 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 43211cb3866f3b414566d1abe49acefa4191cfbd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QQuickDeliveryAgent: fix 3-arg connect()Marc Mutz10 days1-1/+1
| | | | | | | | | | | | | | | Use the source object as the context object, since the lambda is only interacting with the source object. Amends 68c103225f4e8bd6c1b18ef547108fd60f398c0f (6.2), which, however, just moved this code from another file. Pick-to: 6.8 Task-number: QTBUG-145828 Change-Id: I63e2025ae31913f121f3a65fc8e735c1e6bedbf3 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> (cherry picked from commit b0d1ed208d71ca50f32fe72aa8ca1f8fb80fbb23) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QQuickDesignerCustomObjectData: fix 3-arg connectMarc Mutz10 days1-3/+2
| | | | | | | | | | | | | | | | Use the source object as the context object, since `this` is not a QObject. As a drive-by, pass HandleDestroyedFunctor as an rvalue. Amends 537172dc9f76fa08e995042021f620cef7bd4929 (5.6). Pick-to: 6.8 Task-number: QTBUG-145828 Change-Id: I61bd6faed425097b95da74045109e731f7808165 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> (cherry picked from commit fa20148237a172f0f08eb031df7c5d2cfd41235e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QtQml: Add test for importing invalid ES moduleUlf Hermann10 days2-0/+8
| | | | | | | | | | Task-number: QTBUG-145967 Change-Id: I6389c5a436360e4d6a912189efc358f9ed4211c4 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> (cherry picked from commit e7715adb1cd7d28a1c457ad267f418fb8b4af77b) (cherry picked from commit cf19fa4270b62878b6a4c8d6e1752a6c44ca2486) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Windows: add QEXPECT_FAIL to tst_qquicktext spyWidth.sizeElias Toivola12 days2-5/+6
| | | | | | | | | | | | | | | tst_qquicktext::contentSize(spyWidth.size()) fails consistently on Windows. Instead of blacklisting it, add QEXPECT_FAIL to it. And remove the test blacklists for other Windows compilers, as they also look to be consistently failing and not flaky (QUIP 24). Task-number: QTBUG-88646 Task-number: QTQAINFRA-7559 Pick-to: 6.8 Change-Id: I4e1519767b1804cbe09954d1f25ca11c6c478ac4 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit c4179b8e121ef9caae8c11adddb8cad2dfc08662) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* TableView: avoid unnecessary pooling on row/column insertion and removalRichard Moe Gustavsen13 days11-127/+389
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a ViewportOnly rebuild is triggered in TableView by a row or column insertion or removal, delegate items that survive the operation (i.e. are not part of the removed range) should not be pooled and reused. Instead they should simply stay in place and have their context properties updated to reflect any shift in flat index, row or column. This avoids a full pool cycle, preserves any ongoing visual state such as animations, and suppresses unnecessary pooled/reused signals. To achieve this, released items are now staged in a temporary m_releasedItems cache rather than moved directly to the reuse pool. During the rebuild, resolveModelItem() first searches the cache for an item whose QPersistentModelIndex matches the requested cell. If found, the item is reclaimed directly. Once the rebuild is complete, commitReleasedItems() transfers any remaining cached items (those whose cells genuinely disappeared) to the reuse pool, like before. In order to achieve this, a new QPersistentModelIndex is stored on each delegate item. That way we know which cell it originally belonged to, even after changes to the model shifted its row and column position. A new auto-test, verifyThatOnlyRemovedRowsArePooled, is included that verifies the new expected behaviour. The changes in this patch also uncovered that the test model used throughout in the test file was implemented with too many assumptions, and therefore needed some TLC. Fixes: QTBUG-116650 Fixes: QTBUG-134741 Change-Id: I0b935320b6e7dca215df438f5981a154a8c10385 Reviewed-by: SanthoshKumar Selvaraj <santhosh.kumar.selvaraj@qt.io> (cherry picked from commit de4b7283c978ca384f6c8bf9f27387158804b601) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Run Axivion analysis only for security critical filesMatti Paaso14 days1-0/+18
| | | | | | | | | Task-number: QTQAINFRA-7720 Pick-to: 6.8 Change-Id: I475c277aa69f5cfc754206e555258d4f344d1764 Reviewed-by: Simo Fält <simo.falt@qt.io> (cherry picked from commit 254fbf03550d658ff3c712f43916ce9ac37da04c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* SearchField: Don't clear text when suggestion list becomes emptyDilek Akcay14 days1-5/+13
| | | | | | | | | | | | | | | | | | | When the suggestion model becomes empty, we used to call setCurrentItemAtIndex(-1), which goes through updateDisplayText() and ends up setting the field text to textAt(-1) (an empty string). This can overwrite the user’s input and can trigger binding loops when the model is filtered by SearchField.text. Fix this by resetting with setCurrentIndex(-1) (and clearing the highlight), and by returning early from updateDisplayText() when currentIndex < 0 so we only update the text when there’s an actual selection. Pick-to: 6.10 Fixes: QTBUG-144241 Change-Id: I41c052e2fc1123100c68b0a31645b6f505640cbb Reviewed-by: Jani Korteniemi <jani.korteniemi@qt.io> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> (cherry picked from commit 67d43908fbae0e3c766a8a99c5d515508a6a207e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QQuickShape: fix 3-arg connect()Marc Mutz2026-04-241-1/+1
| | | | | | | | | | | | | | Use `this` as the context object, because the lambda acts only on `this`, too. Amends 5af4c9b237a23ce12ca7c56eb6c9ecda17743228 (5.10). Pick-to: 6.8 Task-number: QTBUG-145828 Change-Id: I481cc6dbb7bd4b003c606a9499ccc5ec946d154b Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 92186e50c3548dd0e22b23bf28c9050e443a1502) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QQuickWidget: Fix tab fence focus cyclingOliver Eftevaag2026-04-243-2/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | When a QQuickPopup is open inside a QQuickWidget, pressing Tab on the last focusable item in the popup would move keyboard focus to a widget outside the QQuickWidget instead of cycling back to the first item in the popup. QQuickItem::nextPrevItemInTabFocusChain() has a parameter `warp` which is used by QQuickWidgets and embedded windows. To prevent wrapping between the first and last focusable items in the QML scene. This was working as intentional, with the exception that it would ignore cases when the current focused item is inside a tab fence. In such cases, we still want the item to wrap, we just want it to wrap inside the tab fence, which nextPrevItemInTabFocusChain() already takes into consideration, as long as we don't return early when wrap=false. Fix it by only returning early from wrap=false, when not inside a tab fence. Fixes: QTBUG-138101 Pick-to: 6.10 6.8 Change-Id: Iab0914161f0a80c3b0df0385cfb1fd0c0027ac7a Reviewed-by: Doris Verria <doris.verria@qt.io> (cherry picked from commit 77c3189bc00ebd302b5a211d039db49228dca105) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Pass arguments to QMarginsF in the correct orderOliver Eftevaag2026-04-242-1/+33
| | | | | | | | | | | | | | | | | QQuickPopupPrivate::windowInsets() returns a QMarginsF object. The constructor used is constexpr QMarginsF(qreal left, qreal top, qreal right, qreal bottom) noexcept; The values passed for top and right were swapped. Fix it in this patch. Add test that verifies that the margins are set in the correct order. Pick-to: 6.8 Change-Id: I25af57ac5ee6ddd056dda310392f7f9b2633f302 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit b41c6899490135268d27ccfb0cf552f1379387e8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update dependencies on '6.11' in qt/qtdeclarativeQt Submodule Update Bot2026-04-231-5/+5
| | | | | Change-Id: I1a263da950c5d3d2148bff5f010610a8156e17eb Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Revert "qmltyperegistrar: write filename of resolved type, not foreign type"Olivier De Cannière2026-04-235-53/+8
| | | | | | | | | | | | This reverts commit 439864b68e4dbc500b7eb941e3d0d48e538e8a78. Reason for revert: Breaks qmlsc (QTBUG-145981) Fixes: QTBUG-145981 Reopens: QTBUG-145611 Pick-to: dev Change-Id: I9eff05139cd4659ce822a34a04b4ffe66813d310 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* Revert "qmltyperegistrar: Update file and line only in TopLevel mode"Olivier De Cannière2026-04-233-28/+2
| | | | | | | | | | | | This reverts commit d7666a15ce36f3e5e5ab5722da43c82124cba8b7. Reason for revert: Breaks qmlsc (QTBUG-145981) Task-number: QTBUG-145981 Reopens: QTBUG-145611 Pick-to: dev Change-Id: I5bacc0b026fb79085e7e608de9b6634318880eb4 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QQuickStyleConstants: fix 3-arg connectMarc Mutz2026-04-231-1/+1
| | | | | | | | | | | | | | | | | | | | Use 'this' as the context argument, because that's what the lambda acts on, too. As a drive-by, fix the depreated [=] capture of *this by capturing [this] instead, which likely breaks C++20 builds. Therefore pick all the way. Amends 8a650ed550ea65a62ecce7f472838cc0ba53d5e4 (picked to 6.5). Pick-to: 6.8 6.5 Task-number: QTBUG-145829 Change-Id: I6ff932696a923b80796319729b93c97fb573dc9a Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 34d5f23ad5faa0218498066e770388cb0231ebc1) Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QQC2::ThemeMapKey: fix qHash() implementationMarc Mutz2026-04-231-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | As pointed out by a local QT_NO_SINGLE_ARGUMENT_QHASH_OVERLOAD build, the qHash() function was missing the seed argument. Rewrite the function to be idiomatic, to wit: - add the seed argument - make it a hidden friend - make it noexcept - use the idiomatic qHashMulti function instead of rolling your own combiner. We can change the hash calculation of this inline implementation because it's a private type. Also add the missing header, but include qhash.h instead of qhashfunctions.h, because there's also a QHash object that's used in-size. Amends 2275a0896c7b7e648641f4c6977a02006a581577 (6.2), but that seems to just have copied the code from somewhere else. Pick-to: 6.8 Task-number: QTBUG-145828 Change-Id: Ic9380a73be1f6cf720cc8eb637b7293339f16400 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 9a33eef512b8dd262a388ff579f67e5c638d3b61)
* QQuickText: fix inflated implicitWidth with maximumLineCountVladimir Belyavsky2026-04-232-2/+49
| | | | | | | | | | | | | | | | | | | | | | | When a Text element uses StyledText with <br> tags, maximumLineCount, wrapMode: Wrap, and elide: ElideRight, constraining its width could cause implicitWidth to grow far beyond the correct value. The root cause is twofold: 1. The loop that creates unwrapped lines for implicit width calculation used '<=' instead of '<', causing one extra line to be created and finalized beyond maximumLineCount paragraphs. 2. The multiline-elide code path creates a trailing line via createLine() to compute the elided text. That line is left unfinalized, so endLayout() finalizes it at QFIXED_MAX width, inflating maximumWidth(). Finalize it at zero width right after use. Fixes: QTBUG-142933 Change-Id: I64bab9512b8400ed63a4dda709259488a2b49a21 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 021778a0ad7d5758cee5f5592017e46b4e12171d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>