summaryrefslogtreecommitdiff
path: root/src/gestures.c
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2010-04-18 16:25:54 +0200
committerHenrik Rydberg <rydberg@euromail.se>2010-04-18 16:27:52 +0200
commitd556fa17321040e2813582a0231c1c8328f964eb (patch)
treea324efa957e8e6af1d75b11b1a049cdaba62b706 /src/gestures.c
parentffe299eaea8a7295228701205c9286cc66e9ab0f (diff)
Only emit multi-finger button events for real button events
The current implementation will emit additional multi-finger click events if, for instance, one finger is removed before releasing the button. This patch makes sure logical buttons events are only emitted as a result of a real button event. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src/gestures.c')
-rw-r--r--src/gestures.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/gestures.c b/src/gestures.c
index 36d49f4..7346043 100644
--- a/src/gestures.c
+++ b/src/gestures.c
@@ -159,15 +159,19 @@ static void extract_buttons(struct Gestures *gs, struct MTouch* mt)
159 if (mt->mem.npoint == 3) 159 if (mt->mem.npoint == 3)
160 btdata = BITMASK(MT_BUTTON_MIDDLE); 160 btdata = BITMASK(MT_BUTTON_MIDDLE);
161 } 161 }
162 gs->btmask = (btdata ^ mt->mem.btdata) & BITONES(DIM_BUTTON); 162 if (mt->state.button != mt->prev_state.button) {
163 gs->btdata = btdata; 163 gs->btmask = (btdata ^ mt->mem.btdata) & BITONES(DIM_BUTTON);
164 mt->mem.btdata = btdata; 164 gs->btdata = btdata;
165 mt->mem.btdata = btdata;
166 }
165} 167}
166 168
167/******************************************************/ 169/******************************************************/
168 170
169static void extract_type(struct Gestures *gs, struct MTouch* mt) 171static void extract_type(struct Gestures *gs, struct MTouch* mt)
170{ 172{
173 if (gs->btmask)
174 SETBIT(gs->type, GS_BUTTON);
171 if (gs->dx || gs->dy) { 175 if (gs->dx || gs->dy) {
172 if (mt->mem.npoint == 1) 176 if (mt->mem.npoint == 1)
173 SETBIT(gs->type, GS_MOVE); 177 SETBIT(gs->type, GS_MOVE);