2
0
mirror of https://github.com/koreader/koreader synced 2024-11-10 01:10:34 +00:00

relative x and y in pan gesture are relative to first touch events

This commit is contained in:
chrox 2013-10-25 16:05:20 +08:00
parent 2590cc7ca5
commit ae2462c17e

View File

@ -433,14 +433,14 @@ function GestureDetector:handlePan(tev)
distance = pan_distance, distance = pan_distance,
time = tev.timev, time = tev.timev,
} }
pan_ev.relative.x = tev.x - self.last_tevs[slot].x pan_ev.relative.x = tev.x - self.first_tevs[slot].x
pan_ev.relative.y = tev.y - self.last_tevs[slot].y pan_ev.relative.y = tev.y - self.first_tevs[slot].y
pan_ev.pos = Geom:new{ pan_ev.pos = Geom:new{
x = self.last_tevs[slot].x, x = self.last_tevs[slot].x,
y = self.last_tevs[slot].y, y = self.last_tevs[slot].y,
w = 0, h = 0, w = 0, h = 0,
} }
--DEBUG(pan_ev.ges, pan_ev.pos, pan_ev.direction, pan_ev.distance, "detected") --DEBUG(pan_ev.ges, pan_ev, "detected")
return pan_ev return pan_ev
end end
end end
@ -597,6 +597,9 @@ function GestureDetector:adjustGesCoordinate(ges)
elseif ges.direction == "southwest" then elseif ges.direction == "southwest" then
ges.direction = "northwest" ges.direction = "northwest"
end end
if ges.relative then
ges.relative.x, ges.relative.y = -ges.relative.y, ges.relative.x
end
elseif ges.ges == "pinch" or ges.ges == "spread" elseif ges.ges == "pinch" or ges.ges == "spread"
or ges.ges == "inward_pan" or ges.ges == "inward_pan"
or ges.ges == "outward_pan" then or ges.ges == "outward_pan" then
@ -631,6 +634,9 @@ function GestureDetector:adjustGesCoordinate(ges)
elseif ges.direction == "southwest" then elseif ges.direction == "southwest" then
ges.direction = "southeast" ges.direction = "southeast"
end end
if ges.relative then
ges.relative.x, ges.relative.y = ges.relative.y, -ges.relative.x
end
elseif ges.ges == "pinch" or ges.ges == "spread" elseif ges.ges == "pinch" or ges.ges == "spread"
or ges.ges == "inward_pan" or ges.ges == "inward_pan"
or ges.ges == "outward_pan" then or ges.ges == "outward_pan" then