aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Add more links to QJSEngine's ownership documentationFabian Kosmale2021-06-171-1/+10
| | | | | | | | | | Also explictily mention again that objects with JS ownership won't be deleted as long as they have a parent. Change-Id: I1eeb5bc8183b6621f24f3751b8152b36acf2eeae Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit 906ccb4694bbb3577efc8b8839ed687ebb3e3dce) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix conversion of entries to be added to QVariantListsUlf Hermann2021-06-171-2/+4
| | | | | | | | | We should pass the variants themselves, not their constData(). Fixes: QTBUG-94502 Change-Id: I92688348d7b46d74935dc11080b26290f5e8be86 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit dbe34dfa0d42510b804c898b77d6fe145473c31b)
* 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)
* Document handling signals with parameters in QMLFabian Kosmale2021-05-281-1/+52
| | | | | | | Change-Id: I1fb2a6b744ee1bbef2ceceba119bc8d4bc882144 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit a678309dfd132e1b34662c72b8d8d8515e2826d0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* 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)
* QV4StackFrame: Fix ubsan warningFabian Kosmale2021-05-281-1/+3
| | | | | | | | | | | Calling memcpy with a nullptr is UB, even if we copy 0 bytes. Add a null check to avoid the issue. Fixes: QTBUG-94067 Change-Id: I1d47424754e22f13d7b494ae984b4407b96b1805 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> (cherry picked from commit 0b10b83dad91b44559b9f4ddcf9d8bed5544de93) Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix MSVC warning C4334Kai Köhne2021-05-281-1/+1
| | | | | | | | | qquickparticlesystem.cpp(217): warning C4334: '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) Change-Id: If17ecb2003995d54fce4e0ed58c8e2b183928dc3 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit ff8392d4ba28ebd6cb2eef584773a75aa8382392) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* 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>
* Restrict types from unversioned imports only by major versionUlf Hermann2021-05-261-1/+1
| | | | | | | | | | | | | | | | | The versionless import tells us that any version of the type is allowed. We still record the major version because types have to be re-registered for each major version. Any minor version belonging to that major version is allowed, though. Restricting by minor version has the effect of passing the minor version of the "host" type into grouped property accesses. This is certainly unwelcome as the grouped type can have a higher minor version than the host type. Task-number: QTBUG-33179 Change-Id: I73f0f4fdaa00ac13cf91a4c21fd705c9dba070ec Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> (cherry picked from commit 5ca899164156ee49770ef3749e6d4b1567c00362) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Add missing limits include to fix build with GCC 11Antonio Rojas2021-05-231-0/+1
| | | | | | | | | | | | This is not required for Qt 6, since it is indirectly pulled via qanystrigview.h, but it is for Qt 5 (where qanystrigview does not exist) and, in any case, it is good to declare all used headers and not rely on them being implicitly pulled. Change-Id: I97606ea493e723006759608b7d4c4f00632f340c Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com> (cherry picked from commit 367293b18ab0d0a0432c1c8ce445fee052e5eee5) 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>
* Add Q_ASSERT for _context pointer to pacify code checkerVolker Hilsheimer2021-05-201-2/+21
| | | | | | | | | | | | | The pointer is initialized to nullptr, set in enterEnvironment, and possibly reset in leaveEnvironment. The static analyzer can't know that it is always set before any of other functions is called, so assert that pre- condition via Q_ASSERT. Change-Id: I0198505db40a93227ba52a08c29a351e85b74cc0 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> (cherry picked from commit ae1334d827bd386ae34ed5fca8f00dcef83bc65e) 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>
* Switch from QFlatSet to QSet in particlesKaj Grönholm2021-05-194-161/+2
| | | | | | | | | | | | Based on testing, when the amount of particles increases, Qt 6 QSet seems to perform better in this use case than the QFlatSet. Task-number: QTBUG-92977 Change-Id: I442a8fb7a0496f6ee7e5c4fc37348f549f81a686 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit 6f1ed8b46abed1a2190c12f8d7b272b075efa0e8) 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>
* QQmlListAccessor: Store integer if m_type is IntegerFabian Kosmale2021-05-141-0/+1
| | | | | | | | | | | | | | | | | When we pass a QVariant to QQmlListAccessor::setList which contains something convertible to a number, we set the type to Integer. Later, we simply return whatever is stored internally in the variant, and cast it into an int. That goes horribly wrong if the variant actually contains a floating point number. To fix this, we now store the actual integer in the variant after the checks are done. Change-Id: I3aa173a1558e95361bb4b19e97542d8a435a6dd7 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 42afb8249cfcf8cec66aac9e55d13ac508699ec8) 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>
* Doc: Clarify preconditions for using QML_ELEMENT et alUlf Hermann2021-05-111-0/+15
| | | | | | | | | | You need to include qqml.h and you need to make your own class declarations available to the registration code. Change-Id: I98e6b0b8a0acc309482416c3137d8ed782bbdc82 Reviewed-by: Paul Wicking <paul.wicking@qt.io> (cherry picked from commit 40c759cbfa9dfb944a924b6c01fbfd1a15a7a25e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: Remove documentation for qmlRegisterType() with no argumentsUlf Hermann2021-05-111-10/+0
| | | | | | | | | | This function has been removed. Change-Id: I10a0b268313c6dbbaf27e66ee0e3a49aae87a531 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> (cherry picked from commit 0d7e9d95cbfda42e45a484046280f17d5b16df38) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* MASM: Put pageSize into an inline namespaceFabian Kosmale2021-05-072-0/+7
| | | | | | | | | | | | Apple errorneously detects pagesize as belonging to their private API. Avoid this by putting the functions into an inline namespace to change their mangling. Fixes: QTBUG-69577 Change-Id: I061febdc6f961fa8a6e1d43de4154a8e26b04f27 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit 719fa10c8219537187f2e3c63eacdf44bd76d410) 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>
* TextEdit: update all glyphnodes on QTD::contentsChanged() signalShawn Rutledge2021-05-071-0/+8
| | | | | | | | | | | | | | When a syntax highlighter changes formatting, the actual text doesn't change, and QTextDocument emits contentsChanged() but not contentsChange(int, int, int). We need to regenerate QSG nodes. contentsChanged() is connected to QQuickTextControl::textChanged() and from there to QQuickTextEdit::q_textChanged(). Fixes: QTBUG-74572 Change-Id: Ia62aa6d3adfc9a9d496ee8811db4c2d963dd0c54 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit d0ffa3c42bb58eef0d2a2c3326984695a60e9667) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qquicktableview: upon forceLayout(), check for visible rows/columns at the ↵Richard Moe Gustavsen2021-05-061-30/+48
| | | | | | | | | | | | | | | | | | | | | | origin There is a bug in TableView which will stop the user from scrolling/flicking back to the first column if it has become visible after first being hidden. The reason is that this is somewhat of a special case that happens only if the current left column is already at the origin of the viewport, since that will fool tableview into thinking that there can be no more columns in front of it. This patch add an extra section to the function that checks for visibility changes, to detect this special case. Fixes: QTBUG-93264 Change-Id: Ieaad507b45ea11dc231519e9f49cbf182d6443ba Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 546df684e272bbbc5e8b871ae9b224fdb34a4cfa) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Workaround mingw compiler bugUlf Hermann2021-05-061-0/+5
| | | | | | | | | | | | | std::acosh(v) wrongly returns NaN for v == Inf on mingw. This makes the ecmascript tests fail. Fixes: QTBUG-93175 Change-Id: Ic6677b3259dad591b946b23d4d6a6859f6e70b0f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> (cherry picked from commit 3a8c0fd5cb9bfec439c306593bce19f434c871ce) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* DragHandler: don't try to handle native gesture eventsShawn Rutledge2021-05-052-0/+14
| | | | | | | | | | | | | | | | | | | | | No gesture handling has been implemented in DragHandler (although we could). It just made the target item jump unintentionally. QQuickMultiPointHandler::wantsPointerEvent() returns true for gestures, because PinchHandler handles them, and the pattern is that base classes only rule out some kinds of events but leave the final decision up to the leaf class. The autotest has to use a touchpad now, not the primary pointing device, because QQuickPointerDeviceHandler::wantsPointerEvent() returns false if pointerType != Finger and acceptedButtons() is not satisfied. Fixes: QTBUG-92165 Change-Id: I984de750c9ae892f3ee61c7ed5b3ac4a7d187024 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 73051631545dc59d4419a5ef2202355349aab480) Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* V4 Debugger: Collect locals also from block scopesUlf Hermann2021-05-051-1/+2
| | | | | | | | | Block scopes can contain "const" and "let" members. Fixes: QTBUG-92224 Change-Id: Ie13d7d573e2759c510e1ea48c6edc68a095f40a0 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 051dd3178bc4c9214af60c69cecfc2c28f13174d)
* Store memory of grabbing agents in EventPointDataShawn Rutledge2021-05-054-132/+163
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QQuickDeliveryAgentPrivate::grabberAgent(event, point) was too naive: it's not only that each point could be delivered by a different agent, but also each point could have an exclusive grab in the context of one agent and multiple passive grabs in the contexts of different agents. E.g. in qtquick3d/examples/quick3d/dynamictexture, many grabs can occur if you press on a door: the View3D has a TapHandler to pick the door, so that you can click to open; each Panel has a TapHandler to defocus whichever TextArea has focus; there is a ListView for dragging through the panel delegates sideways; if you press on a yellow note, its DragHandler prepares to start dragging; etc. So at least, a TapHandler in the subscene and the other one in the View3D need to get passive grabs, and need to receive the release event in the correct coordinate system, to detect taps. When we apply the sceneTransform of a particular agent before re-delivering an update or a release, based on the grab, it has to be in the correct coordinate system for that grabber. So on grab, we use EventPointData::exclusiveGrabberContext or passiveGrabbersContext to store the pointer to the QQDeliveryAgent that was doing the delivery when the grab occurred. When we deliver the next event to a grabber, we also look up the correct DA to do the delivery. This gets done twice: once in QQuickWindow::event() to find the DAs that need to handle the event, and in QQDeliveryAgentPriv::deliverUpdatedPoints() to ignore passive grabbers for which a different DA is responsible. The failsafe "never allow any kind of grab to persist after release" is moved to QQuickWindow::event because we don't want to do it prematurely in a subscene agent, and ATM we don't require the main DA to deliver last: it depends on the order in EventPointData::passiveGrabbersContext. QQuickPointerHandler::onGrabChanged() should only be called from the relevant DA, to avoid overreaction: that is, the DA that is delivering an event at the time the grab occurs. QQDelAgentPrivate::onGrabChanged() gets called on all DA instances, but only one of them is supposed to store itself as the assigned DA for handling a particular point ID. It's not always the same as QQuickItemPrivate::deliveryAgent(): that goes astray when the same 2D subscene is mapped to the main scene and also onto multiple QQ3D models. In that case, if the user interacts directly with the 2D scene, the main DA should be assigned; or if the user interacts with one of the mapped subscenes, its DA should be assigned. We have to stop delivering to subscenes when the event is accepted, at least, because of the usual convention that delivery is done when the event remains accepted rather than being purposely ignored. So in the dynamictexture example, if you click on a TextEdit on one of the doors, it receives the event first (because it's on top) and accepts it; that stops delivery in QQuickDeliveryAgentPrivate::deliverPressOrReleaseEvent(), and now also stops QQuickWindow::event() from visiting the next subscene, or the main scene, so that the TapHandler in the View3D doesn't get clicked, and the doors don't open. Task-number: QTBUG-92944 Change-Id: I1b4520b665e58874d17a936024cf62e4c7175d8e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 5c08e911375966761ee8e4d7cd425120985876e2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Avoid stale QSGTexture pointer accessesRomain Pokrzywka2021-05-051-1/+3
| | | | | | | | | | | | | | On rare occasions, it seems to be possible for the texture to be used after deletion, which results in crashes in pixmap() after casting. Rather than storing a raw pointer, wrap the texture in QPointer to avoid the stale pointer accesses. Task-number: QTBUG-80415 Change-Id: Ia0ee556f4a3a4eee777ca14065635f4bc5f90da2 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit 1c010b202506bb7eb0f0e24ab37ad50e319abada) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Make PinchArea translate correctly inside a rotated parentShawn Rutledge2021-05-051-1/+7
| | | | | | | | | | | Also includes 9dacc312e5b0f5aeb0f8370f4f7722b57754a3c2: fuzzy comparison in the test to avoid failure due to roundoff. Fixes: QTBUG-63673 Change-Id: I91231bb8555b7eb02a9580f9f184b261d8bd44c8 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 7642205be45135add120373299df02e05f4ffc58) Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* V4 debugger: Properly count break pointsUlf Hermann2021-05-042-1/+2
| | | | | | | | | | | | We cannot just take the number of active breakpoints as ID for the next one. It's possible to remove breakpoints after all. Fixes: QTBUG-93404 Change-Id: Icde7a8e47c740e930f2313ffd9034b00033a54aa Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 7f12cf3346d65d0bff78fff8000ed519fbb921ba) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* ShaderEffect docs: Clarify vertex output/input naming requirementsLaszlo Agocs2021-05-031-2/+21
| | | | | | | | | | | | | | | | | | | | | | To be complemented by an rhi change that adds verification for this and prints a warning with mismatching names. The common use case with ShaderEffect is to provide a fragment shader only, while using the default, built-in vertex shader. In this case one must be aware of how to correctly declare the texture coordinates input, and this was not very clear in the docs. In short, we need to advise that the fragment shader input must be declared as qt_TexCoord0 at location 0 in order to be portable. Just having a matching location number but a different name is not sufficient. (because with old GLSL versions the location qualifier will not be there at all and matching is name based) Task-number: QTBUG-92500 Task-number: QTBUG-93370 Change-Id: I975557e9a754db8e7c69b86531a2d873f059c7ce Reviewed-by: Christian Strømme <christian.stromme@qt.io> (cherry picked from commit 40959164bbc0e7144b3ba3e426296d0de61d60f5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Doc: Add a link to the page where the backends are listedVenugopal Shivashankar2021-05-031-1/+3
| | | | | | | | | | | | Considering that there is lot more to know about the backend value, link to a topic where this info. is covered is better than list the values in the function documentation. Fixes: QTBUG-93083 Change-Id: I4ae714685395e9c37de82d9a3ee42220a1f07f89 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit cc58bdfb57f6fe15113b797cad4d0486c9957ac6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* ListView: support QList<QUrl> modelsMitch Curtis2021-04-302-2/+9
| | | | | | | | | | | | | | | | | | For now this patch just tacks on another list type, but there may be a better way to account for all types in the future. This change also adds tst_qquicklistview2 to speed up development. tst_QQuickListView is 10000 lines long, and compiling it is slow (36 seconds on a 2016 i7 MacBook Pro). In addition, a similar approach (creating a second test to avoid the slowness of a massive one) already exists for QQuickItem tests. Task-number: QTBUG-72906 Change-Id: I05455a2f20978b07eb38591ab63e7d0fb7dac1ab Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 0e3902b83dc3c59567a81a90c3f3c0365bdf68da) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QQuickDeliveryAgent::event(): handle tablet events explicitlyShawn Rutledge2021-04-281-0/+7
| | | | | | | | | | | | | | | | | | | | | QQuickWindow::event() forwards all input events to the DA. If it's not handled there, it eventually gets handled at the bottom by forwarding to QWindow::event() which then dispatches to QQuickWindow::tabletEvent() and from there to da->deliverPointerEvent(); however the switch in QWindow::event() is not meant to be the normal entry point for input events anymore. In a subsequent patch we will move the failsafe "never allow any kind of grab to persist after release" into QQuickWindow::event(), before that is reached; that in turn breaks tst_PointHandler::tabletStylus(), showing that the point is ungrabbed on release before PointHandler handles it and has a chance to emit pointChanged. So we must handle tablet events earlier, alongside mouse and touch events. Amends 68c103225f4e8bd6c1b18ef547108fd60f398c0f. Change-Id: Id7508e4bbbdbfe88d002d298c15ec727040f02ef Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 73148c79a328cb834a51de5c152f32851194ce52)
* Restore scene position after changing it during deliveryShawn Rutledge2021-04-271-0/+7
| | | | | | | | | | | | | | When we visit multiple subscenes via multiple DAs, if they are changing the scene pos, the original gets lost, and then maybe we visit some handler via the root DA again (like a TapHandler declared in a View3D). This helps to fix qtquick3d/examples/quick3d/dynamictexture Task-number: QTBUG-92944 Change-Id: I9bd8cfc2510168b6e14002957833b54eb9586ab0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 30013ccae388aa55b870aa70bc20979d7c434c05) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Document QQmlComponent::createWithInitialProperties() error handlingMitch Curtis2021-04-271-0/+8
| | | | | | | | | Unlike create(), it can produce errors that should be checked. Change-Id: I78f2e58c8666eb45f6e850c43e3e97a448b2758e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 4f0622f7f553cd841874f0efe65d7f13edeec216) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QQmlComponentPrivate::setInitialProperty: improve error messageFabian Kosmale2021-04-271-2/+7
| | | | | | | | | | We can discern between the case where the property does not exist at all, and the case where we cannot set it. Change-Id: Ia2e8f4cc077a00b90d720db01bff1542a812dea0 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 7275328b967582010abfd59c9a93feef4cb1379f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Remove extra colonZhang Hao2021-04-241-1/+1
| | | | | | | | | | | JavaScript Grammatical errors, There should be no colon after the function brackets Fixes: QTBUG-93048 Change-Id: I902d490bf810fa60e3b3d2a76de7902345289cfe Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit df8e6136834326e363db49829d227a303e5425ed) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Expand QML_EXTENDED_NAMSPACE's documentationFabian Kosmale2021-04-211-1/+32
| | | | | | | | | | | | Note that it doesn't necessarily need a namespace; mention that it however requires the "namespace" and its contained enums to be exposed to the metaobject system to work. Moreover, add a minimal code example. Change-Id: I814c65b2b59747f902f2291e2f98962eb98d4d59 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit a3959ea9df49b5c30833d49daede5bf60a70897e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>