aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/handlers/qquickdraghandler.cpp2
-rw-r--r--src/quick/handlers/qquickpointersinglehandler.cpp95
-rw-r--r--src/quick/handlers/qquickpointersinglehandler_p.h99
-rw-r--r--src/quick/handlers/qquicktaphandler.cpp4
-rw-r--r--tests/auto/quick/pointerhandlers/qquicktaphandler/data/Button.qml4
-rw-r--r--tests/manual/pointer/content/FakeFlickable.qml2
-rw-r--r--tests/manual/pointer/content/ScrollBar.qml4
-rw-r--r--tests/manual/pointer/fakeFlickable.qml2
-rw-r--r--tests/manual/pointer/flingAnimation.qml2
-rw-r--r--tests/manual/pointer/photosurface.qml2
-rw-r--r--tests/manual/pointer/pinchDragFlingMPTA.qml2
-rw-r--r--tests/manual/pointer/singlePointHandlerProperties.qml37
-rw-r--r--tests/manual/pointer/tapHandler.qml24
13 files changed, 150 insertions, 129 deletions
diff --git a/src/quick/handlers/qquickdraghandler.cpp b/src/quick/handlers/qquickdraghandler.cpp
index 27edffd65a..b41e1f6c9d 100644
--- a/src/quick/handlers/qquickdraghandler.cpp
+++ b/src/quick/handlers/qquickdraghandler.cpp
@@ -69,7 +69,7 @@ QQuickDragHandler::~QQuickDragHandler()
bool QQuickDragHandler::wantsEventPoint(QQuickEventPoint *point)
{
// If we've already been interested in a point, stay interested, even if it has strayed outside bounds.
- return ((point->state() != QQuickEventPoint::Pressed && pointId() == point->pointId())
+ return ((point->state() != QQuickEventPoint::Pressed && this->point().id() == point->pointId())
|| QQuickPointerSingleHandler::wantsEventPoint(point));
}
diff --git a/src/quick/handlers/qquickpointersinglehandler.cpp b/src/quick/handlers/qquickpointersinglehandler.cpp
index 80632303f1..40a99b0e99 100644
--- a/src/quick/handlers/qquickpointersinglehandler.cpp
+++ b/src/quick/handlers/qquickpointersinglehandler.cpp
@@ -52,9 +52,6 @@ Q_DECLARE_LOGGING_CATEGORY(DBG_TOUCH_TARGET)
QQuickPointerSingleHandler::QQuickPointerSingleHandler(QObject *parent)
: QQuickPointerDeviceHandler(parent)
- , m_pointId(0)
- , m_rotation(0)
- , m_pressure(0)
, m_acceptedButtons(Qt::LeftButton)
, m_ignoreAdditionalPoints(false)
{
@@ -68,7 +65,7 @@ bool QQuickPointerSingleHandler::wantsPointerEvent(QQuickPointerEvent *event)
(event->buttons() & m_acceptedButtons) == 0 && (event->button() & m_acceptedButtons) == 0)
return false;
- if (m_pointId) {
+ if (m_pointInfo.m_id) {
// We already know which one we want, so check whether it's there.
// It's expected to be an update or a release.
// If we no longer want it, cancel the grab.
@@ -79,7 +76,7 @@ bool QQuickPointerSingleHandler::wantsPointerEvent(QQuickPointerEvent *event)
QQuickEventPoint *p = event->point(i);
if (wantsEventPoint(p)) {
++candidatePointCount;
- if (p->pointId() == m_pointId)
+ if (p->pointId() == m_pointInfo.m_id)
point = p;
}
}
@@ -91,7 +88,7 @@ bool QQuickPointerSingleHandler::wantsPointerEvent(QQuickPointerEvent *event)
point->cancelAllGrabs(this);
}
} else {
- qCWarning(DBG_TOUCH_TARGET) << this << "pointId" << hex << m_pointId
+ qCWarning(DBG_TOUCH_TARGET) << this << "pointId" << hex << m_pointInfo.m_id
<< "is missing from current event, but was neither canceled nor released";
return false;
}
@@ -109,56 +106,56 @@ bool QQuickPointerSingleHandler::wantsPointerEvent(QQuickPointerEvent *event)
}
}
if (chosen && candidatePointCount == 1) {
- m_pointId = chosen->pointId();
+ m_pointInfo.m_id = chosen->pointId();
chosen->setAccepted();
}
}
- return m_pointId;
+ return m_pointInfo.m_id;
}
void QQuickPointerSingleHandler::handlePointerEventImpl(QQuickPointerEvent *event)
{
QQuickPointerDeviceHandler::handlePointerEventImpl(event);
- QQuickEventPoint *currentPoint = event->pointById(m_pointId);
+ QQuickEventPoint *currentPoint = event->pointById(m_pointInfo.m_id);
Q_ASSERT(currentPoint);
- if (!m_pointId || !currentPoint->isAccepted()) {
+ if (!m_pointInfo.m_id || !currentPoint->isAccepted()) {
reset();
} else {
if (event->asPointerTouchEvent()) {
QQuickEventTouchPoint *tp = static_cast<QQuickEventTouchPoint *>(currentPoint);
- m_uniquePointId = tp->uniqueId();
- m_rotation = tp->rotation();
- m_pressure = tp->pressure();
- m_ellipseDiameters = tp->ellipseDiameters();
+ m_pointInfo.m_uniqueId = tp->uniqueId();
+ m_pointInfo.m_rotation = tp->rotation();
+ m_pointInfo.m_pressure = tp->pressure();
+ m_pointInfo.m_ellipseDiameters = tp->ellipseDiameters();
} else if (event->asPointerTabletEvent()) {
// TODO
} else {
- m_uniquePointId = event->device()->uniqueId();
- m_rotation = 0;
- m_pressure = event->buttons() ? 1 : 0;
- m_ellipseDiameters = QSizeF();
+ m_pointInfo.m_uniqueId = event->device()->uniqueId();
+ m_pointInfo.m_rotation = 0;
+ m_pointInfo.m_pressure = event->buttons() ? 1 : 0;
+ m_pointInfo.m_ellipseDiameters = QSizeF();
}
- m_pos = currentPoint->pos();
+ m_pointInfo.m_position = currentPoint->pos();
+ m_pointInfo.m_scenePosition = currentPoint->scenePos();
if (currentPoint->state() == QQuickEventPoint::Updated)
- m_velocity = currentPoint->velocity();
+ m_pointInfo.m_velocity = currentPoint->velocity();
handleEventPoint(currentPoint);
switch (currentPoint->state()) {
case QQuickEventPoint::Pressed:
- m_pressPos = currentPoint->pos();
- m_scenePressPos = currentPoint->scenePos();
- setPressedButtons(event->buttons());
- emit pointIdChanged();
+ m_pointInfo.m_pressPosition = currentPoint->pos();
+ m_pointInfo.m_scenePressPosition = currentPoint->scenePos();
+ m_pointInfo.m_pressedButtons = event->buttons();
break;
case QQuickEventPoint::Released:
setExclusiveGrab(currentPoint, false);
reset();
break;
default:
- setPressedButtons(event->buttons());
+ m_pointInfo.m_pressedButtons = event->buttons();
break;
}
+ emit pointChanged();
}
- emit eventPointHandled();
}
bool QQuickPointerSingleHandler::wantsEventPoint(QQuickEventPoint *point)
@@ -172,12 +169,12 @@ void QQuickPointerSingleHandler::onGrabChanged(QQuickPointerHandler *grabber, QQ
return;
switch (stateChange) {
case QQuickEventPoint::GrabExclusive:
- m_sceneGrabPos = point->sceneGrabPos();
+ m_pointInfo.m_sceneGrabPosition = point->sceneGrabPos();
setActive(true);
QQuickPointerHandler::onGrabChanged(grabber, stateChange, point);
break;
case QQuickEventPoint::GrabPassive:
- m_sceneGrabPos = point->sceneGrabPos();
+ m_pointInfo.m_sceneGrabPosition = point->sceneGrabPos();
QQuickPointerHandler::onGrabChanged(grabber, stateChange, point);
break;
case QQuickEventPoint::OverrideGrabPassive:
@@ -202,15 +199,8 @@ void QQuickPointerSingleHandler::setIgnoreAdditionalPoints(bool 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) {
- m_pressedButtons = buttons;
- emit pressedButtonsChanged();
- }
+ m_pointInfo.m_scenePosition = point->scenePos();
+ m_pointInfo.m_position = target()->mapFromScene(m_pointInfo.m_scenePosition);
}
void QQuickPointerSingleHandler::setAcceptedButtons(Qt::MouseButtons buttons)
@@ -225,20 +215,31 @@ void QQuickPointerSingleHandler::setAcceptedButtons(Qt::MouseButtons buttons)
void QQuickPointerSingleHandler::reset()
{
setActive(false);
- bool pointIdChange = m_pointId != 0;
- m_pointId = 0;
- m_uniquePointId = QPointingDeviceUniqueId();
- m_pos = QPointF();
- m_pressPos = QPointF();
- m_scenePressPos = QPointF();
- m_sceneGrabPos = QPointF();
+ m_pointInfo.reset();
+}
+
+QQuickHandlerPoint::QQuickHandlerPoint()
+ : m_id(0)
+ , m_rotation(0)
+ , m_pressure(0)
+{}
+
+void QQuickHandlerPoint::reset()
+{
+ m_id = 0;
+ m_uniqueId = QPointingDeviceUniqueId();
+ m_position = QPointF();
+ m_scenePosition = QPointF();
+ m_pressPosition = QPointF();
+ m_scenePressPosition = QPointF();
+ m_sceneGrabPosition = QPointF();
m_velocity = QVector2D();
m_rotation = 0;
m_pressure = 0;
m_ellipseDiameters = QSizeF();
- setPressedButtons(Qt::NoButton);
- if (pointIdChange)
- emit pointIdChanged();
+ m_pressedButtons = Qt::NoButton;
}
+int g_metaTypeId = qRegisterMetaType<QQuickHandlerPoint>();
+
QT_END_NAMESPACE
diff --git a/src/quick/handlers/qquickpointersinglehandler_p.h b/src/quick/handlers/qquickpointersinglehandler_p.h
index 06b8ec45dc..635c9e0a77 100644
--- a/src/quick/handlers/qquickpointersinglehandler_p.h
+++ b/src/quick/handlers/qquickpointersinglehandler_p.h
@@ -55,47 +55,74 @@
QT_BEGIN_NAMESPACE
+class QQuickPointerSingleHandler;
+
+class Q_QUICK_PRIVATE_EXPORT QQuickHandlerPoint {
+ Q_PROPERTY(int id READ id)
+ Q_PROPERTY(QPointingDeviceUniqueId uniqueId READ uniqueId)
+ Q_PROPERTY(QPointF position READ position)
+ Q_PROPERTY(QPointF scenePosition READ scenePosition)
+ Q_PROPERTY(QPointF pressPosition READ pressPosition)
+ Q_PROPERTY(QPointF scenePressPosition READ scenePressPosition)
+ Q_PROPERTY(QPointF sceneGrabPosition READ sceneGrabPosition)
+ Q_PROPERTY(Qt::MouseButtons pressedButtons READ pressedButtons)
+ Q_PROPERTY(QVector2D velocity READ velocity)
+ Q_PROPERTY(qreal rotation READ rotation)
+ Q_PROPERTY(qreal pressure READ pressure)
+ Q_PROPERTY(QSizeF ellipseDiameters READ ellipseDiameters)
+ Q_GADGET
+
+public:
+ QQuickHandlerPoint();
+
+ int id() const { return m_id; }
+ Qt::MouseButtons pressedButtons() const { return m_pressedButtons; }
+ QPointF pressPosition() const { return m_pressPosition; }
+ QPointF scenePressPosition() const { return m_scenePressPosition; }
+ QPointF sceneGrabPosition() const { return m_sceneGrabPosition; }
+ QPointF position() const { return m_position; }
+ QPointF scenePosition() const { return m_scenePosition; }
+ QVector2D velocity() const { return m_velocity; }
+ qreal rotation() const { return m_rotation; }
+ qreal pressure() const { return m_pressure; }
+ QSizeF ellipseDiameters() const { return m_ellipseDiameters; }
+ QPointingDeviceUniqueId uniqueId() const { return m_uniqueId; }
+
+private:
+ void reset();
+ int m_id;
+ QPointingDeviceUniqueId m_uniqueId;
+ Qt::MouseButtons m_pressedButtons;
+ QPointF m_position;
+ QPointF m_scenePosition;
+ QPointF m_pressPosition;
+ QPointF m_scenePressPosition;
+ QPointF m_sceneGrabPosition;
+ QVector2D m_velocity;
+ qreal m_rotation;
+ qreal m_pressure;
+ QSizeF m_ellipseDiameters;
+ friend class QQuickPointerSingleHandler;
+};
+
class Q_QUICK_PRIVATE_EXPORT QQuickPointerSingleHandler : public QQuickPointerDeviceHandler
{
Q_OBJECT
- Q_PROPERTY(int pointId READ pointId NOTIFY pointIdChanged)
- Q_PROPERTY(QPointingDeviceUniqueId uniquePointId READ uniquePointId NOTIFY pointIdChanged)
- Q_PROPERTY(QPointF pos READ pos NOTIFY eventPointHandled)
- Q_PROPERTY(QPointF scenePos READ scenePos NOTIFY eventPointHandled)
- Q_PROPERTY(QPointF pressPos READ pressPos NOTIFY pressedButtonsChanged)
- Q_PROPERTY(QPointF scenePressPos READ scenePressPos NOTIFY pressedButtonsChanged)
- Q_PROPERTY(QPointF sceneGrabPos READ sceneGrabPos NOTIFY singlePointGrabChanged)
- Q_PROPERTY(Qt::MouseButtons pressedButtons READ pressedButtons NOTIFY pressedButtonsChanged)
- Q_PROPERTY(QVector2D velocity READ velocity NOTIFY eventPointHandled)
- Q_PROPERTY(qreal rotation READ rotation NOTIFY eventPointHandled)
- Q_PROPERTY(qreal pressure READ pressure NOTIFY eventPointHandled)
- Q_PROPERTY(QSizeF ellipseDiameters READ ellipseDiameters NOTIFY eventPointHandled)
Q_PROPERTY(Qt::MouseButtons acceptedButtons READ acceptedButtons WRITE setAcceptedButtons NOTIFY acceptedButtonsChanged)
+ Q_PROPERTY(QQuickHandlerPoint point READ point NOTIFY pointChanged)
public:
explicit QQuickPointerSingleHandler(QObject *parent = 0);
virtual ~QQuickPointerSingleHandler() { }
- int pointId() const { return m_pointId; }
- Qt::MouseButtons pressedButtons() const { return m_pressedButtons; }
Qt::MouseButtons acceptedButtons() const { return m_acceptedButtons; }
void setAcceptedButtons(Qt::MouseButtons buttons);
- QPointF pressPos() const { return m_pressPos; }
- QPointF scenePressPos() const { return m_scenePressPos; }
- QPointF sceneGrabPos() const { return m_sceneGrabPos; }
- QPointF pos() const { return m_pos; }
- QPointF scenePos() const { return parentItem()->mapToScene(m_pos); }
- QVector2D velocity() const { return m_velocity; }
- qreal rotation() const { return m_rotation; }
- qreal pressure() const { return m_pressure; }
- QSizeF ellipseDiameters() const { return m_ellipseDiameters; }
- QPointingDeviceUniqueId uniquePointId() const { return m_uniquePointId; }
+
+ QQuickHandlerPoint point() const { return m_pointInfo; }
Q_SIGNALS:
- void pointIdChanged();
- void pressedButtonsChanged();
- void acceptedButtonsChanged();
+ void pointChanged();
void singlePointGrabChanged(); // QQuickPointerHandler::grabChanged signal can't be a property notifier here
- void eventPointHandled();
+ void acceptedButtonsChanged();
protected:
bool wantsPointerEvent(QQuickPointerEvent *event) override;
@@ -103,7 +130,7 @@ protected:
void handlePointerEventImpl(QQuickPointerEvent *event) override;
virtual void handleEventPoint(QQuickEventPoint *point) = 0;
- QQuickEventPoint *currentPoint(QQuickPointerEvent *ev) { return ev->pointById(m_pointId); }
+ QQuickEventPoint *currentPoint(QQuickPointerEvent *ev) { return ev->pointById(m_pointInfo.m_id); }
void onGrabChanged(QQuickPointerHandler *grabber, QQuickEventPoint::GrabState stateChange, QQuickEventPoint *point) override;
void setIgnoreAdditionalPoints(bool v = true);
@@ -111,27 +138,17 @@ protected:
void moveTarget(QPointF pos, QQuickEventPoint *point);
private:
- void setPressedButtons(Qt::MouseButtons buttons);
void reset();
private:
- int m_pointId;
- QPointingDeviceUniqueId m_uniquePointId;
- Qt::MouseButtons m_pressedButtons;
- QPointF m_pos;
- QPointF m_pressPos;
- QPointF m_scenePressPos;
- QPointF m_sceneGrabPos;
- QVector2D m_velocity;
- qreal m_rotation;
- qreal m_pressure;
- QSizeF m_ellipseDiameters;
+ QQuickHandlerPoint m_pointInfo;
Qt::MouseButtons m_acceptedButtons;
bool m_ignoreAdditionalPoints : 1;
};
QT_END_NAMESPACE
+QML_DECLARE_TYPE(QQuickHandlerPoint)
QML_DECLARE_TYPE(QQuickPointerSingleHandler)
#endif // QQUICKPOINTERSINGLEHANDLER_H
diff --git a/src/quick/handlers/qquicktaphandler.cpp b/src/quick/handlers/qquicktaphandler.cpp
index d73e9fd100..272c6de000 100644
--- a/src/quick/handlers/qquicktaphandler.cpp
+++ b/src/quick/handlers/qquicktaphandler.cpp
@@ -128,7 +128,7 @@ bool QQuickTapHandler::wantsEventPoint(QQuickEventPoint *point)
ret = parentContains(point);
break;
case ReleaseWithinBounds:
- ret = point->pointId() == pointId();
+ ret = point->pointId() == this->point().id();
break;
}
break;
@@ -143,7 +143,7 @@ bool QQuickTapHandler::wantsEventPoint(QQuickEventPoint *point)
// so onGrabChanged(this, CancelGrabExclusive, point) and setPressed(false) will be called.
// But when m_gesturePolicy is DragThreshold, we don't get an exclusive grab, but
// we still don't want to be pressed anymore.
- if (!ret && point->pointId() == pointId() && point->state() != QQuickEventPoint::Stationary)
+ if (!ret && point->pointId() == this->point().id() && point->state() != QQuickEventPoint::Stationary)
setPressed(false, true, point);
return ret;
}
diff --git a/tests/auto/quick/pointerhandlers/qquicktaphandler/data/Button.qml b/tests/auto/quick/pointerhandlers/qquicktaphandler/data/Button.qml
index ead86e142b..6203a6769d 100644
--- a/tests/auto/quick/pointerhandlers/qquicktaphandler/data/Button.qml
+++ b/tests/auto/quick/pointerhandlers/qquicktaphandler/data/Button.qml
@@ -91,8 +91,8 @@ Rectangle {
color: "transparent"
width: radius * 2
height: radius * 2
- x: tap.scenePressPos.x - radius
- y: tap.scenePressPos.y - radius
+ x: tap.point.scenePressPosition.x - radius
+ y: tap.point.scenePressPosition.y - radius
opacity: 0.25
Component.onCompleted: parent = root.parent
}
diff --git a/tests/manual/pointer/content/FakeFlickable.qml b/tests/manual/pointer/content/FakeFlickable.qml
index 801b6b9f31..55dafef82e 100644
--- a/tests/manual/pointer/content/FakeFlickable.qml
+++ b/tests/manual/pointer/content/FakeFlickable.qml
@@ -83,7 +83,7 @@ Item {
DragHandler {
id: dragHandler
- onActiveChanged: if (!active) anim.restart(velocity)
+ onActiveChanged: if (!active) anim.restart(point.velocity)
}
MomentumAnimation {
id: anim
diff --git a/tests/manual/pointer/content/ScrollBar.qml b/tests/manual/pointer/content/ScrollBar.qml
index 94d5ae47a7..ef18ceb98f 100644
--- a/tests/manual/pointer/content/ScrollBar.qml
+++ b/tests/manual/pointer/content/ScrollBar.qml
@@ -71,9 +71,9 @@ Rectangle {
id: tap
onTapped: {
if (knob.state === "horizontal")
- knob.x = pos.x - knob.width / 2
+ knob.x = position.x - knob.width / 2
else if (knob.state === "vertical")
- knob.y = pos.y - knob.height / 2
+ knob.y = position.y - knob.height / 2
}
}
diff --git a/tests/manual/pointer/fakeFlickable.qml b/tests/manual/pointer/fakeFlickable.qml
index 22b23a00c8..0c6dbe4558 100644
--- a/tests/manual/pointer/fakeFlickable.qml
+++ b/tests/manual/pointer/fakeFlickable.qml
@@ -75,7 +75,7 @@ Rectangle {
onFlickStarted: console.log("flick started with velocity " + velocity)
- onFlickEnded: console.log("flick ended")
+ onFlickEnded: console.log("flick ended with velocity " + velocity)
Component.onCompleted: {
var request = new XMLHttpRequest()
diff --git a/tests/manual/pointer/flingAnimation.qml b/tests/manual/pointer/flingAnimation.qml
index c8722fabb1..d868fcc498 100644
--- a/tests/manual/pointer/flingAnimation.qml
+++ b/tests/manual/pointer/flingAnimation.qml
@@ -70,7 +70,7 @@ Rectangle {
objectName: "dragHandler" + index
onActiveChanged: {
if (!active)
- anim.restart(velocity)
+ anim.restart(point.velocity)
}
}
Rectangle {
diff --git a/tests/manual/pointer/photosurface.qml b/tests/manual/pointer/photosurface.qml
index 6601909a37..a2e8b2aede 100644
--- a/tests/manual/pointer/photosurface.qml
+++ b/tests/manual/pointer/photosurface.qml
@@ -110,7 +110,7 @@ Rectangle {
id: dragHandler
onActiveChanged: {
if (!active)
- anim.restart(velocity)
+ anim.restart(point.velocity)
}
}
diff --git a/tests/manual/pointer/pinchDragFlingMPTA.qml b/tests/manual/pointer/pinchDragFlingMPTA.qml
index 25be48bb42..6446a17873 100644
--- a/tests/manual/pointer/pinchDragFlingMPTA.qml
+++ b/tests/manual/pointer/pinchDragFlingMPTA.qml
@@ -85,7 +85,7 @@ Rectangle {
objectName: "DragHandler"
target: container
acceptedModifiers: Qt.MetaModifier
- onActiveChanged: if (!active) fling.restart(velocity)
+ onActiveChanged: if (!active) fling.restart(point.velocity)
}
}
MomentumAnimation { id: fling; target: container }
diff --git a/tests/manual/pointer/singlePointHandlerProperties.qml b/tests/manual/pointer/singlePointHandlerProperties.qml
index f5a938e401..f91094ee9e 100644
--- a/tests/manual/pointer/singlePointHandlerProperties.qml
+++ b/tests/manual/pointer/singlePointHandlerProperties.qml
@@ -49,11 +49,11 @@ Rectangle {
Item {
id: crosshairs
- x: dragHandler.pos.x - width / 2
- y: dragHandler.pos.y - height / 2
+ x: dragHandler.point.position.x - width / 2
+ y: dragHandler.point.position.y - height / 2
width: parent.width / 2; height: parent.height / 2
visible: dragHandler.active
- rotation: dragHandler.rotation
+ rotation: dragHandler.point.rotation
Rectangle {
color: "goldenrod"
@@ -69,7 +69,7 @@ Rectangle {
}
Rectangle {
color: "goldenrod"
- width: Math.max(2, 50 * dragHandler.pressure)
+ width: Math.max(2, 50 * dragHandler.point.pressure)
height: width
radius: width / 2
anchors.centerIn: parent
@@ -82,8 +82,8 @@ Rectangle {
implicitHeight: label.implicitHeight
Text {
id: label
- text: 'id: ' + dragHandler.pointId.toString(16) + " uid: " + dragHandler.uniquePointId.numericId +
- '\npos: (' + dragHandler.pos.x.toFixed(2) + ', ' + dragHandler.pos.y.toFixed(2) + ')'
+ text: 'id: ' + dragHandler.point.id.toString(16) + " uid: " + dragHandler.point.uniqueId.numericId +
+ '\npos: (' + dragHandler.point.position.x.toFixed(2) + ', ' + dragHandler.point.position.y.toFixed(2) + ')'
}
}
}
@@ -91,8 +91,8 @@ Rectangle {
color: "transparent"
border.color: "white"
antialiasing: true
- width: dragHandler.ellipseDiameters.width
- height: dragHandler.ellipseDiameters.height
+ width: dragHandler.point.ellipseDiameters.width
+ height: dragHandler.point.ellipseDiameters.height
radius: Math.min(width / 2, height / 2)
anchors.centerIn: parent
}
@@ -100,11 +100,11 @@ Rectangle {
Rectangle {
id: velocityVector
visible: width > 0
- width: dragHandler.velocity.length() * 100
+ width: dragHandler.point.velocity.length() * 100
height: 2
- x: dragHandler.pos.x
- y: dragHandler.pos.y
- rotation: Math.atan2(dragHandler.velocity.y, dragHandler.velocity.x) * 180 / Math.PI
+ x: dragHandler.point.position.x
+ y: dragHandler.point.position.y
+ rotation: Math.atan2(dragHandler.point.velocity.y, dragHandler.point.velocity.x) * 180 / Math.PI
transformOrigin: Item.BottomLeft
antialiasing: true
@@ -150,13 +150,14 @@ Rectangle {
DragHandler {
id: dragHandler
target: null
- onGrabChanged: if (active) {
- console.log("grabbed " + point.pointId + " @ " + sceneGrabPos)
- grabbingLocationIndicator.createObject(root, {"x": sceneGrabPos.x, "y": sceneGrabPos.y - 16})
+ onGrabChanged: if (active) { // 'point' is an implicit parameter referencing to a QQuickEventPoint instance
+ console.log("grabbed " + point.pointId + " @ " + point.sceneGrabPos)
+ grabbingLocationIndicator.createObject(root, {"x": point.sceneGrabPos.x, "y": point.sceneGrabPos.y - 16})
}
- onPressedButtonsChanged: {
- if (pressedButtons)
- mouseButtonIndicator.createObject(root, {"x": pressPos.x - 44, "y": pressPos.y - 64, "buttons": pressedButtons})
+ onPointChanged: {
+ // Here, 'point' is referring to the property of the DragHandler
+ if (point.pressedButtons)
+ mouseButtonIndicator.createObject(root, {"x": point.pressPosition.x - 44, "y": point.pressPosition.y - 64, "buttons": point.pressedButtons})
}
}
}
diff --git a/tests/manual/pointer/tapHandler.qml b/tests/manual/pointer/tapHandler.qml
index 06070a02ff..5dac99a899 100644
--- a/tests/manual/pointer/tapHandler.qml
+++ b/tests/manual/pointer/tapHandler.qml
@@ -60,17 +60,13 @@ Item {
gesturePolicy: (policyDragThresholdCB.checked ? TapHandler.DragThreshold :
policyWithinBoundsCB.checked ? TapHandler.WithinBounds :
TapHandler.ReleaseWithinBounds)
- onPressedButtonsChanged: switch (pressedButtons) {
- case Qt.MiddleButton: borderBlink.blinkColor = "orange"; break;
- case Qt.RightButton: borderBlink.blinkColor = "magenta"; break;
- default: borderBlink.blinkColor = "green"; break;
- }
+
onCanceled: {
- console.log("canceled @ " + pos)
+ console.log("canceled @ " + point.position)
borderBlink.blinkColor = "red"
borderBlink.start()
}
- onTapped: {
+ onTapped: { // 'point' is an implicit parameter referencing to a QQuickEventPoint instance
console.log("tapped @ " + point.pos + " button(s) " + point.event.button + " tapCount " + tapCount)
if (tapCount > 1) {
tapCountLabel.text = tapCount
@@ -80,7 +76,7 @@ Item {
}
}
onLongPressed: longPressFeedback.createObject(rect,
- {"x": pos.x, "y": pos.y,
+ {"x": point.position.x, "y": point.position.y,
"text": Math.round(handler.timeHeld).toFixed(3) + " sec",
"color": borderBlink.blinkColor})
}
@@ -121,8 +117,8 @@ Item {
color: "transparent"
width: radius * 2
height: radius * 2
- x: handler.pressPos.x - radius
- y: handler.pressPos.y - radius
+ x: handler.point.pressPosition.x - radius
+ y: handler.point.pressPosition.y - radius
opacity: 0.25
}
@@ -133,7 +129,13 @@ Item {
SequentialAnimation {
id: borderBlink
- property color blinkColor: "blue"
+ property color blinkColor: (function(pbtns) {
+ switch (pbtns) {
+ case Qt.MiddleButton: return "orange";
+ case Qt.RightButton: return "magenta";
+ default: return "green";
+ }
+ })(handler.point.pressedButtons)
loops: 3
ScriptAction { script: rect.border.color = borderBlink.blinkColor }
PauseAnimation { duration: 100 }