mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-01-07 07:40:16 +01:00
gestures: replace switch-timeout based gesture_cancel calls with a state
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1049>
This commit is contained in:
parent
6b5aeab51e
commit
96500d81fb
1 changed files with 22 additions and 1 deletions
|
|
@ -40,6 +40,7 @@
|
|||
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,
|
||||
|
|
@ -79,6 +80,7 @@ gesture_event_to_str(enum gesture_event event)
|
|||
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);
|
||||
|
|
@ -576,6 +578,7 @@ tp_gesture_handle_event_on_state_none(struct tp_dispatch *tp,
|
|||
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:
|
||||
|
|
@ -594,6 +597,8 @@ tp_gesture_handle_event_on_state_unknown(struct tp_dispatch *tp,
|
|||
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);
|
||||
|
|
@ -634,6 +639,9 @@ tp_gesture_handle_event_on_state_hold(struct tp_dispatch *tp,
|
|||
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;
|
||||
|
|
@ -672,6 +680,9 @@ tp_gesture_handle_event_on_state_hold_and_motion(struct tp_dispatch *tp,
|
|||
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;
|
||||
|
|
@ -714,6 +725,7 @@ tp_gesture_handle_event_on_state_pointer_motion(struct tp_dispatch *tp,
|
|||
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:
|
||||
|
|
@ -735,6 +747,9 @@ tp_gesture_handle_event_on_state_scroll(struct tp_dispatch *tp,
|
|||
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);
|
||||
|
|
@ -761,6 +776,9 @@ tp_gesture_handle_event_on_state_pinch(struct tp_dispatch *tp,
|
|||
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:
|
||||
|
|
@ -783,6 +801,9 @@ tp_gesture_handle_event_on_state_swipe(struct tp_dispatch *tp,
|
|||
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:
|
||||
|
|
@ -1416,7 +1437,7 @@ tp_gesture_finger_count_switch_timeout(uint64_t now, void *data)
|
|||
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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue