diff options
author | Liang Qi <liang.qi@qt.io> | 2016-06-10 10:06:39 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-06-10 10:06:39 +0200 |
commit | 0932a59971f606f07b41da19f3974d51b7008180 (patch) | |
tree | 191aab5e88e7b4ddf3724dcbf3b8229512e433f2 /src/quick/items/qquickmousearea.cpp | |
parent | aca40a8361996e22ec4f020b803404031a0f0d76 (diff) | |
parent | cd0efef04bd45eca6cc72b5a000e4e5586153290 (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Part of 0e053528 was reverted in the merge, about lastTimestamp. It
will be applied later in separate commit.
qmltest::shadersource-dynamic-sourceobject::test_endresult() was
blacklisted on linux.
Conflicts:
.qmake.conf
tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp
tests/auto/qmltest/BLACKLIST
tests/auto/qmltest/qmltest.pro
Task-number: QTBUG-53590
Task-number: QTBUG-53971
Change-Id: I48af90b49a3c7b29de16f4178a04807f8bc05130
Diffstat (limited to 'src/quick/items/qquickmousearea.cpp')
-rw-r--r-- | src/quick/items/qquickmousearea.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp index 920a86881b..234105986a 100644 --- a/src/quick/items/qquickmousearea.cpp +++ b/src/quick/items/qquickmousearea.cpp @@ -58,7 +58,7 @@ DEFINE_BOOL_CONFIG_OPTION(qmlVisualTouchDebugging, QML_VISUAL_TOUCH_DEBUGGING) QQuickMouseAreaPrivate::QQuickMouseAreaPrivate() : enabled(true), scrollGestureEnabled(true), hovered(false), longPress(false), moved(false), stealMouse(false), doubleClick(false), preventStealing(false), - propagateComposedEvents(false), pressed(0) + propagateComposedEvents(false), overThreshold(false), pressed(0) #ifndef QT_NO_DRAGANDDROP , drag(0) #endif @@ -721,7 +721,7 @@ void QQuickMouseArea::mouseMoveEvent(QMouseEvent *event) curLocalPos = event->windowPos(); } - if (keepMouseGrab() && d->stealMouse && !d->drag->active()) + if (keepMouseGrab() && d->stealMouse && d->overThreshold && !d->drag->active()) d->drag->setActive(true); QPointF startPos = d->drag->target()->parentItem() @@ -747,16 +747,19 @@ void QQuickMouseArea::mouseMoveEvent(QMouseEvent *event) if (d->drag->active()) d->drag->target()->setPosition(dragPos); - if (!keepMouseGrab() - && (QQuickWindowPrivate::dragOverThreshold(dragPos.x() - startPos.x(), Qt::XAxis, event, d->drag->threshold()) - || QQuickWindowPrivate::dragOverThreshold(dragPos.y() - startPos.y(), Qt::YAxis, event, d->drag->threshold()))) { - setKeepMouseGrab(true); - d->stealMouse = true; - + if (!d->overThreshold && (QQuickWindowPrivate::dragOverThreshold(dragPos.x() - startPos.x(), Qt::XAxis, event, d->drag->threshold()) + || QQuickWindowPrivate::dragOverThreshold(dragPos.y() - startPos.y(), Qt::YAxis, event, d->drag->threshold()))) + { + d->overThreshold = true; if (d->drag->smoothed()) d->startScene = event->windowPos(); } + if (!keepMouseGrab() && d->overThreshold) { + setKeepMouseGrab(true); + d->stealMouse = true; + } + d->moved = true; } #endif @@ -774,6 +777,7 @@ void QQuickMouseArea::mouseReleaseEvent(QMouseEvent *event) { Q_D(QQuickMouseArea); d->stealMouse = false; + d->overThreshold = false; if (!d->enabled && !d->pressed) { QQuickItem::mouseReleaseEvent(event); } else { @@ -883,6 +887,7 @@ void QQuickMouseArea::ungrabMouse() d->pressed = 0; d->stealMouse = false; d->doubleClick = false; + d->overThreshold = false; setKeepMouseGrab(false); #ifndef QT_NO_DRAGANDDROP |