diff options
author | Matthew Vogt <matthew.vogt@nokia.com> | 2012-03-13 15:06:40 +1000 |
---|---|---|
committer | Matthew Vogt <matthew.vogt@nokia.com> | 2012-03-13 15:22:14 +1000 |
commit | 784555f3032194a8923d804a8ce84957f113caf6 (patch) | |
tree | 6b538cea5bf82bd5288ac180125abd1bb312ddad /src/quick/items/qquickcanvas.cpp | |
parent | 1f52c5430144eb7ba6baa7e3954675ca0707b947 (diff) | |
parent | 648c80c4c0759efb6e35fac7acc8daad5aab13e2 (diff) |
Merge branch 'master' of git://gitorious.org/qt/qtdeclarative into merge-master
Change-Id: Iaefec13503dadfa200539b8de7a2d80fc5bb3bcf
Diffstat (limited to 'src/quick/items/qquickcanvas.cpp')
-rw-r--r-- | src/quick/items/qquickcanvas.cpp | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/quick/items/qquickcanvas.cpp b/src/quick/items/qquickcanvas.cpp index 60f1992b57..f14eccd9a9 100644 --- a/src/quick/items/qquickcanvas.cpp +++ b/src/quick/items/qquickcanvas.cpp @@ -376,10 +376,8 @@ void QQuickCanvasPrivate::translateTouchToMouse(QTouchEvent *event) { if (event->type() == QEvent::TouchCancel) { touchMouseId = -1; - if (!mouseGrabberItem) - return; - mouseGrabberItem->ungrabMouse(); - mouseGrabberItem = 0; + if (mouseGrabberItem) + mouseGrabberItem->ungrabMouse(); return; } for (int i = 0; i < event->touchPoints().count(); ++i) { @@ -447,7 +445,8 @@ void QQuickCanvasPrivate::translateTouchToMouse(QTouchEvent *event) me.setTimestamp(event->timestamp()); me.setCapabilities(event->device()->capabilities()); deliverMouseEvent(&me); - mouseGrabberItem = 0; + if (mouseGrabberItem) + mouseGrabberItem->ungrabMouse(); } break; } @@ -947,13 +946,13 @@ bool QQuickCanvasPrivate::deliverInitialMousePressEvent(QQuickItem *item, QMouse QMouseEvent me(event->type(), p, event->windowPos(), event->screenPos(), event->button(), event->buttons(), event->modifiers()); me.accept(); - mouseGrabberItem = item; + item->grabMouse(); q->sendEvent(item, &me); event->setAccepted(me.isAccepted()); if (me.isAccepted()) return true; - mouseGrabberItem->ungrabMouse(); - mouseGrabberItem = 0; + if (mouseGrabberItem) + mouseGrabberItem->ungrabMouse(); } } @@ -1023,7 +1022,8 @@ void QQuickCanvas::mouseReleaseEvent(QMouseEvent *event) } d->deliverMouseEvent(event); - d->mouseGrabberItem = 0; + if (d->mouseGrabberItem) + d->mouseGrabberItem->ungrabMouse(); } /*! \reimp */ @@ -1560,6 +1560,12 @@ bool QQuickCanvas::sendEvent(QQuickItem *item, QEvent *e) QQuickItemPrivate::get(item)->deliverMouseEvent(static_cast<QMouseEvent *>(e)); } break; + case QEvent::UngrabMouse: + if (!d->sendFilteredMouseEvent(item->parentItem(), item, e)) { + e->accept(); + item->mouseUngrabEvent(); + } + break; case QEvent::Wheel: QQuickItemPrivate::get(item)->deliverWheelEvent(static_cast<QWheelEvent *>(e)); break; |