diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2016-08-04 13:20:24 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2016-08-04 14:10:13 +0000 |
commit | 4ecd73fbed2afe71dc7302bafd595518a4779541 (patch) | |
tree | ddde4ab0bdfebcd7538774f6ea7809f5ff66f943 /src | |
parent | c75c4201bc26d6e85abace15d5e773b0702bacd2 (diff) |
Pass pointerEvent into QQuickWindowPrivate::deliverTouchAsMouse
Change-Id: I53c737498f27db3e1fea4fd2f9e10f75a2b48d14
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 13 | ||||
-rw-r--r-- | src/quick/items/qquickwindow_p.h | 2 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index cf50733d1b..80d867a05c 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -622,10 +622,14 @@ bool QQuickWindowPrivate::checkIfDoubleClicked(ulong newPressEventTimestamp) return doubleClicked; } -bool QQuickWindowPrivate::deliverTouchAsMouse(QQuickItem *item, QTouchEvent *event) +bool QQuickWindowPrivate::deliverTouchAsMouse(QQuickItem *item, QQuickPointerEvent *pointerEvent) { Q_Q(QQuickWindow); - auto device = QQuickPointerDevice::touchDevice(event->device()); + auto device = pointerEvent->device(); + + // FIXME: make this work for mouse events too and get rid of the asTouchEvent in here. + Q_ASSERT(pointerEvent->asPointerTouchEvent()); + QTouchEvent *event = pointerEvent->asPointerTouchEvent()->touchEventForItem(item); // For each point, check if it is accepted, if not, try the next point. // Any of the fingers can become the mouse one. @@ -640,8 +644,7 @@ bool QQuickWindowPrivate::deliverTouchAsMouse(QQuickItem *item, QTouchEvent *eve if (!item->contains(pos)) break; - // FIXME: this is a bit backwards, should just have the pointer event passed into the function - auto pointerEventPoint = device->pointerEvent()->pointById(p.id()); + auto pointerEventPoint = pointerEvent->pointById(p.id()); pointerEventPoint->setGrabber(item); qCDebug(DBG_TOUCH_TARGET) << "TP (mouse)" << p.id() << "->" << item; QScopedPointer<QMouseEvent> mousePress(touchToMouseEvent(QEvent::MouseButtonPress, p, event, item, false)); @@ -2285,7 +2288,7 @@ bool QQuickWindowPrivate::deliverMatchingPointsToItem(QQuickItem *item, QQuickPo QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); if (!eventAccepted && (itemPrivate->acceptedMouseButtons() & Qt::LeftButton)) { // send mouse event - if (deliverTouchAsMouse(item, touchEvent.data())) + if (deliverTouchAsMouse(item, event)) eventAccepted = true; } diff --git a/src/quick/items/qquickwindow_p.h b/src/quick/items/qquickwindow_p.h index 90e75fb751..3328eb65c4 100644 --- a/src/quick/items/qquickwindow_p.h +++ b/src/quick/items/qquickwindow_p.h @@ -138,7 +138,7 @@ public: // Mouse positions are saved in widget coordinates QPointF lastMousePosition; - bool deliverTouchAsMouse(QQuickItem *item, QTouchEvent *event); + bool deliverTouchAsMouse(QQuickItem *item, QQuickPointerEvent *pointerEvent); void translateTouchEvent(QTouchEvent *touchEvent); void setMouseGrabber(QQuickItem *grabber); void grabTouchPoints(QQuickItem *grabber, const QVector<int> &ids); |