aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| * ListModel: Use PersistentValue to keep track of objectsUlf Hermann2023-01-314-133/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | This is the simplest way to prevent the garbage collector from destroying the object while at the same time allowing a manual destruction. Task-number: QTBUG-95895 Task-number: QTBUG-96167 Fixes: QTBUG-91390 Change-Id: Ic3f3146bc555991068ce3367971e050f745d235d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 718f3469f693eb179f1504a41b18280656a2325d)
| * Fix positioning of text decoration with some fontsVladimir Belyavsky2023-01-301-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Actually it just reverts 4db31cbd4e29cf5387f4332537f8ea9e0e9f62ae. When calculating a position for a decoration, we should just apply the decoration's offset to the line's baseline (line.y + line.ascent). The regression was introduced by 54b5287adf4f5b004fcf47840c7f2e1e561a90c1 in Qt 5.6, when we switched from prepending leading to the baseline of text and started appending it instead. Fixes: QTBUG-96700 Fixes: QTBUG-97594 Change-Id: I7f816b71859ffcb6b1c641f0c8b8e1d810bfc525 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit 5d082dc9b87cfce68676f2fc1666a54afd8399b1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * qmlformat: Add ECMAScript class reformatterSemih Yavuz2023-01-274-2/+145
| | | | | | | | | | | | | | | | | | | | | | | | qmlformat currently discards ES classes, and only reformats the element list inside that class. Implement a class declaration visitor which reformats ES classes in qml file. Fixes: QTBUG-110321 Change-Id: I9fa2561902dbcfde5e8fb041bc5dedcc56bb66cc Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit d962fe4abbf185abb1bc7464a00a93bc0e9d288b) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
| * Update dependencies on 'tqtc/lts-6.2' in qt/tqtc-qtdeclarativeQt Submodule Update Bot2023-01-261-1/+1
| | | | | | | | | | Change-Id: If1180dba6ac977225e932d8a18baf0b8fcda56eb Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
| * Doc: explain how to manage currentIndex without breaking bindingsMitch Curtis2023-01-263-0/+13
| | | | | | | | | | | | | | | | | | | | | | There is a section for this on Container's page, so let's link to it in more places. Task-number: QTBUG-109996 Change-Id: I8c96f0cb0998d65a2c2669b6358236a14e0352dc Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 70f1732ee6f9ad3c895061acd55cef3e21c5094f) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
| * Fix content position of table view controlSanthosh Kumar2023-01-252-15/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The estimated width in the table view has been used to layout and accordingly, edges of the table be loaded. This estimated width will be passed to flickable to adjust its parameters and width/position of scroll bar. This in turn change geometry of table view with respect to view port. In some scenarios, this estimated width during layout causes table view to be misaligned. This can be avoided by calculating and updating latest content width of the table view once after loading the edges of table. Fixes: QTBUG-108664 Change-Id: I47c3325bc9e51f75c87564a2ec1de4522e4a7e60 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 19b35008e2b2bebef10a9d52c8389920df1e1953) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
| * QQmlImport: Handle file selectors in qmldirFabian Kosmale2023-01-257-1/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | With file selectors, a type can exist in the same version under different paths. Detect this case, canonicalize the filename to the selector free version, and rely on the engine to resolve a URL to the correct file. Fixes: QTBUG-107797 Change-Id: I0f74fd37936abfa08547fb439bfa5264e6ca4787 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 9bfb27be010940ca735ca7dd67a092a03289e27c) Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
| * Fix type of QtQuick::BoundaryRule::easing in documentationMatthias Rauter2023-01-251-1/+1
| | | | | | | | | | | | Change-Id: I86ba0659fcd5a0c38b664738b9e0b3b28562dbf5 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit d09a0778e1c243be8931c3bec95c8970ace95f7b)
| * Document QQmlExtensionPluginUlf Hermann2023-01-241-4/+19
| | | | | | | | | | | | | | | | | | | | | | | | You should really not use it, but people should know about it. We cannot deprecate it because QtQuick Controls needs it. Fixes: QTBUG-95448 Change-Id: Idcc31d13a8eaa709944f2271389642b7fdbe84fe Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 05908e67a2a281b56bad503490e5c9121e9f285a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Fix Shape stroke color when changing alpha from 0 to non-0Laszlo Agocs2023-01-241-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The handling of the stroke color lacks the extra checks that are performed when setting the fill color. Switching from "transparent" to another color involves setting not just the color-dirty flag but also the geometry-dirty since alpha == 0 may skip operations such as triangulating, meaning the work has to be performed later when once again switching to an alpha > 0 color. Change-Id: Ibd6d762cfcb07ca8b9c852553c979bcb4ee9fa21 Fixes: QTBUG-109882 Reviewed-by: Christian Strømme <christian.stromme@qt.io> (cherry picked from commit 650e7d47f8e333761df86e60c290e885106b26c6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * qtest_quickcontrols_p.h: don't mark functions file-staticMarc Mutz2023-01-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's a header, and at least tst_styleimports.cpp doesn't use all of the functions, so throws a -Wunused-function warning on Clang 15 for runTests(): qtest_quickcontrols_p.h:36:12: warning: unused function 'runTests' [-Wunused-function] static int runTests(QObject *testObject, int argc, char *argv[]) ^ Fix by marking the functions as inline instead. Amends e310dadef779b28845b41fb091634cd001cda9de. Change-Id: Id6cee7bdc2fe93a5e034d7ed445dc5f2c5d35360 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit e34142e6cda177b601d8e5daba00a2ab84828db1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Test262Runner: fix -Wunused-but-set-variableMarc Mutz2023-01-231-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'int line' variable is shadowed a few lines below by the 'QByteArray line' one, even in the initial commit, so it can never have been used, except for the increment in the first line of the loop's bodies. Remove the variable, fix the warning. Found by Clang 15: test262runner.cpp:380:9: warning: variable 'line' set but not used [-Wunused-but-set-variable] int line = 0; ^ Amends d9c4a527241e0ef3a30e990c518197b0ba345b50. Change-Id: I2139aa4552d1ff2ddbb5737e2a1b26650d6519e7 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 9d04888c9cb8a89f17279da6ed9b9f65a49a94b0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Update dependencies on 'tqtc/lts-6.2' in qt/tqtc-qtdeclarativeQt Submodule Update Bot2023-01-171-4/+4
| | | | | | | | | | Change-Id: I81a8de8042fdd200b8a7874d04abaef469cad8f0 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
| * Doc: Properly document the remaining matrix4x4 methodsUlf Hermann2023-01-171-19/+32
| | | | | | | | | | | | | | | | | | | | The documentation format for QML methods is peculiar, but this should do for now. Fixes: QTBUG-90480 Change-Id: I0fdbb7f4a704990de1356010c8b7d44764b7e41a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 4b7566ade282694c1903a10867a1612cb04630dd)
| * Fix some qsizetype vs. quint32 problemsUlf Hermann2023-01-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | On 32bit platforms you cannot losslessly convert quint32 to qsizetype. However, in the places we are facing here, we are only interested in signed 32bit numbers anyway. Change-Id: I93a07c2847bd5bfae426dccbb6c0e33c5758442d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 4e1fe071ff05b92ed12fdf59a2185e1254b411cf) Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * Fix build with -no-feature-networkTasuku Suzuki2023-01-171-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | latest QuickTestUtils needs Qt::Network (QTBUG-107472) Disable to build it and another module depending on QuickTestUtils unless network is available. Change-Id: Ib522efa68d9ca4669afaf1fc8bbb18b079995ac1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit b539b1f26bbd84927ea14837958d11b8d89491a4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Ignore DPR for image providers if the requested size is not setPeter Varga2023-01-161-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the requested size is not set, the QQuickImageBasePrivate::sourcesize is -1. Multiplying it with devicePixelRatio is useless because it will be still an invalid size and it will be ignored. Nonetheless, QQuickImageBase::pixmapChange() will still divide the size with devicePixelRatio resulting smaller images. The issue is reproducible with the tst_qquickimageprovider auto test if ran with QT_SCALE_FACTOR=2 set. Fixes: QTBUG-109854 Change-Id: I9fea39c34144e5eae7e421bccc8dc65388dd5b32 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> (cherry picked from commit 1609f8628d1469f723a762c60ccb5856637956dc) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Fix connection leak in header proxy modelSanthosh Kumar2023-01-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In header view, the header proxy model which acts as proxy for table model, connects headerDataChanged() signal to a slot with both sender and receiver as table model object. This connection happens each time header view instantiates or model in the header view need to be reset. In a case, where header view reinstantiated (released and loaded) and table model not released, the newly instantiated header proxy model creates a connection to the existing table model for headerDataChanged() signal and this creates a connection leak. This can be avoided by making header proxy model as receiver similar to other slots within the proxy model. Fixes: QTBUG-108610 Change-Id: I1b250f98310e16743f7fc2c4cc11cbfb3d9fff45 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 6b4939df5cd9c8f0ab37a020fb076de56787fa46) Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
| * Fix Animators in case of node recreateThomas Senyk2023-01-131-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Those node recreations happen when the RHI backend is recreated. One such case is GLX_NV_robustness_video_memory_purge In such cases QQuickTransformAnimatorJob::invalidate() will be called, however the node will never be re-set Change-Id: I3136c220f41781689f4a271caf0543a3b659447c Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit 0359381bc78fb69999d3c687d617858f9666c0aa) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * QQmlObjectCreator: Do not crash on read-only bindableUlf Hermann2023-01-065-8/+61
| | | | | | | | | | | | | | | | | | | | | | | | If the binding was not actually set (because the bindable is readonly) then it's dead after the pop_front. We cannot examine it anymore, and we don't have to. Fixes: QTBUG-109597 Change-Id: I3bf0ca501aa9ad45a64ad181b685ca6d9d325231 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 4dfcaa7ee8273914ea8cd9fd232064ce95cb15d1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * QQuickWidget: always accept touch events and grabbed event pointsVolker Hilsheimer2023-01-044-2/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A QQuickWidget contains a Quick UI, which can be expected to handle touch events, and it handles touch events by forwarding them to the QQuickWindow. So set the AcceptTouchEvents attribute and let the Qt Quick delivery machinery deal with the touch-mouse synthesis within the scene. Also, Qt Quick's event delivery might return event points as ignored after setting the exclusive grabber. Qt Widgets touch event delivery logic doesn't care about exclusive grabbers, and relies on the event points being accepted to make the widget that received the TouchBegin an implicit grabber. QQuickWidget needs to translate those states back, so accept all points that come back with a grabber. Add a test that verifies that a button in a popup gets all events, and that those events are translated correctly - without the fix, the "clicked" test fails, as the release is delivered, but with coordinates outside of the button. Also test that we can have two QQuickWidgets where each gets one touch point. Fixes: QTBUG-101736 Change-Id: I3a2bf05fd297ae4d72b6e236ecd8e5ddac37ce06 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit dc8f44b14501ecd4acc196f5138aeff3f7502d0a) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
| * Test MouseArea in QQuickWidgetShawn Rutledge2023-01-042-0/+32
| | | | | | | | | | | | | | Task-number: QTBUG-101736 Change-Id: Iecbe6b4da75851cb94c4c2bae41bb0cb50f0ed30 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 26cd43f027ce6d5559a0f647155a0112569ce94a)
| * Examples: Update custom QSGMaterialShader correctlySze Howe Koh2023-01-041-0/+1
| | | | | | | | | | | | | | Change-Id: I469c4f813f006ca47f9660a0c9ccfa30bbe89dc6 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit f92a2a679886b09ff03e9d70d1bf1269f421347a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * QQmlPropertyCache: don't depend on locale for toupperMarc Mutz2023-01-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The C toupper/tolower functions are locale-dependent. Given the right locale (Türkiye, e.g.), toupper(i) is either - İ (LATIN CAPITAL LETTER I WITH DOT ABOVE; if representable) or - i (unchanged; if it isn't) Both results are wrong for the present use-case. Use the new QtMiscUtils::toAsciiUpper() function instead. Amends d481f2ff518df1e44103d1850e7d52bd69260c34. Task-number: QTBUG-109235 Change-Id: Ib66593fc7eff3edc0cc16291ca3eae8bdf0dd8ed Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 179200d2a3fa0df28fbf3790f8ff1ee47d0926c0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Update dependencies on 'tqtc/lts-6.2' in qt/tqtc-qtdeclarativeQt Submodule Update Bot2023-01-031-4/+4
| | | | | | | | | | Change-Id: Iab9599134113833cd9b63a7ae9d85e1f78577668 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
| * map example: don't restrict pinch-zoom to centerShawn Rutledge2023-01-031-2/+0
| | | | | | | | | | | | | | | | | | | | | | A big advantage of PinchHandler over PinchArea is the ability to zoom into a particular location in the target Item, so let's not fail to show that off. Change-Id: I0f22abff99bdc60bac27e72fd5f66be4796794df Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit e39b4572c272f8a0a7be048a24808cb028480e82) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Update dependencies on 'tqtc/lts-6.2' in qt/tqtc-qtdeclarativeQt Submodule Update Bot2022-12-281-4/+4
| | | | | | | | | | Change-Id: I3130254c32e47d2ca055c641cd0cef6f8705505d Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
| * Update dependencies on 'tqtc/lts-6.2' in qt/tqtc-qtdeclarativeQt Submodule Update Bot2022-12-231-4/+4
| | | | | | | | | | Change-Id: Ia6afd11314a879e264198c73685dcd8886ca296e Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
| * QML: Consider deep aliases when finding binding targetsUlf Hermann2022-12-224-16/+71
| | | | | | | | | | | | | | | | | | | | | | If we have a deep alias we need to bind to the inner object rather than the outer one. Fixes: QTBUG-109417 Change-Id: Iefe8641026cfbbf9199b2bb8d9fa2f5fba591f17 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit e9b7eaaf6e627c84cf77dc0ea76c9cb40d705711) Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
| * qquickpopuppositioner: fix popup mirroringSami Shalayel2022-12-214-2/+209
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed a bug where QQuickPopupPositioner::reposition() was confusing coordinates obtained by mapToSource() and mapToItem() during mirroring of the popup. This leads to popups at the wrong places, e.g. when a rotated combobox has not enough space to unroll its popup. Translate the coordinates using mapToItem instead of mapToSource after computing the alternative position of the popup (e.g. when it can not be unrolled correctly). Add a test to check if the combobox popup appears at the right places. Skip native styles as they might be pushing the popup around, same for Android as they might have too small screens (which involves more positioning logic then just the mirroring). Fixes: QTBUG-105148 Change-Id: I0033509a8824e3a71698f91ef832b94527d8e2c8 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> (cherry picked from commit 5c1d96b70a3de9a08a473ffcbcace8d6a7c5fa3b)
| * Fix missing glyphs when using NativeRenderingEskil Abrahamsen Blomfeldt2022-12-201-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we look up glyphs with subpixel positions in the glyph cache, we use the calculated subpixel position (from a set of predefined subpixel positions) as key. In some very rare cases, we could end up with different subpixel positions when looking up an on-screen position than when we entered it into the cache, due to numerical differences when doing the calculation. The reason for this was that when entering the glyph into the cache, we used the 16.6 fixed point representation, whereas when looking up, we used the unmodified float. In some cases, the converted fixed point approximation might snap to a different predefined subpixel position than the floating point equivalent. To avoid this, we reuse the converted fixed point positions when looking up the glyphs in the cache. [ChangeLog][Text] Fixed an issue where text using NativeRendering would sometimes be missing glyphs. Fixes: QTBUG-108713 Change-Id: Iecc264eb3d27e875c24257eaefcfb18a1a5fb5be Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit 4bad329985b75090c68a70cceee7edadc172d7ab) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Update dependencies on 'tqtc/lts-6.2' in qt/tqtc-qtdeclarativeQt Submodule Update Bot2022-12-201-4/+4
| | | | | | | | | | Change-Id: I862a5809107914aa5b3dc30fe8bebdcbc16903b8 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
| * Flickable: prevent fixup() from being called while draggingOliver Eftevaag2022-12-193-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A previous patch 5647527a8cde84b51fff66fc482f02435770b3dd causes a regression. The purpose of the patch, that caused this regression, was to update the pressPos variables, in cases where the contentItem's geometry was modified externally, while a user were dragging the contentItem around. The mistake that was made, was how width and height changes were handled. We had previously added logic in setContentWidth() and setContentHeight() that would call fixup() (with immediate fixupMode) to ensure that the contentItem would immediately be repositioned inside the flickable's viewport, if the contentItem was being dragged. It turns out that setContentWidth() and setContentHeight() are being called from QQuickItemViewPrivate::updateViewport(), which happens quite often, while dragging. This would make fixup() and dragging constantly interfere with each other, since they'd not always agree on a specific position for the contentItem. This patch reverts the changes made to setContentWidth() and setContentHeight(), since it turns out that those changes weren't necessary after all. QQuickFlickablePrivate::itemGeometryChanged() only calls viewportMoved() on x and y changes anyways. Done-with: Jan Arve Sæther <jan-arve.saether@qt.io> Done-with: Santhosh Kumar Selvaraj <santhosh.kumar.selvaraj@qt.io> Fixes: QTBUG-109140 Change-Id: I0bddf8685d3afc1ae04b2c092212d3c1bd742c3b Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit b307bf3c4f63c6e04874a972c747f18e18ddc199) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Drawer: don't get stuck in open state after touches outsideShawn Rutledge2022-12-194-10/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the Drawer does not cover the whole window, it's possible to tap outside the dimmer overlay. In that case, next time you tap on the dimmer, you hit this early return in handleRelease in which pressPoint.isNull(), so it was not setting touchId back to -1 and doing the other cleanup/reset tasks. This is a touch release, and touchId should always be eventually reset after a touch release, regardless of the code path. Now QQuickDrawerPrivate::handleRelease() has a QScopeGuard to ensure that cleanup is done regardless of early returns. That's still not enough; but when we receive TouchEnd in QPopupPriv::handleTouchEvent(), it means that _all_ touchpoints are released. So as a fallback for multi-touch cases, we now ensure that all releases are handled and stored state is reset, regardless of whether an individual point ID matches the stored touchId. Fixes: QTBUG-103811 Change-Id: Ia637bae00d8edb7f7f4c8fb4337b4c3d72fe4e60 Reviewed-by: Doris Verria <doris.verria@qt.io> (cherry picked from commit 730cdc5043a8823dfcdce7d3b2035875f8f987c1) Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Fix ListView.isCurrentItem for DelegateModel, take 2Ivan Solovev2022-12-174-0/+167
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The attached ListView.isCurrentItem property is updated when QQuickItemViewPrivate::updateCurrent() method is called. During the initialization it could be potentially called twice: * from the QQuickItemView::setCurrentIndex() method, but that does not happen, because the isComponentCompleted() condition is not fulfilled at that time. * from QQuickItemView::componentComplete() method, but that does not happen, because the d->isValid() condition is not fulfilled. The latter means that the model is not yet initialized. This patch attempts to fix it by adding the updateCurrent() call into layout() method. This method is called each time the component needs to be redrawn, so it creates the proper currentItem during the first call. Most of the subsequent calls will do nothing, because the currentItem will be non-null, and the currentIndex will not change. The unit-test is taken from the reverted commit d9f9d773e92940786f159897623618f3bf6bcf0f. Another unit-test is meant to check that there is no regression like in QTBUG-98315. Done-with: Joni Poikelin <joni.poikelin@qt.io> Fixes: QTBUG-86744 Change-Id: Iab86a9c0e22660126f152727e8bd393ac17f5d15 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 9124fcecb4e33d33bcd6c4d678d746bc673ea46c) Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
| * Implement touch event handling for SplitViewVolker Hilsheimer2022-12-162-28/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Amend 80166d58a18370bd5a2c6c61d2519011cfd65721, which broke touch event handling in SplitView. Implement handling of TouchBegin/Update/End events equivalently to the mouse event handling. As a drive-by, rename the logging category from 'mouse' to 'pointer', and refactor the if/else sequence to a switch statement, reducing duplication of code that's common for all event types. Remove expectFail from the test that now passes. Fixes: QTBUG-105312 Change-Id: I156f55fa40b2afaaa115e59940d26187121fc16a Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 6de2397da24e8068282c2d2bda5d1637ac033bc6) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
| * Add test for touch events with SplitViewMitch Curtis2022-12-161-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | This broke in 80166d58a18370bd5a2c6c61d2519011cfd65721, so to ensure that doesn't happen again, add a test that is expected to fail until the issue is fixed. Task-number: QTBUG-105312 Change-Id: I70462304b5bf74c58420632a7e512be8d7cbb817 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit b31d4dc39e1203051de2911280d0d918ae020a9f)
| * Don't override exclusive touch grab of filtered itemVolker Hilsheimer2022-12-161-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | A parent that filters mouse/touch events for a child might make the child the exclusive grabber of the touch point when filtering, and the child might have the keepTouchGrab property set. In that case, don't override the exclusive grabber with the filtering parent. Task-number: QTBUG-105312 Change-Id: Ic04513987d5ecb2cd0b12939b7d66091e85b35ee Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit f15f1d643ebf70fe9d3c67ea8405d819da595b21) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Documentation: Make note about QSGGeometry storing a reference to the ↵Friedemann Kleint2022-12-161-2/+4
| | | | | | | | | | | | | | | | | | | | attribute more prominent Task-number: PYSIDE-1345 Change-Id: I765e32d367c36add97a08c03df5e0ac30e92e56e Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit c6e294f7adc5d129e2e6a8ac9375ea537d983381) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * qv4qobjectwrapper: return false on failed argument conversionSami Shalayel2022-12-164-1/+129
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was possible to call c++-methods (either invokable or as slot) with wrong arguments, which caused a crash. The reason was that CallMethod(...) converted something to a QObject without checking if it was an actual QObject. The wrongly typed argument would end up reinterpret_cast'ed into another type for the call, which leads to segmentation fault when accessing the argument in the function. Added a test where an int tried to be reinterpret-cast'ed into a QFont. Fixes: QTBUG-108994 Change-Id: I8c45c9124411ad3fd100faed0b03390843f7d034 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit cda417cf03694256a84b4abe77de0f5f49ebdf32)
| * doc: Fix up setGraphicsApi() since tagLaszlo Agocs2022-12-151-1/+1
| | | | | | | | | | | | | | | | | | | | It's the [set]sceneGraphBackend() functions that are from 5.8, the new functions in Qt 6 are since 6.0. Change-Id: If36f42615d53bd964f05ba42846b9322d8f1a0e4 Reviewed-by: Christian Strømme <christian.stromme@qt.io> (cherry picked from commit 848f40f30e46322286d75923afd6a33f42dbfe46) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * QSKIP tst_qquickimageparticle::test_tabled when running on linuxHeikki Halmet2022-12-151-38/+42
| | | | | | | | | | | | | | | | | | | | | | tst_qquickimageparticle::test_tabled is crashing randomly whit Ubuntu 22.04 Task-number: QTBUG-107707 Change-Id: I43d00e0d66c867355d0dd52b001ee0c347bc0ce2 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 29e3458cfddc68e248371fa820a67173c0c7fa7d)
| * Update dependencies on 'tqtc/lts-6.2' in qt/tqtc-qtdeclarativeQt Submodule Update Bot2022-12-151-4/+4
| | | | | | | | | | Change-Id: Icb82ba585486d19afbb324e02ecf04658ba9c0fe Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
| * qmake: Fix generated *_qmlcache.cpp file pathsJoerg Bornemann2022-12-141-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...for source files that are outside of the source directory. Having QML files that are generated in the build directory led to *_qmlcache.cpp files with very long file names, hitting file system limitations on Windows. Apply the same fix that was done for generated qmlcache.qrc files in commit 5d7710a623ecde64316c42fd097db386ac28dd51. Task-number: QTBUG-108150 Change-Id: Icef9dbf40fc7ade54b584bcdc8799c4cc95ac76d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit e4feab199220ae022927d8471bd96779ea4bca48) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Doc: Fix typoAndreas Eliasson2022-12-131-2/+2
| | | | | | | | | | | | | | | | Fixes: QTBUG-107492 Change-Id: I3f5ad0421bbd0822c76c5e32e42616461cde31c3 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> (cherry picked from commit 39e584f31e60c3b4e7cc7a26d2a09ce36dad8eab) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Update dependencies on 'tqtc/lts-6.2' in qt/tqtc-qtdeclarativeQt Submodule Update Bot2022-12-111-4/+4
| | | | | | | | | | Change-Id: I0231f2f00db9a6f6593a9e33e7eb35501c648b0b Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
| * Bump version to 6.2.8Tarja Sundqvist2022-12-112-2/+2
| | | | | | | | | | Change-Id: Ia8761ba9c2894e1eb534c479d55e2dfd10ecc2b1 Reviewed-by: Tarja Sundqvist <tarja.sundqvist@qt.io>
| * QV4::Heap::SharedArrayBuffer: avoid std::aligned_storage (deprecated in C++23)Marc Mutz2022-12-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... by rolling our own. Qt 5.15 uses a pointer (additional indirection), not aligned_storage, so isn't affected. References: - https://github.com/cplusplus/papers/issues/197 - https://wg21.link/p1413 Manual conflict resolutions: - adapted to different member names and private/public access in the 6.2 class vis-a-vis the 6.4+ version. Task-number: QTBUG-99122 Change-Id: Ia116dc11336901a19fc227fb68ac266c1bfbbcb1 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 6e9a9ed121ce101d19e015de03b8f1d37fa84041) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
| * QQuickNinePatchImage: fix aliasing by respecting the smooth propertyMitch Curtis2022-12-092-1/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When scaling with fractional values, aliasing can occur. Use the same approach as BorderImage and respect the smooth property of NinePatchImage. This property comes from QQuickImageBase, which sets it to true by default. We change QQuickNinePatchImage's default value for it to false, but this can be overridden by setting QT_QUICK_CONTROLS_IMAGINE_SMOOTH to 1. As NinePatchImage is not public API, and users would have to set the smooth property on every image (where some items contain multiple NinePatchImages), it's better to have one place to set this for all controls. [ChangeLog][Controls] The Imagine style now supports smooth scaling for 9-patch images when the QT_QUICK_CONTROLS_IMAGINE_SMOOTH environment variable is set to 1. Fixes: QTBUG-107989 Change-Id: I250a041f87c0270d67af191168f7bcfbf6237925 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 649151bdcc4c2e747224d4405d3b6bb13525161d) Reviewed-by: Paul Wicking <paul.wicking@qt.io>
| * Stabilize rendering of Rectangle borders under fractional scalingEirik Aavitsland2022-12-081-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By default, border widths are rounded to integer values (in QSGBasicInternalRectangleNode::updateGeometry()), so one avoids artifacts where the rendered width can fluctuate with one pixel if the Rectangle coordinates are fractional. However, that rounding was done before the device pixel ratio scaling, so if the dpr was fractional, one would get a fractional rendered border width, and hence fluctuations. Fix by taking the dpr into account. The rounding is done in the Item, where the dpr is known, instead of the SG Node. Fixes: QTBUG-108831 Change-Id: I9a1d8180c72dd5e1b1eaa9f1c420eb9944f1e5a5 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 73a3b69f9ae6d49cc04ce9834ab6f3b88d11e35b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>