return "ThreeFingersFlickUpReturn";
case THREE_FINGERS_FLICK_DOWN_RETURN:
return "ThreeFingersFlickDownReturn";
+ case ONE_FINGER_DOUBLE_TAP_N_HOLD:
+ return "OneFingerDoubleTapNHold";
+ case TWO_FINGERS_DOUBLE_TAP_N_HOLD:
+ return "TwoFingersDoubleTapNHold";
+ case THREE_FINGERS_DOUBLE_TAP_N_HOLD:
+ return "ThreeFingersDoubleTapNHold";
default:
ERROR("[atspi] dbus: unhandled gesture enum");
return NULL;
cov->hover_gesture.longpressed = EINA_TRUE;
cov->hover_gesture.timer = NULL;
+ if (cov->tap_n_hold_gesture_data.double_tap && cov->n_taps == 2)
+ {
+ /* longpressed is not for the 'Double Tap & Hold', it should work with
+ 'Tap & Hold' only which is for HOVER event */
+ cov->hover_gesture.longpressed = EINA_FALSE;
+
+ _event_emit(TWO_FINGERS_DOUBLE_TAP_N_HOLD,
+ cov->hover_gesture.x[0], cov->hover_gesture.y[0],
+ cov->hover_gesture.x[1], cov->hover_gesture.y[1],
+ GESTURE_FINISHED, cov->event_time);
+
+ return EINA_FALSE;
+ }
+
if (cov->hover_gesture.last_emission_time == -1)
{
_hover_event_emit(cov, GESTURE_NOT_STARTED);
Cover *cov = data;
DEBUG("Timer expired");
- if (cov->tap_n_hold_gesture_data.n_taps == 2 && cov->tap_gesture_data.tap_type == ONE_FINGER_GESTURE)
+ if (cov->tap_n_hold_gesture_data.n_taps == 2 &&
+ (cov->tap_gesture_data.tap_type == ONE_FINGER_GESTURE ||
+ cov->tap_gesture_data.tap_type == TWO_FINGERS_GESTURE))
cov->tap_n_hold_gesture_data.double_tap = EINA_TRUE;
if (cov->tap_gesture_data.started && !cov->tap_gesture_data.pressed)
_tap_gestures_mouse_down(ev, cov);
return;
}
-
cov->tap_gesture_data.x_org[0] = ev->root.x;
cov->tap_gesture_data.y_org[0] = ev->root.y;
cov->tap_n_hold_gesture_data.n_taps++;
static void
_tap_gestures_move(Ecore_Event_Mouse_Move *ev, Cover *cov)
{
+ /* mouse move event comes once before mouse down event. So we do not have to
+ evaluate this mouse move event using condition (i < cov->n_taps) below. */
int i;
- for (i = 0; i < sizeof(cov->tap_gesture_data.finger) / sizeof(cov->tap_gesture_data.finger[0]); i++)
+ for (i = 0; (i < cov->n_taps) && (i < sizeof(cov->tap_gesture_data.finger) / sizeof(cov->tap_gesture_data.finger[0])); i++)
{
if (ev->multi.device == cov->tap_gesture_data.finger[i])
{
_mouse_move(int type, Ecore_Event_Mouse_Move *event)
{
Ecore_Event_Mouse_Move *ev = event;
+ /* flick_to_scroll: 2 fingers touch and move
+ drag_start: 1 finger tap and hold move */
if (ev->multi.radius >= MAGIC_NUMBER || cover->flick_gesture.flick_to_scroll || cover->tap_n_hold_gesture_data.drag_start)
{
if (ev->multi.radius >= MAGIC_NUMBER) ev->multi.radius -= MAGIC_NUMBER;
THREE_FINGERS_FLICK_RIGHT_RETURN,
THREE_FINGERS_FLICK_UP_RETURN,
THREE_FINGERS_FLICK_DOWN_RETURN,
+ ONE_FINGER_DOUBLE_TAP_N_HOLD,
+ TWO_FINGERS_DOUBLE_TAP_N_HOLD,
+ THREE_FINGERS_DOUBLE_TAP_N_HOLD,
GESTURES_COUNT,
};
typedef enum _Gesture Gesture;