forked from enlightenment/efl
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:
parent
3603884e51
commit
e1b7020633
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue