summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);