diff options
author | Adriano Rezende <[email protected]> | 2012-02-26 17:26:53 +0100 |
---|---|---|
committer | Qt by Nokia <[email protected]> | 2012-04-19 06:16:28 +0200 |
commit | adb0848513198db72c6066b9a97077c7083df9fe (patch) | |
tree | be96156388b1e348cad79ec98bd30a87ac364f7a /src/quick/items/qquickpathview.cpp | |
parent | 7bd68f6447c79aa58a9854bb6c44db00ea36a06a (diff) |
Add contains method to QQuickItem public API
This method can be overwritten in order to provide fine grained control
over the mouse events handled by the item.
Change-Id: I23cb61958d3ac0b2f5091c47fa9e0ed07dc5e5d0
Reviewed-by: Martin Jones <[email protected]>
Diffstat (limited to 'src/quick/items/qquickpathview.cpp')
-rw-r--r-- | src/quick/items/qquickpathview.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/quick/items/qquickpathview.cpp b/src/quick/items/qquickpathview.cpp index 836943c478..ba5b237596 100644 --- a/src/quick/items/qquickpathview.cpp +++ b/src/quick/items/qquickpathview.cpp @@ -1300,12 +1300,10 @@ void QQuickPathViewPrivate::handleMousePressEvent(QMouseEvent *event) if (!interactive || !items.count() || !model || !modelCount) return; velocityBuffer.clear(); - QPointF scenePoint = q->mapToScene(event->localPos()); int idx = 0; for (; idx < items.count(); ++idx) { - QRectF rect = items.at(idx)->boundingRect(); - rect = items.at(idx)->mapRectToScene(rect); - if (rect.contains(scenePoint)) + QQuickItem *item = items.at(idx); + if (item->contains(item->mapFromScene(event->windowPos()))) break; } if (idx == items.count() && dragMargin == 0.) // didn't click on an item @@ -1470,12 +1468,13 @@ void QQuickPathViewPrivate::handleMouseReleaseEvent(QMouseEvent *) bool QQuickPathView::sendMouseEvent(QMouseEvent *event) { Q_D(QQuickPathView); - QRectF myRect = mapRectToScene(QRectF(0, 0, width(), height())); + QPointF localPos = mapFromScene(event->windowPos()); + QQuickCanvas *c = canvas(); QQuickItem *grabber = c ? c->mouseGrabberItem() : 0; bool stealThisEvent = d->stealMouse; - if ((stealThisEvent || myRect.contains(event->windowPos())) && (!grabber || !grabber->keepMouseGrab())) { - QMouseEvent mouseEvent(event->type(), mapFromScene(event->windowPos()), event->windowPos(), event->screenPos(), + if ((stealThisEvent || contains(localPos)) && (!grabber || !grabber->keepMouseGrab())) { + QMouseEvent mouseEvent(event->type(), localPos, event->windowPos(), event->screenPos(), event->button(), event->buttons(), event->modifiers()); mouseEvent.setAccepted(false); |