diff options
author | Adriano Rezende <atdrez@gmail.com> | 2012-02-26 17:26:53 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-19 06:16:28 +0200 |
commit | adb0848513198db72c6066b9a97077c7083df9fe (patch) | |
tree | be96156388b1e348cad79ec98bd30a87ac364f7a /src/quick/items/qquickmousearea.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 <martin.jones@nokia.com>
Diffstat (limited to 'src/quick/items/qquickmousearea.cpp')
-rw-r--r-- | src/quick/items/qquickmousearea.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp index b8555124eb..956ca09aac 100644 --- a/src/quick/items/qquickmousearea.cpp +++ b/src/quick/items/qquickmousearea.cpp @@ -263,7 +263,7 @@ bool QQuickMouseAreaPrivate::propagateHelper(QQuickMouseEvent *ev, QQuickItem *i if (itemPrivate->flags & QQuickItem::ItemClipsChildrenToShape) { QPointF p = item->mapFromScene(sp); - if (!QRectF(0, 0, item->width(), item->height()).contains(p)) + if (!item->contains(p)) return false; } @@ -293,7 +293,7 @@ bool QQuickMouseAreaPrivate::propagateHelper(QQuickMouseEvent *ev, QQuickItem *i break; } QPointF p = item->mapFromScene(sp); - if (QRectF(0, 0, item->width(), item->height()).contains(p)) { + if (item->contains(p)) { ev->setX(p.x()); ev->setY(p.y()); ev->setAccepted(true);//It is connected, they have to explicitly ignore to let it slide @@ -725,10 +725,10 @@ void QQuickMouseArea::mouseMoveEvent(QMouseEvent *event) // ### we should skip this if these signals aren't used // ### can GV handle this for us? - bool contains = boundingRect().contains(d->lastPos); - if (d->hovered && !contains) + const bool isInside = contains(d->lastPos); + if (d->hovered && !isInside) setHovered(false); - else if (!d->hovered && contains) + else if (!d->hovered && isInside) setHovered(true); if (d->drag && d->drag->target()) { @@ -921,13 +921,13 @@ void QQuickMouseArea::mouseUngrabEvent() bool QQuickMouseArea::sendMouseEvent(QMouseEvent *event) { Q_D(QQuickMouseArea); - 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); |