QQuickMouseEventEx me = touchToMouseEvent(QEvent::MouseButtonDblClick, p);
me.setTimestamp(event->timestamp());
me.setAccepted(false);
+ me.setCapabilities(event->device()->capabilities());
if (!mouseGrabberItem) {
if (deliverInitialMousePressEvent(rootItem, &me)) {
touchMouseId = p.id();
QQuickMouseEventEx me = touchToMouseEvent(QEvent::MouseButtonPress, p);
me.setTimestamp(event->timestamp());
me.setAccepted(false);
+ me.setCapabilities(event->device()->capabilities());
deliverMouseEvent(&me);
if (me.isAccepted()) {
touchMouseId = p.id();
if (p.state() & Qt::TouchPointMoved) {
QQuickMouseEventEx me = touchToMouseEvent(QEvent::MouseMove, p);
me.setTimestamp(event->timestamp());
+ me.setCapabilities(event->device()->capabilities());
if (!mouseGrabberItem) {
if (lastMousePosition.isNull())
lastMousePosition = me.windowPos();
return;
QQuickMouseEventEx me = touchToMouseEvent(QEvent::MouseButtonRelease, p);
me.setTimestamp(event->timestamp());
+ me.setCapabilities(event->device()->capabilities());
deliverMouseEvent(&me);
mouseGrabberItem = 0;
}
QQuickMouseEventEx(const QMouseEvent &event)
: QMouseEvent(event)
{
- if (extended(&event))
- setVelocity(extended(&event)->velocity());
+ const QQuickMouseEventEx *eventEx = extended(&event);
+ if (eventEx) {
+ setVelocity(eventEx->velocity());
+ setCapabilities(eventEx->capabilities());
+ }
}
static const QQuickMouseEventEx *extended(const QMouseEvent *e) {
}
QVector2D velocity() const { return _velocity; }
+ void setCapabilities(QTouchDevice::Capabilities caps) {
+ setExtended();
+ _capabilities = caps;
+ }
+ QTouchDevice::Capabilities capabilities() const { return _capabilities; }
+
private:
QVector2D _velocity;
+ QTouchDevice::Capabilities _capabilities;
};
lastPosTime = currentTimestamp;
QQuickMouseEventEx *extended = QQuickMouseEventEx::extended(event);
if (q->yflick() && !rejectY) {
- if (extended) {
+ if (extended && extended->capabilities().testFlag(QTouchDevice::Velocity)) {
vData.addVelocitySample(extended->velocity().y(), maxVelocity);
} else {
qreal dy = event->localPos().y()-lastPos.y();
}
}
if (q->xflick() && !rejectX) {
- if (extended) {
+ if (extended && extended->capabilities().testFlag(QTouchDevice::Velocity)) {
hData.addVelocitySample(extended->velocity().x(), maxVelocity);
} else {
qreal dx = event->localPos().x()-lastPos.x();
qreal vVelocity = 0;
if (elapsed < 100 && vData.velocity != 0.) {
QQuickMouseEventEx *extended = QQuickMouseEventEx::extended(event);
- vVelocity = extended ? extended->velocity().y() : vData.velocity;
+ vVelocity = (extended && extended->capabilities().testFlag(QTouchDevice::Velocity))
+ ? extended->velocity().y() : vData.velocity;
}
if (vData.atBeginning || vData.atEnd) {
vVelocity /= 2;
qreal hVelocity = 0;
if (elapsed < 100 && hData.velocity != 0.) {
QQuickMouseEventEx *extended = QQuickMouseEventEx::extended(event);
- hVelocity = extended ? extended->velocity().x() : hData.velocity;
+ hVelocity = (extended && extended->capabilities().testFlag(QTouchDevice::Velocity))
+ ? extended->velocity().x() : hData.velocity;
}
if (hData.atBeginning || hData.atEnd) {
hVelocity /= 2;
QQuickMouseEventEx mouseEvent(event->type(), mapFromScene(event->windowPos()),
event->windowPos(), event->screenPos(),
event->button(), event->buttons(), event->modifiers());
- if (QQuickMouseEventEx::extended(event))
- mouseEvent.setVelocity(QQuickMouseEventEx::extended(event)->velocity());
+ QQuickMouseEventEx *eventEx = QQuickMouseEventEx::extended(event);
+ if (eventEx) {
+ mouseEvent.setVelocity(eventEx->velocity());
+ mouseEvent.setCapabilities(eventEx->capabilities());
+ }
mouseEvent.setTimestamp(event->timestamp());
mouseEvent.setAccepted(false);