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
This commit is contained in:
Mike Blumenkrantz 2020-02-20 13:20:32 -05:00 committed by Marcel Hollerbach
parent 3603884e51
commit e1b7020633
4 changed files with 7 additions and 7 deletions

View File

@ -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)

View File

@ -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)
{

View File

@ -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)
{

View File

@ -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)