diff options
-rw-r--r-- | src/quick/handlers/qquickdraghandler.cpp | 2 | ||||
-rw-r--r-- | src/quick/handlers/qquickpointersinglehandler.cpp | 6 | ||||
-rw-r--r-- | src/quick/handlers/qquickpointersinglehandler_p.h | 2 |
3 files changed, 9 insertions, 1 deletions
diff --git a/src/quick/handlers/qquickdraghandler.cpp b/src/quick/handlers/qquickdraghandler.cpp index b4006ab5c7..27edffd65a 100644 --- a/src/quick/handlers/qquickdraghandler.cpp +++ b/src/quick/handlers/qquickdraghandler.cpp @@ -107,7 +107,7 @@ void QQuickDragHandler::handleEventPoint(QQuickEventPoint *point) if (target() && target()->parentItem()) { QPointF pos = target()->parentItem()->mapFromScene(m_targetStartPos + delta); enforceAxisConstraints(&pos); - target()->setPosition(pos); + moveTarget(pos, point); } } else if (!point->exclusiveGrabber() && ((m_xAxis.enabled() && QQuickWindowPrivate::dragOverThreshold(delta.x(), Qt::XAxis, point)) || diff --git a/src/quick/handlers/qquickpointersinglehandler.cpp b/src/quick/handlers/qquickpointersinglehandler.cpp index 4e89d71eab..80632303f1 100644 --- a/src/quick/handlers/qquickpointersinglehandler.cpp +++ b/src/quick/handlers/qquickpointersinglehandler.cpp @@ -199,6 +199,12 @@ void QQuickPointerSingleHandler::setIgnoreAdditionalPoints(bool v) m_ignoreAdditionalPoints = v; } +void QQuickPointerSingleHandler::moveTarget(QPointF pos, QQuickEventPoint *point) +{ + target()->setPosition(pos); + m_pos = target()->mapFromScene(point->scenePos()); +} + void QQuickPointerSingleHandler::setPressedButtons(Qt::MouseButtons buttons) { if (buttons != m_pressedButtons) { diff --git a/src/quick/handlers/qquickpointersinglehandler_p.h b/src/quick/handlers/qquickpointersinglehandler_p.h index 70aa26801f..06b8ec45dc 100644 --- a/src/quick/handlers/qquickpointersinglehandler_p.h +++ b/src/quick/handlers/qquickpointersinglehandler_p.h @@ -108,6 +108,8 @@ protected: void setIgnoreAdditionalPoints(bool v = true); + void moveTarget(QPointF pos, QQuickEventPoint *point); + private: void setPressedButtons(Qt::MouseButtons buttons); void reset(); |