diff options
author | Mike Blumenkrantz <zmike@samsung.com> | 2020-02-20 13:20:32 -0500 |
---|---|---|
committer | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2020-03-03 10:54:31 +0100 |
commit | e1b70206331dae6dea027e578459a8779e20ba4c (patch) | |
tree | 47b79ba78f9c5b7ed888a66710e9006e44b7de51 | |
parent | 3603884e51daf0cbb853b33a9a7fa6421bf2b7ff (diff) | |
download | efl-e1b70206331dae6dea027e578459a8779e20ba4c.tar.gz |
efl/gesture: correctly filter tap events based on the processing touch point
if the recognizer is processing using a touch point other than the first finger,
e.g., in the case where multiple fingers are pressed simultaneously, then
the recognizer needs to also detect distance based on that finger
more fixes for triggering tap events while fingers are moving
Differential Revision: https://phab.enlightenment.org/D11385
4 files changed, 7 insertions, 7 deletions
diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_double_tap.c b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_double_tap.c index c7b53110e2..123dbd551e 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_double_tap.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_double_tap.c @@ -102,7 +102,7 @@ _efl_canvas_gesture_recognizer_double_tap_efl_canvas_gesture_recognizer_recogniz if (efl_gesture_state_get(gesture) != EFL_GESTURE_STATE_NONE && !_event_multi_touch_get(event)) { - dist = efl_gesture_touch_distance(event, 0); + dist = efl_gesture_touch_distance(event, efl_gesture_touch_current_data_get(event)->id); length = fabs(dist.x) + fabs(dist.y); if (length > pd->finger_size) @@ -141,7 +141,7 @@ _efl_canvas_gesture_recognizer_double_tap_efl_canvas_gesture_recognizer_recogniz } } } - dist = efl_gesture_touch_distance(event, 0); + dist = efl_gesture_touch_distance(event, efl_gesture_touch_current_data_get(event)->id); length = fabs(dist.x) + fabs(dist.y); if (length <= pd->finger_size) diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_long_press.c b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_long_press.c index bcbe5bd592..e146c5acaf 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_long_press.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_long_press.c @@ -85,7 +85,7 @@ _efl_canvas_gesture_recognizer_long_press_efl_canvas_gesture_recognizer_recogniz case EFL_GESTURE_TOUCH_STATE_UPDATE: { - dist = efl_gesture_touch_distance(event, 0); + dist = efl_gesture_touch_distance(event, efl_gesture_touch_current_data_get(event)->id); length = fabs(dist.x) + fabs(dist.y); if ((_event_multi_touch_get(event)) || (length > pd->finger_size)) @@ -117,7 +117,7 @@ _efl_canvas_gesture_recognizer_long_press_efl_canvas_gesture_recognizer_recogniz if (efl_gesture_state_get(gesture) != EFL_GESTURE_STATE_NONE && !_event_multi_touch_get(event)) { - dist = efl_gesture_touch_distance(event, 0); + dist = efl_gesture_touch_distance(event, efl_gesture_touch_current_data_get(event)->id); length = fabs(dist.x) + fabs(dist.y); if (length <= pd->finger_size && pd->is_timeout) { diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_tap.c b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_tap.c index eec8c34a22..f4c28879cb 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_tap.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_tap.c @@ -80,7 +80,7 @@ new_tap: if (_event_multi_touch_get(event)) return EFL_GESTURE_RECOGNIZER_RESULT_IGNORE; if (efl_gesture_state_get(gesture) != EFL_GESTURE_STATE_NONE) { - dist = efl_gesture_touch_distance(event, 0); + dist = efl_gesture_touch_distance(event, efl_gesture_touch_current_data_get(event)->id); length = fabs(dist.x) + fabs(dist.y); if (length <= pd->finger_size) { diff --git a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_triple_tap.c b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_triple_tap.c index f79aff5f71..75cb3686b4 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_recognizer_triple_tap.c +++ b/src/lib/evas/gesture/efl_canvas_gesture_recognizer_triple_tap.c @@ -101,7 +101,7 @@ _efl_canvas_gesture_recognizer_triple_tap_efl_canvas_gesture_recognizer_recogniz if (efl_gesture_state_get(gesture) != EFL_GESTURE_STATE_NONE && !_event_multi_touch_get(event)) { - dist = efl_gesture_touch_distance(event, 0); + dist = efl_gesture_touch_distance(event, efl_gesture_touch_current_data_get(event)->id); length = fabs(dist.x) + fabs(dist.y); if (length > pd->finger_size) @@ -140,7 +140,7 @@ _efl_canvas_gesture_recognizer_triple_tap_efl_canvas_gesture_recognizer_recogniz } } } - dist = efl_gesture_touch_distance(event, 0); + dist = efl_gesture_touch_distance(event, efl_gesture_touch_current_data_get(event)->id); length = fabs(dist.x) + fabs(dist.y); if (length <= pd->finger_size) |