enum gesture_event {
GESTURE_EVENT_RESET,
GESTURE_EVENT_FINGER_DETECTED,
+ GESTURE_EVENT_FINGER_SWITCH_TIMEOUT,
GESTURE_EVENT_HOLD_TIMEOUT,
GESTURE_EVENT_HOLD_AND_MOTION,
GESTURE_EVENT_POINTER_MOTION,
switch(event) {
CASE_RETURN_STRING(GESTURE_EVENT_RESET);
CASE_RETURN_STRING(GESTURE_EVENT_FINGER_DETECTED);
+ CASE_RETURN_STRING(GESTURE_EVENT_FINGER_SWITCH_TIMEOUT);
CASE_RETURN_STRING(GESTURE_EVENT_HOLD_TIMEOUT);
CASE_RETURN_STRING(GESTURE_EVENT_HOLD_AND_MOTION);
CASE_RETURN_STRING(GESTURE_EVENT_POINTER_MOTION);
case GESTURE_EVENT_SCROLL:
tp->gesture.state = GESTURE_STATE_SCROLL;
break;
+ case GESTURE_EVENT_FINGER_SWITCH_TIMEOUT:
case GESTURE_EVENT_HOLD_AND_MOTION:
case GESTURE_EVENT_SWIPE:
case GESTURE_EVENT_PINCH:
libinput_timer_cancel(&tp->gesture.hold_timer);
tp->gesture.state = GESTURE_STATE_NONE;
break;
+ case GESTURE_EVENT_FINGER_SWITCH_TIMEOUT:
+ break;
case GESTURE_EVENT_HOLD_TIMEOUT:
tp->gesture.state = GESTURE_STATE_HOLD;
tp_gesture_start(tp, time);
libinput_timer_cancel(&tp->gesture.hold_timer);
tp->gesture.state = GESTURE_STATE_NONE;
break;
+ case GESTURE_EVENT_FINGER_SWITCH_TIMEOUT:
+ tp_gesture_cancel(tp, time);
+ break;
case GESTURE_EVENT_HOLD_AND_MOTION:
tp->gesture.state = GESTURE_STATE_HOLD_AND_MOTION;
break;
libinput_timer_cancel(&tp->gesture.hold_timer);
tp->gesture.state = GESTURE_STATE_NONE;
break;
+ case GESTURE_EVENT_FINGER_SWITCH_TIMEOUT:
+ tp_gesture_cancel(tp, time);
+ break;
case GESTURE_EVENT_POINTER_MOTION:
tp_gesture_cancel(tp, time);
tp->gesture.state = GESTURE_STATE_POINTER_MOTION;
tp_gesture_start(tp, time);
}
break;
+ case GESTURE_EVENT_FINGER_SWITCH_TIMEOUT:
case GESTURE_EVENT_HOLD_AND_MOTION:
case GESTURE_EVENT_FINGER_DETECTED:
case GESTURE_EVENT_POINTER_MOTION:
libinput_timer_cancel(&tp->gesture.hold_timer);
tp->gesture.state = GESTURE_STATE_NONE;
break;
+ case GESTURE_EVENT_FINGER_SWITCH_TIMEOUT:
+ tp_gesture_cancel(tp, time);
+ break;
case GESTURE_EVENT_PINCH:
tp_gesture_init_pinch(tp);
tp_gesture_cancel(tp, time);
libinput_timer_cancel(&tp->gesture.hold_timer);
tp->gesture.state = GESTURE_STATE_NONE;
break;
+ case GESTURE_EVENT_FINGER_SWITCH_TIMEOUT:
+ tp_gesture_cancel(tp, time);
+ break;
case GESTURE_EVENT_HOLD_AND_MOTION:
case GESTURE_EVENT_FINGER_DETECTED:
case GESTURE_EVENT_HOLD_TIMEOUT:
libinput_timer_cancel(&tp->gesture.hold_timer);
tp->gesture.state = GESTURE_STATE_NONE;
break;
+ case GESTURE_EVENT_FINGER_SWITCH_TIMEOUT:
+ tp_gesture_cancel(tp, time);
+ break;
case GESTURE_EVENT_HOLD_AND_MOTION:
case GESTURE_EVENT_FINGER_DETECTED:
case GESTURE_EVENT_HOLD_TIMEOUT:
if (!tp->gesture.finger_count_pending)
return;
- tp_gesture_cancel(tp, now); /* End current gesture */
+ tp_gesture_handle_event(tp, GESTURE_EVENT_FINGER_SWITCH_TIMEOUT, now);
tp->gesture.finger_count = tp->gesture.finger_count_pending;
tp->gesture.finger_count_pending = 0;
}