diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-02-15 21:45:25 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-02-15 21:45:25 +0100 |
commit | 242c9545af933c3b8ba30bb5d69263eea97142d0 (patch) | |
tree | 77ac3ffd7498fe8289b615923424a286c3894c4f | |
parent | 238cc098d785b4fe76fbc8422b340d98ff8c1a1b (diff) | |
parent | 3e91062877c0853aff693799bc5e33cdf7aaad42 (diff) |
Merge remote-tracking branch 'origin/5.10.1' into 5.11
Change-Id: I64bf7d183bbd8af7282270097809d14a54ba0188
-rw-r--r-- | dist/changes-5.10.1 | 109 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 7 | ||||
-rw-r--r-- | tests/auto/quick/pointerhandlers/flickableinterop/tst_flickableinterop.cpp | 14 |
3 files changed, 127 insertions, 3 deletions
diff --git a/dist/changes-5.10.1 b/dist/changes-5.10.1 new file mode 100644 index 0000000000..cbd9869476 --- /dev/null +++ b/dist/changes-5.10.1 @@ -0,0 +1,109 @@ +Qt 5.10.1 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.10.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +http://doc.qt.io/qt-5/index.html + +The Qt version 5.10 series is binary compatible with the 5.9.x series. +Applications compiled for 5.9 will continue to run with 5.10. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +This release contains all fixes included in the Qt 5.9.4 release. + +**************************************************************************** +* Important Behavior Changes * +**************************************************************************** + +* A type that can be used for object declaration in QML must start with an + uppercase letter (this has always been the convention). Registration of + type names beginning with lowercase characters is now explicitly disallowed. + +**************************************************************************** +* Qt 5.10.1 Changes * +**************************************************************************** + +QtQml +----- + + - [QTBUG-65924] Fixed namespaced builds with -no-qml-debug + - [QTBUG-65624] Fixed a crash with simple qsTr() bindings on var properties + - [QTBUG-36773] A qmldir file can be provided via a custom schema + - [QTBUG-64798] Property alias syntax error no longer causes a crash + - [QTBUG-44153] Fixed a crash when a property alias points to a deleted object + - [QTBUG-47321][QTBUG-51995][QTBUG-60344] We now avoid temporarily invalid + bindings (such as "Cannot read property of null") while unloading a Loader + - [QTBUG-66067] Fixed a bug with negative-valued enum values in singletons + + - QML profiler: + * [QTBUG-64674] Re-enabled QML memory profiling + * [QTBUG-65190] QML profiler tracks signals globally to prevent duplication + + - Platform Specific Changes: + * Fixed compilation on QNX 7.0 + * Enabled x86-64 JIT for QNX + * Enabled ARM64 JIT for QNX + +QtQuick +------- + + - [QTBUG-50992] Fixed bugs related to deferred property bindings to avoid + item view delegate objects being destroyed during incubation or failing + to be created. This fixes a lot of related bugs in QtQuick Controls 2. + - [QTBUG-64548][QTBUG-62990][QTBUG-64367] Shortcut works in QQuickWidget + and QQuickRenderControl scenes + - [QTBUG-65789] An Image with an SVG source uses the SVG renderer to do + animorphic scaling sharply + - [QTBUG-64616] Fixed a bug with TextInput validators allowing invalid characters + - [QTBUG-52944] When a Loader loads a Window, its transient parent will now + be set to the Loader's window (i.e. the window manager should place it on top). + - Improved support for compressed textures + + - Software rendering: + * [QTBUG-62867] Fixed bad clipping caused by incorrect background coordinates + + - Item Views: + * [QTBUG-49218] Fixed an off-by-one layout error in GridView + * [QTBUG-64311] Fixed the removal transition animation when the last item + of a GridView or ListView is removed + + - Shapes: + * [QTBUG-64951] Some rendering performance improvements; added + qt.shape.time.sync logging category + * [QTBUG-65173] Shapes work correctly in static builds + * [QTBUG-63105] Invisible Shapes can be used with OpacityMask and other + Qt Graphical Effects + + - Pointer Handlers: + * [QTBUG-64692] Pointer Handlers receive events in the reverse of + declaration order, just as Items receive events in top-down Z order + * [QTBUG-65003] TapHandler consistently emits the canceled signal when + its passive or exclusive grab is taken over by another handler or item + * [QTBUG-64848] One pinch gesture cannot pinch two PinchHandlers at the + same time; to that end, we now test the target item's bounds correctly + when delivering native gesture events from trackpads + * A Pointer Handler with only a passive grab cannot prevent delivery to + other handlers by accepting all the points in the pointer event. + This enables Handlers to cooperatively modify behavior of existing controls. + * TapHandler.gesturePolicy is now DragThreshold by default (rather than + ReleaseWithinBounds), because this makes it easier for a TapHandler to + add additional onTapped behavior to existing controls. The reason is + that the DragThreshold policy only requires a passive grab, not an exclusive + grab, so it doesn't interfere with the pre-existing event delivery. + * Fixed a bug with target item translation in DragHandler + * Added plugins.qmltyles so that syntax highlighting and completion work + in Qt Creator + * Various improvements in the tests/manual/pointer manual tests + + - Platform Specific Changes: + * [QTBUG-61882][QTBUG-65519] Fixed rendering of emoji on macOS + * [QTBUG-65663] Fixed re-rendering of window when dragged to a screen + with a different devicePixelRatio on macOS diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index 6fda6ab6c6..adf977fe9a 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -1764,6 +1764,8 @@ void QQuickWindowPrivate::deliverMouseEvent(QQuickPointerMouseEvent *pointerEven QVector<QQuickItem *> targetItems = pointerTargets(contentItem, point->scenePosition(), false, false); for (QQuickItem *item : targetItems) { QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); + if (!itemPrivate->extra.isAllocated() || itemPrivate->extra->pointerHandlers.isEmpty()) + continue; pointerEvent->localize(item); if (!sendFilteredPointerEvent(pointerEvent, item)) { if (itemPrivate->handlePointerEvent(pointerEvent, true)) // avoid re-delivering to grabbers @@ -2302,10 +2304,9 @@ void QQuickWindowPrivate::deliverPointerEvent(QQuickPointerEvent *event) if (event->asPointerMouseEvent()) { deliverMouseEvent(event->asPointerMouseEvent()); // failsafe: never allow any kind of grab to persist after release - QQuickItem *grabber = q->mouseGrabberItem(); - if (event->isReleaseEvent() && event->buttons() == Qt::NoButton && grabber) { + if (event->isReleaseEvent() && event->buttons() == Qt::NoButton) { event->clearGrabbers(); - sendUngrabEvent(grabber, false); + sendUngrabEvent(q->mouseGrabberItem(), false); } } else if (event->asPointerTouchEvent()) { deliverTouchEvent(event->asPointerTouchEvent()); diff --git a/tests/auto/quick/pointerhandlers/flickableinterop/tst_flickableinterop.cpp b/tests/auto/quick/pointerhandlers/flickableinterop/tst_flickableinterop.cpp index 7862d72db8..c0b34f8246 100644 --- a/tests/auto/quick/pointerhandlers/flickableinterop/tst_flickableinterop.cpp +++ b/tests/auto/quick/pointerhandlers/flickableinterop/tst_flickableinterop.cpp @@ -544,6 +544,20 @@ void tst_FlickableInterop::mouseDragFlickableBehindItemWithHandlers() QCOMPARE(originP1 + QPoint(3*dragThreshold, 0), p1); } QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, p1); + // wait until flickable stops + QTRY_COMPARE(flickable->isMoving(), false); + + // After the mouse button has been released, move the mouse and ensure that nothing is moving + // because of that (this tests if all grabs are released when the mouse button is released). + p1 = rect->mapToScene(rect->clipRect().center()).toPoint(); + originP1 = p1; + for (int i = 0; i < 3; ++i) { + p1 += QPoint(dragThreshold, 0); + QTest::mouseMove(window, p1); + QQuickTouchUtils::flush(window); + } + QCOMPARE(flickable->isMoving(), false); + QCOMPARE(originP1, rect->mapToScene(rect->clipRect().center()).toPoint()); } QTEST_MAIN(tst_FlickableInterop) |