diff options
author | Ralf Engels <ralf.engels@nokia.com> | 2010-05-27 16:05:02 +0200 |
---|---|---|
committer | Ralf Engels <ralf.engels@nokia.com> | 2010-05-27 16:05:02 +0200 |
commit | e3c1d7d45146fe99ef766a043c9d9eca3b4e22ed (patch) | |
tree | 9347f57a1e806ca4e38d89388f0139bee61d0618 | |
parent | 536b3fb03ace6d49697d0cda19368133672de778 (diff) |
Small improvements for flick gesture
-rw-r--r-- | scroller/qflickgesture.cpp | 29 | ||||
-rw-r--r-- | scroller/qkineticscroller.cpp | 8 |
2 files changed, 23 insertions, 14 deletions
diff --git a/scroller/qflickgesture.cpp b/scroller/qflickgesture.cpp index a1eef75..6fa9dde 100644 --- a/scroller/qflickgesture.cpp +++ b/scroller/qflickgesture.cpp @@ -128,7 +128,7 @@ QGestureRecognizer::Result QFlickGestureRecognizer::recognize(QGesture *state, event->type() == QEvent::MouseButtonRelease) ) return QGestureRecognizer::Ignore | QGestureRecognizer::ConsumeEventHint; - qDebug()<<"recognize event: "<<event<<"target:"<<d->target<<"scroller:"<<d->scroller(); + // qDebug()<<"recognize event: "<<event<<"target:"<<d->target<<"scroller:"<<d->scroller(); QKineticScroller::State oldState = scroller->state(); @@ -158,12 +158,25 @@ QGestureRecognizer::Result QFlickGestureRecognizer::recognize(QGesture *state, case QEvent::TouchBegin: scroller->handleInput(QKineticScroller::InputPress, tp.pos(), timestamp); break; + // return QGestureRecognizer::MayBeGesture; case QEvent::TouchEnd: scroller->handleInput(QKineticScroller::InputRelease, tp.pos(), timestamp); break; + /* + if (oldState == QKineticScroller::StatePressed) + return QGestureRecognizer::CancelGesture; + else + return QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint; + */ case QEvent::TouchUpdate: scroller->handleInput(QKineticScroller::InputMove, tp.pos(), timestamp); break; + /* + if (scroller->state() == QKineticScroller::StatePressed) + return QGestureRecognizer::MayBeGesture; + else + return QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint; + */ default: break; } @@ -179,19 +192,19 @@ QGestureRecognizer::Result QFlickGestureRecognizer::recognize(QGesture *state, QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint}, // new state pressed {QGestureRecognizer::MayBeGesture, - QGestureRecognizer::MayBeGesture, + QGestureRecognizer::Ignore, 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}, + QGestureRecognizer::Ignore | QGestureRecognizer::ConsumeEventHint, + QGestureRecognizer::Ignore | QGestureRecognizer::ConsumeEventHint}, // new state scrolling {QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint, QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint, - QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint, - QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint} + QGestureRecognizer::Ignore | QGestureRecognizer::ConsumeEventHint, + QGestureRecognizer::Ignore | QGestureRecognizer::ConsumeEventHint} }; return resultMatrix[(int)newState][(int)oldState]; @@ -199,9 +212,7 @@ QGestureRecognizer::Result QFlickGestureRecognizer::recognize(QGesture *state, void QFlickGestureRecognizer::reset(QGesture *state) { - QFlickGesture *flick = static_cast<QFlickGesture*>(state); - flick->d->target = 0; - flick->d->timer.start(); + // carefull here: the gesture is reset if we cancel or finishe the gesture. QGestureRecognizer::reset(state); } diff --git a/scroller/qkineticscroller.cpp b/scroller/qkineticscroller.cpp index 75556a4..e031ec1 100644 --- a/scroller/qkineticscroller.cpp +++ b/scroller/qkineticscroller.cpp @@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE bool qt_sendSpontaneousEvent(QObject *receiver, QEvent *event); -#define KINETIC_SCROLLER_DEBUG +// #define KINETIC_SCROLLER_DEBUG #ifdef KINETIC_SCROLLER_DEBUG # define qKSDebug qDebug @@ -339,7 +339,6 @@ bool QKineticScroller::handleInput(Input input, const QPointF &position, qint64 { Q_D(QKineticScroller); - qKSDebug() << "QKS::handleInput(" << input << ", " << position << ", " << timestamp << ")"; struct statechange { State state; @@ -361,7 +360,7 @@ bool QKineticScroller::handleInput(Input input, const QPointF &position, qint64 statechange *sc = statechanges + i; if (d->state == sc->state && input == sc->input) - return (d->*sc->handler)(input, position, timestamp); + return (d->*sc->handler)(input, position - d->overshootPosition, timestamp); } qWarning() << "Unhandled input: got input " << d->inputName(input) << " while in state " << d->stateName(d->state); @@ -655,10 +654,9 @@ void QKineticScrollerPrivate::handleDrag(const QPointF &position, qint64 timesta bool QKineticScrollerPrivate::pressWhileInactive(QKineticScroller::Input, const QPointF &position, qint64 timestamp) { QScrollPrepareEvent spe(position); - qDebug() << "Sending prepare event to "<<receiver; sendEvent(receiver, &spe); - qDebug() << "Returned with "<<spe.isAccepted()<<"for"<<spe.target(); + qKSDebug() << "QScrollPrepareEvent returned with "<<spe.isAccepted()<<"for"<<spe.target(); if (spe.isAccepted() && spe.target()) { target = spe.target(); viewportSize = spe.viewportSize(); |