QQuickMouseArea: synchronize relative position after dragging
[ChangeLog][QtQuick][QQuickMouseArea] mouseX and mouseY will now be synchronized after dragging the target item Fixes: QTBUG-75993 Change-Id: I0b56f6bd494791f9e2fe55a0cf059a7bad2d63dc Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
This commit is contained in:
parent
75895afd7d
commit
8068e7b98c
|
@ -761,8 +761,10 @@ void QQuickMouseArea::mouseMoveEvent(QMouseEvent *event)
|
|||
|
||||
QPointF targetPos = d->drag->target()->position();
|
||||
|
||||
if (d->drag->active())
|
||||
if (d->drag->active()) {
|
||||
d->drag->target()->setPosition(boundedDragPos);
|
||||
d->lastPos = d->lastScenePos - mapToScene(position());
|
||||
}
|
||||
|
||||
bool dragOverThresholdX = QQuickWindowPrivate::dragOverThreshold(dragPos.x() - startPos.x(),
|
||||
Qt::XAxis, event, d->drag->threshold());
|
||||
|
|
|
@ -393,10 +393,20 @@ void tst_QQuickMouseArea::dragging()
|
|||
QTRY_COMPARE(blackRect->x(), 61.0);
|
||||
QCOMPARE(blackRect->y(), 61.0);
|
||||
|
||||
qreal relativeX = mouseRegion->mouseX();
|
||||
qreal relativeY = mouseRegion->mouseY();
|
||||
for (int i = 0; i < 20; i++) {
|
||||
p += QPoint(1, 1);
|
||||
QTest::mouseMove(&window, p);
|
||||
}
|
||||
QTRY_VERIFY(drag->active());
|
||||
QTRY_COMPARE(mouseRegion->mouseX(), relativeX);
|
||||
QCOMPARE(mouseRegion->mouseY(), relativeY);
|
||||
|
||||
QTest::mouseRelease(&window, button, Qt::NoModifier, p);
|
||||
QTRY_VERIFY(!drag->active());
|
||||
QTRY_COMPARE(blackRect->x(), 61.0);
|
||||
QCOMPARE(blackRect->y(), 61.0);
|
||||
QTRY_COMPARE(blackRect->x(), 81.0);
|
||||
QCOMPARE(blackRect->y(), 81.0);
|
||||
}
|
||||
|
||||
void tst_QQuickMouseArea::dragSmoothed()
|
||||
|
|
Loading…
Reference in New Issue