summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBea Lam <bea.lam@nokia.com>2010-03-03 03:09:07 (GMT)
committerBea Lam <bea.lam@nokia.com>2010-03-03 03:09:07 (GMT)
commit5d4eeb039e92a3e2ac9b31f91a4274e3d5aea459 (patch)
treef421a3e7098ca427b06ec51b6f5725a6cd25cdaf /src
parent4c0b6e0d0a5303861098f653e1c8e8823480ac82 (diff)
parent59e78ceb3b29b2dadad2b510bb58c9dd43f09e19 (diff)
downloadQt-5d4eeb039e92a3e2ac9b31f91a4274e3d5aea459.zip
Qt-5d4eeb039e92a3e2ac9b31f91a4274e3d5aea459.tar.gz
Qt-5d4eeb039e92a3e2ac9b31f91a4274e3d5aea459.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7
Diffstat (limited to 'src')
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable.cpp20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
index c54ddd0..2fdd720 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
@@ -682,7 +682,7 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent
else
rejectY = true;
}
- if (!rejectY) {
+ if (!rejectY && stealMouse) {
_moveY.setValue(newY);
moved = true;
}
@@ -709,7 +709,7 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent
else
rejectX = true;
}
- if (!rejectX) {
+ if (!rejectX && stealMouse) {
_moveX.setValue(newX);
moved = true;
}
@@ -752,6 +752,8 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent
void QDeclarativeFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_Q(QDeclarativeFlickable);
+ stealMouse = false;
+ q->setKeepMouseGrab(false);
pressed = false;
if (lastPosTime.isNull())
return;
@@ -781,7 +783,6 @@ void QDeclarativeFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEv
fixupX();
}
- stealMouse = false;
lastPosTime = QTime();
if (!timeline.isActive())
@@ -804,6 +805,8 @@ void QDeclarativeFlickable::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
Q_D(QDeclarativeFlickable);
if (d->interactive) {
d->handleMouseMoveEvent(event);
+ if (d->stealMouse)
+ setKeepMouseGrab(true);
event->accept();
} else {
QDeclarativeItem::mouseMoveEvent(event);
@@ -1141,7 +1144,8 @@ bool QDeclarativeFlickable::sendMouseEvent(QGraphicsSceneMouseEvent *event)
QGraphicsScene *s = scene();
QDeclarativeItem *grabber = s ? qobject_cast<QDeclarativeItem*>(s->mouseGrabberItem()) : 0;
- if ((d->stealMouse || myRect.contains(event->scenePos().toPoint())) && (!grabber || !grabber->keepMouseGrab())) {
+ bool stealThisEvent = d->stealMouse;
+ if ((stealThisEvent || myRect.contains(event->scenePos().toPoint())) && (!grabber || !grabber->keepMouseGrab())) {
mouseEvent.setAccepted(false);
for (int i = 0x1; i <= 0x10; i <<= 1) {
if (event->buttons() & i) {
@@ -1176,17 +1180,19 @@ bool QDeclarativeFlickable::sendMouseEvent(QGraphicsSceneMouseEvent *event)
break;
}
grabber = qobject_cast<QDeclarativeItem*>(s->mouseGrabberItem());
- if (grabber && d->stealMouse && !grabber->keepMouseGrab() && grabber != this) {
+ if (grabber && stealThisEvent && !grabber->keepMouseGrab() && grabber != this) {
d->clearDelayedPress();
grabMouse();
}
- return d->stealMouse || d->delayedPressEvent;
+ return stealThisEvent || d->delayedPressEvent;
} else if (!d->lastPosTime.isNull()) {
d->lastPosTime = QTime();
}
- if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease)
+ if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease) {
d->clearDelayedPress();
+ d->stealMouse = false;
+ }
return false;
}