diff --git a/frontend/device/gesturedetector.lua b/frontend/device/gesturedetector.lua index d8b23a685..73ae15de1 100644 --- a/frontend/device/gesturedetector.lua +++ b/frontend/device/gesturedetector.lua @@ -517,24 +517,23 @@ function GestureDetector:handlePan(tev) ["slot"] = slot, }, } - pan_direction = self:getPath(slot, false, fake_first_tev) end - if msd_cnt == 0 - or pan_direction ~= msd_direction_prev - then - local msd_direction, msd_distance = self:getPath(slot, true, fake_first_tev) + -- the first time fake_first_tev is nil, so self.first_tevs is automatically used instead + local msd_direction, msd_distance = self:getPath(slot, true, fake_first_tev) - if msd_distance > self.MULTISWIPE_THRESHOLD - and (msd_cnt == 0 - or not pan_direction:match(msd_direction_prev)) - then - if msd_direction ~= msd_direction_prev then - self.multiswipe_directions[msd_cnt+1] = { - [1] = msd_direction, - [2] = pan_ev, - } - end + if msd_distance > self.MULTISWIPE_THRESHOLD then + if msd_direction ~= msd_direction_prev then + self.multiswipe_directions[msd_cnt+1] = { + [1] = msd_direction, + [2] = pan_ev, + } + -- update ongoing swipe direction to the new maximum + else + self.multiswipe_directions[msd_cnt] = { + [1] = msd_direction, + [2] = pan_ev, + } end end