fix: properly record last_tev in gesturedetector

pull/2/merge
Qingping Hou 11 years ago
parent 9b4935d5ec
commit 331ec3a6ce

@ -74,10 +74,11 @@ GestureDetector = {
}
function GestureDetector:feedEvent(tev)
re = self.state(self, tev)
if tev.id ~= -1 then
self.last_tev = tev
end
return self.state(self, tev)
return re
end
function GestureDetector:deepCopyEv(tev)
@ -190,8 +191,8 @@ function GestureDetector:tapState(tev)
}
-- cur_tap is used for double tap detection
local cur_tap = {
x = self.last_tev.x,
y = self.last_tev.y,
x = tev.x,
y = tev.y,
timev = tev.timev,
}
@ -201,6 +202,7 @@ function GestureDetector:tapState(tev)
self:clearState()
ges_ev.ges = "double_tap"
self.last_tap = nil
DEBUG("double tap detected")
return ges_ev
end
@ -218,6 +220,7 @@ function GestureDetector:tapState(tev)
if self.last_tap ~= nil then
self.last_tap = nil
-- we are using closure here
DEBUG("single tap detected")
return ges_ev
end
end, deadline)
@ -229,12 +232,13 @@ function GestureDetector:tapState(tev)
-- we return nil in this case
self.state = self.tapState
DEBUG("set up hold timer")
local deadline = self.last_tev.timev + TimeVal:new{
local deadline = tev.timev + TimeVal:new{
sec = 0, usec = self.HOLD_INTERVAL
}
Input:setTimeout(function()
if self.state == self.tapState then
-- timer set in tapState, so we switch to hold
DEBUG("hold gesture detected")
return self:switchState("holdState")
end
end, deadline)
@ -292,7 +296,6 @@ function GestureDetector:panState(tev)
y = self.last_tev.y,
w = 0, h = 0,
}
self.last_tev = tev
return pan_ev
end
end

Loading…
Cancel
Save