aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Fix for possible crash in QSGDefaultLayer::grab"6.1Laszlo Agocs2021-10-132-9/+0
| | | | | | | | | | | | | | | | | | | This reverts commit 1c5de027d0c31d1d6697bd0557128d92207763d8. The fix here is not correct. Calling a QSGRhiLayer function from the gui thread is very wrong and can cause a set of unexpected issues. The Address Sanitizer catches this by recognizing that the render thread is trying to do something with an object destroyed in the meantime on the main thread in the layer->setItem(null) call. The issue the original fix is trying to address needs to be addressed in some different form. Fixes: QTBUG-94975 Change-Id: I46f904026281201fc6d233ed7d3bdc7080934afe Reviewed-by: Christian Strømme <christian.stromme@qt.io> (cherry picked from commit a5f0361622eb08eab6c3474d5fc249d1962e3d1e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Check for null pointer in QQuickPointerHandler::approveGrabTransition()Shawn Rutledge2021-09-291-3/+6
| | | | | | | | | | | Found by static analysis: https://testresults.qt.io/codechecker/daily_diffs/qtdeclarative/dev/qtdeclarative-dev-20210604-1285b67a11/qquickpointerhandler.cpp_51058486.html#reportHash=9b76a76200c3a2eceb0e115776dda98b Amends b09ce7dcd8ecf24ef23da8197a64e3fced3fc894 Change-Id: I4c35f648be9513e5e237d9b8d4e502e40e9f8a76 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 63b1f379b710c510f00311e03641aa65e72aaf34) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Reduce QGlyphRun memory usage and speed up large Text instancesShawn Rutledge2021-09-292-28/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To render the plain text of _War and Peace_ took 6.4GB of memory before (Linux 64-bit debug developer build); and now it's 1.1GB initially. More optimization is possible: sizeof(TexturedPoint2D) = 16, and we store a 16-bit index, so 3158176 glyphs ought to take about 60MB (but takes 200MB in practice); but we also store QGlyphRuns, which are actually redundant after the SG is populated. We need them in case the text can be edited, restyled, re-wrapped etc. QSGDistanceFieldGlyphNode::updateGeometry() enforces a limit of 65532 vertices per node (0xFFFF is not allowed as an index value, because it's reserved to indicate primitive restart; and glyphs are quads). But it was making copies of the remaining QPointF positions and quint32 glyph indices and giving those recursively to the subnodes, so every subnode was storing all of those for itself and all of _its_ subnodes, even though it only needs max 16383 of them. Now, in the RootGlyphNode, m_glyphs stores the glyphs that node will render (as before); but in each subnode, we use QGlyphRun::setRawData() to populate m_glyphs with a range from the index and position arrays from the root node. setRawData() just sets the pointers to those arrays; so to avoid any chance of dangling pointers, we need to keep those vectors, which live in the GlyphInfo structs in m_glyphsInOtherTextures. That's the reason the glyphsInOtherTextures hash, which was temporary before, is now kept (although the dangling pointers somehow didn't cause any crash). In the first loop over indices in updateGeometry(), each SubGlyphNode will break out of the loop as soon as it has created enough TexturedPoint2D and index instances for itself, because it no longer needs to redo the rest of the loop over indices that was done in the RootGlyphNode; this speeds up the rendering of large text. Creation of subnodes is now iterative rather than recursive, which saves stack space, and also looks better in the QSG_RENDERER_DEBUG=dump output: you can see that each RootGlyphNode has one level of direct children (161 of them for _War and Peace_). In a future change, perhaps we could create those dynamically when the user flicks down to them, and reclaim memory from children that are no longer shown; but that would not be possible if they were all nested inside each other. Amends aeb1d48c9938241b1ffcf8e42e3864595e90b168 Task-number: QTBUG-60491 Task-number: QTBUG-90734 Change-Id: Iff981b9ba86acc01775fd72e3ce79ea9e33d9061 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit 75a9b09d93b9462b77347d1992371a189037bc62) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Flickable: don't react to any mouse button other than the leftShawn Rutledge2021-09-281-1/+1
| | | | | | | | | | | In case of mouse "chording", ignore all other buttons. Fixes: QTBUG-96909 Change-Id: Ib091b271390c5b4e3aafbbe24d2dc7b6f08db175 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit f91aa3b4d8ae7bfba65a8252099ded3b428f7acf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: Correct the type that WheelHandler's wheel signal emitsShawn Rutledge2021-09-061-1/+1
| | | | | | | | | | It's WheelEvent not PointerScrollEvent. Task-number: QTBUG-81302 Change-Id: Ie03fbf60492525301ee8d60a0c38c8a111251e0a Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit e2e7a1c5b81e4e7464134b4590aea799b0434d55) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update the QRhiTexture size in QSGPlainTextureLaszlo Agocs2021-09-051-1/+6
| | | | | | | | | | | | An autotest is added separately for dev only because the necessary infrastructure for sophisticated scenegraph tests only exists there due to some earlier commits that are in dev and not in 6.2. Fixes: QTBUG-96190 Change-Id: Ie2adee96864b60f982a83b9b2785a93d5401bd6a Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 4de27382f9b5f05b8d5821247ea7653b44264c03) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Canvas: Add a means to override the DPR used via an environment variableAndy Shaw2021-08-251-2/+9
| | | | | | | | | | | | | | | | | | | Overriding the DPR enables the system to not use as much memory and resources that a low-end device or mobile might have a limited amount of for rendering the Canvas item. In a situation where the user is aware of the consequences and impact of forcing the DPR to be different to the canvas window's DPR then this can be useful in those situations. By having the environment variable to override the DPR then it makes it possible for those needing this right away in all versions of Qt, so we add this now with a view to add API for this at a later date. Change-Id: Icafaa04a15678e2c7f24bc791026676f476a6ced Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit b0193908258f315a5736edcbc2a034d3194d42c9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qquicktextinput: Clear pre-edit text after input method resetJarkko Koivikko2021-08-232-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | The QPlatformInputContext::reset() function does not allow any further input method events to be called. Therefore, clearing the pre-edit text is the sole responsibility of the text input control. This change modifies the QQuickTextInputPrivate::resetInputMethod() function and calls QQuickTextInputPrivate::cancelPreedit() instead of QInputMethod::reset() directly. The cancelPreedit() function will send a QInputMethodEvent which clears the IM state (in addition of calling QInputMethod::reset() function). Also, rename the QQuickTextInputPrivate::resetInputMethod() function to cancelInput, since it does not call inputMethod()->reset() directly. Fixes: QTBUG-95461 Change-Id: I6ab3b9dbe71956af72656e2a25a05d79603b34ea Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Inho Lee <inho.lee@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> (cherry picked from commit b2103e33f490c96d0068d211c6f2d5b540ca407e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix regression in ListView/Flickable event deliveryJan Arve Sæther2021-08-201-1/+11
| | | | | | | | | | | | | | | | | | The regression was introduced with 2acb31641fc9c34d24ac29232cdfec The problem was that when we entered QQuickListViewPrivate::wantsPointerEvent(), the event was not localized to the QQuickFlickable when mouse filtering was done. Therefore, since the code assumed that the localPos was local to the Flickable, it always ended up assuming that the point was within the bounds of the header/footer. Fixes: QTBUG-89409 Change-Id: Ib595e61b7995241b58e3051da09139e1e1f13cba Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit b2e4f09bfa2c42af562f6741c0a0246a53028f0a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: Document matrix4x4 transformation functionsYuya Nishihara2021-08-171-0/+67
| | | | | | | | | | | These functions have been added at ded64d0368 "Make the qml/js matrix4x4 type more useful." Change-Id: Ia61eb5c7c058e2b94bb1b8b0e7bd56371feadca1 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit d3b99595aee699dc4f01fb3658e0b33ba313f9f2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: Mark KeyNavigation's properties as attachedIvan Tkachenko2021-08-161-7/+7
| | | | | | | | Fixes: QTBUG-95811 Change-Id: I3bedef190b839bf5436d0cdd07d2011c237c03f2 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit 88f38cbcb27566650109a97098a9cf2c19668fb0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: fix AnchorChanges typoJeremy Katz2021-08-131-1/+1
| | | | | | | Change-Id: I6e5cc9807ddc2ae6a40a864b3154fe93fcc32d69 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit a4a80e9a5c0452936241657c19ce871094a4f335) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Mark QQuickColorGroup as \internal in the documentationVolker Hilsheimer2021-08-121-0/+2
| | | | | | | | | | | This is an internal class that makes no sense without QQuickPalette, which is also an internal class (and already documented as such). Fixes: QTBUG-95591 Change-Id: I878d9bf9794530dfe57ba77db86c7ff9a9a02bd3 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 419734ddda88950ad3f09f7c630eb8771f9f0144) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: Add a TapHandler button snippetShawn Rutledge2021-08-062-0/+82
| | | | | | | | | | It was ironic that it's the most obvious use case of TapHandler but we didn't have some easy copy-and-paste code for making your own button. Change-Id: I680b6f828f0df82e2ab8b434a2e76aabb21fc2b9 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit 0fb1a49db192e7b0f0b0fe7ac441dead1608eb63) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: Improve the Input Handlers index pageShawn Rutledge2021-08-063-17/+133
| | | | | | | | | | | | | | - Document the exclusive/passive grab concepts better - Mention gesturePolicy's impact on grab behavior in the TapHandler docs too - More links - Add a couple of snippets illustrating simple use cases with handlers - Don't bother mentioning Qt.labs.handlers anymore Task-number: QTBUG-68110 Change-Id: I5e6f538c2bc8cafef679f535a5248b218b4a8068 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit aade6857d12b2c9cd5552d25f4d084a5fcd25f7d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Sync shadereffect materialType cleanup between renderloopsLaszlo Agocs2021-08-022-8/+8
| | | | | | | | | | | | | | | | | | | | Follow 05ec3315e2ae723cd32b1b49260f0d09ee1fa423 from 5.15. The windows render loop is gone in Qt 6, and there can only be one type of material type cache (no legacy OpenGL path). The same issue is present, however: the basic and threaded render loops behave differently when it comes to calling cleanupMaterialTypeCache(). Make the behavior identical and follow a uniform order (1. tear down the scene graph 2. then drop cached QSGMaterialTypes) Task-number: QTBUG-94844 Change-Id: I61f4962fe8ae1a359a22fbe72e40eb2525d81e03 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit aedb4853a509d63a599779fa5115083f84fad389) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix QQuickPaintedItem performance and memory usageLaszlo Agocs2021-07-301-7/+5
| | | | | | | | | | | | | | Keep the existing QSGPainterTexture (QSGPlainTexture). This is what Qt 5 would do as well. Otherwise we silently get lots of unnecessary releasing and creating graphics resources underneath. Fixes: QTBUG-95132 Change-Id: I88e839793fedd8f2c6d00cd76cd9a653731865f4 Reviewed-by: Jonas Karlsson <jonas.karlsson@qt.io> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> (cherry picked from commit 146f8cbf865e0061859dd9f1c7a477db91298052) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: add example snippets for containmentMaskMitch Curtis2021-07-275-4/+171
| | | | | | | | | | | | This shows how to use non-rectangular shapes for hit tests, as well as how to define the contains function in QML. Task-number: QTBUG-89380 Change-Id: I93c686d840b292816a788c05a0a76fafa338d5f8 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 382d2bfe5f261c269ccf4b970c826003c90d57ae) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Pass the focus reason through to the control on mouse pressVolker Hilsheimer2021-07-232-5/+5
| | | | | | | | | | | | | | | | | | Otherwise, a TextInput item will always receive OtherFocusReason when clicking into it. Add a test that simulates focus changes with mouse and keys, records the incoming focus events and verifies the correct focus reason is set in the event. Qt Quick provides no mechanism to access the focus reason from within QML (onActiveFocusChange only has a bool parameter, the focusReason property exists only in QtQuickControl). Task-number: QTBUG-75862 Change-Id: Ifea95c7ef2ac88c6c8e8bbdc8d2dbe5205ff922e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit bbcbb7c78f2f07e6c5e380ec5c018ac2a7abf292) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update QQuickImage's DPR if re-loading the image didn'tVolker Hilsheimer2021-07-231-2/+6
| | | | | | | | | | | | | | | An SVG doesn't have a DPR, but we need to reload and repaint it anyway when the DPR of the screen changes. So store the DPR of the item explicitly if reloading it didn't change the value (for instance, because sourceSize was not set). Otherwise, DPR changes are only handled when moving from a 1.0 (the default) DPR display to a different display, but not when moving back. Fixes: QTBUG-94622 Change-Id: I9f0a847699ab027ef876e341b8c6a954a6167ab3 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 08838f434b55024d9d5a9252fc2a3fb782b087da) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Avoid infinite loop in designer supportThomas Hartmann2021-07-222-7/+20
| | | | | | | | Task-number: QTBUG-94928 Change-Id: I1ee14600fb0fd9f0ee499546e3ffcd66114aaeff Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> (cherry picked from commit d3cae36550fe8b82c641cef6a207e991a9064d85) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Handle QScreen::physicalDotsPerInchChanged changes for the initial screenVolker Hilsheimer2021-07-211-3/+9
| | | | | | | | | | | | | | | We connect to the signal when the screens change (in QQuickWindow::handleScreenChanged), but never for the initial screen. Not connecting means that changing the DPR of the initial screen doesn't re-render QQuickItems with the new DPR, which was in particular visible for QQuickImage when displaying SVGs. Task-number: QTBUG-94622 Change-Id: I44ff3f8f3713d5a7bba8b6b8b4d5ca14530fe373 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 7e39a2204382a78ac6ff1e32dfe29dcbce65004c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: Improve QQuickItem::containmentMask() docsShawn Rutledge2021-07-141-9/+35
| | | | | | | | | | | | | | The Qt Quick docs weren't as explicit as possible; and the \qmlproperty did not generate any C++ docs. Amends bf74a908cb0591c2adc024a6f93d566c7348c125 Fixes: QTBUG-89375 Change-Id: Ib81796c1d7a00a7a48940c65137e4ed6a38a21ab Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit bcf3f29c6d26777c8db814477b8f3c3e19826234) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* When setting the line dash to be an empty array reset the style to SolidAndy Shaw2021-07-141-1/+4
| | | | | | | | | | | | An empty line dash array is indicating that it should be reset to be a Solid line, otherwise it ends up reusing the previous settings for the pen instead of drawing a solid line. Fixes: QTBUG-75553 Change-Id: I16466672de95da8ef0cf3fc261969e7cc6add227 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit c31638f16b1fe709dd9df232afb9ab7fac3b231e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* TextEdit: ignore all key release eventsVolker Hilsheimer2021-07-141-5/+1
| | | | | | | | | | | | | | | | | Input events are accepted by default, and get ignored by the default event handler implementations. By overriding an event handler, the events get accepted, unless ignored explicitly. Since QQuickTextControl does not handle any key release events, it should explicitly ignore all of them, not just Key_Back (ignoring of which was added in 798112b6532a3c66abff630327d29a980a525f25). Fixes: QTBUG-95073 Change-Id: I09105fd8ebef73c03eb2083149643d188a2f1360 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 6ca31ca88a7ee86308e329afd6cd2c90a050d4d9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* doc: Remove bogus PinchHandler.minimumTouchPoints prop; improve actualShawn Rutledge2021-07-091-12/+12
| | | | | | | | | | | PinchHandler.minimumTouchPoints was probably just an early idea for the name, because MultiPointTouchArea has it. Anyway it's now honoring the inherited minimum/maximumPointCount properties from MultiPointHandler. Change-Id: I6408da9dfe1d31a38da2777efa2c5d79ad17390f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit a04d98787dc5c816569a6eecce695a8d80257c05) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Send hover events with correct scene and global positionsShawn Rutledge2021-07-061-3/+7
| | | | | | | Task-number: QTBUG-94971 Change-Id: I047223dfdb76a6f1237b9d15b54381cd085aa1ac Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 0a271b5cd4da9e13accbf63a576413c45f367adc)
* QQDeliveryAgent: keep lastMousePosition updated during draggingShawn Rutledge2021-07-061-4/+4
| | | | | | | | | | | | | Given that we store lastMousePosition (which I hope we can move to QPointingDevice eventually), the idea is it should always be correct; so don't bypass updating it during a mouse move just because there's a grabber. It resulted in synthetic hover events being sent after release, with an outdated last-known mouse position. Fixes: QTBUG-92563 Change-Id: Ic708bfcbdfcd0a9f6dc2cfd42f0671b0661e76bb Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 930da44767dcd0ccb50aaf725e3cbac99eaf13ea)
* Fix QtQtuickImage docs: correct properties' signaturesIvan Tkachenko2021-07-021-2/+4
| | | | | | | | | | 1. Add missing "readonly" annotations. 2. Change sourceSize's type to QML basic type 'size'. Change-Id: I3636818571b1e923058363f62b595567a1ccdcf0 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit 9e0fdcf87fb0fd35a3313dff6243da6597289455) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* crash fix - avoid wrong gcc optimizationTim Jenssen2021-07-022-9/+8
| | | | | | | | | | | | | | | | This fixes a crash that gcc optimized the code in the way that inspectedObjects->contains(object) executed at a nullptr. (only release only some gcc versions) This was already fixed in the past but reintroduced by another commit in the past. Task-number: QTBUG-94798 Change-Id: I9759f3347712f706dd99303ce9d804667c1525f3 Reviewed-by: Marco Bubke <marco.bubke@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit e865d977f6b6b0e3f7e7e61e4a9200f047b0213e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: Include the Qt.labs submodules in the sourcedirs listVenugopal Shivashankar2021-06-231-2/+1
| | | | | | | | | | | | The code for these submodules are moved out of imports but the qdocconf was not updated to include the new path. Fixes: QTBUG-92840 Change-Id: I8c4677354622c6b601b273c8c96d67c33535c77f Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit e981455f9439758f53f742decb758027d0a2f5e6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Enhance QQuickRenderControl docs regarding key eventsLaszlo Agocs2021-06-151-5/+15
| | | | | | | | | | | ...and rephrase one of the general description paragraphs to be more accurate. Fixes: QTBUG-93489 Change-Id: If238fff84480720a618c8a337fe416cd08ee9b79 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 6dfed1ee9c8e03780b222a71f6b90fe2016d8994) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* DropArea: Tell qdoc that DropArea indeed inherits ItemFabian Kosmale2021-06-141-0/+1
| | | | | | | | | | | This ensures that we list all of Item's properties in the "List of all Members" page. Change-Id: Ide7e270fd187e6adc4a20b70b8ef84d2c25a836c Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 565290ef3b63fd6ac7b3eac06e64c6a09a2561ad) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Don't let PointerHandler steal mouse grab from keepMouseGrab layerShawn Rutledge2021-06-011-8/+17
| | | | | | | | | | | | | | | As explained in the comment, the handler can override the keepMouseGrab "veto" if the item is a parent (like a Flickable) that filters events, but not in other cases. The logic was wrong though, apparently. Amends 090f404cf80da35734f712b02cc1543acecd5b62 Fixes: QTBUG-78258 Task-number: QTBUG-79163 Change-Id: I9a473ab3b23743f863cb0be13767fdbc29cd5e1c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit b09ce7dcd8ecf24ef23da8197a64e3fced3fc894)
* Support &apos; in styled textAlbert Astals Cid2021-05-282-1/+3
| | | | | | | | | | Includes the doc fixes from 5848c081c094a66e024493fc1e5c2569e06f73b6 (that had not been marked for backporting to 6.1) Change-Id: I4a8db963e52a7899ab1796f9a560e8029cc1c929 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit 96b528efcba1226d2980828d1255160bdceae4cf)
* Fix MSVC warning C4065Kai Köhne2021-05-271-5/+2
| | | | | | | | | | qsgdefaultcontext.cpp(308): warning C4065: switch statement contains 'default' but no 'case' labels Change-Id: Ic050d21549cb3eeabade803a23e3e9eb202e3a74 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit 0bdbfb9589ce912afbecc6fd3408f8320d78de10) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Keep DragHandler active while dragging even if other event happensFabian Kosmale2021-05-271-1/+10
| | | | | | | | | | | | | | | | | QQuickPointerHandler::handlePointerEvent() calls setActive(false) when wantsPointerEvent() returns false (except for a NativeGesture event), for the sake of deactivating reliably when it receives an event which it does not handle. Now we need one more exception, because it's not what we want in DragHandler while dragging: If we get a wheel event, that should not interrupt the current drag operation. Thus, we change the logic in wantsPointerEvent to consider even events we wouldn't normally handle while the DragHandler is active. In handlePointerEventImpl, we then simply ignore them. Fixes: QTBUG-91549 Change-Id: I24e8bd890a21b244c9964f4df76986688085fa87 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 40bbf1e8fddebb0974426a03b0f48dfc08f942de)
* Emit grabChanged() from DragHandler and PinchHandlerShawn Rutledge2021-05-271-1/+15
| | | | | | | | | | | | Followup to ca7cdd71ee33f0d77eb6bf1367d2532e26155cb2 : when overriding a virtual function, it's good practice to call the base class function, in the absence of any reason not to. Fixes: QTBUG-93880 Change-Id: Icbd04faec51d55d8fbf73319bd20f5846761d3d5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit a10eeee97d42f05409074f69cc99d9a8da5db077) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: Generate FolderListModel documentationTopi Reinio2021-05-261-1/+2
| | | | | | | | | | | | src/labs/folderlistmodel was not part of any documentation project after the source directories were moved. Fixes: QTBUG-94022 Change-Id: I61c31ff0e05f1bafdfe897556ecd167a5bcaba61 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit e2f247fafcd90c02e5db686c791ff4818be9cc50) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Give a warning when StyledText encounters a non supported entityAlbert Astals Cid2021-05-211-0/+4
| | | | | | | Change-Id: Iea8bdf25542cd404ee71141467ac1f1398a7d0df Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 8cd43e370040e23fcbd03ad64969e683055bd7d0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: Window can be imported with import QtQuick nowMitch Curtis2021-05-211-3/+3
| | | | | | | Change-Id: Ifea27b5906bf9dcc3087946aaf8bd3aed968309b Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit be74a0082c4b9f6fc3b700ea2c9689bfcb5d1433) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Remove unplugged device in knownPointingDevices listSiyeon Seo2021-05-211-0/+2
| | | | | | | | | | | When the visible value of qquickitem is changed, a crash occurs while accessing the physically unplugged device information from the knownPointingDevices list. Change-Id: I7f3190bc47ef068ca3d795216eedd6377fa25120 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit b567c3836b518c69a1a3d11dfdc36f7c5742f2b4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Use fixed qt_add_resource BASE argumentJoerg Bornemann2021-05-211-57/+54
| | | | | | | | | Fixes: QTBUG-93849 Task-number: QTBUG-86726 Change-Id: If6e1033642d98ccd40daeb57a453c0e5bc2985da Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 1917a868d9bbd6c916e2a54cad6ad28780f73f34)
* Don't dereference node unless it is actually assignedVolker Hilsheimer2021-05-201-3/+2
| | | | | | | | | | | | While the static analyzer doesn't see in 727c503c234d162fb8d62b1aadf328de that node must never be nullptr when i == 0, the statement doesn't have to be executed at all if the previous block wasn't run as well to assign node. Change-Id: I2edd901674e7603a317ebdf98dd4800b768a0a5b Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit afb081115d05c010aa4c80c985f69f8f333264c7) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Set a11y role for QQuickTextInput to EditableTextMorten Johan Sørvig2021-05-201-0/+2
| | | | | | | | | | | Extend the current special case handling for text items to also handle QQuickTextInput. Task-number: QTBUG-93599 Change-Id: I5c0393e5d34a8bce2c6a2cbf491c6d3cad3ff294 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> (cherry picked from commit 94f34ef69bda1378471c0e39bd354b99179dbb0d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Enhance approveGrabTransition log messageShawn Rutledge2021-05-141-2/+3
| | | | | | | | | Show the existing grabber, not only the proposed grabber. Change-Id: Idd1b41f96b063793c3c97aa67aa4425e2d58a027 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 2ae029e00bf4a0403aaeb24cbdcdfb0881b855e6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Don't stop delivering to subscene deliveryagents after point acceptedShawn Rutledge2021-05-121-2/+0
| | | | | | | | | | | The qtquick3d test tst_Input::dualTouchTap2D got broken by this. Amends 5c08e911375966761ee8e4d7cd425120985876e2 Task-number: QTBUG-92944 Change-Id: I8b955029e9075204a8c8d5899eb2c9f516649f84 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 01069b8514dedb4e1f8f90a9a2c79bc064a63076)
* Don't add the same point twice when splitting touch events by subsceneShawn Rutledge2021-05-121-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A point might have an exclusive grabber and multiple passive grabbers. It could be that different grabbers are in different subscenes; but in the case that there is both a passive and an exclusive grabber in one subscene, QQuickWindow::event() calls the inline insert() function multiple times with the same point and same DeliveryAgent, but we must not add it to the QList more than once. (It could even be a QSet instead of a QList, but that might not be optimal, and would disrupt the order of EventPoints FWIW... not that we normally guarantee order. And afterwards we pass the QList to the QMutableTouchEvent ctor taking QList<QEventPoint>, so it's just as well to have it built already.) This helps to fix the tst_Input::dualTouchTap2D test in Qt Quick 3D: if you press one finger on a MouseArea in the left subscene and one on an MA in the right subscene, and then release, we do not want to give two copies of the left eventpoint to the left subscene, because then QQuickDeliveryAgentPrivate::deliverPointerEvent() will actually store into originalScenePositions a copy of the scene position that has already been through the sceneTransform->map(), and restore it afterwards. That results in the synth-mouse event getting the wrong position, and the test fails because the press and release positions don't match. Amends 5c08e911375966761ee8e4d7cd425120985876e2 Change-Id: I856b676b5c66b59ed20c4a5e395e6e66478438da Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 82bf2eeb341ecc6b252e7a575bed8bf4bd329e96)
* Map window coordinates to the same coordinate system as the QPointerEvent pointAlexey Edelev2021-05-111-1/+4
| | | | | | | | | | | | If the window has parent windows its geometry should be mapped to the global coordinates before check if it contains the point coordinates. Fixes: QTBUG-91716 Change-Id: I300547361dbe895b67caeee0d47f416426444552 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit c740a9d30571079fa22fd26cb8e72df6ca28c7b2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Use QQDeliveryAgent::sceneTransform, if set, in QQuickItem::mapFromGlobalShawn Rutledge2021-05-075-3/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During dragging of a QEventPoint, Flickable computes the drag delta as pos - mapFromGlobal(point.globalPressPosition()) We cannot use only the global position delta, because the Flickable might be transformed in 2D (by setting rotation on it or in a parent, as in tst_qquickflickable::clickAndDragWhenTransformed) or in 3D (by mapping it onto a Model object). So we really need QQuickItem::mapFromGlobal() to actually work regardless how many of these transformations are in place. This is just the beginning: we have a lot of these mapFrom/To functions; but it's enough for the Flickable in the quick3d/dynamictexture example to work better. Without this fix, if you tried to drag a yellow note on the door panel, at the very first drag ListView saw a large delta and considered its drag threshold exceeded immediately, whereas the DragHandler on the note saw a very small delta; so ListView grabbed and DragHandler did not steal it: it relies on having "first dibs". When the drag threshold is exceeded, Flickable merely plans to grab on the next event rather than grabbing immediately, and therefore a child has a chance to grab first. Therefore it's normally OK for DragHandler to simply become the first exclusive grabber when the drag threshold is exceeded, and not steal the grab from another item (although grabPermissions can be changed to allow stealing if necessary). However this means that we continue to enforce the drag threshold in local (transformed) coordinates: if Flickable should wait until the user drags 10 pixels, but it's scaled to half-size, it will start dragging after only 5 pixels of movement, for example. Task-number: QTBUG-92944 Change-Id: Id01cc833ca80850ca18a965adf47f435e43e20ed Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit f83efd3feb564cf8b929b9dfde6787853a561069) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>