summaryrefslogtreecommitdiffstats
path: root/scroller
diff options
context:
space:
mode:
authorRalf Engels <ralf.engels@nokia.com>2010-05-28 19:34:19 +0200
committerRalf Engels <ralf.engels@nokia.com>2010-05-28 19:34:19 +0200
commit0fa945b55fc45f578bf97ec8f1c3375437707f0b (patch)
tree655782817b2416161f35ea3470b308ec1f2037f2 /scroller
parent7f241982bf395fa703d8c0c91fa4e7e25085cca3 (diff)
Revert "Finally scroller is working again."
This reverts commit d2d5f539dd0d36a83ddb35b5d404315f6569560c.
Diffstat (limited to 'scroller')
-rw-r--r--scroller/qflickgesture.cpp71
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)