From 1681e90809ae248299bc5be5a9af12e871544a7d Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Sat, 7 Aug 2010 16:47:25 +0200 Subject: treat one-finger moves in move model and simplify tapping logic --- src/gestures-tapping.c | 6 ------ src/grail-gestures.c | 13 ++++++++++++- src/grail-gestures.h | 3 +-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/gestures-tapping.c b/src/gestures-tapping.c index d78e775..a5357e4 100644 --- a/src/gestures-tapping.c +++ b/src/gestures-tapping.c @@ -49,12 +49,6 @@ int gru_tapping(struct grail *ge, gin_gid_discard(ge, state->gid); state->active = 0; } - state->x = move->x.val; - state->y = move->y.val; - } else if (state->ntouch == 1) { - if (fabs(move->x.val - state->x) > move->y.bar || - fabs(move->y.val - state->y) > move->y.bar) - state->status = TAP_CANCEL; } if (!state->active) { int type = GRAIL_TYPE_TAP1 + state->ntouch - 1; diff --git a/src/grail-gestures.c b/src/grail-gestures.c index cb7e5a3..0c0efdb 100644 --- a/src/grail-gestures.c +++ b/src/grail-gestures.c @@ -144,13 +144,23 @@ void gru_motion(struct grail *ge, struct move_model *state = &gru->move; float x, y, r, a; compute_position(&x, &y, frame); - if (frame->nactive < 2 || frame->ncreate || frame->ndestroy) { + if (frame->ncreate || frame->ndestroy) { r = compute_radius(x, y, frame); a = 0; move_reset(&state->x, x); move_reset(&state->y, y); move_reset(&state->r, r); move_reset(&state->a, a); + state->single = 0; + state->multi = 0; + } else if (frame->nactive < 2) { + r = 0; + a = 0; + move_update(&state->x, x); + move_update(&state->y, y); + move_reset(&state->r, r); + move_reset(&state->a, a); + state->single = 1; state->multi = 0; } else { x = move_filter(&state->x, x); @@ -163,6 +173,7 @@ void gru_motion(struct grail *ge, move_update(&state->y, y); move_update(&state->r, r); move_update(&state->a, a); + state->single = 0; state->multi = 1; } state->ntouch = frame->nactive; diff --git a/src/grail-gestures.h b/src/grail-gestures.h index 0447100..6ba6cf7 100644 --- a/src/grail-gestures.h +++ b/src/grail-gestures.h @@ -36,7 +36,7 @@ struct filter_model { struct move_model { struct filter_model x, y, r, a; - int multi, ntouch; + int single, multi, ntouch; float dx, dy, dr, da; grail_time_t time; }; @@ -63,7 +63,6 @@ int gru_combo(struct grail *ge, struct tapping_model { grail_time_t start; - float x, y; int status, ntouch; int active, gid; }; -- cgit v1.2.3