gestures: push tp_gesture_start() for hold gestures into the state handling
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 12 Sep 2024 10:10:42 +0000 (20:10 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Fri, 4 Oct 2024 05:13:23 +0000 (15:13 +1000)
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1049>

src/evdev-mt-touchpad-gestures.c

index d82fcc96bc23040067fa86143863a0608eb6a7d0..d24c72b23b81e9b50b1f255d2602201cd411cc9e 100644 (file)
@@ -171,8 +171,6 @@ tp_gesture_start(struct tp_dispatch *tp, uint64_t time)
                break;
        case GESTURE_STATE_HOLD:
        case GESTURE_STATE_HOLD_AND_MOTION:
-               gesture_notify_hold(&tp->device->base, time,
-                                   tp->gesture.finger_count);
                break;
        case GESTURE_STATE_SCROLL:
                tp_gesture_init_scroll(tp);
@@ -609,6 +607,8 @@ tp_gesture_handle_event_on_state_unknown(struct tp_dispatch *tp,
                break;
        case GESTURE_EVENT_HOLD_TIMEOUT:
                tp->gesture.state = GESTURE_STATE_HOLD;
+               gesture_notify_hold(&tp->device->base, time,
+                                   tp->gesture.finger_count);
                tp_gesture_start(tp, time);
                break;
        case GESTURE_EVENT_POINTER_MOTION:
@@ -748,6 +748,8 @@ tp_gesture_handle_event_on_state_pointer_motion(struct tp_dispatch *tp,
 
                if (first_mm < HOLD_AND_MOTION_THRESHOLD) {
                        tp->gesture.state = GESTURE_STATE_HOLD_AND_MOTION;
+                       gesture_notify_hold(&tp->device->base, time,
+                                           tp->gesture.finger_count);
                        tp_gesture_start(tp, time);
                }
                break;