aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Doc: Remove mention of module version requirement6.4Paul Wicking2023-06-251-4/+2
| | | | | | | | Fixes: QTBUG-114715 Change-Id: I7b5821820ba582fb21eaa56e3cf102fc3d61be00 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 9c33258ff56f4028a62c13fda866452bdb9caf38) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* NinePatchImage: support the compressed texture imageJaehak Lee2023-05-166-8/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The compressed texture image is supported by qquickimage and the qquickninepatchimage is inherited by qquickimage. But the compressed texture is not shown when the source of qquickninepatchimage is set as compressed texture because the updatePaintNode of qquickninepatchimage only consider non-compressed texture. This patch is not intended to use the HW compressed image as an actual 9-patch image, but to display them using the super class qquickimage in the case of an HW compressed image other than a normal pixmap image. If the source is HW compressed textures such as ASTC, KTX, and PKM, we have to call updatePaintNode of QQuickImage before checking the validity of the pixmap image. (because nullptr is returned if pixmap image is not valid) The containers themselves (pkm, ktx) are universally supported but the compressed texture formats is up to the underlying 3D API implementation and may vary. So, if the format is not supported by RHI, we skip the test. Refer to QTBUG-113565 for a detailed discussion on texture formats. And when using the software backend, we also skip test cases. Fixes: QTBUG-113446 Change-Id: I2704f86e94b50b3c187eca359fdc1a69eb217811 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit ed69a9d4f3e889b05548e7cebe957afc3a3e577f)
* QQuickFlickable: avoid processing the same event twiceRichard Moe Gustavsen2023-05-113-0/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If Flickable has an exclusive grab (e.g if it's being dragged), and at the same time, a child has a passive grab (e.g a TapHandler inside a child of the content item), Flickable ends up getting the same pointer events twice. The reason this happens is because Flickable has a childMouseEventFilter. So the flickable will first get all the pointer events since it has an exclusive grab, just to see that the filter will receive the same events once more, as they next are delivered to the passive grabbers. The result is that Flickable will handle all pointer events (move, release etc) twice when it has en exclusive grab, which will even cause the flickable from stop flicking prematurely if the mouse release ends up outside the bounds of the flickable (because of a double call to handleReleaseEvent(), which will set stealMouse to false too early). To fix this, this patch will make sure that we don't handle any pointer events in the childMouseEventFilter if we already have an exclusive grab. After all, having an exclusive grab means that we're already getting the events the "normal" way, and shouldn't handle the same events once more. Fixes: QTBUG-104987 Change-Id: Iaed49cb860cf50ea38a70a6e546d9dcf25cce444 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> (cherry picked from commit 1bac9de1136c8d52650199f9defefae2f1d6a1a5)
* Material: Fix incorrect path in qt_attribution.jsonTopi Reinio2023-04-301-2/+2
| | | | | | | | | | | | | | | | qtattributionsscanner now uses a non-zero exit code when 'Files' points to non-existent file(s). Fix the documentation build failing with src/quickcontrols/material/qt_attribution.json: Path 'ElevationEffect.qml' does not exist Change-Id: I978811b06afce5496443afec1e21138bbc9249e9 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Kai Köhne <kai.koehne@qt.io> (cherry picked from commit c796092f638eec28382346669a9b05f9508c8301) Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Flickable: Send movement signal when flick startsSeokha Ko2023-04-292-1/+84
| | | | | | | | | | | | | | If there are multiple moves between touch down and release, but they are merged, or if there is only one move, flick occurs but no movement signal is generated. So, send movementStarted if the view is moving in handleReleaseEvent Fixes: QTBUG-112924 Change-Id: I774799bac2a00296a72005dcfa9ade6683836d08 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit e6a363efe86dd6acbceade28d5eddbdca9c7b805) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Blacklist failing tests in tst_flickableinteropSeokha Ko2023-04-281-0/+3
| | | | | | | | | | | | | pinchHandlerOnFlickable fail with QTBUG-112924. Blacklist it for now. It will be handled in QTBUG-113226 Fixes: QTBUG-113226 Fixes: QTBUG-112924 Change-Id: I58c646f957fb6f397405dc477d00eee770602e80 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 407675b1913a5138c636a730cf3f6a65ffed87fb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Clarify unsupported topologies in QSSGGeometry docsLaszlo Agocs2023-04-191-10/+15
| | | | | | | | | | Should have added a note about this in Qt 6.0 already. Task-number: QTBUG-111012 Change-Id: I650abdb69d4f1dd6aff6d8e84970fc5e91384f02 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 284238bcc4d831748d6a8b50057caa5463716266) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Support building for Raspberry Pi 1 or ZeroDimitrios Apostolou2023-04-181-0/+1
| | | | | | | | | | | | | | | | | | | | | Cross-compiling (using Clang-13) for Raspberry Pi OS on Raspberry Pi 1 and Zero, requires adding "-target arm-linux-gnueabihf" to the compiler flags, which defines macro __ARM_ARCH_6KZ__ to detect for armv6. Fixes error: qtdeclarative/src/qml/../3rdparty/masm/wtf/Platform.h:312:6: error: "Not supported ARM architecture" More details: it turns out that the already checked macro __ARM_ARCH_6ZK__ is a typo with significance because older versions of GCC only had this. On the other hand __ARM_ARCH_6KZ__ (that this patch checks for) is the correct spelling, and it's the only one defined by Clang. Newer versions of GCC define both. Change-Id: I60532bfcaa62677f88ed2cff05d872a14c4c2111 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 35d6c73620761609e21b835211c67cff7829b44d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix word selection on touchTomi Korpipaa2023-04-181-1/+3
| | | | | | | | | | | | | | The cursor position update on mouseReleaseEvent broke touch-and-hold word selection on touch devices. Now only do it if we don't have an active selection. Fixes: QTBUG-111504 Fixes: QTBUG-110850 Change-Id: I5c63d8516d1eef3de10289c6d5c5b3d1d3e8623f Reviewed-by: Sami Varanka <sami.varanka@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit d6ddfa3d4ca3fbbaddc2acd7ebe3f8296fc68b68) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix stack layout index when loaded asynchronouslySanthosh Kumar2023-04-142-0/+37
| | | | | | | | | | | | | | | | Lazy loading of stack layout causes incorrect index value in the attached property for the child items. This is because, attachedProperties are created and updated for the child object, after being added to the stack layout. This patchset triggers childItemsChanged() to reset child objects of stack layout with right index value. Fixes: QTBUG-111902 Change-Id: Iad06d028d0f977189b5da1122904dc754060a609 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> (cherry picked from commit e397e5b43c9a9844e652adf5ef55365e0a40f57b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Ignore tap events for table view when interactive is disabledSanthosh Kumar2023-04-124-1/+100
| | | | | | | | | | | | | | | | | | TableView uses QQuickTapHandler internally to handle tap events. This handler accepts tap events considering pointerNavigationEnabled property of table view. TableView accepts mouse events if either 'interactive' or 'pointerNavigationEnabled' property is set as true, otherwise, it has to pass mouse or touch events to the below item. This patch introduces QQuickTableViewTapHandler inherited from QQuickTapHandler that can explicitly check pointerNavigationEnabled property of QQuickTableView during wantsEventPoint to either accept or ignore tap events. Fixes: QTBUG-108596 Change-Id: I330ae319706b6dbadc3a7319f62d636708aab995 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 79d61b3ab7fcc75454b81d5e78d4f404a9c4bd6c)
* Add copyright header to OpacityMask shader codeMatthias Rauter2023-04-041-0/+3
| | | | | | Change-Id: I465f166855955b027b0ce4ba3d09f9fcf994bc1f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 66b63ddaa213d423a9e1b5edbc3c61a959dae572)
* Doc: Flatten header structure for 'Import Statements'Kai Köhne2023-03-291-9/+7
| | | | | | | | | | | | Remove the top-level 'Import Types' \section2, which is redundant, as there's no second section. This makes sure that the structure of the page is better represented in the side-toc (online version), as it only lists headers of level 1 and 2. Change-Id: I8a214db6745c9d3054e1aa4277b55b911b605218 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> (cherry picked from commit 2f56e243b0ae49afb2ff1653f7ad0e2e047f322c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix destroying glyph cache textures with hidden text itemsLaszlo Agocs2023-03-235-40/+24
| | | | | | | | | | | | | | | | | | | Move the management of the to-be-released textures up to the rendercontext, so that the glyph cache objects do not need to care about this. Issuing a delete(Later) on the QRhiTexture in the glyph cache is too early if there is no visible text item in the scene that's going to commit the resource updates collected on the rendercontext's QRhiResourceUpdateBatch. Instead, it is logical to move also the list of pending-release textures to the rendercontext, since it already has the update batch object. Fixes: QTBUG-111995 Change-Id: Ic4309166f265950a7061ae510567ce677c4943df Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit e9c0b15060e0b70f70857d02029d6ebed95c0abf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: Fix native texture interface header nameLaszlo Agocs2023-03-201-0/+4
| | | | | | | | Fixes: QTBUG-95807 Change-Id: I0676fdb9bd7e8312d736bf0f4eb6775415d86296 Reviewed-by: Christian Strømme <christian.stromme@qt.io> (cherry picked from commit 3bc05bf7f422fccd8c29bd1eb1376c37264d31ee) Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Doc: Fix example code for QQmlApplicationEngine::objectCreationFailedAndreas Eliasson2023-03-181-1/+1
| | | | | | | | | | | The example should use &engine, not &app. Fixes: QTBUG-111881 Change-Id: I434fc602a9f945f3e18b5289f548864c2e9f27e5 Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 8ab0cd63b85ca9ba7b03ef89bd328bb38fd7c039) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QSGBatchRenderer: Fix batching with geometry without index bufferAndy Nichols2023-03-161-1/+1
| | | | | | | | | | | | | | | | | If geometry without an index buffer becomes a batch root, it should not be merged with other geometry since an index buffer is required for a merged batch. This should not be very disruptive, as this can only occur under very specific circumstances anyway (custom QSGGeometry used in a scene in a particular order). Fixes: QTBUG-97557 Change-Id: I6b3845fb988a4bfe2a6f989801741246b8f4fb37 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit f9e95c9d447f8b4223ce02e7ddf6c4ed0bfc5ec9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qmllocale: fix build when deprecated APIs are disabledYuhang Zhao2023-03-162-4/+10
| | | | | | | | | | | Guard the callers of the deprecated APIs with proper macros, otherwise they will case compilation errors when deprecated APIs from qtbase are disabled. Change-Id: Ie25e7424aaccf7175c839ecddbd326a7a5649709 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit e70706de7defb8d0e069020f109f0689215548bd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Software Adaptation: Don't leak QSGRenderContext resourcesAndy Nichols2023-03-151-0/+12
| | | | | | | | | | | | | Subclasses of QSGRenderContext are responsible for releasing the resource tracked by the render context on invalidate. I'm not sure the software context will ever have any other resources than QSGTextures, but it doesn't hurt to try and release everything anyway. Fixes: QTBUG-106968 Change-Id: I58902e1a33c0d3d101e39af3e5f0a18d6820ce98 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit f1b188df132c42da62197055725e5f7eebcc4249) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: Customize and update docs for PointHandlerShawn Rutledge2023-03-157-5/+275
| | | | | | | | | | | | | | | | | Many of the inherited docs were inappropriate or insufficiently specific to PointHandler. Now we have more snippets with more ideas for how it can be used. As a drive-by, fix a typo in the docs for PointerDeviceHandler::acceptedPointerTypes and add a link to the new PointerDevice page added in e283c05af745210d4a1f6c0aa9c33bf4da23a1e0 Fixes: QTBUG-74020 Fixes: QTBUG-106878 Change-Id: I028e1577ac5d4ef0b927c94259d6ab25b6028885 Reviewed-by: Doris Verria <doris.verria@qt.io> (cherry picked from commit 4c6d0b2bf09329dd8b036761f8f2924f54af3a07) Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Doc: Mention QDS and UI files in Best PracticesLeena Miettinen2023-03-131-3/+24
| | | | | | | | | | | Developers can easily break QDS .ui.qml files if they edit them as code. Link to the description of UI files in QDS Manual. Fixes: QTBUG-110354 Change-Id: Id5dc0e9fd420e0e4807a39d4f8d7d121e5137636 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> (cherry picked from commit 5fabb872e0041aaf134b33e140d8f8512c31455b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix multiple object creation in LoaderSanthosh Kumar2023-03-102-1/+22
| | | | | | | | | | | | | | | | | | | | QML Loader creates multiple object of same component during initial loading, if sourceComponent is assigned within state configuration and it evaluates to be true. This happens due to the effect of evaluating stage change (here in this case, setting loader source component) during component completion which internally creates component object and makes loader status be ready, even before Loader instantiates object. This patch adds a guard to check loader status and avoids object creation if status is already ready. Fixes: QTBUG-111559 Change-Id: I6c3456cd3bc35a717c139fbd3670c305304f480a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 492dc98a288763d3d026e9557ffadc018cede350) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: Improve documentation for Palette / ColorGroupKai Köhne2023-03-102-7/+7
| | | | | | | | | | | Clean up mixing of C++ and QML types in QML documentation. Also properly interlink ColorGroup, Palette documentation. Fixes: QTBUG-110776 Change-Id: I4f9990923589cfc164cc69fca6f6a733c0139670 Reviewed-by: Andreas Eliasson <andreas.eliasson@qt.io> (cherry picked from commit 7461408a7d9df209ec608a6053fe0da2f513a2cc) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Avoid crash updating source of shader-less effectEskil Abrahamsen Blomfeldt2023-03-072-1/+13
| | | | | | | | | | | | | | | | | | | | | | When a ShaderEffect did not have any shaders, we would register a "fake" bindPoint for the 'source' property with bindPoint 0. However, when actually linking the default shader program, the actual bindPoint is 1 (also matches what is in shadereffect.frag). When the property corresponding to the source updated, we would thus register an update for binding point 0. The initial value for binding point 1, from when the shader effect was loaded, would never be overwritten and when we iterated over the variables later and tried to cast do a qobject_cast on the (initial, now dangling) pointer stored for binding point 1, it would crash. Fixes: QTBUG-110111 Change-Id: I96c3e81908db8cce682b5447800fcb7a3fe5e0b9 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit f70844868a834fe988eb0716f6af4cbaacf89727) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix scoping of index in SwipeDelegate snippetDaniel Smith2023-03-031-2/+1
| | | | | | | Fixes: QTBUG-111566 Change-Id: Idf3d5fd140f2b69215844ff25b24bfc2abfc14b1 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 925c6b06b17e78f125cc5119efe702774298b154)
* doc: Add snippets and animations illustrating TapHandler.GesturePolicyShawn Rutledge2023-03-0310-36/+303
| | | | | | | | | | | | | | | | | | | | | | | People are constantly confused by GesturePolicy and its default value, so we really need a "glanceable" reference in the docs to show the differences between use cases. Also clarify the pitfalls with the default DragThreshold value. We switch from the \value tag to a 2-column \table because the \image would otherwise break the table, and also because it saves space and acts as a meaningful reminder to have the animation right under the enum value that is being documented. Task-number: QTBUG-70397 Task-number: QTBUG-73262 Task-number: QTBUG-100534 Task-number: QTBUG-107239 Task-number: QTBUG-111310 Change-Id: I1ff45f58a8a8edf55f4a8696d881aa9e0bedcfe3 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> (cherry picked from commit a6e196ce9cd327df53ef9b9db3020f7775ee1754) Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* doc: Add qml PointerDevice, pointingDeviceUniqueId and PointerEventShawn Rutledge2023-03-031-0/+134
| | | | | | | | | | | | | We need a link target for the GrabTransition enum argument in the PointerHandler::grabChanged QML signal doc, and a few other places. Fix warnings about failing to link in a couple of places. Fixes: QTBUG-102160 Task-number: QTBUG-104761 Change-Id: I92a544d363a6ff9e990c7d56c110bc5db1202bb3 Reviewed-by: Topi Reiniö <topi.reinio@qt.io> (cherry picked from commit e283c05af745210d4a1f6c0aa9c33bf4da23a1e0) Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* qt_add_qml_module: Error out if singleton is marked as internalFabian Kosmale2023-03-024-0/+34
| | | | | | | | | | | | | | | | | | | | A singleton cannot be marked as internal – the qmldir parser cannot even parse such a declaration, and the runtime would have no idea how to deal with such a type. The cmake code so far generated two entries – one line where the type is a singleton, and the other one where the type is declared as internal – with the end result that the type was not treated as a singleton, at least not by qmllint. Once the engine actually supports internal singletons, we would need to adjust the qmldir file to have singleton and internal in one line. As that's not supported so far, we now simply error out with a fatal warning. Task-number: QTBUG-111532 Change-Id: Idf0843c5548b15f79700a45b4197c256a6dda5cd Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 10a310c089e0d9731067abd6bb56771b51719043) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* ListView: Mention section's support for required propertiesFabian Kosmale2023-03-021-1/+2
| | | | | | | | | | | It was used in the code snippet, but we didn't explain so far why it was there. Change-Id: I53005d897f4a3732b7707c7cc0e88f2842ca7433 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io> (cherry picked from commit a703701394820fcfffb544a5bf7c464410cdc0a2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QtQml: Always throw when requesting an enum from an invalid singletonUlf Hermann2023-03-025-1/+68
| | | | | | | | | | | The interpreter does this and so should the enum lookup adapter for generated C++ code. Fixes: QTBUG-109816 Change-Id: I576480c3ca808743ddc0ceaf2f0bd8a1de776a41 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 8cbb30a650c2a2c8fb4b8cc39f347ff370850e74)
* doc: remove docs for PinchHandler.acceptedButtonsShawn Rutledge2023-03-021-0/+7
| | | | | | | | | Mouse buttons are irrelevant to PinchHandler, of course. Change-Id: Idfe65d3408ff3a33314979174a886f3e51f2eb7b Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 69fa61a11f4689246e8d5ce8edfbeae41dfa08b2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: remove docs for HoverHandler.dragThresholdShawn Rutledge2023-03-021-0/+7
| | | | | | | | | | Like acceptedButtons, HoverHandler.dragThreshold is irrelevant. Task-number: QTBUG-95395 Change-Id: I059e99449cff946b2caa945022b1f4bd4d2f845b Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 17e8e21511ce3f5a2cc764655f12355454ae0522) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Work around GCC 13 bogus warning about use-after-freeThiago Macieira2023-03-011-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By simply adding std::move() to the variables we've received by value and aren't using again, thereby also improving performance slightly. The message was: In static member function ‘static void QSharedPointer<T>::deref(Data*) [with T = const QQmlJSScope]’, inlined from ‘void QSharedPointer<T>::deref() [with T = const QQmlJSScope]’ at qsharedpointer_impl.h:440:12, inlined from ‘QSharedPointer<T>::~QSharedPointer() [with T = const QQmlJSScope]’ at qsharedpointer_impl.h:280:30, inlined from ‘QDeferredSharedPointer<const QQmlJSScope>::~QDeferredSharedPointer()’ at qdeferredpointer_p.h:45:7, inlined from ‘QString QmltcCodeGenerator::generate_typeCount(Predicate, const InlineComponentOrDocumentRootName&) const cc1plus: error: pointer may be used after ‘void operator delete(void*)’ [-Werror=use-after-free] In static member function ‘static void QtSharedPointer::ExternalRefCountData::operator delete(void*)’, inlined from ‘static void QSharedPointer<T>::deref(Data*) [with T = const QQmlJSScope]’ at qsharedpointer_impl.h:448:13, inlined from ‘static void QSharedPointer<T>::deref(Data*) [with T = const QQmlJSScope]’ at qsharedpointer_impl.h:441:17, inlined from ‘void QSharedPointer<T>::deref() [with T = const QQmlJSScope]’ at qsharedpointer_impl.h:440:12, inlined from ‘QSharedPointer<T>::~QSharedPointer() [with T = const QQmlJSScope]’ at qsharedpointer_impl.h:280:30, inlined from ‘QDeferredSharedPointer<T>::operator QDeferredSharedPointer<const T>() const [with T = QQmlJSScope]’ at qdeferredpointer_p.h:75:83, inlined from ‘QString QmltcCodeGenerator::generate_typeCount(Predicate, const InlineComponentOrDocumentRootName&) const qsharedpointer_impl.h:130:67: note: call to ‘void operator delete(void*)’ here For reference: static void deref(Data *dd) noexcept { if (!dd) return; if (!dd->strongref.deref()) { dd->destroy(); } if (!dd->weakref.deref()) delete dd; } Note how there's one extra frame in the deletion sequence (QDeferredSharedPointer<T>::operator QDeferredSharedPointer<const T>()) compared to the use. The common source is if (t == visitor->result()) { // t is this document's root The variable `t` is a QDeferredSharedPointer<const QQmlJSScope>, but the right side is only QDeferredSharedPointer<QQmlJSScope>, which is why the conversion operator was called. operator QDeferredSharedPointer<const T>() const { return { m_data, m_factory }; } The above is calling the constructor QDeferredSharedPointer(QSharedPointer<T> data, QSharedPointer<Factory> factory) for T = const QQmlJSScope, which means it's calling template <class X, IfCompatible<X> = true> QSharedPointer(const QSharedPointer<X> &other) noexcept : value(other.value), d(other.d) to construct the const version from m_data. This temporary is then moved into the QDeferredSharedPointer's argument because it's a prvalue by way of QSharedPointer's move constructor QSharedPointer(QSharedPointer &&other) noexcept : value(other.value), d(other.d) { other.d = nullptr; other.value = nullptr; } After the QDeferredSharedPointer's constructor returns, the temporary QSharedPointer is destroyed, which is where the compiler saw the call to operator delete. Except that it can't happen. The move constructor will have set the temporary's d pointer to null, so when deref() is called on that temporary, the check will match: if (!dd) return; Change-Id: I7f354474adce419ca6c2fffd17482074d5cdc9d5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io> (cherry picked from commit fa7c03f92ea922ac20617c9e8b6da83d8c6665b6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: fix grammar of PropertyAnimation section titleMitch Curtis2023-03-011-1/+1
| | | | | | | | | | | | Also use sentence case while we're at it. Amends 44dd79eedae174af3474f6317327a09af0de177a. Change-Id: I7cbc35bde6f398c4b774627a6f214e302e620efa Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io> (cherry picked from commit 2217d50cbf0eb9109aff556a02345ce03a6bed49) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Avoid setting INSTALL_RPATH if it was set beforeAlexey Edelev2023-02-281-1/+7
| | | | | | | | | | | | | | | | Avoid setting INSTALL_RPATH for Qml plugins if it was set before. This is mostly applicable for the Qml plugins built in Qt tree, that got INSTALL_RPATH from the qt_internal_add_plugin function, but also can be the case for the user Qml plugins created manually. Fixes: QTBUG-111381 Change-Id: Ia643259dc9027b3abbbf4ba93e3e56199903100d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 80ad280d2cff24fb01af434ff82d8e64f7d48c3e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QmlCompiler: Drop broken line comments in generated C++Ulf Hermann2023-02-285-39/+6
| | | | | | | | | | | | | | | | | | They didn't work because the ordering of instructions is not the same as the ordering of lines. They also weren't very helpful because a single line may result in multiple instructions and vice versa. On top of everything, they also introduced UB via the std::upper_bound call. Rather, just print the name of the function and the place in the file at the beginning of each C++ function. That is much more helpful since we can then just correlate it to the original QML code. For instruction-by-instruction mapping we have to consult the byte code trace anyway. Fixes: QTBUG-111340 Change-Id: I599ce384cfaf88a7347583a55976a3b98080435d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit ab9f4d2e2614d693c254a027a28824e83c7760f0)
* QmlCompiler: Fix coercion of undefined to float and doubleUlf Hermann2023-02-225-9/+50
| | | | | | | | | | | | | | | | It should result in NaN, not in 0. The typedArray() test exposes that ExecutionEngine::toVariant() also gets this wrong. Fix that, too. [ChangeLog][QtQml][Important Behavior Changes] Converting a JavaScript value to a double or float, for example by inserting it into a typed array, now assumes JavaScript type coercion semantics. In particular, converting a value that is not actually a number now results in NaN where it previously sometimes resulted in 0. Fixes: QTBUG-111179 Change-Id: If24444ae9014c8972761c565a6920f06699e485c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit b9834e0ee9f086add6dd8a42e5cb40f87f91756b)
* Update dependencies on '6.4' in qt/qtdeclarativeQt Submodule Update Bot2023-02-211-5/+5
| | | | | Change-Id: I930c36aa70e86e9234cbe088b60e2ed2b0fb6099 Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
* Simplify dragNDrop example and remove unneeded aliasThomas Zander2023-02-211-11/+1
| | | | | | | Change-Id: Ia0e5d5dc46a60b6d88864b3250f8cf91b03b897f Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 03b75a0baa0a77649ca3dca5f7ca17a46b96a2ac) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Use SequentialAnimation.loops in FlashAnimation in handlers exampleShawn Rutledge2023-02-211-7/+1
| | | | | | | | | It looks less tedious. Amends 8503f884bbdb50c4bebc8f8a9fce05275b0612b1 Change-Id: I85690e6a8ceac4ebec1c00bcbbf6a81108096e6c Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> (cherry picked from commit 40e2811843b3dc414d48f2221e2dee888b448b9b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: Rename QML type HandlerPoint to handlerPointShawn Rutledge2023-02-204-18/+18
| | | | | | | | | | | | | | | It's a Q_GADGET value type so it needs a lowercase name. Link eventPoint to handlerPoint to help reduce confusion. There's already a link in the other direction. Task-number: QTBUG-104761 Task-number: QTBUG-104570 Change-Id: I962d2d44690ec2f75190e07be7489eb3883d0657 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@qt.io> (cherry picked from commit 9e25d24b3730463a5c5c4ecb1a39ad0ca02892a8) Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* tst_QQuickPinchHandler: use QScopedPointer for input devicesShawn Rutledge2023-02-201-19/+20
| | | | | | | | | Avoid leaking. Same solution as 0879758f8ece9f3b2a799eb87de25813934ba02f Change-Id: I7e182730757f01c6f93292b594a10681c8fa2cf2 Reviewed-by: Doris Verria <doris.verria@qt.io> (cherry picked from commit 206855055e5c61c57cbe80eb9a6d7fa902da5710) Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* doc: Add the handlerPoint.device propertyShawn Rutledge2023-02-201-0/+7
| | | | | | | | | | | Amends a1c91787264f6f535b5cf094b57ee53058856df4 Task-number: QTBUG-76381 Change-Id: I7fdd15abbe15805815f5d2b2fc298501e1ab34d7 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@qt.io> (cherry picked from commit 6215a53f29a6204332799450c5f21fc151e69c78) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: How to combine custom singletons and qt_generate_foreign_qml_typesUlf Hermann2023-02-172-1/+12
| | | | | | | | | | | | First, make it more explicit that the QML engine really wants to own the singletons. Then explain how to combine qt_generate_foreign_qml_types with custom types you need to manually manage. Fixes: QTBUG-111169 Change-Id: I9e070c3482014691382c9c1279c918913bdf0307 Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com> (cherry picked from commit 4f33440a6ce19fcd2a98a77dced76f874d8625c3) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Drop useless extra QQmlContext from QQuickDialogButtonBoxPrivateUlf Hermann2023-02-171-3/+1
| | | | | | | | | | | The standard buttons won't do anything meaningful with the context anyway. Task-number: QTBUG-110934 Change-Id: Ic1affa98904f06a3172a271ba268595a9b53f1a2 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 6dcaaca3a759c9af9e9fcdd204bc1300eae812c0) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Use QStringDecoder::decoderForHtml()Lars Knoll2023-02-161-5/+2
| | | | | | | | | | | instead of QStringConverter::encodingForHtml(). The new method is more flexible and can also handle non unicode encodings if qtbase has been compiled with ICU support enabled. Change-Id: I50599c3afbcb48625d46b5590446bd2eec3890cd Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> (cherry picked from commit f3e981afb4d10c4e249c1738df9afc3d75328986) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Defining QML Types from C++: Add CMake documentationFabian Kosmale2023-02-161-20/+49
| | | | | | | | | | | | | So far, we only documented the qmake workflow. Adjust the docs to mention how the same can be achieved in CMake. As a drive-by, use a versionless import in the QML example code. Fixes: QTBUG-107902 Change-Id: I08ac1262d0d93572077ec86be3b02ce1524bf52a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 31262074fb3a64fd4b281b03da4032733accee4c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* tst_dialog: Fix testing for implicitWidth and wait for enter transitionsDoris Verria2023-02-161-0/+4
| | | | | | | | | | | | | | - The Dialog’s implicitWidth is set to the max between the header’s, footer’s, and background’s implicitWidth. So, when testing that the dialog’s implicitWidth is equal to that of the header, we should first make sure that the IW of the background and footer is smaller. - Wait for all enter transitions to finish before assuming that the dialog is opened. Change-Id: I803db9664ad46a83dbe6b47c53448530c30d6150 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 4a9be82a382b58155949ad4ec75e8ce4e12c47e6)
* QQmlMetaType: Clear property caches on qmlClearTypeRegistrationsUlf Hermann2023-02-152-0/+15
| | | | | | | | | | | | | Otherwise we may retain dangling pointers referencing invalid property caches. Some metaobjects are created on the heap. If the memory manager decides to re-use the heap space for new metaobjects, we can retrieve the invalid property caches. Task-number: QTBUG-110933 Change-Id: Ic00bb852151bcf58ba6ae798a6bf2cea686a9e10 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 6937f2e50dd60c58350a464eb83ba9d11c7146f9) Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
* Repair QQmlGadgetPtrWrapper's metaObjectUlf Hermann2023-02-157-65/+60
| | | | | | | | | | | | | | | | | | | | | | | | We need two metaobjects: One with the PropertyAccessInStaticMetaCall flagg and one without. The one without needs to be used with QQmlGadgetPtrWrapper, since the wrapper wants to intercept metacalls. The other one needs to be used when calling readOnGadget(). We can accommodate this by just retaining the original metaobject. As it's retrieved from a gadget type you should definitely be able to readOnGadget() with it. The dynamic meta object, on the other hand, can be lazily created when we actually metacall() through QQmlGadgetPtrWrapper. This relieves us of all the special casing around QQmlGadgetPtrWrapper and makes it safe to use for anyone. Fixes: QTBUG-108704 Fixes: QTBUG-111136 Fixes: QTBUG-111019 Change-Id: Icc01c81babaa9d1eca8d5ddfaf44d724a404db38 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit c4f0d07bda41ea3ea083d17c56e67a3b05a532bb) Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>