diff -r 6aeb7a756187 -r 3c88a81ff781 qstmgesturelib/recognisers/qstmflickgesturerecogniser.cpp --- a/qstmgesturelib/recognisers/qstmflickgesturerecogniser.cpp Thu Sep 23 15:32:11 2010 -0400 +++ b/qstmgesturelib/recognisers/qstmflickgesturerecogniser.cpp Fri Oct 15 17:30:59 2010 -0400 @@ -58,7 +58,7 @@ if (m_powner == puie->target() && eventCode == qstmUiEventEngine::ERelease) { if (m_loggingenabled) { - LOGARG("QStm_FlickGestureRecogniser: 0x%x ERelease: num %d code %d, %d", + LOGARG("QStm_FlickGestureRecogniser: 0x%x ERelease: num %d pos: [%d, %d]", this, countOfEvents, puie->currentXY().x(), puie->currentXY().y()); } // Check if the speed before release was fast enough for flick @@ -66,7 +66,19 @@ if (puieprev && puieprev->code() == qstmUiEventEngine::EMove) { using qstmUiEventEngine::QStm_UiEventSpeed; + QPoint pos = puieprev->currentXY(); + QPoint prevPos = puieprev->previousXY(); float thespeed = puieprev->speed() ; + if (thespeed == 0.0f && countOfEvents > 2) { + if (m_loggingenabled) { + LOGTXT("QStm_FlickGestureRecogniser: speed is 0.0. Trying to get prev speed!"); + } + // trye to get speed from puie->previousEvent()->previousEvent() + puieprev = puieprev->previousEvent(); + if (puieprev && puieprev->code() == qstmUiEventEngine::EMove) { + thespeed = puieprev->speed() ; + } + } if (m_loggingenabled) { LOGARG("QStm_FlickGestureRecogniser: prev speed: %f (limit: %f)", double(thespeed), double(m_speed)) ; } @@ -78,8 +90,9 @@ // issue the flick gesture using the TDirectionalGesture (it has the speed and direction) qstmGesture::QStm_DirectionalGesture pgest( KUid, - puieprev->currentXY(), - puieprev->previousXY(), + pos, + prevPos, + puie->timestamp(), &speedIf, m_loggingenabled); pgest.setTarget(puie->target());