diff options
author | Ralf Engels <ralf.engels@nokia.com> | 2010-05-28 19:34:19 +0200 |
---|---|---|
committer | Ralf Engels <ralf.engels@nokia.com> | 2010-05-28 19:34:19 +0200 |
commit | 0fa945b55fc45f578bf97ec8f1c3375437707f0b (patch) | |
tree | 655782817b2416161f35ea3470b308ec1f2037f2 /scroller | |
parent | 7f241982bf395fa703d8c0c91fa4e7e25085cca3 (diff) |
Revert "Finally scroller is working again."
This reverts commit d2d5f539dd0d36a83ddb35b5d404315f6569560c.
Diffstat (limited to 'scroller')
-rw-r--r-- | scroller/qflickgesture.cpp | 71 |
1 files changed, 29 insertions, 42 deletions
diff --git a/scroller/qflickgesture.cpp b/scroller/qflickgesture.cpp index 1feb050..7a6025e 100644 --- a/scroller/qflickgesture.cpp +++ b/scroller/qflickgesture.cpp @@ -111,36 +111,26 @@ QGestureRecognizer::Result QFlickGestureRecognizer::recognize(QGesture *state, // eat mouse events if the scroller is active if ((scroller->state() == QKineticScroller::StateDragging || scroller->state() == QKineticScroller::StateScrolling) && - (event->type() == QEvent::MouseButtonPress || - event->type() == QEvent::MouseMove || - event->type() == QEvent::MouseButtonDblClick || - event->type() == QEvent::MouseButtonRelease) ) + (event->type() != QEvent::MouseButtonPress && + event->type() != QEvent::MouseMove && + event->type() != QEvent::MouseButtonDblClick && + event->type() != QEvent::MouseButtonRelease) ) return QGestureRecognizer::Ignore | QGestureRecognizer::ConsumeEventHint; - qDebug()<<"recognize event: "<<event<<"target:"<<d->target<<"scroller:"<<d->scroller(); - - QKineticScroller::State oldState = scroller->state(); - // ignore all other events except touch - /* - QGestureRecognizer::Result resultVector[4] = { - QGestureRecognizer::Ignore, - QGestureRecognizer::MayBeGesture, - QGestureRecognizer::TriggerGesture, - QGestureRecognizer::TriggerGesture }; - */ - if (event->type() != QEvent::TouchBegin && event->type() != QEvent::TouchEnd && event->type() != QEvent::TouchUpdate) return QGestureRecognizer::Ignore; - // return resultVector[(int)oldState]; + + qDebug()<<"recognize event: "<<event<<"target:"<<d->target<<"scroller:"<<d->scroller(); const QTouchEvent *ev = static_cast<const QTouchEvent *>(event); QTouchEvent::TouchPoint tp = ev->touchPoints().first(); qint64 timestamp = d->timer.elapsed(); + QKineticScroller::State oldState = scroller->state(); QGestureRecognizer::Result result = QGestureRecognizer::Ignore; switch (event->type()) { @@ -159,31 +149,28 @@ QGestureRecognizer::Result QFlickGestureRecognizer::recognize(QGesture *state, QKineticScroller::State newState = scroller->state(); - // old state: inactive, pressed, dragging, scrolling - QGestureRecognizer::Result resultMatrix[4][4] = { - // new state inactive - {QGestureRecognizer::Ignore, - QGestureRecognizer::CancelGesture, - QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint, - QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint}, - // new state pressed - {QGestureRecognizer::MayBeGesture, - QGestureRecognizer::MayBeGesture, - QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint, - QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint}, - // new state dragging - {QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint, - QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint, - QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint, - QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint}, - // new state scrolling - {QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint, - QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint, - QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint, - QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint} - }; - - return resultMatrix[(int)newState][(int)oldState]; + bool oldTriggered = (oldState == QKineticScroller::StateInactive) || + (oldState == QKineticScroller::StatePressed); + + bool newTriggered = (newState == QKineticScroller::StateInactive) || + (newState == QKineticScroller::StatePressed); + + if (event->type() == QEvent::TouchBegin && !newTriggered) + return QGestureRecognizer::MayBeGesture; + + if (event->type() == QEvent::TouchEnd && !oldTriggered) + return QGestureRecognizer::CancelGesture; + + if (!oldTriggered && !newTriggered) + return QGestureRecognizer::Ignore; + + if (oldTriggered && newTriggered) + return QGestureRecognizer::Ignore | QGestureRecognizer::ConsumeEventHint; + + if (!oldTriggered) + return QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint; + + return QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint; } void QFlickGestureRecognizer::reset(QGesture *state) |