From 93b6373d2becedc859aa4243c1f46272af613a71 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 5 Feb 2020 09:48:57 -0500 Subject: [PATCH] efl/gesture: fix touch state tracking correctly set 'pressed' member of touch data only on press events and don't change it on move events in order to avoid having mismatched states Reviewed-by: Marcel Hollerbach Differential Revision: https://phab.enlightenment.org/D11291 --- src/lib/evas/gesture/efl_canvas_gesture_touch.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/lib/evas/gesture/efl_canvas_gesture_touch.c b/src/lib/evas/gesture/efl_canvas_gesture_touch.c index 84573a2..0d7e004 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_touch.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_touch.c @@ -97,10 +97,13 @@ _efl_canvas_gesture_touch_point_record(Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_T pd->cur_touch = point; point->action = action; - if (!id && (action == EFL_POINTER_ACTION_DOWN)) + if (action == EFL_POINTER_ACTION_DOWN) { point->cur.pressed = EINA_TRUE; - pd->state = EFL_GESTURE_TOUCH_STATE_BEGIN; + if (!id) + pd->state = EFL_GESTURE_TOUCH_STATE_BEGIN; + else + pd->state = EFL_GESTURE_TOUCH_STATE_UPDATE; } else if (action == EFL_POINTER_ACTION_UP) { @@ -111,7 +114,6 @@ _efl_canvas_gesture_touch_point_record(Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_T { pd->state = EFL_GESTURE_TOUCH_STATE_UPDATE; } - point->cur.pressed |= action == EFL_POINTER_ACTION_DOWN || action == EFL_POINTER_ACTION_MOVE; return; finished_touch: -- 2.7.4